Skip to content

Commit 3c6049a

Browse files
committed
feat: update page size options to handle null values and improve dynamic selection
1 parent 38cd3a8 commit 3c6049a

3 files changed

Lines changed: 4 additions & 28 deletions

File tree

adminforth/spa/src/afcl/Select.vue

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -119,7 +119,7 @@ import { ref, computed, onMounted, onUnmounted, watch, nextTick,type PropType, t
119119
import { IconCaretDownSolid } from '@iconify-prerendered/vue-flowbite';
120120
import { useElementSize } from '@vueuse/core'
121121
122-
type ISingleSelectModelValue = string | number | boolean;
122+
type ISingleSelectModelValue = string | number | boolean | null;
123123
124124
const props = defineProps({
125125
options: Array,

adminforth/spa/src/components/ResourceListTable.vue

Lines changed: 2 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -431,13 +431,7 @@ const emits = defineEmits([
431431
]);
432432
433433
const pageSizeOptionsComputed = computed(() => {
434-
let options = props.pageSizeOptions;
435-
436-
if (!options || options.length === 0) {
437-
return [];
438-
}
439-
440-
let combinedOptions = [...options];
434+
let combinedOptions = [...props.pageSizeOptions];
441435
442436
if (props.pageSize && !combinedOptions.includes(props.pageSize)) {
443437
combinedOptions.push(props.pageSize);
@@ -450,7 +444,7 @@ const pageSizeOptionsComputed = computed(() => {
450444
}));
451445
});
452446
453-
const pageSizeInternal = ref(props.pageSize);
447+
const pageSizeInternal = ref<number | null>(null);
454448
455449
const selectDynamicWidth = computed(() => {
456450
const length = pageSizeInternal.value?.toString().length || 2;

adminforth/spa/src/views/ListView.vue

Lines changed: 1 addition & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -173,7 +173,7 @@
173173
@update:records="getListInner"
174174
@update:pageSize="(newSize) => { pageSize = newSize; page = 1; }"
175175
:sort="sort"
176-
:pageSizeOptions="resolvedPageSizeOptions"
176+
:pageSizeOptions="Array.isArray(coreStore.resource?.options?.listPageSizeOptions) ? coreStore.resource?.options?.listPageSizeOptions : []"
177177
:pageSize="pageSize"
178178
:totalRows="totalRows"
179179
:checkboxes="checkboxes"
@@ -238,8 +238,6 @@ import {
238238
import Filters from '@/components/Filters.vue';
239239
import { useAdminforth } from '@/adminforth';
240240
241-
const adminforth = useAdminforth();
242-
243241
const filtersShow = ref(false);
244242
const { list, alert } = useAdminforth();
245243
const coreStore = useCoreStore();
@@ -411,28 +409,12 @@ function clearAutoRefresher() {
411409
}
412410
}
413411
414-
const resolvedPageSizeOptions = ref<number[]>([]);
415-
416412
async function init() {
417413
418414
await coreStore.fetchResourceFull({
419415
resourceId: route.params.resourceId as string
420416
});
421417
422-
const optionsRaw = coreStore.resource?.options?.listPageSizeOptions;
423-
424-
if (typeof optionsRaw === 'function') {
425-
resolvedPageSizeOptions.value = await optionsRaw({
426-
adminUser: coreStore.adminUser,
427-
adminforth: adminforth
428-
});
429-
} else if (Array.isArray(optionsRaw)) {
430-
resolvedPageSizeOptions.value = optionsRaw;
431-
} else {
432-
resolvedPageSizeOptions.value = [];
433-
}
434-
435-
436418
syncPageSize();
437419
438420
isPageLoaded.value = true;

0 commit comments

Comments
 (0)