@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/MultiBox/index.js
CHANGED
|
@@ -10,7 +10,7 @@ import ae from "../GlobalContext/useFormatMessage.js";
|
|
|
10
10
|
import ie from "./lang/index.js";
|
|
11
11
|
import { Tooltip as ne } from "../Tooltip/index.js";
|
|
12
12
|
import './index.css';/* empty css */
|
|
13
|
-
const ye = (
|
|
13
|
+
const ye = (u) => {
|
|
14
14
|
const {
|
|
15
15
|
className: C,
|
|
16
16
|
style: D,
|
|
@@ -29,14 +29,14 @@ const ye = (n) => {
|
|
|
29
29
|
helperText: d = "",
|
|
30
30
|
value: x,
|
|
31
31
|
replaceFields: v,
|
|
32
|
-
onChange:
|
|
32
|
+
onChange: n,
|
|
33
33
|
fetchSuggestionsKey: j,
|
|
34
34
|
fetchSuggestionsValue: g,
|
|
35
35
|
keyOtherProps: k,
|
|
36
36
|
valueOtherProps: T
|
|
37
|
-
} =
|
|
37
|
+
} = u, S = !!(d && typeof d == "string"), J = d instanceof Array, w = ae("MultiBox", ie), [o, c] = M([]), [a, G] = M({ key: "label", value: "value" });
|
|
38
38
|
y(() => {
|
|
39
|
-
|
|
39
|
+
u.defaultValue !== void 0 && c([...u.defaultValue]);
|
|
40
40
|
}, []), y(() => {
|
|
41
41
|
x !== void 0 && c([...x]);
|
|
42
42
|
}, [x]), y(() => {
|
|
@@ -48,19 +48,19 @@ const ye = (n) => {
|
|
|
48
48
|
const $ = (t, e) => {
|
|
49
49
|
let l = { error: !1, helperText: "" };
|
|
50
50
|
if (J) {
|
|
51
|
-
const
|
|
52
|
-
|
|
51
|
+
const i = d[t];
|
|
52
|
+
i && i[e] && (l = {
|
|
53
53
|
error: !0,
|
|
54
|
-
helperText:
|
|
54
|
+
helperText: i[e]
|
|
55
55
|
});
|
|
56
56
|
}
|
|
57
57
|
return l;
|
|
58
58
|
}, Q = () => {
|
|
59
|
-
s !== !0 && (o.push({}),
|
|
59
|
+
s !== !0 && (o.push({}), u.value === void 0 && c([...o]), n && n(o));
|
|
60
60
|
}, U = (t) => () => {
|
|
61
|
-
s !== !0 && (o.splice(t, 1),
|
|
61
|
+
s !== !0 && (o.splice(t, 1), u.value === void 0 && c([...o]), n && n(o));
|
|
62
62
|
}, A = (t, e) => (l) => {
|
|
63
|
-
o[e][t] = l.target.value,
|
|
63
|
+
o[e][t] = l.target.value, u.value === void 0 && c([...o]), n && n(o);
|
|
64
64
|
}, W = () => {
|
|
65
65
|
if (!N && !V) return null;
|
|
66
66
|
const t = () => {
|
|
@@ -78,7 +78,7 @@ const ye = (n) => {
|
|
|
78
78
|
}
|
|
79
79
|
);
|
|
80
80
|
}, X = (t, e) => {
|
|
81
|
-
const l = t[a.key || ""] || "",
|
|
81
|
+
const l = t[a.key || ""] || "", i = t[a.value || ""] || "", ee = s instanceof Array ? s[e]?.[l] : s, te = s instanceof Array ? s[e]?.[i] : s, K = $(e, a.key || ""), O = $(e, a.value || "");
|
|
82
82
|
let L = "multi-box-content-item-input";
|
|
83
83
|
return (K.error || O.error) && (L += " multi-box-content-item-input-error"), /* @__PURE__ */ r.jsxs("div", { className: L, children: [
|
|
84
84
|
/* @__PURE__ */ r.jsx(
|
|
@@ -104,12 +104,12 @@ const ye = (n) => {
|
|
|
104
104
|
size: f,
|
|
105
105
|
disabled: te,
|
|
106
106
|
placeholder: R,
|
|
107
|
-
value:
|
|
107
|
+
value: i,
|
|
108
108
|
...O,
|
|
109
109
|
onChange: A(a.value || "", e),
|
|
110
110
|
fetchSuggestions: g ? E("value") : void 0,
|
|
111
111
|
onSelect: F(a.value || "", e),
|
|
112
|
-
...T && T(e,
|
|
112
|
+
...T && T(e, i)
|
|
113
113
|
}
|
|
114
114
|
)
|
|
115
115
|
] });
|
|
@@ -133,7 +133,12 @@ const ye = (n) => {
|
|
|
133
133
|
)) }), E = (t) => (e, l) => {
|
|
134
134
|
t === "key" ? j && j(e, l) : g && g(e, l);
|
|
135
135
|
}, F = (t, e) => (l) => {
|
|
136
|
-
typeof l == "object" && l !== null
|
|
136
|
+
if (typeof l == "object" && l !== null) {
|
|
137
|
+
const i = l.value;
|
|
138
|
+
o[e][t] = i;
|
|
139
|
+
} else
|
|
140
|
+
o[e][t] = l;
|
|
141
|
+
u.value === void 0 && c([...o]), n && n(o);
|
|
137
142
|
}, Z = () => {
|
|
138
143
|
let t = `${m}-multi-box multi-box`;
|
|
139
144
|
return C && (t += ` ${C}`), f && (t += ` ${m}-multi-box-${f}`), z && (t += ` ${m}-multi-box-error`), s === !0 && (t += ` ${m}-multi-box-disabled`), b && (t += ` ${m}-multi-box-separator`), t;
|
|
@@ -0,0 +1,184 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "Notification",
|
|
3
|
+
"category": "Feedback",
|
|
4
|
+
"description": "全局通知提醒框,通过命令式 API(Notification.open / .success / .info / .warning / .error)触发,支持角落定位、标题 + 内容 + 操作按钮、可关闭回调、key 管理",
|
|
5
|
+
"semantic": {
|
|
6
|
+
"intent": [
|
|
7
|
+
"系统通知",
|
|
8
|
+
"重要提醒",
|
|
9
|
+
"复杂反馈"
|
|
10
|
+
],
|
|
11
|
+
"useCases": [
|
|
12
|
+
"系统升级通知",
|
|
13
|
+
"后台任务完成提醒",
|
|
14
|
+
"带操作按钮的系统消息"
|
|
15
|
+
],
|
|
16
|
+
"riskLevel": "normal"
|
|
17
|
+
},
|
|
18
|
+
"protocolSummary": "**命令式 API,不是 React 组件**。调用方式:\n```\nNotification.success({ message: '标题', description: '内容', duration: 3 })\nNotification.info({ message: '提示', description: '详情' })\nNotification.warning({ message: '警告', description: '说明' })\nNotification.error({ message: '错误', description: '信息' })\nNotification.open({ message: '标题', description: '内容', type: 'success' }) // open 是 success/info/warning/error 的底层\nNotification.close('my-key') // 关闭指定 key 的通知\nNotification.destroy() // 关闭所有通知\nNotification.config({ placement, top, maxCount, duration }) // 全局配置\n```\n**duration 单位是秒**(与 Message.duration 毫秒不同!)。默认 5 秒自动关闭;传 null 不自动关闭。",
|
|
19
|
+
"variants": {
|
|
20
|
+
"success": { "meaning": "成功(绿色 ✓ 图标)" },
|
|
21
|
+
"info": { "meaning": "普通信息(蓝色 i 图标)" },
|
|
22
|
+
"warning": { "meaning": "警告(黄色 ! 图标)" },
|
|
23
|
+
"error": { "meaning": "错误(红色 × 图标)" }
|
|
24
|
+
},
|
|
25
|
+
"states": [
|
|
26
|
+
"opening",
|
|
27
|
+
"closing"
|
|
28
|
+
],
|
|
29
|
+
"idealProps": {
|
|
30
|
+
"message": {
|
|
31
|
+
"type": "ReactNode",
|
|
32
|
+
"description": "通知标题(必填),通知卡片上方的粗体文字"
|
|
33
|
+
},
|
|
34
|
+
"description": {
|
|
35
|
+
"type": "ReactNode",
|
|
36
|
+
"description": "通知正文内容;与 message 同时出现时,message 作为标题,description 作为正文"
|
|
37
|
+
},
|
|
38
|
+
"duration": {
|
|
39
|
+
"type": "number | null",
|
|
40
|
+
"default": 5,
|
|
41
|
+
"description": "**自动关闭延时,单位秒**(注意:与 Message 组件的毫秒单位不同!);传 null 不自动关闭(需用户点击关闭按钮或调用 Notification.close(key))"
|
|
42
|
+
},
|
|
43
|
+
"placement": {
|
|
44
|
+
"type": "enum",
|
|
45
|
+
"values": ["topLeft", "topRight", "bottomLeft", "bottomRight"],
|
|
46
|
+
"default": "topRight",
|
|
47
|
+
"description": "弹出位置,4 个角落,topRight 最常用"
|
|
48
|
+
},
|
|
49
|
+
"key": {
|
|
50
|
+
"type": "string",
|
|
51
|
+
"description": "通知唯一标志;传了 key 才能用 Notification.close(key) 程序性关闭;同一 key 再次 open 会更新已有通知"
|
|
52
|
+
},
|
|
53
|
+
"onClose": {
|
|
54
|
+
"type": "() => void",
|
|
55
|
+
"description": "关闭时触发(自动关闭 + 用户手动关闭都触发)"
|
|
56
|
+
},
|
|
57
|
+
"onClick": {
|
|
58
|
+
"type": "() => void",
|
|
59
|
+
"description": "点击通知内容区域(非关闭按钮)时触发"
|
|
60
|
+
},
|
|
61
|
+
"btn": {
|
|
62
|
+
"type": "ReactNode",
|
|
63
|
+
"description": "通知卡片底部自定义操作区域(如 '立即更新' 按钮)"
|
|
64
|
+
},
|
|
65
|
+
"icon": {
|
|
66
|
+
"type": "ReactNode",
|
|
67
|
+
"description": "自定义图标,覆盖 type 默认图标"
|
|
68
|
+
},
|
|
69
|
+
"top": {
|
|
70
|
+
"type": "number",
|
|
71
|
+
"default": 20,
|
|
72
|
+
"description": "topLeft/topRight 时距顶部距离(px)"
|
|
73
|
+
},
|
|
74
|
+
"bottom": {
|
|
75
|
+
"type": "number",
|
|
76
|
+
"default": 20,
|
|
77
|
+
"description": "bottomLeft/bottomRight 时距底部距离(px)"
|
|
78
|
+
},
|
|
79
|
+
"getContainer": {
|
|
80
|
+
"type": "() => HTMLElement",
|
|
81
|
+
"description": "渲染容器,默认 document.body"
|
|
82
|
+
}
|
|
83
|
+
},
|
|
84
|
+
"commonPatterns": {
|
|
85
|
+
"basic": "Notification.success({ message: '操作成功', description: '数据已保存', duration: 3 })",
|
|
86
|
+
"persistent": "Notification.warning({ message: '需要确认', description: '请及时处理', duration: null, key: 'warn-1' });\n// 处理完成后:\nNotification.close('warn-1');",
|
|
87
|
+
"withButton": "Notification.info({\n message: '发现新版本',\n description: 'v2.0.0 已发布',\n duration: null,\n key: 'update',\n btn: <Button onClick={() => { window.open(releaseUrl); Notification.close('update'); }}>立即更新</Button>\n});",
|
|
88
|
+
"globalConfig": "Notification.config({ placement: 'topRight', top: 60, maxCount: 5, duration: 3 });"
|
|
89
|
+
},
|
|
90
|
+
"commandApi": {
|
|
91
|
+
"Notification.open": {
|
|
92
|
+
"signature": "(args: ArgsProps) => void",
|
|
93
|
+
"description": "打开通知,所有 ideaProps 字段均为 ArgsProps 的字段"
|
|
94
|
+
},
|
|
95
|
+
"Notification.success": {
|
|
96
|
+
"signature": "(args: ArgsProps) => void",
|
|
97
|
+
"description": "等价于 Notification.open({...args, type: 'success'})"
|
|
98
|
+
},
|
|
99
|
+
"Notification.info": {
|
|
100
|
+
"signature": "(args: ArgsProps) => void"
|
|
101
|
+
},
|
|
102
|
+
"Notification.warning": {
|
|
103
|
+
"signature": "(args: ArgsProps) => void",
|
|
104
|
+
"description": "Notification.warn 是 Notification.warning 的别名"
|
|
105
|
+
},
|
|
106
|
+
"Notification.error": {
|
|
107
|
+
"signature": "(args: ArgsProps) => void"
|
|
108
|
+
},
|
|
109
|
+
"Notification.close": {
|
|
110
|
+
"signature": "(key: string) => void",
|
|
111
|
+
"description": "关闭指定 key 的通知,遍历所有 placement 实例"
|
|
112
|
+
},
|
|
113
|
+
"Notification.destroy": {
|
|
114
|
+
"signature": "() => void",
|
|
115
|
+
"description": "销毁所有通知实例(包括已显示的和正在动画的)"
|
|
116
|
+
},
|
|
117
|
+
"Notification.config": {
|
|
118
|
+
"signature": "(options: ConfigProps) => void",
|
|
119
|
+
"description": "全局配置,应用入口调用一次"
|
|
120
|
+
}
|
|
121
|
+
},
|
|
122
|
+
"do": [
|
|
123
|
+
"用于比 Message 更重要的、需要用户关注的全局通知(如系统升级、任务完成)",
|
|
124
|
+
"**duration 单位是秒**(默认 5),不是毫秒——与 Message 组件不同",
|
|
125
|
+
"需要程序性关闭时传 key 字段并用 Notification.close(key)",
|
|
126
|
+
"App 入口调用 Notification.config 设置全局 placement / maxCount / duration"
|
|
127
|
+
],
|
|
128
|
+
"dont": [
|
|
129
|
+
"频繁使用 Notification 打断用户操作——轻提示用 Message,重要操作确认用 FunctionModal",
|
|
130
|
+
"堆叠过多——配合 maxCount 限制同时显示数量",
|
|
131
|
+
"把 duration 写成毫秒——duration 是秒,写 3000 会导致通知 3000 秒后才关闭"
|
|
132
|
+
],
|
|
133
|
+
"events": {
|
|
134
|
+
"onClose": {
|
|
135
|
+
"signature": "() => void",
|
|
136
|
+
"asyncSupported": false,
|
|
137
|
+
"examples": [
|
|
138
|
+
"Notification.info({ message: '提示', onClose: () => console.log('已关闭') }) — 自动关闭和手动关闭都触发",
|
|
139
|
+
"持久通知 + 关闭回调:Notification.warning({ message: '警告', duration: null, key: 'w1', onClose: () => markAsRead() })",
|
|
140
|
+
"配合 key 程序关闭:Notification.close('w1') 也会触发 onClose"
|
|
141
|
+
],
|
|
142
|
+
"commonMistakes": [
|
|
143
|
+
"期望 onClose 签名是 (e) => void——实际无参 () => void",
|
|
144
|
+
"传了 onClose 但没有显式关闭路径——duration=null 时通知不自动关闭,onClose 永不触发(除非用户点 × 或程序调用 close)",
|
|
145
|
+
"在 onClose 里再次调 Notification.open 期望实现替换效果——会新开一条通知,建议用 key 复用已有实例"
|
|
146
|
+
]
|
|
147
|
+
},
|
|
148
|
+
"onClick": {
|
|
149
|
+
"signature": "() => void",
|
|
150
|
+
"asyncSupported": false,
|
|
151
|
+
"examples": [
|
|
152
|
+
"Notification.info({ message: '新消息', onClick: () => router.push('/messages') }) — 点击跳转",
|
|
153
|
+
"onClick 不关闭通知——需在 onClick 里手动调 Notification.close(key) 或让 duration 到期",
|
|
154
|
+
"onClick 和 btn 的 onClick 独立——通知区域点击 + 底部按钮点击是两个独立事件"
|
|
155
|
+
],
|
|
156
|
+
"commonMistakes": [
|
|
157
|
+
"期望点击通知后自动关闭——onClick 不触发关闭,需在 onClick 里手动 Notification.close(args.key)",
|
|
158
|
+
"在 btn 里写关闭逻辑而不传 key——没有 key 就无法调 Notification.close,需预先生成 key",
|
|
159
|
+
"期望 onClick 阻止通知关闭——点击关闭按钮(×)触发的是关闭逻辑,不能被 onClick 拦截"
|
|
160
|
+
]
|
|
161
|
+
}
|
|
162
|
+
},
|
|
163
|
+
"typescriptPitfalls": [
|
|
164
|
+
{
|
|
165
|
+
"issue": "duration 单位是秒,不是毫秒——与 Message 不一致是常见陷阱",
|
|
166
|
+
"wrong": "Notification.success({ message: '成功', duration: 3000 }) // 3000 秒后才关闭!不是 3 秒",
|
|
167
|
+
"right": "Notification.success({ message: '成功', duration: 3 }) // 3 秒后自动关闭"
|
|
168
|
+
},
|
|
169
|
+
{
|
|
170
|
+
"issue": "Notification 是命令式 API,default export 是 api 对象,不是 React 组件,不能写 JSX",
|
|
171
|
+
"wrong": "import Notification from '@para-ui/core/Notification'; return <Notification message='提示' />; // JSX 类型错误",
|
|
172
|
+
"right": "import Notification from '@para-ui/core/Notification'; Notification.info({ message: '提示' }); // 命令式调用"
|
|
173
|
+
},
|
|
174
|
+
{
|
|
175
|
+
"issue": "message 类型是 ReactNode,但 ArgsProps 中 message 是必填字段,不传会导致 TS 报错",
|
|
176
|
+
"wrong": "Notification.open({ description: '内容' }) // TS2345: Property 'message' is missing",
|
|
177
|
+
"right": "Notification.open({ message: '标题', description: '内容' }) // message 必填"
|
|
178
|
+
}
|
|
179
|
+
],
|
|
180
|
+
"mapping": {
|
|
181
|
+
"realComponent": "Notification",
|
|
182
|
+
"adapter": null
|
|
183
|
+
}
|
|
184
|
+
}
|
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "OperateBtn",
|
|
3
|
+
"category": "General",
|
|
4
|
+
"description": "表格列操作按钮组,将多个行操作收纳为图标按钮 + 更多浮层,常配合 Table 使用",
|
|
5
|
+
"semantic": {
|
|
6
|
+
"intent": [
|
|
7
|
+
"行操作",
|
|
8
|
+
"批量操作",
|
|
9
|
+
"操作收纳"
|
|
10
|
+
],
|
|
11
|
+
"useCases": [
|
|
12
|
+
"表格操作列",
|
|
13
|
+
"卡片操作区",
|
|
14
|
+
"工具栏"
|
|
15
|
+
],
|
|
16
|
+
"riskLevel": "normal"
|
|
17
|
+
},
|
|
18
|
+
"variants": {
|
|
19
|
+
"default": {
|
|
20
|
+
"meaning": "默认样式"
|
|
21
|
+
}
|
|
22
|
+
},
|
|
23
|
+
"states": [
|
|
24
|
+
"default",
|
|
25
|
+
"loading"
|
|
26
|
+
],
|
|
27
|
+
"idealProps": {
|
|
28
|
+
"list": {
|
|
29
|
+
"type": "OperateBtnListProps[]",
|
|
30
|
+
"itemSchema": {
|
|
31
|
+
"key": { "type": "string", "description": "唯一标识(与组件 key prop 配合,用于 loadingMapping 索引)" },
|
|
32
|
+
"label": { "type": "ReactNode", "description": "按钮显示文案" },
|
|
33
|
+
"icon": { "type": "ReactNode", "description": "按钮图标(外显按钮展示区域,显示 icon 而非 label)" },
|
|
34
|
+
"disabled": { "type": "boolean", "description": "是否禁用" },
|
|
35
|
+
"danger": { "type": "boolean", "description": "是否为危险按钮(红色)" },
|
|
36
|
+
"toolTipTitle": { "type": "ReactNode", "description": "hover tooltip 文案;外显按钮默认取 toolTipTitle ?? label 作 tooltip" },
|
|
37
|
+
"popConfirmProps": { "type": "PopConfirmProps", "description": "点击弹出气泡确认框的配置" },
|
|
38
|
+
"onClick": { "type": "(item: OperateBtnListProps, e: any) => void | Promise<boolean|any>", "description": "单项点击事件(优先级高于组件级 onClick);Promise resolve(false) 关闭 loading" }
|
|
39
|
+
},
|
|
40
|
+
"description": "按钮列表配置(每项含 label/icon/key/disabled/danger/toolTipTitle/popConfirmProps/onClick)"
|
|
41
|
+
},
|
|
42
|
+
"showNum": {
|
|
43
|
+
"type": "number",
|
|
44
|
+
"default": 3,
|
|
45
|
+
"description": "前 N 个按钮外显,超出折叠到更多浮层;⚠️ 仅 list.length > showNum + 1 才出现更多按钮(差值严格大于 1),若 list.length === showNum+1 最后一个也外显不进更多"
|
|
46
|
+
},
|
|
47
|
+
"key": {
|
|
48
|
+
"type": "string",
|
|
49
|
+
"default": "key",
|
|
50
|
+
"description": "指定 list 项中作为 loadingMapping 索引的字段名(不是 React key,是 list 项对象里用于 loadingMapping 映射的字段路径名)"
|
|
51
|
+
},
|
|
52
|
+
"size": {
|
|
53
|
+
"type": "enum",
|
|
54
|
+
"values": ["small", "medium", "large"],
|
|
55
|
+
"default": "small",
|
|
56
|
+
"description": "按钮大小;表格行内推荐 small"
|
|
57
|
+
},
|
|
58
|
+
"placement": {
|
|
59
|
+
"type": "Placement",
|
|
60
|
+
"default": "bottom-end",
|
|
61
|
+
"description": "外显按钮 Tooltip 及更多浮层的定位方向(src/OperateBtn/index.tsx:88 interface 实证,默认 bottom-end)"
|
|
62
|
+
},
|
|
63
|
+
"clickCloseMore": {
|
|
64
|
+
"type": "boolean",
|
|
65
|
+
"default": true,
|
|
66
|
+
"description": "点击 list 项后是否自动关闭更多浮层"
|
|
67
|
+
},
|
|
68
|
+
"onClick": {
|
|
69
|
+
"type": "(item: OperateBtnListProps, e: any) => void | Promise<boolean | any>",
|
|
70
|
+
"description": "组件级点击事件;list 项自带 item.onClick 时对本项失效(item.onClick 优先级更高);非受控 loading 下 Promise resolve(false) 表示失败、保持按钮 loading;resolve(true/undefined) 关闭 loading"
|
|
71
|
+
},
|
|
72
|
+
"loadingMapping": {
|
|
73
|
+
"type": "{[name: string]: boolean}",
|
|
74
|
+
"description": "受控 loading 映射;键 = item[key] 字段值;传入后 onClick 返回值不再控制 loading,由外部控制"
|
|
75
|
+
},
|
|
76
|
+
"popoverClassName": {
|
|
77
|
+
"type": "string",
|
|
78
|
+
"description": "更多浮层的自定义 className(src/OperateBtn/index.tsx:73 interface 实证)"
|
|
79
|
+
}
|
|
80
|
+
},
|
|
81
|
+
"do": [
|
|
82
|
+
"表格行内操作首选 OperateBtn,将编辑/删除/查看等图标按钮组合为一组,超出 showNum 自动收纳到更多",
|
|
83
|
+
"危险操作(删除等)配合 list[i].popConfirmProps 弹二次确认,避免误操作",
|
|
84
|
+
"提供 loading 状态反馈:短请求用内置非受控 loading(onClick 返回 Promise),长请求或多处联动用 loadingMapping 受控",
|
|
85
|
+
"list 每项必须有 icon 或 toolTipTitle 其中之一,外显按钮以图标展示,tooltip 才能给用户提示操作语义"
|
|
86
|
+
],
|
|
87
|
+
"dont": [
|
|
88
|
+
"不要在 loadingMapping 键中使用数组下标——键应匹配 item[key] 字段(默认 item.key),而非 list 索引",
|
|
89
|
+
"危险操作不加 popConfirmProps 确认直接删除",
|
|
90
|
+
"操作按钮超过 5 个不分组——超出部分应通过 showNum 折叠,或拆分为多个操作区"
|
|
91
|
+
],
|
|
92
|
+
"events": {
|
|
93
|
+
"onClick": {
|
|
94
|
+
"signature": "(item: OperateBtnListProps, e: any) => void | Promise<boolean | any>",
|
|
95
|
+
"asyncSupported": true,
|
|
96
|
+
"examples": [
|
|
97
|
+
"基本同步点击:onClick={(item, e) => { handleAction(item); }}",
|
|
98
|
+
"异步操作自动 loading:onClick={async (item, e) => { await deleteRow(item.id); return true; }} // resolve(true) 关闭 loading",
|
|
99
|
+
"配合 key prop 做受控 loading:loadingMapping={{ [row.id]: isDeleting }} // 外部控制 loading 状态"
|
|
100
|
+
],
|
|
101
|
+
"commonMistakes": [
|
|
102
|
+
"item.onClick 与组件级 onClick 混用——item.onClick 存在时组件级 onClick 对该项失效,二选一即可",
|
|
103
|
+
"期望 Promise resolve(false) 关闭 loading——resolve(false) 是失败语义,loading 保持;resolve(true/undefined) 才关闭",
|
|
104
|
+
"同时传 loadingMapping 又在 onClick 里 return Promise——传 loadingMapping 后 Promise 返回值不影响 loading,由外部 state 控制"
|
|
105
|
+
]
|
|
106
|
+
}
|
|
107
|
+
},
|
|
108
|
+
"typescriptPitfalls": [
|
|
109
|
+
{
|
|
110
|
+
"issue": "OperateBtnListProps 的 key 字段与 React 的 key 属性同名但语义不同",
|
|
111
|
+
"wrong": "// 期望 React key:\nlist={[{ key: 'edit', label: '编辑', icon: <Edit /> }]} // OperateBtn 的 key prop 用于 loadingMapping 索引,不是 React reconcile key",
|
|
112
|
+
"right": "// loadingMapping 键要和 list 项里的 key 字段值对应:\nlist={[{ key: 'edit', label: '编辑', icon: <Edit /> }]}\nloadingMapping={{ edit: isLoading }}"
|
|
113
|
+
},
|
|
114
|
+
{
|
|
115
|
+
"issue": "OperateBtnProps.key 是字符串(字段路径名),不是数组下标",
|
|
116
|
+
"wrong": "<OperateBtn key='id' list={list} loadingMapping={{ 0: true }} /> // 用数组下标做 mapping 键",
|
|
117
|
+
"right": "<OperateBtn key='id' list={list} loadingMapping={{ [list[0].id]: true }} /> // 键应是 item[keyProp] 的值"
|
|
118
|
+
},
|
|
119
|
+
{
|
|
120
|
+
"issue": "list 每项的 onClick 签名是 (item, e),不是单参数 (e)",
|
|
121
|
+
"wrong": "list={[{ icon: <Edit />, onClick: (e) => e.stopPropagation() }]} // 签名不匹配",
|
|
122
|
+
"right": "list={[{ icon: <Edit />, onClick: (item, e) => { e.stopPropagation(); handleEdit(item); } }]}"
|
|
123
|
+
},
|
|
124
|
+
{
|
|
125
|
+
"issue": "@para-ui/icons 中不存在 View 和 Share 图标,使用会导致 TS2307 模块找不到",
|
|
126
|
+
"wrong": "import View from '@para-ui/icons/View'; // TS2307: 找不到模块\nimport Share from '@para-ui/icons/Share'; // TS2307: 找不到模块",
|
|
127
|
+
"right": "import PreviewOpen from '@para-ui/icons/PreviewOpen'; // 查看/预览\nimport More from '@para-ui/icons/More'; // 更多操作\n// 可用图标:Edit, Delete, Copy, More, PreviewOpen, PreviewClose 等"
|
|
128
|
+
}
|
|
129
|
+
],
|
|
130
|
+
"mapping": {
|
|
131
|
+
"realComponent": "OperateBtn",
|
|
132
|
+
"adapter": null
|
|
133
|
+
}
|
|
134
|
+
}
|
package/es/OperateBtn/index.d.ts
CHANGED
|
@@ -21,10 +21,10 @@ export interface OperateBtnListProps {
|
|
|
21
21
|
/** 设置危险按钮 */
|
|
22
22
|
danger?: boolean;
|
|
23
23
|
/** 点击事件 */
|
|
24
|
-
onClick?: (item: OperateBtnListProps, e:
|
|
24
|
+
onClick?: (item: OperateBtnListProps, e: React.MouseEvent) => void | Promise<boolean | void>;
|
|
25
25
|
/** 气泡确认框参数 */
|
|
26
26
|
popConfirmProps?: PopConfirmProps;
|
|
27
|
-
[name: string]:
|
|
27
|
+
[name: string]: unknown;
|
|
28
28
|
}
|
|
29
29
|
export interface OperateBtnProps {
|
|
30
30
|
/** 样式class */
|
|
@@ -50,7 +50,7 @@ export interface OperateBtnProps {
|
|
|
50
50
|
/** 点击是否关闭更多 */
|
|
51
51
|
clickCloseMore?: boolean;
|
|
52
52
|
/** 点击事件, 如果listItem里面存在onClick事件,则不触发改事件 */
|
|
53
|
-
onClick?: (item: OperateBtnListProps, e:
|
|
53
|
+
onClick?: (item: OperateBtnListProps, e: React.MouseEvent) => void | Promise<boolean | void>;
|
|
54
54
|
}
|
|
55
55
|
declare const OperateBtn: FunctionComponent<OperateBtnProps>;
|
|
56
56
|
export default OperateBtn;
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "PageHeader",
|
|
3
|
+
"category": "Navigation",
|
|
4
|
+
"description": "页头(应用级顶部导航条):左侧 logo/标题 + 中间横向菜单 + 右侧用户/语言/帮助/按钮区",
|
|
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
|
+
],
|
|
26
|
+
"idealProps": {
|
|
27
|
+
"leftRender": {
|
|
28
|
+
"type": "ReactNode",
|
|
29
|
+
"description": "左侧自定义内容(放 logo / 应用标题 / 返回按钮等);**支持纯文本 / 单行 JSX / 多行复合 JSX**(标题+副标题、返回按钮+标题、面包屑+标题、标题+状态彩标);**注意:不是 title / subTitle / backIcon / breadcrumb / onBack prop**(这些 Ant Design PageHeader 命名本组件均不存在,需要时全部组合进 leftRender ReactNode);典型场景见 docs/view/pageHeader/codeString.ts 注释 7a/7b/7c/7d"
|
|
30
|
+
},
|
|
31
|
+
"menuListProps": {
|
|
32
|
+
"type": "MenuListProps",
|
|
33
|
+
"description": "横向菜单配置对象;MenuListProps = { list?: MenuChildrenProps[]; selectMenu?: string; onClickMenu?: (item: MenuChildrenProps | false) => void; className?: string; moreCustomize?: ReactNode };src/PageHeader/interface.ts:38"
|
|
34
|
+
},
|
|
35
|
+
"footerProps": {
|
|
36
|
+
"type": "FooterProps",
|
|
37
|
+
"description": "**右侧功能区聚合对象**(放语言切换 / 用户菜单 / 帮助 / 按钮列表 / 自助跳转 / 自定义);FooterProps = { backSelfcareProps?: BackSelfcareProps; languageProps?: LanguageProps; btnListProps?: BtnListProps; userProps?: UserProps; helpProps?: HelpProps; render?: ReactNode; className?: string };**所有右侧功能都在这个对象里嵌套配置,不是顶层独立 prop**;**helpProps 结构同 BackSelfcareProps**(label/icon/render/onClick/className);**render 是「替换」语义**,传入后整个右侧被替换,其他 5 widget 字段都不渲染(无追加模式);src/PageHeader/interface.ts:162"
|
|
38
|
+
},
|
|
39
|
+
"selectMenu": {
|
|
40
|
+
"type": "string",
|
|
41
|
+
"description": "当前选中菜单(匹配 menuListProps.list[].path);顶层 selectMenu 会下传到 MenuListProps.selectMenu;src/PageHeader/index.tsx:14"
|
|
42
|
+
},
|
|
43
|
+
"onClickMenu": {
|
|
44
|
+
"type": "(item: MenuChildrenProps | false) => void",
|
|
45
|
+
"description": "菜单点击回调;**回参 item 是 MenuChildrenProps 对象或 false**(false 表示选中态被清空);MenuChildrenProps = { label?, type?, path?, icon?, children?, ... },典型用法 `item.path` 取菜单路径"
|
|
46
|
+
},
|
|
47
|
+
"className": {
|
|
48
|
+
"type": "string",
|
|
49
|
+
"description": "外层容器样式 class"
|
|
50
|
+
},
|
|
51
|
+
"style": {
|
|
52
|
+
"type": "React.CSSProperties",
|
|
53
|
+
"description": "外层容器内联样式"
|
|
54
|
+
}
|
|
55
|
+
},
|
|
56
|
+
"do": [
|
|
57
|
+
"logo / 应用名放 leftRender",
|
|
58
|
+
"横向菜单走 menuListProps.list(树形结构通过 children 嵌套)",
|
|
59
|
+
"右侧功能(语言 / 用户 / 帮助 / 按钮)统一在 footerProps 对象里嵌套配置",
|
|
60
|
+
"selectMenu 受控 — 父维护 string 匹配 list[].path"
|
|
61
|
+
],
|
|
62
|
+
"dont": [
|
|
63
|
+
"把 title / subTitle / extra / onBack / backIcon / breadcrumb / footer 当作顶层 prop 传(全部 Ant Design 命名,**本组件均不存在**)",
|
|
64
|
+
"把右侧功能字段(languageProps / userProps / btnListProps / helpProps / backSelfcareProps)拆到顶层(必须嵌套在 footerProps 对象里)",
|
|
65
|
+
"在 menuListProps.list[].type 上随意填值(仅支持 'redirect' | 'router' | 'iframe' | 'snack' | 'snackPage' 五种)",
|
|
66
|
+
"传 footerProps.render 同时配其他 widget 字段(render 是**替换语义**,会覆盖整个右侧,languageProps/userProps 等都不渲染;无追加模式)",
|
|
67
|
+
"期望 PageHeader 顶层有 bottomRender / footerRender / statsRender / extraBottom 下方内容区(**本组件不支持下方扩展插槽**;如需统计条/标签栏在 PageHeader 外层 div 包装)",
|
|
68
|
+
"把「标题 + 副标题」/「返回按钮 + 标题」/「面包屑 + 标题」拆成多个顶层 prop(本组件这类复合内容**全部塞进 leftRender ReactNode**;见 docs/view/pageHeader/codeString.ts 注释 7a/7b/7c)"
|
|
69
|
+
],
|
|
70
|
+
"events": {
|
|
71
|
+
"onClickMenu": {
|
|
72
|
+
"signature": "(item: MenuChildrenProps | false) => void",
|
|
73
|
+
"asyncSupported": false,
|
|
74
|
+
"examples": [
|
|
75
|
+
"获取路由路径:onClickMenu={(item) => { if (item) navigate(item.path); }}",
|
|
76
|
+
"清空选中:onClickMenu={(item) => { if (!item) setSelectMenu(''); else setSelectMenu(item.path); }}",
|
|
77
|
+
"嵌套子菜单点击:回参 item.children 可能有子项,item.path 是当前点击项的路径,非父级路径"
|
|
78
|
+
],
|
|
79
|
+
"commonMistakes": [
|
|
80
|
+
"假设 item 永远是对象——回参可能是 false(表示选中态被清空),使用前需判断 if (item)",
|
|
81
|
+
"直接用 item.label 作路由——应用 item.path;item.label 是显示文案",
|
|
82
|
+
"不更新 selectMenu 导致菜单高亮不同步——onClickMenu 触发后需 setState(item.path) 回写 selectMenu"
|
|
83
|
+
]
|
|
84
|
+
}
|
|
85
|
+
},
|
|
86
|
+
"typescriptPitfalls": [
|
|
87
|
+
{
|
|
88
|
+
"issue": "footerProps 内字段不能拆到 PageHeader 顶层,TS 会报未知 prop",
|
|
89
|
+
"wrong": "<PageHeader userProps={{ label: '张三' }} languageProps={{ ... }} /> // 这些不是顶层 prop",
|
|
90
|
+
"right": "<PageHeader footerProps={{ userProps: { label: '张三' }, languageProps: { ... } }} />"
|
|
91
|
+
},
|
|
92
|
+
{
|
|
93
|
+
"issue": "MenuChildrenProps.type 是菜单行为类型,有严格枚举,传错值 TS 不会报错但菜单不响应",
|
|
94
|
+
"wrong": "list={[{ label: '首页', type: 'link', path: '/home' }]} // 'link' 不在联合类型",
|
|
95
|
+
"right": "list={[{ label: '首页', type: 'router', path: '/home' }]} // 合法值: 'redirect' | 'router' | 'iframe' | 'snack' | 'snackPage'"
|
|
96
|
+
},
|
|
97
|
+
{
|
|
98
|
+
"issue": "onClickMenu 回参是 MenuChildrenProps | false,直接访问属性前需判空",
|
|
99
|
+
"wrong": "onClickMenu={(item) => navigate(item.path)} // item 可能是 false,访问 .path 会 TypeError",
|
|
100
|
+
"right": "onClickMenu={(item) => { if (item && item.path) navigate(item.path); }}"
|
|
101
|
+
},
|
|
102
|
+
{
|
|
103
|
+
"issue": "不要从 @para-ui/core 导入 MenuChildrenProps 用于 onClickMenu 类型标注——PageHeader/interface.ts 和 Menu/interface.ts 各有一个同名 MenuChildrenProps,两者互不兼容,强行标注会导致 TS2322",
|
|
104
|
+
"wrong": "import { PageHeader, MenuChildrenProps } from '@para-ui/core';\nonClickMenu={(item: MenuChildrenProps | false) => ...} // MenuChildrenProps 来自 Menu 不来自 PageHeader,类型冲突",
|
|
105
|
+
"right": "import { PageHeader } from '@para-ui/core';\n// 不标注类型,让 TS 推断,或使用 Parameters<typeof PageHeader>[0]['onClickMenu']\nonClickMenu={(item) => { if (item && item.path) navigate(item.path); }}"
|
|
106
|
+
}
|
|
107
|
+
],
|
|
108
|
+
"mapping": {
|
|
109
|
+
"realComponent": "PageHeader",
|
|
110
|
+
"adapter": null
|
|
111
|
+
}
|
|
112
|
+
}
|