Skip to content

Commit

Permalink
fix(pro:search): remote search not working (#1727)
Browse files Browse the repository at this point in the history
  • Loading branch information
sallerli1 committed Oct 30, 2023
1 parent 34f9669 commit 0d306ac
Show file tree
Hide file tree
Showing 2 changed files with 19 additions and 9 deletions.
22 changes: 16 additions & 6 deletions packages/pro/search/src/composables/useSearchStates.ts
Expand Up @@ -10,7 +10,7 @@ import type { ProSearchProps, ResolvedSearchField, SearchValue, Segment, Segment

import { type ComputedRef, type Ref, computed, ref, toRaw } from 'vue'

import { isEqual, isNil } from 'lodash-es'
import { isEqual, isNil, isString } from 'lodash-es'

import { type VKey, callEmit } from '@idux/cdk/utils'

Expand All @@ -25,10 +25,17 @@ export interface SearchState {
segmentStates: SegmentState[]
}

interface InitSearchState {
(key: VKey): void
(key: VKey, force: boolean): void
(key: VKey, segmentName: string): void
(key: VKey, segmentName: string, force: boolean): void
}

export interface SearchStateContext {
searchStates: Ref<SearchState[]>
initSearchStates: () => void
initSearchState: (key: VKey, segmentName?: string) => void
initSearchState: InitSearchState
createSearchState: (fieldKey: VKey, searchValue?: Omit<SearchValue, 'key'>) => SearchState | undefined
getSearchStateByKey: (key: VKey) => SearchState | undefined
getSearchStatesByFieldKey: (fieldKey: VKey) => SearchState[]
Expand Down Expand Up @@ -291,20 +298,23 @@ export function useSearchStates(
searchStates.value = newStates
}

const initSearchState = (key: VKey, segmentName?: string) => {
const initSearchState: InitSearchState = (key: VKey, segmentNameOrForce?: string | boolean, force?: boolean) => {
const _force = isString(segmentNameOrForce) ? force : segmentNameOrForce
const _segmentName = isString(segmentNameOrForce) ? segmentNameOrForce : undefined

const searchState = getSearchStateByKey(key)
const searchField = findSearchField(searchState?.fieldKey)
if (!searchState || !searchField) {
if (!searchState || !searchField || (isMarked(key) && !_force)) {
return
}

const searchValue = searchState.searchValue
const segmentStates = generateSegmentStates(searchField, searchValue)

if (!segmentName) {
if (!_segmentName) {
searchState.segmentStates = segmentStates
} else {
const idx = searchState.segmentStates.findIndex(state => state.name === segmentName)
const idx = searchState.segmentStates.findIndex(state => state.name === _segmentName)
searchState.segmentStates[idx] = segmentStates[idx]
}
}
Expand Down
6 changes: 3 additions & 3 deletions packages/pro/search/src/composables/useSegmentStates.ts
Expand Up @@ -162,7 +162,7 @@ export function useSegmentStates(
}
const handleSegmentCancel = (name: string) => {
// init the canceled segment state
initSearchState(props.searchItem!.key, name)
initSearchState(props.searchItem!.key, name, true)

const segmentState = segmentStates.value[name]

Expand All @@ -189,7 +189,7 @@ export function useSegmentStates(
const searchField = props.searchItem?.resolvedSearchField

if (!searchField) {
initSearchState(props.searchItem!.key)
initSearchState(props.searchItem!.key, true)
return
}

Expand All @@ -203,7 +203,7 @@ export function useSegmentStates(
if (preSegment && !preSegment.panelRenderer && validateSearchState(props.searchItem!.key)) {
updateSearchValues()
} else {
initSearchState(props.searchItem!.key)
initSearchState(props.searchItem!.key, true)
}
},
{
Expand Down

0 comments on commit 0d306ac

Please sign in to comment.