diff --git a/.changeset/fresh-waves-act.md b/.changeset/fresh-waves-act.md new file mode 100644 index 000000000..7a531f9fc --- /dev/null +++ b/.changeset/fresh-waves-act.md @@ -0,0 +1,5 @@ +--- +"@hi-ui/hiui": patch +--- + +feat(cascader): 支持前置后置内容 diff --git a/.changeset/lovely-queens-sing.md b/.changeset/lovely-queens-sing.md new file mode 100644 index 000000000..33de8f9a5 --- /dev/null +++ b/.changeset/lovely-queens-sing.md @@ -0,0 +1,5 @@ +--- +"@hi-ui/hiui": patch +--- + +feat(check-cascader): 支持前置后置内容 diff --git a/.changeset/pretty-queens-dress.md b/.changeset/pretty-queens-dress.md new file mode 100644 index 000000000..18c35c3a2 --- /dev/null +++ b/.changeset/pretty-queens-dress.md @@ -0,0 +1,5 @@ +--- +"@hi-ui/check-cascader": minor +--- + +feat: 支持前置后置内容 diff --git a/.changeset/thin-sheep-leave.md b/.changeset/thin-sheep-leave.md new file mode 100644 index 000000000..503869fe6 --- /dev/null +++ b/.changeset/thin-sheep-leave.md @@ -0,0 +1,5 @@ +--- +"@hi-ui/cascader": minor +--- + +feat: 支持前置后置内容 diff --git a/packages/ui/cascader/src/Cascader.tsx b/packages/ui/cascader/src/Cascader.tsx index 6ed121376..ae34770f3 100644 --- a/packages/ui/cascader/src/Cascader.tsx +++ b/packages/ui/cascader/src/Cascader.tsx @@ -53,6 +53,8 @@ export const Cascader = forwardRef((props, flattedSearchResult = true, visible, size = 'md', + prefix, + suffix, onOpen, onClose, renderExtraFooter, @@ -240,7 +242,8 @@ export const Cascader = forwardRef((props, clearable={clearable} placeholder={placeholder} displayRender={displayRender as any} - suffix={menuVisible ? : } + prefix={prefix} + suffix={[menuVisible ? : , suffix]} focused={menuVisible} value={value[value.length - 1]} onChange={() => { @@ -331,6 +334,14 @@ export interface CascaderProps * 设置尺寸 */ size?: HiBaseSizeEnum + /** + * 选择框前置内容 + */ + prefix?: React.ReactNode + /** + * 选择框后置内容 + */ + suffix?: React.ReactNode } if (__DEV__) { diff --git a/packages/ui/check-cascader/src/CheckCascader.tsx b/packages/ui/check-cascader/src/CheckCascader.tsx index c20ad72d0..2e14b97fe 100644 --- a/packages/ui/check-cascader/src/CheckCascader.tsx +++ b/packages/ui/check-cascader/src/CheckCascader.tsx @@ -70,6 +70,8 @@ export const CheckCascader = forwardRef : } + prefix={prefix} + suffix={[menuVisible ? : , suffix]} focused={menuVisible} appearance={appearance} value={value} @@ -387,6 +390,14 @@ export interface CheckCascaderProps extends Omit { + const [dataOnlyLeafCheckable] = React.useState(() => { + const data = [ + { + id: '手机', + title: '手机t', + children: [ + { + id: '小米', + title: '小米t', + children: [ + { + id: '小米3', + title: '小米3t', + }, + { + id: '小米4', + title: '小米4t', + }, + ], + }, + { + id: '红米', + title: '红米t', + children: [ + { + id: '红米3', + title: '红米3t', + }, + { + id: '红米4', + title: '红米4t', + }, + ], + }, + ], + }, + { + id: '电视', + title: '电视t', + children: [ + { + id: '小米电视4A', + title: '小米电视4At', + }, + { + id: '小米电视4C', + title: '小米电视4Ct', + }, + ], + }, + ] + + const getDataOnlyLeafCheckable = (data: any) => { + return data.map((item: any) => { + if (item.children) { + item.checkable = item.checkable ?? false + item.children = getDataOnlyLeafCheckable(item.children) + } + + return item + }) + } + + const dataOnlyLeafCheckable = getDataOnlyLeafCheckable(data) + + return dataOnlyLeafCheckable + }) + + return ( + <> +

Addon

+
+ } + suffix={} + changeOnSelect + data={dataOnlyLeafCheckable} + onChange={console.log} + > +
+ + ) +} diff --git a/packages/ui/check-cascader/stories/index.stories.tsx b/packages/ui/check-cascader/stories/index.stories.tsx index 59f615aed..4a3f79271 100644 --- a/packages/ui/check-cascader/stories/index.stories.tsx +++ b/packages/ui/check-cascader/stories/index.stories.tsx @@ -12,6 +12,7 @@ export * from './dynamic.stories' export * from './display-render.stories' export * from './footer.stories' export * from './dropdown-column-render.stories' +export * from './addon.stories' // export * from './flatted.stories' export default {