From 4e474947eb91f1e7ad0d0e362fcb000ad2fa1e93 Mon Sep 17 00:00:00 2001 From: haild173094 Date: Tue, 7 Jan 2025 15:55:28 +0700 Subject: [PATCH 1/3] Update: change type T[] -> Ref(T[]) for reactive resources --- src/use/useIndexResourceState.ts | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/src/use/useIndexResourceState.ts b/src/use/useIndexResourceState.ts index baeefb05..234ddb99 100644 --- a/src/use/useIndexResourceState.ts +++ b/src/use/useIndexResourceState.ts @@ -1,4 +1,4 @@ -import { ref } from 'vue'; +import { Ref, ref } from 'vue'; import { SelectionType, type Range } from '@/components/IndexProvider/types'; type ResourceIDResolver = ( @@ -16,7 +16,7 @@ function defaultResourceIDResolver(resource: {[key: string]: any}): string { } export function useIndexResourceState( - resources: T[], + resources: Ref, { selectedResources: initSelectedResources = [], allResourcesSelected: initAllResourcesSelected = false, @@ -59,12 +59,12 @@ export function useIndexResourceState( case SelectionType.All: case SelectionType.Page: if (resourceFilter) { - const filteredResources = resources.filter(resourceFilter); + const filteredResources = resources.value.filter(resourceFilter); tmpSelectedResources.value = isSelecting && tmpSelectedResources.value.length < filteredResources.length ? filteredResources.map(resourceIDResolver) : []; } else { - tmpSelectedResources.value = isSelecting ? resources.map(resourceIDResolver) : []; + tmpSelectedResources.value = isSelecting ? resources.value.map(resourceIDResolver) : []; } break; @@ -74,15 +74,15 @@ export function useIndexResourceState( tmpSelectedResources.value = (() => { const ids: string[] = []; const filteredResources = resourceFilter - ? resources.filter(resourceFilter) - : resources; + ? resources.value.filter(resourceFilter) + : resources.value; for ( let i = selection[0] as number; i <= (selection[1] as number); i++ ) { - if (filteredResources.includes(resources[i])) { - const id = resourceIDResolver(resources[i]); + if (filteredResources.includes(resources.value[i])) { + const id = resourceIDResolver(resources.value[i]); if ( (isSelecting && !tmpSelectedResources.value.includes(id)) || @@ -104,8 +104,8 @@ export function useIndexResourceState( tmpSelectedResources.value = (() => { const filteredResources = resourceFilter - ? resources.filter(resourceFilter) - : resources; + ? resources.value.filter(resourceFilter) + : resources.value; const resourceIds = filteredResources.map(resourceIDResolver); From 2b62ea97656c0cfb008429ac7859d290b2fc7249 Mon Sep 17 00:00:00 2001 From: haild173094 Date: Tue, 7 Jan 2025 16:42:59 +0700 Subject: [PATCH 2/3] Update: rename variable --- src/use/useIndexResourceState.ts | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/use/useIndexResourceState.ts b/src/use/useIndexResourceState.ts index 234ddb99..a139647e 100644 --- a/src/use/useIndexResourceState.ts +++ b/src/use/useIndexResourceState.ts @@ -1,4 +1,4 @@ -import { Ref, ref } from 'vue'; +import { Ref, computed, ref } from 'vue'; import { SelectionType, type Range } from '@/components/IndexProvider/types'; type ResourceIDResolver = ( @@ -16,7 +16,7 @@ function defaultResourceIDResolver(resource: {[key: string]: any}): string { } export function useIndexResourceState( - resources: Ref, + resourceLists: Ref | T[], { selectedResources: initSelectedResources = [], allResourcesSelected: initAllResourcesSelected = false, @@ -37,6 +37,10 @@ export function useIndexResourceState( const tmpSelectedResources = ref(initSelectedResources); const tmpAllResourcesSelected = ref(initAllResourcesSelected); + const resources = computed(() => { + return Array.isArray(resourceLists) ? resourceLists : resourceLists.value; + }); + const handleSelectionChange = ( selectionType: SelectionType, isSelecting: boolean, From 42e451e38bccc986c95f2b328d5d287ec1a6c856 Mon Sep 17 00:00:00 2001 From: haild173094 Date: Tue, 7 Jan 2025 16:52:22 +0700 Subject: [PATCH 3/3] Update: rename variable --- src/use/useIndexResourceState.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/use/useIndexResourceState.ts b/src/use/useIndexResourceState.ts index a139647e..92c9859c 100644 --- a/src/use/useIndexResourceState.ts +++ b/src/use/useIndexResourceState.ts @@ -16,7 +16,7 @@ function defaultResourceIDResolver(resource: {[key: string]: any}): string { } export function useIndexResourceState( - resourceLists: Ref | T[], + resourceValue: Ref | T[], { selectedResources: initSelectedResources = [], allResourcesSelected: initAllResourcesSelected = false, @@ -38,7 +38,7 @@ export function useIndexResourceState( const tmpAllResourcesSelected = ref(initAllResourcesSelected); const resources = computed(() => { - return Array.isArray(resourceLists) ? resourceLists : resourceLists.value; + return Array.isArray(resourceValue) ? resourceValue : resourceValue.value; }); const handleSelectionChange = (