@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
package/lib/Anchor/index.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});require('./index.css');const s=require("../_virtual/jsx-runtime.js"),n=require("react"),y=require("clsx"),S=require("../GlobalContext/constant.js"),
|
|
1
|
+
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});require('./index.css');const s=require("../_virtual/jsx-runtime.js"),n=require("react"),y=require("clsx"),S=require("../GlobalContext/constant.js"),U=require("./anchorMenu/index.js"),F=require("../node_modules/@para-ui/icons/ToRight/index.js"),_=require("../node_modules/@para-ui/icons/ToLeft/index.js"),X=require("../node_modules/@para-ui/icons/PreviewOpen/index.js"),Y=require("../Search/index.js"),Z=require("../GlobalContext/useFormatMessage.js"),ee=require("./lang/index.js"),D=require("@snack-kit/lib");;/* empty css */const se=q=>{const{style:W,className:z,title:E="",scrollId:R=`${S.$prefixCls}-anchor-scroll-id`,list:d=[],listClassName:I,scrollClassName:G,placement:i="right",allExpanded:H=!0,search:J=!1,customPrefixIcon:C,listWidth:p}=q,K=Z.default("Anchor",ee.default),[L,M]=n.useState(""),[m,Q]=n.useState(!1),[h,g]=n.useState({}),[T,$]=n.useState(!1),[N,O]=n.useState(""),[f,v]=n.useState(null),o=n.useRef({currentAnchorId:"",anchorList:d,anchorMap:{},searchValue:"",scrolling:!1}),V=T?"50px":p?`${p+20}px`:"160px";n.useEffect(()=>{o.current.anchorList=d;const e={};let r=!1;const c=(x,l="")=>{x.forEach(t=>{(t?.expanded===void 0||t?.expanded===null)&&(t.expanded=!1),l&&(t.parentId=l),e[t.id]=t,t.children&&(r=!0,c(t.children,t.id))})};c(d),Q(r),o.current.anchorMap=e,g(e)},[d]),n.useEffect(()=>{const e=document.getElementById(R),r=D.Throttle(async()=>{if(o.current.scrolling)return;const c=e?.querySelectorAll("[id]")||[],l=Array.from(c).map(a=>{const B=a;return{id:B.id,offsetTop:B.offsetTop-(e?.offsetTop||0)}});let t=0,u="";const A=l.find(a=>(t<a.offsetTop&&(t=a.offsetTop,u=a.id),a.offsetTop>=(e?.scrollTop||0)));if(A?.id!==o.current.currentAnchorId){let a=A?.id||"";e?.scrollTop&&!A?.id&&(a=u),M(a)}},300);return r(),e?.addEventListener("scroll",r,{passive:!0}),()=>{e?.addEventListener("scroll",r)}},[]);const b=e=>{const r=document.getElementById(R),c=r?.querySelectorAll("[id]")||[],x=Array.from(c).findIndex(t=>String(t.id)===String(e)),l=c[x];l&&(M(e),o.current.currentAnchorId=e,o.current.scrolling=!0,setTimeout(()=>{o.current.scrolling=!1},1e3),r?.scrollTo({top:l?.offsetTop||0-(r?.offsetTop||0),behavior:"smooth"}))},k=()=>{Object.keys(h).forEach(e=>{h[e].expanded=!0}),g({...h})},j=n.useMemo(()=>D.Debounce(async()=>{const e=o.current.searchValue;if(!e){v(null);return}const r=o.current.anchorList||[],c=[],x=(l,t="")=>{l.forEach(u=>{u?.name?.indexOf(e)>-1&&c.push(u),u.children&&x(u.children,u.id)})};x(r),v(c)},200),[]),w=n.useMemo(()=>E?s.jsxRuntimeExports.jsxs(s.jsxRuntimeExports.Fragment,{children:[s.jsxRuntimeExports.jsxs("div",{className:"anchor-menu-title",children:[s.jsxRuntimeExports.jsx("div",{className:"title",children:E}),s.jsxRuntimeExports.jsxs("div",{className:"opera-area",children:[m&&H&&s.jsxRuntimeExports.jsxs(s.jsxRuntimeExports.Fragment,{children:[s.jsxRuntimeExports.jsx(X.PreviewOpen,{onClick:k}),s.jsxRuntimeExports.jsx("div",{className:"split-line"})]}),s.jsxRuntimeExports.jsx("div",{onClick:()=>$(!0),children:i==="left"?s.jsxRuntimeExports.jsx(_.ToLeft,{}):s.jsxRuntimeExports.jsx(F.ToRight,{})})]})]}),J&&s.jsxRuntimeExports.jsx(Y.Search,{size:"small",value:N,onChange:e=>{O(e),o.current.searchValue=e,j()},onClickRightIcon:j,onEnter:j,onClear:()=>{O(""),o.current.searchValue="",v(null)},placeholder:K("pleaseEnter"),style:{padding:"0 4px",marginBottom:"6px"}})]}):null,[E,m,N,k,j]),P=n.useMemo(()=>{if(!d?.length)return null;if(T)return s.jsxRuntimeExports.jsx("div",{className:"collapse-icon-area",onClick:()=>$(!1),children:i==="left"?s.jsxRuntimeExports.jsx(F.ToRight,{}):s.jsxRuntimeExports.jsx(_.ToLeft,{})});const e=f||d;return s.jsxRuntimeExports.jsxs("div",{className:y("anchor-menu-list",I),style:{width:p?`${p}px`:"140px"},children:[w,e.map((r,c)=>s.jsxRuntimeExports.jsx(U.default,{data:r,currentAnchorId:L,handleClick:b,isTree:f?!1:m,anchorMap:h,setAnchorMap:g,customPrefixIcon:C,onlyOneLevel:!!f},r?.id))]})},[d,L,I,b,m,w,h,C,T,f]);return s.jsxRuntimeExports.jsxs("div",{className:y(`${S.$prefixCls}-anchor`,z,{[`${S.$prefixCls}-anchor-${i}`]:i}),style:W,children:[i==="left"&&P,s.jsxRuntimeExports.jsx("div",{id:R,className:y("anchor-scroll",G),style:{paddingLeft:i==="left"?V:"0",paddingRight:i==="right"?V:"0"},children:q.children}),i==="right"&&P]})};exports.default=se;
|
|
2
2
|
//# sourceMappingURL=index.js.map
|
package/lib/Anchor/type.d.ts
CHANGED
|
@@ -18,8 +18,8 @@ export interface AnchorProps {
|
|
|
18
18
|
style?: React.CSSProperties;
|
|
19
19
|
/** 类名 */
|
|
20
20
|
className?: string;
|
|
21
|
-
/** 标题 */
|
|
22
|
-
title?:
|
|
21
|
+
/** 标题(R6 §6 类型放宽:string → ReactNode,支持嵌入徽标/计数/动态状态文本;string 是 ReactNode 子集,完全向后兼容) */
|
|
22
|
+
title?: ReactNode;
|
|
23
23
|
/** 滚动盒子Id */
|
|
24
24
|
scrollId?: string;
|
|
25
25
|
/** 子元素 */
|
|
@@ -31,8 +31,12 @@ export interface AnchorProps {
|
|
|
31
31
|
/** 位置 */
|
|
32
32
|
placement?: 'left' | 'right';
|
|
33
33
|
/** 默认展示的锚点 */
|
|
34
|
-
/**
|
|
35
|
-
|
|
34
|
+
/**
|
|
35
|
+
* 自定义前缀符号(R6 §6 类型放宽):
|
|
36
|
+
* - 静态 ReactNode — 所有目录项共用同一前缀图标(原行为)
|
|
37
|
+
* - 函数形式 `(item, isActive) => ReactNode` — 按当前激活态返回不同 ReactNode(墨水点指示器等激活态联动场景);函数版本每次激活变化触发 list 重渲染,内部 AnchorListMemo 已优化
|
|
38
|
+
*/
|
|
39
|
+
customPrefixIcon?: ReactNode | ((item: AnchorItem, isActive: boolean) => ReactNode);
|
|
36
40
|
/** 全部展开功能是否开启 */
|
|
37
41
|
allExpanded?: boolean;
|
|
38
42
|
/** 是否带目录搜索 */
|
|
@@ -0,0 +1,216 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "Argv",
|
|
3
|
+
"category": "Data Entry",
|
|
4
|
+
"description": "动态参数键值对编辑器。用户可以增删行、编辑每行的 key/value,value 支持多类型(string/number/boolean/object)。典型场景:命令行参数配置、环境变量编辑、动态配置项。**重要:这是一个'对象 ⇄ 列表'双形态组件,内部数据形态是 IArgvItem[],外部数据形态可以是对象(Record<string,any>)或列表(IArgvItem[]),通过两套不同的 prop 通道分别接入(见 controlledChannels)**",
|
|
5
|
+
"semantic": {
|
|
6
|
+
"intent": [
|
|
7
|
+
"动态键值对编辑",
|
|
8
|
+
"参数配置",
|
|
9
|
+
"可增删行的表单"
|
|
10
|
+
],
|
|
11
|
+
"useCases": [
|
|
12
|
+
"命令行参数配置面板(CLI argv 编辑)",
|
|
13
|
+
"环境变量编辑器(KEY=VALUE 列表)",
|
|
14
|
+
"HTTP Header / Query 参数编辑",
|
|
15
|
+
"动态配置项编辑(配置中心场景)",
|
|
16
|
+
"脚本变量定义"
|
|
17
|
+
],
|
|
18
|
+
"riskLevel": "normal"
|
|
19
|
+
},
|
|
20
|
+
"protocolSummary": "**双形态受控对**:外部可用 **对象形态**(defaultValue: Record<string,any> + onChange: (val: Record<string,any>) => void,**onChange 防抖 200ms**)或 **列表形态**(list: IArgvItem[] + onListChange: (val: IArgvItem[]) => void,**无防抖**)接入数据。defaultValue 仅 mount + 引用变化时灌入(不受控);list 是受控通道(每次变化都会被同步)。两套通道可同时存在(各自独立 fire)。**无 value/values prop,无 schema/argSchema prop——这是常见误解**",
|
|
21
|
+
"controlledChannels": {
|
|
22
|
+
"objectMode": {
|
|
23
|
+
"in": "defaultValue: Record<string, any>",
|
|
24
|
+
"out": "onChange: (val: Record<string, any>) => void",
|
|
25
|
+
"behavior": "**非受控**:defaultValue 引用变化时(useEffect 依赖)重置内部 state,父层 setState 后再传入相同引用不会重置。onChange 内部 200ms 防抖,返回值已经 formatDataToObject 转成普通对象(丢弃空 key 项)",
|
|
26
|
+
"whenToUse": "外部数据天然是对象(API 返回的 config 对象、env vars 对象),且不需要严格受控(用户编辑过程中父层不需要插队覆盖)"
|
|
27
|
+
},
|
|
28
|
+
"listMode": {
|
|
29
|
+
"in": "list: IArgvItem[]",
|
|
30
|
+
"out": "onListChange: (val: IArgvItem[]) => void",
|
|
31
|
+
"behavior": "**受控**:list 每次变化都会被同步进内部 state(useEffect 依赖 list 引用)。onListChange 无防抖,每次按键 / 增删行立即 fire,返回原始 IArgvItem[](保留空 key 项,保留类型元数据)",
|
|
32
|
+
"whenToUse": "需要保留输入过程中间态(空 key 行、未填值)、需要保留类型元数据(dataType=string/number/boolean/object)、或父层做严格受控(每次输入都过父层 reducer)"
|
|
33
|
+
},
|
|
34
|
+
"bothModes": "list 和 defaultValue 可以同时传(list 会覆盖 defaultValue 的初始化效果);onChange 和 onListChange 可同时监听,两个回调都会触发,**但 onChange 因防抖会延迟 200ms 且只回传对象形态**"
|
|
35
|
+
},
|
|
36
|
+
"dataFlow": {
|
|
37
|
+
"objectToList": "**formatObjectToData(obj: Record<string,any>): IArgvItem[]** — Object.keys 遍历, 每个 [k,v] 转换成 IArgvItem(自动推断 dataType: typeof v)。导出函数,可在父层提前调用",
|
|
38
|
+
"listToObject": "**formatDataToObject(list: IArgvItem[]): Record<string,any>** — 遍历 list, 跳过 item.key 为空的项, 用 item.key 作为对象 key, formatGeneratorToData 还原 value。导出函数",
|
|
39
|
+
"validate": "**checkArgvData(list: IArgvItem[], intl: Function): { error: boolean, detail: Record<string,string>[] }** — 校验每行 key 非空 + value 格式正确,返回的 detail 可以直接喂给 errors prop"
|
|
40
|
+
},
|
|
41
|
+
"variants": {
|
|
42
|
+
"default": {
|
|
43
|
+
"meaning": "默认样式(无 variant 切换,样式由 size/disabled 等控制)"
|
|
44
|
+
}
|
|
45
|
+
},
|
|
46
|
+
"states": [
|
|
47
|
+
"default",
|
|
48
|
+
"disabled",
|
|
49
|
+
"error"
|
|
50
|
+
],
|
|
51
|
+
"idealProps": {
|
|
52
|
+
"list": {
|
|
53
|
+
"type": "IArgvItem[]",
|
|
54
|
+
"description": "**受控形态的数据通道**。每项结构: `{ key: string, data: IDataGeneratorValue }`,其中 `IDataGeneratorValue = { dataType: 'string' | 'number' | 'boolean' | 'object', data: any }`。**与 onListChange 配对使用,无防抖**。如果同时传了 defaultValue,list 优先级更高(list 引用变化会覆盖)",
|
|
55
|
+
"shape": {
|
|
56
|
+
"key": "string — 参数名(显示在左侧 TextField)。允许空字符串,但 formatDataToObject 转对象时会被跳过",
|
|
57
|
+
"data": "IDataGeneratorValue — 参数值容器,含 dataType (类型选择器) + data (实际值,类型与 dataType 联动)"
|
|
58
|
+
}
|
|
59
|
+
},
|
|
60
|
+
"onListChange": {
|
|
61
|
+
"type": "(val: IArgvItem[]) => void",
|
|
62
|
+
"description": "**列表形态变化回调,无防抖**。每次按键 / 增删行 / 类型切换都立即触发。返回完整 IArgvItem[](保留空 key 项)。如果只想拿对象形态结果,用 onChange",
|
|
63
|
+
"pairsWith": "list"
|
|
64
|
+
},
|
|
65
|
+
"defaultValue": {
|
|
66
|
+
"type": "Record<string, any>",
|
|
67
|
+
"description": "**对象形态的初始值,非受控**。组件 mount 时 + 引用变化时(useEffect 依赖)灌入,父层用 setState 重新传相同引用不会重置(常见坑:误以为 defaultValue 是受控,见 commonMisconceptions.M1)。内部用 formatObjectToData 自动推断每个 value 的 dataType",
|
|
68
|
+
"controlled": false
|
|
69
|
+
},
|
|
70
|
+
"onChange": {
|
|
71
|
+
"type": "(val: Record<string, any>) => void",
|
|
72
|
+
"description": "**对象形态变化回调,内部 200ms 防抖**。返回值已经 formatDataToObject 转成普通对象(item.key 空的行被跳过, item.data 还原成对应 dataType 的原始值)。**适合保存到 state 但不适合做严格受控**(防抖期间输入和 state 不同步)",
|
|
73
|
+
"pairsWith": "defaultValue"
|
|
74
|
+
},
|
|
75
|
+
"errors": {
|
|
76
|
+
"type": "Record<string, string>[]",
|
|
77
|
+
"description": "**按 list 行索引对齐**(errors[0] 对应 list[0],以此类推)。**不是按 key 名映射**(常见误解,见 commonMisconceptions.M3)。每项结构 `{ key?: string, value?: string }`: `key` 字段填非空字符串时,该行左侧 TextField 红框 + 显示该字符串作为 helperText;`value` 字段填非空字符串时,该行右侧 DataGenerator 红框 + 显示该字符串。如不需要某行/某列显示错误就不填或填空字符串",
|
|
78
|
+
"shape": {
|
|
79
|
+
"[index].key": "string | undefined — 该行 key 列的错误文案(空字符串/undefined = 无错误)",
|
|
80
|
+
"[index].value": "string | undefined — 该行 value 列的错误文案"
|
|
81
|
+
},
|
|
82
|
+
"tip": "直接消费 checkArgvData(list, intl).detail 即可,无需手工拼装"
|
|
83
|
+
},
|
|
84
|
+
"disabled": {
|
|
85
|
+
"type": "boolean",
|
|
86
|
+
"default": false,
|
|
87
|
+
"description": "**整体禁用**:禁用所有 TextField + DataGenerator,屏蔽新增按钮(点击 add 时 early return)、屏蔽删除按钮(点击 del 时 early return)。不存在子字段单独禁用——若需更细颗粒度,改用底层 TextField + DataGenerator 自行编排"
|
|
88
|
+
},
|
|
89
|
+
"label": {
|
|
90
|
+
"type": "LabelProps['label']",
|
|
91
|
+
"description": "顶部标题文本(string 或 ReactNode)。不传时显示 i18n 默认值('环境变量' / 'Environment Variable')。注意这是顶层 label,**不是每行的 label**(每行只有 key/value 两个 TextField,无独立 label 位)"
|
|
92
|
+
},
|
|
93
|
+
"labelProps": {
|
|
94
|
+
"type": "LabelProps",
|
|
95
|
+
"description": "传给顶部 Label 组件的完整 props(覆盖默认 label),用于调整 required / tooltip / labelWidth 等。`label` 字段会被外层 label prop 覆盖(外层优先)"
|
|
96
|
+
},
|
|
97
|
+
"className": {
|
|
98
|
+
"type": "string",
|
|
99
|
+
"description": "外层 div 的 className"
|
|
100
|
+
},
|
|
101
|
+
"style": {
|
|
102
|
+
"type": "React.CSSProperties",
|
|
103
|
+
"description": "外层 div 的 style"
|
|
104
|
+
}
|
|
105
|
+
},
|
|
106
|
+
"commonMisconceptions": {
|
|
107
|
+
"M1": {
|
|
108
|
+
"wrong": "把 defaultValue 当受控 prop 用: `<Argv defaultValue={state} onChange={setState} />` 期望父层 setState 后 Argv 内部跟着更新",
|
|
109
|
+
"result": "defaultValue 只在引用变化时灌入,父层 setState 后 React 重渲传入新引用确实会重置——但**正在编辑的行会被清空**(useEffect 重跑 formatObjectToData),导致用户输入丢失",
|
|
110
|
+
"fix": "需要严格受控就用 **list + onListChange**(列表形态、受控、无防抖);只需保存最终结果用 defaultValue + onChange(对象形态、非受控、防抖)。**不要混用**"
|
|
111
|
+
},
|
|
112
|
+
"M2": {
|
|
113
|
+
"wrong": "想给 Argv 传 schema / argSchema 限制可选 key 列表或字段类型: `<Argv schema={...} />`",
|
|
114
|
+
"result": "Argv **不存在 schema / argSchema prop**——传入会被 TypeScript 直接报错。Argv 是自由键值对编辑器,没有内置 schema 约束",
|
|
115
|
+
"fix": "需要约束 key 白名单:在父层 onListChange 里过滤;需要约束 value 类型:Argv 内部已有 DataGenerator 让用户选 dataType(string/number/boolean/object);需要强 schema(必填 + 正则等):换用 FieldForm + FieldForm.Item rules"
|
|
116
|
+
},
|
|
117
|
+
"M3": {
|
|
118
|
+
"wrong": "errors 按 key 名映射: `errors={{ username: '必填', email: '格式错' }}` (Record<string,string>)",
|
|
119
|
+
"result": "类型不匹配——errors 是 `Record<string, string>[]` 数组,**按 list 行索引对齐**,不是按字段名映射。传错形态会导致 errors[index] 取值为 undefined,所有行都不显示错误",
|
|
120
|
+
"fix": "用 `errors={[{key: '', value: '必填'}, {key: '重复', value: ''}]}` 或直接 `errors={checkArgvData(list, intl).detail}`(detail 已经是正确形态)"
|
|
121
|
+
},
|
|
122
|
+
"M4": {
|
|
123
|
+
"wrong": "想用 `value` / `values` prop 做受控: `<Argv value={data} onChange={setData} />`",
|
|
124
|
+
"result": "Argv **无 value 也无 values prop**——TypeScript 报错。常见的受控套路在 Argv 上不直接成立",
|
|
125
|
+
"fix": "Argv 的受控通道叫 **list + onListChange**(命名上 list 替代了 value 角色,IArgvItem[] 替代了 普通对象)。如果父层数据是普通对象,可以在父层用 formatObjectToData / formatDataToObject 工具函数转换"
|
|
126
|
+
},
|
|
127
|
+
"M5": {
|
|
128
|
+
"wrong": "同时监听 onChange 和 onListChange 并期望它们的回调时机一致",
|
|
129
|
+
"result": "**onListChange 立即触发,onChange 防抖 200ms**——按键过程中两个 callback 看到的数据可能短暂不一致,且 onChange 收到的是对象形态(过滤了空 key 项),onListChange 收到的是列表形态(保留全部)",
|
|
130
|
+
"fix": "通常只监听一个:严格受控用 onListChange,只关心最终对象结果用 onChange。如必须两个都监听,理解 200ms 时差是预期行为"
|
|
131
|
+
}
|
|
132
|
+
},
|
|
133
|
+
"completeExample": "// 标准用法:list 受控模式 + errors 校验\nimport React, { useState, useMemo } from 'react';\nimport Argv, { IArgvItem, checkArgvData } from '@para-ui/core/Argv';\nimport useFormatMessage from '@para-ui/core/GlobalContext/useFormatMessage';\n\nconst Demo: React.FC = () => {\n const [list, setList] = useState<IArgvItem[]>([\n { key: 'NODE_ENV', data: { dataType: 'string', data: 'production' } },\n { key: 'PORT', data: { dataType: 'number', data: 3000 } },\n { key: 'DEBUG', data: { dataType: 'boolean', data: false } }\n ]);\n const intl = useFormatMessage('Argv');\n // 校验:返回 { error: boolean, detail: errors 形态 }\n const validation = useMemo(() => checkArgvData(list, intl), [list, intl]);\n return (\n <div>\n <Argv\n label='环境变量配置'\n list={list}\n onListChange={setList}\n errors={validation.detail}\n />\n <button disabled={validation.error}>保存</button>\n </div>\n );\n};\nexport default Demo;",
|
|
134
|
+
"utilities": {
|
|
135
|
+
"formatObjectToData": {
|
|
136
|
+
"import": "import { formatObjectToData } from '@para-ui/core/Argv';",
|
|
137
|
+
"signature": "(data: Record<string, any>) => IArgvItem[]",
|
|
138
|
+
"purpose": "把普通对象转成 IArgvItem[](自动推断 dataType)。父层有对象形态数据但想用 list 受控通道时用"
|
|
139
|
+
},
|
|
140
|
+
"formatDataToObject": {
|
|
141
|
+
"import": "import { formatDataToObject } from '@para-ui/core/Argv';",
|
|
142
|
+
"signature": "(data: IArgvItem[]) => Record<string, any>",
|
|
143
|
+
"purpose": "把 IArgvItem[] 转回普通对象(跳过空 key,还原 dataType)。保存到后端时用"
|
|
144
|
+
},
|
|
145
|
+
"checkArgvData": {
|
|
146
|
+
"import": "import { checkArgvData } from '@para-ui/core/Argv';",
|
|
147
|
+
"signature": "(data: IArgvItem[], intl: Function) => { error: boolean, detail: Record<string,string>[] }",
|
|
148
|
+
"purpose": "内置校验:每行 key 非空 + value 格式正确。detail 可以直接喂给 errors prop"
|
|
149
|
+
}
|
|
150
|
+
},
|
|
151
|
+
"do": [
|
|
152
|
+
"需要严格受控(中途插队 / 实时同步):用 **list + onListChange**(列表形态、无防抖)",
|
|
153
|
+
"只需保存最终结果到父层 state:用 **defaultValue + onChange**(对象形态、200ms 防抖)",
|
|
154
|
+
"errors 直接消费 **checkArgvData(list, intl).detail**,无需手工拼装",
|
|
155
|
+
"保存到后端前用 **formatDataToObject(list)** 转成对象形态",
|
|
156
|
+
"理解'对象 ⇄ 列表'两套通道是平级且独立的,不要混用"
|
|
157
|
+
],
|
|
158
|
+
"dont": [
|
|
159
|
+
"**不要**给 Argv 传 schema / argSchema / value / values prop——这些都不存在(见 commonMisconceptions M2/M4)",
|
|
160
|
+
"**不要**把 defaultValue 当受控 prop 用——会导致编辑过程中数据被清空(M1)",
|
|
161
|
+
"**不要**按 key 名映射 errors——errors 按行索引对齐(M3)",
|
|
162
|
+
"**不要**期望 onChange 和 onListChange 时机一致——前者有 200ms 防抖(M5)",
|
|
163
|
+
"参数过多(>10 行)不分组用同一个 Argv——考虑分多个 Argv 或换 FieldForm"
|
|
164
|
+
],
|
|
165
|
+
"events": {
|
|
166
|
+
"onChange": {
|
|
167
|
+
"signature": "(val: Record<string, any>) => void",
|
|
168
|
+
"asyncSupported": false,
|
|
169
|
+
"examples": [
|
|
170
|
+
"对象形态回调,内部 200ms 防抖,适合保存到 state 但不适合严格受控",
|
|
171
|
+
"返回值已经 formatDataToObject 转换,跳过空 key 项,还原 dataType 原始值",
|
|
172
|
+
"async 场景可直接 await 包裹:const save = async (val) => { await api.save(val); setDirty(false); }"
|
|
173
|
+
],
|
|
174
|
+
"commonMistakes": [
|
|
175
|
+
"期望 onChange 和 onListChange 在同一帧触发——onChange 有 200ms 防抖,onListChange 立即触发,两者不同步",
|
|
176
|
+
"期望 onChange 回传 IArgvItem[] 列表形态——onChange 返回普通对象 Record<string,any>,要列表形态用 onListChange",
|
|
177
|
+
"把 onChange 当受控 prop 配合 defaultValue 用——defaultValue 非受控,引用不变不触发重置,严格受控用 list+onListChange"
|
|
178
|
+
]
|
|
179
|
+
},
|
|
180
|
+
"onListChange": {
|
|
181
|
+
"signature": "(val: IArgvItem[]) => void",
|
|
182
|
+
"asyncSupported": false,
|
|
183
|
+
"examples": [
|
|
184
|
+
"每次按键 / 增删行 / 类型切换立即触发,无防抖,适合严格受控场景",
|
|
185
|
+
"返回完整 IArgvItem[](保留空 key 行),可直接回传给 list prop 实现受控循环",
|
|
186
|
+
"结合 checkArgvData 做实时校验:onListChange={val => { setList(val); setErrors(checkArgvData(val, intl).detail); }}"
|
|
187
|
+
],
|
|
188
|
+
"commonMistakes": [
|
|
189
|
+
"期望 onListChange 返回对象形态——它返回 IArgvItem[],要对象形态用 onChange 或 formatDataToObject",
|
|
190
|
+
"onListChange 频率比 onChange 高,如果 handler 有重计算逻辑应加 useMemo/useCallback 避免性能问题",
|
|
191
|
+
"同时传 list 和 defaultValue 但期望 onListChange 只触发一次——list 引用变化会触发,defaultValue 也会灌入,两套通道独立"
|
|
192
|
+
]
|
|
193
|
+
}
|
|
194
|
+
},
|
|
195
|
+
"typescriptPitfalls": [
|
|
196
|
+
{
|
|
197
|
+
"issue": "errors prop 是按行索引对齐的数组,不是按 key 名映射的对象",
|
|
198
|
+
"wrong": "// 错误:按字段名映射\n<Argv errors={{ NODE_ENV: '必填', PORT: '格式错' }} /> // TS 类型报错:期望数组",
|
|
199
|
+
"right": "// 正确:按 list 行索引对齐\n<Argv errors={[{ key: '', value: '必填' }, { key: '重复', value: '' }]} />\n// 或直接消费 checkArgvData 结果\n<Argv errors={checkArgvData(list, intl).detail} />"
|
|
200
|
+
},
|
|
201
|
+
{
|
|
202
|
+
"issue": "Argv 无 value / values prop,受控通道叫 list + onListChange",
|
|
203
|
+
"wrong": "// antd/MUI 风格受控写法\n<Argv value={data} onChange={setData} /> // TS 报错:value 不在 ArgvProps",
|
|
204
|
+
"right": "// para-ui Argv 受控写法\n<Argv list={list} onListChange={setList} />"
|
|
205
|
+
},
|
|
206
|
+
{
|
|
207
|
+
"issue": "IArgvItem.data.dataType 是字符串联合类型,不能传任意字符串",
|
|
208
|
+
"wrong": "const item: IArgvItem = { key: 'PORT', data: { dataType: 'int', data: 3000 } }; // 'int' 不在联合类型",
|
|
209
|
+
"right": "const item: IArgvItem = { key: 'PORT', data: { dataType: 'number', data: 3000 } }; // 只有 'string'|'number'|'boolean'|'object'"
|
|
210
|
+
}
|
|
211
|
+
],
|
|
212
|
+
"mapping": {
|
|
213
|
+
"realComponent": "Argv",
|
|
214
|
+
"adapter": null
|
|
215
|
+
}
|
|
216
|
+
}
|
|
@@ -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"),u=require("react"),N=require("../../TextField/index.js"),M=require("../../Select/index.js"),y=require("./config.js"),D=require("../../node_modules/@para-ui/icons/ExpandPart/index.js"),w=require("../../InputNumber/index.js"),G=require("../../Modal/index.js"),I=require("../../Message/index.js"),_=require("../../GlobalContext/useFormatMessage.js"),O=require("../lang/index.js"),F=require("@
|
|
1
|
+
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});require('./index.css');const n=require("../../_virtual/jsx-runtime.js"),u=require("react"),N=require("../../TextField/index.js"),M=require("../../Select/index.js"),y=require("./config.js"),D=require("../../node_modules/@para-ui/icons/ExpandPart/index.js"),w=require("../../InputNumber/index.js"),G=require("../../Modal/index.js"),I=require("../../Message/index.js"),_=require("../../GlobalContext/useFormatMessage.js"),O=require("../lang/index.js"),F=require("@snack-kit/lib");;/* empty css */const J=e=>{const{defaultValue:i,value:t,disabled:o,onChange:d,error:p,helperText:f,placeholderTextField:T}=e,E=_.default("Argv",O.default),[s,x]=u.useState({dataType:"string",data:""}),[S,m]=u.useState(!1),[g,j]=u.useState(""),b=u.useRef({dataMapping:{...y.defaultInputValueMapping},uuid:F.UUID()});u.useEffect(()=>{i!==void 0&&x(i)},[]),u.useEffect(()=>{t!==void 0&&x(t)},[t]);const q=a=>{const r=a;if(r!==s.dataType){const h=b.current.dataMapping[r]??"",v={...s,dataType:r,data:h};x(v),d&&d(v)}},c=a=>{const r={...s,data:a};x(r),d&&d(r);const l=s.dataType,h=b.current.dataMapping;h[l]=a},C=u.useMemo(()=>{const{dataType:a,data:r}=s;if(a==="number"){const l=Number(r);return n.jsxRuntimeExports.jsx(w.InputNumber,{placeholder:T,disabled:o,className:"data-input",value:l,onChange:c,error:p,helperText:f})}return a==="boolean"?n.jsxRuntimeExports.jsx(M.default,{disabled:o,className:"data-input",list:y.booleanSelectList,value:r,onChange:c,error:p,helperText:f}):n.jsxRuntimeExports.jsx(N.TextField,{placeholder:T,className:"data-input",multiline:!0,value:r,rightIcon:n.jsxRuntimeExports.jsx(D.ExpandPart,{}),onClickIcon:()=>{m(!0),j(r)},onChange:l=>c(l.target.value),rows:1,resize:!1,error:p,helperText:f})},[s,c,p,f]),R=()=>{if(s.dataType==="string"&&(c(g),m(!1)),s.dataType==="object")try{const a=JSON.parse(g);c(g),m(!1)}catch{I.Message.warn(E("formatErrorJson"))}};return n.jsxRuntimeExports.jsxs("div",{className:"argv-data-generator",children:[n.jsxRuntimeExports.jsxs("div",{className:"data-generator-content",children:[n.jsxRuntimeExports.jsx(M.default,{disabled:o,className:"datatype-select",list:y.dataTypeSelectList,value:s?.dataType,onChange:q}),C]}),n.jsxRuntimeExports.jsx(G.Modal,{open:S,hideHeader:!0,size:"auto",onCancel:()=>m(!1),onOk:R,children:n.jsxRuntimeExports.jsx("div",{style:{width:"600px",height:"auto",paddingTop:"20px"},children:n.jsxRuntimeExports.jsx(N.TextField,{disabled:o,multiline:!0,rows:12,value:g||"",onChange:a=>j(a.target.value)})})})]})},V=e=>{const{dataType:i,data:t}=e;switch(i){case"number":return!isNaN(Number(t));case"boolean":return!0;case"string":return!0;case"object":try{return JSON.parse(t),!0}catch{return!1}default:return!1}},k=e=>{if(!e)return"";const{dataType:i,data:t}=e;switch(i){case"number":return Number(t);case"boolean":return!!t;case"string":return t;case"object":try{return JSON.parse(t)}catch{return{}}default:return t}},z=e=>typeof e=="number"?{dataType:"number",data:e}:typeof e=="boolean"?{dataType:"boolean",data:e}:typeof e=="string"?{dataType:"string",data:e}:typeof e=="object"?{dataType:"object",data:JSON.stringify(e)}:{dataType:"string",data:""};exports.checkGeneratorData=V;exports.default=J;exports.formatDataToGenerator=z;exports.formatGeneratorToData=k;
|
|
2
2
|
//# sourceMappingURL=index.js.map
|
package/lib/Argv/index.d.ts
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import { default as React } from 'react';
|
|
2
2
|
import { IDataGeneratorValue } from './dataGenerator';
|
|
3
3
|
import { LabelProps } from '../Label';
|
|
4
|
-
import { IObject } from '../Utils/type';
|
|
5
4
|
export interface IArgvItem {
|
|
6
5
|
key: string;
|
|
7
6
|
data: IDataGeneratorValue;
|
|
@@ -14,11 +13,11 @@ export interface ArgvProps {
|
|
|
14
13
|
/** 禁用 */
|
|
15
14
|
disabled?: boolean;
|
|
16
15
|
/** 默认值 不受控 */
|
|
17
|
-
defaultValue?:
|
|
16
|
+
defaultValue?: Record<string, unknown>;
|
|
18
17
|
/** label */
|
|
19
18
|
label?: LabelProps['label'];
|
|
20
19
|
/** 改变值 */
|
|
21
|
-
onChange?: (val:
|
|
20
|
+
onChange?: (val: Record<string, unknown>) => void;
|
|
22
21
|
/** 格式化的列表 */
|
|
23
22
|
list?: IArgvItem[];
|
|
24
23
|
/** 改变值 */
|
|
@@ -30,6 +29,6 @@ export interface ArgvProps {
|
|
|
30
29
|
}
|
|
31
30
|
declare const Argv: (props: ArgvProps) => import("react/jsx-runtime").JSX.Element;
|
|
32
31
|
export default Argv;
|
|
33
|
-
export declare const formatObjectToData: (data:
|
|
34
|
-
export declare const formatDataToObject: (data: IArgvItem[]) =>
|
|
35
|
-
export declare const checkArgvData: (data: IArgvItem[], intl: Function) => Record<string,
|
|
32
|
+
export declare const formatObjectToData: (data: Record<string, unknown>) => IArgvItem[];
|
|
33
|
+
export declare const formatDataToObject: (data: IArgvItem[]) => Record<string, unknown>;
|
|
34
|
+
export declare const checkArgvData: (data: IArgvItem[], intl: Function) => Record<string, unknown>;
|
package/lib/Argv/index.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});require('./index.css');const e=require("../_virtual/jsx-runtime.js"),x=require("react"),S=require("clsx"),_=require("../GlobalContext/constant.js"),K=require("../GlobalContext/useFormatMessage.js"),J=require("@
|
|
1
|
+
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});require('./index.css');const e=require("../_virtual/jsx-runtime.js"),x=require("react"),S=require("clsx"),_=require("../GlobalContext/constant.js"),K=require("../GlobalContext/useFormatMessage.js"),J=require("@snack-kit/lib"),L=require("./lang/index.js"),P=require("./batchEdit/index.js"),j=require("./dataGenerator/index.js"),I=require("../Label/index.js"),B=require("../TextField/index.js"),U=require("../node_modules/@para-ui/icons/Delete/index.js"),w=require("../node_modules/@para-ui/icons/PlusCircleF/index.js"),N=require("../Utils/index.js");;/* empty css */const z=i=>{const{style:l,className:n,defaultValue:a,disabled:c,label:f,labelProps:h,errors:g,onChange:m,list:u,onListChange:k}=i,p=K.default("Argv",L.default),[s,v]=x.useState([]),D={key:"",data:{dataType:"string",data:""}};x.useEffect(()=>{if(!a||!N.isObject(a)){v([]);return}v(C(a))},[a]),x.useEffect(()=>{u!==void 0&&v(u)},[u]);const A=x.useMemo(()=>J.Debounce(async r=>{const t=O(r);m&&m(t)},200),[]),E=r=>{v(r),k&&k(r),A(r)},M=()=>{c||(s.push({...D}),E([...s]))},T=r=>{c||(s.splice(r,1),E([...s]))},b=(r,t,o)=>{s[t]||(s[t]={...D}),s[t]={...s[t],[o]:r},E([...s])},$=x.useMemo(()=>e.jsxRuntimeExports.jsx("div",{className:"argv-label",children:e.jsxRuntimeExports.jsx(I.default,{label:f||p("environmentVariable"),...h})}),[f,h]),F=x.useMemo(()=>s.map((t,o)=>{const d=g?.[o]??{},y=d?.key||"",q=d?.value||"";return e.jsxRuntimeExports.jsx("div",{children:e.jsxRuntimeExports.jsxs("div",{className:"argv-item",children:[e.jsxRuntimeExports.jsx("div",{className:"argv-key",children:e.jsxRuntimeExports.jsx(B.TextField,{value:t?.key||"",placeholder:p("pleaseEnterKey"),onChange:R=>b(R.target.value,o,"key"),disabled:c,error:!!y,helperText:y})}),e.jsxRuntimeExports.jsx("div",{className:"middle-icon",children:":"}),e.jsxRuntimeExports.jsx("div",{className:"argv-value",children:e.jsxRuntimeExports.jsx(j.default,{value:t?.data,onChange:R=>b(R,o,"data"),disabled:c,error:!!q,helperText:q,placeholderTextField:p("pleaseEnterValue")})}),e.jsxRuntimeExports.jsx("div",{className:`argv-btn-del ${c?"disabled":""}`,children:e.jsxRuntimeExports.jsx(U.Delete,{onClick:()=>T(o)})})]},o)},o)}),[s,b,T]),V=()=>{if(!Array.isArray(s))return"";const r=s.map(t=>{const o=j.formatGeneratorToData(t.data);return{key:t.key||"",value:o}});try{return JSON.stringify(r,null,4)}catch{return""}},G=r=>{let t=[];try{t=JSON.parse(r)}catch{return[]}return Array.isArray(t)?t.map(d=>{const y=j.formatDataToGenerator(d?.value);return{key:d.key,data:y}}):[]};return e.jsxRuntimeExports.jsxs("div",{className:S(`${_.$prefixCls}-argv`,n,{}),style:l,children:[e.jsxRuntimeExports.jsx("div",{className:"btn-batch-edit",children:e.jsxRuntimeExports.jsx(P.default,{sourceData:s,dataToJson:V,jsonToData:G,onFinish:r=>{console.log(r,"BatchEdit===>"),E([...r])}})}),$,e.jsxRuntimeExports.jsx("div",{className:"argv-list",children:F}),e.jsxRuntimeExports.jsxs("div",{className:`argv-btn-add ${c?"disabled":""}`,onClick:M,children:[e.jsxRuntimeExports.jsx(w.PlusCircleF,{}),e.jsxRuntimeExports.jsx("span",{children:p("add")})]})]})},C=i=>{if(!N.isObject(i))return[];const l=Object.keys(i),n=[];return l.forEach(a=>{const c=j.formatDataToGenerator(i?.[a]);n.push({key:a,data:c})}),n},O=i=>{const l={};return i.forEach(n=>{if(n.key){const a=j.formatGeneratorToData(n.data);l[n.key]=a}}),l},H=(i,l)=>{const n=[];let a=!1;return i.forEach((c,f)=>{const{key:h,data:g}=c,m=!h,u=!j.checkGeneratorData(g);(m||u)&&(a=!0,n[f]={key:m?l("required"):"",value:u?l("formatError"):""})}),{error:a,detail:n}};exports.checkArgvData=H;exports.default=z;exports.formatDataToObject=O;exports.formatObjectToData=C;
|
|
2
2
|
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1,133 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "AutoBox",
|
|
3
|
+
"category": "Layout",
|
|
4
|
+
"description": "自适应容器,根据容器宽度自动计算可见项数量,超出部分折叠到'更多'下拉弹层中展示",
|
|
5
|
+
"semantic": {
|
|
6
|
+
"intent": [
|
|
7
|
+
"响应式布局",
|
|
8
|
+
"内容收纳"
|
|
9
|
+
],
|
|
10
|
+
"useCases": [
|
|
11
|
+
"工具栏",
|
|
12
|
+
"标签组",
|
|
13
|
+
"操作区"
|
|
14
|
+
],
|
|
15
|
+
"riskLevel": "low"
|
|
16
|
+
},
|
|
17
|
+
"variants": {
|
|
18
|
+
"default": {
|
|
19
|
+
"meaning": "默认样式"
|
|
20
|
+
}
|
|
21
|
+
},
|
|
22
|
+
"states": [
|
|
23
|
+
"default",
|
|
24
|
+
"expanded"
|
|
25
|
+
],
|
|
26
|
+
"idealProps": {
|
|
27
|
+
"list": {
|
|
28
|
+
"type": "array",
|
|
29
|
+
"description": "需要自适应容纳的子节点数组(ReactNode[]);事件挂在节点自身,AutoBox 不暴露 item-level onClick"
|
|
30
|
+
},
|
|
31
|
+
"showNum": {
|
|
32
|
+
"type": "number",
|
|
33
|
+
"description": "强制显示前 N 项(跳过自适应计算),溢出全部进'更多'"
|
|
34
|
+
},
|
|
35
|
+
"trigger": {
|
|
36
|
+
"type": "enum",
|
|
37
|
+
"values": [
|
|
38
|
+
"click",
|
|
39
|
+
"hover"
|
|
40
|
+
],
|
|
41
|
+
"default": "click",
|
|
42
|
+
"description": "'更多'弹层触发方式"
|
|
43
|
+
},
|
|
44
|
+
"placement": {
|
|
45
|
+
"type": "string",
|
|
46
|
+
"default": "bottomLeft",
|
|
47
|
+
"description": "'更多'弹层位置(透传 Popover placement)"
|
|
48
|
+
},
|
|
49
|
+
"hideMore": {
|
|
50
|
+
"type": "boolean",
|
|
51
|
+
"default": false,
|
|
52
|
+
"description": "隐藏内置'更多'按钮(配 anchorEl + openMore 自管理外置触发器)"
|
|
53
|
+
},
|
|
54
|
+
"moreCustomize": {
|
|
55
|
+
"type": "ReactNode",
|
|
56
|
+
"description": "自定义'更多'触发节点,替换默认 More 图标按钮"
|
|
57
|
+
},
|
|
58
|
+
"openMore": {
|
|
59
|
+
"type": "boolean",
|
|
60
|
+
"default": false,
|
|
61
|
+
"description": "外部受控弹层显隐"
|
|
62
|
+
},
|
|
63
|
+
"onShowMore": {
|
|
64
|
+
"type": "function",
|
|
65
|
+
"description": "(bol: boolean) => void 是否有溢出项的状态回调"
|
|
66
|
+
},
|
|
67
|
+
"onCloseMore": {
|
|
68
|
+
"type": "function",
|
|
69
|
+
"description": "() => void 受控弹层关闭回调"
|
|
70
|
+
}
|
|
71
|
+
},
|
|
72
|
+
"do": [
|
|
73
|
+
"用于空间有限需要收纳溢出内容的场景",
|
|
74
|
+
"配合 Popover 展示更多",
|
|
75
|
+
"list 中每个 ReactNode 自行绑定点击事件——AutoBox 只做布局计算和'更多'收纳"
|
|
76
|
+
],
|
|
77
|
+
"dont": [
|
|
78
|
+
"在固定宽度布局中滥用",
|
|
79
|
+
"列表项过多时不做分页",
|
|
80
|
+
"期望 AutoBox 暴露单项 onClick——事件需要挂在 list 元素自身上"
|
|
81
|
+
],
|
|
82
|
+
"events": {
|
|
83
|
+
"onShowMore": {
|
|
84
|
+
"signature": "(bol: boolean) => void",
|
|
85
|
+
"asyncSupported": false,
|
|
86
|
+
"examples": [
|
|
87
|
+
"bol=true 表示当前有溢出项(list.length > morePos),可用于显示/隐藏外部操作按钮",
|
|
88
|
+
"bol=false 表示所有项都可见,无需显示外部'更多'入口",
|
|
89
|
+
"配合 hideMore + openMore 实现外置触发器:onShowMore={setHasMore},只在 hasMore 时渲染自定义按钮"
|
|
90
|
+
],
|
|
91
|
+
"commonMistakes": [
|
|
92
|
+
"期望 onShowMore 返回具体溢出项数量——它只返回 boolean,溢出项数量需自行计算(list.length - morePos)",
|
|
93
|
+
"在 onShowMore 里 setState 引发重渲染后,AutoBox 内部 resize 可能再次触发 onShowMore,注意避免循环",
|
|
94
|
+
"onShowMore 在 list prop 变化或 window resize 后都会重新触发,不要依赖它的调用次数做副作用"
|
|
95
|
+
]
|
|
96
|
+
},
|
|
97
|
+
"onCloseMore": {
|
|
98
|
+
"signature": "() => void",
|
|
99
|
+
"asyncSupported": false,
|
|
100
|
+
"examples": [
|
|
101
|
+
"弹层关闭时同步外部受控状态:onCloseMore={() => setOpenMore(false)}",
|
|
102
|
+
"关闭时记录日志:onCloseMore={() => analytics.track('more_closed')}",
|
|
103
|
+
"配合 openMore 实现受控弹层:<AutoBox openMore={open} onCloseMore={() => setOpen(false)} />"
|
|
104
|
+
],
|
|
105
|
+
"commonMistakes": [
|
|
106
|
+
"传了 onCloseMore 但忘记传 openMore——二者需配合使用才能实现受控弹层",
|
|
107
|
+
"期望 onCloseMore 在用户点击弹层内容后也触发——只有弹层关闭时触发,内容点击需在 list 节点自身处理",
|
|
108
|
+
"期望 onCloseMore 携带关闭原因——回调无参数,无法区分是点击外部还是 ESC 关闭"
|
|
109
|
+
]
|
|
110
|
+
}
|
|
111
|
+
},
|
|
112
|
+
"typescriptPitfalls": [
|
|
113
|
+
{
|
|
114
|
+
"issue": "list 类型是 any[],但传入非 ReactNode 元素会导致 runtime 渲染异常",
|
|
115
|
+
"wrong": "// list 传了原始数据对象,忘记 map 成 ReactNode\n<AutoBox list={[{ id: 1, name: '标签' }]} /> // 对象不是合法 ReactNode,渲染报错",
|
|
116
|
+
"right": "// 先 map 成 ReactNode\n<AutoBox list={data.map(d => <Tag key={d.id}>{d.name}</Tag>)} />"
|
|
117
|
+
},
|
|
118
|
+
{
|
|
119
|
+
"issue": "moreCustomize 声明为 ReactNode,但 src 内部也处理了函数形式(typeof moreCustomize === 'function'),类型声明不完整",
|
|
120
|
+
"wrong": "// 传函数期望接收 morePos 参数,但 TypeScript 按 ReactNode 检查会报类型错误\nmoreCustomize={(morePos) => <span>+{morePos}</span>}",
|
|
121
|
+
"right": "// 如需传函数绕过类型检查需显式 as any,或直接传静态 ReactNode\nmoreCustomize={<span>更多</span>}"
|
|
122
|
+
},
|
|
123
|
+
{
|
|
124
|
+
"issue": "AutoBoxProps 有索引签名 [name: string]: any,传错误 prop 名不会报 TS 错误",
|
|
125
|
+
"wrong": "// 拼写错误不会被 TS 捕获\n<AutoBox list={list} closeMore={() => {}} /> // closeMore 应为 onCloseMore,静默失效",
|
|
126
|
+
"right": "// 注意使用正确 prop 名\n<AutoBox list={list} onCloseMore={() => {}} />"
|
|
127
|
+
}
|
|
128
|
+
],
|
|
129
|
+
"mapping": {
|
|
130
|
+
"realComponent": "AutoBox",
|
|
131
|
+
"adapter": null
|
|
132
|
+
}
|
|
133
|
+
}
|
package/lib/AutoBox/index.d.ts
CHANGED
|
@@ -6,7 +6,7 @@ export interface AutoBoxProps {
|
|
|
6
6
|
/** style */
|
|
7
7
|
style?: React.CSSProperties;
|
|
8
8
|
/** list选项 */
|
|
9
|
-
list?:
|
|
9
|
+
list?: React.ReactNode[];
|
|
10
10
|
/** 指定渲染几项,存在这个参数,则不自适应 */
|
|
11
11
|
showNum?: number;
|
|
12
12
|
/** 下拉框样式 */
|
|
@@ -18,7 +18,7 @@ export interface AutoBoxProps {
|
|
|
18
18
|
/** 打开下拉框 */
|
|
19
19
|
openMore?: boolean;
|
|
20
20
|
/** 定位元素 */
|
|
21
|
-
anchorEl?:
|
|
21
|
+
anchorEl?: HTMLElement | null;
|
|
22
22
|
/** 关闭弹窗 */
|
|
23
23
|
onCloseMore?: () => void;
|
|
24
24
|
/** 显示更多 */
|
|
@@ -27,7 +27,7 @@ export interface AutoBoxProps {
|
|
|
27
27
|
trigger?: 'click' | 'hover';
|
|
28
28
|
/** 位置 */
|
|
29
29
|
placement?: TooltipPlacement;
|
|
30
|
-
[name: string]:
|
|
30
|
+
[name: string]: unknown;
|
|
31
31
|
}
|
|
32
32
|
export declare const AutoBox: FunctionComponent<AutoBoxProps>;
|
|
33
33
|
export default AutoBox;
|
package/lib/AutoBox/index.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});require('./index.css');const s=require("../_virtual/jsx-runtime.js"),t=require("react"),_=require("../Popover/index.js"),A=require("./protal.js"),F=require("../node_modules/@para-ui/icons/More/index.js"),N=require("../GlobalContext/constant.js");;/* empty css */const w=i=>{const{className:x,list:o=[],popoverClassName:p,moreCustomize:l,anchorEl:v,hideMore:q=!1,showNum:m,onCloseMore:j,onShowMore:u,style:P,trigger:S="click",placement:$="bottomLeft"}=i,M=t.useRef(null),[r,f]=t.useState(null),[E,d]=t.useState(!1),[h]=t.useState({}),z=t.useRef();t.useEffect(()=>{i.openMore!==void 0&&d(i.openMore)},[i.openMore]),t.useEffect(()=>{if(i.showNum===void 0)return a(),window.addEventListener("resize",a),()=>{window.removeEventListener("resize",a),clearTimeout(h.timer)}},[o]),t.useEffect(()=>{m!==void 0&&(f(m),window.removeEventListener("resize",a))},[m]),t.useEffect(()=>{r!==null&&o.length>r?u&&u(!0):u&&u(!1)},[o,r,u]);const y=e=>{if(e)return d(!0);c()},c=()=>{d(!1),j&&j()},D=()=>{c()},C=e=>{if(e===null||e===0)return;e===void 0&&(e=o.length);const n=M.current;if(n)if(n.scrollWidth>n.clientWidth){const b=Number(e)-1;f(b),C(b)}else o.length<=e&&D()},a=()=>{clearTimeout(h.timer),c(),h.timer=setTimeout(()=>{f(o.length),C()},100)},L=()=>{let e=`${N.$prefixCls}-auto-box`;return x&&(e+=` ${x}`),e},g=()=>{let e=`${N.$prefixCls}-auto-box-popover`;return p&&(e+=` ${p}`),e},R=()=>s.jsxRuntimeExports.jsx("div",{className:"auto-box-popover-content",children:o&&o.map((e,n)=>r!==null&&r>n?null:s.jsxRuntimeExports.jsx(t.Fragment,{children:e},n))}),T=()=>{if(r!==null&&o.length>r&&!q){const e=()=>l?typeof l=="function"?l(r):l:s.jsxRuntimeExports.jsx(F.More,{});return s.jsxRuntimeExports.jsx(_.Popover,{open:E,content:R(),overlayClassName:g(),placement:$,trigger:S,onVisibleChange:y,children:s.jsxRuntimeExports.jsx("div",{className:"auto-box-more",ref:z,children:e()})})}},B=()=>{if(v&&E)return s.jsxRuntimeExports.jsx(A.Protal,{className:g(),anchorEl:v,onClose:c,children:R()})};return s.jsxRuntimeExports.jsxs("div",{className:L(),style:P,ref:M,children:[o.map((e,n)=>r!==null&&r<=n?null:s.jsxRuntimeExports.jsx(t.Fragment,{children:e},n)),T(),B()]})};exports.AutoBox=w;exports.default=w;
|
|
1
|
+
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});require('./index.css');const s=require("../_virtual/jsx-runtime.js"),t=require("react"),_=require("../Popover/index.js"),A=require("./protal.js"),F=require("../node_modules/@para-ui/icons/More/index.js"),N=require("../GlobalContext/constant.js");;/* empty css */const w=i=>{const{className:x,list:o=[],popoverClassName:p,moreCustomize:l,anchorEl:v,hideMore:q=!1,showNum:m,onCloseMore:j,onShowMore:u,style:P,trigger:S="click",placement:$="bottomLeft"}=i,M=t.useRef(null),[r,f]=t.useState(null),[E,d]=t.useState(!1),[h]=t.useState({}),z=t.useRef(null);t.useEffect(()=>{i.openMore!==void 0&&d(i.openMore)},[i.openMore]),t.useEffect(()=>{if(i.showNum===void 0)return a(),window.addEventListener("resize",a),()=>{window.removeEventListener("resize",a),clearTimeout(h.timer)}},[o]),t.useEffect(()=>{m!==void 0&&(f(m),window.removeEventListener("resize",a))},[m]),t.useEffect(()=>{r!==null&&o.length>r?u&&u(!0):u&&u(!1)},[o,r,u]);const y=e=>{if(e)return d(!0);c()},c=()=>{d(!1),j&&j()},D=()=>{c()},C=e=>{if(e===null||e===0)return;e===void 0&&(e=o.length);const n=M.current;if(n)if(n.scrollWidth>n.clientWidth){const b=Number(e)-1;f(b),C(b)}else o.length<=e&&D()},a=()=>{clearTimeout(h.timer),c(),h.timer=setTimeout(()=>{f(o.length),C()},100)},L=()=>{let e=`${N.$prefixCls}-auto-box`;return x&&(e+=` ${x}`),e},g=()=>{let e=`${N.$prefixCls}-auto-box-popover`;return p&&(e+=` ${p}`),e},R=()=>s.jsxRuntimeExports.jsx("div",{className:"auto-box-popover-content",children:o&&o.map((e,n)=>r!==null&&r>n?null:s.jsxRuntimeExports.jsx(t.Fragment,{children:e},n))}),T=()=>{if(r!==null&&o.length>r&&!q){const e=()=>l?typeof l=="function"?l(r):l:s.jsxRuntimeExports.jsx(F.More,{});return s.jsxRuntimeExports.jsx(_.Popover,{open:E,content:R(),overlayClassName:g(),placement:$,trigger:S,onVisibleChange:y,children:s.jsxRuntimeExports.jsx("div",{className:"auto-box-more",ref:z,children:e()})})}},B=()=>{if(v&&E)return s.jsxRuntimeExports.jsx(A.Protal,{className:g(),anchorEl:v,onClose:c,children:R()})};return s.jsxRuntimeExports.jsxs("div",{className:L(),style:P,ref:M,children:[o.map((e,n)=>r!==null&&r<=n?null:s.jsxRuntimeExports.jsx(t.Fragment,{children:e},n)),T(),B()]})};exports.AutoBox=w;exports.default=w;
|
|
2
2
|
//# sourceMappingURL=index.js.map
|
package/lib/AutoBox/protal.d.ts
CHANGED
|
@@ -2,11 +2,11 @@ import { FunctionComponent, ReactNode } from 'react';
|
|
|
2
2
|
export interface ProtalBoxProps {
|
|
3
3
|
className?: string;
|
|
4
4
|
/** 定位元素 */
|
|
5
|
-
anchorEl?:
|
|
5
|
+
anchorEl?: HTMLElement | null;
|
|
6
6
|
/** 关闭事件 */
|
|
7
7
|
onClose?: () => void;
|
|
8
8
|
children?: ReactNode;
|
|
9
|
-
[name: string]:
|
|
9
|
+
[name: string]: unknown;
|
|
10
10
|
}
|
|
11
11
|
export declare const Protal: FunctionComponent<ProtalBoxProps>;
|
|
12
12
|
export default Protal;
|
package/lib/AutoBox/protal.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const
|
|
1
|
+
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const s=require("../_virtual/jsx-runtime.js"),c=require("react"),C=require("react-dom"),S=require("@snack-kit/lib"),h=require("../GlobalContext/constant.js"),p=x=>{const{children:R,className:a,anchorEl:d,onClose:f}=x,[g,w]=c.useState({}),l=c.useRef({uuid:`${h.$prefixCls}-protal-box-content-${S.UUID()}`}),i=c.useRef(null),u=c.useRef(null);c.useEffect(()=>(E(),window.addEventListener("click",m),()=>{i&&i.current&&i.current.remove(),window.removeEventListener("click",m)}),[]);const j=(e,o)=>{if(!e)return null;const t=e,r=t.matches||t.webkitMatchesSelector||t.mozMatchesSelector||t.msMatchesSelector;if(!r)return null;let n=e;for(;n&&!r.call(n,o);)n=n.parentElement;return n},m=e=>{if(!l.current)return;j(e.target,`.${l.current.uuid}`)||f&&f()},E=()=>{if(!d||!u.current)return;const e=d.getBoundingClientRect(),o=u.current.getBoundingClientRect(),t={opacity:1,left:e.left,top:e.top+e.height},r=window.innerHeight,n=window.innerWidth;t.left+o.width>n&&(t.left=n-o.width-8,t.left<0&&(t.left=0)),t.top+o.height>r&&(t.top=r-o.height-8,t.top<0&&(t.top=0)),w(t)},b=()=>{let e=`${h.$prefixCls}-protal-box`;return a&&(e+=` ${a}`),e},v=()=>s.jsxRuntimeExports.jsxs("div",{className:b(),ref:i,children:[s.jsxRuntimeExports.jsx("div",{className:"protal-mask"}),s.jsxRuntimeExports.jsx("div",{className:`protal-content ${l.current.uuid}`,style:g,ref:u,children:R})]});return s.jsxRuntimeExports.jsx(s.jsxRuntimeExports.Fragment,{children:C.createPortal(v(),document.getElementsByTagName("body")[0])})};exports.Protal=p;exports.default=p;
|
|
2
2
|
//# sourceMappingURL=protal.js.map
|