@para-ui/core 5.0.0-beta.12 → 5.0.0-beta.14
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/AGENTS.md +315 -0
- package/AlignBox/component.json +89 -0
- package/Anchor/component.json +130 -0
- package/Argv/component.json +216 -0
- package/AutoBox/component.json +133 -0
- package/AutoButton/component.json +109 -0
- package/AutoTips/component.json +121 -0
- package/Badge/component.json +92 -0
- package/Breadcrumbs/component.json +142 -0
- package/Button/component.json +168 -0
- package/ButtonGroup/component.json +132 -0
- package/Card/component.json +162 -0
- package/Carousel/component.json +142 -0
- package/Cascader/component.json +196 -0
- package/Checkbox/component.json +138 -0
- package/CheckboxGroup/component.json +152 -0
- package/CodeEditor/component.json +189 -0
- package/Collapse/component.json +166 -0
- package/CollapseBox/component.json +84 -0
- package/CollapseLayout/component.json +155 -0
- package/ColorPicker/component.json +142 -0
- package/ComboSelect/component.json +181 -0
- package/Container/component.json +111 -0
- package/ContentBox/component.json +81 -0
- package/CopyText/component.json +118 -0
- package/CycleSelector/component.json +98 -0
- package/DatePicker/component.json +192 -0
- package/Descriptions/component.json +142 -0
- package/Desktop/component.json +171 -0
- package/DragVerify/component.json +114 -0
- package/Drawer/component.json +200 -0
- package/Dropdown/component.json +147 -0
- package/DynamicMultiBox/component.json +278 -0
- package/Empty/component.json +123 -0
- package/FieldForm/component.json +196 -0
- package/Form/component.json +161 -0
- package/FormItem/component.json +171 -0
- package/FunctionModal/component.json +197 -0
- package/Help/component.json +118 -0
- package/HelperText/component.json +126 -0
- package/Image/component.json +165 -0
- package/InputCode/component.json +191 -0
- package/InputLang/component.json +205 -0
- package/InputNumber/component.json +162 -0
- package/Label/component.json +126 -0
- package/Loading/component.json +91 -0
- package/Menu/component.json +180 -0
- package/Message/component.json +246 -0
- package/Modal/component.json +277 -0
- package/MultiBox/component.json +216 -0
- package/Notification/component.json +184 -0
- package/OperateBtn/component.json +134 -0
- package/PageHeader/component.json +112 -0
- package/Pagination/component.json +181 -0
- package/PasswordRules/component.json +105 -0
- package/PopConfirm/component.json +227 -0
- package/PopMenu/component.json +131 -0
- package/Popover/component.json +165 -0
- package/Progress/component.json +161 -0
- package/Prompt/component.json +144 -0
- package/Querying/component.json +96 -0
- package/QuickReply/component.json +129 -0
- package/Radio/component.json +136 -0
- package/RadioGroup/component.json +149 -0
- package/RangeInput/component.json +198 -0
- package/Result/component.json +104 -0
- package/ScrollBar/component.json +115 -0
- package/Search/component.json +177 -0
- package/Select/component.json +244 -0
- package/SelectInput/component.json +184 -0
- package/Selector/component.json +203 -0
- package/SelectorPicker/component.json +179 -0
- package/SingleBox/component.json +151 -0
- package/Slider/component.json +181 -0
- package/SortBox/component.json +108 -0
- package/Status/component.json +104 -0
- package/Stepper/component.json +129 -0
- package/Switch/component.json +207 -0
- package/Table/component.json +547 -0
- package/Tabs/component.json +227 -0
- package/Tag/component.json +221 -0
- package/TextEditor/component.json +186 -0
- package/TextField/component.json +290 -0
- package/TimePicker/component.json +176 -0
- package/Timeline/component.json +110 -0
- package/Title/component.json +156 -0
- package/ToggleButton/component.json +153 -0
- package/Tooltip/component.json +176 -0
- package/Transfer/component.json +157 -0
- package/Tree/component.json +512 -0
- package/Upload/component.json +450 -0
- package/ai-workflows/01-crud-list-multi-drawer.md +278 -0
- package/ai-workflows/02-rbac-operation-buttons.md +290 -0
- package/ai-workflows/03-complex-form-async-cascade.md +350 -0
- package/ai-workflows/04-array-field-form.md +281 -0
- package/ai-workflows/05-popconfirm-async-message-queue.md +333 -0
- package/ai-workflows/06-modal-drawer-form-workflow.md +385 -0
- package/ai-workflows/07-search-filter-table-trio.md +387 -0
- package/ai-workflows/08-table-advanced-features.md +365 -0
- package/ai-workflows/09-batch-operation-export-progress.md +367 -0
- package/ai-workflows/10-cross-component-state-coordination.md +412 -0
- package/codemods/modal-onCancel-to-onDismiss.js +69 -0
- package/es/AlignBox/component.json +89 -0
- package/es/AlignBox/index.css +1 -1
- package/es/AlignBox/index.d.ts +6 -2
- package/es/AlignBox/index.js +1 -1
- package/es/AlignBox/style/index.css +1 -1
- package/es/Anchor/anchorMenu/index.d.ts +2 -1
- package/es/Anchor/anchorMenu/index.js +36 -33
- package/es/Anchor/component.json +130 -0
- package/es/Anchor/index.js +50 -47
- package/es/Anchor/type.d.ts +8 -4
- package/es/Argv/component.json +216 -0
- package/es/Argv/index.d.ts +5 -6
- package/es/AutoBox/component.json +133 -0
- package/es/AutoBox/index.d.ts +3 -3
- package/es/AutoBox/index.js +1 -1
- package/es/AutoBox/protal.d.ts +2 -2
- package/es/AutoBox/protal.js +32 -29
- package/es/AutoButton/component.json +109 -0
- package/es/AutoButton/index.js +1 -1
- package/es/AutoTips/autoTipsMultiline/index.d.ts +1 -1
- package/es/AutoTips/autoTipsMultiline/index.js +1 -1
- package/es/AutoTips/component.json +121 -0
- package/es/Badge/component.json +92 -0
- package/es/Breadcrumbs/component.json +142 -0
- package/es/Breadcrumbs/index.js +1 -1
- package/es/Button/SplitButton.d.ts +2 -2
- package/es/Button/component.json +168 -0
- package/es/Button/index.js +44 -44
- package/es/ButtonGroup/component.json +132 -0
- package/es/ButtonGroup/index.d.ts +1 -1
- package/es/Card/component.json +162 -0
- package/es/Card/index.d.ts +2 -2
- package/es/Card/index.js +2 -2
- package/es/Carousel/component.json +142 -0
- package/es/Carousel/index.d.ts +1 -1
- package/es/Cascader/Cascader.js +188 -180
- package/es/Cascader/component.json +196 -0
- package/es/Cascader/hooks/useEntities.js +7 -7
- package/es/Cascader/interface.d.ts +1 -0
- package/es/Cascader/utils/commonUtil.d.ts +1 -1
- package/es/Cascader/utils/commonUtil.js +16 -16
- package/es/Cascader/utils/treeUtil.d.ts +14 -5
- package/es/Cascader/utils/treeUtil.js +1 -1
- package/es/Checkbox/component.json +138 -0
- package/es/CheckboxGroup/component.json +152 -0
- package/es/CodeEditor/component.json +189 -0
- package/es/CodeEditor/index.d.ts +10 -9
- package/es/Collapse/component.json +166 -0
- package/es/Collapse/index.d.ts +1 -1
- package/es/Collapse/index.js +41 -33
- package/es/CollapseBox/component.json +84 -0
- package/es/CollapseLayout/component.json +155 -0
- package/es/ColorPicker/component.json +142 -0
- package/es/ComboSelect/component.json +181 -0
- package/es/ComboSelect/index.js +299 -287
- package/es/ComboSelect/interface.d.ts +6 -3
- package/es/ComboSelect/utils.d.ts +3 -3
- package/es/ComboSelect/utils.js +1 -1
- package/es/Container/component.json +111 -0
- package/es/ContentBox/component.json +81 -0
- package/es/CopyText/component.json +118 -0
- package/es/CycleSelector/component.json +98 -0
- package/es/CycleSelector/index.js +14 -13
- package/es/DatePicker/component.json +192 -0
- package/es/DatePicker/generatePicker/generateRangePicker.d.ts +0 -8
- package/es/DatePicker/generatePicker/generateRangePicker.js +73 -65
- package/es/DatePicker/generatePicker/generateSinglePicker.js +1 -1
- package/es/DatePicker/generatePicker/index.d.ts +11 -4
- package/es/Descriptions/component.json +142 -0
- package/es/Descriptions/index.d.ts +1 -1
- package/es/Desktop/component.json +171 -0
- package/es/DragVerify/component.json +114 -0
- package/es/DragVerify/index.js +19 -19
- package/es/Drawer/component.json +200 -0
- package/es/Drawer/index.js +86 -86
- package/es/Drawer/interface.d.ts +1 -1
- package/es/Drawer/util.d.ts +1 -6
- package/es/Drawer/util.js +9 -6
- package/es/Dropdown/component.json +147 -0
- package/es/DynamicMultiBox/component.json +278 -0
- package/es/DynamicMultiBox/formItem.d.ts +1 -1
- package/es/DynamicMultiBox/rowForm.d.ts +2 -2
- package/es/Empty/component.json +123 -0
- package/es/Empty/index.css +1 -1
- package/es/Empty/index.d.ts +2 -2
- package/es/Empty/index.js +27 -26
- package/es/Empty/style/index.css +1 -1
- package/es/FieldForm/FieldFormItem/MemoInput.d.ts +2 -2
- package/es/FieldForm/FieldFormItem/index.d.ts +6 -6
- package/es/FieldForm/Form.d.ts +2 -2
- package/es/FieldForm/FormList.d.ts +2 -2
- package/es/FieldForm/component.json +196 -0
- package/es/FieldForm/context.d.ts +5 -1
- package/es/FieldForm/context.js +2 -2
- package/es/FieldForm/hooks/useForm.d.ts +4 -3
- package/es/FieldForm/hooks/useFormInstance.d.ts +1 -1
- package/es/FieldForm/hooks/useFormItemStatus.d.ts +9 -5
- package/es/FieldForm/hooks/useFormItemStatus.js +2 -2
- package/es/FieldForm/hooks/useItemRef.d.ts +1 -1
- package/es/FieldForm/hooks/useItemRef.js +6 -6
- package/es/Form/component.json +161 -0
- package/es/Form/index.d.ts +52 -49
- package/es/FormItem/compoments/defaultCompoments/index.d.ts +5 -5
- package/es/FormItem/compoments/defaultCompoments/index.js +12 -11
- package/es/FormItem/compoments/formCheckboxGroup/index.d.ts +2 -2
- package/es/FormItem/compoments/formFile/index.js +8 -8
- package/es/FormItem/compoments/formRadioGroup/index.d.ts +1 -1
- package/es/FormItem/compoments/formSelect/index.d.ts +1 -1
- package/es/FormItem/component.json +171 -0
- package/es/FormItem/index.d.ts +5 -5
- package/es/FormItem/index.js +23 -23
- package/es/FormItem/itemType.js +1 -1
- package/es/FunctionModal/component.json +197 -0
- package/es/FunctionModal/dialog.d.ts +1 -1
- package/es/FunctionModal/modalContext.d.ts +4 -1
- package/es/Help/component.json +118 -0
- package/es/HelperText/component.json +126 -0
- package/es/Image/component.json +165 -0
- package/es/InputCode/component.json +191 -0
- package/es/InputCode/index.d.ts +2 -2
- package/es/InputLang/component.json +205 -0
- package/es/InputLang/index.js +1 -1
- package/es/InputNumber/component.json +162 -0
- package/es/Label/component.json +126 -0
- package/es/Label/index.d.ts +2 -2
- package/es/Loading/component.json +91 -0
- package/es/Menu/component.json +180 -0
- package/es/Message/component.json +246 -0
- package/es/Message/index.d.ts +2 -2
- package/es/Message/index.js +2 -2
- package/es/Modal/Confirm/index.d.ts +1 -1
- package/es/Modal/Confirm/index.js +81 -75
- package/es/Modal/component.json +277 -0
- package/es/Modal/index.d.ts +97 -6
- package/es/Modal/index.js +174 -122
- package/es/Modal/interface.d.ts +1 -0
- package/es/MultiBox/component.json +216 -0
- package/es/MultiBox/index.js +19 -14
- package/es/Notification/component.json +184 -0
- package/es/OperateBtn/component.json +134 -0
- package/es/OperateBtn/index.d.ts +3 -3
- package/es/PageHeader/component.json +112 -0
- package/es/Pagination/component.json +181 -0
- package/es/Pagination/index.js +15 -15
- package/es/PasswordRules/component.json +105 -0
- package/es/PasswordRules/index.d.ts +4 -4
- package/es/PopConfirm/component.json +227 -0
- package/es/PopConfirm/index.d.ts +1 -1
- package/es/PopConfirm/index.js +1 -1
- package/es/PopMenu/component.json +131 -0
- package/es/PopMenu/hooks.d.ts +1 -1
- package/es/PopMenu/index.js +8 -8
- package/es/Popover/component.json +165 -0
- package/es/Popover/index.js +1 -1
- package/es/Progress/component.json +161 -0
- package/es/Prompt/component.json +144 -0
- package/es/Querying/component.json +96 -0
- package/es/Querying/index.css +1 -1
- package/es/Querying/index.d.ts +2 -2
- package/es/Querying/index.js +20 -19
- package/es/Querying/style/index.css +1 -1
- package/es/QuickReply/component.json +129 -0
- package/es/QuickReply/index.d.ts +1 -1
- package/es/Radio/component.json +136 -0
- package/es/RadioGroup/component.json +149 -0
- package/es/RangeInput/component.json +198 -0
- package/es/RangeInput/index.js +1 -1
- package/es/Result/component.json +104 -0
- package/es/ScrollBar/component.json +115 -0
- package/es/Search/component.json +177 -0
- package/es/Search/index.d.ts +1 -1
- package/es/Select/component.json +244 -0
- package/es/Select/index.js +113 -113
- package/es/SelectInput/component.json +184 -0
- package/es/Selector/component.json +203 -0
- package/es/Selector/index.js +28 -27
- package/es/Selector/interface.d.ts +1 -1
- package/es/Selector/selectorMain/index.js +2 -2
- package/es/Selector/selectorNode/index.js +1 -1
- package/es/Selector/util.d.ts +2 -2
- package/es/SelectorPicker/component.json +179 -0
- package/es/SelectorPicker/index.d.ts +5 -5
- package/es/SelectorPicker/index.js +15 -15
- package/es/SingleBox/component.json +151 -0
- package/es/SingleBox/index.d.ts +2 -2
- package/es/Slider/component.json +181 -0
- package/es/SortBox/component.json +108 -0
- package/es/Status/component.json +104 -0
- package/es/Stepper/component.json +129 -0
- package/es/Stepper/index.d.ts +2 -2
- package/es/Switch/component.json +207 -0
- package/es/Switch/index.css +1 -1
- package/es/Switch/index.d.ts +3 -2
- package/es/Switch/index.js +60 -59
- package/es/Switch/style/index.css +1 -1
- package/es/Table/component.json +547 -0
- package/es/Table/index.d.ts +2 -2
- package/es/Table/index.js +414 -414
- package/es/Table/interface.d.ts +6 -0
- package/es/Tabs/component.json +227 -0
- package/es/Tag/component.json +221 -0
- package/es/Tag/index.css +1 -1
- package/es/Tag/index.d.ts +1 -1
- package/es/Tag/index.js +20 -20
- package/es/Tag/style/index.css +1 -1
- package/es/TextEditor/component.json +186 -0
- package/es/TextEditor/index.d.ts +5 -5
- package/es/TextField/component.json +290 -0
- package/es/TextField/index.d.ts +2 -2
- package/es/TimePicker/component.json +176 -0
- package/es/Timeline/component.json +110 -0
- package/es/Title/component.json +156 -0
- package/es/ToggleButton/component.json +153 -0
- package/es/Tooltip/component.json +176 -0
- package/es/Tooltip/index.js +74 -63
- package/es/Tooltip/interface.d.ts +14 -1
- package/es/Tooltip/utils.js +6 -6
- package/es/Transfer/component.json +157 -0
- package/es/Tree/component.json +512 -0
- package/es/Upload/component.json +450 -0
- package/es/Utils/type.d.ts +0 -2
- package/es/index.d.ts +2 -0
- package/es/index.js +1 -1
- package/es/locale/en_US.d.ts +361 -0
- package/es/locale/en_US.js +364 -0
- package/es/locale/index.d.ts +1 -723
- package/es/locale/index2.js +10 -0
- package/es/locale/zh_CN.d.ts +361 -0
- package/es/locale/zh_CN.js +364 -0
- package/lib/AlignBox/component.json +89 -0
- package/lib/AlignBox/index.css +1 -1
- package/lib/AlignBox/index.d.ts +6 -2
- package/lib/AlignBox/index.js +1 -1
- package/lib/AlignBox/style/index.css +1 -1
- package/lib/Anchor/anchorMenu/index.d.ts +2 -1
- package/lib/Anchor/anchorMenu/index.js +1 -1
- package/lib/Anchor/component.json +130 -0
- package/lib/Anchor/index.js +1 -1
- package/lib/Anchor/type.d.ts +8 -4
- package/lib/Argv/component.json +216 -0
- package/lib/Argv/index.d.ts +5 -6
- package/lib/AutoBox/component.json +133 -0
- package/lib/AutoBox/index.d.ts +3 -3
- package/lib/AutoBox/index.js +1 -1
- package/lib/AutoBox/protal.d.ts +2 -2
- package/lib/AutoBox/protal.js +1 -1
- package/lib/AutoButton/component.json +109 -0
- package/lib/AutoButton/index.js +1 -1
- package/lib/AutoTips/autoTipsMultiline/index.d.ts +1 -1
- package/lib/AutoTips/autoTipsMultiline/index.js +1 -1
- package/lib/AutoTips/component.json +121 -0
- package/lib/Badge/component.json +92 -0
- package/lib/Breadcrumbs/component.json +142 -0
- package/lib/Breadcrumbs/index.js +1 -1
- package/lib/Button/SplitButton.d.ts +2 -2
- package/lib/Button/component.json +168 -0
- package/lib/Button/index.js +1 -1
- package/lib/ButtonGroup/component.json +132 -0
- package/lib/ButtonGroup/index.d.ts +1 -1
- package/lib/Card/component.json +162 -0
- package/lib/Card/index.d.ts +2 -2
- package/lib/Card/index.js +1 -1
- package/lib/Carousel/component.json +142 -0
- package/lib/Carousel/index.d.ts +1 -1
- package/lib/Cascader/Cascader.js +1 -1
- package/lib/Cascader/component.json +196 -0
- package/lib/Cascader/hooks/useEntities.js +1 -1
- package/lib/Cascader/interface.d.ts +1 -0
- package/lib/Cascader/utils/commonUtil.d.ts +1 -1
- package/lib/Cascader/utils/commonUtil.js +1 -1
- package/lib/Cascader/utils/treeUtil.d.ts +14 -5
- package/lib/Cascader/utils/treeUtil.js +1 -1
- package/lib/Checkbox/component.json +138 -0
- package/lib/CheckboxGroup/component.json +152 -0
- package/lib/CodeEditor/component.json +189 -0
- package/lib/CodeEditor/index.d.ts +10 -9
- package/lib/Collapse/component.json +166 -0
- package/lib/Collapse/index.d.ts +1 -1
- package/lib/Collapse/index.js +1 -1
- package/lib/CollapseBox/component.json +84 -0
- package/lib/CollapseLayout/component.json +155 -0
- package/lib/ColorPicker/component.json +142 -0
- package/lib/ComboSelect/component.json +181 -0
- package/lib/ComboSelect/index.js +1 -1
- package/lib/ComboSelect/interface.d.ts +6 -3
- package/lib/ComboSelect/utils.d.ts +3 -3
- package/lib/ComboSelect/utils.js +1 -1
- package/lib/Container/component.json +111 -0
- package/lib/ContentBox/component.json +81 -0
- package/lib/CopyText/component.json +118 -0
- package/lib/CycleSelector/component.json +98 -0
- package/lib/CycleSelector/index.js +1 -1
- package/lib/DatePicker/component.json +192 -0
- package/lib/DatePicker/generatePicker/generateRangePicker.d.ts +0 -8
- package/lib/DatePicker/generatePicker/generateRangePicker.js +1 -1
- package/lib/DatePicker/generatePicker/generateSinglePicker.js +1 -1
- package/lib/DatePicker/generatePicker/index.d.ts +11 -4
- package/lib/Descriptions/component.json +142 -0
- package/lib/Descriptions/index.d.ts +1 -1
- package/lib/Desktop/component.json +171 -0
- package/lib/DragVerify/component.json +114 -0
- package/lib/DragVerify/index.js +1 -1
- package/lib/Drawer/component.json +200 -0
- package/lib/Drawer/index.js +1 -1
- package/lib/Drawer/interface.d.ts +1 -1
- package/lib/Drawer/util.d.ts +1 -6
- package/lib/Drawer/util.js +1 -1
- package/lib/Dropdown/component.json +147 -0
- package/lib/DynamicMultiBox/component.json +278 -0
- package/lib/DynamicMultiBox/formItem.d.ts +1 -1
- package/lib/DynamicMultiBox/rowForm.d.ts +2 -2
- package/lib/Empty/component.json +123 -0
- package/lib/Empty/index.css +1 -1
- package/lib/Empty/index.d.ts +2 -2
- package/lib/Empty/index.js +1 -1
- package/lib/Empty/style/index.css +1 -1
- package/lib/FieldForm/FieldFormItem/MemoInput.d.ts +2 -2
- package/lib/FieldForm/FieldFormItem/index.d.ts +6 -6
- package/lib/FieldForm/Form.d.ts +2 -2
- package/lib/FieldForm/FormList.d.ts +2 -2
- package/lib/FieldForm/component.json +196 -0
- package/lib/FieldForm/context.d.ts +5 -1
- package/lib/FieldForm/context.js +1 -1
- package/lib/FieldForm/hooks/useForm.d.ts +4 -3
- package/lib/FieldForm/hooks/useFormInstance.d.ts +1 -1
- package/lib/FieldForm/hooks/useFormItemStatus.d.ts +9 -5
- package/lib/FieldForm/hooks/useFormItemStatus.js +1 -1
- package/lib/FieldForm/hooks/useItemRef.d.ts +1 -1
- package/lib/FieldForm/hooks/useItemRef.js +1 -1
- package/lib/Form/component.json +161 -0
- package/lib/Form/index.d.ts +52 -49
- package/lib/FormItem/compoments/defaultCompoments/index.d.ts +5 -5
- package/lib/FormItem/compoments/defaultCompoments/index.js +1 -1
- package/lib/FormItem/compoments/formCheckboxGroup/index.d.ts +2 -2
- package/lib/FormItem/compoments/formFile/index.js +1 -1
- package/lib/FormItem/compoments/formRadioGroup/index.d.ts +1 -1
- package/lib/FormItem/compoments/formSelect/index.d.ts +1 -1
- package/lib/FormItem/component.json +171 -0
- package/lib/FormItem/index.d.ts +5 -5
- package/lib/FormItem/index.js +1 -1
- package/lib/FormItem/itemType.js +1 -1
- package/lib/FunctionModal/component.json +197 -0
- package/lib/FunctionModal/dialog.d.ts +1 -1
- package/lib/FunctionModal/modalContext.d.ts +4 -1
- package/lib/Help/component.json +118 -0
- package/lib/HelperText/component.json +126 -0
- package/lib/Image/component.json +165 -0
- package/lib/InputCode/component.json +191 -0
- package/lib/InputCode/index.d.ts +2 -2
- package/lib/InputLang/component.json +205 -0
- package/lib/InputLang/index.js +1 -1
- package/lib/InputNumber/component.json +162 -0
- package/lib/Label/component.json +126 -0
- package/lib/Label/index.d.ts +2 -2
- package/lib/Loading/component.json +91 -0
- package/lib/Menu/component.json +180 -0
- package/lib/Message/component.json +246 -0
- package/lib/Message/index.d.ts +2 -2
- package/lib/Message/index.js +1 -1
- package/lib/Modal/Confirm/index.d.ts +1 -1
- package/lib/Modal/Confirm/index.js +1 -1
- package/lib/Modal/component.json +277 -0
- package/lib/Modal/index.d.ts +97 -6
- package/lib/Modal/index.js +1 -1
- package/lib/Modal/interface.d.ts +1 -0
- package/lib/MultiBox/component.json +216 -0
- package/lib/MultiBox/index.js +1 -1
- package/lib/Notification/component.json +184 -0
- package/lib/OperateBtn/component.json +134 -0
- package/lib/OperateBtn/index.d.ts +3 -3
- package/lib/PageHeader/component.json +112 -0
- package/lib/Pagination/component.json +181 -0
- package/lib/Pagination/index.js +1 -1
- package/lib/PasswordRules/component.json +105 -0
- package/lib/PasswordRules/index.d.ts +4 -4
- package/lib/PopConfirm/component.json +227 -0
- package/lib/PopConfirm/index.d.ts +1 -1
- package/lib/PopConfirm/index.js +1 -1
- package/lib/PopMenu/component.json +131 -0
- package/lib/PopMenu/hooks.d.ts +1 -1
- package/lib/PopMenu/index.js +1 -1
- package/lib/Popover/component.json +165 -0
- package/lib/Popover/index.js +1 -1
- package/lib/Progress/component.json +161 -0
- package/lib/Prompt/component.json +144 -0
- package/lib/Querying/component.json +96 -0
- package/lib/Querying/index.css +1 -1
- package/lib/Querying/index.d.ts +2 -2
- package/lib/Querying/index.js +1 -1
- package/lib/Querying/style/index.css +1 -1
- package/lib/QuickReply/component.json +129 -0
- package/lib/QuickReply/index.d.ts +1 -1
- package/lib/Radio/component.json +136 -0
- package/lib/RadioGroup/component.json +149 -0
- package/lib/RangeInput/component.json +198 -0
- package/lib/RangeInput/index.js +1 -1
- package/lib/Result/component.json +104 -0
- package/lib/ScrollBar/component.json +115 -0
- package/lib/Search/component.json +177 -0
- package/lib/Search/index.d.ts +1 -1
- package/lib/Select/component.json +244 -0
- package/lib/Select/index.js +1 -1
- package/lib/SelectInput/component.json +184 -0
- package/lib/Selector/component.json +203 -0
- package/lib/Selector/index.js +1 -1
- package/lib/Selector/interface.d.ts +1 -1
- package/lib/Selector/selectorMain/index.js +1 -1
- package/lib/Selector/selectorNode/index.js +1 -1
- package/lib/Selector/util.d.ts +2 -2
- package/lib/SelectorPicker/component.json +179 -0
- package/lib/SelectorPicker/index.d.ts +5 -5
- package/lib/SelectorPicker/index.js +1 -1
- package/lib/SingleBox/component.json +151 -0
- package/lib/SingleBox/index.d.ts +2 -2
- package/lib/Slider/component.json +181 -0
- package/lib/SortBox/component.json +108 -0
- package/lib/Status/component.json +104 -0
- package/lib/Stepper/component.json +129 -0
- package/lib/Stepper/index.d.ts +2 -2
- package/lib/Switch/component.json +207 -0
- package/lib/Switch/index.css +1 -1
- package/lib/Switch/index.d.ts +3 -2
- package/lib/Switch/index.js +1 -1
- package/lib/Switch/style/index.css +1 -1
- package/lib/Table/component.json +547 -0
- package/lib/Table/index.d.ts +2 -2
- package/lib/Table/index.js +1 -1
- package/lib/Table/interface.d.ts +6 -0
- package/lib/Tabs/component.json +227 -0
- package/lib/Tag/component.json +221 -0
- package/lib/Tag/index.css +1 -1
- package/lib/Tag/index.d.ts +1 -1
- package/lib/Tag/index.js +1 -1
- package/lib/Tag/style/index.css +1 -1
- package/lib/TextEditor/component.json +186 -0
- package/lib/TextEditor/index.d.ts +5 -5
- package/lib/TextField/component.json +290 -0
- package/lib/TextField/index.d.ts +2 -2
- package/lib/TimePicker/component.json +176 -0
- package/lib/Timeline/component.json +110 -0
- package/lib/Title/component.json +156 -0
- package/lib/ToggleButton/component.json +153 -0
- package/lib/Tooltip/component.json +176 -0
- package/lib/Tooltip/index.js +1 -1
- package/lib/Tooltip/interface.d.ts +14 -1
- package/lib/Tooltip/utils.js +1 -1
- package/lib/Transfer/component.json +157 -0
- package/lib/Tree/component.json +512 -0
- package/lib/Upload/component.json +450 -0
- package/lib/Utils/type.d.ts +0 -2
- package/lib/index.d.ts +2 -0
- package/lib/index.js +1 -1
- package/lib/locale/en_US.d.ts +361 -0
- package/lib/locale/en_US.js +2 -0
- package/lib/locale/index.d.ts +1 -723
- package/lib/locale/index2.js +2 -0
- package/lib/locale/zh_CN.d.ts +361 -0
- package/lib/locale/zh_CN.js +2 -0
- package/package.json +10 -3
- /package/es/{Utils/Hooks → Hooks}/useResizeObserver.d.ts +0 -0
- /package/es/{Utils/Hooks → Hooks}/useResizeObserver.js +0 -0
- /package/lib/{Utils/Hooks → Hooks}/useResizeObserver.d.ts +0 -0
- /package/lib/{Utils/Hooks → Hooks}/useResizeObserver.js +0 -0
|
@@ -0,0 +1,196 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "Cascader",
|
|
3
|
+
"category": "Data Entry",
|
|
4
|
+
"description": "级联选择,用于多层级数据的选择",
|
|
5
|
+
"semantic": {
|
|
6
|
+
"intent": [
|
|
7
|
+
"层级选择",
|
|
8
|
+
"地域选择",
|
|
9
|
+
"分类选择"
|
|
10
|
+
],
|
|
11
|
+
"useCases": [
|
|
12
|
+
"省市区选择",
|
|
13
|
+
"商品分类",
|
|
14
|
+
"组织架构"
|
|
15
|
+
],
|
|
16
|
+
"riskLevel": "normal"
|
|
17
|
+
},
|
|
18
|
+
"variants": {
|
|
19
|
+
"default": {
|
|
20
|
+
"meaning": "标准级联"
|
|
21
|
+
}
|
|
22
|
+
},
|
|
23
|
+
"states": [
|
|
24
|
+
"default",
|
|
25
|
+
"disabled",
|
|
26
|
+
"error",
|
|
27
|
+
"loading"
|
|
28
|
+
],
|
|
29
|
+
"idealProps": {
|
|
30
|
+
"options": {
|
|
31
|
+
"type": "array",
|
|
32
|
+
"itemSchema": {
|
|
33
|
+
"label": { "type": "ReactNode", "required": true, "description": "选项显示文案" },
|
|
34
|
+
"value": { "type": "string | number | null", "description": "选项值" },
|
|
35
|
+
"children": { "type": "DefaultOptionType[]", "description": "子级选项,形成层级结构" },
|
|
36
|
+
"disabled": { "type": "boolean", "description": "是否禁用该选项" },
|
|
37
|
+
"disableCheckbox": { "type": "boolean", "description": "禁用 checkbox(checkable 模式)" },
|
|
38
|
+
"disableTitle": { "type": "string", "description": "禁用时 tooltip 提示文案" }
|
|
39
|
+
},
|
|
40
|
+
"description": "数据源,元素类型为 `DefaultOptionType`(包含 `label / value / children / disabled / disableTitle`;⚠️ `loading` 和 `isLeaf` **不在 DefaultOptionType 中**,是 loadData 场景扩展字段,需在业务类型中另声明)。业务自有节点类型对接三种推荐写法:(1) 泛型 `<Cascader<RegionNode> options={tree} />`(首选,Cascader 已暴露 `<OptionType extends BaseOptionType = DefaultOptionType>` 泛型);(2) 声明合并 `interface RegionNode extends DefaultOptionType { ... }`;(3) as 强转 `options={tree as DefaultOptionType[]}`(快速逃逸)。详见 docs/view/cascader/codeString.ts customOptionTypeCascader 示例。"
|
|
41
|
+
},
|
|
42
|
+
"value": {
|
|
43
|
+
"type": "(string | number)[]",
|
|
44
|
+
"description": "受控选中值;级联路径数组,每层一个值,如 `['guangdong', 'guangzhou']`。⚠️ 类型是 (string | number)[],不是 string[] 或 any[],传纯 string 路径需在调用侧 as string[]"
|
|
45
|
+
},
|
|
46
|
+
"defaultValue": {
|
|
47
|
+
"type": "(string | number)[]",
|
|
48
|
+
"description": "非受控初始选中值;格式同 value,如 `['guangdong', 'guangzhou']`。不要同时传 value + defaultValue"
|
|
49
|
+
},
|
|
50
|
+
"onChange": {
|
|
51
|
+
"type": "function",
|
|
52
|
+
"signature": "(value: (string | number)[], selectedOptions: DefaultOptionType[]) => void",
|
|
53
|
+
"description": "选中值改变回调。**完整签名**:第一参 value 是选中路径各级节点 value 组成的数组(如 ['guangdong', 'guangzhou']);第二参 selectedOptions 是路径各级节点完整对象数组。⚠️ **TS7006 陷阱(noImplicitAny)**:内联回调参数必须显式标注类型——`onChange={(value: (string | number)[]) => ...}` ✅;`onChange={(value) => ...}` ❌ 报 TS7006。**桥接 string[] 场景推荐写法**:`onChange={(value: (string | number)[]) => onPathChange(value as string[])}`"
|
|
54
|
+
},
|
|
55
|
+
"onDropdownVisibleChange": {
|
|
56
|
+
"type": "function",
|
|
57
|
+
"signature": "(visible: boolean) => void",
|
|
58
|
+
"description": "弹出层显示状态改变时的回调,visible=true 表示打开,false 表示关闭"
|
|
59
|
+
},
|
|
60
|
+
"changeOnSelect": {
|
|
61
|
+
"type": "boolean",
|
|
62
|
+
"default": false,
|
|
63
|
+
"description": "选择任一级即触发 onChange,无需选到末级"
|
|
64
|
+
},
|
|
65
|
+
"expandTrigger": {
|
|
66
|
+
"type": "enum",
|
|
67
|
+
"values": [
|
|
68
|
+
"click",
|
|
69
|
+
"hover"
|
|
70
|
+
],
|
|
71
|
+
"default": "click",
|
|
72
|
+
"description": "展开触发方式"
|
|
73
|
+
},
|
|
74
|
+
"expandIcon": {
|
|
75
|
+
"type": "ReactNode",
|
|
76
|
+
"description": "展开箭头图标"
|
|
77
|
+
},
|
|
78
|
+
"loadingIcon": {
|
|
79
|
+
"type": "ReactNode",
|
|
80
|
+
"description": "异步加载状态图标"
|
|
81
|
+
},
|
|
82
|
+
"expandJoin": {
|
|
83
|
+
"type": "string",
|
|
84
|
+
"default": "/",
|
|
85
|
+
"description": "已选路径文本拼接符"
|
|
86
|
+
},
|
|
87
|
+
"fieldNames": {
|
|
88
|
+
"type": "object",
|
|
89
|
+
"default": "{ label: 'label', value: 'value', children: 'children' }",
|
|
90
|
+
"objectShape": {
|
|
91
|
+
"label": { "type": "string", "description": "数据中作为显示文案的字段名,默认 'label'" },
|
|
92
|
+
"value": { "type": "string", "description": "数据中作为值的字段名,默认 'value'" },
|
|
93
|
+
"children": { "type": "string", "description": "数据中作为子级的字段名,默认 'children'" }
|
|
94
|
+
},
|
|
95
|
+
"description": "自定义节点字段名映射"
|
|
96
|
+
},
|
|
97
|
+
"placeholder": {
|
|
98
|
+
"type": "string",
|
|
99
|
+
"default": "请选择",
|
|
100
|
+
"description": "占位符"
|
|
101
|
+
},
|
|
102
|
+
"disabled": {
|
|
103
|
+
"type": "boolean",
|
|
104
|
+
"default": false,
|
|
105
|
+
"description": "是否整体禁用"
|
|
106
|
+
},
|
|
107
|
+
"disabledTooltip": {
|
|
108
|
+
"type": "TooltipProps",
|
|
109
|
+
"description": "disabled 时悬浮于触发框的 Tooltip 配置"
|
|
110
|
+
},
|
|
111
|
+
"optionsTitle": {
|
|
112
|
+
"type": "Array<string | null>",
|
|
113
|
+
"default": "[]",
|
|
114
|
+
"description": "每级面板顶部标题文案,下标对应级数"
|
|
115
|
+
},
|
|
116
|
+
"checkable": {
|
|
117
|
+
"type": "boolean | ReactNode",
|
|
118
|
+
"default": false,
|
|
119
|
+
"description": "是否多选;true 显示 checkbox,传 ReactNode 自定义勾选图标"
|
|
120
|
+
},
|
|
121
|
+
"displayRender": {
|
|
122
|
+
"type": "function",
|
|
123
|
+
"signature": "(label: string[], selectedOptions?: DefaultOptionType[]) => ReactNode",
|
|
124
|
+
"description": "自定义触发框已选项渲染。label 是路径各级节点 label 的字符串数组(非单一字符串);selectedOptions 是路径各级节点完整对象数组"
|
|
125
|
+
},
|
|
126
|
+
"loadData": {
|
|
127
|
+
"type": "function",
|
|
128
|
+
"signature": "(selectedOptions: DefaultOptionType[]) => void",
|
|
129
|
+
"description": "异步加载下一级数据。触发条件:用户展开 isLeaf=false 且无 children 的节点。selectedOptions 为当前展开路径各级节点数组。在回调内修改数据源并通过外部 setState 更新 options(标准模式:setOptions([...options]))"
|
|
130
|
+
},
|
|
131
|
+
"notFoundContent": {
|
|
132
|
+
"type": "ReactNode",
|
|
133
|
+
"description": "options 为空或搜索无匹配时的空状态"
|
|
134
|
+
}
|
|
135
|
+
},
|
|
136
|
+
"do": [
|
|
137
|
+
"用于有明确层级关系的数据选择",
|
|
138
|
+
"数据量较大会延迟加载(loadData)",
|
|
139
|
+
"onChange 内联回调必须显式标注类型参数,避免 noImplicitAny 报错:onChange={(value: (string|number)[]) => ...}"
|
|
140
|
+
],
|
|
141
|
+
"dont": [
|
|
142
|
+
"层级过深(>5级)导致横向滚动过长",
|
|
143
|
+
"在非层级数据中使用 Cascader(应使用 Select)"
|
|
144
|
+
],
|
|
145
|
+
"events": {
|
|
146
|
+
"onChange": {
|
|
147
|
+
"signature": "(value: (string | number)[], selectedOptions: DefaultOptionType[]) => void",
|
|
148
|
+
"asyncSupported": false,
|
|
149
|
+
"examples": [
|
|
150
|
+
"基础用法:onChange={(value) => setPath(value)} // value 是路径各级 value 数组,如 ['guangdong', 'guangzhou']",
|
|
151
|
+
"获取完整路径对象:onChange={(value, selectedOptions) => setLabel(selectedOptions.map(o => o.label).join(' / '))}",
|
|
152
|
+
"桥接 string[] 类型:onChange={(value: (string|number)[]) => onPathChange(value as string[])}"
|
|
153
|
+
],
|
|
154
|
+
"commonMistakes": [
|
|
155
|
+
"内联回调不标注参数类型导致 TS7006 noImplicitAny 报错——必须显式声明 value: (string|number)[]",
|
|
156
|
+
"期望 onChange 在 changeOnSelect=false 时每级展开都触发——只有选到末级(或 changeOnSelect=true 时任意级)才触发",
|
|
157
|
+
"用 value[value.length-1] 取最终叶节点值——这是最后一级的 value,但当 checkable 多选时 value 结构不同(多维数组)"
|
|
158
|
+
]
|
|
159
|
+
},
|
|
160
|
+
"onDropdownVisibleChange": {
|
|
161
|
+
"signature": "(visible: boolean) => void",
|
|
162
|
+
"asyncSupported": false,
|
|
163
|
+
"examples": [
|
|
164
|
+
"弹出层打开时加载数据:onDropdownVisibleChange={(v) => { if (v && !loaded) fetchOptions(); }}",
|
|
165
|
+
"弹出层关闭时重置搜索:onDropdownVisibleChange={(v) => { if (!v) setSearch(''); }}",
|
|
166
|
+
"受控弹层:onDropdownVisibleChange={(v) => setOpen(v)}"
|
|
167
|
+
],
|
|
168
|
+
"commonMistakes": [
|
|
169
|
+
"期望 onOpen / onClose 独立回调——Cascader 只有 onDropdownVisibleChange,通过 visible 参数区分",
|
|
170
|
+
"在 onDropdownVisibleChange 里直接 loadData——loadData prop 是每级展开时的异步回调,不是全局弹层回调",
|
|
171
|
+
"visible=false 时立即清空 options——关闭动画期间 Cascader 仍需 options 数据,过早清空会闪烁"
|
|
172
|
+
]
|
|
173
|
+
}
|
|
174
|
+
},
|
|
175
|
+
"typescriptPitfalls": [
|
|
176
|
+
{
|
|
177
|
+
"issue": "onChange 内联回调参数必须显式标注类型,否则 noImplicitAny 报 TS7006",
|
|
178
|
+
"wrong": "<Cascader onChange={(value) => setV(value)} /> // TS7006: 'value' 参数隐式具有 'any' 类型",
|
|
179
|
+
"right": "<Cascader onChange={(value: (string | number)[]) => setV(value)} />"
|
|
180
|
+
},
|
|
181
|
+
{
|
|
182
|
+
"issue": "业务自有节点类型必须 extends BaseOptionType(含索引签名),否则泛型约束失败",
|
|
183
|
+
"wrong": "interface Region { label: string; value: string; code: string; } // 无索引签名\n<Cascader<Region> options={regions} /> // TS 报错:Region 不满足 BaseOptionType",
|
|
184
|
+
"right": "interface Region extends DefaultOptionType { code: string; } // 继承 DefaultOptionType 或直接继承 BaseOptionType"
|
|
185
|
+
},
|
|
186
|
+
{
|
|
187
|
+
"issue": "DefaultOptionType 的 loading 和 isLeaf 字段不在类型定义中——loadData 场景需扩展类型",
|
|
188
|
+
"wrong": "const node: DefaultOptionType = { label: '北京', value: 'bj', isLeaf: false }; // TS: isLeaf 不在 DefaultOptionType",
|
|
189
|
+
"right": "interface LazyOption extends DefaultOptionType { isLeaf?: boolean; loading?: boolean; }\nconst node: LazyOption = { label: '北京', value: 'bj', isLeaf: false };"
|
|
190
|
+
}
|
|
191
|
+
],
|
|
192
|
+
"mapping": {
|
|
193
|
+
"realComponent": "Cascader",
|
|
194
|
+
"adapter": null
|
|
195
|
+
}
|
|
196
|
+
}
|
|
@@ -1,24 +1,24 @@
|
|
|
1
1
|
import * as o from "react";
|
|
2
|
-
import { convertDataToEntities as
|
|
3
|
-
import { VALUE_SPLIT as
|
|
4
|
-
const
|
|
2
|
+
import { convertDataToEntities as u } from "../utils/treeUtil.js";
|
|
3
|
+
import { VALUE_SPLIT as p } from "../utils/commonUtil.js";
|
|
4
|
+
const h = (e, r) => {
|
|
5
5
|
const n = o.useRef({
|
|
6
6
|
options: null,
|
|
7
7
|
info: null
|
|
8
8
|
});
|
|
9
|
-
return o.useCallback(() => (n.current.options !== e && (n.current.options = e, n.current.info =
|
|
9
|
+
return o.useCallback(() => (n.current.options !== e && (n.current.options = e, n.current.info = u(e, {
|
|
10
10
|
fieldNames: r,
|
|
11
11
|
initWrapper: (t) => ({
|
|
12
12
|
...t,
|
|
13
13
|
pathKeyEntities: {}
|
|
14
14
|
}),
|
|
15
15
|
processEntity: (t, s) => {
|
|
16
|
-
const i = t.nodes.map((a) => a[r.value]).join(
|
|
17
|
-
|
|
16
|
+
const c = s, i = t.nodes.map((a) => a[r.value]).join(p);
|
|
17
|
+
c.pathKeyEntities[i] = t, t.key = i;
|
|
18
18
|
}
|
|
19
19
|
})), n.current.info.pathKeyEntities), [r, e]);
|
|
20
20
|
};
|
|
21
21
|
export {
|
|
22
|
-
|
|
22
|
+
h as default
|
|
23
23
|
};
|
|
24
24
|
//# sourceMappingURL=useEntities.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export type { DefaultOptionType, BaseOptionType } from './Cascader';
|
|
@@ -15,4 +15,4 @@ export declare function toPathValueStr(pathKey: string): string[];
|
|
|
15
15
|
export declare function fillFieldNames(fieldNames?: FieldNames): InternalFieldNames;
|
|
16
16
|
export declare function isLeaf(option: DefaultOptionType, fieldNames: FieldNames): boolean;
|
|
17
17
|
export declare function scrollIntoParentView(element: HTMLElement): void;
|
|
18
|
-
export declare function getFullPathKeys(options: DefaultOptionType[], fieldNames: FieldNames):
|
|
18
|
+
export declare function getFullPathKeys(options: DefaultOptionType[], fieldNames: FieldNames): (SingleValueType | undefined)[];
|
|
@@ -1,20 +1,20 @@
|
|
|
1
|
-
const
|
|
2
|
-
function
|
|
3
|
-
return t.join(
|
|
1
|
+
const l = "__RC_CASCADER_SPLIT__", s = "SHOW_PARENT", f = "SHOW_CHILD", a = "__rc_cascader_search_mark__";
|
|
2
|
+
function c(t) {
|
|
3
|
+
return t.join(l);
|
|
4
4
|
}
|
|
5
5
|
function i(t) {
|
|
6
|
-
return t.map(
|
|
6
|
+
return t.map(c);
|
|
7
7
|
}
|
|
8
8
|
function u(t) {
|
|
9
|
-
return t.split(
|
|
9
|
+
return t.split(l);
|
|
10
10
|
}
|
|
11
11
|
function _(t) {
|
|
12
|
-
const { label: e, value:
|
|
12
|
+
const { label: e, value: n, children: r } = t || {}, o = n || "value";
|
|
13
13
|
return {
|
|
14
14
|
label: e || "label",
|
|
15
|
-
value:
|
|
16
|
-
key:
|
|
17
|
-
children:
|
|
15
|
+
value: o,
|
|
16
|
+
key: o,
|
|
17
|
+
children: r || "children"
|
|
18
18
|
};
|
|
19
19
|
}
|
|
20
20
|
function h(t, e) {
|
|
@@ -24,22 +24,22 @@ function p(t) {
|
|
|
24
24
|
const e = t.parentElement;
|
|
25
25
|
if (!e)
|
|
26
26
|
return;
|
|
27
|
-
const
|
|
28
|
-
|
|
27
|
+
const n = t.offsetTop - e.offsetTop;
|
|
28
|
+
n - e.scrollTop < 0 ? e.scrollTo({ top: n }) : n + t.offsetHeight - e.scrollTop > e.offsetHeight && e.scrollTo({ top: n + t.offsetHeight - e.offsetHeight });
|
|
29
29
|
}
|
|
30
30
|
function H(t, e) {
|
|
31
|
-
return t.map((
|
|
31
|
+
return t.map((n) => n[a]?.map((o) => o[e.value]));
|
|
32
32
|
}
|
|
33
33
|
export {
|
|
34
|
-
|
|
34
|
+
a as SEARCH_MARK,
|
|
35
35
|
f as SHOW_CHILD,
|
|
36
|
-
|
|
37
|
-
|
|
36
|
+
s as SHOW_PARENT,
|
|
37
|
+
l as VALUE_SPLIT,
|
|
38
38
|
_ as fillFieldNames,
|
|
39
39
|
H as getFullPathKeys,
|
|
40
40
|
h as isLeaf,
|
|
41
41
|
p as scrollIntoParentView,
|
|
42
|
-
|
|
42
|
+
c as toPathKey,
|
|
43
43
|
i as toPathKeys,
|
|
44
44
|
u as toPathValueStr
|
|
45
45
|
};
|
|
@@ -2,8 +2,17 @@ import { SingleValueType, DefaultOptionType, InternalFieldNames, ShowCheckedStra
|
|
|
2
2
|
import { GetEntities } from '../hooks/useEntities';
|
|
3
3
|
declare type Key = string | number;
|
|
4
4
|
export declare type GetKey<RecordType> = (record: RecordType, index?: number) => Key;
|
|
5
|
-
type
|
|
6
|
-
|
|
5
|
+
type DataNode = DefaultOptionType;
|
|
6
|
+
interface DataEntity {
|
|
7
|
+
node: DataNode;
|
|
8
|
+
nodes: DataNode[];
|
|
9
|
+
index?: number;
|
|
10
|
+
pos: string;
|
|
11
|
+
key: Key;
|
|
12
|
+
level: number;
|
|
13
|
+
parent?: DataEntity;
|
|
14
|
+
children?: DataEntity[];
|
|
15
|
+
}
|
|
7
16
|
interface TraverseDataNodesConfig {
|
|
8
17
|
childrenPropName?: string;
|
|
9
18
|
externalGetKey?: ExternalGetKey;
|
|
@@ -28,7 +37,7 @@ export declare function toPathOptions(valueCells: SingleValueType, options: Defa
|
|
|
28
37
|
option: DefaultOptionType;
|
|
29
38
|
}[];
|
|
30
39
|
export declare function convertDataToEntities(dataNodes: DataNode[], { initWrapper, processEntity, onProcessFinished, externalGetKey, childrenPropName, fieldNames }?: {
|
|
31
|
-
initWrapper?: (wrapper:
|
|
40
|
+
initWrapper?: (wrapper: Wrapper) => Wrapper;
|
|
32
41
|
processEntity?: (entity: DataEntity, wrapper: Wrapper) => void;
|
|
33
42
|
onProcessFinished?: (wrapper: Wrapper) => void;
|
|
34
43
|
externalGetKey?: ExternalGetKey;
|
|
@@ -37,8 +46,8 @@ export declare function convertDataToEntities(dataNodes: DataNode[], { initWrapp
|
|
|
37
46
|
},
|
|
38
47
|
/** @deprecated Use `config.externalGetKey` instead */
|
|
39
48
|
legacyExternalGetKey?: ExternalGetKey): {
|
|
40
|
-
posEntities:
|
|
41
|
-
keyEntities:
|
|
49
|
+
posEntities: Record<string, DataEntity>;
|
|
50
|
+
keyEntities: Record<Key, DataEntity>;
|
|
42
51
|
};
|
|
43
52
|
export declare function traverseDataNodes(dataNodes: DataNode[], callback: (data: {
|
|
44
53
|
node: DataNode;
|
|
@@ -52,7 +52,7 @@ function E(i, s, l) {
|
|
|
52
52
|
let y;
|
|
53
53
|
n ? typeof n == "string" ? y = (e) => e[n] : typeof n == "function" && (y = (e) => n(e)) : y = (e, h) => K(e[u], h);
|
|
54
54
|
function a(e, h, p, m) {
|
|
55
|
-
const v = e ? e[c] : i, g = e ? G(p.pos, h) : "0", x = e ? [...m, e] : [];
|
|
55
|
+
const v = e ? e[c] : i, g = e ? G(p.pos, h) : "0", x = e ? [...m ?? [], e] : [];
|
|
56
56
|
if (e) {
|
|
57
57
|
const k = y(e, g), r = {
|
|
58
58
|
node: e,
|
|
@@ -0,0 +1,138 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "Checkbox",
|
|
3
|
+
"category": "Data Entry",
|
|
4
|
+
"description": "多选框,用于在多个选项中选择一个或多个",
|
|
5
|
+
"semantic": {
|
|
6
|
+
"intent": [
|
|
7
|
+
"多项选择",
|
|
8
|
+
"状态切换",
|
|
9
|
+
"同意协议"
|
|
10
|
+
],
|
|
11
|
+
"useCases": [
|
|
12
|
+
"过滤器",
|
|
13
|
+
"权限配置",
|
|
14
|
+
"表单录入"
|
|
15
|
+
],
|
|
16
|
+
"riskLevel": "low"
|
|
17
|
+
},
|
|
18
|
+
"variants": {
|
|
19
|
+
"default": {
|
|
20
|
+
"meaning": "独立多选框"
|
|
21
|
+
},
|
|
22
|
+
"group": {
|
|
23
|
+
"meaning": "多选框组"
|
|
24
|
+
}
|
|
25
|
+
},
|
|
26
|
+
"states": [
|
|
27
|
+
"checked",
|
|
28
|
+
"unchecked",
|
|
29
|
+
"indeterminate",
|
|
30
|
+
"disabled"
|
|
31
|
+
],
|
|
32
|
+
"idealProps": {
|
|
33
|
+
"checked": {
|
|
34
|
+
"type": "boolean",
|
|
35
|
+
"description": "是否选中"
|
|
36
|
+
},
|
|
37
|
+
"defaultChecked": {
|
|
38
|
+
"type": "boolean",
|
|
39
|
+
"default": false,
|
|
40
|
+
"description": "初始是否选中"
|
|
41
|
+
},
|
|
42
|
+
"disabled": {
|
|
43
|
+
"type": "boolean",
|
|
44
|
+
"default": false,
|
|
45
|
+
"description": "是否禁用"
|
|
46
|
+
},
|
|
47
|
+
"onChange": {
|
|
48
|
+
"type": "function",
|
|
49
|
+
"signature": "(e: React.MouseEvent<HTMLLabelElement>, checked: boolean) => void",
|
|
50
|
+
"description": "变化时回调(src/Checkbox/index.tsx:40 interface 实证:签名为 MouseEvent on HTMLLabelElement;indeterminate=true 时 checked 参数永远为 true;正常场景 checked 为切换后的新状态)"
|
|
51
|
+
},
|
|
52
|
+
"indeterminate": {
|
|
53
|
+
"type": "boolean",
|
|
54
|
+
"default": false,
|
|
55
|
+
"description": "不确定状态(src/Checkbox/index.tsx:36,51,90 实证:仅控制样式——追加 paraui-v4-checkbox-indeterminate 类,并使 onChange 固定传 checked=true;不影响内部 checked state 的实际计算)"
|
|
56
|
+
},
|
|
57
|
+
"label": {
|
|
58
|
+
"type": "ReactNode",
|
|
59
|
+
"description": "显示的文本(src/Checkbox/index.tsx:20 实证:类型为 ReactNode,支持字符串/ReactNode;label 为 null/''/undefined 时不渲染 Label 组件,src:137-139 实证)"
|
|
60
|
+
},
|
|
61
|
+
"size": {
|
|
62
|
+
"type": "enum",
|
|
63
|
+
"values": ["small", "medium", "large"],
|
|
64
|
+
"default": "large",
|
|
65
|
+
"description": "多选框大小(src/Checkbox/index.tsx:24,48,88 实证:默认 'large',控制 CSS 类 paraui-v4-checkbox-{size})"
|
|
66
|
+
},
|
|
67
|
+
"width": {
|
|
68
|
+
"type": "string",
|
|
69
|
+
"description": "组件外层容器宽度(src/Checkbox/index.tsx:18,52,117 实证:写入根 label 的 style.width,与 style prop 合并)"
|
|
70
|
+
},
|
|
71
|
+
"labelTooltip": {
|
|
72
|
+
"type": "LabelTooltipProps",
|
|
73
|
+
"description": "label 旁的帮助图标 tooltip 配置(src/Checkbox/index.tsx:22,47,92-93 实证:tooltipType 字段会追加到根容器类名;className/helpClassName 字段控制额外样式;透传给内部 Label 组件)"
|
|
74
|
+
},
|
|
75
|
+
"disabledTooltip": {
|
|
76
|
+
"type": "TooltipProps",
|
|
77
|
+
"description": "禁用状态下的 Tooltip 配置(src/Checkbox/index.tsx:34-35,150-156 实证:存在 disabledTooltip 时将整个 Checkbox 包裹在 Tooltip 内,disabled 固定为 true,透传全部 TooltipProps)"
|
|
78
|
+
},
|
|
79
|
+
"inputProps": {
|
|
80
|
+
"type": "React.InputHTMLAttributes<HTMLInputElement>",
|
|
81
|
+
"description": "内层原生 checkbox input 的额外 props(src/Checkbox/index.tsx:38,133 实证:透传到 `<input type='checkbox' {...props.inputProps} />`)"
|
|
82
|
+
},
|
|
83
|
+
"className": {
|
|
84
|
+
"type": "string",
|
|
85
|
+
"description": "自定义类名(src/Checkbox/index.tsx:14,45 实证,追加到根 label 元素)"
|
|
86
|
+
},
|
|
87
|
+
"style": {
|
|
88
|
+
"type": "React.CSSProperties",
|
|
89
|
+
"description": "自定义样式(src/Checkbox/index.tsx:16,54,116 实证,与 width prop 合并后透传到根 label 元素)"
|
|
90
|
+
}
|
|
91
|
+
},
|
|
92
|
+
"do": [
|
|
93
|
+
"使用 Checkbox Group 处理一组相关的选项",
|
|
94
|
+
"明确 Label 的含义",
|
|
95
|
+
"受控用 checked + onChange,非受控用 defaultChecked;二者不要混用"
|
|
96
|
+
],
|
|
97
|
+
"dont": [
|
|
98
|
+
"在单选场景中使用 Checkbox(应使用 Radio)",
|
|
99
|
+
"Checkbox 选项过多导致布局混乱"
|
|
100
|
+
],
|
|
101
|
+
"events": {
|
|
102
|
+
"onChange": {
|
|
103
|
+
"signature": "(e: React.MouseEvent<HTMLLabelElement>, checked: boolean) => void",
|
|
104
|
+
"asyncSupported": false,
|
|
105
|
+
"examples": [
|
|
106
|
+
"基础受控:onChange={(e, checked) => setChecked(checked)}",
|
|
107
|
+
"indeterminate 模式下 checked 永远为 true:onChange={(e, checked) => { if (indeterminate) setIndeterminate(false); setChecked(checked); }}",
|
|
108
|
+
"非受控+监听:onChange={(e, checked) => analytics.track('checkbox', { checked })}"
|
|
109
|
+
],
|
|
110
|
+
"commonMistakes": [
|
|
111
|
+
"期望 onChange 签名是 (e: React.ChangeEvent<HTMLInputElement>) => void(antd 风格)——Checkbox 实际签名第一参是 MouseEvent on HTMLLabelElement,不是 ChangeEvent",
|
|
112
|
+
"期望通过 e.target.checked 获取新状态——e.target 是 label 元素,checked 字段是第二参,不要从 e.target 取",
|
|
113
|
+
"indeterminate=true 时期望 checked 随用户操作在 true/false 切换——indeterminate 模式下 src 固定传 checked=true,需业务方在 onChange 里手动管理状态"
|
|
114
|
+
]
|
|
115
|
+
}
|
|
116
|
+
},
|
|
117
|
+
"typescriptPitfalls": [
|
|
118
|
+
{
|
|
119
|
+
"issue": "onChange 第一参是 MouseEvent on HTMLLabelElement,不是 ChangeEvent on HTMLInputElement",
|
|
120
|
+
"wrong": "// antd 风格,期望 ChangeEvent\nonChange={(e: React.ChangeEvent<HTMLInputElement>) => setChecked(e.target.checked)} // 类型不匹配",
|
|
121
|
+
"right": "// para-ui Checkbox onChange 签名\nonChange={(e: React.MouseEvent<HTMLLabelElement>, checked: boolean) => setChecked(checked)}"
|
|
122
|
+
},
|
|
123
|
+
{
|
|
124
|
+
"issue": "defaultChecked 只在 mount 时读取一次(useEffect 依赖 []),后续引用变化不重新初始化",
|
|
125
|
+
"wrong": "// 期望 defaultChecked 动态更新\n<Checkbox defaultChecked={serverValue} /> // serverValue 异步返回后不会重新初始化",
|
|
126
|
+
"right": "// 需要动态初始化用受控 checked + 外部 state\n<Checkbox checked={checked} onChange={(e, v) => setChecked(v)} />"
|
|
127
|
+
},
|
|
128
|
+
{
|
|
129
|
+
"issue": "disabledTooltip 类型是 TooltipProps(整个 Tooltip 的 props 对象),不是简单字符串",
|
|
130
|
+
"wrong": "<Checkbox disabled disabledTooltip='权限不足' /> // 字符串不符合 TooltipProps",
|
|
131
|
+
"right": "<Checkbox disabled disabledTooltip={{ title: '权限不足', placement: 'top' }} />"
|
|
132
|
+
}
|
|
133
|
+
],
|
|
134
|
+
"mapping": {
|
|
135
|
+
"realComponent": "Checkbox",
|
|
136
|
+
"adapter": null
|
|
137
|
+
}
|
|
138
|
+
}
|
|
@@ -0,0 +1,152 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "CheckboxGroup",
|
|
3
|
+
"category": "Data Entry",
|
|
4
|
+
"description": "复选框组,管理一组 Checkbox,支持泛型约束选中值类型。**支持泛型**:`<CheckboxGroup<'apple' | 'banana'>>` 让 value / defaultValue / onChange 入参类型推断为业务字面量;默认 `T extends string | number = string | number`",
|
|
5
|
+
"semantic": {
|
|
6
|
+
"intent": [
|
|
7
|
+
"多选",
|
|
8
|
+
"批量选择",
|
|
9
|
+
"权限配置"
|
|
10
|
+
],
|
|
11
|
+
"useCases": [
|
|
12
|
+
"权限选择",
|
|
13
|
+
"标签选择",
|
|
14
|
+
"多选过滤"
|
|
15
|
+
],
|
|
16
|
+
"riskLevel": "low"
|
|
17
|
+
},
|
|
18
|
+
"variants": {
|
|
19
|
+
"default": {
|
|
20
|
+
"meaning": "默认横向布局"
|
|
21
|
+
},
|
|
22
|
+
"column": {
|
|
23
|
+
"meaning": "纵向布局(row=false)"
|
|
24
|
+
}
|
|
25
|
+
},
|
|
26
|
+
"states": [
|
|
27
|
+
"default",
|
|
28
|
+
"disabled",
|
|
29
|
+
"error"
|
|
30
|
+
],
|
|
31
|
+
"idealProps": {
|
|
32
|
+
"list": {
|
|
33
|
+
"type": "CheckboxListProps[] | CheckboxListProps[][]",
|
|
34
|
+
"required": true,
|
|
35
|
+
"description": "选项数据;CheckboxListProps extends CheckboxProps,必须含 `name: string | number`(唯一标识,选中后 onChange 收到的 value 数组中的元素即为各项的 name)。支持二维数组实现分行布局(每个子数组为一行)"
|
|
36
|
+
},
|
|
37
|
+
"value": {
|
|
38
|
+
"type": "T[]",
|
|
39
|
+
"description": "受控选中值数组;与 onChange 配合实现受控模式;不传时退化为非受控(由 defaultValue 初始化)"
|
|
40
|
+
},
|
|
41
|
+
"defaultValue": {
|
|
42
|
+
"type": "T[]",
|
|
43
|
+
"description": "非受控初始值(仅挂载时生效一次);src/CheckboxGroup/index.tsx:73-75 useEffect 实证:defaultValue 变化后不重新同步"
|
|
44
|
+
},
|
|
45
|
+
"onChange": {
|
|
46
|
+
"type": "(val: T[]) => void",
|
|
47
|
+
"description": "选中值变化回调;val 为当前全部选中项的 name 值数组;src/CheckboxGroup/index.tsx:98 实证,无 event 参数"
|
|
48
|
+
},
|
|
49
|
+
"id": {
|
|
50
|
+
"type": "string",
|
|
51
|
+
"default": "name",
|
|
52
|
+
"description": "**指定读取 list 子项哪个字段作为唯一标识**(src/CheckboxGroup/index.tsx:65 默认值实证);大多数情况无需修改,除非 list 每项用 id/key 等字段作为唯一标识"
|
|
53
|
+
},
|
|
54
|
+
"row": {
|
|
55
|
+
"type": "boolean",
|
|
56
|
+
"default": true,
|
|
57
|
+
"description": "布局方式;true=横向(checkbox 并排),false=纵向(每项独占一行)"
|
|
58
|
+
},
|
|
59
|
+
"disabled": {
|
|
60
|
+
"type": "boolean",
|
|
61
|
+
"default": false,
|
|
62
|
+
"description": "全局禁用(src/CheckboxGroup/index.tsx:175 实证:`disabled={Boolean(disabled || singleItem.disabled)}`);单项也可通过 CheckboxListProps.disabled 独立禁用"
|
|
63
|
+
},
|
|
64
|
+
"size": {
|
|
65
|
+
"type": "enum",
|
|
66
|
+
"values": ["small", "medium", "large"],
|
|
67
|
+
"default": "large",
|
|
68
|
+
"description": "尺寸;透传给内部每个 Checkbox"
|
|
69
|
+
},
|
|
70
|
+
"label": {
|
|
71
|
+
"type": "ReactNode",
|
|
72
|
+
"description": "组件标题(展示在 checkbox 列表上方)"
|
|
73
|
+
},
|
|
74
|
+
"required": {
|
|
75
|
+
"type": "boolean",
|
|
76
|
+
"description": "是否显示必填标记(在 label 旁展示星号)"
|
|
77
|
+
},
|
|
78
|
+
"error": {
|
|
79
|
+
"type": "boolean",
|
|
80
|
+
"description": "错误状态(来自 HelperTextDetailProps,配合 helperText 展示错误文案)"
|
|
81
|
+
},
|
|
82
|
+
"helperText": {
|
|
83
|
+
"type": "string",
|
|
84
|
+
"description": "辅助文本(error=true 时显示为红色错误文案)"
|
|
85
|
+
},
|
|
86
|
+
"spacing": {
|
|
87
|
+
"type": "string",
|
|
88
|
+
"default": "32px",
|
|
89
|
+
"description": "横向布局(row=true)时各 checkbox 间距"
|
|
90
|
+
},
|
|
91
|
+
"itemWidth": {
|
|
92
|
+
"type": "string",
|
|
93
|
+
"description": "每个 checkbox 的宽度"
|
|
94
|
+
},
|
|
95
|
+
"className": {
|
|
96
|
+
"type": "string",
|
|
97
|
+
"description": "根容器自定义类名"
|
|
98
|
+
},
|
|
99
|
+
"style": {
|
|
100
|
+
"type": "React.CSSProperties",
|
|
101
|
+
"description": "根容器自定义样式"
|
|
102
|
+
}
|
|
103
|
+
},
|
|
104
|
+
"do": [
|
|
105
|
+
"list 每项必须包含 `name` 字段(默认 id='name'),值将作为 onChange 返回数组中的元素;若用其他字段,需显式传 id 配置",
|
|
106
|
+
"受控模式:同时传 value + onChange,父组件维护 state;非受控模式:只传 defaultValue,不传 value",
|
|
107
|
+
"需要全选/反选功能:父组件维护 value state,全选时 onChange([all names]),反选时 onChange([])",
|
|
108
|
+
"禁用单项:在 list 子项里传 `disabled: true`;全局禁用:在 CheckboxGroup 顶层传 `disabled`"
|
|
109
|
+
],
|
|
110
|
+
"dont": [
|
|
111
|
+
"list 子项漏写 name 字段——CheckboxGroup 内部靠 list[i][id] 取值,缺失 name 导致 onChange 返回 undefined 元素",
|
|
112
|
+
"选项超多(>20项)不分行——改用二维数组 list(每个子数组为一行)或搭配 Select 多选",
|
|
113
|
+
"混用受控(value)和非受控(defaultValue)——value 存在时 defaultValue 被忽略,只用一种模式"
|
|
114
|
+
],
|
|
115
|
+
"events": {
|
|
116
|
+
"onChange": {
|
|
117
|
+
"signature": "(val: T[]) => void",
|
|
118
|
+
"asyncSupported": false,
|
|
119
|
+
"examples": [
|
|
120
|
+
"基本受控:const [selected, setSelected] = useState<string[]>([]); <CheckboxGroup value={selected} onChange={setSelected} />",
|
|
121
|
+
"onChange 回调返回当前全部选中项的 name 值数组,点击已选项则从数组中移除,点击未选项则追加",
|
|
122
|
+
"泛型约束:<CheckboxGroup<'read' | 'write'> value={perms} onChange={setPerms} /> 让 TS 精确推断 val 类型"
|
|
123
|
+
],
|
|
124
|
+
"commonMistakes": [
|
|
125
|
+
"假设 onChange 签名类似原生 checkbox 的 (e: ChangeEvent) => void——实际是 (val: T[]) => void,无 event 参数",
|
|
126
|
+
"假设 onChange 返回单个被点击的项——实际是全部选中项的数组",
|
|
127
|
+
"传了 value 但不传 onChange,导致 CheckboxGroup 变成只读(受控模式下 value 被外部锁死)"
|
|
128
|
+
]
|
|
129
|
+
}
|
|
130
|
+
},
|
|
131
|
+
"typescriptPitfalls": [
|
|
132
|
+
{
|
|
133
|
+
"issue": "list 子项缺少 name 字段时 TS 不报错但运行时 onChange 返回 undefined",
|
|
134
|
+
"wrong": "list={[{ label: '苹果', value: 'apple' }]} // value 字段不是 id,name 字段缺失",
|
|
135
|
+
"right": "list={[{ label: '苹果', name: 'apple' }]} // 默认 id='name',用 name 字段作为唯一标识"
|
|
136
|
+
},
|
|
137
|
+
{
|
|
138
|
+
"issue": "泛型参数缺失时 value/defaultValue 推断为 (string|number)[] 失去精确类型",
|
|
139
|
+
"wrong": "// 没有泛型,无法约束 val 只能是 'read' | 'write'\n<CheckboxGroup value={perms} onChange={(val) => setPerms(val)} />",
|
|
140
|
+
"right": "<CheckboxGroup<'read' | 'write'> value={perms} onChange={(val) => setPerms(val)} /> // val 类型精确推断为 ('read' | 'write')[]"
|
|
141
|
+
},
|
|
142
|
+
{
|
|
143
|
+
"issue": "defaultValue 只在组件挂载时读取一次,后续修改不会触发重新同步",
|
|
144
|
+
"wrong": "// 期望通过修改 defaultValue 重置 checkboxGroup\n<CheckboxGroup defaultValue={initialValues} /> // 后续 initialValues 变化不会更新 UI",
|
|
145
|
+
"right": "// 需要外部重置时改用受控模式:value + onChange + 父组件 setState\n<CheckboxGroup value={selectedValues} onChange={setSelectedValues} />"
|
|
146
|
+
}
|
|
147
|
+
],
|
|
148
|
+
"mapping": {
|
|
149
|
+
"realComponent": "CheckboxGroup",
|
|
150
|
+
"adapter": null
|
|
151
|
+
}
|
|
152
|
+
}
|