@para-ui/core 5.0.0-beta.12 → 5.0.0-beta.14
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/AGENTS.md +315 -0
- package/AlignBox/component.json +89 -0
- package/Anchor/component.json +130 -0
- package/Argv/component.json +216 -0
- package/AutoBox/component.json +133 -0
- package/AutoButton/component.json +109 -0
- package/AutoTips/component.json +121 -0
- package/Badge/component.json +92 -0
- package/Breadcrumbs/component.json +142 -0
- package/Button/component.json +168 -0
- package/ButtonGroup/component.json +132 -0
- package/Card/component.json +162 -0
- package/Carousel/component.json +142 -0
- package/Cascader/component.json +196 -0
- package/Checkbox/component.json +138 -0
- package/CheckboxGroup/component.json +152 -0
- package/CodeEditor/component.json +189 -0
- package/Collapse/component.json +166 -0
- package/CollapseBox/component.json +84 -0
- package/CollapseLayout/component.json +155 -0
- package/ColorPicker/component.json +142 -0
- package/ComboSelect/component.json +181 -0
- package/Container/component.json +111 -0
- package/ContentBox/component.json +81 -0
- package/CopyText/component.json +118 -0
- package/CycleSelector/component.json +98 -0
- package/DatePicker/component.json +192 -0
- package/Descriptions/component.json +142 -0
- package/Desktop/component.json +171 -0
- package/DragVerify/component.json +114 -0
- package/Drawer/component.json +200 -0
- package/Dropdown/component.json +147 -0
- package/DynamicMultiBox/component.json +278 -0
- package/Empty/component.json +123 -0
- package/FieldForm/component.json +196 -0
- package/Form/component.json +161 -0
- package/FormItem/component.json +171 -0
- package/FunctionModal/component.json +197 -0
- package/Help/component.json +118 -0
- package/HelperText/component.json +126 -0
- package/Image/component.json +165 -0
- package/InputCode/component.json +191 -0
- package/InputLang/component.json +205 -0
- package/InputNumber/component.json +162 -0
- package/Label/component.json +126 -0
- package/Loading/component.json +91 -0
- package/Menu/component.json +180 -0
- package/Message/component.json +246 -0
- package/Modal/component.json +277 -0
- package/MultiBox/component.json +216 -0
- package/Notification/component.json +184 -0
- package/OperateBtn/component.json +134 -0
- package/PageHeader/component.json +112 -0
- package/Pagination/component.json +181 -0
- package/PasswordRules/component.json +105 -0
- package/PopConfirm/component.json +227 -0
- package/PopMenu/component.json +131 -0
- package/Popover/component.json +165 -0
- package/Progress/component.json +161 -0
- package/Prompt/component.json +144 -0
- package/Querying/component.json +96 -0
- package/QuickReply/component.json +129 -0
- package/Radio/component.json +136 -0
- package/RadioGroup/component.json +149 -0
- package/RangeInput/component.json +198 -0
- package/Result/component.json +104 -0
- package/ScrollBar/component.json +115 -0
- package/Search/component.json +177 -0
- package/Select/component.json +244 -0
- package/SelectInput/component.json +184 -0
- package/Selector/component.json +203 -0
- package/SelectorPicker/component.json +179 -0
- package/SingleBox/component.json +151 -0
- package/Slider/component.json +181 -0
- package/SortBox/component.json +108 -0
- package/Status/component.json +104 -0
- package/Stepper/component.json +129 -0
- package/Switch/component.json +207 -0
- package/Table/component.json +547 -0
- package/Tabs/component.json +227 -0
- package/Tag/component.json +221 -0
- package/TextEditor/component.json +186 -0
- package/TextField/component.json +290 -0
- package/TimePicker/component.json +176 -0
- package/Timeline/component.json +110 -0
- package/Title/component.json +156 -0
- package/ToggleButton/component.json +153 -0
- package/Tooltip/component.json +176 -0
- package/Transfer/component.json +157 -0
- package/Tree/component.json +512 -0
- package/Upload/component.json +450 -0
- package/ai-workflows/01-crud-list-multi-drawer.md +278 -0
- package/ai-workflows/02-rbac-operation-buttons.md +290 -0
- package/ai-workflows/03-complex-form-async-cascade.md +350 -0
- package/ai-workflows/04-array-field-form.md +281 -0
- package/ai-workflows/05-popconfirm-async-message-queue.md +333 -0
- package/ai-workflows/06-modal-drawer-form-workflow.md +385 -0
- package/ai-workflows/07-search-filter-table-trio.md +387 -0
- package/ai-workflows/08-table-advanced-features.md +365 -0
- package/ai-workflows/09-batch-operation-export-progress.md +367 -0
- package/ai-workflows/10-cross-component-state-coordination.md +412 -0
- package/codemods/modal-onCancel-to-onDismiss.js +69 -0
- package/es/AlignBox/component.json +89 -0
- package/es/AlignBox/index.css +1 -1
- package/es/AlignBox/index.d.ts +6 -2
- package/es/AlignBox/index.js +1 -1
- package/es/AlignBox/style/index.css +1 -1
- package/es/Anchor/anchorMenu/index.d.ts +2 -1
- package/es/Anchor/anchorMenu/index.js +36 -33
- package/es/Anchor/component.json +130 -0
- package/es/Anchor/index.js +50 -47
- package/es/Anchor/type.d.ts +8 -4
- package/es/Argv/component.json +216 -0
- package/es/Argv/index.d.ts +5 -6
- package/es/AutoBox/component.json +133 -0
- package/es/AutoBox/index.d.ts +3 -3
- package/es/AutoBox/index.js +1 -1
- package/es/AutoBox/protal.d.ts +2 -2
- package/es/AutoBox/protal.js +32 -29
- package/es/AutoButton/component.json +109 -0
- package/es/AutoButton/index.js +1 -1
- package/es/AutoTips/autoTipsMultiline/index.d.ts +1 -1
- package/es/AutoTips/autoTipsMultiline/index.js +1 -1
- package/es/AutoTips/component.json +121 -0
- package/es/Badge/component.json +92 -0
- package/es/Breadcrumbs/component.json +142 -0
- package/es/Breadcrumbs/index.js +1 -1
- package/es/Button/SplitButton.d.ts +2 -2
- package/es/Button/component.json +168 -0
- package/es/Button/index.js +44 -44
- package/es/ButtonGroup/component.json +132 -0
- package/es/ButtonGroup/index.d.ts +1 -1
- package/es/Card/component.json +162 -0
- package/es/Card/index.d.ts +2 -2
- package/es/Card/index.js +2 -2
- package/es/Carousel/component.json +142 -0
- package/es/Carousel/index.d.ts +1 -1
- package/es/Cascader/Cascader.js +188 -180
- package/es/Cascader/component.json +196 -0
- package/es/Cascader/hooks/useEntities.js +7 -7
- package/es/Cascader/interface.d.ts +1 -0
- package/es/Cascader/utils/commonUtil.d.ts +1 -1
- package/es/Cascader/utils/commonUtil.js +16 -16
- package/es/Cascader/utils/treeUtil.d.ts +14 -5
- package/es/Cascader/utils/treeUtil.js +1 -1
- package/es/Checkbox/component.json +138 -0
- package/es/CheckboxGroup/component.json +152 -0
- package/es/CodeEditor/component.json +189 -0
- package/es/CodeEditor/index.d.ts +10 -9
- package/es/Collapse/component.json +166 -0
- package/es/Collapse/index.d.ts +1 -1
- package/es/Collapse/index.js +41 -33
- package/es/CollapseBox/component.json +84 -0
- package/es/CollapseLayout/component.json +155 -0
- package/es/ColorPicker/component.json +142 -0
- package/es/ComboSelect/component.json +181 -0
- package/es/ComboSelect/index.js +299 -287
- package/es/ComboSelect/interface.d.ts +6 -3
- package/es/ComboSelect/utils.d.ts +3 -3
- package/es/ComboSelect/utils.js +1 -1
- package/es/Container/component.json +111 -0
- package/es/ContentBox/component.json +81 -0
- package/es/CopyText/component.json +118 -0
- package/es/CycleSelector/component.json +98 -0
- package/es/CycleSelector/index.js +14 -13
- package/es/DatePicker/component.json +192 -0
- package/es/DatePicker/generatePicker/generateRangePicker.d.ts +0 -8
- package/es/DatePicker/generatePicker/generateRangePicker.js +73 -65
- package/es/DatePicker/generatePicker/generateSinglePicker.js +1 -1
- package/es/DatePicker/generatePicker/index.d.ts +11 -4
- package/es/Descriptions/component.json +142 -0
- package/es/Descriptions/index.d.ts +1 -1
- package/es/Desktop/component.json +171 -0
- package/es/DragVerify/component.json +114 -0
- package/es/DragVerify/index.js +19 -19
- package/es/Drawer/component.json +200 -0
- package/es/Drawer/index.js +86 -86
- package/es/Drawer/interface.d.ts +1 -1
- package/es/Drawer/util.d.ts +1 -6
- package/es/Drawer/util.js +9 -6
- package/es/Dropdown/component.json +147 -0
- package/es/DynamicMultiBox/component.json +278 -0
- package/es/DynamicMultiBox/formItem.d.ts +1 -1
- package/es/DynamicMultiBox/rowForm.d.ts +2 -2
- package/es/Empty/component.json +123 -0
- package/es/Empty/index.css +1 -1
- package/es/Empty/index.d.ts +2 -2
- package/es/Empty/index.js +27 -26
- package/es/Empty/style/index.css +1 -1
- package/es/FieldForm/FieldFormItem/MemoInput.d.ts +2 -2
- package/es/FieldForm/FieldFormItem/index.d.ts +6 -6
- package/es/FieldForm/Form.d.ts +2 -2
- package/es/FieldForm/FormList.d.ts +2 -2
- package/es/FieldForm/component.json +196 -0
- package/es/FieldForm/context.d.ts +5 -1
- package/es/FieldForm/context.js +2 -2
- package/es/FieldForm/hooks/useForm.d.ts +4 -3
- package/es/FieldForm/hooks/useFormInstance.d.ts +1 -1
- package/es/FieldForm/hooks/useFormItemStatus.d.ts +9 -5
- package/es/FieldForm/hooks/useFormItemStatus.js +2 -2
- package/es/FieldForm/hooks/useItemRef.d.ts +1 -1
- package/es/FieldForm/hooks/useItemRef.js +6 -6
- package/es/Form/component.json +161 -0
- package/es/Form/index.d.ts +52 -49
- package/es/FormItem/compoments/defaultCompoments/index.d.ts +5 -5
- package/es/FormItem/compoments/defaultCompoments/index.js +12 -11
- package/es/FormItem/compoments/formCheckboxGroup/index.d.ts +2 -2
- package/es/FormItem/compoments/formFile/index.js +8 -8
- package/es/FormItem/compoments/formRadioGroup/index.d.ts +1 -1
- package/es/FormItem/compoments/formSelect/index.d.ts +1 -1
- package/es/FormItem/component.json +171 -0
- package/es/FormItem/index.d.ts +5 -5
- package/es/FormItem/index.js +23 -23
- package/es/FormItem/itemType.js +1 -1
- package/es/FunctionModal/component.json +197 -0
- package/es/FunctionModal/dialog.d.ts +1 -1
- package/es/FunctionModal/modalContext.d.ts +4 -1
- package/es/Help/component.json +118 -0
- package/es/HelperText/component.json +126 -0
- package/es/Image/component.json +165 -0
- package/es/InputCode/component.json +191 -0
- package/es/InputCode/index.d.ts +2 -2
- package/es/InputLang/component.json +205 -0
- package/es/InputLang/index.js +1 -1
- package/es/InputNumber/component.json +162 -0
- package/es/Label/component.json +126 -0
- package/es/Label/index.d.ts +2 -2
- package/es/Loading/component.json +91 -0
- package/es/Menu/component.json +180 -0
- package/es/Message/component.json +246 -0
- package/es/Message/index.d.ts +2 -2
- package/es/Message/index.js +2 -2
- package/es/Modal/Confirm/index.d.ts +1 -1
- package/es/Modal/Confirm/index.js +81 -75
- package/es/Modal/component.json +277 -0
- package/es/Modal/index.d.ts +97 -6
- package/es/Modal/index.js +174 -122
- package/es/Modal/interface.d.ts +1 -0
- package/es/MultiBox/component.json +216 -0
- package/es/MultiBox/index.js +19 -14
- package/es/Notification/component.json +184 -0
- package/es/OperateBtn/component.json +134 -0
- package/es/OperateBtn/index.d.ts +3 -3
- package/es/PageHeader/component.json +112 -0
- package/es/Pagination/component.json +181 -0
- package/es/Pagination/index.js +15 -15
- package/es/PasswordRules/component.json +105 -0
- package/es/PasswordRules/index.d.ts +4 -4
- package/es/PopConfirm/component.json +227 -0
- package/es/PopConfirm/index.d.ts +1 -1
- package/es/PopConfirm/index.js +1 -1
- package/es/PopMenu/component.json +131 -0
- package/es/PopMenu/hooks.d.ts +1 -1
- package/es/PopMenu/index.js +8 -8
- package/es/Popover/component.json +165 -0
- package/es/Popover/index.js +1 -1
- package/es/Progress/component.json +161 -0
- package/es/Prompt/component.json +144 -0
- package/es/Querying/component.json +96 -0
- package/es/Querying/index.css +1 -1
- package/es/Querying/index.d.ts +2 -2
- package/es/Querying/index.js +20 -19
- package/es/Querying/style/index.css +1 -1
- package/es/QuickReply/component.json +129 -0
- package/es/QuickReply/index.d.ts +1 -1
- package/es/Radio/component.json +136 -0
- package/es/RadioGroup/component.json +149 -0
- package/es/RangeInput/component.json +198 -0
- package/es/RangeInput/index.js +1 -1
- package/es/Result/component.json +104 -0
- package/es/ScrollBar/component.json +115 -0
- package/es/Search/component.json +177 -0
- package/es/Search/index.d.ts +1 -1
- package/es/Select/component.json +244 -0
- package/es/Select/index.js +113 -113
- package/es/SelectInput/component.json +184 -0
- package/es/Selector/component.json +203 -0
- package/es/Selector/index.js +28 -27
- package/es/Selector/interface.d.ts +1 -1
- package/es/Selector/selectorMain/index.js +2 -2
- package/es/Selector/selectorNode/index.js +1 -1
- package/es/Selector/util.d.ts +2 -2
- package/es/SelectorPicker/component.json +179 -0
- package/es/SelectorPicker/index.d.ts +5 -5
- package/es/SelectorPicker/index.js +15 -15
- package/es/SingleBox/component.json +151 -0
- package/es/SingleBox/index.d.ts +2 -2
- package/es/Slider/component.json +181 -0
- package/es/SortBox/component.json +108 -0
- package/es/Status/component.json +104 -0
- package/es/Stepper/component.json +129 -0
- package/es/Stepper/index.d.ts +2 -2
- package/es/Switch/component.json +207 -0
- package/es/Switch/index.css +1 -1
- package/es/Switch/index.d.ts +3 -2
- package/es/Switch/index.js +60 -59
- package/es/Switch/style/index.css +1 -1
- package/es/Table/component.json +547 -0
- package/es/Table/index.d.ts +2 -2
- package/es/Table/index.js +414 -414
- package/es/Table/interface.d.ts +6 -0
- package/es/Tabs/component.json +227 -0
- package/es/Tag/component.json +221 -0
- package/es/Tag/index.css +1 -1
- package/es/Tag/index.d.ts +1 -1
- package/es/Tag/index.js +20 -20
- package/es/Tag/style/index.css +1 -1
- package/es/TextEditor/component.json +186 -0
- package/es/TextEditor/index.d.ts +5 -5
- package/es/TextField/component.json +290 -0
- package/es/TextField/index.d.ts +2 -2
- package/es/TimePicker/component.json +176 -0
- package/es/Timeline/component.json +110 -0
- package/es/Title/component.json +156 -0
- package/es/ToggleButton/component.json +153 -0
- package/es/Tooltip/component.json +176 -0
- package/es/Tooltip/index.js +74 -63
- package/es/Tooltip/interface.d.ts +14 -1
- package/es/Tooltip/utils.js +6 -6
- package/es/Transfer/component.json +157 -0
- package/es/Tree/component.json +512 -0
- package/es/Upload/component.json +450 -0
- package/es/Utils/type.d.ts +0 -2
- package/es/index.d.ts +2 -0
- package/es/index.js +1 -1
- package/es/locale/en_US.d.ts +361 -0
- package/es/locale/en_US.js +364 -0
- package/es/locale/index.d.ts +1 -723
- package/es/locale/index2.js +10 -0
- package/es/locale/zh_CN.d.ts +361 -0
- package/es/locale/zh_CN.js +364 -0
- package/lib/AlignBox/component.json +89 -0
- package/lib/AlignBox/index.css +1 -1
- package/lib/AlignBox/index.d.ts +6 -2
- package/lib/AlignBox/index.js +1 -1
- package/lib/AlignBox/style/index.css +1 -1
- package/lib/Anchor/anchorMenu/index.d.ts +2 -1
- package/lib/Anchor/anchorMenu/index.js +1 -1
- package/lib/Anchor/component.json +130 -0
- package/lib/Anchor/index.js +1 -1
- package/lib/Anchor/type.d.ts +8 -4
- package/lib/Argv/component.json +216 -0
- package/lib/Argv/index.d.ts +5 -6
- package/lib/AutoBox/component.json +133 -0
- package/lib/AutoBox/index.d.ts +3 -3
- package/lib/AutoBox/index.js +1 -1
- package/lib/AutoBox/protal.d.ts +2 -2
- package/lib/AutoBox/protal.js +1 -1
- package/lib/AutoButton/component.json +109 -0
- package/lib/AutoButton/index.js +1 -1
- package/lib/AutoTips/autoTipsMultiline/index.d.ts +1 -1
- package/lib/AutoTips/autoTipsMultiline/index.js +1 -1
- package/lib/AutoTips/component.json +121 -0
- package/lib/Badge/component.json +92 -0
- package/lib/Breadcrumbs/component.json +142 -0
- package/lib/Breadcrumbs/index.js +1 -1
- package/lib/Button/SplitButton.d.ts +2 -2
- package/lib/Button/component.json +168 -0
- package/lib/Button/index.js +1 -1
- package/lib/ButtonGroup/component.json +132 -0
- package/lib/ButtonGroup/index.d.ts +1 -1
- package/lib/Card/component.json +162 -0
- package/lib/Card/index.d.ts +2 -2
- package/lib/Card/index.js +1 -1
- package/lib/Carousel/component.json +142 -0
- package/lib/Carousel/index.d.ts +1 -1
- package/lib/Cascader/Cascader.js +1 -1
- package/lib/Cascader/component.json +196 -0
- package/lib/Cascader/hooks/useEntities.js +1 -1
- package/lib/Cascader/interface.d.ts +1 -0
- package/lib/Cascader/utils/commonUtil.d.ts +1 -1
- package/lib/Cascader/utils/commonUtil.js +1 -1
- package/lib/Cascader/utils/treeUtil.d.ts +14 -5
- package/lib/Cascader/utils/treeUtil.js +1 -1
- package/lib/Checkbox/component.json +138 -0
- package/lib/CheckboxGroup/component.json +152 -0
- package/lib/CodeEditor/component.json +189 -0
- package/lib/CodeEditor/index.d.ts +10 -9
- package/lib/Collapse/component.json +166 -0
- package/lib/Collapse/index.d.ts +1 -1
- package/lib/Collapse/index.js +1 -1
- package/lib/CollapseBox/component.json +84 -0
- package/lib/CollapseLayout/component.json +155 -0
- package/lib/ColorPicker/component.json +142 -0
- package/lib/ComboSelect/component.json +181 -0
- package/lib/ComboSelect/index.js +1 -1
- package/lib/ComboSelect/interface.d.ts +6 -3
- package/lib/ComboSelect/utils.d.ts +3 -3
- package/lib/ComboSelect/utils.js +1 -1
- package/lib/Container/component.json +111 -0
- package/lib/ContentBox/component.json +81 -0
- package/lib/CopyText/component.json +118 -0
- package/lib/CycleSelector/component.json +98 -0
- package/lib/CycleSelector/index.js +1 -1
- package/lib/DatePicker/component.json +192 -0
- package/lib/DatePicker/generatePicker/generateRangePicker.d.ts +0 -8
- package/lib/DatePicker/generatePicker/generateRangePicker.js +1 -1
- package/lib/DatePicker/generatePicker/generateSinglePicker.js +1 -1
- package/lib/DatePicker/generatePicker/index.d.ts +11 -4
- package/lib/Descriptions/component.json +142 -0
- package/lib/Descriptions/index.d.ts +1 -1
- package/lib/Desktop/component.json +171 -0
- package/lib/DragVerify/component.json +114 -0
- package/lib/DragVerify/index.js +1 -1
- package/lib/Drawer/component.json +200 -0
- package/lib/Drawer/index.js +1 -1
- package/lib/Drawer/interface.d.ts +1 -1
- package/lib/Drawer/util.d.ts +1 -6
- package/lib/Drawer/util.js +1 -1
- package/lib/Dropdown/component.json +147 -0
- package/lib/DynamicMultiBox/component.json +278 -0
- package/lib/DynamicMultiBox/formItem.d.ts +1 -1
- package/lib/DynamicMultiBox/rowForm.d.ts +2 -2
- package/lib/Empty/component.json +123 -0
- package/lib/Empty/index.css +1 -1
- package/lib/Empty/index.d.ts +2 -2
- package/lib/Empty/index.js +1 -1
- package/lib/Empty/style/index.css +1 -1
- package/lib/FieldForm/FieldFormItem/MemoInput.d.ts +2 -2
- package/lib/FieldForm/FieldFormItem/index.d.ts +6 -6
- package/lib/FieldForm/Form.d.ts +2 -2
- package/lib/FieldForm/FormList.d.ts +2 -2
- package/lib/FieldForm/component.json +196 -0
- package/lib/FieldForm/context.d.ts +5 -1
- package/lib/FieldForm/context.js +1 -1
- package/lib/FieldForm/hooks/useForm.d.ts +4 -3
- package/lib/FieldForm/hooks/useFormInstance.d.ts +1 -1
- package/lib/FieldForm/hooks/useFormItemStatus.d.ts +9 -5
- package/lib/FieldForm/hooks/useFormItemStatus.js +1 -1
- package/lib/FieldForm/hooks/useItemRef.d.ts +1 -1
- package/lib/FieldForm/hooks/useItemRef.js +1 -1
- package/lib/Form/component.json +161 -0
- package/lib/Form/index.d.ts +52 -49
- package/lib/FormItem/compoments/defaultCompoments/index.d.ts +5 -5
- package/lib/FormItem/compoments/defaultCompoments/index.js +1 -1
- package/lib/FormItem/compoments/formCheckboxGroup/index.d.ts +2 -2
- package/lib/FormItem/compoments/formFile/index.js +1 -1
- package/lib/FormItem/compoments/formRadioGroup/index.d.ts +1 -1
- package/lib/FormItem/compoments/formSelect/index.d.ts +1 -1
- package/lib/FormItem/component.json +171 -0
- package/lib/FormItem/index.d.ts +5 -5
- package/lib/FormItem/index.js +1 -1
- package/lib/FormItem/itemType.js +1 -1
- package/lib/FunctionModal/component.json +197 -0
- package/lib/FunctionModal/dialog.d.ts +1 -1
- package/lib/FunctionModal/modalContext.d.ts +4 -1
- package/lib/Help/component.json +118 -0
- package/lib/HelperText/component.json +126 -0
- package/lib/Image/component.json +165 -0
- package/lib/InputCode/component.json +191 -0
- package/lib/InputCode/index.d.ts +2 -2
- package/lib/InputLang/component.json +205 -0
- package/lib/InputLang/index.js +1 -1
- package/lib/InputNumber/component.json +162 -0
- package/lib/Label/component.json +126 -0
- package/lib/Label/index.d.ts +2 -2
- package/lib/Loading/component.json +91 -0
- package/lib/Menu/component.json +180 -0
- package/lib/Message/component.json +246 -0
- package/lib/Message/index.d.ts +2 -2
- package/lib/Message/index.js +1 -1
- package/lib/Modal/Confirm/index.d.ts +1 -1
- package/lib/Modal/Confirm/index.js +1 -1
- package/lib/Modal/component.json +277 -0
- package/lib/Modal/index.d.ts +97 -6
- package/lib/Modal/index.js +1 -1
- package/lib/Modal/interface.d.ts +1 -0
- package/lib/MultiBox/component.json +216 -0
- package/lib/MultiBox/index.js +1 -1
- package/lib/Notification/component.json +184 -0
- package/lib/OperateBtn/component.json +134 -0
- package/lib/OperateBtn/index.d.ts +3 -3
- package/lib/PageHeader/component.json +112 -0
- package/lib/Pagination/component.json +181 -0
- package/lib/Pagination/index.js +1 -1
- package/lib/PasswordRules/component.json +105 -0
- package/lib/PasswordRules/index.d.ts +4 -4
- package/lib/PopConfirm/component.json +227 -0
- package/lib/PopConfirm/index.d.ts +1 -1
- package/lib/PopConfirm/index.js +1 -1
- package/lib/PopMenu/component.json +131 -0
- package/lib/PopMenu/hooks.d.ts +1 -1
- package/lib/PopMenu/index.js +1 -1
- package/lib/Popover/component.json +165 -0
- package/lib/Popover/index.js +1 -1
- package/lib/Progress/component.json +161 -0
- package/lib/Prompt/component.json +144 -0
- package/lib/Querying/component.json +96 -0
- package/lib/Querying/index.css +1 -1
- package/lib/Querying/index.d.ts +2 -2
- package/lib/Querying/index.js +1 -1
- package/lib/Querying/style/index.css +1 -1
- package/lib/QuickReply/component.json +129 -0
- package/lib/QuickReply/index.d.ts +1 -1
- package/lib/Radio/component.json +136 -0
- package/lib/RadioGroup/component.json +149 -0
- package/lib/RangeInput/component.json +198 -0
- package/lib/RangeInput/index.js +1 -1
- package/lib/Result/component.json +104 -0
- package/lib/ScrollBar/component.json +115 -0
- package/lib/Search/component.json +177 -0
- package/lib/Search/index.d.ts +1 -1
- package/lib/Select/component.json +244 -0
- package/lib/Select/index.js +1 -1
- package/lib/SelectInput/component.json +184 -0
- package/lib/Selector/component.json +203 -0
- package/lib/Selector/index.js +1 -1
- package/lib/Selector/interface.d.ts +1 -1
- package/lib/Selector/selectorMain/index.js +1 -1
- package/lib/Selector/selectorNode/index.js +1 -1
- package/lib/Selector/util.d.ts +2 -2
- package/lib/SelectorPicker/component.json +179 -0
- package/lib/SelectorPicker/index.d.ts +5 -5
- package/lib/SelectorPicker/index.js +1 -1
- package/lib/SingleBox/component.json +151 -0
- package/lib/SingleBox/index.d.ts +2 -2
- package/lib/Slider/component.json +181 -0
- package/lib/SortBox/component.json +108 -0
- package/lib/Status/component.json +104 -0
- package/lib/Stepper/component.json +129 -0
- package/lib/Stepper/index.d.ts +2 -2
- package/lib/Switch/component.json +207 -0
- package/lib/Switch/index.css +1 -1
- package/lib/Switch/index.d.ts +3 -2
- package/lib/Switch/index.js +1 -1
- package/lib/Switch/style/index.css +1 -1
- package/lib/Table/component.json +547 -0
- package/lib/Table/index.d.ts +2 -2
- package/lib/Table/index.js +1 -1
- package/lib/Table/interface.d.ts +6 -0
- package/lib/Tabs/component.json +227 -0
- package/lib/Tag/component.json +221 -0
- package/lib/Tag/index.css +1 -1
- package/lib/Tag/index.d.ts +1 -1
- package/lib/Tag/index.js +1 -1
- package/lib/Tag/style/index.css +1 -1
- package/lib/TextEditor/component.json +186 -0
- package/lib/TextEditor/index.d.ts +5 -5
- package/lib/TextField/component.json +290 -0
- package/lib/TextField/index.d.ts +2 -2
- package/lib/TimePicker/component.json +176 -0
- package/lib/Timeline/component.json +110 -0
- package/lib/Title/component.json +156 -0
- package/lib/ToggleButton/component.json +153 -0
- package/lib/Tooltip/component.json +176 -0
- package/lib/Tooltip/index.js +1 -1
- package/lib/Tooltip/interface.d.ts +14 -1
- package/lib/Tooltip/utils.js +1 -1
- package/lib/Transfer/component.json +157 -0
- package/lib/Tree/component.json +512 -0
- package/lib/Upload/component.json +450 -0
- package/lib/Utils/type.d.ts +0 -2
- package/lib/index.d.ts +2 -0
- package/lib/index.js +1 -1
- package/lib/locale/en_US.d.ts +361 -0
- package/lib/locale/en_US.js +2 -0
- package/lib/locale/index.d.ts +1 -723
- package/lib/locale/index2.js +2 -0
- package/lib/locale/zh_CN.d.ts +361 -0
- package/lib/locale/zh_CN.js +2 -0
- package/package.json +10 -3
- /package/es/{Utils/Hooks → Hooks}/useResizeObserver.d.ts +0 -0
- /package/es/{Utils/Hooks → Hooks}/useResizeObserver.js +0 -0
- /package/lib/{Utils/Hooks → Hooks}/useResizeObserver.d.ts +0 -0
- /package/lib/{Utils/Hooks → Hooks}/useResizeObserver.js +0 -0
|
@@ -0,0 +1,181 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "Pagination",
|
|
3
|
+
"category": "Navigation",
|
|
4
|
+
"description": "分页组件,支持 simple / complex 双模式及自定义布局组合",
|
|
5
|
+
"semantic": {
|
|
6
|
+
"intent": [
|
|
7
|
+
"展示数据",
|
|
8
|
+
"分批加载",
|
|
9
|
+
"导航"
|
|
10
|
+
],
|
|
11
|
+
"useCases": [
|
|
12
|
+
"数据列表",
|
|
13
|
+
"搜索结果",
|
|
14
|
+
"评论区"
|
|
15
|
+
],
|
|
16
|
+
"riskLevel": "low"
|
|
17
|
+
},
|
|
18
|
+
"variants": {
|
|
19
|
+
"simple": {
|
|
20
|
+
"meaning": "简单模式(仅翻页按钮/数字页码)"
|
|
21
|
+
},
|
|
22
|
+
"complex": {
|
|
23
|
+
"meaning": "复杂模式(含总数 + 每页行数 + 页码 + 跳转)"
|
|
24
|
+
}
|
|
25
|
+
},
|
|
26
|
+
"states": [
|
|
27
|
+
"default",
|
|
28
|
+
"disabled"
|
|
29
|
+
],
|
|
30
|
+
"idealProps": {
|
|
31
|
+
"total": {
|
|
32
|
+
"type": "number",
|
|
33
|
+
"default": 0,
|
|
34
|
+
"description": "数据总数"
|
|
35
|
+
},
|
|
36
|
+
"page": {
|
|
37
|
+
"type": "number",
|
|
38
|
+
"default": 1,
|
|
39
|
+
"description": "当前页码(受控)"
|
|
40
|
+
},
|
|
41
|
+
"rowsPerPage": {
|
|
42
|
+
"type": "number[]",
|
|
43
|
+
"default": [10, 20, 50, 100],
|
|
44
|
+
"description": "每页行数候选项列表(下拉选项)"
|
|
45
|
+
},
|
|
46
|
+
"currentRowsPerPage": {
|
|
47
|
+
"type": "number",
|
|
48
|
+
"default": 10,
|
|
49
|
+
"description": "当前选中的每页行数"
|
|
50
|
+
},
|
|
51
|
+
"type": {
|
|
52
|
+
"type": "enum",
|
|
53
|
+
"values": [
|
|
54
|
+
"simple",
|
|
55
|
+
"complex",
|
|
56
|
+
"PaginationLayout[]"
|
|
57
|
+
],
|
|
58
|
+
"default": "simple",
|
|
59
|
+
"description": "分页类型;**'simple'** = 仅翻页按钮/数字(sizes/pageRow/jumper 均不显示);**'complex'** = 完整布局(总数+每页行数+页码+跳转,支持 autoType 响应式收叠);**PaginationLayout[]** = 自定义组合,合法值 'sizes'|'pageRow'|'pager'|'jumper'"
|
|
60
|
+
},
|
|
61
|
+
"pagerType": {
|
|
62
|
+
"type": "enum",
|
|
63
|
+
"values": [
|
|
64
|
+
"btn",
|
|
65
|
+
"num"
|
|
66
|
+
],
|
|
67
|
+
"default": "num",
|
|
68
|
+
"description": "页码显示模式 btn=上下页按钮 / num=数字页码列表"
|
|
69
|
+
},
|
|
70
|
+
"flippingArrow": {
|
|
71
|
+
"type": "PaginationFlippingArrow[]",
|
|
72
|
+
"values": [
|
|
73
|
+
"prev",
|
|
74
|
+
"next"
|
|
75
|
+
],
|
|
76
|
+
"default": ["prev", "next"],
|
|
77
|
+
"description": "方向键 layout;传空数组隐藏全部箭头"
|
|
78
|
+
},
|
|
79
|
+
"autoType": {
|
|
80
|
+
"type": "boolean",
|
|
81
|
+
"default": true,
|
|
82
|
+
"description": "type=complex 自适应模式(响应宽度自动收叠)"
|
|
83
|
+
},
|
|
84
|
+
"resizeLine": {
|
|
85
|
+
"type": "string | number",
|
|
86
|
+
"description": "type=complex 时重新计算换行(传值变化触发自适应)"
|
|
87
|
+
},
|
|
88
|
+
"pageMaxLimit": {
|
|
89
|
+
"type": "boolean",
|
|
90
|
+
"default": true,
|
|
91
|
+
"description": "当前页超过总页数时自动回落到最大页"
|
|
92
|
+
},
|
|
93
|
+
"skipFunc": {
|
|
94
|
+
"type": "function",
|
|
95
|
+
"signature": "(num?: number, skipValue?: number) => void",
|
|
96
|
+
"description": "回车跳页回调;num 是校正后目标页(已 clamp 到 1~totalPage),skipValue 是输入框原始值(未校正)"
|
|
97
|
+
},
|
|
98
|
+
"changePage": {
|
|
99
|
+
"type": "function",
|
|
100
|
+
"signature": "(num?: number) => void",
|
|
101
|
+
"description": "页码改变回调(点击页码 / prev / next / 回车跳转时均触发);num 是目标页码"
|
|
102
|
+
},
|
|
103
|
+
"changeRowsPerPage": {
|
|
104
|
+
"type": "function",
|
|
105
|
+
"signature": "(num: number) => void",
|
|
106
|
+
"description": "每页行数改变回调;num 是新选中行数(非下标,是实际数值)"
|
|
107
|
+
},
|
|
108
|
+
"getPopupContainer": {
|
|
109
|
+
"type": "function",
|
|
110
|
+
"description": "rowsPerPage 下拉的渲染父节点 (triggerNode) => HTMLElement"
|
|
111
|
+
},
|
|
112
|
+
"className": {
|
|
113
|
+
"type": "string",
|
|
114
|
+
"description": "自定义类名(src/Pagination/index.tsx:33 interface 实证,追加到根容器 div)"
|
|
115
|
+
},
|
|
116
|
+
"style": {
|
|
117
|
+
"type": "React.CSSProperties",
|
|
118
|
+
"description": "自定义样式(src/Pagination/index.tsx:35 interface 实证,透传到根容器 div)"
|
|
119
|
+
}
|
|
120
|
+
},
|
|
121
|
+
"do": [
|
|
122
|
+
"Table 独立分页时:changePage 里更新父组件 page state 并重新请求数据,将最新 page 回传给 Pagination 维持受控",
|
|
123
|
+
"展示总记录数 + 每页行数切换:使用 type='complex',changeRowsPerPage 里同时重置 page=1 再发请求",
|
|
124
|
+
"在数据量较大时使用服务端分页——本地分页仅适合 <200 条",
|
|
125
|
+
"保持每页数量适中(10-50)"
|
|
126
|
+
],
|
|
127
|
+
"dont": [
|
|
128
|
+
"在极少量数据(<20)时使用 Pagination",
|
|
129
|
+
"隐藏当前页码标识",
|
|
130
|
+
"changePage/changeRowsPerPage 里不更新父组件 page state——Pagination 是受控组件,不回写 page prop 会导致翻页后页码回弹"
|
|
131
|
+
],
|
|
132
|
+
"events": {
|
|
133
|
+
"changePage": {
|
|
134
|
+
"signature": "(num?: number) => void",
|
|
135
|
+
"asyncSupported": false,
|
|
136
|
+
"examples": [
|
|
137
|
+
"受控翻页:changePage={(num) => { setPage(num ?? 1); fetchData(num ?? 1, currentRowsPerPage); }}",
|
|
138
|
+
"配合 Table:changePage={(num) => { tableRef.current.reload({ page: num }); }}",
|
|
139
|
+
"防止 undefined:changePage={(num) => setPage(num ?? 1)} // num 在正常翻页时有值,极端情况下可能 undefined"
|
|
140
|
+
],
|
|
141
|
+
"commonMistakes": [
|
|
142
|
+
"收到 changePage 后不更新 page prop——Pagination 是受控组件,不回写会导致页码状态不一致",
|
|
143
|
+
"期望 changePage 在组件内部状态已更新后触发——组件内部先 setPageCom(num) 再触发 changePage,父组件需自行维护独立的 page state",
|
|
144
|
+
"changeRowsPerPage 里忘记重置 page=1——切换每页条数后通常应回到第一页"
|
|
145
|
+
]
|
|
146
|
+
},
|
|
147
|
+
"changeRowsPerPage": {
|
|
148
|
+
"signature": "(num: number) => void",
|
|
149
|
+
"asyncSupported": false,
|
|
150
|
+
"examples": [
|
|
151
|
+
"切换每页行数并重置页码:changeRowsPerPage={(num) => { setCurrentRowsPerPage(num); setPage(1); fetchData(1, num); }}",
|
|
152
|
+
"受控写法:currentRowsPerPage={currentRowsPerPage} changeRowsPerPage={(num) => setCurrentRowsPerPage(num)}"
|
|
153
|
+
],
|
|
154
|
+
"commonMistakes": [
|
|
155
|
+
"忘记同步更新 currentRowsPerPage prop——不回写 prop 导致下拉显示旧值",
|
|
156
|
+
"假设 num 是下标而非实际行数值——num 是 rowsPerPage 数组里选中的那个数字本身"
|
|
157
|
+
]
|
|
158
|
+
}
|
|
159
|
+
},
|
|
160
|
+
"typescriptPitfalls": [
|
|
161
|
+
{
|
|
162
|
+
"issue": "type prop 接受 PaginationLayout[] 数组,但内部枚举是 'sizes'|'pageRow'|'pager'|'jumper',不是 'complex'|'simple'",
|
|
163
|
+
"wrong": "type={['simple', 'pager']} // 'simple' 不在 PaginationLayout 联合类型",
|
|
164
|
+
"right": "type={['pager', 'jumper']} // 自定义布局组合只能用 PaginationLayout 枚举值"
|
|
165
|
+
},
|
|
166
|
+
{
|
|
167
|
+
"issue": "changeRowsPerPage 回参 num 是 number,不是可选 number | undefined",
|
|
168
|
+
"wrong": "(num?: number) => setCurrentRowsPerPage(num ?? 10) // 多余的 ?? 语法噪音",
|
|
169
|
+
"right": "(num: number) => setCurrentRowsPerPage(num) // num 保证有值"
|
|
170
|
+
},
|
|
171
|
+
{
|
|
172
|
+
"issue": "skipFunc 与 changePage 在回车跳页时都会触发,不要做重复请求",
|
|
173
|
+
"wrong": "skipFunc={(num) => fetchData(num)} changePage={(num) => fetchData(num)} // 回车时两个都触发,重复请求",
|
|
174
|
+
"right": "// 只需 changePage 处理翻页逻辑;skipFunc 是可选补充,跳页专用(例如记录跳转日志)"
|
|
175
|
+
}
|
|
176
|
+
],
|
|
177
|
+
"mapping": {
|
|
178
|
+
"realComponent": "Pagination",
|
|
179
|
+
"adapter": null
|
|
180
|
+
}
|
|
181
|
+
}
|
package/es/Pagination/index.js
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { j as r } from "../_virtual/jsx-runtime.js";
|
|
2
2
|
import de, { useState as g, useRef as q, useEffect as u, useMemo as w } from "react";
|
|
3
3
|
import xe from "../GlobalContext/index.js";
|
|
4
|
-
import { $prefixCls as z, $rcPrefixCls as
|
|
5
|
-
import { TextField as
|
|
4
|
+
import { $prefixCls as z, $rcPrefixCls as ve } from "../GlobalContext/constant.js";
|
|
5
|
+
import { TextField as he } from "../TextField/index.js";
|
|
6
6
|
import Pe from "../GlobalContext/useFormatMessage.js";
|
|
7
7
|
import je from "./lang/index.js";
|
|
8
8
|
import be from "../Select/index.js";
|
|
@@ -35,7 +35,7 @@ const Oe = (y) => {
|
|
|
35
35
|
layoutArr: ["jumper", "pageRow", "pager-btn", "sizes", "pager-num"]
|
|
36
36
|
});
|
|
37
37
|
a.current.type = l, a.current.autoType = M, u(() => () => {
|
|
38
|
-
window.removeEventListener("resize",
|
|
38
|
+
window.removeEventListener("resize", v), clearTimeout(a.current.timer ?? void 0), clearTimeout(a.current.changePagination ?? void 0);
|
|
39
39
|
}, []), u(() => {
|
|
40
40
|
R(S);
|
|
41
41
|
}, [S]), u(() => {
|
|
@@ -57,12 +57,12 @@ const Oe = (y) => {
|
|
|
57
57
|
const e = Math.ceil(m / c);
|
|
58
58
|
Y(e || y.page || 1);
|
|
59
59
|
}, [c, m]), u(() => {
|
|
60
|
-
l === "complex" && M ? (
|
|
60
|
+
l === "complex" && M ? (v(), window.addEventListener("resize", v)) : window.removeEventListener("resize", v);
|
|
61
61
|
}, [l, M]), u(() => {
|
|
62
|
-
a.current.type === "complex" && a.current.autoType &&
|
|
62
|
+
a.current.type === "complex" && a.current.autoType && v();
|
|
63
63
|
}, [m, c, n, k, W]);
|
|
64
|
-
const
|
|
65
|
-
clearTimeout(a.current.timer);
|
|
64
|
+
const v = () => {
|
|
65
|
+
clearTimeout(a.current.timer ?? void 0);
|
|
66
66
|
const e = x.current;
|
|
67
67
|
e && (e.classList.add(`${z}-pagination-over`), a.current.timer = setTimeout(() => {
|
|
68
68
|
U(a.current.layoutArr.length), a.current.layoutArr.length > 1 && _();
|
|
@@ -87,7 +87,7 @@ const Oe = (y) => {
|
|
|
87
87
|
U(t), t > 3 ? _(t) : x.current.classList.remove(`${z}-pagination-over`);
|
|
88
88
|
} else
|
|
89
89
|
x.current.classList.remove(`${z}-pagination-over`);
|
|
90
|
-
},
|
|
90
|
+
}, h = (e) => a.current.type instanceof Array && a.current.type.indexOf(e) === -1, P = (e) => {
|
|
91
91
|
if (o === null) return !1;
|
|
92
92
|
switch (e) {
|
|
93
93
|
case "jumper":
|
|
@@ -144,11 +144,11 @@ const Oe = (y) => {
|
|
|
144
144
|
const t = /(?=(\B)(\d{3})+$)/g;
|
|
145
145
|
return e.toString().replace(t, ",");
|
|
146
146
|
}, oe = w(() => {
|
|
147
|
-
if (l === "simple" ||
|
|
147
|
+
if (l === "simple" || h("sizes") || P("sizes"))
|
|
148
148
|
return null;
|
|
149
149
|
const e = ae(m);
|
|
150
150
|
return /* @__PURE__ */ r.jsx("div", { className: "total-num pagination-space", children: p({ id: "total" }, { total: e }) });
|
|
151
|
-
}, [m, k, f, o]), ie = w(() =>
|
|
151
|
+
}, [m, k, f, o]), ie = w(() => h("pageRow") || P("pageRow") ? null : /* @__PURE__ */ r.jsx("div", { className: "page-line-memo pagination-space", children: /* @__PURE__ */ r.jsx(
|
|
152
152
|
be,
|
|
153
153
|
{
|
|
154
154
|
className: "page-line-select",
|
|
@@ -166,7 +166,7 @@ const Oe = (y) => {
|
|
|
166
166
|
] }), le = () => /* @__PURE__ */ r.jsxs("div", { className: "jump-next-icon", children: [
|
|
167
167
|
/* @__PURE__ */ r.jsx("span", { children: "..." }),
|
|
168
168
|
/* @__PURE__ */ r.jsx(Ce, {})
|
|
169
|
-
] }), ce = () => C !== "num" || l === "simple" ? !0 : l === "complex" ? P("pager-num") :
|
|
169
|
+
] }), ce = () => C !== "num" || l === "simple" ? !0 : l === "complex" ? P("pager-num") : h("pager"), ue = w(() => ce() ? null : /* @__PURE__ */ r.jsxs("div", { className: "pagination-content pagination-space", children: [
|
|
170
170
|
I.indexOf("prev") !== -1 && /* @__PURE__ */ r.jsx("div", { className: "left-page", children: /* @__PURE__ */ r.jsx(
|
|
171
171
|
"div",
|
|
172
172
|
{
|
|
@@ -178,7 +178,7 @@ const Oe = (y) => {
|
|
|
178
178
|
/* @__PURE__ */ r.jsx(
|
|
179
179
|
we,
|
|
180
180
|
{
|
|
181
|
-
prefixCls: `${
|
|
181
|
+
prefixCls: `${ve}-pagination`,
|
|
182
182
|
current: n,
|
|
183
183
|
pageSize: c,
|
|
184
184
|
total: m,
|
|
@@ -196,7 +196,7 @@ const Oe = (y) => {
|
|
|
196
196
|
children: /* @__PURE__ */ r.jsx(H, {})
|
|
197
197
|
}
|
|
198
198
|
) })
|
|
199
|
-
] }), [m, n, i, c, y.flippingArrow, C, o]), me = () => C === "btn" || l === "simple" ? !1 : l === "complex" ? P("pager-btn") :
|
|
199
|
+
] }), [m, n, i, c, y.flippingArrow, C, o]), me = () => C === "btn" || l === "simple" ? !1 : l === "complex" ? P("pager-btn") : h("pager"), pe = w(() => me() ? null : /* @__PURE__ */ r.jsxs("div", { className: "pagination-btn-content pagination-space", children: [
|
|
200
200
|
/* @__PURE__ */ r.jsx(
|
|
201
201
|
G,
|
|
202
202
|
{
|
|
@@ -219,10 +219,10 @@ const Oe = (y) => {
|
|
|
219
219
|
children: p({ id: "nextPage" })
|
|
220
220
|
}
|
|
221
221
|
)
|
|
222
|
-
] }), [n, i, C, f, o]), ge = w(() =>
|
|
222
|
+
] }), [n, i, C, f, o]), ge = w(() => h("jumper") || P("jumper") ? null : /* @__PURE__ */ r.jsxs("div", { className: "skip-page-memo pagination-space", children: [
|
|
223
223
|
/* @__PURE__ */ r.jsx("span", { children: p({ id: "jumpTo" }) }),
|
|
224
224
|
/* @__PURE__ */ r.jsx(
|
|
225
|
-
|
|
225
|
+
he,
|
|
226
226
|
{
|
|
227
227
|
className: "skip-page-text-field",
|
|
228
228
|
size: "large",
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "PasswordRules",
|
|
3
|
+
"category": "Data Display",
|
|
4
|
+
"description": "密码规则校验器,实时显示密码强度及各项规则通过/失败状态",
|
|
5
|
+
"semantic": {
|
|
6
|
+
"intent": [
|
|
7
|
+
"密码验证",
|
|
8
|
+
"规则提示",
|
|
9
|
+
"安全引导"
|
|
10
|
+
],
|
|
11
|
+
"useCases": [
|
|
12
|
+
"注册",
|
|
13
|
+
"修改密码",
|
|
14
|
+
"安全设置"
|
|
15
|
+
],
|
|
16
|
+
"riskLevel": "high"
|
|
17
|
+
},
|
|
18
|
+
"variants": {
|
|
19
|
+
"icon": {
|
|
20
|
+
"meaning": "图标模式(✓/✗ 图标指示每条规则)"
|
|
21
|
+
},
|
|
22
|
+
"order": {
|
|
23
|
+
"meaning": "序列模式(1. 2. 3. 数字序号)"
|
|
24
|
+
}
|
|
25
|
+
},
|
|
26
|
+
"states": [
|
|
27
|
+
"pass",
|
|
28
|
+
"fail"
|
|
29
|
+
],
|
|
30
|
+
"idealProps": {
|
|
31
|
+
"value": {
|
|
32
|
+
"type": "string",
|
|
33
|
+
"description": "需要校验的密码值;每次 value 变化组件自动重新对所有规则校验并触发 onCheckAll"
|
|
34
|
+
},
|
|
35
|
+
"config": {
|
|
36
|
+
"type": "PasswordRulesConfigProps | PasswordRulesConfigProps[]",
|
|
37
|
+
"description": "规则配置,单组或多组。**PasswordRulesConfigProps** = { title?: ReactNode; type?: 'icon'|'order'; list?: PasswordRulesConfigItemProps[] };**PasswordRulesConfigItemProps** = { label?: ReactNode; reg?: RegExp(正则校验); validator?: (item, value) => boolean | ReactNode(自定义校验,返回 true 表示通过,false 或 ReactNode 表示失败,ReactNode 会替换显示文案); result?: boolean | ReactNode };⚠️ validator 优先级高于 reg"
|
|
38
|
+
},
|
|
39
|
+
"onCheckAll": {
|
|
40
|
+
"type": "(bol: boolean | undefined) => void",
|
|
41
|
+
"description": "全部规则校验结果回调:**true** = 所有规则全部通过;**false** = 所有规则全部未通过;**undefined** = 部分通过(非全通过也非全失败);value 为 undefined 时也回调 undefined"
|
|
42
|
+
},
|
|
43
|
+
"boxShadow": {
|
|
44
|
+
"type": "boolean",
|
|
45
|
+
"default": false,
|
|
46
|
+
"description": "是否带有边框阴影(src/PasswordRules/index.tsx:51 interface 实证)"
|
|
47
|
+
},
|
|
48
|
+
"className": {
|
|
49
|
+
"type": "string",
|
|
50
|
+
"description": "自定义类名"
|
|
51
|
+
},
|
|
52
|
+
"style": {
|
|
53
|
+
"type": "React.CSSProperties",
|
|
54
|
+
"description": "自定义样式"
|
|
55
|
+
}
|
|
56
|
+
},
|
|
57
|
+
"do": [
|
|
58
|
+
"在密码输入旁实时显示校验结果——value 受控绑定 TextField 的 onChange",
|
|
59
|
+
"列出所有规则及其状态,配合 onCheckAll 控制提交按钮的 disabled 状态(true 时才允许提交)",
|
|
60
|
+
"使用 validator 函数处理复杂规则(如「密码不能包含用户名」),返回 ReactNode 可自定义失败文案",
|
|
61
|
+
"多组规则(如「格式要求」+「强度要求」)传 config 数组,每组可设置独立 title"
|
|
62
|
+
],
|
|
63
|
+
"dont": [
|
|
64
|
+
"规则不明确——每条 label 应简短描述具体要求(如「至少 8 位字符」)",
|
|
65
|
+
"规则过于复杂导致用户无法满足——不超过 6 条主要规则",
|
|
66
|
+
"只用 reg 不提供 validator——复杂规则如「必须包含大小写」建议用 validator 加更友好的提示"
|
|
67
|
+
],
|
|
68
|
+
"events": {
|
|
69
|
+
"onCheckAll": {
|
|
70
|
+
"signature": "(bol: boolean | undefined) => void",
|
|
71
|
+
"asyncSupported": false,
|
|
72
|
+
"examples": [
|
|
73
|
+
"控制提交按钮:onCheckAll={(bol) => setCanSubmit(bol === true)}",
|
|
74
|
+
"显示强度文案:onCheckAll={(bol) => setStrengthText(bol === true ? '强' : bol === false ? '弱' : '中')}",
|
|
75
|
+
"value 为空时 onCheckAll(undefined):onCheckAll={(bol) => { if (bol === undefined) { clearStrengthUI(); return; } setValid(bol); }}"
|
|
76
|
+
],
|
|
77
|
+
"commonMistakes": [
|
|
78
|
+
"把 bol === false 当「有错误」——false 是「全部失败」;undefined 才是「部分通过」(最常见的进行时状态)",
|
|
79
|
+
"用 onCheckAll 直接控制表单 submit——建议只用它更新 UI 状态,表单提交时再做一次完整校验",
|
|
80
|
+
"假设 value 初始化时不触发 onCheckAll——组件 mount 后 value 变化(包括 undefined→string)每次都触发"
|
|
81
|
+
]
|
|
82
|
+
}
|
|
83
|
+
},
|
|
84
|
+
"typescriptPitfalls": [
|
|
85
|
+
{
|
|
86
|
+
"issue": "PasswordRulesConfigItemProps.validator 返回值类型是 boolean | ReactNode,不能返回 string 以外的 falsy",
|
|
87
|
+
"wrong": "validator: (item, value) => value.length >= 8 // 返回 false 表示失败,符合要求",
|
|
88
|
+
"right": "validator: (item, value) => value.length >= 8 ? true : false // 显式返回 boolean;返回 ReactNode 可自定义失败文案"
|
|
89
|
+
},
|
|
90
|
+
{
|
|
91
|
+
"issue": "config 可以是单对象或数组,直接传数组字面量时类型推断正确,动态构建时需显式标注",
|
|
92
|
+
"wrong": "const cfg = { title: '格式', list: [...] }; <PasswordRules config={cfg} /> // 单对象 ok\nconst cfgs = [cfg1, cfg2]; <PasswordRules config={cfgs} /> // 数组 ok,但动态 push 时注意类型",
|
|
93
|
+
"right": "const cfgs: PasswordRulesConfigProps[] = [cfg1, cfg2]; <PasswordRules config={cfgs} />"
|
|
94
|
+
},
|
|
95
|
+
{
|
|
96
|
+
"issue": "onCheckAll 回参 bol 是三值逻辑,用 === 严格比较而非 truthy/falsy",
|
|
97
|
+
"wrong": "onCheckAll={(bol) => setValid(!!bol)} // undefined 被 coerce 成 false,与「全部失败」混淆",
|
|
98
|
+
"right": "onCheckAll={(bol) => setValid(bol === true)} // 只有全部通过才为 true"
|
|
99
|
+
}
|
|
100
|
+
],
|
|
101
|
+
"mapping": {
|
|
102
|
+
"realComponent": "PasswordRules",
|
|
103
|
+
"adapter": null
|
|
104
|
+
}
|
|
105
|
+
}
|
|
@@ -3,7 +3,7 @@ export interface PasswordRulesConfigItemProps {
|
|
|
3
3
|
/** 文案 */
|
|
4
4
|
label?: ReactNode;
|
|
5
5
|
/** 正则 正则表达式 */
|
|
6
|
-
reg?:
|
|
6
|
+
reg?: RegExp;
|
|
7
7
|
/** 自定义校验方法
|
|
8
8
|
* item: 当前项配置
|
|
9
9
|
* value: 校验值
|
|
@@ -14,7 +14,7 @@ export interface PasswordRulesConfigItemProps {
|
|
|
14
14
|
validator?: (item: PasswordRulesConfigItemProps, value: string) => boolean | ReactNode;
|
|
15
15
|
/** 校验结果 */
|
|
16
16
|
result?: boolean | ReactNode;
|
|
17
|
-
[name: string]:
|
|
17
|
+
[name: string]: unknown;
|
|
18
18
|
}
|
|
19
19
|
export interface PasswordRulesConfigProps {
|
|
20
20
|
/** 标题 */
|
|
@@ -23,7 +23,7 @@ export interface PasswordRulesConfigProps {
|
|
|
23
23
|
type?: 'icon' | 'order';
|
|
24
24
|
/** 规则列表 */
|
|
25
25
|
list?: PasswordRulesConfigItemProps[];
|
|
26
|
-
[name: string]:
|
|
26
|
+
[name: string]: unknown;
|
|
27
27
|
}
|
|
28
28
|
export interface PasswordRulesProps {
|
|
29
29
|
/** 样式class */
|
|
@@ -43,7 +43,7 @@ export interface PasswordRulesProps {
|
|
|
43
43
|
* undefined: 未全部通过
|
|
44
44
|
* */
|
|
45
45
|
onCheckAll?: (bol: boolean | undefined) => void;
|
|
46
|
-
[name: string]:
|
|
46
|
+
[name: string]: unknown;
|
|
47
47
|
}
|
|
48
48
|
declare const PasswordRules: FunctionComponent<PasswordRulesProps>;
|
|
49
49
|
export default PasswordRules;
|
|
@@ -0,0 +1,227 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "PopConfirm",
|
|
3
|
+
"category": "Feedback",
|
|
4
|
+
"description": "点击元素,弹出气泡确认框,用于危险操作二次确认",
|
|
5
|
+
"semantic": {
|
|
6
|
+
"intent": [
|
|
7
|
+
"二次确认",
|
|
8
|
+
"防止误操作",
|
|
9
|
+
"轻量级确认"
|
|
10
|
+
],
|
|
11
|
+
"useCases": [
|
|
12
|
+
"删除操作",
|
|
13
|
+
"风险操作",
|
|
14
|
+
"状态变更"
|
|
15
|
+
],
|
|
16
|
+
"riskLevel": "high"
|
|
17
|
+
},
|
|
18
|
+
"variants": {
|
|
19
|
+
"default": {
|
|
20
|
+
"meaning": "默认样式"
|
|
21
|
+
}
|
|
22
|
+
},
|
|
23
|
+
"states": [
|
|
24
|
+
"visible",
|
|
25
|
+
"hidden",
|
|
26
|
+
"loading"
|
|
27
|
+
],
|
|
28
|
+
"idealProps": {
|
|
29
|
+
"title": {
|
|
30
|
+
"type": "string | ReactNode",
|
|
31
|
+
"description": "确认框标题(src/Popconfirm/index.tsx:117 `title && <div>` 实证:未传时不渲染标题区域)"
|
|
32
|
+
},
|
|
33
|
+
"content": {
|
|
34
|
+
"type": "string | ReactNode",
|
|
35
|
+
"description": "确认框正文内容(src/Popconfirm/index.tsx:119 `content && <div>` 实证:独立于 title 渲染,支持 ReactNode)"
|
|
36
|
+
},
|
|
37
|
+
"onOk": {
|
|
38
|
+
"type": "function",
|
|
39
|
+
"signature": "() => void",
|
|
40
|
+
"description": "点击确认按钮的回调(src/Popconfirm/index.tsx:63 `handleOk` → `onOk?.()` 实证)。签名是 `() => void`,**不接收参数**。⚠️ onOk 调用后组件会自动调 handleClose 关闭弹框(非受控模式下)"
|
|
41
|
+
},
|
|
42
|
+
"onCancel": {
|
|
43
|
+
"type": "function",
|
|
44
|
+
"signature": "() => void",
|
|
45
|
+
"description": "点击取消按钮的回调(src/Popconfirm/index.tsx:60 `handleCancel` → `onCancel?.()` 实证)。签名是 `() => void`,**不接收参数**。onCancel 调用后同样会自动 handleClose"
|
|
46
|
+
},
|
|
47
|
+
"okText": {
|
|
48
|
+
"type": "string",
|
|
49
|
+
"default": "确定",
|
|
50
|
+
"description": "确认按钮文字(src/Popconfirm/index.tsx:170 `okText ?? intl({id:'ok'})` 实证,未传时使用 i18n 默认值)"
|
|
51
|
+
},
|
|
52
|
+
"cancelText": {
|
|
53
|
+
"type": "string",
|
|
54
|
+
"default": "取消",
|
|
55
|
+
"description": "取消按钮文字(src/Popconfirm/index.tsx:158 `cancelText ?? intl({id:'cancel'})` 实证)"
|
|
56
|
+
},
|
|
57
|
+
"okButtonProps": {
|
|
58
|
+
"type": "object",
|
|
59
|
+
"objectShape": {
|
|
60
|
+
"disabled": { "type": "boolean", "description": "禁用确认按钮" },
|
|
61
|
+
"loading": { "type": "boolean", "description": "确认按钮 loading 状态" },
|
|
62
|
+
"variant": { "type": "'contained' | 'outlined' | 'text'", "description": "按钮样式变体" },
|
|
63
|
+
"size": { "type": "'small' | 'medium' | 'large'", "description": "按钮尺寸" }
|
|
64
|
+
},
|
|
65
|
+
"description": "确认按钮属性(ButtonProps 子集)。⚠️ okButtonDanger=true 时 danger 样式优先级高于 okButtonProps.danger(src:168 `danger={okButtonDanger ?? okButtonProps?.danger}` 实证)"
|
|
66
|
+
},
|
|
67
|
+
"trigger": {
|
|
68
|
+
"type": "enum",
|
|
69
|
+
"values": [
|
|
70
|
+
"click",
|
|
71
|
+
"hover"
|
|
72
|
+
],
|
|
73
|
+
"default": "click",
|
|
74
|
+
"description": "触发方式(src/Popconfirm/index.tsx:82 解构默认值 'click' 实证)"
|
|
75
|
+
},
|
|
76
|
+
"type": {
|
|
77
|
+
"type": "enum",
|
|
78
|
+
"values": ["success", "info", "error", "warning"],
|
|
79
|
+
"default": "warning",
|
|
80
|
+
"description": "图标类型(src/Popconfirm/index.tsx:83 解构默认 'warning' 实证,`iconMapping` 字典按 type 取对应 icon)"
|
|
81
|
+
},
|
|
82
|
+
"open": {
|
|
83
|
+
"type": "boolean",
|
|
84
|
+
"default": false,
|
|
85
|
+
"description": "是否显示弹框(受控,需配合 controllable=true 才生效)。src:175 `controllable && setInOpen(open)` 实证:**单独传 open 不生效——必须同时传 controllable={true}**"
|
|
86
|
+
},
|
|
87
|
+
"controllable": {
|
|
88
|
+
"type": "boolean",
|
|
89
|
+
"default": false,
|
|
90
|
+
"description": "是否启用受控模式(src:73 `!controllable` 判断实证)。true 时内部不自动切换 inOpen,完全由 open prop 控制;false(默认) 时为非受控,点击确定/取消自动关闭"
|
|
91
|
+
},
|
|
92
|
+
"showCancel": {
|
|
93
|
+
"type": "boolean",
|
|
94
|
+
"default": true,
|
|
95
|
+
"description": "是否显示取消按钮(src:152-160 `showCancel &&` 实证)"
|
|
96
|
+
},
|
|
97
|
+
"okButtonDanger": {
|
|
98
|
+
"type": "boolean",
|
|
99
|
+
"default": false,
|
|
100
|
+
"description": "确认按钮是否显示危险(红色)样式(src:168 优先级高于 okButtonProps.danger)"
|
|
101
|
+
},
|
|
102
|
+
"countdown": {
|
|
103
|
+
"type": "boolean",
|
|
104
|
+
"default": false,
|
|
105
|
+
"description": "是否启用确认按钮倒计时(src:92-112 useEffect 实证)。倒计时进行时确认按钮 disabled,倒计时结束自动解除。搭配 countdownTime 设置时长"
|
|
106
|
+
},
|
|
107
|
+
"countdownTime": {
|
|
108
|
+
"type": "number",
|
|
109
|
+
"default": 5,
|
|
110
|
+
"description": "倒计时时长(秒,src:88 解构默认值 5 实证)。countdown=true 时生效"
|
|
111
|
+
},
|
|
112
|
+
"onClose": {
|
|
113
|
+
"type": "function",
|
|
114
|
+
"signature": "() => void",
|
|
115
|
+
"description": "弹框关闭回调(src:66-72 `handleClose` → `onClose?.()` 实证)。**非受控模式下**:确定/取消/点击外部都会触发 onClose。受控模式(controllable=true)下不触发自动关闭流程"
|
|
116
|
+
},
|
|
117
|
+
"onCountdownFinish": {
|
|
118
|
+
"type": "function",
|
|
119
|
+
"signature": "() => void",
|
|
120
|
+
"description": "倒计时完成回调(src:100 `onCountdownFinish?.()` 实证)。countdown=true 时,倒计时到 0 触发"
|
|
121
|
+
},
|
|
122
|
+
"placement": {
|
|
123
|
+
"type": "enum",
|
|
124
|
+
"values": ["top", "bottom", "left", "right", "top-start", "top-end", "bottom-start", "bottom-end"],
|
|
125
|
+
"default": "top-start",
|
|
126
|
+
"description": "弹框弹出位置(src:89 解构默认 'top-start' 实证,透传给 Tooltip placement)"
|
|
127
|
+
}
|
|
128
|
+
},
|
|
129
|
+
"do": [
|
|
130
|
+
"在执行不可逆或高风险操作前使用 PopConfirm",
|
|
131
|
+
"提供明确的标题和内容描述(title + content 分层,title 是主判断,content 是补充说明)",
|
|
132
|
+
"高危操作(如删除)使用 okButtonDanger={true} 突出危险样式,提示用户谨慎操作",
|
|
133
|
+
"需要强制用户读完提示再确认时使用 countdown={true},配合 countdownTime 控制等待时长",
|
|
134
|
+
"受控模式必须 controllable={true} + open={state} 配合使用,单独传 open 无效"
|
|
135
|
+
],
|
|
136
|
+
"dont": [
|
|
137
|
+
"滥用 PopConfirm 导致用户疲劳(非关键操作不应确认)",
|
|
138
|
+
"在 PopConfirm 中放置过多复杂内容(应使用 Modal)",
|
|
139
|
+
"不要假设 onOk/onCancel 有参数——签名是 `() => void`,无参数(src 实证)",
|
|
140
|
+
"不要单独传 open={true} 而不传 controllable={true}——非受控模式下 open prop 被忽略(src:175 实证)",
|
|
141
|
+
"不要在 actions 自定义底部按钮后还期望 onOk/onCancel 被触发——传了 actions 时默认按钮区域被完全替换"
|
|
142
|
+
],
|
|
143
|
+
"events": {
|
|
144
|
+
"onOk": {
|
|
145
|
+
"signature": "() => void",
|
|
146
|
+
"asyncSupported": false,
|
|
147
|
+
"examples": [
|
|
148
|
+
"点击确认按钮触发,非受控模式下弹框自动关闭",
|
|
149
|
+
"高危删除操作:onOk 内调 deleteItem(id) 执行删除逻辑",
|
|
150
|
+
"配合 okButtonDanger={true}:onOk 显示红色按钮,用户点击后执行危险操作"
|
|
151
|
+
],
|
|
152
|
+
"commonMistakes": [
|
|
153
|
+
"假设 onOk 接收参数(如 event)→ 签名是 () => void,无参数(src:63-65 `onOk?.()` 实证)",
|
|
154
|
+
"在 onOk 内调 setOpen(false) 手动关闭 → 非受控模式下 handleOk 已自动调 handleClose 关闭,无需手动干预",
|
|
155
|
+
"假设 async onOk 能自动等待 → PopConfirm 不支持 asyncSupported,onOk 不 await,调用立即返回"
|
|
156
|
+
]
|
|
157
|
+
},
|
|
158
|
+
"onCancel": {
|
|
159
|
+
"signature": "() => void",
|
|
160
|
+
"asyncSupported": false,
|
|
161
|
+
"examples": [
|
|
162
|
+
"点击取消按钮触发,弹框自动关闭",
|
|
163
|
+
"onCancel 内重置临时状态(如清空输入框)",
|
|
164
|
+
"showCancel=false 时 onCancel 不会被触发(取消按钮不显示)"
|
|
165
|
+
],
|
|
166
|
+
"commonMistakes": [
|
|
167
|
+
"假设 onCancel 接收 event 参数 → 签名是 () => void(src:60-62 `onCancel?.()` 实证)",
|
|
168
|
+
"把 onCancel 和 onClose 混用 → onCancel 只绑定取消按钮,onClose 在任何关闭路径后触发",
|
|
169
|
+
"传 showCancel={false} 后仍期望 onCancel 触发 → 按钮不渲染,用户无法点击触发"
|
|
170
|
+
]
|
|
171
|
+
},
|
|
172
|
+
"onClose": {
|
|
173
|
+
"signature": "() => void",
|
|
174
|
+
"asyncSupported": false,
|
|
175
|
+
"examples": [
|
|
176
|
+
"非受控模式下,确定/取消/点击外部都会触发 onClose",
|
|
177
|
+
"用于清理弹框关闭后的状态(如重置 loading 标志)",
|
|
178
|
+
"受控模式(controllable=true)下由业务方手动控制 open,onClose 作为通知回调"
|
|
179
|
+
],
|
|
180
|
+
"commonMistakes": [
|
|
181
|
+
"受控模式下期望 onClose 自动关闭弹框 → controllable=true 时 handleClose 内 setInOpen 不被调用,需业务方 setOpen(false)",
|
|
182
|
+
"假设 onClose 和 onCancel 是同一个 → onClose 是统一关闭通知,onCancel 只绑取消按钮",
|
|
183
|
+
"非受控下在 onOk 内又调 setOpen(false) 与 onClose 重复 → 非受控模式已自动关闭"
|
|
184
|
+
]
|
|
185
|
+
},
|
|
186
|
+
"onCountdownFinish": {
|
|
187
|
+
"signature": "() => void",
|
|
188
|
+
"asyncSupported": false,
|
|
189
|
+
"examples": [
|
|
190
|
+
"countdown=true 倒计时到 0 时触发,此时确认按钮解禁",
|
|
191
|
+
"用于记录用户是否耐心等待完整倒计时(埋点场景)",
|
|
192
|
+
"倒计时完成后触发提示音或动画"
|
|
193
|
+
],
|
|
194
|
+
"commonMistakes": [
|
|
195
|
+
"仅传 onCountdownFinish 而未传 countdown={true} → countdown=false 时不会启动计时,回调不触发",
|
|
196
|
+
"假设倒计时完成后弹框自动关闭 → onCountdownFinish 只是通知,不自动关闭,需在回调内手动处理",
|
|
197
|
+
"假设倒计时单位是毫秒 → countdownTime 单位是秒(src:88 默认值 5 = 5秒)"
|
|
198
|
+
]
|
|
199
|
+
}
|
|
200
|
+
},
|
|
201
|
+
"typescriptPitfalls": [
|
|
202
|
+
{
|
|
203
|
+
"issue": "onOk / onCancel 的类型声明是 Function,不是具体签名,直接用 any 会丢类型安全",
|
|
204
|
+
"wrong": "onOk={(val: any) => doDelete(val)} // onOk 无参数,val 永远是 undefined",
|
|
205
|
+
"right": "onOk={() => doDelete(id)} // 正确:() => void,id 从外部闭包获取"
|
|
206
|
+
},
|
|
207
|
+
{
|
|
208
|
+
"issue": "受控模式需同时传 controllable={true},单独传 open 无效",
|
|
209
|
+
"wrong": "<PopConfirm open={isOpen} onClose={() => setIsOpen(false)} /> // open 被忽略,非受控模式",
|
|
210
|
+
"right": "<PopConfirm open={isOpen} controllable={true} onClose={() => setIsOpen(false)} />"
|
|
211
|
+
},
|
|
212
|
+
{
|
|
213
|
+
"issue": "type 枚举控制图标,不接受 'danger' 等非法值",
|
|
214
|
+
"wrong": "<PopConfirm type='danger' /> // 'danger' 不在枚举里,iconMapping 会取 undefined",
|
|
215
|
+
"right": "<PopConfirm type='error' okButtonDanger={true} /> // 危险操作:type='error' 图标 + okButtonDanger 红色按钮"
|
|
216
|
+
},
|
|
217
|
+
{
|
|
218
|
+
"issue": "countdown 倒计时单位是秒,不是毫秒",
|
|
219
|
+
"wrong": "<PopConfirm countdown={true} countdownTime={3000} /> // 3000 秒 = 50 分钟,几乎不会结束",
|
|
220
|
+
"right": "<PopConfirm countdown={true} countdownTime={3} /> // 3 秒倒计时"
|
|
221
|
+
}
|
|
222
|
+
],
|
|
223
|
+
"mapping": {
|
|
224
|
+
"realComponent": "PopConfirm",
|
|
225
|
+
"adapter": null
|
|
226
|
+
}
|
|
227
|
+
}
|
package/es/PopConfirm/index.d.ts
CHANGED
|
@@ -59,7 +59,7 @@ export interface PopConfirmProps {
|
|
|
59
59
|
onCountdownFinish?: () => void;
|
|
60
60
|
/** 浮层渲染容器,默认body */
|
|
61
61
|
getPopupContainer?: (triggerNode: HTMLElement) => HTMLElement;
|
|
62
|
-
[name: string]:
|
|
62
|
+
[name: string]: unknown;
|
|
63
63
|
}
|
|
64
64
|
export declare const PopConfirm: FC<PopConfirmProps>;
|
|
65
65
|
export default PopConfirm;
|