diff --git a/src/Cascader.tsx b/src/Cascader.tsx index 299f5529..40bd03af 100644 --- a/src/Cascader.tsx +++ b/src/Cascader.tsx @@ -394,9 +394,7 @@ const Cascader = React.forwardRef((props: CascaderProps, ref: React.Ref children, - }} + getRawInputElement={() => children} /> ); diff --git a/src/OptionList/Column.tsx b/src/OptionList/Column.tsx index b65d8a0c..82fda05c 100644 --- a/src/OptionList/Column.tsx +++ b/src/OptionList/Column.tsx @@ -18,6 +18,7 @@ export interface ColumnProps { checkedSet: Set; halfCheckedSet: Set; loadingKeys: React.Key[]; + isEmpty: boolean; } export default function Column({ @@ -32,6 +33,7 @@ export default function Column({ checkedSet, halfCheckedSet, loadingKeys, + isEmpty, }: ColumnProps) { const menuPrefixCls = `${prefixCls}-menu`; const menuItemPrefixCls = `${prefixCls}-menu-item`; @@ -107,7 +109,7 @@ export default function Column({ } }} > - {multiple && ( + {multiple && !isEmpty && ( ((pro key={index} index={index} {...columnProps} + isEmpty={isEmpty} prefixCls={mergedPrefixCls} options={col.options} openKey={mergedOpenPath[index]} diff --git a/src/index.tsx b/src/index.tsx index 8ad9be75..36e90171 100644 --- a/src/index.tsx +++ b/src/index.tsx @@ -1,6 +1,5 @@ -import Cascader, { CascaderProps } from './Cascader'; -import { FieldNames, DataNode, ShowSearchType } from './interface'; - -export { CascaderProps, FieldNames, DataNode, ShowSearchType }; +import Cascader from './Cascader'; +export type { CascaderProps } from './Cascader'; +export type { FieldNames, DataNode, ShowSearchType } from './interface'; export default Cascader; diff --git a/tests/checkable.spec.tsx b/tests/checkable.spec.tsx index f2397089..629e56c9 100644 --- a/tests/checkable.spec.tsx +++ b/tests/checkable.spec.tsx @@ -76,6 +76,7 @@ describe('Cascader.Checkable', () => { ], ); }); + it('click checkobx invoke one onChange', () => { const onChange = jest.fn(); const wrapper = mount(); @@ -89,4 +90,16 @@ describe('Cascader.Checkable', () => { expect(wrapper.exists('.rc-cascader-checkbox-checked')).toBeTruthy(); expect(onChange).toHaveBeenCalledTimes(1); }); + + // https://github.com/ant-design/ant-design/issues/33302 + it('should not display checkbox when children is empty', () => { + const wrapper = mount( + + + , + ); + wrapper.find('input').simulate('click'); + const menus = wrapper.find('.rc-cascader-menu'); + expect(menus.find('.rc-cascader-checkbox').length).toBe(0); + }); });