diff --git a/src/shared/components/ncTable/mixins/filter.js b/src/shared/components/ncTable/mixins/filter.js index 0e3a4f91c8..55af215391 100644 --- a/src/shared/components/ncTable/mixins/filter.js +++ b/src/shared/components/ncTable/mixins/filter.js @@ -126,3 +126,10 @@ export const Filters = { noSearchValue: true, }), } + +export function getFiltersForColumn(column, viewSetting) { + if (viewSetting?.filter?.length > 0) { + return viewSetting.filter.filter(filter => filter.columnId === column.id) + } + return [] +} diff --git a/src/shared/components/ncTable/partials/TableHeader.vue b/src/shared/components/ncTable/partials/TableHeader.vue index 86b0e5a80c..42831a7581 100644 --- a/src/shared/components/ncTable/partials/TableHeader.vue +++ b/src/shared/components/ncTable/partials/TableHeader.vue @@ -25,7 +25,7 @@ @edit-column="col => $emit('edit-column', col)" @delete-column="col => $emit('delete-column', col)" /> -
+
item.columnId === column.id) + return getFiltersForColumn(column, this.localViewSetting) }, hasRightHiddenNeighbor(colId) { return this.localViewSetting?.hiddenColumns?.includes(this.columns[this.columns.indexOf(this.columns.find(col => col.id === colId)) + 1]?.id) diff --git a/src/shared/components/ncTable/sections/CustomTable.vue b/src/shared/components/ncTable/sections/CustomTable.vue index 2b3c58a417..397365cdb7 100644 --- a/src/shared/components/ncTable/sections/CustomTable.vue +++ b/src/shared/components/ncTable/sections/CustomTable.vue @@ -98,6 +98,7 @@ import { import { MetaColumns } from '../mixins/metaColumns.js' import { translate as t } from '@nextcloud/l10n' import { useTablesStore } from '../../../../store/store.js' +import { getFiltersForColumn } from '../mixins/filter.js' export default { name: 'CustomTable', @@ -221,7 +222,7 @@ export default { } let filterStatus = null let searchStatus = true - const filters = this.getFiltersForColumn(column) + const filters = getFiltersForColumn(column, this.viewSetting) let cell if (column.id < 0) { cell = { columnId: column.id } @@ -257,15 +258,13 @@ export default { delete cell.searchStringFound delete cell.filterFound - // if we should filter - if (filters !== null) { - filters.forEach(fil => { - this.addMagicFieldsValues(fil) - if (filterStatus === null || filterStatus === true) { - filterStatus = column.isFilterFound(cell, fil) - } - }) - } + // apply filters (if any) + filters.forEach(fil => { + this.addMagicFieldsValues(fil) + if (filterStatus === null || filterStatus === true) { + filterStatus = column.isFilterFound(cell, fil) + } + }) // if we should search if (searchString) { console.debug('look for searchString', searchString) @@ -355,15 +354,6 @@ export default { } }) }, - getFiltersForColumn(column) { - if (this.viewSetting?.filter?.length > 0) { - const columnFilter = this.viewSetting.filter.filter(item => item.columnId === column.id) - if (columnFilter.length > 0) { - return columnFilter - } - } - return null - }, deselectAllRows(elementId, isView) { if (parseInt(elementId) === parseInt(this.elementId) && isView === this.isView) { this.selectedRows = []