From 079862b07ee8530c4d30d73f736b7549c27e8e34 Mon Sep 17 00:00:00 2001 From: zombiej Date: Wed, 14 Jul 2021 17:56:44 +0800 Subject: [PATCH 1/3] chore: Patch props info of findValueOption --- .prettierrc | 2 +- src/generate.tsx | 46 +++++++++++++++++++++++----------------------- 2 files changed, 24 insertions(+), 24 deletions(-) diff --git a/.prettierrc b/.prettierrc index 4d75b549a..54d9ded38 100644 --- a/.prettierrc +++ b/.prettierrc @@ -5,5 +5,5 @@ "tabWidth": 2, "trailingComma": "all", "proseWrap": "never", - "printWidth": 100 + "printWidth": 100, } \ No newline at end of file diff --git a/src/generate.tsx b/src/generate.tsx index 35f61aa6c..36edf8f9a 100644 --- a/src/generate.tsx +++ b/src/generate.tsx @@ -203,14 +203,11 @@ export interface GenerateConfig { /** Convert single raw value into { label, value } format. Will be called by each value */ getLabeledValue: GetLabeledValue>; filterOptions: FilterOptions; - findValueOption: // Need still support legacy ts api - | ((values: RawValueType[], options: FlattenOptionsType) => OptionsType) - // New API add prevValueOptions support - | (( - values: RawValueType[], - options: FlattenOptionsType, - info?: { prevValueOptions?: OptionsType[] }, - ) => OptionsType); + findValueOption: ( + values: RawValueType[], + options: FlattenOptionsType, + info?: { prevValueOptions?: OptionsType[]; props?: any }, + ) => OptionsType; /** Check if a value is disabled */ isValueDisabled: (value: RawValueType, options: FlattenOptionsType) => boolean; warningProps?: (props: any) => void; @@ -233,7 +230,7 @@ export default function generateSelector< label?: React.ReactNode; key?: Key; disabled?: boolean; - }[] + }[], >(config: GenerateConfig) { const { prefixCls: defaultPrefixCls, @@ -527,18 +524,20 @@ export default function generateSelector< const triggerSelect = (newValue: RawValueType, isSelect: boolean, source: SelectSource) => { const newValueOption = getValueOption([newValue]); - const outOption = findValueOption([newValue], newValueOption)[0]; + const outOption = findValueOption([newValue], newValueOption, { props })[0]; if (!internalProps.skipTriggerSelect) { // Skip trigger `onSelect` or `onDeselect` if configured - const selectValue = (mergedLabelInValue - ? getLabeledValue(newValue, { - options: newValueOption, - prevValueMap: mergedValueMap, - labelInValue: mergedLabelInValue, - optionLabelProp: mergedOptionLabelProp, - }) - : newValue) as SingleType; + const selectValue = ( + mergedLabelInValue + ? getLabeledValue(newValue, { + options: newValueOption, + prevValueMap: mergedValueMap, + labelInValue: mergedLabelInValue, + optionLabelProp: mergedOptionLabelProp, + }) + : newValue + ) as SingleType; if (isSelect && onSelect) { onSelect(selectValue, outOption); @@ -576,7 +575,10 @@ export default function generateSelector< const outValue: ValueType = (isMultiple ? outValues : outValues[0]) as ValueType; // Skip trigger if prev & current value is both empty if (onChange && (mergedRawValue.length !== 0 || outValues.length !== 0)) { - const outOptions = findValueOption(newRawValues, newRawValuesOptions, { prevValueOptions }); + const outOptions = findValueOption(newRawValues, newRawValuesOptions, { + prevValueOptions, + props, + }); // We will cache option in case it removed by ajax setPrevValueOptions( @@ -756,9 +758,7 @@ export default function generateSelector< if (!searchText || !searchText.trim()) { return; } - const newRawValues = Array.from( - new Set([...mergedRawValue, searchText]), - ); + const newRawValues = Array.from(new Set([...mergedRawValue, searchText])); triggerChange(newRawValues); newRawValues.forEach((newRawValue) => { triggerSelect(newRawValue, true, 'input'); @@ -1148,7 +1148,7 @@ export default function generateSelector< // Ref of Select type RefSelectFuncType = typeof RefSelectFunc; - const RefSelect = ((React.forwardRef as unknown) as RefSelectFuncType)(Select); + const RefSelect = (React.forwardRef as unknown as RefSelectFuncType)(Select); return RefSelect; } From c851fdd19642c17de5138acd4b4160a0ceb67578 Mon Sep 17 00:00:00 2001 From: zombiej Date: Wed, 14 Jul 2021 17:57:28 +0800 Subject: [PATCH 2/3] chore: Patch props info of findValueOption --- .prettierrc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.prettierrc b/.prettierrc index 54d9ded38..4d75b549a 100644 --- a/.prettierrc +++ b/.prettierrc @@ -5,5 +5,5 @@ "tabWidth": 2, "trailingComma": "all", "proseWrap": "never", - "printWidth": 100, + "printWidth": 100 } \ No newline at end of file From 43f62e5715dc5303944e9b455760e825f986b2f2 Mon Sep 17 00:00:00 2001 From: zombiej Date: Wed, 14 Jul 2021 18:07:48 +0800 Subject: [PATCH 3/3] fix: TS --- src/generate.tsx | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/src/generate.tsx b/src/generate.tsx index 36edf8f9a..38f0eb0f5 100644 --- a/src/generate.tsx +++ b/src/generate.tsx @@ -203,11 +203,14 @@ export interface GenerateConfig { /** Convert single raw value into { label, value } format. Will be called by each value */ getLabeledValue: GetLabeledValue>; filterOptions: FilterOptions; - findValueOption: ( - values: RawValueType[], - options: FlattenOptionsType, - info?: { prevValueOptions?: OptionsType[]; props?: any }, - ) => OptionsType; + findValueOption: // Need still support legacy ts api + | ((values: RawValueType[], options: FlattenOptionsType) => OptionsType) + // New API add prevValueOptions support + | (( + values: RawValueType[], + options: FlattenOptionsType, + info?: { prevValueOptions?: OptionsType[]; props?: any }, + ) => OptionsType); /** Check if a value is disabled */ isValueDisabled: (value: RawValueType, options: FlattenOptionsType) => boolean; warningProps?: (props: any) => void;