@para-ui/core 5.0.0-beta.12 → 5.0.0-beta.13
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/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/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 +23 -22
- 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 +73 -68
- package/es/ComboSelect/interface.d.ts +2 -2
- 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.js +10 -10
- package/es/DatePicker/generatePicker/generateSinglePicker.js +1 -1
- 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/component.json +277 -0
- package/es/Modal/index.d.ts +85 -5
- package/es/Modal/index.js +159 -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 +58 -53
- 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/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 +2 -2
- 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.js +1 -1
- package/lib/DatePicker/generatePicker/generateSinglePicker.js +1 -1
- 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/component.json +277 -0
- package/lib/Modal/index.d.ts +85 -5
- 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 +9 -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,142 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "Carousel",
|
|
3
|
+
"category": "Data Display",
|
|
4
|
+
"description": "走马灯,用于一组图片或卡片的轮播",
|
|
5
|
+
"semantic": {
|
|
6
|
+
"intent": [
|
|
7
|
+
"轮播展示",
|
|
8
|
+
"吸引注意",
|
|
9
|
+
"节省空间"
|
|
10
|
+
],
|
|
11
|
+
"useCases": [
|
|
12
|
+
"首页 Banner",
|
|
13
|
+
"产品展示",
|
|
14
|
+
"图片画廊"
|
|
15
|
+
],
|
|
16
|
+
"riskLevel": "low"
|
|
17
|
+
},
|
|
18
|
+
"variants": {
|
|
19
|
+
"default": {
|
|
20
|
+
"meaning": "默认轮播"
|
|
21
|
+
}
|
|
22
|
+
},
|
|
23
|
+
"states": [
|
|
24
|
+
"active"
|
|
25
|
+
],
|
|
26
|
+
"idealProps": {
|
|
27
|
+
"autoplay": {
|
|
28
|
+
"type": "boolean",
|
|
29
|
+
"default": false,
|
|
30
|
+
"description": "是否自动切换"
|
|
31
|
+
},
|
|
32
|
+
"autoplaySpeed": {
|
|
33
|
+
"type": "number",
|
|
34
|
+
"default": 3000,
|
|
35
|
+
"description": "自动播放间隔(ms),需配合 autoplay=true 使用",
|
|
36
|
+
"required": false
|
|
37
|
+
},
|
|
38
|
+
"infinite": {
|
|
39
|
+
"type": "boolean",
|
|
40
|
+
"default": true,
|
|
41
|
+
"description": "无限循环;设为 false 时到最后一张停止",
|
|
42
|
+
"required": false
|
|
43
|
+
},
|
|
44
|
+
"slidesToShow": {
|
|
45
|
+
"type": "number",
|
|
46
|
+
"default": 1,
|
|
47
|
+
"description": "一帧显示幻灯片数",
|
|
48
|
+
"required": false
|
|
49
|
+
},
|
|
50
|
+
"slidesToScroll": {
|
|
51
|
+
"type": "number",
|
|
52
|
+
"default": 1,
|
|
53
|
+
"description": "一次滚动幻灯片数",
|
|
54
|
+
"required": false
|
|
55
|
+
},
|
|
56
|
+
"arrows": {
|
|
57
|
+
"type": "boolean",
|
|
58
|
+
"default": false,
|
|
59
|
+
"description": "是否显示前后箭头",
|
|
60
|
+
"required": false
|
|
61
|
+
},
|
|
62
|
+
"dotPosition": {
|
|
63
|
+
"type": "enum",
|
|
64
|
+
"values": ["top", "bottom", "left", "right"],
|
|
65
|
+
"default": "bottom",
|
|
66
|
+
"description": "指示点位置",
|
|
67
|
+
"required": false
|
|
68
|
+
},
|
|
69
|
+
"pauseOnHover": {
|
|
70
|
+
"type": "boolean",
|
|
71
|
+
"default": true,
|
|
72
|
+
"description": "悬停时暂停自动播放",
|
|
73
|
+
"required": false
|
|
74
|
+
},
|
|
75
|
+
"dots": {
|
|
76
|
+
"type": "boolean",
|
|
77
|
+
"default": true,
|
|
78
|
+
"description": "是否显示指示点"
|
|
79
|
+
},
|
|
80
|
+
"effect": {
|
|
81
|
+
"type": "enum",
|
|
82
|
+
"values": [
|
|
83
|
+
"scrollx",
|
|
84
|
+
"fade"
|
|
85
|
+
],
|
|
86
|
+
"default": "scrollx",
|
|
87
|
+
"description": "动画效果"
|
|
88
|
+
},
|
|
89
|
+
"afterChange": {
|
|
90
|
+
"type": "function",
|
|
91
|
+
"signature": "(current: number) => void",
|
|
92
|
+
"description": "切换面板的回调"
|
|
93
|
+
}
|
|
94
|
+
},
|
|
95
|
+
"do": [
|
|
96
|
+
"使用高质量的图片",
|
|
97
|
+
"限制 Carousel 的数量(<5)以保证性能",
|
|
98
|
+
"需要命令式控制(goTo/next/prev)时通过 forwardRef + useRef<CarouselRef> 获取实例方法"
|
|
99
|
+
],
|
|
100
|
+
"dont": [
|
|
101
|
+
"在移动端使用非触摸友好的 Carousel",
|
|
102
|
+
"自动播放速度过快 (<2s) 导致用户无法看清",
|
|
103
|
+
"不要传 prevArrow / nextArrow prop——这两个 prop 已从 CarouselProps 中移除(TypeScript 会报错);自定义箭头外观请通过 CSS 覆盖 `.slick-prev` / `.slick-next` 样式"
|
|
104
|
+
],
|
|
105
|
+
"events": {
|
|
106
|
+
"afterChange": {
|
|
107
|
+
"signature": "(current: number) => void",
|
|
108
|
+
"asyncSupported": false,
|
|
109
|
+
"examples": [
|
|
110
|
+
"切换后同步外部状态:afterChange={(index) => setActiveIndex(index)}",
|
|
111
|
+
"切换后更新指示器:afterChange={(index) => setTitle(slides[index].title)}",
|
|
112
|
+
"切换后埋点:afterChange={(index) => analytics.track('carousel_change', { slide: index })}"
|
|
113
|
+
],
|
|
114
|
+
"commonMistakes": [
|
|
115
|
+
"期望 beforeChange 回调——CarouselProps 只有 afterChange,beforeChange 来自 react-slick Settings 但未在 CarouselProps 类型覆盖中暴露",
|
|
116
|
+
"期望 afterChange 在自动播放切换时也触发——autoplay 切换同样会触发 afterChange",
|
|
117
|
+
"current 参数是 0-based 索引,从 infinite=true 模式下 current 可能超过 children 数量(react-slick 克隆节点)"
|
|
118
|
+
]
|
|
119
|
+
}
|
|
120
|
+
},
|
|
121
|
+
"typescriptPitfalls": [
|
|
122
|
+
{
|
|
123
|
+
"issue": "prevArrow 和 nextArrow 已从 CarouselProps 中通过 Omit 移除——传入会有 TS 报错",
|
|
124
|
+
"wrong": "<Carousel prevArrow={<MyPrev />} nextArrow={<MyNext />} /> // TS: Omit<Settings, '...prevArrow | nextArrow'>",
|
|
125
|
+
"right": "// 通过 CSS 覆盖箭头样式\n// .paraui-v4-carousel .slick-prev { ... }\n// .paraui-v4-carousel .slick-next { ... }"
|
|
126
|
+
},
|
|
127
|
+
{
|
|
128
|
+
"issue": "CarouselRef 的命令式方法(goTo/next/prev/play/pause)需要通过 forwardRef 接收,useRef 泛型必须指定",
|
|
129
|
+
"wrong": "const ref = useRef(null);\n// ref.current.goTo(2); // TS: null 上不存在 goTo",
|
|
130
|
+
"right": "import type { CarouselRef } from '@para-ui/core/Carousel';\nconst ref = useRef<CarouselRef>(null);\n// ref.current?.goTo(2);"
|
|
131
|
+
},
|
|
132
|
+
{
|
|
133
|
+
"issue": "effect prop 值只有 'scrollx' | 'fade'——不是 react-slick 原生的 fade boolean,内部做了映射",
|
|
134
|
+
"wrong": "<Carousel fade={true} /> // fade 是 react-slick 原生字段,CarouselProps 用 effect 替代",
|
|
135
|
+
"right": "<Carousel effect='fade' /> // src 内部将 effect='fade' 映射为 newProps.fade=true"
|
|
136
|
+
}
|
|
137
|
+
],
|
|
138
|
+
"mapping": {
|
|
139
|
+
"realComponent": "Carousel",
|
|
140
|
+
"adapter": null
|
|
141
|
+
}
|
|
142
|
+
}
|
package/es/Carousel/index.d.ts
CHANGED
|
@@ -2,7 +2,7 @@ import { default as React } from 'react';
|
|
|
2
2
|
import { Settings } from 'react-slick';
|
|
3
3
|
export type CarouselEffect = 'scrollx' | 'fade';
|
|
4
4
|
export type DotPosition = 'top' | 'bottom' | 'left' | 'right';
|
|
5
|
-
export interface CarouselProps extends Omit<Settings, 'dots' | 'dotsClass'> {
|
|
5
|
+
export interface CarouselProps extends Omit<Settings, 'dots' | 'dotsClass' | 'prevArrow' | 'nextArrow'> {
|
|
6
6
|
/** 动画效果函数 */
|
|
7
7
|
effect?: CarouselEffect;
|
|
8
8
|
/** style */
|
|
@@ -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
|
+
}
|