From cdd29c514011929ab791e27b56dc71682a830b06 Mon Sep 17 00:00:00 2001 From: Tsvetoslav Nikolov <85567502+cvetty@users.noreply.github.com> Date: Sun, 11 Aug 2024 17:34:21 +0300 Subject: [PATCH] Add api-query-parameters attribute (#64) --- krait-ui/src/actions/fetch-records.ts | 7 +++++++ .../components/dynamic-table/DynamicTable.vue | 17 ++++++++++++++--- krait-ui/src/mixins/useTable.ts | 2 ++ krait-ui/src/types/table.ts | 5 +++++ 4 files changed, 28 insertions(+), 3 deletions(-) diff --git a/krait-ui/src/actions/fetch-records.ts b/krait-ui/src/actions/fetch-records.ts index 0e350cb..b419922 100644 --- a/krait-ui/src/actions/fetch-records.ts +++ b/krait-ui/src/actions/fetch-records.ts @@ -187,6 +187,13 @@ export default class FetchRecords extends BaseAction< this.setSorting(this.context.sorting, url); this.setPagination(this.context.pagination, url); + for (const parameter in this.context.queryParameters.value) { + url.searchParams.set( + parameter, + String(this.context.queryParameters.value[parameter]), + ); + } + return url; } } diff --git a/krait-ui/src/components/dynamic-table/DynamicTable.vue b/krait-ui/src/components/dynamic-table/DynamicTable.vue index 6a38f8b..ce85c7f 100644 --- a/krait-ui/src/components/dynamic-table/DynamicTable.vue +++ b/krait-ui/src/components/dynamic-table/DynamicTable.vue @@ -25,12 +25,23 @@ const props = defineProps({ required: false, default: false, }, + apiQueryParameters: { + type: Object, + required: false, + default: {}, + }, }); -const { columns, isLoading, records, visibleColumns, isAuthorized } = useTable( - props.apiEndpoint, -); +const { + columns, + isLoading, + records, + visibleColumns, + isAuthorized, + queryParameters, +} = useTable(props.apiEndpoint); const { dispatch } = useDispatcher(props.apiEndpoint); +queryParameters.value = props.apiQueryParameters; const initFiltersListener = () => { if (!props.filtersForm) { diff --git a/krait-ui/src/mixins/useTable.ts b/krait-ui/src/mixins/useTable.ts index e076c7e..d85d255 100644 --- a/krait-ui/src/mixins/useTable.ts +++ b/krait-ui/src/mixins/useTable.ts @@ -29,6 +29,7 @@ const getState = (): Table.ITableContext => { const isLoading = ref(false); const links = ref({}); const isAuthorized = ref(true); + const queryParameters = ref({}); return { columns, @@ -39,6 +40,7 @@ const getState = (): Table.ITableContext => { records, links, isAuthorized, + queryParameters, }; }; diff --git a/krait-ui/src/types/table.ts b/krait-ui/src/types/table.ts index 12c91c6..2424903 100644 --- a/krait-ui/src/types/table.ts +++ b/krait-ui/src/types/table.ts @@ -28,6 +28,10 @@ export interface IColumn { width?: number; } +export interface IQueryParameters { + [key: string]: string | number; +} + export interface ITableContext { isLoading: Ref>; pagination: UnwrapNestedRefs & {}; @@ -37,4 +41,5 @@ export interface ITableContext { sorting: UnwrapNestedRefs & {}; visibleColumns: Ref>; isAuthorized: Ref; + queryParameters: Ref; }