@para-ui/core 5.0.0-beta.11 → 5.0.0-beta.13
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/AGENTS.md +315 -0
- package/AlignBox/component.json +89 -0
- package/Anchor/component.json +130 -0
- package/Argv/component.json +216 -0
- package/AutoBox/component.json +133 -0
- package/AutoButton/component.json +109 -0
- package/AutoTips/component.json +121 -0
- package/Badge/component.json +92 -0
- package/Breadcrumbs/component.json +142 -0
- package/Button/component.json +168 -0
- package/ButtonGroup/component.json +132 -0
- package/Card/component.json +162 -0
- package/Carousel/component.json +142 -0
- package/Cascader/component.json +196 -0
- package/Checkbox/component.json +138 -0
- package/CheckboxGroup/component.json +152 -0
- package/CodeEditor/component.json +189 -0
- package/Collapse/component.json +166 -0
- package/CollapseBox/component.json +84 -0
- package/CollapseLayout/component.json +155 -0
- package/ColorPicker/component.json +142 -0
- package/ComboSelect/component.json +181 -0
- package/Container/component.json +111 -0
- package/ContentBox/component.json +81 -0
- package/CopyText/component.json +118 -0
- package/CycleSelector/component.json +98 -0
- package/DatePicker/component.json +192 -0
- package/Descriptions/component.json +142 -0
- package/Desktop/component.json +171 -0
- package/DragVerify/component.json +114 -0
- package/Drawer/component.json +200 -0
- package/Dropdown/component.json +147 -0
- package/DynamicMultiBox/component.json +278 -0
- package/Empty/component.json +123 -0
- package/FieldForm/component.json +196 -0
- package/Form/component.json +161 -0
- package/FormItem/component.json +171 -0
- package/FunctionModal/component.json +197 -0
- package/Help/component.json +118 -0
- package/HelperText/component.json +126 -0
- package/Image/component.json +165 -0
- package/InputCode/component.json +191 -0
- package/InputLang/component.json +205 -0
- package/InputNumber/component.json +162 -0
- package/Label/component.json +126 -0
- package/Loading/component.json +91 -0
- package/Menu/component.json +180 -0
- package/Message/component.json +246 -0
- package/Modal/component.json +277 -0
- package/MultiBox/component.json +216 -0
- package/Notification/component.json +184 -0
- package/OperateBtn/component.json +134 -0
- package/PageHeader/component.json +112 -0
- package/Pagination/component.json +181 -0
- package/PasswordRules/component.json +105 -0
- package/PopConfirm/component.json +227 -0
- package/PopMenu/component.json +131 -0
- package/Popover/component.json +165 -0
- package/Progress/component.json +161 -0
- package/Prompt/component.json +144 -0
- package/Querying/component.json +96 -0
- package/QuickReply/component.json +129 -0
- package/Radio/component.json +136 -0
- package/RadioGroup/component.json +149 -0
- package/RangeInput/component.json +198 -0
- package/Result/component.json +104 -0
- package/ScrollBar/component.json +115 -0
- package/Search/component.json +177 -0
- package/Select/component.json +244 -0
- package/SelectInput/component.json +184 -0
- package/Selector/component.json +203 -0
- package/SelectorPicker/component.json +179 -0
- package/SingleBox/component.json +151 -0
- package/Slider/component.json +181 -0
- package/SortBox/component.json +108 -0
- package/Status/component.json +104 -0
- package/Stepper/component.json +129 -0
- package/Switch/component.json +207 -0
- package/Table/component.json +547 -0
- package/Tabs/component.json +227 -0
- package/Tag/component.json +221 -0
- package/TextEditor/component.json +186 -0
- package/TextField/component.json +290 -0
- package/TimePicker/component.json +176 -0
- package/Timeline/component.json +110 -0
- package/Title/component.json +156 -0
- package/ToggleButton/component.json +153 -0
- package/Tooltip/component.json +176 -0
- package/Transfer/component.json +157 -0
- package/Tree/component.json +512 -0
- package/Upload/component.json +450 -0
- package/ai-workflows/01-crud-list-multi-drawer.md +278 -0
- package/ai-workflows/02-rbac-operation-buttons.md +290 -0
- package/ai-workflows/03-complex-form-async-cascade.md +350 -0
- package/ai-workflows/04-array-field-form.md +281 -0
- package/ai-workflows/05-popconfirm-async-message-queue.md +333 -0
- package/ai-workflows/06-modal-drawer-form-workflow.md +385 -0
- package/ai-workflows/07-search-filter-table-trio.md +387 -0
- package/ai-workflows/08-table-advanced-features.md +365 -0
- package/ai-workflows/09-batch-operation-export-progress.md +367 -0
- package/ai-workflows/10-cross-component-state-coordination.md +412 -0
- package/es/AlignBox/component.json +89 -0
- package/es/AlignBox/index.css +1 -1
- package/es/AlignBox/index.d.ts +6 -2
- package/es/AlignBox/index.js +1 -1
- package/es/AlignBox/style/index.css +1 -1
- package/es/Anchor/anchorMenu/index.d.ts +2 -1
- package/es/Anchor/anchorMenu/index.js +36 -33
- package/es/Anchor/component.json +130 -0
- package/es/Anchor/index.js +52 -49
- package/es/Anchor/type.d.ts +8 -4
- 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 +19 -19
- 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.js +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/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/InputLang/component.json +205 -0
- package/es/InputLang/index.js +2 -2
- 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/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 +2 -2
- 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.js +20 -20
- 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 +114 -114
- package/es/SelectInput/component.json +184 -0
- 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 -2
- package/es/_virtual/index.js +5 -3
- package/es/_virtual/index2.js +2 -5
- 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/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.js +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/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/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.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 +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 -2
- package/lib/_virtual/index.js +1 -1
- package/lib/_virtual/index2.js +1 -1
- 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/lib/node_modules/classnames/index.js +1 -1
- package/package.json +11 -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/{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,112 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "PageHeader",
|
|
3
|
+
"category": "Navigation",
|
|
4
|
+
"description": "页头(应用级顶部导航条):左侧 logo/标题 + 中间横向菜单 + 右侧用户/语言/帮助/按钮区",
|
|
5
|
+
"semantic": {
|
|
6
|
+
"intent": [
|
|
7
|
+
"应用顶部导航",
|
|
8
|
+
"横向菜单展示",
|
|
9
|
+
"用户/语言/帮助入口聚合"
|
|
10
|
+
],
|
|
11
|
+
"useCases": [
|
|
12
|
+
"应用主页头",
|
|
13
|
+
"管理后台顶栏",
|
|
14
|
+
"工作台首屏"
|
|
15
|
+
],
|
|
16
|
+
"riskLevel": "low"
|
|
17
|
+
},
|
|
18
|
+
"variants": {
|
|
19
|
+
"default": {
|
|
20
|
+
"meaning": "标准页头(横向菜单 + 右侧功能区)"
|
|
21
|
+
}
|
|
22
|
+
},
|
|
23
|
+
"states": [
|
|
24
|
+
"default"
|
|
25
|
+
],
|
|
26
|
+
"idealProps": {
|
|
27
|
+
"leftRender": {
|
|
28
|
+
"type": "ReactNode",
|
|
29
|
+
"description": "左侧自定义内容(放 logo / 应用标题 / 返回按钮等);**支持纯文本 / 单行 JSX / 多行复合 JSX**(标题+副标题、返回按钮+标题、面包屑+标题、标题+状态彩标);**注意:不是 title / subTitle / backIcon / breadcrumb / onBack prop**(这些 Ant Design PageHeader 命名本组件均不存在,需要时全部组合进 leftRender ReactNode);典型场景见 docs/view/pageHeader/codeString.ts 注释 7a/7b/7c/7d"
|
|
30
|
+
},
|
|
31
|
+
"menuListProps": {
|
|
32
|
+
"type": "MenuListProps",
|
|
33
|
+
"description": "横向菜单配置对象;MenuListProps = { list?: MenuChildrenProps[]; selectMenu?: string; onClickMenu?: (item: MenuChildrenProps | false) => void; className?: string; moreCustomize?: ReactNode };src/PageHeader/interface.ts:38"
|
|
34
|
+
},
|
|
35
|
+
"footerProps": {
|
|
36
|
+
"type": "FooterProps",
|
|
37
|
+
"description": "**右侧功能区聚合对象**(放语言切换 / 用户菜单 / 帮助 / 按钮列表 / 自助跳转 / 自定义);FooterProps = { backSelfcareProps?: BackSelfcareProps; languageProps?: LanguageProps; btnListProps?: BtnListProps; userProps?: UserProps; helpProps?: HelpProps; render?: ReactNode; className?: string };**所有右侧功能都在这个对象里嵌套配置,不是顶层独立 prop**;**helpProps 结构同 BackSelfcareProps**(label/icon/render/onClick/className);**render 是「替换」语义**,传入后整个右侧被替换,其他 5 widget 字段都不渲染(无追加模式);src/PageHeader/interface.ts:162"
|
|
38
|
+
},
|
|
39
|
+
"selectMenu": {
|
|
40
|
+
"type": "string",
|
|
41
|
+
"description": "当前选中菜单(匹配 menuListProps.list[].path);顶层 selectMenu 会下传到 MenuListProps.selectMenu;src/PageHeader/index.tsx:14"
|
|
42
|
+
},
|
|
43
|
+
"onClickMenu": {
|
|
44
|
+
"type": "(item: MenuChildrenProps | false) => void",
|
|
45
|
+
"description": "菜单点击回调;**回参 item 是 MenuChildrenProps 对象或 false**(false 表示选中态被清空);MenuChildrenProps = { label?, type?, path?, icon?, children?, ... },典型用法 `item.path` 取菜单路径"
|
|
46
|
+
},
|
|
47
|
+
"className": {
|
|
48
|
+
"type": "string",
|
|
49
|
+
"description": "外层容器样式 class"
|
|
50
|
+
},
|
|
51
|
+
"style": {
|
|
52
|
+
"type": "React.CSSProperties",
|
|
53
|
+
"description": "外层容器内联样式"
|
|
54
|
+
}
|
|
55
|
+
},
|
|
56
|
+
"do": [
|
|
57
|
+
"logo / 应用名放 leftRender",
|
|
58
|
+
"横向菜单走 menuListProps.list(树形结构通过 children 嵌套)",
|
|
59
|
+
"右侧功能(语言 / 用户 / 帮助 / 按钮)统一在 footerProps 对象里嵌套配置",
|
|
60
|
+
"selectMenu 受控 — 父维护 string 匹配 list[].path"
|
|
61
|
+
],
|
|
62
|
+
"dont": [
|
|
63
|
+
"把 title / subTitle / extra / onBack / backIcon / breadcrumb / footer 当作顶层 prop 传(全部 Ant Design 命名,**本组件均不存在**)",
|
|
64
|
+
"把右侧功能字段(languageProps / userProps / btnListProps / helpProps / backSelfcareProps)拆到顶层(必须嵌套在 footerProps 对象里)",
|
|
65
|
+
"在 menuListProps.list[].type 上随意填值(仅支持 'redirect' | 'router' | 'iframe' | 'snack' | 'snackPage' 五种)",
|
|
66
|
+
"传 footerProps.render 同时配其他 widget 字段(render 是**替换语义**,会覆盖整个右侧,languageProps/userProps 等都不渲染;无追加模式)",
|
|
67
|
+
"期望 PageHeader 顶层有 bottomRender / footerRender / statsRender / extraBottom 下方内容区(**本组件不支持下方扩展插槽**;如需统计条/标签栏在 PageHeader 外层 div 包装)",
|
|
68
|
+
"把「标题 + 副标题」/「返回按钮 + 标题」/「面包屑 + 标题」拆成多个顶层 prop(本组件这类复合内容**全部塞进 leftRender ReactNode**;见 docs/view/pageHeader/codeString.ts 注释 7a/7b/7c)"
|
|
69
|
+
],
|
|
70
|
+
"events": {
|
|
71
|
+
"onClickMenu": {
|
|
72
|
+
"signature": "(item: MenuChildrenProps | false) => void",
|
|
73
|
+
"asyncSupported": false,
|
|
74
|
+
"examples": [
|
|
75
|
+
"获取路由路径:onClickMenu={(item) => { if (item) navigate(item.path); }}",
|
|
76
|
+
"清空选中:onClickMenu={(item) => { if (!item) setSelectMenu(''); else setSelectMenu(item.path); }}",
|
|
77
|
+
"嵌套子菜单点击:回参 item.children 可能有子项,item.path 是当前点击项的路径,非父级路径"
|
|
78
|
+
],
|
|
79
|
+
"commonMistakes": [
|
|
80
|
+
"假设 item 永远是对象——回参可能是 false(表示选中态被清空),使用前需判断 if (item)",
|
|
81
|
+
"直接用 item.label 作路由——应用 item.path;item.label 是显示文案",
|
|
82
|
+
"不更新 selectMenu 导致菜单高亮不同步——onClickMenu 触发后需 setState(item.path) 回写 selectMenu"
|
|
83
|
+
]
|
|
84
|
+
}
|
|
85
|
+
},
|
|
86
|
+
"typescriptPitfalls": [
|
|
87
|
+
{
|
|
88
|
+
"issue": "footerProps 内字段不能拆到 PageHeader 顶层,TS 会报未知 prop",
|
|
89
|
+
"wrong": "<PageHeader userProps={{ label: '张三' }} languageProps={{ ... }} /> // 这些不是顶层 prop",
|
|
90
|
+
"right": "<PageHeader footerProps={{ userProps: { label: '张三' }, languageProps: { ... } }} />"
|
|
91
|
+
},
|
|
92
|
+
{
|
|
93
|
+
"issue": "MenuChildrenProps.type 是菜单行为类型,有严格枚举,传错值 TS 不会报错但菜单不响应",
|
|
94
|
+
"wrong": "list={[{ label: '首页', type: 'link', path: '/home' }]} // 'link' 不在联合类型",
|
|
95
|
+
"right": "list={[{ label: '首页', type: 'router', path: '/home' }]} // 合法值: 'redirect' | 'router' | 'iframe' | 'snack' | 'snackPage'"
|
|
96
|
+
},
|
|
97
|
+
{
|
|
98
|
+
"issue": "onClickMenu 回参是 MenuChildrenProps | false,直接访问属性前需判空",
|
|
99
|
+
"wrong": "onClickMenu={(item) => navigate(item.path)} // item 可能是 false,访问 .path 会 TypeError",
|
|
100
|
+
"right": "onClickMenu={(item) => { if (item && item.path) navigate(item.path); }}"
|
|
101
|
+
},
|
|
102
|
+
{
|
|
103
|
+
"issue": "不要从 @para-ui/core 导入 MenuChildrenProps 用于 onClickMenu 类型标注——PageHeader/interface.ts 和 Menu/interface.ts 各有一个同名 MenuChildrenProps,两者互不兼容,强行标注会导致 TS2322",
|
|
104
|
+
"wrong": "import { PageHeader, MenuChildrenProps } from '@para-ui/core';\nonClickMenu={(item: MenuChildrenProps | false) => ...} // MenuChildrenProps 来自 Menu 不来自 PageHeader,类型冲突",
|
|
105
|
+
"right": "import { PageHeader } from '@para-ui/core';\n// 不标注类型,让 TS 推断,或使用 Parameters<typeof PageHeader>[0]['onClickMenu']\nonClickMenu={(item) => { if (item && item.path) navigate(item.path); }}"
|
|
106
|
+
}
|
|
107
|
+
],
|
|
108
|
+
"mapping": {
|
|
109
|
+
"realComponent": "PageHeader",
|
|
110
|
+
"adapter": null
|
|
111
|
+
}
|
|
112
|
+
}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const s=require("../_virtual/jsx-runtime.js"),i=require("react"),Q=require("../Popover/index.js"),W=require("../node_modules/@para-ui/icons/Down/index.js"),X=require("../node_modules/@para-ui/icons/index.js"),ue=require("../node_modules/@para-ui/icons/More/index.js"),ae=require("@
|
|
1
|
+
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const s=require("../_virtual/jsx-runtime.js"),i=require("react"),Q=require("../Popover/index.js"),W=require("../node_modules/@para-ui/icons/Down/index.js"),X=require("../node_modules/@para-ui/icons/index.js"),ue=require("../node_modules/@para-ui/icons/More/index.js"),ae=require("@snack-kit/lib"),U=require("../GlobalContext/constant.js"),Y=d=>{let l="div";return(!d||d.length===0)&&(l="a"),l},Z=(d=[],l,u)=>!d||d.length===0?{href:u||`#${l}`}:{},ee=d=>{const{idMenuLast:l,selectMenu:u="",onClickMenu:h,list:N=[],onMouseEnter:z,onMouseLeave:x,level:j=1,className:g}=d,[M,T]=i.useState(null),[C,S]=i.useState(null),[R,E]=i.useState([]),[f]=i.useState({});i.useEffect(()=>()=>{clearTimeout(f.leaveTimer)},[]);const b=(n,r)=>m=>{f.leaveTimer&&clearTimeout(f.leaveTimer),f.leaveTimer=setTimeout(()=>{let v=[n];n.children&&n.children.length>0&&(v=n.children);const w=m.target;S(w),E(v),T(r)},50)},D=(n,r)=>()=>{f.leaveTimer&&clearTimeout(f.leaveTimer),f.leaveTimer=setTimeout(()=>{T(null),S(null),E([])})},F=n=>r=>{r.preventDefault(),!(n.children&&n.children.length>0)&&(h&&h(n),x&&x())},y=n=>{const r=n.icon;if(r){if(typeof r=="string"){const m=X[r];if(m)return m()}return r}return null},a=n=>{const r=n.children;return r&&r.length>0?s.jsxRuntimeExports.jsx(W.Down,{}):null},O=n=>{let r="menu-item-popper-content-item";const m=l&&l[u];return m&&m.indexOf(n.path)!==-1&&(r+=" menu-item-popper-content-item-select"),r},p=()=>{let n="menu-item-popper";return j!==1&&(n+=" menu-item-popper-child"),g&&(n+=` ${g}`),n},$=i.useCallback((n,r)=>s.jsxRuntimeExports.jsx(s.jsxRuntimeExports.Fragment,{children:n.children&&n.children.length>0&&M===r&&s.jsxRuntimeExports.jsx(ee,{open:M===r,anchorEl:C,list:R,idMenuLast:l,selectMenu:u,onClickMenu:h,onMouseEnter:z,onMouseLeave:x,level:j+1})}),[M,C,R,l,u,h,z,x,j]),P=i.useMemo(()=>s.jsxRuntimeExports.jsx("div",{className:"menu-item-popper-content",children:N.map((n,r)=>{const m=y(n),v=a(n),w=Y(n.children);return s.jsxRuntimeExports.jsx("div",{className:O(n),onMouseLeave:D(),onMouseEnter:b(n,r),children:s.jsxRuntimeExports.jsxs(w,{className:"menu-item-popper-content-item-content",onClick:F(n),...Z(n.children,n.path,n.href),children:[m&&s.jsxRuntimeExports.jsx("span",{className:"menu-item-icon",children:m}),s.jsxRuntimeExports.jsx("span",{className:"menu-item-label",children:n.label}),v&&s.jsxRuntimeExports.jsx("span",{className:"menu-item-arrow",children:v}),$(n,r)]})},r)})}),[N,h,M,C,R,l,u,h,z,x,j]);return s.jsxRuntimeExports.jsx("div",{className:p(),children:P})},ne=d=>{const{list:l,selectMenu:u="",onClickMenu:h,className:N,moreCustomize:z}=d,[x,j]=i.useState(!1),[g,M]=i.useState(null),[T,C]=i.useState(null),[S,R]=i.useState([]),[E,f]=i.useState(""),[b,D]=i.useState({}),[F,y]=i.useState({}),[a,O]=i.useState(null),[p]=i.useState({}),$=i.useRef(null);i.useEffect(()=>{u!==E&&f(u)},[u]),i.useEffect(()=>(r(l||[]),P(),window.addEventListener("resize",P),()=>{window.removeEventListener("resize",P),p.timerResize&&clearTimeout(p.timerResize)}),[l]);const P=()=>{p.timerResize&&clearTimeout(p.timerResize),p.timerResize=setTimeout(()=>{O((l||[]).length),n()},100)},n=e=>{if(e===null||e===0)return;e===void 0&&(e=(l||[]).length);const t=$.current;if(t)if(t.scrollHeight>t.clientHeight){const o=Number(e)-1;O(o),n(o)}else(l||[]).length<=e},r=e=>{const t={},o={},c={},k=(q,_,B)=>{for(let H=0,ce=q.length;H<ce;H++){const I=q[H],L=I.path||"",G=B===void 0?H:B;if(_&&_.path){const K=ae.DeepClone(t[_.path]||[]);K.push(L),t[L]=[...K]}else t[L]=[L];I.children&&I.children.length>0?k(I.children,I,G):(o[L]=t[L],c[L]=G)}};k(e),y(c),D(o)},m=(e,t)=>o=>{let c=[];if(e.children&&e.children.length>0&&(c=e.children),c.length===0)return v();M(t),C(o.target),R(c),j(!0)},v=()=>{j(!1),C(null),R([]),M(null)},w=()=>{v()},J=e=>{h&&h(e)},te=(e,t)=>{let o="horizontal-menu-list-item";const c=b[E];return c&&c.indexOf(e.path)!==-1&&(o+=" horizontal-menu-list-item-select"),g===t&&(o+=" horizontal-menu-list-item-hover"),o},se=e=>{const t=e.icon;if(t){if(typeof t=="string"){const o=X[t];if(o)return o()}return t}return null},re=e=>{const t=e.children;return t&&t.length>0?s.jsxRuntimeExports.jsx(W.Down,{}):null},A=i.useMemo(()=>s.jsxRuntimeExports.jsx(s.jsxRuntimeExports.Fragment,{children:x&&s.jsxRuntimeExports.jsx(ee,{open:x,anchorEl:T,list:S,idMenuLast:b,selectMenu:E,onClickMenu:J,onMouseLeave:w,level:1})}),[x,T,S,b,E,h,p]),oe=()=>{let e="horizontal-menu-list";return N&&(e+=` ${N}`),e},le=e=>{p.leaveTimer&&clearTimeout(p.leaveTimer);const t=[];for(let o=Number(a),c=(l||[]).length;o<c;o++)t.push((l||[])[o]);M(a),C(e.target),R(t),j(!0)},ie=()=>{let e=" horizontal-menu-list-item";const t=F[E];return a!==null&&a<=t&&(e+=" horizontal-menu-list-item-select"),g===a&&(e+=" horizontal-menu-list-item-hover"),e},V=e=>{e||v()};return s.jsxRuntimeExports.jsxs("div",{className:oe(),ref:$,children:[(l||[]).map((e,t)=>{if(a!==null&&a<=t)return null;const o=se(e),c=re(e),k=Y(e.children);return s.jsxRuntimeExports.jsx(Q.Popover,{visible:g===t,trigger:"hover",placement:"bottom-start",content:A,overlayClassName:`${U.$prefixCls}-horizontal-menu-popper`,onVisibleChange:V,children:s.jsxRuntimeExports.jsxs(k,{onClick:q=>{q.preventDefault(),(!e.children||e.children.length===0)&&J(e)},onMouseEnter:m(e,t),className:te(e,t),...Z(e.children,e.path,e.href),children:[o&&s.jsxRuntimeExports.jsx("span",{className:"menu-item-icon",children:o}),s.jsxRuntimeExports.jsx("span",{className:"menu-item-label",children:e.label}),c&&s.jsxRuntimeExports.jsx("span",{className:"menu-item-arrow",children:c})]})},t)}),(()=>{if(a!==null&&(l||[]).length>a)return s.jsxRuntimeExports.jsx(Q.Popover,{visible:g===a,trigger:"hover",placement:"bottom-start",content:A,overlayClassName:`${U.$prefixCls}-horizontal-menu-popper`,onVisibleChange:V,children:s.jsxRuntimeExports.jsx("div",{onMouseEnter:le,className:ie(),children:z||s.jsxRuntimeExports.jsx("span",{className:"menu-item-icon",children:s.jsxRuntimeExports.jsx(ue.More,{})})})})})()]})};exports.HorizontalMenu=ne;exports.default=ne;
|
|
2
2
|
//# sourceMappingURL=horizontalMeun.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("../_virtual/jsx-runtime.js"),n=require("react"),K=require("../Button/index.js"),y=require("../Popover/index.js"),Q=require("../AutoTips/index.js"),X=require("../node_modules/@para-ui/icons/Down/index.js"),Y=require("../node_modules/@para-ui/icons/Right/index.js"),S=require("../GlobalContext/constant.js"),F=require("@
|
|
1
|
+
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("../_virtual/jsx-runtime.js"),n=require("react"),K=require("../Button/index.js"),y=require("../Popover/index.js"),Q=require("../AutoTips/index.js"),X=require("../node_modules/@para-ui/icons/Down/index.js"),Y=require("../node_modules/@para-ui/icons/Right/index.js"),S=require("../GlobalContext/constant.js"),F=require("@snack-kit/lib"),Z=g=>{const{icon:s,label:p,render:a,onClick:m,className:l}=g,r=t=>{m&&m(t)},x=()=>e.jsxRuntimeExports.jsx(K.Button,{startIcon:s,variant:"contained",onClick:r,size:"small",children:p}),c=()=>{let t="back-btn";return l&&(t+=` ${l}`),t};return e.jsxRuntimeExports.jsx(e.jsxRuntimeExports.Fragment,{children:a||e.jsxRuntimeExports.jsx("div",{className:c(),children:x()})})},ee=g=>{const{icon:s,label:p,render:a,onClick:m,className:l}=g,r=()=>{let x="help-btn";return l&&(x+=` ${l}`),x};return e.jsxRuntimeExports.jsx(e.jsxRuntimeExports.Fragment,{children:a||e.jsxRuntimeExports.jsxs("div",{className:r(),onClick:m,children:[s&&e.jsxRuntimeExports.jsx("span",{className:"icon",children:s}),p&&e.jsxRuntimeExports.jsx("span",{className:"label",children:p})]})})},se=g=>{const{language:s=[],selectLang:p="",onClick:a,className:m,render:l}=g,[r,x]=n.useState({}),[c,t]=n.useState({}),[E,R]=n.useState(!1);n.useEffect(()=>{const o=r[p]||{};t(o)},[p,r]),n.useEffect(()=>{const o={};for(let d=0,u=s.length;d<u;d++){const C=s[d];C.value&&(o[C.value]=C)}x(o)},[s]);const v=o=>()=>{a&&a(o.value,o),R(!1)},f=()=>{let o="language";return m&&(o+=` ${m}`),E&&(o+=" language-select"),o},_=o=>{R(o)},b=()=>{const o=d=>{let u="menu-popover-item";return d.value===c.value&&(u+=" menu-popover-item-select"),u};return e.jsxRuntimeExports.jsx("div",{className:"menu-popover-box",children:s.map((d,u)=>e.jsxRuntimeExports.jsxs("div",{className:o(d),onClick:v(d),children:[d.icon&&e.jsxRuntimeExports.jsx("span",{className:"icon",children:d.icon}),d.label&&e.jsxRuntimeExports.jsx("span",{className:"label",style:{marginLeft:"5px"},children:d.label})]},u))})},N=()=>{const o=()=>e.jsxRuntimeExports.jsxs(e.jsxRuntimeExports.Fragment,{children:[c.icon&&e.jsxRuntimeExports.jsx("span",{className:"language-item-icon",children:c.icon}),c.label&&e.jsxRuntimeExports.jsx("span",{className:"language-item-label",children:c.label})]});return e.jsxRuntimeExports.jsx(y.Popover,{trigger:"hover",visible:E,placement:"bottom-start",content:b(),overlayClassName:`${S.$prefixCls}-horizontal-meun-right-popover`,onVisibleChange:_,children:e.jsxRuntimeExports.jsx("div",{className:"language-item",children:o()})})};return e.jsxRuntimeExports.jsx(e.jsxRuntimeExports.Fragment,{children:l||e.jsxRuntimeExports.jsx("div",{className:f(),children:N()})})},te=g=>{const{list:s=[],render:p,className:a,onClick:m}=g,l=()=>{let c="btn-list";return a&&(c+=` ${a}`),c},r=c=>t=>{m&&m(c,t)},x=n.useMemo(()=>{const c=t=>e.jsxRuntimeExports.jsxs(e.jsxRuntimeExports.Fragment,{children:[t.icon&&e.jsxRuntimeExports.jsx("span",{className:"btn-list-item-icon",children:t.icon}),t.label&&e.jsxRuntimeExports.jsx("span",{className:"btn-list-item-label",children:t.label})]});return e.jsxRuntimeExports.jsx(e.jsxRuntimeExports.Fragment,{children:s.map((t,E)=>{let R="btn-list-item";return t.sign&&(R+=" btn-list-item-sign"),e.jsxRuntimeExports.jsx("div",{className:R,onClick:r(t),children:c(t)},E)})})},[s]);return e.jsxRuntimeExports.jsx(e.jsxRuntimeExports.Fragment,{children:p||e.jsxRuntimeExports.jsx("div",{className:l(),children:x})})},q=g=>{const{item:s,selectValue:p,selectId:a,clickUserItem:m,hoverId:l,showDialog:r,idMapLast:x,onMouseEnter:c,onMouseLeave:t}=g,[E,R]=n.useState(!1),[v,f]=n.useState("");n.useEffect(()=>(r===!1&&R(!1),()=>{f("")}),[r]);const _=u=>{f(u._paraui_menu_id||"")},b=()=>{},N=()=>{let u="menu-popover-item";return l===s._paraui_menu_id&&(u+=" menu-popover-item-hover"),s._paraui_menu_id&&x[l]&&x[l].indexOf(s._paraui_menu_id)!==-1&&(u+=" menu-popover-item-hover"),s._paraui_menu_id&&x[a]&&x[a].indexOf(s._paraui_menu_id)!==-1&&(u+=" menu-popover-item-select"),u},o=()=>{if(s.children&&s.children.length>0)return e.jsxRuntimeExports.jsx("div",{className:"menu-popover-box",children:s.children&&s.children.map((u,C)=>e.jsxRuntimeExports.jsx(q,{item:u,selectValue:p,clickUserItem:m,onMouseEnter:()=>_(u),onMouseLeave:b,hoverId:v,showDialog:r,selectId:a,idMapLast:x},C))})},d=u=>{R(u),u||f("")};return e.jsxRuntimeExports.jsx(y.Popover,{visible:E,trigger:"hover",placement:"left-start",content:o(),onVisibleChange:d,overlayClassName:`${S.$prefixCls}-horizontal-meun-right-popover ${S.$prefixCls}-horizontal-meun-right-popover-children`,children:e.jsxRuntimeExports.jsxs("div",{className:N(),onClick:m(s),onMouseEnter:c,onMouseLeave:t,children:[s.icon&&e.jsxRuntimeExports.jsx("span",{className:"icon",style:{marginRight:"5px"},children:s.icon}),s.label&&e.jsxRuntimeExports.jsx("span",{className:"label",children:e.jsxRuntimeExports.jsx(Q.default,{children:s.label})}),s.children&&s.children.length>0&&e.jsxRuntimeExports.jsx("span",{className:"icon icon-right",children:e.jsxRuntimeExports.jsx(Y.Right,{})})]})})},ne=g=>{const{img:s,imgRender:p,label:a,render:m,className:l,list:r,onClick:x,onClickMenu:c,selectValue:t}=g,[E,R]=n.useState([]),[v,f]=n.useState(""),[_,b]=n.useState(!1),[N,o]=n.useState(""),[d,u]=n.useState({}),[C]=n.useState({}),L=n.useRef(null),I=n.useRef({listJson:{}});n.useEffect(()=>()=>{clearTimeout(C.timer)},[]),n.useEffect(()=>{J()},[r]),n.useEffect(()=>{const i=Object.keys(I.current.listJson);for(let h=0,M=i.length;h<M;h++){const k=I.current.listJson[i[h]];if(k.value===t){f(k._paraui_menu_id||"");break}}},[t,r]);const J=()=>{const i={},h={},M={},k=(D,$)=>{for(let P=0,G=D.length;P<G;P++){const j=D[P];if(j._paraui_menu_id=`_paraui_menu_id_${F.UUID()}`,i[j._paraui_menu_id]=j,$&&$._paraui_menu_id){const w=F.DeepClone(h[$._paraui_menu_id]||[]);w.push(j._paraui_menu_id),h[j._paraui_menu_id]=[...w]}else h[j._paraui_menu_id]=[j._paraui_menu_id],j._paraui_menu_first=!0;j.children&&j.children.length>0?k(j.children,j):M[j._paraui_menu_id]=h[j._paraui_menu_id]}};k(r||[]),I.current.listJson=i,R([...r||[]]),u(M)},B=i=>{x&&x(i)},U=i=>()=>{i.children&&i.children.length>0||(c&&c(i.value,i),b(!1),o(""))},H=i=>{o(i._paraui_menu_id||"")},V=()=>{},O=i=>{b(i),i||o("")},T=()=>{if(E.length===0)return null;const i=()=>{const h={};return L&&L.current&&(h.minWidth=`${L.current.getBoundingClientRect().width}px`),h};return e.jsxRuntimeExports.jsx("div",{className:"menu-popover-box",style:i(),children:E&&E.map((h,M)=>e.jsxRuntimeExports.jsx(q,{item:h,selectValue:t,clickUserItem:U,onMouseEnter:()=>H(h),onMouseLeave:V,hoverId:N,showDialog:_,selectId:v,idMapLast:d},M))})},W=()=>e.jsxRuntimeExports.jsxs(e.jsxRuntimeExports.Fragment,{children:[p||s&&e.jsxRuntimeExports.jsx("img",{src:s,alt:""}),a&&e.jsxRuntimeExports.jsx("span",{className:"label",style:{marginLeft:"12px"},children:a}),r&&r.length>0&&e.jsxRuntimeExports.jsx("span",{className:"arrow",children:e.jsxRuntimeExports.jsx(X.Down,{})})]}),A=()=>{let i="logo";return l&&(i+=` ${l}`),_&&(i+=" logo-show-dialog"),i};return e.jsxRuntimeExports.jsx(e.jsxRuntimeExports.Fragment,{children:m||e.jsxRuntimeExports.jsx(y.Popover,{trigger:"hover",visible:_,placement:"bottom-start",content:T(),overlayClassName:`${S.$prefixCls}-horizontal-meun-right-popover`,onVisibleChange:O,children:e.jsxRuntimeExports.jsx("div",{className:A(),onClick:B,ref:L,children:W()})})})},z=g=>{const{className:s="",backSelfcareProps:p,languageProps:a,btnListProps:m,userProps:l,helpProps:r,render:x}=g,c=()=>{let _="horizontal-meun-right";return s&&(_+=` ${s}`),_},t=n.useMemo(()=>p&&e.jsxRuntimeExports.jsx(Z,{...p}),[p]),E=n.useMemo(()=>r&&e.jsxRuntimeExports.jsx(ee,{...r}),[r]),R=n.useMemo(()=>a&&e.jsxRuntimeExports.jsx(se,{...a}),[a]),v=n.useMemo(()=>m&&e.jsxRuntimeExports.jsx(te,{...m}),[m]),f=n.useMemo(()=>l&&e.jsxRuntimeExports.jsx(ne,{...l}),[l]);return e.jsxRuntimeExports.jsx(e.jsxRuntimeExports.Fragment,{children:x||e.jsxRuntimeExports.jsxs("div",{className:c(),children:[t,E,R,v,f]})})};exports.HorizontalMeunRight=z;exports.default=z;
|
|
2
2
|
//# sourceMappingURL=horizontalMeunRight.js.map
|
|
@@ -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/lib/Pagination/index.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});require('./index.css');const n=require("../_virtual/jsx-runtime.js"),r=require("react"),xe=require("../GlobalContext/index.js"),R=require("../GlobalContext/constant.js"),ge=require("../TextField/index.js"),fe=require("../GlobalContext/useFormatMessage.js"),de=require("./lang/index.js"),je=require("../Select/index.js"),V=require("../Button/index.js"),K=require("../node_modules/@para-ui/icons/Left/index.js"),
|
|
1
|
+
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});require('./index.css');const n=require("../_virtual/jsx-runtime.js"),r=require("react"),xe=require("../GlobalContext/index.js"),R=require("../GlobalContext/constant.js"),ge=require("../TextField/index.js"),fe=require("../GlobalContext/useFormatMessage.js"),de=require("./lang/index.js"),je=require("../Select/index.js"),V=require("../Button/index.js"),K=require("../node_modules/@para-ui/icons/Left/index.js"),ve=require("rc-pagination"),U=require("../node_modules/@para-ui/icons/Right/index.js"),he=require("../node_modules/@para-ui/icons/DoubleLeft/index.js"),Pe=require("../node_modules/@para-ui/icons/DoubleRight/index.js");;/* empty css */const G=E=>{const{className:q,style:H,type:c="simple",pagerType:b="num",autoType:k=!0,total:p=0,rowsPerPage:$=[10,20,50,100],flippingArrow:z=["prev","next"],currentRowsPerPage:M=10,page:S=1,pageMaxLimit:L=!0,skipFunc:D,changePage:w,changeRowsPerPage:I,getPopupContainer:A,resizeLine:J}=E,m=fe.default("Pagination",de.default),{language:C,locale:x}=r.useContext(xe.default),[l,B]=r.useState(M),[_,Q]=r.useState([]),[s,y]=r.useState(S),[a,W]=r.useState(),[g,T]=r.useState(),[o,F]=r.useState(null),f=r.useRef(null),i=r.useRef({layoutArr:["jumper","pageRow","pager-btn","sizes","pager-num"]});i.current.type=c,i.current.autoType=k,r.useEffect(()=>()=>{window.removeEventListener("resize",d),clearTimeout(i.current.timer??void 0),clearTimeout(i.current.changePagination??void 0)},[]),r.useEffect(()=>{y(S)},[S]),r.useEffect(()=>{B(M)},[M]),r.useEffect(()=>{const e=[];for(let t=0,u=$.length;t<u;t++){const N=$[t],P={label:N.toString()+m({id:"barPage"}),value:N};e.push(P)}Q(e)},[E.rowsPerPage,x]),r.useEffect(()=>{const e=Number(a);L&&s>e&&e!==s&&y(e)},[s,a,L]),r.useEffect(()=>{const e=Math.ceil(p/l);W(e||E.page||1)},[l,p]),r.useEffect(()=>{c==="complex"&&k?(d(),window.addEventListener("resize",d)):window.removeEventListener("resize",d)},[c,k]),r.useEffect(()=>{i.current.type==="complex"&&i.current.autoType&&d()},[p,l,s,C,J]);const d=()=>{clearTimeout(i.current.timer??void 0);const e=f.current;e&&(e.classList.add(`${R.$prefixCls}-pagination-over`),i.current.timer=setTimeout(()=>{F(i.current.layoutArr.length),i.current.layoutArr.length>1&&O()},100))},X=()=>{const e=[".total-num",".component-pagination",".pagination-btn-content",".page-line-memo",".skip-page-memo"];let t,u=!1;return e.forEach(N=>{const P=f.current.querySelector(N);P&&(t===void 0?t=P.offsetTop:P.offsetTop!==t&&(u=!0))}),u},O=e=>{if(!(e===null||e===0))if(e===void 0&&(e=i.current.layoutArr.length),X()){const t=Number(e)-1;F(t),t>3?O(t):f.current.classList.remove(`${R.$prefixCls}-pagination-over`)}else f.current.classList.remove(`${R.$prefixCls}-pagination-over`)},j=e=>i.current.type instanceof Array&&i.current.type.indexOf(e)===-1,v=e=>{if(o===null)return!1;switch(e){case"jumper":return o<=0;case"pageRow":return o<=1;case"pager-btn":return o<=2||o>4;case"sizes":return o<=3;case"pager-num":return o<=4;default:return!1}},h=e=>t=>{let u=s;switch(e){case"prev":if(s===1)return;u--;break;case"next":if(s===a)return;u++;break;case"pagination":u=t;break}u!==void 0&&y(u),w&&w(u)},Y=e=>{if(e===void 0)return;const t=Number(e);e!==l&&(B(t),I&&I(t))},Z=e=>{["E","e",".","-"].indexOf(e.key)!==-1&&e.preventDefault()},ee=e=>{if(e.keyCode===13){let t=parseInt(g&&g.toString()||"0");t<=0&&(t=1,T(t)),t>Number(a)&&(t=Number(a),T(t)),D&&D(t,g),y(t),w&&w(t)}},te=e=>{T(Number(e.target.value))},ne=e=>{const t=/(?=(\B)(\d{3})+$)/g;return e.toString().replace(t,",")},re=r.useMemo(()=>{if(c==="simple"||j("sizes")||v("sizes"))return null;const e=ne(p);return n.jsxRuntimeExports.jsx("div",{className:"total-num pagination-space",children:m({id:"total"},{total:e})})},[p,C,x,o]),se=r.useMemo(()=>j("pageRow")||v("pageRow")?null:n.jsxRuntimeExports.jsx("div",{className:"page-line-memo pagination-space",children:n.jsxRuntimeExports.jsx(je.default,{className:"page-line-select",size:"large",value:l,list:_,hideErrorDom:!0,onChange:Y,allowClear:!1,getPopupContainer:A})}),[_,l,A,C,x,o]),ie=()=>n.jsxRuntimeExports.jsxs("div",{className:"jump-prev-icon",children:[n.jsxRuntimeExports.jsx("span",{children:"..."}),n.jsxRuntimeExports.jsx(he.DoubleLeft,{})]}),oe=()=>n.jsxRuntimeExports.jsxs("div",{className:"jump-next-icon",children:[n.jsxRuntimeExports.jsx("span",{children:"..."}),n.jsxRuntimeExports.jsx(Pe.DoubleRight,{})]}),ae=()=>b!=="num"||c==="simple"?!0:c==="complex"?v("pager-num"):j("pager"),ue=r.useMemo(()=>ae()?null:n.jsxRuntimeExports.jsxs("div",{className:"pagination-content pagination-space",children:[z.indexOf("prev")!==-1&&n.jsxRuntimeExports.jsx("div",{className:"left-page",children:n.jsxRuntimeExports.jsx("div",{onClick:h("prev"),className:s===1?"disabled-btn":"",children:n.jsxRuntimeExports.jsx(K.Left,{})})}),n.jsxRuntimeExports.jsx(ve,{prefixCls:`${R.$rcPrefixCls}-pagination`,current:s,pageSize:l,total:p,jumpPrevIcon:ie(),jumpNextIcon:oe(),onChange:h("pagination"),showTitle:!1}),z.indexOf("next")!==-1&&n.jsxRuntimeExports.jsx("div",{className:"right-page",children:n.jsxRuntimeExports.jsx("div",{onClick:h("next"),className:s===a?"disabled-btn":"",children:n.jsxRuntimeExports.jsx(U.Right,{})})})]}),[p,s,a,l,E.flippingArrow,b,o]),ce=()=>b==="btn"||c==="simple"?!1:c==="complex"?v("pager-btn"):j("pager"),le=r.useMemo(()=>ce()?null:n.jsxRuntimeExports.jsxs("div",{className:"pagination-btn-content pagination-space",children:[n.jsxRuntimeExports.jsx(V.Button,{variant:"outlined",size:"large",startIcon:n.jsxRuntimeExports.jsx(K.Left,{}),onClick:h("prev"),disabled:s===1,children:m({id:"prevPage"})}),n.jsxRuntimeExports.jsx(V.Button,{variant:"outlined",size:"large",endIcon:n.jsxRuntimeExports.jsx(U.Right,{}),onClick:h("next"),disabled:s===a,children:m({id:"nextPage"})})]}),[s,a,b,x,o]),pe=r.useMemo(()=>j("jumper")||v("jumper")?null:n.jsxRuntimeExports.jsxs("div",{className:"skip-page-memo pagination-space",children:[n.jsxRuntimeExports.jsx("span",{children:m({id:"jumpTo"})}),n.jsxRuntimeExports.jsx(ge.TextField,{className:"skip-page-text-field",size:"large",type:"number",value:g||"",onChange:te,hideErrorDom:!0,onKeydown:Z,onKeyUp:ee}),n.jsxRuntimeExports.jsxs("span",{children:["/ ",a,m({id:"page"})]})]}),[g,a,C,x,o]),me=()=>{let e=`${R.$prefixCls}-pagination`;return q&&(e+=` ${q}`),e};return n.jsxRuntimeExports.jsxs("div",{className:me(),style:H,ref:f,children:[re,ue,le,se,pe]})};exports.Pagination=G;exports.default=G;
|
|
2
2
|
//# sourceMappingURL=index.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});require('../Styles/index.css');const s=require("../_virtual/jsx-runtime.js"),d=require("react"),
|
|
1
|
+
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});require('../Styles/index.css');const s=require("../_virtual/jsx-runtime.js"),d=require("react"),f=require("../GlobalContext/index.js"),l=require("../Utils/snack-kit-shims.js"),m=require("../GlobalContext/intl.js");;/* empty css */const q=require("../GlobalContext/confirmLocale.js"),u=e=>{const o=(a,c)=>(n,i)=>{const t=e.language||l.GetLanguage(),r=(e.locale||{})[t]||{},g={[t]:r[a]||{}};return m.i18nIntl({ops:n,i18nData:g,lang:t,params:i,defI18nData:c})};return d.useEffect(()=>{const a=e.language||l.GetLanguage(),n=(e.locale||{})[a]||{};q.changeConfirmLocale?.(n,a)},[e.language,e.locale]),s.jsxRuntimeExports.jsx(f.default.Provider,{value:{...e,language:e.language||l.GetLanguage(),intlFormat:o},children:e.children})};exports.ParauiProvider=u;exports.default=u;
|
|
2
2
|
//# sourceMappingURL=index.js.map
|
|
@@ -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;
|