diff --git a/src/components/ui/VnPaginate.vue b/src/components/ui/VnPaginate.vue index b232e6c05..2089feb88 100644 --- a/src/components/ui/VnPaginate.vue +++ b/src/components/ui/VnPaginate.vue @@ -146,14 +146,14 @@ const addFilter = async (filter, params) => { }; async function fetch(params) { - useArrayData(props.dataKey, params); + arrayData.setOptions(params); arrayData.resetPagination(); await arrayData.fetch({ append: false }); return emitStoreData(); } async function update(params) { - useArrayData(props.dataKey, params); + arrayData.setOptions(params); const { limit, skip } = store; store.limit = limit + skip; store.skip = 0; diff --git a/src/composables/useArrayData.js b/src/composables/useArrayData.js index 9828b35ae..9f95d639c 100644 --- a/src/composables/useArrayData.js +++ b/src/composables/useArrayData.js @@ -41,7 +41,7 @@ export function useArrayData(key, userOptions) { if (key && userOptions) setOptions(); - function setOptions() { + function setOptions(params = userOptions) { const allowedOptions = [ 'url', 'filter', @@ -57,14 +57,14 @@ export function useArrayData(key, userOptions) { 'mapKey', 'oneRecord', ]; - if (typeof userOptions === 'object') { - for (const option in userOptions) { - const isEmpty = userOptions[option] == null || userOptions[option] === ''; + if (typeof params === 'object') { + for (const option in params) { + const isEmpty = params[option] == null || params[option] === ''; if (isEmpty || !allowedOptions.includes(option)) continue; if (Object.hasOwn(store, option)) { - const defaultOpts = userOptions[option]; - store[option] = userOptions.keepOpts?.includes(option) + const defaultOpts = params[option]; + store[option] = params.keepOpts?.includes(option) ? Object.assign(defaultOpts, store[option]) : defaultOpts; if (option === 'userParams') store.defaultParams = store[option]; @@ -367,5 +367,6 @@ export function useArrayData(key, userOptions) { deleteOption, reset, resetPagination, + setOptions, }; }