Skip to content

Commit 4c370ed

Browse files
authored
fix: cascader types (#3912)
1 parent 58c5439 commit 4c370ed

File tree

1 file changed

+22
-7
lines changed

1 file changed

+22
-7
lines changed

components/cascader/index.tsx

Lines changed: 22 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -80,6 +80,16 @@ export interface ShowSearchType {
8080
limit?: number | false;
8181
}
8282

83+
export interface EmptyFilteredOptionsType {
84+
disabled: boolean;
85+
[key: string]: any;
86+
}
87+
88+
export interface FilteredOptionsType extends EmptyFilteredOptionsType {
89+
__IS_FILTERED_OPTION: boolean;
90+
path: CascaderOptionType[];
91+
}
92+
8393
// const ShowSearchType = PropTypes.shape({
8494
// filter: PropTypes.func,
8595
// render: PropTypes.func,
@@ -217,11 +227,13 @@ const Cascader = defineComponent({
217227
data() {
218228
const { value, defaultValue, popupVisible, showSearch, options } = this.$props;
219229
return {
220-
sValue: value || defaultValue || [],
230+
sValue: (value || defaultValue || []) as any[],
221231
inputValue: '',
222232
inputFocused: false,
223-
sPopupVisible: popupVisible,
224-
flattenOptions: showSearch ? flattenTree(options, this.$props) : undefined,
233+
sPopupVisible: popupVisible as boolean,
234+
flattenOptions: showSearch
235+
? flattenTree(options as CascaderOptionType[], this.$props)
236+
: undefined,
225237
};
226238
},
227239
watch: {
@@ -311,7 +323,7 @@ const Cascader = defineComponent({
311323

312324
handleInputClick(e: MouseEvent & { nativeEvent?: any }) {
313325
const { inputFocused, sPopupVisible } = this;
314-
// Prevent `Trigger` behaviour.
326+
// Prevent `Trigger` behavior.
315327
if (inputFocused || sPopupVisible) {
316328
e.stopPropagation();
317329
if (e.nativeEvent && e.nativeEvent.stopImmediatePropagation) {
@@ -346,8 +358,8 @@ const Cascader = defineComponent({
346358
const displayRender = getComponent(this, 'displayRender', {}, false) || defaultDisplayRender;
347359
const value = this.sValue;
348360
const unwrappedValue = Array.isArray(value[0]) ? value[0] : value;
349-
const selectedOptions = arrayTreeFilter(
350-
options,
361+
const selectedOptions = arrayTreeFilter<CascaderOptionType>(
362+
options as CascaderOptionType[],
351363
(o, level) => o[names.value] === unwrappedValue[level],
352364
{ childrenKeyName: names.children },
353365
);
@@ -366,7 +378,10 @@ const Cascader = defineComponent({
366378
}
367379
},
368380

369-
generateFilteredOptions(prefixCls: string | undefined, renderEmpty: RenderEmptyHandler) {
381+
generateFilteredOptions(
382+
prefixCls: string | undefined,
383+
renderEmpty: RenderEmptyHandler,
384+
): EmptyFilteredOptionsType[] | FilteredOptionsType[] {
370385
const { showSearch, notFoundContent } = this;
371386
const names: FilledFieldNamesType = getFilledFieldNames(this.$props);
372387
const {

0 commit comments

Comments
 (0)