@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,156 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "Title",
|
|
3
|
+
"category": "Data Display",
|
|
4
|
+
"description": "区块标题组件,支持图标、副标题、帮助提示、链接和可折叠内容区",
|
|
5
|
+
"semantic": {
|
|
6
|
+
"intent": [
|
|
7
|
+
"标题展示",
|
|
8
|
+
"区块标识",
|
|
9
|
+
"内容折叠"
|
|
10
|
+
],
|
|
11
|
+
"useCases": [
|
|
12
|
+
"卡片标题",
|
|
13
|
+
"模块标题",
|
|
14
|
+
"页面标题",
|
|
15
|
+
"带折叠的配置区"
|
|
16
|
+
],
|
|
17
|
+
"riskLevel": "low"
|
|
18
|
+
},
|
|
19
|
+
"variants": {
|
|
20
|
+
"default": {
|
|
21
|
+
"meaning": "默认无图标样式(显示左侧竖线 ink 装饰)"
|
|
22
|
+
},
|
|
23
|
+
"withIcon": {
|
|
24
|
+
"meaning": "带图标样式(传 icon prop 后替换左侧竖线,size 生效)"
|
|
25
|
+
},
|
|
26
|
+
"collapsible": {
|
|
27
|
+
"meaning": "可折叠样式(传 collapseContent 或 children 后变为可展开/折叠区)"
|
|
28
|
+
}
|
|
29
|
+
},
|
|
30
|
+
"states": [
|
|
31
|
+
"default",
|
|
32
|
+
"collapsed",
|
|
33
|
+
"expanded"
|
|
34
|
+
],
|
|
35
|
+
"idealProps": {
|
|
36
|
+
"title": {
|
|
37
|
+
"type": "ReactNode",
|
|
38
|
+
"description": "主标题文字,必须传",
|
|
39
|
+
"required": true
|
|
40
|
+
},
|
|
41
|
+
"subTitle": {
|
|
42
|
+
"type": "ReactNode",
|
|
43
|
+
"description": "副标题(显示在主标题右侧,支持超长 AutoTips 截断)"
|
|
44
|
+
},
|
|
45
|
+
"icon": {
|
|
46
|
+
"type": "ReactNode",
|
|
47
|
+
"description": "自定义图标(显示在标题左侧,替换默认竖线装饰;传入时 size prop 生效)"
|
|
48
|
+
},
|
|
49
|
+
"collapseContent": {
|
|
50
|
+
"type": "ReactNode",
|
|
51
|
+
"description": "可折叠内容区,传入后标题右侧显示展开/折叠箭头;与 children 二选一(children 优先级高于 collapseContent)"
|
|
52
|
+
},
|
|
53
|
+
"titleTooltip": {
|
|
54
|
+
"type": "ReactNode",
|
|
55
|
+
"description": "标题旁的帮助提示内容,显示 ? 图标,hover 展示内容",
|
|
56
|
+
"required": false
|
|
57
|
+
},
|
|
58
|
+
"titoleTooltipIcon": {
|
|
59
|
+
"type": "ReactNode",
|
|
60
|
+
"description": "⚠️ typo:prop 名是 titoleTooltipIcon(原码如此),自定义帮助提示图标节点",
|
|
61
|
+
"required": false
|
|
62
|
+
},
|
|
63
|
+
"link": {
|
|
64
|
+
"type": "{ href: string; text: ReactNode; target?: string; onClick?: React.MouseEventHandler<HTMLElement> }",
|
|
65
|
+
"description": "渲染在标题旁的链接",
|
|
66
|
+
"objectShape": {
|
|
67
|
+
"href": { "type": "string", "description": "链接地址", "required": true },
|
|
68
|
+
"text": { "type": "ReactNode", "description": "链接文字", "required": true },
|
|
69
|
+
"target": { "type": "string", "description": "同 <a> target 属性,如 '_blank'", "required": false },
|
|
70
|
+
"onClick": { "type": "React.MouseEventHandler<HTMLElement>", "description": "点击链接回调", "required": false }
|
|
71
|
+
},
|
|
72
|
+
"required": false
|
|
73
|
+
},
|
|
74
|
+
"defaultCollapse": {
|
|
75
|
+
"type": "boolean",
|
|
76
|
+
"description": "折叠内容默认是否展开;⚠️ 只有传了 collapseContent 或 children 时才有效",
|
|
77
|
+
"default": false,
|
|
78
|
+
"required": false
|
|
79
|
+
},
|
|
80
|
+
"placement": {
|
|
81
|
+
"type": "enum",
|
|
82
|
+
"values": [
|
|
83
|
+
"bottom-end", "bottom-start", "bottom",
|
|
84
|
+
"left-end", "left-start", "left",
|
|
85
|
+
"right-end", "right-start", "right",
|
|
86
|
+
"top-end", "top-start", "top"
|
|
87
|
+
],
|
|
88
|
+
"description": "帮助提示方向(titleTooltip 的 Tooltip 弹出方向)",
|
|
89
|
+
"required": false
|
|
90
|
+
},
|
|
91
|
+
"arrow": {
|
|
92
|
+
"type": "boolean",
|
|
93
|
+
"description": "帮助提示 Tooltip 是否显示箭头",
|
|
94
|
+
"required": false
|
|
95
|
+
},
|
|
96
|
+
"size": {
|
|
97
|
+
"type": "enum",
|
|
98
|
+
"values": ["small", "medium", "large"],
|
|
99
|
+
"description": "尺寸,仅在传了 icon 时有效(控制图标容器大小)",
|
|
100
|
+
"default": "medium",
|
|
101
|
+
"required": false
|
|
102
|
+
},
|
|
103
|
+
"collapseClassName": {
|
|
104
|
+
"type": "string",
|
|
105
|
+
"description": "折叠容器自定义 className",
|
|
106
|
+
"required": false
|
|
107
|
+
}
|
|
108
|
+
},
|
|
109
|
+
"do": [
|
|
110
|
+
"保持标题文字简洁,复杂说明放入 titleTooltip",
|
|
111
|
+
"有折叠内容区时传 collapseContent 或 children 而非手动实现展开逻辑",
|
|
112
|
+
"defaultCollapse=true 可让初始态展开(需同时传 collapseContent 或 children)",
|
|
113
|
+
"link 对象的 target 默认 '_blank',如需当前页跳转传 target='_self'"
|
|
114
|
+
],
|
|
115
|
+
"dont": [
|
|
116
|
+
"不要同时传 collapseContent 和 children——组件优先渲染 children(src/Title/index.tsx:164 `children || collapseContent`)",
|
|
117
|
+
"不要把 size 当通用字体大小控制——size 仅在 icon 存在时控制图标容器,不影响文字大小",
|
|
118
|
+
"标题文字过长——subTitle 有 AutoTips 截断,但 title 本身不截断,应保持简洁",
|
|
119
|
+
"层级混乱——嵌套 Title 时保持标题层级与视觉层级一致"
|
|
120
|
+
],
|
|
121
|
+
"events": {
|
|
122
|
+
"link.onClick": {
|
|
123
|
+
"signature": "React.MouseEventHandler<HTMLElement>",
|
|
124
|
+
"asyncSupported": false,
|
|
125
|
+
"examples": [
|
|
126
|
+
"link={{ href: '#', text: '查看详情', onClick: (e) => { e.preventDefault(); navigate('/detail'); } }}",
|
|
127
|
+
"点击链接后进行埋点统计:onClick: (e) => { track('title_link_click'); }"
|
|
128
|
+
],
|
|
129
|
+
"commonMistakes": [
|
|
130
|
+
"既传 href 又在 onClick 中做跳转——会导致跳转两次,需在 onClick 中 e.preventDefault()",
|
|
131
|
+
"link.target 不传默认 '_blank',如需当前页跳转忘记传 target='_self'"
|
|
132
|
+
]
|
|
133
|
+
}
|
|
134
|
+
},
|
|
135
|
+
"typescriptPitfalls": [
|
|
136
|
+
{
|
|
137
|
+
"issue": "prop 名 titoleTooltipIcon 有 typo(不是 titleTooltipIcon)",
|
|
138
|
+
"wrong": "<Title title='设置' titleTooltip='配置说明' titleTooltipIcon={<HelpIcon />} />",
|
|
139
|
+
"right": "<Title title='设置' titleTooltip='配置说明' titoleTooltipIcon={<HelpIcon />} /> // 注意 titole 而非 title"
|
|
140
|
+
},
|
|
141
|
+
{
|
|
142
|
+
"issue": "defaultCollapse 没传 collapseContent/children 时无效",
|
|
143
|
+
"wrong": "// 只传 defaultCollapse 没传内容\n<Title title='配置' defaultCollapse={true} /> // 不会显示折叠箭头",
|
|
144
|
+
"right": "<Title title='配置' defaultCollapse={true} collapseContent={<Form />} />"
|
|
145
|
+
},
|
|
146
|
+
{
|
|
147
|
+
"issue": "children 和 collapseContent 同时传时 children 优先,collapseContent 被忽略",
|
|
148
|
+
"wrong": "<Title title='配置' collapseContent={<A />}><B /></Title> // A 组件不会渲染",
|
|
149
|
+
"right": "// 只传其中一个\n<Title title='配置' collapseContent={<A />} /> // 或 <Title title='配置'><B /></Title>"
|
|
150
|
+
}
|
|
151
|
+
],
|
|
152
|
+
"mapping": {
|
|
153
|
+
"realComponent": "Title",
|
|
154
|
+
"adapter": null
|
|
155
|
+
}
|
|
156
|
+
}
|
|
@@ -0,0 +1,153 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "ToggleButton",
|
|
3
|
+
"category": "Data Entry",
|
|
4
|
+
"description": "切换按钮,用于单个选中/取消选中操作;ToggleButtonGroup 用于多按钮单选/多选场景",
|
|
5
|
+
"semantic": {
|
|
6
|
+
"intent": [
|
|
7
|
+
"切换选择",
|
|
8
|
+
"开关",
|
|
9
|
+
"视图模式切换"
|
|
10
|
+
],
|
|
11
|
+
"useCases": [
|
|
12
|
+
"视图切换(列表/网格)",
|
|
13
|
+
"模式选择",
|
|
14
|
+
"选项卡"
|
|
15
|
+
],
|
|
16
|
+
"riskLevel": "low"
|
|
17
|
+
},
|
|
18
|
+
"variants": {
|
|
19
|
+
"outlined": {
|
|
20
|
+
"meaning": "边框样式(默认),有边框的描边按钮"
|
|
21
|
+
},
|
|
22
|
+
"text": {
|
|
23
|
+
"meaning": "文字按钮(无边框),ToggleButtonGroup 中 type='text' 时自动 exclusive=true"
|
|
24
|
+
},
|
|
25
|
+
"icon": {
|
|
26
|
+
"meaning": "纯图标按钮,使用 Button.IconButton 渲染"
|
|
27
|
+
}
|
|
28
|
+
},
|
|
29
|
+
"states": [
|
|
30
|
+
"selected",
|
|
31
|
+
"unselected",
|
|
32
|
+
"disabled"
|
|
33
|
+
],
|
|
34
|
+
"idealProps": {
|
|
35
|
+
"value": {
|
|
36
|
+
"type": "T",
|
|
37
|
+
"description": "按钮绑定的值,点击时通过 onClick 第二参回传;ToggleButtonGroup 通过对比 value 与 group.value 决定 selected 状态"
|
|
38
|
+
},
|
|
39
|
+
"selected": {
|
|
40
|
+
"type": "boolean",
|
|
41
|
+
"default": false,
|
|
42
|
+
"description": "是否选中(单独使用时受控);在 ToggleButtonGroup 内部由 Group 自动计算,不需要手动传"
|
|
43
|
+
},
|
|
44
|
+
"disabled": {
|
|
45
|
+
"type": "boolean",
|
|
46
|
+
"default": false,
|
|
47
|
+
"description": "不可用状态,阻止点击触发 onClick",
|
|
48
|
+
"required": false
|
|
49
|
+
},
|
|
50
|
+
"width": {
|
|
51
|
+
"type": "number | string",
|
|
52
|
+
"description": "按钮宽度",
|
|
53
|
+
"required": false
|
|
54
|
+
},
|
|
55
|
+
"onClick": {
|
|
56
|
+
"type": "function",
|
|
57
|
+
"signature": "(event: React.MouseEvent, value: T) => void",
|
|
58
|
+
"description": "点击回调;⚠️ 第二参 value 是该按钮绑定的 value prop,不是 event.target.value;ToggleButtonGroup 内部会拦截此 prop 替换为 group 逻辑",
|
|
59
|
+
"required": false
|
|
60
|
+
},
|
|
61
|
+
"type": {
|
|
62
|
+
"type": "enum",
|
|
63
|
+
"values": ["text", "outlined", "icon"],
|
|
64
|
+
"default": "outlined",
|
|
65
|
+
"description": "按钮类型:text=文字按钮(无边框)/ outlined=描边按钮(默认)/ icon=纯图标按钮"
|
|
66
|
+
},
|
|
67
|
+
"toolTipTitle": {
|
|
68
|
+
"type": "ReactNode",
|
|
69
|
+
"description": "按钮提示文字(hover Tooltip),透传给内部 Button/IconButton",
|
|
70
|
+
"required": false
|
|
71
|
+
},
|
|
72
|
+
"exclusive": {
|
|
73
|
+
"type": "boolean",
|
|
74
|
+
"description": "是否单选语义(仅在 ToggleButtonGroup 场景使用;单独使用 ToggleButton 时此 prop 只影响 outlined 样式类名区分)",
|
|
75
|
+
"required": false
|
|
76
|
+
}
|
|
77
|
+
},
|
|
78
|
+
"subComponents": {
|
|
79
|
+
"ToggleButtonGroup": {
|
|
80
|
+
"description": "切换按钮组,管理多个 ToggleButton 的选中状态(单选/多选)",
|
|
81
|
+
"props": {
|
|
82
|
+
"data": { "type": "ToggleButtonItemProps<T>[]", "description": "按钮组数据源,每项 { label, value, icon?, selected?, disabled?, toolTipTitle? }" },
|
|
83
|
+
"value": { "type": "T | T[]", "description": "当前选中值;exclusive=true 时为单值 T,多选时为 T[]" },
|
|
84
|
+
"exclusive": { "type": "boolean", "default": false, "description": "true=单选模式(选中新项后旧项取消),false=多选模式;⚠️ type='text' 时默认强制 exclusive=true(src/ToggleButton/ToggleButtonGroup.tsx:62)" },
|
|
85
|
+
"toggleable": { "type": "boolean", "default": true, "description": "exclusive=true 时是否允许取消选中(再次点击已选项恢复未选状态);toggleable=false 时选中后不能取消" },
|
|
86
|
+
"onChange": { "type": "(event: React.MouseEvent, value: T | T[] | null) => void", "description": "选中值变化回调;单选取消选中时 value=null(toggleable=true)" },
|
|
87
|
+
"type": { "type": "enum", "values": ["text", "outlined", "icon"], "default": "outlined", "description": "统一所有子按钮的 type" }
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
},
|
|
91
|
+
"do": [
|
|
92
|
+
"单选场景使用 ToggleButtonGroup + exclusive=true(或 type='text')",
|
|
93
|
+
"多选场景使用 ToggleButtonGroup + value 传数组 + onChange 更新数组",
|
|
94
|
+
"ToggleButtonGroup 中 data 每项的 value 类型需一致(统一泛型 T)",
|
|
95
|
+
"type='icon' 时每项 data 需传 icon 字段,label 依然可传(作为 tooltip)"
|
|
96
|
+
],
|
|
97
|
+
"dont": [
|
|
98
|
+
"选项超过 6 个时避免 ToggleButton 横排——改用 Select 或 RadioGroup",
|
|
99
|
+
"ToggleButtonGroup 内不要手动传每个 ToggleButton 的 selected——由 Group 自动计算",
|
|
100
|
+
"不要把 onClick 用于表单提交逻辑——ToggleButton 是展示状态切换的,提交应在父层处理",
|
|
101
|
+
"不要忽略 exclusive=false(多选)时 value 是数组——onChange 的第二参也是 T[]"
|
|
102
|
+
],
|
|
103
|
+
"events": {
|
|
104
|
+
"onClick": {
|
|
105
|
+
"signature": "(event: React.MouseEvent, value: T) => void",
|
|
106
|
+
"asyncSupported": false,
|
|
107
|
+
"examples": [
|
|
108
|
+
"单独使用 ToggleButton:onClick={(e, val) => setSelected(!selected)}",
|
|
109
|
+
"在 ToggleButtonGroup 内部 onClick 被 Group 拦截,改用 Group 的 onChange",
|
|
110
|
+
"value 是绑定的 value prop 值(不是 event.target.value):onClick={(e, val) => console.log(val)}"
|
|
111
|
+
],
|
|
112
|
+
"commonMistakes": [
|
|
113
|
+
"假设 onClick 第二参是 event.target.value(字符串)——实际是 ToggleButton 的 value prop 值",
|
|
114
|
+
"在 ToggleButtonGroup 中给子 ToggleButton 传 onClick——Group 内部会覆盖此 prop",
|
|
115
|
+
"忘记传 selected prop 时单独使用——不传 selected 按钮不显示选中态(默认 false)"
|
|
116
|
+
]
|
|
117
|
+
},
|
|
118
|
+
"onChange": {
|
|
119
|
+
"signature": "(event: React.MouseEvent, value: T | T[] | null) => void",
|
|
120
|
+
"asyncSupported": false,
|
|
121
|
+
"examples": [
|
|
122
|
+
"单选模式(exclusive=true):onChange={(e, val) => setValue(val as T)}",
|
|
123
|
+
"多选模式:onChange={(e, val) => setValue(val as T[])}",
|
|
124
|
+
"toggleable=true 且单选时取消选中:value=null,需要 if (val !== null) 判断"
|
|
125
|
+
],
|
|
126
|
+
"commonMistakes": [
|
|
127
|
+
"单选模式下不处理 value=null——toggleable=true 时点击已选项会传 null",
|
|
128
|
+
"多选模式下把 value 当 T 而非 T[]——exclusive=false 时 onChange 的 value 是 T[]"
|
|
129
|
+
]
|
|
130
|
+
}
|
|
131
|
+
},
|
|
132
|
+
"typescriptPitfalls": [
|
|
133
|
+
{
|
|
134
|
+
"issue": "ToggleButtonGroup 泛型推断问题——value 和 data[].value 类型需一致",
|
|
135
|
+
"wrong": "// data 的 value 是 string,但 Group.value 传了 number\n<ToggleButtonGroup<string> data={[{label:'A', value:'a'}]} value={1} />",
|
|
136
|
+
"right": "<ToggleButtonGroup<string> data={[{label:'A', value:'a'}]} value={'a'} onChange={(e,v) => setValue(v as string)} />"
|
|
137
|
+
},
|
|
138
|
+
{
|
|
139
|
+
"issue": "多选模式下 onChange value 类型是 T | T[] | null,需要根据 exclusive 断言",
|
|
140
|
+
"wrong": "// exclusive=false 但当作单值处理\nonChange={(e, val) => setValue(val as string)} // val 实际是 string[]",
|
|
141
|
+
"right": "// exclusive=false 多选\nonChange={(e, val) => setValue(val as string[])} // 多选时是数组"
|
|
142
|
+
},
|
|
143
|
+
{
|
|
144
|
+
"issue": "type='text' 的 ToggleButtonGroup 默认强制 exclusive=true(src 实证)",
|
|
145
|
+
"wrong": "// 期望 type='text' + exclusive=false 实现多选文字按钮\n<ToggleButtonGroup type='text' exclusive={false} /> // exclusive 被内部改为 true",
|
|
146
|
+
"right": "// type='text' 固定单选,多选文字按钮改用 type='outlined' + exclusive={false}"
|
|
147
|
+
}
|
|
148
|
+
],
|
|
149
|
+
"mapping": {
|
|
150
|
+
"realComponent": "ToggleButton",
|
|
151
|
+
"adapter": null
|
|
152
|
+
}
|
|
153
|
+
}
|
|
@@ -0,0 +1,176 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "Tooltip",
|
|
3
|
+
"category": "Data Display",
|
|
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
|
+
},
|
|
23
|
+
"states": [
|
|
24
|
+
"visible",
|
|
25
|
+
"hidden"
|
|
26
|
+
],
|
|
27
|
+
"idealProps": {
|
|
28
|
+
"title": {
|
|
29
|
+
"type": "string | ReactNode",
|
|
30
|
+
"description": "提示文字"
|
|
31
|
+
},
|
|
32
|
+
"placement": {
|
|
33
|
+
"type": "enum",
|
|
34
|
+
"values": [
|
|
35
|
+
"top",
|
|
36
|
+
"left",
|
|
37
|
+
"right",
|
|
38
|
+
"bottom",
|
|
39
|
+
"topLeft",
|
|
40
|
+
"topRight",
|
|
41
|
+
"bottomLeft",
|
|
42
|
+
"bottomRight",
|
|
43
|
+
"leftTop",
|
|
44
|
+
"leftBottom",
|
|
45
|
+
"rightTop",
|
|
46
|
+
"rightBottom"
|
|
47
|
+
],
|
|
48
|
+
"default": "topLeft",
|
|
49
|
+
"description": "气泡框位置。配合 `autoAdjustOverflow=true` 可被遮挡时自动翻转。**长 content + maxWidth 较大时优先 top/bottom 减少水平空间冲突**"
|
|
50
|
+
},
|
|
51
|
+
"maxWidth": {
|
|
52
|
+
"type": "string | number",
|
|
53
|
+
"default": 500,
|
|
54
|
+
"description": "气泡最大宽度。`number` = px;`string` = 任意合法 CSS 长度(`'200px'` / `'20rem'`)。默认 500px 适合大多数长 title 场景。R23 TT3 docs 协同补强"
|
|
55
|
+
},
|
|
56
|
+
"trigger": {
|
|
57
|
+
"type": "enum",
|
|
58
|
+
"values": [
|
|
59
|
+
"hover",
|
|
60
|
+
"focus",
|
|
61
|
+
"click",
|
|
62
|
+
"contextMenu"
|
|
63
|
+
],
|
|
64
|
+
"default": "hover",
|
|
65
|
+
"description": "触发行为。**`trigger=[]` 受控屏蔽写法已 deprecated(R23 TT2)**——请改用 `visible={false}`。老写法仍可用但 dev 环境 console.warn 一次提示迁移;v6 可能收紧类型不接受空数组,提前迁移"
|
|
66
|
+
},
|
|
67
|
+
"visible": {
|
|
68
|
+
"type": "boolean",
|
|
69
|
+
"default": "undefined",
|
|
70
|
+
"description": "**控制浮层显示(受控,src 真实主名)**。**三路语义**(R24 W-2 文档化):`true`=强制显示气泡;`false`=强制隐藏(推荐替代 deprecated `trigger=[]`);`undefined` 或不传=fallback 到 `open`,再 fallback 到 trigger 默认触发逻辑(`visible ?? open ?? trigger 自动`,src/Tooltip/index.tsx:27)。条件受控:`visible={isDisabled ? false : undefined}`"
|
|
71
|
+
},
|
|
72
|
+
"open": {
|
|
73
|
+
"type": "boolean",
|
|
74
|
+
"default": "undefined",
|
|
75
|
+
"description": "`visible` 的别名(来自 antd 风格);与 visible 二选一,不要同时传"
|
|
76
|
+
},
|
|
77
|
+
"onVisibleChange": {
|
|
78
|
+
"type": "function",
|
|
79
|
+
"signature": "(visible: boolean) => void",
|
|
80
|
+
"description": "**显示隐藏回调(src 真实事件名,非 onOpenChange)**。受控用法配合 visible/open 使用;受控 visible 时 hover/click 仍触发本回调但 Tooltip 不会自更新——必须父组件 setState。**受控 trigger 选择建议**(R24 W-2 R23 TT2 round 标注):新手引导等场景若不希望 hover 持续触发本回调改变 step,建议 `trigger='click'`;**不要用 deprecated `trigger=[]`**(R23 TT2)"
|
|
81
|
+
},
|
|
82
|
+
"defaultVisible": {
|
|
83
|
+
"type": "boolean",
|
|
84
|
+
"default": false,
|
|
85
|
+
"description": "初始是否显示气泡(非受控初始值,src/Tooltip/index.tsx:18,193 实证:`useState(props.defaultVisible!)` 作为初始 visible 状态;默认 false。传了 visible/open 受控 prop 后 defaultVisible 被覆盖)"
|
|
86
|
+
},
|
|
87
|
+
"mouseEnterDelay": {
|
|
88
|
+
"type": "number",
|
|
89
|
+
"default": 0.1,
|
|
90
|
+
"description": "鼠标移入后延迟显示的时间(单位:秒,src/Tooltip/index.tsx:190 defaultProps 实证:默认 0.1s)。⚠️ **单位是秒不是毫秒**(0.1 = 100ms)"
|
|
91
|
+
},
|
|
92
|
+
"mouseLeaveDelay": {
|
|
93
|
+
"type": "number",
|
|
94
|
+
"default": 0.1,
|
|
95
|
+
"description": "鼠标移出后延迟隐藏的时间(单位:秒,src/Tooltip/index.tsx:191 defaultProps 实证:默认 0.1s)。⚠️ **单位是秒不是毫秒**"
|
|
96
|
+
},
|
|
97
|
+
"autoAdjustOverflow": {
|
|
98
|
+
"type": "boolean",
|
|
99
|
+
"default": true,
|
|
100
|
+
"description": "气泡被遮挡时是否自动翻转位置(src/Tooltip/index.tsx:64-65,192 实证:默认 true,传入 getPlacements 生成弹出方向配置)"
|
|
101
|
+
},
|
|
102
|
+
"followCursor": {
|
|
103
|
+
"type": "boolean",
|
|
104
|
+
"default": false,
|
|
105
|
+
"description": "气泡是否跟随鼠标光标移动(src/Tooltip/index.tsx:122,171-178,194 实证:true 时强制 placement='top' 并在外层 div 监听 mousemove 动态更新 targetOffset;与精确 placement 互斥)"
|
|
106
|
+
},
|
|
107
|
+
"overlayClassName": {
|
|
108
|
+
"type": "string",
|
|
109
|
+
"description": "气泡浮层的自定义类名(src/Tooltip/index.tsx:115,135 实证:与内置 paraui-tooltip 类合并透传到 RcTooltip overlayClassName)"
|
|
110
|
+
},
|
|
111
|
+
"overlayInnerStyle": {
|
|
112
|
+
"type": "React.CSSProperties",
|
|
113
|
+
"description": "气泡内容区内联样式(src/Tooltip/index.tsx:116,164 实证:透传到 RcTooltip overlayInnerStyle,作用于内容容器而非浮层外壳)"
|
|
114
|
+
},
|
|
115
|
+
"overlayStyle": {
|
|
116
|
+
"type": "React.CSSProperties",
|
|
117
|
+
"description": "气泡浮层外壳内联样式(src/Tooltip/index.tsx:117,138-140 实证:与 maxWidth 合并后透传到 RcTooltip overlayStyle)"
|
|
118
|
+
}
|
|
119
|
+
},
|
|
120
|
+
"do": [
|
|
121
|
+
"提示内容应当精简,避免超过两行文字",
|
|
122
|
+
"用于解释图标或被截断的文本(配合 AutoTips 使用效果更佳)",
|
|
123
|
+
"受控场景用 `visible={false}` 替代已废弃的 `trigger=[]` 写法——v6 可能移除空数组支持(src/Tooltip/index.tsx:29-40 dev warn 实证)",
|
|
124
|
+
"Modal/Dialog 内的 Tooltip 建议传 getPopupContainer 指向 modal 容器,避免 overflow:hidden 截断浮层",
|
|
125
|
+
"需要叠加禁用视觉图标时用 showForbidIcon={true}(新名)而非 disabled(deprecated),两者源码同路径:`(disabled || showForbidIcon) && <Forbid />`"
|
|
126
|
+
],
|
|
127
|
+
"dont": [
|
|
128
|
+
"在 Tooltip 中放入复杂交互内容(应使用 Popover)",
|
|
129
|
+
"提示内容为空——title 为空时 Tooltip 强制不显示(src/Tooltip/index.tsx:42-45 isUntitled 判断)",
|
|
130
|
+
"不要把 `disabled` 理解为『禁用气泡显示』——src 实现是叠加红色 Forbid 图标,与 antd/mui 同名 prop 含义相反;用 `visible={false}` 来强制隐藏气泡",
|
|
131
|
+
"不要同时传 visible 和 open——两者是同义别名,优先取 visible,同时传会造成语义混淆(src:27 `props.visible ?? props.open` 实证)",
|
|
132
|
+
"不要给 mouseEnterDelay / mouseLeaveDelay 传毫秒值(如 100)——单位是秒,传 100 = 100秒延迟"
|
|
133
|
+
],
|
|
134
|
+
"events": {
|
|
135
|
+
"onVisibleChange": {
|
|
136
|
+
"signature": "(visible: boolean) => void",
|
|
137
|
+
"asyncSupported": false,
|
|
138
|
+
"examples": [
|
|
139
|
+
"非受控模式下跟踪气泡显示状态:onVisibleChange={(v) => setIsHovered(v)}",
|
|
140
|
+
"受控模式配合 useState:onVisibleChange={(v) => setVisible(v)}",
|
|
141
|
+
"新手引导场景:`trigger='click'` + onVisibleChange 控制引导步骤切换(避免 hover 持续触发)"
|
|
142
|
+
],
|
|
143
|
+
"commonMistakes": [
|
|
144
|
+
"回调名写成 onOpenChange → src 真实回调名是 onVisibleChange,写错无效(RcTooltip 接口名),不会有 TS 报错但回调不触发",
|
|
145
|
+
"受控模式(visible=xxx)下期望 onVisibleChange 触发后气泡自动更新 → 受控时内部 state 不更新,必须父组件在 onVisibleChange 里 setState",
|
|
146
|
+
"假设 onVisibleChange 在 title 为空时也会触发 → src:46-50 isUntitled()=true 时 onVisibleChange 不被调用"
|
|
147
|
+
]
|
|
148
|
+
}
|
|
149
|
+
},
|
|
150
|
+
"typescriptPitfalls": [
|
|
151
|
+
{
|
|
152
|
+
"issue": "disabled 的语义与 antd/mui 相反——不是禁用气泡而是叠加禁用图标",
|
|
153
|
+
"wrong": "<Tooltip disabled={isLoading} title='提示'> // 期望 isLoading 时不显示气泡 → 实际只是叠加红色图标,气泡照常显示",
|
|
154
|
+
"right": "<Tooltip visible={isLoading ? false : undefined} title='提示'> // 正确:visible=false 才能强制隐藏气泡"
|
|
155
|
+
},
|
|
156
|
+
{
|
|
157
|
+
"issue": "mouseEnterDelay / mouseLeaveDelay 单位是秒不是毫秒",
|
|
158
|
+
"wrong": "<Tooltip mouseEnterDelay={500} /> // 500 秒 = 8 分钟才显示",
|
|
159
|
+
"right": "<Tooltip mouseEnterDelay={0.5} /> // 0.5 秒 = 500ms"
|
|
160
|
+
},
|
|
161
|
+
{
|
|
162
|
+
"issue": "followCursor={true} 时 placement 被强制覆盖为 'top',设置其他 placement 无效",
|
|
163
|
+
"wrong": "<Tooltip followCursor={true} placement='bottomRight' /> // placement 被 src:128 强制改为 'top'",
|
|
164
|
+
"right": "<Tooltip followCursor={true} /> // followCursor 场景只支持 top,无需传 placement"
|
|
165
|
+
},
|
|
166
|
+
{
|
|
167
|
+
"issue": "TooltipProps 继承自 rc-tooltip,overlayStyle 和 overlayInnerStyle 作用 DOM 层级不同",
|
|
168
|
+
"wrong": "overlayStyle={{ color: 'red' }} // overlayStyle 作用于浮层外壳,文字颜色无效",
|
|
169
|
+
"right": "overlayInnerStyle={{ color: 'red' }} // overlayInnerStyle 作用于内容容器,文字颜色生效"
|
|
170
|
+
}
|
|
171
|
+
],
|
|
172
|
+
"mapping": {
|
|
173
|
+
"realComponent": "Tooltip",
|
|
174
|
+
"adapter": null
|
|
175
|
+
}
|
|
176
|
+
}
|
|
@@ -0,0 +1,157 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "Transfer",
|
|
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
|
+
},
|
|
23
|
+
"states": [
|
|
24
|
+
"default",
|
|
25
|
+
"disabled"
|
|
26
|
+
],
|
|
27
|
+
"idealProps": {
|
|
28
|
+
"data": {
|
|
29
|
+
"type": "Array<ItemDataProps>",
|
|
30
|
+
"default": "[]",
|
|
31
|
+
"itemSchema": {
|
|
32
|
+
"key": { "type": "string", "description": "唯一标识(与 value[] 对比;改字段名时用 customKey)" },
|
|
33
|
+
"name": { "type": "string", "description": "显示名" },
|
|
34
|
+
"description": { "type": "string", "description": "描述文字" },
|
|
35
|
+
"checked": { "type": "boolean", "description": "是否已勾选" },
|
|
36
|
+
"disabled": { "type": "boolean", "description": "是否禁用" },
|
|
37
|
+
"hide": { "type": "boolean", "description": "是否隐藏" },
|
|
38
|
+
"tagColor": { "type": "string", "description": "tag 色" }
|
|
39
|
+
},
|
|
40
|
+
"description": "数据源(**真实 prop 名是 data 不是 dataSource**);**对外导出类型名是 IItemDataProps**(有 I 前缀,src/index.ts 重命名导出),业务侧 import 用 `import { IItemDataProps } from '@para-ui/core/Transfer'`;ItemDataProps = { key?: string; name?: string; description?: string; checked?: boolean; disabled?: boolean; hide?: boolean; tagColor?: string; [k: string]: unknown };src/Transfer/box.tsx:49。**业务 any[] 数据**:若字段名不是 key/name(例如 id/label),建议父层 map 适配成 IItemDataProps 形状,或用 customKey 让 value 比对换字段"
|
|
41
|
+
},
|
|
42
|
+
"value": {
|
|
43
|
+
"type": "Array<string>",
|
|
44
|
+
"default": "[]",
|
|
45
|
+
"description": "右侧框已选中的 key 集合(**真实 prop 名是 value 不是 targetKeys**);受控数组,组件内部按 customKey 比对 data 分流到左右两侧;src/Transfer/index.tsx:236 useEffect 监听 value/data 同步"
|
|
46
|
+
},
|
|
47
|
+
"onChange": {
|
|
48
|
+
"type": "(keys: Array<string>) => void",
|
|
49
|
+
"description": "右侧 key 集合变化回调(穿梭 / 排序 / 上下移动都会触发);**回参是 key 数组不是 item 对象数组**;src/Transfer/index.tsx:150"
|
|
50
|
+
},
|
|
51
|
+
"onSort": {
|
|
52
|
+
"type": "(keys: Array<string>) => void",
|
|
53
|
+
"description": "右侧拖拽排序 / 上下移动后回调;触发时机:rightData splice 之后;src/Transfer/index.tsx:170 / 190 / 230;onChange 在 onSort 之前也会触发一次(同步右侧 key 序列)"
|
|
54
|
+
},
|
|
55
|
+
"customKey": {
|
|
56
|
+
"type": "string",
|
|
57
|
+
"default": "key",
|
|
58
|
+
"description": "自定义唯一键字段名;改这个会让 value 比对 data[customKey] 而非 data.key — 适用于业务数据自带 id/code 不想 rename 为 key 的场景"
|
|
59
|
+
},
|
|
60
|
+
"titles": {
|
|
61
|
+
"type": "Array<string>",
|
|
62
|
+
"default": "['左侧', '右侧']",
|
|
63
|
+
"description": "[左侧标题, 右侧标题];默认值来自 i18n localeJson(zh: '左侧'/'右侧',en: 'Left'/'Right');传两元数组覆盖"
|
|
64
|
+
},
|
|
65
|
+
"multiple": {
|
|
66
|
+
"type": "boolean",
|
|
67
|
+
"default": "true",
|
|
68
|
+
"description": "是否多选;false 时每侧 checkbox 单选语义,选中新项自动清空旧选"
|
|
69
|
+
},
|
|
70
|
+
"trim": {
|
|
71
|
+
"type": "boolean",
|
|
72
|
+
"default": "false",
|
|
73
|
+
"description": "搜索时是否去除首尾空格(toUpperCase 大小写不敏感是固定行为,trim 只控空格)"
|
|
74
|
+
},
|
|
75
|
+
"disabled": {
|
|
76
|
+
"type": "boolean",
|
|
77
|
+
"default": "false",
|
|
78
|
+
"description": "整体禁用(组件层);若只想禁某条 item,用 ItemDataProps.disabled — 二者独立可叠加"
|
|
79
|
+
},
|
|
80
|
+
"render": {
|
|
81
|
+
"type": "(item: ItemDataProps) => void",
|
|
82
|
+
"description": "对每条 item 的预处理 hook(在 useEffect 分流前调用,可改 item 字段);**注意是副作用函数(返回 void),不是返回 ReactNode 的 render prop** — 与 rightIcon 易混(rightIcon 才是返回 ReactNode);src/Transfer/index.tsx:242"
|
|
83
|
+
},
|
|
84
|
+
"rightIcon": {
|
|
85
|
+
"type": "(item: ItemDataProps) => ReactNode",
|
|
86
|
+
"description": "每行右侧自定义渲染(放 Help 图标 / Popover 等);返回 ReactNode,与 render 副作用 hook 不同"
|
|
87
|
+
}
|
|
88
|
+
},
|
|
89
|
+
"do": [
|
|
90
|
+
"在源数据量大且需要多选时使用 Transfer",
|
|
91
|
+
"提供清晰的 List Title",
|
|
92
|
+
"value 始终保持 string[] 类型(组件内部按 customKey 比对)"
|
|
93
|
+
],
|
|
94
|
+
"dont": [
|
|
95
|
+
"在移动端使用 Transfer(交互困难)",
|
|
96
|
+
"数据量极小(<5)时使用 Transfer(推荐 Checkbox Group)",
|
|
97
|
+
"把 dataSource / targetKeys 当 prop 名(那是 Ant Design 命名,本组件实际是 data / value)",
|
|
98
|
+
"期待 onSelectChange / onCheck 回调(本组件无 checkbox 勾选未穿梭的回调 — onChange 仅在穿梭/排序/移动完成后触发;若需追踪'选中变化'只能在 onChange 后由 left/right key 集合推导)",
|
|
99
|
+
"期待 size / compact / dense prop(本组件不支持紧凑模式;紧凑视觉只能由外层 div 套 fontSize/padding 模拟,无法影响内部间距)",
|
|
100
|
+
"期待 showSearch prop(搜索是内置默认开启 — 仅 trim 控制空格策略)"
|
|
101
|
+
],
|
|
102
|
+
"events": {
|
|
103
|
+
"onChange": {
|
|
104
|
+
"signature": "(keys: Array<string>) => void",
|
|
105
|
+
"asyncSupported": false,
|
|
106
|
+
"examples": [
|
|
107
|
+
"穿梭(右→左或左→右)完成时触发:keys 是右侧框所有 key 的当前顺序数组",
|
|
108
|
+
"上下移动排序后触发:keys 反映排序后的顺序(onSort 也会在此之前触发)",
|
|
109
|
+
"拖拽排序完成后触发:onEndSort → onChange 顺序触发,keys 是最新右侧顺序"
|
|
110
|
+
],
|
|
111
|
+
"commonMistakes": [
|
|
112
|
+
"把 onChange 的回参当做 ItemDataProps[] 对象数组——实际是 key 字符串数组",
|
|
113
|
+
"期望 onChange 在勾选(checkbox)时触发——onChange 只在穿梭/排序完成后触发,不追踪 checkbox 中间状态",
|
|
114
|
+
"期望 onChange 只在穿梭时触发——排序(onSort)也会同时触发 onChange"
|
|
115
|
+
]
|
|
116
|
+
},
|
|
117
|
+
"onSort": {
|
|
118
|
+
"signature": "(keys: Array<string>) => void",
|
|
119
|
+
"asyncSupported": false,
|
|
120
|
+
"examples": [
|
|
121
|
+
"右侧列表拖拽排序结束时触发:keys 是排序后右侧的 key 顺序数组",
|
|
122
|
+
"点击上/下移动按钮后触发:先触发 onSort 再触发 onChange",
|
|
123
|
+
"用于服务端保存排序:onSort={(keys) => saveOrder(keys)}"
|
|
124
|
+
],
|
|
125
|
+
"commonMistakes": [
|
|
126
|
+
"只监听 onSort 不监听 onChange——右侧 key 顺序同时写入了 onChange,两者都会触发",
|
|
127
|
+
"期望 onSort 在左侧操作时触发——onSort 只针对右侧列表排序,左侧没有排序功能"
|
|
128
|
+
]
|
|
129
|
+
}
|
|
130
|
+
},
|
|
131
|
+
"typescriptPitfalls": [
|
|
132
|
+
{
|
|
133
|
+
"issue": "data 的 TypeScript 导出类型名是 IItemDataProps(有 I 前缀),不是 ItemDataProps",
|
|
134
|
+
"wrong": "import { ItemDataProps } from '@para-ui/core/Transfer' // 不存在此导出",
|
|
135
|
+
"right": "import { IItemDataProps } from '@para-ui/core/Transfer' // src/Transfer/index.tsx 重命名导出"
|
|
136
|
+
},
|
|
137
|
+
{
|
|
138
|
+
"issue": "value 是 string[] 不是 ItemDataProps[],传对象数组导致右侧显示为空",
|
|
139
|
+
"wrong": "value={[{ key: 'a', name: '选项A' }]} // 传对象数组,内部 indexOf 比对会失败",
|
|
140
|
+
"right": "value={['a']} // 传 key 字符串数组,对应 data 中每项的 customKey 字段值"
|
|
141
|
+
},
|
|
142
|
+
{
|
|
143
|
+
"issue": "自定义 key 字段时需同步传 customKey,否则 value 比对不到 data",
|
|
144
|
+
"wrong": "// 数据字段是 id 但没传 customKey\ndata={[{ id: '001', name: '项目A' }]} value={['001']} // 比对用 data.key,找不到",
|
|
145
|
+
"right": "data={[{ id: '001', name: '项目A' }]} value={['001']} customKey='id' // 告知组件用 id 做 key"
|
|
146
|
+
},
|
|
147
|
+
{
|
|
148
|
+
"issue": "render 是副作用 hook 不是 render prop,返回 void 不是 ReactNode",
|
|
149
|
+
"wrong": "render={(item) => <span>{item.name}</span>} // 假设 render 返回 ReactNode 渲染到列表项",
|
|
150
|
+
"right": "// render 用于预处理 item 字段(副作用),自定义列表项显示用 rightIcon\nrender={(item) => { item.name = item.label; }} // 修改 item 字段"
|
|
151
|
+
}
|
|
152
|
+
],
|
|
153
|
+
"mapping": {
|
|
154
|
+
"realComponent": "Transfer",
|
|
155
|
+
"adapter": null
|
|
156
|
+
}
|
|
157
|
+
}
|