Skip to content

Commit 3ec671d

Browse files
authored
chore: fix types (#573)
1 parent 51a9215 commit 3ec671d

File tree

2 files changed

+17
-3
lines changed

2 files changed

+17
-3
lines changed

src/Cascader.tsx

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,9 @@
11
import type { BuildInPlacements } from '@rc-component/trigger/lib/interface';
2-
import type { BaseSelectProps, BaseSelectPropsWithoutPrivate, BaseSelectRef } from '@rc-component/select';
2+
import type {
3+
BaseSelectProps,
4+
BaseSelectPropsWithoutPrivate,
5+
BaseSelectRef,
6+
} from '@rc-component/select';
37
import { BaseSelect } from '@rc-component/select';
48
import type { DisplayValueType, Placement } from '@rc-component/select/lib/BaseSelect';
59
import useId from '@rc-component/select/lib/hooks/useId';
@@ -143,6 +147,11 @@ export type GetValueType<
143147
? ValueType<Required<OptionType>, ValueField>[]
144148
: ValueType<Required<OptionType>, ValueField>[][];
145149

150+
export type GetOptionType<
151+
OptionType extends DefaultOptionType = DefaultOptionType,
152+
Multiple extends boolean | React.ReactNode = false,
153+
> = false extends Multiple ? OptionType[] : OptionType[][];
154+
146155
export interface CascaderProps<
147156
OptionType extends DefaultOptionType = DefaultOptionType,
148157
ValueField extends keyof OptionType = keyof OptionType,
@@ -153,7 +162,7 @@ export interface CascaderProps<
153162
defaultValue?: GetValueType<OptionType, ValueField, Multiple>;
154163
onChange?: (
155164
value: GetValueType<OptionType, ValueField, Multiple>,
156-
selectOptions: OptionType[],
165+
selectOptions: GetOptionType<OptionType, Multiple>,
157166
) => void;
158167
}
159168

@@ -368,7 +377,6 @@ const Cascader = React.forwardRef<CascaderRef, InternalCascaderProps>((props, re
368377
// ============================ Open ============================
369378
const mergedOpen = open !== undefined ? open : popupVisible;
370379

371-
372380
const mergedPlacement = placement || popupPlacement;
373381

374382
const onInternalPopupVisibleChange = (nextVisible: boolean) => {

tests/index.spec.tsx

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -864,6 +864,11 @@ describe('Cascader.Basic', () => {
864864
});
865865

866866
it('multiple', () => {
867+
const onTypeChange: (
868+
values: string[][],
869+
options: { label: React.ReactNode; value: string }[][],
870+
) => void = jest.fn();
871+
867872
const wrapper = mount(
868873
<Cascader
869874
options={[
@@ -885,6 +890,7 @@ describe('Cascader.Basic', () => {
885890
]}
886891
value={[['parent'], ['normal', 'child']]}
887892
checkable
893+
onChange={onTypeChange}
888894
/>,
889895
);
890896

0 commit comments

Comments
 (0)