Skip to content

Commit 0cdbfbd

Browse files
committed
refactor: make filters component use filters from props, instead of filters store
1 parent 729aa30 commit 0cdbfbd

File tree

3 files changed

+21
-14
lines changed

3 files changed

+21
-14
lines changed

adminforth/spa/src/components/Filters.vue

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -168,22 +168,21 @@
168168
import { watch, computed, ref, reactive } from 'vue';
169169
import { useI18n } from 'vue-i18n';
170170
import CustomDateRangePicker from '@/components/CustomDateRangePicker.vue';
171-
import { callAdminForthApi, loadMoreForeignOptions, searchForeignOptions, createSearchInputHandlers, formatComponent } from '@/utils';
171+
import { loadMoreForeignOptions, searchForeignOptions, createSearchInputHandlers, formatComponent } from '@/utils';
172172
import { useRouter } from 'vue-router';
173173
import CustomRangePicker from "@/components/CustomRangePicker.vue";
174-
import { useFiltersStore } from '@/stores/filters';
175174
import { getCustomComponent } from '@/utils';
176175
import Input from '@/afcl/Input.vue';
177176
import Select from '@/afcl/Select.vue';
178177
import Spinner from '@/afcl/Spinner.vue';
179178
import debounce from 'debounce';
180179
import { Tooltip } from '@/afcl';
181180
import { IconCloseOutline } from '@iconify-prerendered/vue-flowbite';
182-
import type { AdminforthFilterStore } from '@/spa_types/core';
181+
import type { AdminforthFilterStore, AdminforthFilterStoreUnwrapped } from '@/spa_types/core';
183182
import type { AdminForthResourceColumnCommon, FilterParams, ColumnMinMaxValue } from '@/types/Common';
184183
import { AdminForthFilterOperators } from '@/types/Common';
185184
186-
const filtersStore = useFiltersStore();
185+
187186
const { t } = useI18n();
188187
189188
const AFFO = AdminForthFilterOperators;
@@ -195,7 +194,8 @@ const props = defineProps<{
195194
columns: AdminForthResourceColumnCommon[],
196195
filters?: AdminforthFilterStore['filters'],
197196
show: Boolean,
198-
columnsMinMax: ColumnMinMaxValue
197+
columnsMinMax: ColumnMinMaxValue,
198+
filtersStore: AdminforthFilterStoreUnwrapped
199199
}>();
200200
201201
const emits = defineEmits(['update:filters', 'hide']);
@@ -317,29 +317,29 @@ const onSearchInput = computed(() => {
317317
318318
function setFilterItem({ column, operator, value }: { column: AdminForthResourceColumnCommon; operator: AdminForthFilterOperators; value: any }) {
319319
320-
const index = filtersStore.filters.findIndex(f => f.field === column.name && f.operator === operator);
320+
const index = props.filtersStore.filters.findIndex(f => f.field === column.name && f.operator === operator);
321321
if (value === undefined || value === '' || value === null) {
322322
if (index !== -1) {
323-
filtersStore.filters.splice(index, 1);
323+
props.filtersStore.filters.splice(index, 1);
324324
}
325325
} else {
326326
if (index === -1) {
327-
filtersStore.setFilter({ field: column.name, value, operator });
327+
props.filtersStore.setFilter({ field: column.name, value, operator });
328328
} else {
329-
filtersStore.setFilters([...filtersStore.filters.slice(0, index), { field: column.name, value, operator }, ...filtersStore.filters.slice(index + 1)])
329+
props.filtersStore.setFilters([...props.filtersStore.filters.slice(0, index), { field: column.name, value, operator }, ...props.filtersStore.filters.slice(index + 1)])
330330
}
331331
}
332-
emits('update:filters', [...filtersStore.filters]);
332+
emits('update:filters', [...props.filtersStore.filters]);
333333
}
334334
335335
function getFilterItem({ column, operator }: { column: AdminForthResourceColumnCommon; operator: AdminForthFilterOperators }) {
336-
const filterValue = filtersStore.filters.find(f => f.field === column.name && f.operator === operator)?.value;
336+
const filterValue = props.filtersStore.filters.find(f => f.field === column.name && f.operator === operator)?.value;
337337
return filterValue !== undefined ? filterValue : '';
338338
}
339339
340340
async function clear() {
341-
filtersStore.filters = [...filtersStore.filters.filter(f => filtersStore.shouldFilterBeHidden(f.field))];
342-
emits('update:filters', [...filtersStore.filters]);
341+
props.filtersStore.filters = [...props.filtersStore.filters.filter(f => props.filtersStore.shouldFilterBeHidden(f.field))];
342+
emits('update:filters', [...props.filtersStore.filters]);
343343
}
344344
345345
function getFilterMinValue(columnName: string) {

adminforth/spa/src/spa_types/core.ts

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -86,4 +86,10 @@ export type AdminforthFilterStore = {
8686
shouldFilterBeHidden: (fieldName: string) => boolean,
8787

8888
visibleFiltersCount: ComputedRef<number>,
89-
}
89+
}
90+
91+
export interface AdminforthFilterStoreUnwrapped extends Omit<AdminforthFilterStore, 'filters' | 'visibleFiltersCount'> {
92+
filters: FilterParams[],
93+
visibleFiltersCount: number,
94+
}
95+

adminforth/spa/src/views/ListView.vue

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
:columnsMinMax="columnsMinMax"
77
:show="filtersShow"
88
@hide="filtersShow = false"
9+
:filtersStore="filtersStore"
910
/>
1011
</Teleport>
1112

0 commit comments

Comments
 (0)