@para-ui/core 5.0.0-beta.8 → 5.0.0
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/ExpressionInput/component.json +79 -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/README.md +0 -5
- package/Radio/component.json +136 -0
- package/RadioGroup/component.json +149 -0
- package/RangeInput/component.json +198 -0
- package/Result/component.json +104 -0
- package/ScrollBar/component.json +115 -0
- package/Search/component.json +177 -0
- package/Select/component.json +244 -0
- package/SelectInput/component.json +184 -0
- package/Selector/component.json +203 -0
- package/SelectorPicker/component.json +179 -0
- package/SingleBox/component.json +151 -0
- package/Slider/component.json +181 -0
- package/SortBox/component.json +108 -0
- package/Status/component.json +104 -0
- package/Stepper/component.json +129 -0
- package/Switch/component.json +207 -0
- package/Table/component.json +547 -0
- package/Tabs/component.json +227 -0
- package/Tag/component.json +221 -0
- package/TextEditor/component.json +186 -0
- package/TextField/component.json +290 -0
- package/TimePicker/component.json +176 -0
- package/Timeline/component.json +110 -0
- package/Title/component.json +156 -0
- package/ToggleButton/component.json +153 -0
- package/Tooltip/component.json +176 -0
- package/Transfer/component.json +157 -0
- package/Tree/component.json +512 -0
- package/Upload/component.json +450 -0
- package/ai-workflows/01-crud-list-multi-drawer.md +278 -0
- package/ai-workflows/02-rbac-operation-buttons.md +290 -0
- package/ai-workflows/03-complex-form-async-cascade.md +350 -0
- package/ai-workflows/04-array-field-form.md +281 -0
- package/ai-workflows/05-popconfirm-async-message-queue.md +333 -0
- package/ai-workflows/06-modal-drawer-form-workflow.md +385 -0
- package/ai-workflows/07-search-filter-table-trio.md +387 -0
- package/ai-workflows/08-table-advanced-features.md +365 -0
- package/ai-workflows/09-batch-operation-export-progress.md +367 -0
- package/ai-workflows/10-cross-component-state-coordination.md +412 -0
- package/es/AlignBox/component.json +89 -0
- package/es/AlignBox/index.css +1 -1
- package/es/AlignBox/index.d.ts +6 -2
- package/es/AlignBox/index.js +1 -1
- package/es/AlignBox/style/index.css +1 -1
- package/es/Anchor/anchorMenu/index.d.ts +2 -1
- package/es/Anchor/anchorMenu/index.js +36 -33
- package/es/Anchor/component.json +130 -0
- package/es/Anchor/index.js +52 -49
- package/es/Anchor/type.d.ts +8 -4
- package/es/Argv/batchEdit/index.js +1 -1
- package/es/Argv/component.json +216 -0
- package/es/Argv/dataGenerator/index.js +1 -1
- package/es/Argv/index.d.ts +5 -6
- package/es/Argv/index.js +1 -1
- 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 +33 -30
- 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/AutoTips/index.js +1 -1
- 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 +1 -1
- package/es/Cascader/OptionList/Column.js +1 -1
- package/es/Cascader/OptionList/index.js +1 -1
- package/es/Cascader/component.json +196 -0
- package/es/Cascader/hooks/useEntities.js +7 -7
- package/es/Cascader/interface.d.ts +1 -0
- package/es/Cascader/utils/commonUtil.d.ts +1 -1
- package/es/Cascader/utils/commonUtil.js +16 -16
- package/es/Cascader/utils/treeUtil.d.ts +14 -5
- package/es/Cascader/utils/treeUtil.js +1 -1
- package/es/Checkbox/component.json +138 -0
- package/es/CheckboxGroup/component.json +152 -0
- package/es/CheckboxGroup/index.js +1 -1
- package/es/CodeEditor/component.json +189 -0
- package/es/CodeEditor/index.d.ts +11 -10
- package/es/CodeEditor/index.js +25 -25
- package/es/Collapse/component.json +166 -0
- package/es/Collapse/index.d.ts +1 -1
- package/es/Collapse/index.js +23 -22
- package/es/CollapseBox/component.json +84 -0
- package/es/CollapseLayout/component.json +155 -0
- package/es/ColorPicker/component.json +142 -0
- package/es/ComboSelect/component.json +181 -0
- package/es/ComboSelect/index.js +115 -109
- package/es/ComboSelect/interface.d.ts +2 -2
- package/es/ComboSelect/utils.d.ts +3 -3
- package/es/ComboSelect/utils.js +1 -1
- package/es/Container/component.json +111 -0
- package/es/ContentBox/component.json +81 -0
- package/es/CopyText/component.json +118 -0
- package/es/CycleSelector/component.json +98 -0
- package/es/CycleSelector/index.js +14 -13
- package/es/DatePicker/component.json +192 -0
- package/es/DatePicker/generatePicker/generateRangePicker.js +11 -11
- package/es/DatePicker/generatePicker/generateSinglePicker.js +2 -2
- package/es/Descriptions/component.json +142 -0
- package/es/Descriptions/index.d.ts +1 -1
- package/es/Desktop/component.json +171 -0
- package/es/Desktop/index.js +1 -1
- 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/Dropdown/index.js +1 -1
- package/es/DynamicMultiBox/component.json +278 -0
- package/es/DynamicMultiBox/formItem.d.ts +1 -1
- package/es/DynamicMultiBox/index.d.ts +2 -2
- package/es/DynamicMultiBox/index.js +1 -1
- package/es/DynamicMultiBox/interface.d.ts +76 -76
- 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/ExpressionInput/HighlightOverlay.d.ts +8 -0
- package/es/ExpressionInput/HighlightOverlay.js +27 -0
- package/es/ExpressionInput/Popup.d.ts +19 -0
- package/es/ExpressionInput/Popup.js +93 -0
- package/es/ExpressionInput/component.json +79 -0
- package/es/ExpressionInput/detectChainAtCursor.d.ts +17 -0
- package/es/ExpressionInput/detectChainAtCursor.js +31 -0
- package/es/ExpressionInput/filterCandidatesByPartial.d.ts +2 -0
- package/es/ExpressionInput/filterCandidatesByPartial.js +15 -0
- package/es/ExpressionInput/highlightSegments.d.ts +9 -0
- package/es/ExpressionInput/highlightSegments.js +14 -0
- package/es/ExpressionInput/index.css +1 -0
- package/es/ExpressionInput/index.d.ts +5 -0
- package/es/ExpressionInput/index.js +178 -0
- package/es/ExpressionInput/interface.d.ts +52 -0
- package/es/ExpressionInput/isExpressionValue.d.ts +5 -0
- package/es/ExpressionInput/isExpressionValue.js +18 -0
- package/es/ExpressionInput/lang/en_US.d.ts +4 -0
- package/es/ExpressionInput/lang/en_US.js +7 -0
- package/es/ExpressionInput/lang/index.d.ts +9 -0
- package/es/ExpressionInput/lang/index.js +10 -0
- package/es/ExpressionInput/lang/zh_CN.d.ts +4 -0
- package/es/ExpressionInput/lang/zh_CN.js +7 -0
- package/es/ExpressionInput/style/css.js +1 -0
- package/es/ExpressionInput/style/index.css +1 -0
- package/es/ExpressionInput/style/index.js +1 -0
- package/es/ExpressionInput/useExpressionInput.d.ts +26 -0
- package/es/ExpressionInput/useExpressionInput.js +59 -0
- package/es/FieldForm/FieldFormItem/ItemHolder.js +1 -1
- package/es/FieldForm/FieldFormItem/MemoInput.d.ts +2 -2
- package/es/FieldForm/FieldFormItem/StatusProvider.js +1 -1
- package/es/FieldForm/FieldFormItem/index.d.ts +6 -6
- package/es/FieldForm/Form.d.ts +2 -2
- package/es/FieldForm/Form.js +1 -1
- package/es/FieldForm/FormItemInput.js +1 -1
- package/es/FieldForm/FormItemLabel.js +1 -1
- 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/Form/index.js +1 -1
- 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/GlobalContext/confirmLocale.js +1 -1
- package/es/GlobalContext/index.js +1 -1
- package/es/Help/component.json +118 -0
- package/es/HelperText/component.json +126 -0
- package/es/Image/PreviewGroup.js +1 -1
- package/es/Image/component.json +165 -0
- package/es/Image/index.js +1 -1
- package/es/InputCode/component.json +191 -0
- package/es/InputCode/index.d.ts +2 -2
- package/es/InputCode/index.js +1 -1
- package/es/InputLang/component.json +205 -0
- package/es/InputLang/index.js +2 -2
- package/es/InputNumber/component.json +162 -0
- package/es/InputNumber/index.d.ts +13 -7
- package/es/InputNumber/index.js +152 -144
- 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/Menu/verticalMenuList.js +1 -1
- package/es/Message/component.json +246 -0
- package/es/Message/index.d.ts +2 -2
- package/es/Message/index.js +19 -19
- package/es/Modal/Confirm/index.d.ts +1 -1
- package/es/Modal/Confirm/index.js +1 -1
- package/es/Modal/component.json +277 -0
- package/es/Modal/index.d.ts +85 -5
- package/es/Modal/index.js +159 -122
- package/es/Modal/interface.d.ts +1 -0
- package/es/MultiBox/component.json +216 -0
- package/es/MultiBox/index.js +19 -14
- package/es/Notification/component.json +184 -0
- package/es/OperateBtn/component.json +134 -0
- package/es/OperateBtn/index.d.ts +3 -3
- package/es/PageHeader/component.json +112 -0
- package/es/PageHeader/horizontalMeun.js +1 -1
- package/es/PageHeader/horizontalMeunRight.js +1 -1
- package/es/Pagination/component.json +181 -0
- package/es/Pagination/index.js +15 -15
- package/es/ParauiProvider/index.js +1 -1
- 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/QuickReplyCode/index.js +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.d.ts +15 -7
- package/es/RangeInput/index.js +120 -103
- 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.d.ts +11 -8
- package/es/Select/index.js +441 -438
- package/es/SelectInput/component.json +184 -0
- package/es/SelectInput/index.d.ts +4 -4
- package/es/SelectInput/index.js +8 -8
- package/es/Selector/component.json +203 -0
- package/es/Selector/index.js +56 -50
- package/es/Selector/interface.d.ts +2 -2
- package/es/Selector/selectorData/index.js +1 -1
- package/es/Selector/selectorMain/index.js +3 -3
- package/es/Selector/selectorNode/index.js +1 -1
- package/es/Selector/util.d.ts +3 -3
- package/es/Selector/util.js +6 -12
- 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 +385 -382
- package/es/Table/interface.d.ts +30 -0
- package/es/Table/tableHead.js +1 -1
- package/es/Table/util.d.ts +1 -1
- package/es/Table/util.js +3 -12
- 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/TextEditor/index.js +1 -1
- package/es/TextField/component.json +290 -0
- package/es/TextField/index.d.ts +2 -2
- package/es/TextField/index.js +1 -1
- 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/ToggleButton/index.js +1 -1
- package/es/Tooltip/component.json +176 -0
- package/es/Tooltip/index.js +58 -53
- package/es/Tooltip/interface.d.ts +14 -1
- package/es/Tooltip/utils.js +6 -6
- package/es/Transfer/component.json +157 -0
- package/es/Tree/OperateBar/index.js +1 -1
- package/es/Tree/Tree.js +3 -3
- package/es/Tree/component.json +512 -0
- package/es/Tree/interface.d.ts +1 -1
- package/es/Upload/component.json +450 -0
- package/es/Upload/util.js +1 -1
- package/es/Utils/snack-kit-shims.d.ts +18 -0
- package/es/Utils/snack-kit-shims.js +19 -0
- package/es/Utils/type.d.ts +0 -6
- package/es/_virtual/index.js +5 -3
- package/es/_virtual/index2.js +2 -5
- package/es/index.d.ts +4 -0
- package/es/index.js +152 -150
- package/es/locale/en-US.d.ts +3 -0
- package/es/locale/en-US.js +3 -0
- 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 +3 -0
- package/es/locale/zh-CN.js +3 -0
- package/es/locale/zh_CN.d.ts +361 -0
- package/es/locale/zh_CN.js +364 -0
- package/es/node_modules/classnames/index.js +1 -1
- 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/dataGenerator/index.js +1 -1
- package/lib/Argv/index.d.ts +5 -6
- package/lib/Argv/index.js +1 -1
- 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/AutoTips/index.js +1 -1
- 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/OptionList/Column.js +1 -1
- package/lib/Cascader/OptionList/index.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/CheckboxGroup/index.js +1 -1
- package/lib/CodeEditor/component.json +189 -0
- package/lib/CodeEditor/index.d.ts +11 -10
- package/lib/CodeEditor/index.js +1 -1
- package/lib/Collapse/component.json +166 -0
- package/lib/Collapse/index.d.ts +1 -1
- package/lib/Collapse/index.js +1 -1
- package/lib/CollapseBox/component.json +84 -0
- package/lib/CollapseLayout/component.json +155 -0
- package/lib/ColorPicker/component.json +142 -0
- package/lib/ComboSelect/component.json +181 -0
- package/lib/ComboSelect/index.js +1 -1
- package/lib/ComboSelect/interface.d.ts +2 -2
- package/lib/ComboSelect/utils.d.ts +3 -3
- package/lib/ComboSelect/utils.js +1 -1
- package/lib/Container/component.json +111 -0
- package/lib/ContentBox/component.json +81 -0
- package/lib/CopyText/component.json +118 -0
- package/lib/CycleSelector/component.json +98 -0
- package/lib/CycleSelector/index.js +1 -1
- package/lib/DatePicker/component.json +192 -0
- package/lib/DatePicker/generatePicker/generateRangePicker.js +1 -1
- package/lib/DatePicker/generatePicker/generateSinglePicker.js +1 -1
- package/lib/Descriptions/component.json +142 -0
- package/lib/Descriptions/index.d.ts +1 -1
- package/lib/Desktop/component.json +171 -0
- package/lib/Desktop/index.js +1 -1
- 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/Dropdown/index.js +1 -1
- package/lib/DynamicMultiBox/component.json +278 -0
- package/lib/DynamicMultiBox/formItem.d.ts +1 -1
- package/lib/DynamicMultiBox/index.d.ts +2 -2
- package/lib/DynamicMultiBox/index.js +1 -1
- package/lib/DynamicMultiBox/interface.d.ts +76 -76
- 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/ExpressionInput/HighlightOverlay.d.ts +8 -0
- package/lib/ExpressionInput/HighlightOverlay.js +2 -0
- package/lib/ExpressionInput/Popup.d.ts +19 -0
- package/lib/ExpressionInput/Popup.js +2 -0
- package/lib/ExpressionInput/component.json +79 -0
- package/lib/ExpressionInput/detectChainAtCursor.d.ts +17 -0
- package/lib/ExpressionInput/detectChainAtCursor.js +2 -0
- package/lib/ExpressionInput/filterCandidatesByPartial.d.ts +2 -0
- package/lib/ExpressionInput/filterCandidatesByPartial.js +2 -0
- package/lib/ExpressionInput/highlightSegments.d.ts +9 -0
- package/lib/ExpressionInput/highlightSegments.js +2 -0
- package/lib/ExpressionInput/index.css +1 -0
- package/lib/ExpressionInput/index.d.ts +5 -0
- package/lib/ExpressionInput/index.js +2 -0
- package/lib/ExpressionInput/interface.d.ts +52 -0
- package/lib/ExpressionInput/isExpressionValue.d.ts +5 -0
- package/lib/ExpressionInput/isExpressionValue.js +2 -0
- package/lib/ExpressionInput/lang/en_US.d.ts +4 -0
- package/lib/ExpressionInput/lang/en_US.js +2 -0
- package/lib/ExpressionInput/lang/index.d.ts +9 -0
- package/lib/ExpressionInput/lang/index.js +2 -0
- package/lib/ExpressionInput/lang/zh_CN.d.ts +4 -0
- package/lib/ExpressionInput/lang/zh_CN.js +2 -0
- package/lib/ExpressionInput/style/css.js +1 -0
- package/lib/ExpressionInput/style/index.css +1 -0
- package/lib/ExpressionInput/style/index.js +1 -0
- package/lib/ExpressionInput/useExpressionInput.d.ts +26 -0
- package/lib/ExpressionInput/useExpressionInput.js +2 -0
- package/lib/FieldForm/FieldFormItem/ItemHolder.js +1 -1
- package/lib/FieldForm/FieldFormItem/MemoInput.d.ts +2 -2
- package/lib/FieldForm/FieldFormItem/StatusProvider.js +1 -1
- package/lib/FieldForm/FieldFormItem/index.d.ts +6 -6
- package/lib/FieldForm/Form.d.ts +2 -2
- package/lib/FieldForm/Form.js +1 -1
- package/lib/FieldForm/FormItemInput.js +1 -1
- package/lib/FieldForm/FormItemLabel.js +1 -1
- 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/Form/index.js +1 -1
- 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/GlobalContext/confirmLocale.js +1 -1
- package/lib/GlobalContext/index.js +1 -1
- package/lib/Help/component.json +118 -0
- package/lib/HelperText/component.json +126 -0
- package/lib/Image/PreviewGroup.js +1 -1
- package/lib/Image/component.json +165 -0
- package/lib/Image/index.js +1 -1
- 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/InputNumber/index.d.ts +13 -7
- package/lib/InputNumber/index.js +1 -1
- 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/Menu/verticalMenuList.js +1 -1
- 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 +85 -5
- package/lib/Modal/index.js +1 -1
- package/lib/Modal/interface.d.ts +1 -0
- package/lib/MultiBox/component.json +216 -0
- package/lib/MultiBox/index.js +1 -1
- package/lib/Notification/component.json +184 -0
- package/lib/OperateBtn/component.json +134 -0
- package/lib/OperateBtn/index.d.ts +3 -3
- package/lib/PageHeader/component.json +112 -0
- package/lib/PageHeader/horizontalMeun.js +1 -1
- package/lib/PageHeader/horizontalMeunRight.js +1 -1
- package/lib/Pagination/component.json +181 -0
- package/lib/Pagination/index.js +1 -1
- package/lib/ParauiProvider/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/QuickReplyCode/index.js +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.d.ts +15 -7
- 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.d.ts +11 -8
- package/lib/Select/index.js +1 -1
- package/lib/SelectInput/component.json +184 -0
- package/lib/SelectInput/index.d.ts +4 -4
- package/lib/SelectInput/index.js +1 -1
- package/lib/Selector/component.json +203 -0
- package/lib/Selector/index.js +1 -1
- package/lib/Selector/interface.d.ts +2 -2
- package/lib/Selector/selectorData/index.js +1 -1
- package/lib/Selector/selectorMain/index.js +1 -1
- package/lib/Selector/selectorNode/index.js +1 -1
- package/lib/Selector/util.d.ts +3 -3
- package/lib/Selector/util.js +1 -1
- 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 +30 -0
- package/lib/Table/tableHead.js +1 -1
- package/lib/Table/util.d.ts +1 -1
- package/lib/Table/util.js +1 -1
- 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/TextEditor/index.js +1 -1
- package/lib/TextField/component.json +290 -0
- package/lib/TextField/index.d.ts +2 -2
- package/lib/TextField/index.js +1 -1
- 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/ToggleButton/index.js +1 -1
- 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/OperateBar/index.js +2 -2
- package/lib/Tree/Tree.js +1 -1
- package/lib/Tree/component.json +512 -0
- package/lib/Tree/interface.d.ts +1 -1
- package/lib/Upload/component.json +450 -0
- package/lib/Upload/util.js +1 -1
- package/lib/Utils/snack-kit-shims.d.ts +18 -0
- package/lib/Utils/snack-kit-shims.js +2 -0
- package/lib/Utils/type.d.ts +0 -6
- package/lib/_virtual/index.js +1 -1
- package/lib/_virtual/index2.js +1 -1
- package/lib/index.d.ts +4 -0
- package/lib/index.js +1 -1
- package/lib/locale/en-US.d.ts +3 -0
- package/lib/locale/en-US.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 +3 -0
- package/lib/locale/zh-CN.js +1 -1
- package/lib/locale/zh_CN.d.ts +361 -0
- package/lib/locale/zh_CN.js +2 -0
- package/lib/node_modules/classnames/index.js +1 -1
- package/package.json +24 -4
- package/es/_virtual/index3.js +0 -5
- package/es/_virtual/index4.js +0 -5
- package/es/node_modules/@para-snack/core/dist/index.js +0 -5231
- package/lib/_virtual/index3.js +0 -2
- package/lib/_virtual/index4.js +0 -2
- package/lib/node_modules/@para-snack/core/dist/index.js +0 -20
- /package/es/{InputCode → CodeEditor}/index.css +0 -0
- /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",
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { j as m } from "../_virtual/jsx-runtime.js";
|
|
2
2
|
import u from "react";
|
|
3
3
|
import f from "../GlobalContext/index.js";
|
|
4
|
-
import { GetLanguage as n } from "
|
|
4
|
+
import { GetLanguage as n } from "../Utils/snack-kit-shims.js";
|
|
5
5
|
import { i18nIntl as s } from "../GlobalContext/intl.js";
|
|
6
6
|
import '../Styles/index.css';/* empty css */
|
|
7
7
|
import { changeConfirmLocale as d } from "../GlobalContext/confirmLocale.js";
|
|
@@ -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
|
+
}
|