@para-ui/core 5.0.0-beta.12 → 5.0.0-beta.14
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/AGENTS.md +315 -0
- package/AlignBox/component.json +89 -0
- package/Anchor/component.json +130 -0
- package/Argv/component.json +216 -0
- package/AutoBox/component.json +133 -0
- package/AutoButton/component.json +109 -0
- package/AutoTips/component.json +121 -0
- package/Badge/component.json +92 -0
- package/Breadcrumbs/component.json +142 -0
- package/Button/component.json +168 -0
- package/ButtonGroup/component.json +132 -0
- package/Card/component.json +162 -0
- package/Carousel/component.json +142 -0
- package/Cascader/component.json +196 -0
- package/Checkbox/component.json +138 -0
- package/CheckboxGroup/component.json +152 -0
- package/CodeEditor/component.json +189 -0
- package/Collapse/component.json +166 -0
- package/CollapseBox/component.json +84 -0
- package/CollapseLayout/component.json +155 -0
- package/ColorPicker/component.json +142 -0
- package/ComboSelect/component.json +181 -0
- package/Container/component.json +111 -0
- package/ContentBox/component.json +81 -0
- package/CopyText/component.json +118 -0
- package/CycleSelector/component.json +98 -0
- package/DatePicker/component.json +192 -0
- package/Descriptions/component.json +142 -0
- package/Desktop/component.json +171 -0
- package/DragVerify/component.json +114 -0
- package/Drawer/component.json +200 -0
- package/Dropdown/component.json +147 -0
- package/DynamicMultiBox/component.json +278 -0
- package/Empty/component.json +123 -0
- package/FieldForm/component.json +196 -0
- package/Form/component.json +161 -0
- package/FormItem/component.json +171 -0
- package/FunctionModal/component.json +197 -0
- package/Help/component.json +118 -0
- package/HelperText/component.json +126 -0
- package/Image/component.json +165 -0
- package/InputCode/component.json +191 -0
- package/InputLang/component.json +205 -0
- package/InputNumber/component.json +162 -0
- package/Label/component.json +126 -0
- package/Loading/component.json +91 -0
- package/Menu/component.json +180 -0
- package/Message/component.json +246 -0
- package/Modal/component.json +277 -0
- package/MultiBox/component.json +216 -0
- package/Notification/component.json +184 -0
- package/OperateBtn/component.json +134 -0
- package/PageHeader/component.json +112 -0
- package/Pagination/component.json +181 -0
- package/PasswordRules/component.json +105 -0
- package/PopConfirm/component.json +227 -0
- package/PopMenu/component.json +131 -0
- package/Popover/component.json +165 -0
- package/Progress/component.json +161 -0
- package/Prompt/component.json +144 -0
- package/Querying/component.json +96 -0
- package/QuickReply/component.json +129 -0
- package/Radio/component.json +136 -0
- package/RadioGroup/component.json +149 -0
- package/RangeInput/component.json +198 -0
- package/Result/component.json +104 -0
- package/ScrollBar/component.json +115 -0
- package/Search/component.json +177 -0
- package/Select/component.json +244 -0
- package/SelectInput/component.json +184 -0
- package/Selector/component.json +203 -0
- package/SelectorPicker/component.json +179 -0
- package/SingleBox/component.json +151 -0
- package/Slider/component.json +181 -0
- package/SortBox/component.json +108 -0
- package/Status/component.json +104 -0
- package/Stepper/component.json +129 -0
- package/Switch/component.json +207 -0
- package/Table/component.json +547 -0
- package/Tabs/component.json +227 -0
- package/Tag/component.json +221 -0
- package/TextEditor/component.json +186 -0
- package/TextField/component.json +290 -0
- package/TimePicker/component.json +176 -0
- package/Timeline/component.json +110 -0
- package/Title/component.json +156 -0
- package/ToggleButton/component.json +153 -0
- package/Tooltip/component.json +176 -0
- package/Transfer/component.json +157 -0
- package/Tree/component.json +512 -0
- package/Upload/component.json +450 -0
- package/ai-workflows/01-crud-list-multi-drawer.md +278 -0
- package/ai-workflows/02-rbac-operation-buttons.md +290 -0
- package/ai-workflows/03-complex-form-async-cascade.md +350 -0
- package/ai-workflows/04-array-field-form.md +281 -0
- package/ai-workflows/05-popconfirm-async-message-queue.md +333 -0
- package/ai-workflows/06-modal-drawer-form-workflow.md +385 -0
- package/ai-workflows/07-search-filter-table-trio.md +387 -0
- package/ai-workflows/08-table-advanced-features.md +365 -0
- package/ai-workflows/09-batch-operation-export-progress.md +367 -0
- package/ai-workflows/10-cross-component-state-coordination.md +412 -0
- package/codemods/modal-onCancel-to-onDismiss.js +69 -0
- package/es/AlignBox/component.json +89 -0
- package/es/AlignBox/index.css +1 -1
- package/es/AlignBox/index.d.ts +6 -2
- package/es/AlignBox/index.js +1 -1
- package/es/AlignBox/style/index.css +1 -1
- package/es/Anchor/anchorMenu/index.d.ts +2 -1
- package/es/Anchor/anchorMenu/index.js +36 -33
- package/es/Anchor/component.json +130 -0
- package/es/Anchor/index.js +50 -47
- package/es/Anchor/type.d.ts +8 -4
- package/es/Argv/component.json +216 -0
- package/es/Argv/index.d.ts +5 -6
- package/es/AutoBox/component.json +133 -0
- package/es/AutoBox/index.d.ts +3 -3
- package/es/AutoBox/index.js +1 -1
- package/es/AutoBox/protal.d.ts +2 -2
- package/es/AutoBox/protal.js +32 -29
- package/es/AutoButton/component.json +109 -0
- package/es/AutoButton/index.js +1 -1
- package/es/AutoTips/autoTipsMultiline/index.d.ts +1 -1
- package/es/AutoTips/autoTipsMultiline/index.js +1 -1
- package/es/AutoTips/component.json +121 -0
- package/es/Badge/component.json +92 -0
- package/es/Breadcrumbs/component.json +142 -0
- package/es/Breadcrumbs/index.js +1 -1
- package/es/Button/SplitButton.d.ts +2 -2
- package/es/Button/component.json +168 -0
- package/es/Button/index.js +44 -44
- package/es/ButtonGroup/component.json +132 -0
- package/es/ButtonGroup/index.d.ts +1 -1
- package/es/Card/component.json +162 -0
- package/es/Card/index.d.ts +2 -2
- package/es/Card/index.js +2 -2
- package/es/Carousel/component.json +142 -0
- package/es/Carousel/index.d.ts +1 -1
- package/es/Cascader/Cascader.js +188 -180
- package/es/Cascader/component.json +196 -0
- package/es/Cascader/hooks/useEntities.js +7 -7
- package/es/Cascader/interface.d.ts +1 -0
- package/es/Cascader/utils/commonUtil.d.ts +1 -1
- package/es/Cascader/utils/commonUtil.js +16 -16
- package/es/Cascader/utils/treeUtil.d.ts +14 -5
- package/es/Cascader/utils/treeUtil.js +1 -1
- package/es/Checkbox/component.json +138 -0
- package/es/CheckboxGroup/component.json +152 -0
- package/es/CodeEditor/component.json +189 -0
- package/es/CodeEditor/index.d.ts +10 -9
- package/es/Collapse/component.json +166 -0
- package/es/Collapse/index.d.ts +1 -1
- package/es/Collapse/index.js +41 -33
- package/es/CollapseBox/component.json +84 -0
- package/es/CollapseLayout/component.json +155 -0
- package/es/ColorPicker/component.json +142 -0
- package/es/ComboSelect/component.json +181 -0
- package/es/ComboSelect/index.js +299 -287
- package/es/ComboSelect/interface.d.ts +6 -3
- package/es/ComboSelect/utils.d.ts +3 -3
- package/es/ComboSelect/utils.js +1 -1
- package/es/Container/component.json +111 -0
- package/es/ContentBox/component.json +81 -0
- package/es/CopyText/component.json +118 -0
- package/es/CycleSelector/component.json +98 -0
- package/es/CycleSelector/index.js +14 -13
- package/es/DatePicker/component.json +192 -0
- package/es/DatePicker/generatePicker/generateRangePicker.d.ts +0 -8
- package/es/DatePicker/generatePicker/generateRangePicker.js +73 -65
- package/es/DatePicker/generatePicker/generateSinglePicker.js +1 -1
- package/es/DatePicker/generatePicker/index.d.ts +11 -4
- package/es/Descriptions/component.json +142 -0
- package/es/Descriptions/index.d.ts +1 -1
- package/es/Desktop/component.json +171 -0
- package/es/DragVerify/component.json +114 -0
- package/es/DragVerify/index.js +19 -19
- package/es/Drawer/component.json +200 -0
- package/es/Drawer/index.js +86 -86
- package/es/Drawer/interface.d.ts +1 -1
- package/es/Drawer/util.d.ts +1 -6
- package/es/Drawer/util.js +9 -6
- package/es/Dropdown/component.json +147 -0
- package/es/DynamicMultiBox/component.json +278 -0
- package/es/DynamicMultiBox/formItem.d.ts +1 -1
- package/es/DynamicMultiBox/rowForm.d.ts +2 -2
- package/es/Empty/component.json +123 -0
- package/es/Empty/index.css +1 -1
- package/es/Empty/index.d.ts +2 -2
- package/es/Empty/index.js +27 -26
- package/es/Empty/style/index.css +1 -1
- package/es/FieldForm/FieldFormItem/MemoInput.d.ts +2 -2
- package/es/FieldForm/FieldFormItem/index.d.ts +6 -6
- package/es/FieldForm/Form.d.ts +2 -2
- package/es/FieldForm/FormList.d.ts +2 -2
- package/es/FieldForm/component.json +196 -0
- package/es/FieldForm/context.d.ts +5 -1
- package/es/FieldForm/context.js +2 -2
- package/es/FieldForm/hooks/useForm.d.ts +4 -3
- package/es/FieldForm/hooks/useFormInstance.d.ts +1 -1
- package/es/FieldForm/hooks/useFormItemStatus.d.ts +9 -5
- package/es/FieldForm/hooks/useFormItemStatus.js +2 -2
- package/es/FieldForm/hooks/useItemRef.d.ts +1 -1
- package/es/FieldForm/hooks/useItemRef.js +6 -6
- package/es/Form/component.json +161 -0
- package/es/Form/index.d.ts +52 -49
- package/es/FormItem/compoments/defaultCompoments/index.d.ts +5 -5
- package/es/FormItem/compoments/defaultCompoments/index.js +12 -11
- package/es/FormItem/compoments/formCheckboxGroup/index.d.ts +2 -2
- package/es/FormItem/compoments/formFile/index.js +8 -8
- package/es/FormItem/compoments/formRadioGroup/index.d.ts +1 -1
- package/es/FormItem/compoments/formSelect/index.d.ts +1 -1
- package/es/FormItem/component.json +171 -0
- package/es/FormItem/index.d.ts +5 -5
- package/es/FormItem/index.js +23 -23
- package/es/FormItem/itemType.js +1 -1
- package/es/FunctionModal/component.json +197 -0
- package/es/FunctionModal/dialog.d.ts +1 -1
- package/es/FunctionModal/modalContext.d.ts +4 -1
- package/es/Help/component.json +118 -0
- package/es/HelperText/component.json +126 -0
- package/es/Image/component.json +165 -0
- package/es/InputCode/component.json +191 -0
- package/es/InputCode/index.d.ts +2 -2
- package/es/InputLang/component.json +205 -0
- package/es/InputLang/index.js +1 -1
- package/es/InputNumber/component.json +162 -0
- package/es/Label/component.json +126 -0
- package/es/Label/index.d.ts +2 -2
- package/es/Loading/component.json +91 -0
- package/es/Menu/component.json +180 -0
- package/es/Message/component.json +246 -0
- package/es/Message/index.d.ts +2 -2
- package/es/Message/index.js +2 -2
- package/es/Modal/Confirm/index.d.ts +1 -1
- package/es/Modal/Confirm/index.js +81 -75
- package/es/Modal/component.json +277 -0
- package/es/Modal/index.d.ts +97 -6
- package/es/Modal/index.js +174 -122
- package/es/Modal/interface.d.ts +1 -0
- package/es/MultiBox/component.json +216 -0
- package/es/MultiBox/index.js +19 -14
- package/es/Notification/component.json +184 -0
- package/es/OperateBtn/component.json +134 -0
- package/es/OperateBtn/index.d.ts +3 -3
- package/es/PageHeader/component.json +112 -0
- package/es/Pagination/component.json +181 -0
- package/es/Pagination/index.js +15 -15
- package/es/PasswordRules/component.json +105 -0
- package/es/PasswordRules/index.d.ts +4 -4
- package/es/PopConfirm/component.json +227 -0
- package/es/PopConfirm/index.d.ts +1 -1
- package/es/PopConfirm/index.js +1 -1
- package/es/PopMenu/component.json +131 -0
- package/es/PopMenu/hooks.d.ts +1 -1
- package/es/PopMenu/index.js +8 -8
- package/es/Popover/component.json +165 -0
- package/es/Popover/index.js +1 -1
- package/es/Progress/component.json +161 -0
- package/es/Prompt/component.json +144 -0
- package/es/Querying/component.json +96 -0
- package/es/Querying/index.css +1 -1
- package/es/Querying/index.d.ts +2 -2
- package/es/Querying/index.js +20 -19
- package/es/Querying/style/index.css +1 -1
- package/es/QuickReply/component.json +129 -0
- package/es/QuickReply/index.d.ts +1 -1
- package/es/Radio/component.json +136 -0
- package/es/RadioGroup/component.json +149 -0
- package/es/RangeInput/component.json +198 -0
- package/es/RangeInput/index.js +1 -1
- package/es/Result/component.json +104 -0
- package/es/ScrollBar/component.json +115 -0
- package/es/Search/component.json +177 -0
- package/es/Search/index.d.ts +1 -1
- package/es/Select/component.json +244 -0
- package/es/Select/index.js +113 -113
- package/es/SelectInput/component.json +184 -0
- package/es/Selector/component.json +203 -0
- package/es/Selector/index.js +28 -27
- package/es/Selector/interface.d.ts +1 -1
- package/es/Selector/selectorMain/index.js +2 -2
- package/es/Selector/selectorNode/index.js +1 -1
- package/es/Selector/util.d.ts +2 -2
- package/es/SelectorPicker/component.json +179 -0
- package/es/SelectorPicker/index.d.ts +5 -5
- package/es/SelectorPicker/index.js +15 -15
- package/es/SingleBox/component.json +151 -0
- package/es/SingleBox/index.d.ts +2 -2
- package/es/Slider/component.json +181 -0
- package/es/SortBox/component.json +108 -0
- package/es/Status/component.json +104 -0
- package/es/Stepper/component.json +129 -0
- package/es/Stepper/index.d.ts +2 -2
- package/es/Switch/component.json +207 -0
- package/es/Switch/index.css +1 -1
- package/es/Switch/index.d.ts +3 -2
- package/es/Switch/index.js +60 -59
- package/es/Switch/style/index.css +1 -1
- package/es/Table/component.json +547 -0
- package/es/Table/index.d.ts +2 -2
- package/es/Table/index.js +414 -414
- package/es/Table/interface.d.ts +6 -0
- package/es/Tabs/component.json +227 -0
- package/es/Tag/component.json +221 -0
- package/es/Tag/index.css +1 -1
- package/es/Tag/index.d.ts +1 -1
- package/es/Tag/index.js +20 -20
- package/es/Tag/style/index.css +1 -1
- package/es/TextEditor/component.json +186 -0
- package/es/TextEditor/index.d.ts +5 -5
- package/es/TextField/component.json +290 -0
- package/es/TextField/index.d.ts +2 -2
- package/es/TimePicker/component.json +176 -0
- package/es/Timeline/component.json +110 -0
- package/es/Title/component.json +156 -0
- package/es/ToggleButton/component.json +153 -0
- package/es/Tooltip/component.json +176 -0
- package/es/Tooltip/index.js +74 -63
- package/es/Tooltip/interface.d.ts +14 -1
- package/es/Tooltip/utils.js +6 -6
- package/es/Transfer/component.json +157 -0
- package/es/Tree/component.json +512 -0
- package/es/Upload/component.json +450 -0
- package/es/Utils/type.d.ts +0 -2
- package/es/index.d.ts +2 -0
- package/es/index.js +1 -1
- package/es/locale/en_US.d.ts +361 -0
- package/es/locale/en_US.js +364 -0
- package/es/locale/index.d.ts +1 -723
- package/es/locale/index2.js +10 -0
- package/es/locale/zh_CN.d.ts +361 -0
- package/es/locale/zh_CN.js +364 -0
- package/lib/AlignBox/component.json +89 -0
- package/lib/AlignBox/index.css +1 -1
- package/lib/AlignBox/index.d.ts +6 -2
- package/lib/AlignBox/index.js +1 -1
- package/lib/AlignBox/style/index.css +1 -1
- package/lib/Anchor/anchorMenu/index.d.ts +2 -1
- package/lib/Anchor/anchorMenu/index.js +1 -1
- package/lib/Anchor/component.json +130 -0
- package/lib/Anchor/index.js +1 -1
- package/lib/Anchor/type.d.ts +8 -4
- package/lib/Argv/component.json +216 -0
- package/lib/Argv/index.d.ts +5 -6
- package/lib/AutoBox/component.json +133 -0
- package/lib/AutoBox/index.d.ts +3 -3
- package/lib/AutoBox/index.js +1 -1
- package/lib/AutoBox/protal.d.ts +2 -2
- package/lib/AutoBox/protal.js +1 -1
- package/lib/AutoButton/component.json +109 -0
- package/lib/AutoButton/index.js +1 -1
- package/lib/AutoTips/autoTipsMultiline/index.d.ts +1 -1
- package/lib/AutoTips/autoTipsMultiline/index.js +1 -1
- package/lib/AutoTips/component.json +121 -0
- package/lib/Badge/component.json +92 -0
- package/lib/Breadcrumbs/component.json +142 -0
- package/lib/Breadcrumbs/index.js +1 -1
- package/lib/Button/SplitButton.d.ts +2 -2
- package/lib/Button/component.json +168 -0
- package/lib/Button/index.js +1 -1
- package/lib/ButtonGroup/component.json +132 -0
- package/lib/ButtonGroup/index.d.ts +1 -1
- package/lib/Card/component.json +162 -0
- package/lib/Card/index.d.ts +2 -2
- package/lib/Card/index.js +1 -1
- package/lib/Carousel/component.json +142 -0
- package/lib/Carousel/index.d.ts +1 -1
- package/lib/Cascader/Cascader.js +1 -1
- package/lib/Cascader/component.json +196 -0
- package/lib/Cascader/hooks/useEntities.js +1 -1
- package/lib/Cascader/interface.d.ts +1 -0
- package/lib/Cascader/utils/commonUtil.d.ts +1 -1
- package/lib/Cascader/utils/commonUtil.js +1 -1
- package/lib/Cascader/utils/treeUtil.d.ts +14 -5
- package/lib/Cascader/utils/treeUtil.js +1 -1
- package/lib/Checkbox/component.json +138 -0
- package/lib/CheckboxGroup/component.json +152 -0
- package/lib/CodeEditor/component.json +189 -0
- package/lib/CodeEditor/index.d.ts +10 -9
- package/lib/Collapse/component.json +166 -0
- package/lib/Collapse/index.d.ts +1 -1
- package/lib/Collapse/index.js +1 -1
- package/lib/CollapseBox/component.json +84 -0
- package/lib/CollapseLayout/component.json +155 -0
- package/lib/ColorPicker/component.json +142 -0
- package/lib/ComboSelect/component.json +181 -0
- package/lib/ComboSelect/index.js +1 -1
- package/lib/ComboSelect/interface.d.ts +6 -3
- package/lib/ComboSelect/utils.d.ts +3 -3
- package/lib/ComboSelect/utils.js +1 -1
- package/lib/Container/component.json +111 -0
- package/lib/ContentBox/component.json +81 -0
- package/lib/CopyText/component.json +118 -0
- package/lib/CycleSelector/component.json +98 -0
- package/lib/CycleSelector/index.js +1 -1
- package/lib/DatePicker/component.json +192 -0
- package/lib/DatePicker/generatePicker/generateRangePicker.d.ts +0 -8
- package/lib/DatePicker/generatePicker/generateRangePicker.js +1 -1
- package/lib/DatePicker/generatePicker/generateSinglePicker.js +1 -1
- package/lib/DatePicker/generatePicker/index.d.ts +11 -4
- package/lib/Descriptions/component.json +142 -0
- package/lib/Descriptions/index.d.ts +1 -1
- package/lib/Desktop/component.json +171 -0
- package/lib/DragVerify/component.json +114 -0
- package/lib/DragVerify/index.js +1 -1
- package/lib/Drawer/component.json +200 -0
- package/lib/Drawer/index.js +1 -1
- package/lib/Drawer/interface.d.ts +1 -1
- package/lib/Drawer/util.d.ts +1 -6
- package/lib/Drawer/util.js +1 -1
- package/lib/Dropdown/component.json +147 -0
- package/lib/DynamicMultiBox/component.json +278 -0
- package/lib/DynamicMultiBox/formItem.d.ts +1 -1
- package/lib/DynamicMultiBox/rowForm.d.ts +2 -2
- package/lib/Empty/component.json +123 -0
- package/lib/Empty/index.css +1 -1
- package/lib/Empty/index.d.ts +2 -2
- package/lib/Empty/index.js +1 -1
- package/lib/Empty/style/index.css +1 -1
- package/lib/FieldForm/FieldFormItem/MemoInput.d.ts +2 -2
- package/lib/FieldForm/FieldFormItem/index.d.ts +6 -6
- package/lib/FieldForm/Form.d.ts +2 -2
- package/lib/FieldForm/FormList.d.ts +2 -2
- package/lib/FieldForm/component.json +196 -0
- package/lib/FieldForm/context.d.ts +5 -1
- package/lib/FieldForm/context.js +1 -1
- package/lib/FieldForm/hooks/useForm.d.ts +4 -3
- package/lib/FieldForm/hooks/useFormInstance.d.ts +1 -1
- package/lib/FieldForm/hooks/useFormItemStatus.d.ts +9 -5
- package/lib/FieldForm/hooks/useFormItemStatus.js +1 -1
- package/lib/FieldForm/hooks/useItemRef.d.ts +1 -1
- package/lib/FieldForm/hooks/useItemRef.js +1 -1
- package/lib/Form/component.json +161 -0
- package/lib/Form/index.d.ts +52 -49
- package/lib/FormItem/compoments/defaultCompoments/index.d.ts +5 -5
- package/lib/FormItem/compoments/defaultCompoments/index.js +1 -1
- package/lib/FormItem/compoments/formCheckboxGroup/index.d.ts +2 -2
- package/lib/FormItem/compoments/formFile/index.js +1 -1
- package/lib/FormItem/compoments/formRadioGroup/index.d.ts +1 -1
- package/lib/FormItem/compoments/formSelect/index.d.ts +1 -1
- package/lib/FormItem/component.json +171 -0
- package/lib/FormItem/index.d.ts +5 -5
- package/lib/FormItem/index.js +1 -1
- package/lib/FormItem/itemType.js +1 -1
- package/lib/FunctionModal/component.json +197 -0
- package/lib/FunctionModal/dialog.d.ts +1 -1
- package/lib/FunctionModal/modalContext.d.ts +4 -1
- package/lib/Help/component.json +118 -0
- package/lib/HelperText/component.json +126 -0
- package/lib/Image/component.json +165 -0
- package/lib/InputCode/component.json +191 -0
- package/lib/InputCode/index.d.ts +2 -2
- package/lib/InputLang/component.json +205 -0
- package/lib/InputLang/index.js +1 -1
- package/lib/InputNumber/component.json +162 -0
- package/lib/Label/component.json +126 -0
- package/lib/Label/index.d.ts +2 -2
- package/lib/Loading/component.json +91 -0
- package/lib/Menu/component.json +180 -0
- package/lib/Message/component.json +246 -0
- package/lib/Message/index.d.ts +2 -2
- package/lib/Message/index.js +1 -1
- package/lib/Modal/Confirm/index.d.ts +1 -1
- package/lib/Modal/Confirm/index.js +1 -1
- package/lib/Modal/component.json +277 -0
- package/lib/Modal/index.d.ts +97 -6
- package/lib/Modal/index.js +1 -1
- package/lib/Modal/interface.d.ts +1 -0
- package/lib/MultiBox/component.json +216 -0
- package/lib/MultiBox/index.js +1 -1
- package/lib/Notification/component.json +184 -0
- package/lib/OperateBtn/component.json +134 -0
- package/lib/OperateBtn/index.d.ts +3 -3
- package/lib/PageHeader/component.json +112 -0
- package/lib/Pagination/component.json +181 -0
- package/lib/Pagination/index.js +1 -1
- package/lib/PasswordRules/component.json +105 -0
- package/lib/PasswordRules/index.d.ts +4 -4
- package/lib/PopConfirm/component.json +227 -0
- package/lib/PopConfirm/index.d.ts +1 -1
- package/lib/PopConfirm/index.js +1 -1
- package/lib/PopMenu/component.json +131 -0
- package/lib/PopMenu/hooks.d.ts +1 -1
- package/lib/PopMenu/index.js +1 -1
- package/lib/Popover/component.json +165 -0
- package/lib/Popover/index.js +1 -1
- package/lib/Progress/component.json +161 -0
- package/lib/Prompt/component.json +144 -0
- package/lib/Querying/component.json +96 -0
- package/lib/Querying/index.css +1 -1
- package/lib/Querying/index.d.ts +2 -2
- package/lib/Querying/index.js +1 -1
- package/lib/Querying/style/index.css +1 -1
- package/lib/QuickReply/component.json +129 -0
- package/lib/QuickReply/index.d.ts +1 -1
- package/lib/Radio/component.json +136 -0
- package/lib/RadioGroup/component.json +149 -0
- package/lib/RangeInput/component.json +198 -0
- package/lib/RangeInput/index.js +1 -1
- package/lib/Result/component.json +104 -0
- package/lib/ScrollBar/component.json +115 -0
- package/lib/Search/component.json +177 -0
- package/lib/Search/index.d.ts +1 -1
- package/lib/Select/component.json +244 -0
- package/lib/Select/index.js +1 -1
- package/lib/SelectInput/component.json +184 -0
- package/lib/Selector/component.json +203 -0
- package/lib/Selector/index.js +1 -1
- package/lib/Selector/interface.d.ts +1 -1
- package/lib/Selector/selectorMain/index.js +1 -1
- package/lib/Selector/selectorNode/index.js +1 -1
- package/lib/Selector/util.d.ts +2 -2
- package/lib/SelectorPicker/component.json +179 -0
- package/lib/SelectorPicker/index.d.ts +5 -5
- package/lib/SelectorPicker/index.js +1 -1
- package/lib/SingleBox/component.json +151 -0
- package/lib/SingleBox/index.d.ts +2 -2
- package/lib/Slider/component.json +181 -0
- package/lib/SortBox/component.json +108 -0
- package/lib/Status/component.json +104 -0
- package/lib/Stepper/component.json +129 -0
- package/lib/Stepper/index.d.ts +2 -2
- package/lib/Switch/component.json +207 -0
- package/lib/Switch/index.css +1 -1
- package/lib/Switch/index.d.ts +3 -2
- package/lib/Switch/index.js +1 -1
- package/lib/Switch/style/index.css +1 -1
- package/lib/Table/component.json +547 -0
- package/lib/Table/index.d.ts +2 -2
- package/lib/Table/index.js +1 -1
- package/lib/Table/interface.d.ts +6 -0
- package/lib/Tabs/component.json +227 -0
- package/lib/Tag/component.json +221 -0
- package/lib/Tag/index.css +1 -1
- package/lib/Tag/index.d.ts +1 -1
- package/lib/Tag/index.js +1 -1
- package/lib/Tag/style/index.css +1 -1
- package/lib/TextEditor/component.json +186 -0
- package/lib/TextEditor/index.d.ts +5 -5
- package/lib/TextField/component.json +290 -0
- package/lib/TextField/index.d.ts +2 -2
- package/lib/TimePicker/component.json +176 -0
- package/lib/Timeline/component.json +110 -0
- package/lib/Title/component.json +156 -0
- package/lib/ToggleButton/component.json +153 -0
- package/lib/Tooltip/component.json +176 -0
- package/lib/Tooltip/index.js +1 -1
- package/lib/Tooltip/interface.d.ts +14 -1
- package/lib/Tooltip/utils.js +1 -1
- package/lib/Transfer/component.json +157 -0
- package/lib/Tree/component.json +512 -0
- package/lib/Upload/component.json +450 -0
- package/lib/Utils/type.d.ts +0 -2
- package/lib/index.d.ts +2 -0
- package/lib/index.js +1 -1
- package/lib/locale/en_US.d.ts +361 -0
- package/lib/locale/en_US.js +2 -0
- package/lib/locale/index.d.ts +1 -723
- package/lib/locale/index2.js +2 -0
- package/lib/locale/zh_CN.d.ts +361 -0
- package/lib/locale/zh_CN.js +2 -0
- package/package.json +10 -3
- /package/es/{Utils/Hooks → Hooks}/useResizeObserver.d.ts +0 -0
- /package/es/{Utils/Hooks → Hooks}/useResizeObserver.js +0 -0
- /package/lib/{Utils/Hooks → Hooks}/useResizeObserver.d.ts +0 -0
- /package/lib/{Utils/Hooks → Hooks}/useResizeObserver.js +0 -0
package/es/PopConfirm/index.js
CHANGED
|
@@ -48,7 +48,7 @@ const ae = {
|
|
|
48
48
|
onCountdownFinish: G,
|
|
49
49
|
getPopupContainer: H,
|
|
50
50
|
...K
|
|
51
|
-
} = T, x = te("PopConfirm", ie), h = N(), L = ce(h, H), [p, f] = b(!1), r = N(), [d, j] = b(g), v = _(() => s && d >= 1, [s, d]);
|
|
51
|
+
} = T, x = te("PopConfirm", ie), h = N(null), L = ce(h, H), [p, f] = b(!1), r = N(), [d, j] = b(g), v = _(() => s && d >= 1, [s, d]);
|
|
52
52
|
k(() => (s && (p ? (j(g), r.current = setInterval(() => {
|
|
53
53
|
j((n) => n <= 1 ? (G?.(), clearInterval(r.current), 0) : n - 1);
|
|
54
54
|
}, 1e3)) : clearInterval(r.current)), () => {
|
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "PopMenu",
|
|
3
|
+
"category": "Navigation",
|
|
4
|
+
"description": "下拉级联菜单,支持分组、子菜单嵌套和受控选中态,基于 Popover 实现",
|
|
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
|
+
"data": {
|
|
29
|
+
"type": "PopMenuListItemProps[] | PopMenuGroupItemProps[]",
|
|
30
|
+
"description": "菜单数据源;**PopMenuListItemProps** = { name: string(必填,唯一 key); title?: string(显示文案); disabled?: boolean; disabledTip?: string; help?: string; render?: (handle: IPopMenuHandler) => ReactElement(自定义渲染); onClick?: (name, item?, path?) => void; children?: PopMenuListItemProps[](子菜单)};**PopMenuGroupItemProps** = { list: PopMenuListItemProps[] }(用于分组,混合传时未分组项自动聚合到末尾组)"
|
|
31
|
+
},
|
|
32
|
+
"direction": {
|
|
33
|
+
"type": "enum",
|
|
34
|
+
"values": ["left", "right"],
|
|
35
|
+
"default": "left",
|
|
36
|
+
"description": "弹出方向;left=右侧展开(默认 placement=bottomRight);right=左侧展开(默认 placement=bottomLeft)"
|
|
37
|
+
},
|
|
38
|
+
"onChange": {
|
|
39
|
+
"type": "(value: TPopMenuValue) => void",
|
|
40
|
+
"description": "选中项变化时的回调;**TPopMenuValue = string[]**(选中路径数组);每次点击叶子节点时触发"
|
|
41
|
+
},
|
|
42
|
+
"onClick": {
|
|
43
|
+
"type": "(name: string, item?: PopMenuListItemProps, path?: string[]) => void",
|
|
44
|
+
"description": "点击菜单项时的回调;name=当前项的 name 字段;path=从根到当前项的 name 路径数组(不含当前项)"
|
|
45
|
+
},
|
|
46
|
+
"value": {
|
|
47
|
+
"type": "TPopMenuValue",
|
|
48
|
+
"description": "当前选中的菜单路径数组(受控);**TPopMenuValue = string[]**;每个元素是对应层级的 name 值"
|
|
49
|
+
},
|
|
50
|
+
"children": {
|
|
51
|
+
"type": "ReactNode",
|
|
52
|
+
"description": "触发浮层的目标节点(包裹在内层 div 里,ref 由 PopMenu 内部管理,可传任意 ReactNode)"
|
|
53
|
+
},
|
|
54
|
+
"menuClassName": {
|
|
55
|
+
"type": "string",
|
|
56
|
+
"description": "菜单列表容器的自定义 className(src/PopMenu/index.tsx:28 interface 实证)"
|
|
57
|
+
},
|
|
58
|
+
"menuStyle": {
|
|
59
|
+
"type": "React.CSSProperties",
|
|
60
|
+
"description": "菜单列表容器的自定义样式"
|
|
61
|
+
},
|
|
62
|
+
"contentClassName": {
|
|
63
|
+
"type": "string",
|
|
64
|
+
"description": "触发节点外层 div 的自定义 className"
|
|
65
|
+
},
|
|
66
|
+
"contentStyle": {
|
|
67
|
+
"type": "React.CSSProperties",
|
|
68
|
+
"description": "触发节点外层 div 的自定义样式"
|
|
69
|
+
}
|
|
70
|
+
},
|
|
71
|
+
"do": [
|
|
72
|
+
"收纳低频操作——标准场景传 data 数组,每项必须有 name 字段(唯一 key)",
|
|
73
|
+
"Label 简短清晰,子菜单层级不超过 2 层",
|
|
74
|
+
"危险操作通过 PopMenuListItemProps.disabled + disabledTip 做防误操作提示",
|
|
75
|
+
"需要自定义菜单项(如带图标/颜色)时用 render 函数,形参 handle.closeMenu() 可手动关闭浮层"
|
|
76
|
+
],
|
|
77
|
+
"dont": [
|
|
78
|
+
"Dropdown 层级过深 (>2)——嵌套层级过多用户迷失,超过 2 层改用 Modal 表单",
|
|
79
|
+
"Dropdown 内放置过度复杂的表单",
|
|
80
|
+
"用数组下标作为 name——name 用于选中值追踪,必须全局唯一字符串"
|
|
81
|
+
],
|
|
82
|
+
"events": {
|
|
83
|
+
"onClick": {
|
|
84
|
+
"signature": "(name: string, item?: PopMenuListItemProps, path?: string[]) => void",
|
|
85
|
+
"asyncSupported": false,
|
|
86
|
+
"examples": [
|
|
87
|
+
"基本点击:onClick={(name, item) => { handleAction(name); }}",
|
|
88
|
+
"获取完整路径:onClick={(name, item, path) => { console.log([...path, name]); }} // path 是父级 name 数组,不含当前",
|
|
89
|
+
"自定义渲染中关闭浮层:render={(handle) => <div onClick={() => { doAction(); handle.closeMenu(); }}>自定义项</div>}"
|
|
90
|
+
],
|
|
91
|
+
"commonMistakes": [
|
|
92
|
+
"期望 onClick 在父节点(有 children 的项)点击时触发——有子菜单的节点展开子菜单,不触发 onClick;只有叶子节点触发",
|
|
93
|
+
"用 item.name 做显示文案——显示文案是 item.title;item.name 是唯一 key",
|
|
94
|
+
"假设 path 包含当前节点——path 只包含父级路径,不含当前点击项;完整路径是 [...path, name]"
|
|
95
|
+
]
|
|
96
|
+
},
|
|
97
|
+
"onChange": {
|
|
98
|
+
"signature": "(value: TPopMenuValue) => void",
|
|
99
|
+
"asyncSupported": false,
|
|
100
|
+
"examples": [
|
|
101
|
+
"受控选中:onChange={(val) => setValue(val)}",
|
|
102
|
+
"value 是 string[],如 ['group1', 'item2'] 表示选中了 group1 下的 item2"
|
|
103
|
+
],
|
|
104
|
+
"commonMistakes": [
|
|
105
|
+
"假设 value 是单个字符串——TPopMenuValue = string[],即使只有一级也是数组",
|
|
106
|
+
"onClick 和 onChange 重复处理同一逻辑——onClick 含 name+item+path 更精细;onChange 只有路径数组"
|
|
107
|
+
]
|
|
108
|
+
}
|
|
109
|
+
},
|
|
110
|
+
"typescriptPitfalls": [
|
|
111
|
+
{
|
|
112
|
+
"issue": "data 中每个 item 的 name 字段必填(string),缺少会导致选中态追踪失效",
|
|
113
|
+
"wrong": "data={[{ title: '编辑' }, { title: '删除' }]} // 缺少 name 字段,TS 报错",
|
|
114
|
+
"right": "data={[{ name: 'edit', title: '编辑' }, { name: 'delete', title: '删除' }]}"
|
|
115
|
+
},
|
|
116
|
+
{
|
|
117
|
+
"issue": "TPopMenuValue 是 string[],value 和 onChange 的类型都是数组,不是单个字符串",
|
|
118
|
+
"wrong": "value='edit' onChange={(val: string) => setValue(val)} // 类型不匹配",
|
|
119
|
+
"right": "value={['edit']} onChange={(val: string[]) => setValue(val)}"
|
|
120
|
+
},
|
|
121
|
+
{
|
|
122
|
+
"issue": "PopMenuListItemProps.render 的形参是 IPopMenuHandler 对象,不是 React event",
|
|
123
|
+
"wrong": "render={(e) => <div onClick={() => e.preventDefault()}>...</div>} // e 不是事件",
|
|
124
|
+
"right": "render={(handle) => <div onClick={() => { doAction(); handle.closeMenu(); }}>...</div>} // handle.closeMenu() 关闭浮层"
|
|
125
|
+
}
|
|
126
|
+
],
|
|
127
|
+
"mapping": {
|
|
128
|
+
"realComponent": "PopMenu",
|
|
129
|
+
"adapter": null
|
|
130
|
+
}
|
|
131
|
+
}
|
package/es/PopMenu/hooks.d.ts
CHANGED
package/es/PopMenu/index.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { j as n } from "../_virtual/jsx-runtime.js";
|
|
2
2
|
import s from "clsx";
|
|
3
3
|
import I from "react";
|
|
4
|
-
import { $prefixCls as
|
|
4
|
+
import { $prefixCls as c } from "../GlobalContext/constant.js";
|
|
5
5
|
import { Popover as S } from "../Popover/index.js";
|
|
6
6
|
import { usePopMenuContext as $, PopMenuProvider as k } from "./context.js";
|
|
7
7
|
import { useComponentWidth as w } from "./hooks.js";
|
|
@@ -9,7 +9,7 @@ import './index.css';/* empty css */
|
|
|
9
9
|
import E from "./list.js";
|
|
10
10
|
const L = (l) => {
|
|
11
11
|
const {
|
|
12
|
-
overlayClassName:
|
|
12
|
+
overlayClassName: m,
|
|
13
13
|
data: f,
|
|
14
14
|
children: i,
|
|
15
15
|
menuClassName: d,
|
|
@@ -21,19 +21,19 @@ const L = (l) => {
|
|
|
21
21
|
onClick: g,
|
|
22
22
|
path: P,
|
|
23
23
|
...e
|
|
24
|
-
} = l, { width: j, ref: M } = w([i]), a = I.useRef(), { handle: p, menuIndex: N } = $(), R = () => {
|
|
24
|
+
} = l, { width: j, ref: M } = w([i]), a = I.useRef(null), { handle: p, menuIndex: N } = $(), R = () => {
|
|
25
25
|
const o = [], r = { list: [] };
|
|
26
26
|
return f.forEach((t) => {
|
|
27
27
|
typeof t == "object" && t !== null && "list" in t ? o.push(t) : r.list.push(t);
|
|
28
|
-
}), r.list?.length && o.push(r), /* @__PURE__ */ n.jsx(n.Fragment, { children: o.map((t,
|
|
28
|
+
}), r.list?.length && o.push(r), /* @__PURE__ */ n.jsx(n.Fragment, { children: o.map((t, u) => /* @__PURE__ */ n.jsx(
|
|
29
29
|
E,
|
|
30
30
|
{
|
|
31
31
|
direction: e.direction,
|
|
32
32
|
list: t.list,
|
|
33
|
-
className: s(d, { "pop-menu-separator":
|
|
33
|
+
className: s(d, { "pop-menu-separator": u !== o.length - 1 }),
|
|
34
34
|
style: h
|
|
35
35
|
},
|
|
36
|
-
|
|
36
|
+
u
|
|
37
37
|
)) });
|
|
38
38
|
}, b = () => e.placement ? e.placement : e.direction === "right" ? "bottomLeft" : "bottomRight";
|
|
39
39
|
return /* @__PURE__ */ n.jsx(
|
|
@@ -63,7 +63,7 @@ const L = (l) => {
|
|
|
63
63
|
...e,
|
|
64
64
|
isPopover: !0,
|
|
65
65
|
ref: a,
|
|
66
|
-
overlayClassName: s(`${
|
|
66
|
+
overlayClassName: s(`${c}-pop-menu`, m),
|
|
67
67
|
overlayInnerStyle: { minWidth: j, ...e.overlayInnerStyle },
|
|
68
68
|
content: R(),
|
|
69
69
|
placement: b(),
|
|
@@ -71,7 +71,7 @@ const L = (l) => {
|
|
|
71
71
|
"div",
|
|
72
72
|
{
|
|
73
73
|
ref: M,
|
|
74
|
-
className: s(`${
|
|
74
|
+
className: s(`${c}-pop-menu-content`, y),
|
|
75
75
|
style: v,
|
|
76
76
|
children: i
|
|
77
77
|
}
|
|
@@ -0,0 +1,165 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "Popover",
|
|
3
|
+
"category": "Data Display",
|
|
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
|
+
"visible",
|
|
25
|
+
"hidden"
|
|
26
|
+
],
|
|
27
|
+
"idealProps": {
|
|
28
|
+
"content": {
|
|
29
|
+
"type": "ReactNode",
|
|
30
|
+
"description": "卡片内容主体"
|
|
31
|
+
},
|
|
32
|
+
"title": {
|
|
33
|
+
"type": "string | ReactNode",
|
|
34
|
+
"description": "卡片标题。**不传时浮层不渲染标题区**(无空白占位);如需仅展示 content,省略 title 即可"
|
|
35
|
+
},
|
|
36
|
+
"children": {
|
|
37
|
+
"type": "ReactElement",
|
|
38
|
+
"description": "**触发浮层的目标节点**——必须是『单一可接收 ref 的 React 元素』(rc-tooltip 内部约束,需挂 ref 监听事件)。传 string / Fragment / 多个并列节点会导致 ref 挂载失败、触发不生效。当业务方接到 ReactNode 类型的 trigger 节点(可能是字符串 / Fragment / 数组)时,外层包一层 `<span style={{ display: 'inline-block' }}>` 兜底"
|
|
39
|
+
},
|
|
40
|
+
"placement": {
|
|
41
|
+
"type": "enum",
|
|
42
|
+
"values": [
|
|
43
|
+
"top",
|
|
44
|
+
"left",
|
|
45
|
+
"right",
|
|
46
|
+
"bottom",
|
|
47
|
+
"topLeft",
|
|
48
|
+
"topRight",
|
|
49
|
+
"bottomLeft",
|
|
50
|
+
"bottomRight",
|
|
51
|
+
"leftTop",
|
|
52
|
+
"leftBottom",
|
|
53
|
+
"rightTop",
|
|
54
|
+
"rightBottom"
|
|
55
|
+
],
|
|
56
|
+
"default": "bottom",
|
|
57
|
+
"description": "弹出位置(src/Popover/index.tsx:65 实证默认 `bottom`,非 `top`)"
|
|
58
|
+
},
|
|
59
|
+
"trigger": {
|
|
60
|
+
"type": "enum",
|
|
61
|
+
"values": [
|
|
62
|
+
"hover",
|
|
63
|
+
"focus",
|
|
64
|
+
"click",
|
|
65
|
+
"contextMenu"
|
|
66
|
+
],
|
|
67
|
+
"default": "click",
|
|
68
|
+
"description": "触发行为。`contextMenu` 时由内部 rc-tooltip 自动 preventDefault 浏览器原生右键菜单。**仅支持单值,不支持数组形式**——多种触发需用受控模式(visible + onVisibleChange + 业务方自行监听多种事件)"
|
|
69
|
+
},
|
|
70
|
+
"visible": {
|
|
71
|
+
"type": "boolean",
|
|
72
|
+
"default": false,
|
|
73
|
+
"description": "**控制显示(受控,src 真实主名)**——Popover 继承 TooltipProps,src/Tooltip/index.tsx:25 取 `visible ?? open`,visible 优先。新代码任选其一;不要同时传。**受控语义**:传 visible 后 Popover 完全受控,用户的 click / hover / contextMenu 不会自动切换内部 state,仅触发 onVisibleChange 让父组件决定是否改 visible(请求改变 vs 直接改变)"
|
|
74
|
+
},
|
|
75
|
+
"open": {
|
|
76
|
+
"type": "boolean",
|
|
77
|
+
"default": false,
|
|
78
|
+
"description": "`visible` 的别名(antd 风格)"
|
|
79
|
+
},
|
|
80
|
+
"onVisibleChange": {
|
|
81
|
+
"type": "function",
|
|
82
|
+
"signature": "(visible: boolean) => void",
|
|
83
|
+
"description": "**显示隐藏回调(src 真实事件名是 onVisibleChange,不是 onOpenChange)**。受控时仍会被调用——表示父组件应改变 visible;非受控时由 Popover 内部 state 切换并同时回调"
|
|
84
|
+
},
|
|
85
|
+
"arrow": {
|
|
86
|
+
"type": "boolean",
|
|
87
|
+
"default": false,
|
|
88
|
+
"description": "是否显示箭头(src/Popover/index.tsx:69 实证默认 `false`,非 `true`)"
|
|
89
|
+
},
|
|
90
|
+
"getPopupContainer": {
|
|
91
|
+
"type": "function",
|
|
92
|
+
"signature": "(triggerNode: HTMLElement) => HTMLElement",
|
|
93
|
+
"description": "指定弹层的挂载容器(src/Tooltip/interface.tsx:41 实证,Popover 继承 TooltipProps)。默认挂载到 body;传入函数返回目标 DOM 节点可实现局部定位(如 Modal 内的 Popover 挂载到 Modal 容器,避免层叠问题)。**函数在浮层首次展示时调用**,须确保此时目标 DOM 已挂载"
|
|
94
|
+
},
|
|
95
|
+
"mouseEnterDelay": {
|
|
96
|
+
"type": "number",
|
|
97
|
+
"default": 0.1,
|
|
98
|
+
"description": "鼠标移入后弹出延迟(单位:秒,src/Popover/index.tsx:67 defaultProps 实证默认 0.1)。`trigger='hover'` 时生效;设为 0 则立即弹出"
|
|
99
|
+
},
|
|
100
|
+
"mouseLeaveDelay": {
|
|
101
|
+
"type": "number",
|
|
102
|
+
"default": 0.1,
|
|
103
|
+
"description": "鼠标移出后消失延迟(单位:秒,src/Popover/index.tsx:68 defaultProps 实证默认 0.1)。`trigger='hover'` 时生效;用于防止鼠标从 trigger 移至浮层时浮层闪烁消失"
|
|
104
|
+
},
|
|
105
|
+
"defaultVisible": {
|
|
106
|
+
"type": "boolean",
|
|
107
|
+
"default": false,
|
|
108
|
+
"description": "⚠️ **非受控初始可见性**(rc-tooltip prop,src/Popover/index.tsx:193 defaultProps 实证默认 false)。与 `visible`/`open` 互斥——传 `visible` 后为受控模式,`defaultVisible` 失效。**仅控制首次渲染时的初始展开状态**,之后由 trigger 事件驱动内部 state,父组件无需管理"
|
|
109
|
+
}
|
|
110
|
+
},
|
|
111
|
+
"do": [
|
|
112
|
+
"当内容较多或包含交互(如按钮、链接)时使用 Popover",
|
|
113
|
+
"提供清晰的关闭方式(如果不是 hover 触发)",
|
|
114
|
+
"**children 必须是单一可接收 ref 的 React 元素**:`<Button>` / `<span>` / 自定义 forwardRef 组件均可;传业务接到的 ReactNode 时外层包 `<span style={{display:'inline-block'}}>` 兜底",
|
|
115
|
+
"**省略 title 不渲染标题区**(无空白占位);只展示 content 时直接不传 title 即可(覆盖『无标题快速详情』场景)",
|
|
116
|
+
"**右键菜单场景**:`trigger='contextMenu'`,内部自动 preventDefault;可配合 `visible + onVisibleChange` 实现『点击菜单项后关闭浮层』",
|
|
117
|
+
"**外部按钮控制显隐**:用 `visible + onVisibleChange` 受控;trigger prop 决定 onVisibleChange 被调用的时机(hover/click/contextMenu)",
|
|
118
|
+
"**纯受控 + 任意 trigger 时父组件应忽略 onVisibleChange 请求**(DEFECT-001):trigger 缺 'none' / 'manual' 选项,纯受控场景下用户点击/悬停/右键仍触发 onVisibleChange — 父组件直接保留 visible state 不响应即可,不要主动反向 setState;不需要交互时通过 unmount 完全屏蔽"
|
|
119
|
+
],
|
|
120
|
+
"dont": [
|
|
121
|
+
"仅用于展示简单文本(应使用 Tooltip)",
|
|
122
|
+
"弹出层级过深或遮挡关键信息",
|
|
123
|
+
"**不要给 children 传字符串 / Fragment / 数组**——rc-tooltip 内部约束需挂 ref 监听事件,非元素 children 会让触发失效;如必须传 ReactNode,外层包 inline-block span",
|
|
124
|
+
"**不要传 `onOpenChange`**——src 真实事件名是 `onVisibleChange`,传 onOpenChange 不会触发任何回调",
|
|
125
|
+
"**不要给 trigger 传数组**(如 `['click', 'contextMenu']`)——src 类型仅单值字符串联合;多种触发用受控模式自行监听",
|
|
126
|
+
"不要假设传 visible 后 trigger 仍会切换内部 state——受控模式下 trigger 仅决定 onVisibleChange 被调用的时机,由父组件决定是否真改 visible"
|
|
127
|
+
],
|
|
128
|
+
"events": {
|
|
129
|
+
"onVisibleChange": {
|
|
130
|
+
"signature": "(visible: boolean) => void",
|
|
131
|
+
"asyncSupported": false,
|
|
132
|
+
"examples": [
|
|
133
|
+
"非受控监听:onVisibleChange={(v) => console.log('浮层', v ? '展开' : '收起')}",
|
|
134
|
+
"受控开关:visible={open} onVisibleChange={(v) => setOpen(v)}",
|
|
135
|
+
"点击浮层内关闭按钮后同步状态:onVisibleChange={(v) => { if (!v) setOpen(false); }}"
|
|
136
|
+
],
|
|
137
|
+
"commonMistakes": [
|
|
138
|
+
"事件名写成 onOpenChange——Popover 的事件名是 onVisibleChange,onOpenChange 不会触发",
|
|
139
|
+
"受控时在 onVisibleChange 里 setState(false) 来关闭——可行,但若 trigger='click' 则点击外部也会触发关闭,需确保 state 正确响应",
|
|
140
|
+
"同时传 visible 和 open——visible 优先,二者同时传会造成混乱,任选其一"
|
|
141
|
+
]
|
|
142
|
+
}
|
|
143
|
+
},
|
|
144
|
+
"typescriptPitfalls": [
|
|
145
|
+
{
|
|
146
|
+
"issue": "trigger 不支持数组,只支持单字符串联合类型",
|
|
147
|
+
"wrong": "trigger={['click', 'hover']} // TS 类型报错,src 仅支持单值",
|
|
148
|
+
"right": "trigger='click' // 单一触发;需多种触发时用 visible + onVisibleChange 受控模式"
|
|
149
|
+
},
|
|
150
|
+
{
|
|
151
|
+
"issue": "onVisibleChange 事件名——src 真实字段名,不是 antd v5 的 onOpenChange",
|
|
152
|
+
"wrong": "onOpenChange={(v) => setOpen(v)} // 不会触发,TS 可能不报错(spread 透传),但无效果",
|
|
153
|
+
"right": "onVisibleChange={(v) => setOpen(v)}"
|
|
154
|
+
},
|
|
155
|
+
{
|
|
156
|
+
"issue": "children 须是单一 ReactElement,传 string 或 Fragment 导致触发失效且无 TS 报错",
|
|
157
|
+
"wrong": "// TS 接受 ReactNode,但 rc-tooltip 运行时挂 ref 失败:\n<Popover content={...}>{someStringOrFragment}</Popover>",
|
|
158
|
+
"right": "<Popover content={...}><span style={{ display: 'inline-block' }}>{someStringOrFragment}</span></Popover>"
|
|
159
|
+
}
|
|
160
|
+
],
|
|
161
|
+
"mapping": {
|
|
162
|
+
"realComponent": "Popover",
|
|
163
|
+
"adapter": null
|
|
164
|
+
}
|
|
165
|
+
}
|
package/es/Popover/index.js
CHANGED
|
@@ -6,7 +6,7 @@ import P from "../GlobalContext/usePopupContainer.js";
|
|
|
6
6
|
import g from "clsx";
|
|
7
7
|
import './index.css';/* empty css */
|
|
8
8
|
const m = l.forwardRef((o, t) => {
|
|
9
|
-
const { title: n, content: s, ...c } = o, e = l.useRef(), u = P(e, o.getPopupContainer);
|
|
9
|
+
const { title: n, content: s, ...c } = o, e = l.useRef(null), u = P(e, o.getPopupContainer);
|
|
10
10
|
v(() => {
|
|
11
11
|
t && (typeof t == "function" ? t(e.current) : t.current = e.current);
|
|
12
12
|
}, [e.current]);
|
|
@@ -0,0 +1,161 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "Progress",
|
|
3
|
+
"category": "Feedback",
|
|
4
|
+
"description": "展示操作的当前进度,支持线形/圆形/仪表盘三种形态",
|
|
5
|
+
"semantic": {
|
|
6
|
+
"intent": [
|
|
7
|
+
"展示进度",
|
|
8
|
+
"展示状态",
|
|
9
|
+
"减少焦虑"
|
|
10
|
+
],
|
|
11
|
+
"useCases": [
|
|
12
|
+
"文件上传",
|
|
13
|
+
"页面加载",
|
|
14
|
+
"任务处理"
|
|
15
|
+
],
|
|
16
|
+
"riskLevel": "low"
|
|
17
|
+
},
|
|
18
|
+
"variants": {
|
|
19
|
+
"line": {
|
|
20
|
+
"meaning": "线性进度条"
|
|
21
|
+
},
|
|
22
|
+
"circle": {
|
|
23
|
+
"meaning": "圆形进度条"
|
|
24
|
+
},
|
|
25
|
+
"dashboard": {
|
|
26
|
+
"meaning": "仪表盘"
|
|
27
|
+
}
|
|
28
|
+
},
|
|
29
|
+
"states": [
|
|
30
|
+
"normal",
|
|
31
|
+
"active",
|
|
32
|
+
"success",
|
|
33
|
+
"exception"
|
|
34
|
+
],
|
|
35
|
+
"idealProps": {
|
|
36
|
+
"percent": {
|
|
37
|
+
"type": "number | number[]",
|
|
38
|
+
"default": 0,
|
|
39
|
+
"description": "进度百分比(0-100)。传 number[] 配合 success.percent 展示双段进度(成功段 + 普通段);type='line' 且传了 success 时内部自动拆分为两段"
|
|
40
|
+
},
|
|
41
|
+
"type": {
|
|
42
|
+
"type": "enum",
|
|
43
|
+
"values": [
|
|
44
|
+
"line",
|
|
45
|
+
"circle",
|
|
46
|
+
"dashboard"
|
|
47
|
+
],
|
|
48
|
+
"default": "line",
|
|
49
|
+
"description": "进度条类型。**line** = 横向线形;**circle** = 圆形(width 控制画布大小);**dashboard** = 仪表盘(底部缺口,gapDegree 控制缺口角度)"
|
|
50
|
+
},
|
|
51
|
+
"status": {
|
|
52
|
+
"type": "enum",
|
|
53
|
+
"values": [
|
|
54
|
+
"success",
|
|
55
|
+
"exception",
|
|
56
|
+
"normal",
|
|
57
|
+
"active"
|
|
58
|
+
],
|
|
59
|
+
"default": "normal",
|
|
60
|
+
"description": "状态。**active 仅 type='line' 时有动画效果**;percent=100 且不传 status 时自动变为 success 状态(显示对应图标)"
|
|
61
|
+
},
|
|
62
|
+
"showInfo": {
|
|
63
|
+
"type": "boolean",
|
|
64
|
+
"default": true,
|
|
65
|
+
"description": "是否显示进度数值或状态图标(中心文字或右侧文字)。false 时隐藏 format/百分比/状态图标"
|
|
66
|
+
},
|
|
67
|
+
"strokeColor": {
|
|
68
|
+
"type": "string | object",
|
|
69
|
+
"objectShape": {
|
|
70
|
+
"from": { "type": "string", "description": "渐变起始颜色(CSS 颜色值)" },
|
|
71
|
+
"to": { "type": "string", "description": "渐变终止颜色(CSS 颜色值)" },
|
|
72
|
+
"direction": { "type": "string", "description": "渐变方向,默认 'to right'" },
|
|
73
|
+
"[percent: string]": { "type": "string", "description": "分段颜色,例:{ '0%': '#108ee9', '100%': '#87d068' }" }
|
|
74
|
+
},
|
|
75
|
+
"completeExample": "'#1677ff' 或 { from: '#108ee9', to: '#87d068' } 或 { '0%': '#108ee9', '100%': '#87d068' }",
|
|
76
|
+
"description": "进度条颜色。传字符串为纯色;传对象可配置渐变色(from/to)或分段颜色(百分比 key)"
|
|
77
|
+
},
|
|
78
|
+
"strokeWidth": {
|
|
79
|
+
"type": "number",
|
|
80
|
+
"description": "进度条宽度(line 模式单位 px;circle/dashboard 模式是相对于 width 的百分比)"
|
|
81
|
+
},
|
|
82
|
+
"format": {
|
|
83
|
+
"type": "function",
|
|
84
|
+
"signature": "(percent?: number | number[], successPercent?: number) => React.ReactNode",
|
|
85
|
+
"description": "自定义进度内容的模板函数(src/Progress/index.tsx:62 interface 声明)。返回值为 ReactNode,可以是字符串、数字或 JSX。**不传时默认显示百分比数字**;status='success' 或 status='exception' 时默认显示对应图标"
|
|
86
|
+
},
|
|
87
|
+
"success": {
|
|
88
|
+
"type": "object",
|
|
89
|
+
"objectShape": {
|
|
90
|
+
"percent": { "type": "number", "description": "成功进度的百分比值(0-100)" },
|
|
91
|
+
"strokeColor": { "type": "string", "description": "成功段进度条颜色(CSS 颜色值)" }
|
|
92
|
+
},
|
|
93
|
+
"description": "成功进度条配置(src/Progress/index.tsx:78 SuccessProps 实证)。与 `percent` 配合使用:percent 表示整体进度,success.percent 表示其中成功部分的比例。**仅 `type='line'` 时有意义**(双段进度条)"
|
|
94
|
+
},
|
|
95
|
+
"steps": {
|
|
96
|
+
"type": "number",
|
|
97
|
+
"description": "进度条总分段数(src/Progress/index.tsx:84 实证)。传入后进度条渲染为等分的多个方块。⚠️ **仅 `type='line'` 时生效**;circle/dashboard 模式传 steps 无效果"
|
|
98
|
+
},
|
|
99
|
+
"width": {
|
|
100
|
+
"type": "number",
|
|
101
|
+
"description": "圆形/仪表盘进度条的画布宽度,单位 px(src/Progress/index.tsx:76 实证,默认 132)。⚠️ **仅 `type='circle'` 或 `type='dashboard'` 时生效**;line 模式宽度由容器决定,请用外层 style 控制"
|
|
102
|
+
},
|
|
103
|
+
"gapDegree": {
|
|
104
|
+
"type": "number",
|
|
105
|
+
"default": 75,
|
|
106
|
+
"description": "仪表盘缺口角度(0~295),**仅 type='dashboard' 时生效**(src/Progress/index.tsx:113 实证默认 75)"
|
|
107
|
+
},
|
|
108
|
+
"gapPosition": {
|
|
109
|
+
"type": "enum",
|
|
110
|
+
"values": ["top", "bottom", "left", "right"],
|
|
111
|
+
"description": "仪表盘缺口位置(src/Progress/index.tsx:80 interface 实证),**仅 type='dashboard' 时生效**"
|
|
112
|
+
}
|
|
113
|
+
},
|
|
114
|
+
"do": [
|
|
115
|
+
"在耗时操作中使用 Progress 反馈进度,避免用户等待焦虑",
|
|
116
|
+
"根据完成度切换 status(success/exception)——percent=100 时可不传 status,组件自动切 success",
|
|
117
|
+
"自定义中心文字用 format 函数返回 ReactNode,如显示上传速度/剩余时间"
|
|
118
|
+
],
|
|
119
|
+
"dont": [
|
|
120
|
+
"在瞬间完成的操作中使用 Progress(不必要的闪烁)",
|
|
121
|
+
"进度倒退——percent 值只应单调递增,回退会造成用户困惑",
|
|
122
|
+
"circle/dashboard 模式传 steps 或 active——这两个特性仅对 type='line' 有效"
|
|
123
|
+
],
|
|
124
|
+
"events": {
|
|
125
|
+
"format": {
|
|
126
|
+
"signature": "(percent?: number | number[], successPercent?: number) => React.ReactNode",
|
|
127
|
+
"asyncSupported": false,
|
|
128
|
+
"examples": [
|
|
129
|
+
"显示自定义文字:format={(p) => `${p}%`}",
|
|
130
|
+
"success 状态显示特定内容:format={(p) => p === 100 ? '完成' : `${p}%`}",
|
|
131
|
+
"双段进度(传 number[] 时):format={(p) => Array.isArray(p) ? `成功 ${p[0]}%` : `${p}%`}"
|
|
132
|
+
],
|
|
133
|
+
"commonMistakes": [
|
|
134
|
+
"showInfo=false 时 format 不生效——showInfo 控制整个信息区显隐,false 时 format 结果也不渲染",
|
|
135
|
+
"假设 percent 永远是 number——传了 success prop 时内部可能处理为 number[]",
|
|
136
|
+
"期望 status='exception' 时 format 自动显示错误图标——format 存在时始终使用 format 返回值,覆盖默认图标"
|
|
137
|
+
]
|
|
138
|
+
}
|
|
139
|
+
},
|
|
140
|
+
"typescriptPitfalls": [
|
|
141
|
+
{
|
|
142
|
+
"issue": "status='active' 仅对 type='line' 有动画效果,circle/dashboard 传 active 静默无效",
|
|
143
|
+
"wrong": "<Progress type='circle' percent={60} status='active' /> // 无动画,不报错",
|
|
144
|
+
"right": "<Progress type='line' percent={60} status='active' /> // active 动画仅 line 生效"
|
|
145
|
+
},
|
|
146
|
+
{
|
|
147
|
+
"issue": "width prop 仅控制 circle/dashboard 画布尺寸,line 模式传 width 无效",
|
|
148
|
+
"wrong": "<Progress type='line' percent={60} width={300} /> // line 宽度不受 width 控制",
|
|
149
|
+
"right": "<div style={{ width: 300 }}><Progress type='line' percent={60} /></div> // line 模式用容器控制宽度"
|
|
150
|
+
},
|
|
151
|
+
{
|
|
152
|
+
"issue": "strokeColor 对象形式 from/to 渐变与 '0%'/'100%' 分段不能混用",
|
|
153
|
+
"wrong": "strokeColor={{ from: '#108ee9', '50%': '#87d068', to: '#87d068' }} // 类型冲突",
|
|
154
|
+
"right": "// 渐变:strokeColor={{ from: '#108ee9', to: '#87d068' }}\n// 分段:strokeColor={{ '0%': '#108ee9', '100%': '#87d068' }}"
|
|
155
|
+
}
|
|
156
|
+
],
|
|
157
|
+
"mapping": {
|
|
158
|
+
"realComponent": "Progress",
|
|
159
|
+
"adapter": null
|
|
160
|
+
}
|
|
161
|
+
}
|