From 6cf4458dcd3c1c805143e0182de311a898c8d587 Mon Sep 17 00:00:00 2001 From: adisposkofh Date: Thu, 6 Aug 2026 14:06:25 +0200 Subject: [PATCH 1/3] fixed ordering of columns in column filter while preset ios applied --- public/js/components/filter/Filter.js | 20 +++----------------- 1 file changed, 3 insertions(+), 17 deletions(-) diff --git a/public/js/components/filter/Filter.js b/public/js/components/filter/Filter.js index 2df32d041..919132229 100644 --- a/public/js/components/filter/Filter.js +++ b/public/js/components/filter/Filter.js @@ -215,23 +215,9 @@ export const CoreFilterCmpt = { fieldIdsForVisibilty() { if (!this.tableBuilt) return []; - const localizedColumnTitles = this.tabulator.getLang().columns; - const isTabulatorLocalized = !!this.$props.tabulatorOptions.locale; - return this.tabulator - .getColumns() - .filter((col) => { - let def = col.getDefinition(); - let title = - isTabulatorLocalized && localizedColumnTitles[def.field] - ? localizedColumnTitles[def.field] - : def.title; - return ( - !def.frozen && - title && - def.formatter != "responsiveCollapse" - ); - }) - .map((col) => col.getField()); + return this.$props.tabulatorOptions?.columns + ?.filter((column) => column.formatter !== "responsiveCollapse") + .map((column) => column.field) ?? []; }, idExtra() { if (!this.uuid) return ""; From a65b0d693fb1d8b8facd48d107e6f668026ad56e Mon Sep 17 00:00:00 2001 From: adisposkofh Date: Fri, 7 Aug 2026 12:02:52 +0200 Subject: [PATCH 2/3] implemented spinner while tabulator preset is being applied --- .../components/filter/Filter/TablePresets.js | 43 ++++++++++++++----- 1 file changed, 33 insertions(+), 10 deletions(-) diff --git a/public/js/components/filter/Filter/TablePresets.js b/public/js/components/filter/Filter/TablePresets.js index 79f1b3e91..a8a0c8e4c 100644 --- a/public/js/components/filter/Filter/TablePresets.js +++ b/public/js/components/filter/Filter/TablePresets.js @@ -34,6 +34,7 @@ export default { presetInfo: null, newPreset: null, newPresetName: "", + presetIndexBeingApplied: null, }; }, computed: { @@ -161,6 +162,9 @@ export default { }, }, methods: { + getPresetIndex() { + return this.presetIndexBeingApplied; + }, async showPresetInfo(preset) { let shouldUpdatePresetInfo; if (!this.presetInfo) { @@ -393,14 +397,22 @@ export default { this.fetchCustomUserTabulatorPresets(); } }, - async applyPreset(preset) { - preset = this.syncPresetWithConfig(preset); - window.localStorage["tabulatorPreset-" + this.$props.presetsId] = - preset.id ? "custom:" + preset.id : "general:" + preset.name; + async applyPreset(preset, index) { + this.presetIndexBeingApplied = index; - this.$props.tabulator.modules.tablePresets.applyPreset(preset); - - this.$emit("tablePresetApplied", { preset }); + // workaround for updating DOM and displaying preset-loading spinner + // conventional use of $nextTick ineffective + setTimeout(() => { + preset = this.syncPresetWithConfig(preset); + window.localStorage["tabulatorPreset-" + this.$props.presetsId] = + preset.id ? "custom:" + preset.id : "general:" + preset.name; + + this.$props.tabulator.modules.tablePresets.applyPreset(preset); + + this.$emit("tablePresetApplied", { preset }); + + this.presetIndexBeingApplied = null; + }, 50); }, async fetchCustomUserTabulatorPresets() { let tabulatorPresetsResponse = await this.$api.call( @@ -453,7 +465,7 @@ export default { if (!preset) return; - this.applyPreset(preset); + this.applyPreset(preset, null); }, }, async created() { @@ -467,8 +479,19 @@ export default {
{{ $p.t("tabulator_presets/table_presets") }}
-
-
{{ preset.name }}
+
+
+ {{ preset.name }} +
+
+ Loading... +
+
+
From 43e9dad17d9f5553b9caf68e7a21558dbcc5b0ca Mon Sep 17 00:00:00 2001 From: adisposkofh Date: Mon, 10 Aug 2026 11:06:17 +0200 Subject: [PATCH 3/3] double checking if tabulator header filter inputs are filled in on preset application --- .../customModules/TablePresetsModule.js | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) diff --git a/public/js/tabulator/customModules/TablePresetsModule.js b/public/js/tabulator/customModules/TablePresetsModule.js index cb67e91fd..644514dc5 100644 --- a/public/js/tabulator/customModules/TablePresetsModule.js +++ b/public/js/tabulator/customModules/TablePresetsModule.js @@ -34,10 +34,21 @@ export default class TablePresetsModule extends Module { if (preset.headerFilters) { Object.entries(preset.headerFilters).forEach( ([columnField, filterValue]) => { - this.table.setHeaderFilterValue( - columnField, - filterValue, - ); + this.table.setHeaderFilterValue(columnField, filterValue); + + // double checking if filter inputs are filled in due to issues with custom header filters + const headerFilterInputElement = + this.table.columnManager.columns + .find((column) => column.field === columnField) + ?.element.querySelector( + ".tabulator-header-filter input", + ); + if ( + headerFilterInputElement && + headerFilterInputElement.value !== filterValue + ) { + headerFilterInputElement.value = filterValue; + } }, ); }