@para-ui/core 5.0.0-beta.12 → 5.0.0-beta.14
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/AGENTS.md +315 -0
- package/AlignBox/component.json +89 -0
- package/Anchor/component.json +130 -0
- package/Argv/component.json +216 -0
- package/AutoBox/component.json +133 -0
- package/AutoButton/component.json +109 -0
- package/AutoTips/component.json +121 -0
- package/Badge/component.json +92 -0
- package/Breadcrumbs/component.json +142 -0
- package/Button/component.json +168 -0
- package/ButtonGroup/component.json +132 -0
- package/Card/component.json +162 -0
- package/Carousel/component.json +142 -0
- package/Cascader/component.json +196 -0
- package/Checkbox/component.json +138 -0
- package/CheckboxGroup/component.json +152 -0
- package/CodeEditor/component.json +189 -0
- package/Collapse/component.json +166 -0
- package/CollapseBox/component.json +84 -0
- package/CollapseLayout/component.json +155 -0
- package/ColorPicker/component.json +142 -0
- package/ComboSelect/component.json +181 -0
- package/Container/component.json +111 -0
- package/ContentBox/component.json +81 -0
- package/CopyText/component.json +118 -0
- package/CycleSelector/component.json +98 -0
- package/DatePicker/component.json +192 -0
- package/Descriptions/component.json +142 -0
- package/Desktop/component.json +171 -0
- package/DragVerify/component.json +114 -0
- package/Drawer/component.json +200 -0
- package/Dropdown/component.json +147 -0
- package/DynamicMultiBox/component.json +278 -0
- package/Empty/component.json +123 -0
- package/FieldForm/component.json +196 -0
- package/Form/component.json +161 -0
- package/FormItem/component.json +171 -0
- package/FunctionModal/component.json +197 -0
- package/Help/component.json +118 -0
- package/HelperText/component.json +126 -0
- package/Image/component.json +165 -0
- package/InputCode/component.json +191 -0
- package/InputLang/component.json +205 -0
- package/InputNumber/component.json +162 -0
- package/Label/component.json +126 -0
- package/Loading/component.json +91 -0
- package/Menu/component.json +180 -0
- package/Message/component.json +246 -0
- package/Modal/component.json +277 -0
- package/MultiBox/component.json +216 -0
- package/Notification/component.json +184 -0
- package/OperateBtn/component.json +134 -0
- package/PageHeader/component.json +112 -0
- package/Pagination/component.json +181 -0
- package/PasswordRules/component.json +105 -0
- package/PopConfirm/component.json +227 -0
- package/PopMenu/component.json +131 -0
- package/Popover/component.json +165 -0
- package/Progress/component.json +161 -0
- package/Prompt/component.json +144 -0
- package/Querying/component.json +96 -0
- package/QuickReply/component.json +129 -0
- package/Radio/component.json +136 -0
- package/RadioGroup/component.json +149 -0
- package/RangeInput/component.json +198 -0
- package/Result/component.json +104 -0
- package/ScrollBar/component.json +115 -0
- package/Search/component.json +177 -0
- package/Select/component.json +244 -0
- package/SelectInput/component.json +184 -0
- package/Selector/component.json +203 -0
- package/SelectorPicker/component.json +179 -0
- package/SingleBox/component.json +151 -0
- package/Slider/component.json +181 -0
- package/SortBox/component.json +108 -0
- package/Status/component.json +104 -0
- package/Stepper/component.json +129 -0
- package/Switch/component.json +207 -0
- package/Table/component.json +547 -0
- package/Tabs/component.json +227 -0
- package/Tag/component.json +221 -0
- package/TextEditor/component.json +186 -0
- package/TextField/component.json +290 -0
- package/TimePicker/component.json +176 -0
- package/Timeline/component.json +110 -0
- package/Title/component.json +156 -0
- package/ToggleButton/component.json +153 -0
- package/Tooltip/component.json +176 -0
- package/Transfer/component.json +157 -0
- package/Tree/component.json +512 -0
- package/Upload/component.json +450 -0
- package/ai-workflows/01-crud-list-multi-drawer.md +278 -0
- package/ai-workflows/02-rbac-operation-buttons.md +290 -0
- package/ai-workflows/03-complex-form-async-cascade.md +350 -0
- package/ai-workflows/04-array-field-form.md +281 -0
- package/ai-workflows/05-popconfirm-async-message-queue.md +333 -0
- package/ai-workflows/06-modal-drawer-form-workflow.md +385 -0
- package/ai-workflows/07-search-filter-table-trio.md +387 -0
- package/ai-workflows/08-table-advanced-features.md +365 -0
- package/ai-workflows/09-batch-operation-export-progress.md +367 -0
- package/ai-workflows/10-cross-component-state-coordination.md +412 -0
- package/codemods/modal-onCancel-to-onDismiss.js +69 -0
- package/es/AlignBox/component.json +89 -0
- package/es/AlignBox/index.css +1 -1
- package/es/AlignBox/index.d.ts +6 -2
- package/es/AlignBox/index.js +1 -1
- package/es/AlignBox/style/index.css +1 -1
- package/es/Anchor/anchorMenu/index.d.ts +2 -1
- package/es/Anchor/anchorMenu/index.js +36 -33
- package/es/Anchor/component.json +130 -0
- package/es/Anchor/index.js +50 -47
- package/es/Anchor/type.d.ts +8 -4
- package/es/Argv/component.json +216 -0
- package/es/Argv/index.d.ts +5 -6
- package/es/AutoBox/component.json +133 -0
- package/es/AutoBox/index.d.ts +3 -3
- package/es/AutoBox/index.js +1 -1
- package/es/AutoBox/protal.d.ts +2 -2
- package/es/AutoBox/protal.js +32 -29
- package/es/AutoButton/component.json +109 -0
- package/es/AutoButton/index.js +1 -1
- package/es/AutoTips/autoTipsMultiline/index.d.ts +1 -1
- package/es/AutoTips/autoTipsMultiline/index.js +1 -1
- package/es/AutoTips/component.json +121 -0
- package/es/Badge/component.json +92 -0
- package/es/Breadcrumbs/component.json +142 -0
- package/es/Breadcrumbs/index.js +1 -1
- package/es/Button/SplitButton.d.ts +2 -2
- package/es/Button/component.json +168 -0
- package/es/Button/index.js +44 -44
- package/es/ButtonGroup/component.json +132 -0
- package/es/ButtonGroup/index.d.ts +1 -1
- package/es/Card/component.json +162 -0
- package/es/Card/index.d.ts +2 -2
- package/es/Card/index.js +2 -2
- package/es/Carousel/component.json +142 -0
- package/es/Carousel/index.d.ts +1 -1
- package/es/Cascader/Cascader.js +188 -180
- package/es/Cascader/component.json +196 -0
- package/es/Cascader/hooks/useEntities.js +7 -7
- package/es/Cascader/interface.d.ts +1 -0
- package/es/Cascader/utils/commonUtil.d.ts +1 -1
- package/es/Cascader/utils/commonUtil.js +16 -16
- package/es/Cascader/utils/treeUtil.d.ts +14 -5
- package/es/Cascader/utils/treeUtil.js +1 -1
- package/es/Checkbox/component.json +138 -0
- package/es/CheckboxGroup/component.json +152 -0
- package/es/CodeEditor/component.json +189 -0
- package/es/CodeEditor/index.d.ts +10 -9
- package/es/Collapse/component.json +166 -0
- package/es/Collapse/index.d.ts +1 -1
- package/es/Collapse/index.js +41 -33
- package/es/CollapseBox/component.json +84 -0
- package/es/CollapseLayout/component.json +155 -0
- package/es/ColorPicker/component.json +142 -0
- package/es/ComboSelect/component.json +181 -0
- package/es/ComboSelect/index.js +299 -287
- package/es/ComboSelect/interface.d.ts +6 -3
- package/es/ComboSelect/utils.d.ts +3 -3
- package/es/ComboSelect/utils.js +1 -1
- package/es/Container/component.json +111 -0
- package/es/ContentBox/component.json +81 -0
- package/es/CopyText/component.json +118 -0
- package/es/CycleSelector/component.json +98 -0
- package/es/CycleSelector/index.js +14 -13
- package/es/DatePicker/component.json +192 -0
- package/es/DatePicker/generatePicker/generateRangePicker.d.ts +0 -8
- package/es/DatePicker/generatePicker/generateRangePicker.js +73 -65
- package/es/DatePicker/generatePicker/generateSinglePicker.js +1 -1
- package/es/DatePicker/generatePicker/index.d.ts +11 -4
- package/es/Descriptions/component.json +142 -0
- package/es/Descriptions/index.d.ts +1 -1
- package/es/Desktop/component.json +171 -0
- package/es/DragVerify/component.json +114 -0
- package/es/DragVerify/index.js +19 -19
- package/es/Drawer/component.json +200 -0
- package/es/Drawer/index.js +86 -86
- package/es/Drawer/interface.d.ts +1 -1
- package/es/Drawer/util.d.ts +1 -6
- package/es/Drawer/util.js +9 -6
- package/es/Dropdown/component.json +147 -0
- package/es/DynamicMultiBox/component.json +278 -0
- package/es/DynamicMultiBox/formItem.d.ts +1 -1
- package/es/DynamicMultiBox/rowForm.d.ts +2 -2
- package/es/Empty/component.json +123 -0
- package/es/Empty/index.css +1 -1
- package/es/Empty/index.d.ts +2 -2
- package/es/Empty/index.js +27 -26
- package/es/Empty/style/index.css +1 -1
- package/es/FieldForm/FieldFormItem/MemoInput.d.ts +2 -2
- package/es/FieldForm/FieldFormItem/index.d.ts +6 -6
- package/es/FieldForm/Form.d.ts +2 -2
- package/es/FieldForm/FormList.d.ts +2 -2
- package/es/FieldForm/component.json +196 -0
- package/es/FieldForm/context.d.ts +5 -1
- package/es/FieldForm/context.js +2 -2
- package/es/FieldForm/hooks/useForm.d.ts +4 -3
- package/es/FieldForm/hooks/useFormInstance.d.ts +1 -1
- package/es/FieldForm/hooks/useFormItemStatus.d.ts +9 -5
- package/es/FieldForm/hooks/useFormItemStatus.js +2 -2
- package/es/FieldForm/hooks/useItemRef.d.ts +1 -1
- package/es/FieldForm/hooks/useItemRef.js +6 -6
- package/es/Form/component.json +161 -0
- package/es/Form/index.d.ts +52 -49
- package/es/FormItem/compoments/defaultCompoments/index.d.ts +5 -5
- package/es/FormItem/compoments/defaultCompoments/index.js +12 -11
- package/es/FormItem/compoments/formCheckboxGroup/index.d.ts +2 -2
- package/es/FormItem/compoments/formFile/index.js +8 -8
- package/es/FormItem/compoments/formRadioGroup/index.d.ts +1 -1
- package/es/FormItem/compoments/formSelect/index.d.ts +1 -1
- package/es/FormItem/component.json +171 -0
- package/es/FormItem/index.d.ts +5 -5
- package/es/FormItem/index.js +23 -23
- package/es/FormItem/itemType.js +1 -1
- package/es/FunctionModal/component.json +197 -0
- package/es/FunctionModal/dialog.d.ts +1 -1
- package/es/FunctionModal/modalContext.d.ts +4 -1
- package/es/Help/component.json +118 -0
- package/es/HelperText/component.json +126 -0
- package/es/Image/component.json +165 -0
- package/es/InputCode/component.json +191 -0
- package/es/InputCode/index.d.ts +2 -2
- package/es/InputLang/component.json +205 -0
- package/es/InputLang/index.js +1 -1
- package/es/InputNumber/component.json +162 -0
- package/es/Label/component.json +126 -0
- package/es/Label/index.d.ts +2 -2
- package/es/Loading/component.json +91 -0
- package/es/Menu/component.json +180 -0
- package/es/Message/component.json +246 -0
- package/es/Message/index.d.ts +2 -2
- package/es/Message/index.js +2 -2
- package/es/Modal/Confirm/index.d.ts +1 -1
- package/es/Modal/Confirm/index.js +81 -75
- package/es/Modal/component.json +277 -0
- package/es/Modal/index.d.ts +97 -6
- package/es/Modal/index.js +174 -122
- package/es/Modal/interface.d.ts +1 -0
- package/es/MultiBox/component.json +216 -0
- package/es/MultiBox/index.js +19 -14
- package/es/Notification/component.json +184 -0
- package/es/OperateBtn/component.json +134 -0
- package/es/OperateBtn/index.d.ts +3 -3
- package/es/PageHeader/component.json +112 -0
- package/es/Pagination/component.json +181 -0
- package/es/Pagination/index.js +15 -15
- package/es/PasswordRules/component.json +105 -0
- package/es/PasswordRules/index.d.ts +4 -4
- package/es/PopConfirm/component.json +227 -0
- package/es/PopConfirm/index.d.ts +1 -1
- package/es/PopConfirm/index.js +1 -1
- package/es/PopMenu/component.json +131 -0
- package/es/PopMenu/hooks.d.ts +1 -1
- package/es/PopMenu/index.js +8 -8
- package/es/Popover/component.json +165 -0
- package/es/Popover/index.js +1 -1
- package/es/Progress/component.json +161 -0
- package/es/Prompt/component.json +144 -0
- package/es/Querying/component.json +96 -0
- package/es/Querying/index.css +1 -1
- package/es/Querying/index.d.ts +2 -2
- package/es/Querying/index.js +20 -19
- package/es/Querying/style/index.css +1 -1
- package/es/QuickReply/component.json +129 -0
- package/es/QuickReply/index.d.ts +1 -1
- package/es/Radio/component.json +136 -0
- package/es/RadioGroup/component.json +149 -0
- package/es/RangeInput/component.json +198 -0
- package/es/RangeInput/index.js +1 -1
- package/es/Result/component.json +104 -0
- package/es/ScrollBar/component.json +115 -0
- package/es/Search/component.json +177 -0
- package/es/Search/index.d.ts +1 -1
- package/es/Select/component.json +244 -0
- package/es/Select/index.js +113 -113
- package/es/SelectInput/component.json +184 -0
- package/es/Selector/component.json +203 -0
- package/es/Selector/index.js +28 -27
- package/es/Selector/interface.d.ts +1 -1
- package/es/Selector/selectorMain/index.js +2 -2
- package/es/Selector/selectorNode/index.js +1 -1
- package/es/Selector/util.d.ts +2 -2
- package/es/SelectorPicker/component.json +179 -0
- package/es/SelectorPicker/index.d.ts +5 -5
- package/es/SelectorPicker/index.js +15 -15
- package/es/SingleBox/component.json +151 -0
- package/es/SingleBox/index.d.ts +2 -2
- package/es/Slider/component.json +181 -0
- package/es/SortBox/component.json +108 -0
- package/es/Status/component.json +104 -0
- package/es/Stepper/component.json +129 -0
- package/es/Stepper/index.d.ts +2 -2
- package/es/Switch/component.json +207 -0
- package/es/Switch/index.css +1 -1
- package/es/Switch/index.d.ts +3 -2
- package/es/Switch/index.js +60 -59
- package/es/Switch/style/index.css +1 -1
- package/es/Table/component.json +547 -0
- package/es/Table/index.d.ts +2 -2
- package/es/Table/index.js +414 -414
- package/es/Table/interface.d.ts +6 -0
- package/es/Tabs/component.json +227 -0
- package/es/Tag/component.json +221 -0
- package/es/Tag/index.css +1 -1
- package/es/Tag/index.d.ts +1 -1
- package/es/Tag/index.js +20 -20
- package/es/Tag/style/index.css +1 -1
- package/es/TextEditor/component.json +186 -0
- package/es/TextEditor/index.d.ts +5 -5
- package/es/TextField/component.json +290 -0
- package/es/TextField/index.d.ts +2 -2
- package/es/TimePicker/component.json +176 -0
- package/es/Timeline/component.json +110 -0
- package/es/Title/component.json +156 -0
- package/es/ToggleButton/component.json +153 -0
- package/es/Tooltip/component.json +176 -0
- package/es/Tooltip/index.js +74 -63
- package/es/Tooltip/interface.d.ts +14 -1
- package/es/Tooltip/utils.js +6 -6
- package/es/Transfer/component.json +157 -0
- package/es/Tree/component.json +512 -0
- package/es/Upload/component.json +450 -0
- package/es/Utils/type.d.ts +0 -2
- package/es/index.d.ts +2 -0
- package/es/index.js +1 -1
- package/es/locale/en_US.d.ts +361 -0
- package/es/locale/en_US.js +364 -0
- package/es/locale/index.d.ts +1 -723
- package/es/locale/index2.js +10 -0
- package/es/locale/zh_CN.d.ts +361 -0
- package/es/locale/zh_CN.js +364 -0
- package/lib/AlignBox/component.json +89 -0
- package/lib/AlignBox/index.css +1 -1
- package/lib/AlignBox/index.d.ts +6 -2
- package/lib/AlignBox/index.js +1 -1
- package/lib/AlignBox/style/index.css +1 -1
- package/lib/Anchor/anchorMenu/index.d.ts +2 -1
- package/lib/Anchor/anchorMenu/index.js +1 -1
- package/lib/Anchor/component.json +130 -0
- package/lib/Anchor/index.js +1 -1
- package/lib/Anchor/type.d.ts +8 -4
- package/lib/Argv/component.json +216 -0
- package/lib/Argv/index.d.ts +5 -6
- package/lib/AutoBox/component.json +133 -0
- package/lib/AutoBox/index.d.ts +3 -3
- package/lib/AutoBox/index.js +1 -1
- package/lib/AutoBox/protal.d.ts +2 -2
- package/lib/AutoBox/protal.js +1 -1
- package/lib/AutoButton/component.json +109 -0
- package/lib/AutoButton/index.js +1 -1
- package/lib/AutoTips/autoTipsMultiline/index.d.ts +1 -1
- package/lib/AutoTips/autoTipsMultiline/index.js +1 -1
- package/lib/AutoTips/component.json +121 -0
- package/lib/Badge/component.json +92 -0
- package/lib/Breadcrumbs/component.json +142 -0
- package/lib/Breadcrumbs/index.js +1 -1
- package/lib/Button/SplitButton.d.ts +2 -2
- package/lib/Button/component.json +168 -0
- package/lib/Button/index.js +1 -1
- package/lib/ButtonGroup/component.json +132 -0
- package/lib/ButtonGroup/index.d.ts +1 -1
- package/lib/Card/component.json +162 -0
- package/lib/Card/index.d.ts +2 -2
- package/lib/Card/index.js +1 -1
- package/lib/Carousel/component.json +142 -0
- package/lib/Carousel/index.d.ts +1 -1
- package/lib/Cascader/Cascader.js +1 -1
- package/lib/Cascader/component.json +196 -0
- package/lib/Cascader/hooks/useEntities.js +1 -1
- package/lib/Cascader/interface.d.ts +1 -0
- package/lib/Cascader/utils/commonUtil.d.ts +1 -1
- package/lib/Cascader/utils/commonUtil.js +1 -1
- package/lib/Cascader/utils/treeUtil.d.ts +14 -5
- package/lib/Cascader/utils/treeUtil.js +1 -1
- package/lib/Checkbox/component.json +138 -0
- package/lib/CheckboxGroup/component.json +152 -0
- package/lib/CodeEditor/component.json +189 -0
- package/lib/CodeEditor/index.d.ts +10 -9
- package/lib/Collapse/component.json +166 -0
- package/lib/Collapse/index.d.ts +1 -1
- package/lib/Collapse/index.js +1 -1
- package/lib/CollapseBox/component.json +84 -0
- package/lib/CollapseLayout/component.json +155 -0
- package/lib/ColorPicker/component.json +142 -0
- package/lib/ComboSelect/component.json +181 -0
- package/lib/ComboSelect/index.js +1 -1
- package/lib/ComboSelect/interface.d.ts +6 -3
- package/lib/ComboSelect/utils.d.ts +3 -3
- package/lib/ComboSelect/utils.js +1 -1
- package/lib/Container/component.json +111 -0
- package/lib/ContentBox/component.json +81 -0
- package/lib/CopyText/component.json +118 -0
- package/lib/CycleSelector/component.json +98 -0
- package/lib/CycleSelector/index.js +1 -1
- package/lib/DatePicker/component.json +192 -0
- package/lib/DatePicker/generatePicker/generateRangePicker.d.ts +0 -8
- package/lib/DatePicker/generatePicker/generateRangePicker.js +1 -1
- package/lib/DatePicker/generatePicker/generateSinglePicker.js +1 -1
- package/lib/DatePicker/generatePicker/index.d.ts +11 -4
- package/lib/Descriptions/component.json +142 -0
- package/lib/Descriptions/index.d.ts +1 -1
- package/lib/Desktop/component.json +171 -0
- package/lib/DragVerify/component.json +114 -0
- package/lib/DragVerify/index.js +1 -1
- package/lib/Drawer/component.json +200 -0
- package/lib/Drawer/index.js +1 -1
- package/lib/Drawer/interface.d.ts +1 -1
- package/lib/Drawer/util.d.ts +1 -6
- package/lib/Drawer/util.js +1 -1
- package/lib/Dropdown/component.json +147 -0
- package/lib/DynamicMultiBox/component.json +278 -0
- package/lib/DynamicMultiBox/formItem.d.ts +1 -1
- package/lib/DynamicMultiBox/rowForm.d.ts +2 -2
- package/lib/Empty/component.json +123 -0
- package/lib/Empty/index.css +1 -1
- package/lib/Empty/index.d.ts +2 -2
- package/lib/Empty/index.js +1 -1
- package/lib/Empty/style/index.css +1 -1
- package/lib/FieldForm/FieldFormItem/MemoInput.d.ts +2 -2
- package/lib/FieldForm/FieldFormItem/index.d.ts +6 -6
- package/lib/FieldForm/Form.d.ts +2 -2
- package/lib/FieldForm/FormList.d.ts +2 -2
- package/lib/FieldForm/component.json +196 -0
- package/lib/FieldForm/context.d.ts +5 -1
- package/lib/FieldForm/context.js +1 -1
- package/lib/FieldForm/hooks/useForm.d.ts +4 -3
- package/lib/FieldForm/hooks/useFormInstance.d.ts +1 -1
- package/lib/FieldForm/hooks/useFormItemStatus.d.ts +9 -5
- package/lib/FieldForm/hooks/useFormItemStatus.js +1 -1
- package/lib/FieldForm/hooks/useItemRef.d.ts +1 -1
- package/lib/FieldForm/hooks/useItemRef.js +1 -1
- package/lib/Form/component.json +161 -0
- package/lib/Form/index.d.ts +52 -49
- package/lib/FormItem/compoments/defaultCompoments/index.d.ts +5 -5
- package/lib/FormItem/compoments/defaultCompoments/index.js +1 -1
- package/lib/FormItem/compoments/formCheckboxGroup/index.d.ts +2 -2
- package/lib/FormItem/compoments/formFile/index.js +1 -1
- package/lib/FormItem/compoments/formRadioGroup/index.d.ts +1 -1
- package/lib/FormItem/compoments/formSelect/index.d.ts +1 -1
- package/lib/FormItem/component.json +171 -0
- package/lib/FormItem/index.d.ts +5 -5
- package/lib/FormItem/index.js +1 -1
- package/lib/FormItem/itemType.js +1 -1
- package/lib/FunctionModal/component.json +197 -0
- package/lib/FunctionModal/dialog.d.ts +1 -1
- package/lib/FunctionModal/modalContext.d.ts +4 -1
- package/lib/Help/component.json +118 -0
- package/lib/HelperText/component.json +126 -0
- package/lib/Image/component.json +165 -0
- package/lib/InputCode/component.json +191 -0
- package/lib/InputCode/index.d.ts +2 -2
- package/lib/InputLang/component.json +205 -0
- package/lib/InputLang/index.js +1 -1
- package/lib/InputNumber/component.json +162 -0
- package/lib/Label/component.json +126 -0
- package/lib/Label/index.d.ts +2 -2
- package/lib/Loading/component.json +91 -0
- package/lib/Menu/component.json +180 -0
- package/lib/Message/component.json +246 -0
- package/lib/Message/index.d.ts +2 -2
- package/lib/Message/index.js +1 -1
- package/lib/Modal/Confirm/index.d.ts +1 -1
- package/lib/Modal/Confirm/index.js +1 -1
- package/lib/Modal/component.json +277 -0
- package/lib/Modal/index.d.ts +97 -6
- package/lib/Modal/index.js +1 -1
- package/lib/Modal/interface.d.ts +1 -0
- package/lib/MultiBox/component.json +216 -0
- package/lib/MultiBox/index.js +1 -1
- package/lib/Notification/component.json +184 -0
- package/lib/OperateBtn/component.json +134 -0
- package/lib/OperateBtn/index.d.ts +3 -3
- package/lib/PageHeader/component.json +112 -0
- package/lib/Pagination/component.json +181 -0
- package/lib/Pagination/index.js +1 -1
- package/lib/PasswordRules/component.json +105 -0
- package/lib/PasswordRules/index.d.ts +4 -4
- package/lib/PopConfirm/component.json +227 -0
- package/lib/PopConfirm/index.d.ts +1 -1
- package/lib/PopConfirm/index.js +1 -1
- package/lib/PopMenu/component.json +131 -0
- package/lib/PopMenu/hooks.d.ts +1 -1
- package/lib/PopMenu/index.js +1 -1
- package/lib/Popover/component.json +165 -0
- package/lib/Popover/index.js +1 -1
- package/lib/Progress/component.json +161 -0
- package/lib/Prompt/component.json +144 -0
- package/lib/Querying/component.json +96 -0
- package/lib/Querying/index.css +1 -1
- package/lib/Querying/index.d.ts +2 -2
- package/lib/Querying/index.js +1 -1
- package/lib/Querying/style/index.css +1 -1
- package/lib/QuickReply/component.json +129 -0
- package/lib/QuickReply/index.d.ts +1 -1
- package/lib/Radio/component.json +136 -0
- package/lib/RadioGroup/component.json +149 -0
- package/lib/RangeInput/component.json +198 -0
- package/lib/RangeInput/index.js +1 -1
- package/lib/Result/component.json +104 -0
- package/lib/ScrollBar/component.json +115 -0
- package/lib/Search/component.json +177 -0
- package/lib/Search/index.d.ts +1 -1
- package/lib/Select/component.json +244 -0
- package/lib/Select/index.js +1 -1
- package/lib/SelectInput/component.json +184 -0
- package/lib/Selector/component.json +203 -0
- package/lib/Selector/index.js +1 -1
- package/lib/Selector/interface.d.ts +1 -1
- package/lib/Selector/selectorMain/index.js +1 -1
- package/lib/Selector/selectorNode/index.js +1 -1
- package/lib/Selector/util.d.ts +2 -2
- package/lib/SelectorPicker/component.json +179 -0
- package/lib/SelectorPicker/index.d.ts +5 -5
- package/lib/SelectorPicker/index.js +1 -1
- package/lib/SingleBox/component.json +151 -0
- package/lib/SingleBox/index.d.ts +2 -2
- package/lib/Slider/component.json +181 -0
- package/lib/SortBox/component.json +108 -0
- package/lib/Status/component.json +104 -0
- package/lib/Stepper/component.json +129 -0
- package/lib/Stepper/index.d.ts +2 -2
- package/lib/Switch/component.json +207 -0
- package/lib/Switch/index.css +1 -1
- package/lib/Switch/index.d.ts +3 -2
- package/lib/Switch/index.js +1 -1
- package/lib/Switch/style/index.css +1 -1
- package/lib/Table/component.json +547 -0
- package/lib/Table/index.d.ts +2 -2
- package/lib/Table/index.js +1 -1
- package/lib/Table/interface.d.ts +6 -0
- package/lib/Tabs/component.json +227 -0
- package/lib/Tag/component.json +221 -0
- package/lib/Tag/index.css +1 -1
- package/lib/Tag/index.d.ts +1 -1
- package/lib/Tag/index.js +1 -1
- package/lib/Tag/style/index.css +1 -1
- package/lib/TextEditor/component.json +186 -0
- package/lib/TextEditor/index.d.ts +5 -5
- package/lib/TextField/component.json +290 -0
- package/lib/TextField/index.d.ts +2 -2
- package/lib/TimePicker/component.json +176 -0
- package/lib/Timeline/component.json +110 -0
- package/lib/Title/component.json +156 -0
- package/lib/ToggleButton/component.json +153 -0
- package/lib/Tooltip/component.json +176 -0
- package/lib/Tooltip/index.js +1 -1
- package/lib/Tooltip/interface.d.ts +14 -1
- package/lib/Tooltip/utils.js +1 -1
- package/lib/Transfer/component.json +157 -0
- package/lib/Tree/component.json +512 -0
- package/lib/Upload/component.json +450 -0
- package/lib/Utils/type.d.ts +0 -2
- package/lib/index.d.ts +2 -0
- package/lib/index.js +1 -1
- package/lib/locale/en_US.d.ts +361 -0
- package/lib/locale/en_US.js +2 -0
- package/lib/locale/index.d.ts +1 -723
- package/lib/locale/index2.js +2 -0
- package/lib/locale/zh_CN.d.ts +361 -0
- package/lib/locale/zh_CN.js +2 -0
- package/package.json +10 -3
- /package/es/{Utils/Hooks → Hooks}/useResizeObserver.d.ts +0 -0
- /package/es/{Utils/Hooks → Hooks}/useResizeObserver.js +0 -0
- /package/lib/{Utils/Hooks → Hooks}/useResizeObserver.d.ts +0 -0
- /package/lib/{Utils/Hooks → Hooks}/useResizeObserver.js +0 -0
package/es/Modal/index.js
CHANGED
|
@@ -1,70 +1,122 @@
|
|
|
1
1
|
import { j as t } from "../_virtual/jsx-runtime.js";
|
|
2
|
-
import
|
|
3
|
-
import
|
|
4
|
-
import { Button as
|
|
5
|
-
import { Close as
|
|
6
|
-
import
|
|
7
|
-
import
|
|
8
|
-
import { Confirm as
|
|
9
|
-
import
|
|
10
|
-
import { $prefixCls as
|
|
11
|
-
import
|
|
2
|
+
import n from "react";
|
|
3
|
+
import _e from "rc-dialog";
|
|
4
|
+
import { Button as k } from "../Button/index.js";
|
|
5
|
+
import { Close as ze } from "../node_modules/@para-ui/icons/Close/index.js";
|
|
6
|
+
import Fe from "../GlobalContext/useFormatMessage.js";
|
|
7
|
+
import Te from "./lang/index.js";
|
|
8
|
+
import { Confirm as to } from "./Confirm/index.js";
|
|
9
|
+
import P from "clsx";
|
|
10
|
+
import { $prefixCls as W } from "../GlobalContext/constant.js";
|
|
11
|
+
import Ie from "../AutoTips/index.js";
|
|
12
12
|
import './index.css';/* empty css */
|
|
13
|
-
let
|
|
14
|
-
const
|
|
15
|
-
|
|
16
|
-
x:
|
|
17
|
-
y:
|
|
13
|
+
let h;
|
|
14
|
+
const Ke = (e) => {
|
|
15
|
+
h = {
|
|
16
|
+
x: e.pageX,
|
|
17
|
+
y: e.pageY
|
|
18
18
|
}, setTimeout(() => {
|
|
19
|
-
|
|
19
|
+
h = null;
|
|
20
20
|
}, 100);
|
|
21
21
|
};
|
|
22
|
-
window.document.documentElement && document.documentElement.addEventListener("click",
|
|
23
|
-
const
|
|
22
|
+
window.document.documentElement && document.documentElement.addEventListener("click", Ke, !0);
|
|
23
|
+
const oo = (e) => {
|
|
24
24
|
const {
|
|
25
|
-
open:
|
|
26
|
-
visible:
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
},
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
25
|
+
open: f,
|
|
26
|
+
visible: m,
|
|
27
|
+
defaultOpen: v,
|
|
28
|
+
closeIcon: X,
|
|
29
|
+
centered: L = !0,
|
|
30
|
+
focusTriggerAfterClose: J = !0,
|
|
31
|
+
title: Q,
|
|
32
|
+
footer: U,
|
|
33
|
+
showActions: Y = !0,
|
|
34
|
+
actions: q,
|
|
35
|
+
header: E,
|
|
36
|
+
hideHeader: Z = !1,
|
|
37
|
+
showCancel: ee = !0,
|
|
38
|
+
maskClosable: oe = !1,
|
|
39
|
+
disableBackdropClick: ne = !0,
|
|
40
|
+
closeOnBackdrop: p,
|
|
41
|
+
keyboard: se = !1,
|
|
42
|
+
disableEscapeKeyDown: te = !0,
|
|
43
|
+
closeOnEsc: x,
|
|
44
|
+
restoreFocusOnClose: g,
|
|
45
|
+
fullScreen: le,
|
|
46
|
+
customizeSize: ae,
|
|
47
|
+
style: re,
|
|
48
|
+
bodyStyle: ce,
|
|
49
|
+
contentWidth: ie,
|
|
50
|
+
contentHeight: N,
|
|
51
|
+
contentStyle: b,
|
|
52
|
+
size: a = "md",
|
|
53
|
+
children: de,
|
|
54
|
+
closable: ue = !0,
|
|
55
|
+
mask: w = !0,
|
|
56
|
+
...fe
|
|
57
|
+
} = e, O = Fe("Modal", Te), i = e.onClose !== void 0, S = n.useRef(!1);
|
|
58
|
+
n.useEffect(() => {
|
|
59
|
+
process.env.NODE_ENV !== "production" && i && !S.current && (S.current = !0, console.warn(
|
|
60
|
+
"[Modal] onClose 已在 v5.x.next 标记为 @deprecated,将在 v6.0 移除。请迁移到 onDismiss(处理 X/ESC/mask 关闭)+ onOk(确定按钮)+ onCancel(取消按钮)三回调模式。详见 BREAKING-CHANGES §B-Modal-props-rework。"
|
|
61
|
+
));
|
|
62
|
+
}, [i]);
|
|
63
|
+
const B = m !== void 0, D = n.useRef(!1);
|
|
64
|
+
n.useEffect(() => {
|
|
65
|
+
process.env.NODE_ENV !== "production" && B && !D.current && (D.current = !0, console.warn(
|
|
66
|
+
"[Modal] visible 已在 v5.x.next 标记为 @deprecated,将在 v6.0 移除。请改用 open prop。详见 BREAKING-CHANGES §B-Modal-props-rework 子条 #3-A"
|
|
67
|
+
));
|
|
68
|
+
}, [B]);
|
|
69
|
+
const A = e.onOk !== void 0, M = e.onSubmit !== void 0, y = n.useRef(!1);
|
|
70
|
+
n.useEffect(() => {
|
|
71
|
+
process.env.NODE_ENV !== "production" && A && !M && !y.current && (y.current = !0, console.warn(
|
|
72
|
+
"[Modal] onOk 已在 v5.x.next 标记为 @deprecated,将在 v6.0 移除。请改用 onSubmit prop(语义更清晰)。详见 BREAKING-CHANGES §B-Modal-props-rework"
|
|
73
|
+
));
|
|
74
|
+
}, [A, M]);
|
|
75
|
+
const R = e.onCancel !== void 0, $ = e.onDismiss !== void 0, j = n.useRef(!1);
|
|
76
|
+
n.useEffect(() => {
|
|
77
|
+
if (process.env.NODE_ENV !== "production" && R && !$ && !i && !j.current)
|
|
78
|
+
throw j.current = !0, new Error(
|
|
79
|
+
"[Modal] v5.0.0-beta.14 起 X / ESC / 蒙层关闭路径主职责已交给 onDismiss(γ 互斥语义)。当前仅传 onCancel 而未传 onDismiss/onClose,prod 走 fallback 兼容,dev 抛 Error 强制迁移。一键迁移:`npx jscodeshift -t node_modules/@para-ui/core/codemods/modal-onCancel-to-onDismiss.js --parser=tsx src/`。v6.0(2026 Q3)起 fallback 删除,届时 X/ESC/mask 静默失效。详见 docs/UPGRADE_v4_to_v5.md §3.D.0 + BREAKING-CHANGES §B-Modal-props-rework 子条 #5。"
|
|
80
|
+
);
|
|
81
|
+
}, [R, $, i]);
|
|
82
|
+
const H = e.maskClosable !== void 0, G = e.disableBackdropClick !== void 0, _ = e.disableEscapeKeyDown !== void 0, z = e.focusTriggerAfterClose !== void 0, F = n.useRef(!1);
|
|
83
|
+
n.useEffect(() => {
|
|
84
|
+
if (process.env.NODE_ENV === "production" || F.current) return;
|
|
85
|
+
const o = [];
|
|
86
|
+
H && o.push("maskClosable → closeOnBackdrop"), G && o.push("disableBackdropClick → closeOnBackdrop"), _ && o.push("disableEscapeKeyDown → closeOnEsc"), z && o.push("focusTriggerAfterClose → restoreFocusOnClose"), o.length !== 0 && (F.current = !0, console.warn(
|
|
87
|
+
`[Modal] 检测到 v5.x.next 已 @deprecated 的反向命名 prop:${o.join("、")}。v5.x 仍 fallback 兼容,v6.0 移除。请按箭头右侧迁移到正向命名(对齐业界 antd/chakra/mui)。详见 BREAKING-CHANGES §B-Modal-props-rework + §B6。`
|
|
88
|
+
));
|
|
89
|
+
}, [H, G, _, z]);
|
|
90
|
+
const l = f !== void 0 || m !== void 0, [me, d] = n.useState(v ?? !1), Ce = l ? f ?? m ?? !1 : me, T = v !== void 0, I = f !== void 0;
|
|
91
|
+
n.useEffect(() => {
|
|
92
|
+
process.env.NODE_ENV !== "production" && I && T && console.warn(
|
|
93
|
+
"[Modal] 同时传 open + defaultOpen,defaultOpen 被忽略(open 优先,受控模式)。详见 BREAKING-CHANGES §B-Modal-props-rework 子条 #2"
|
|
94
|
+
);
|
|
95
|
+
}, [I, T]);
|
|
96
|
+
const K = n.useRef(l);
|
|
97
|
+
n.useEffect(() => {
|
|
98
|
+
K.current !== l && (process.env.NODE_ENV !== "production" && console.warn("[Modal] open 受控/非受控状态运行时切换,React 不支持此模式,请保持一致。"), K.current = l);
|
|
99
|
+
}, [l]);
|
|
100
|
+
const ke = le || a === "fullScreen", s = `${W}-modal`, he = x !== void 0 ? x : !te, ve = p !== void 0 ? p : !ne, Ee = g !== void 0 ? g : J, pe = (o) => {
|
|
101
|
+
e.onCancel?.(o), e.onClose?.("cancel"), l || d(!1);
|
|
102
|
+
}, xe = (o) => {
|
|
103
|
+
e.onClose !== void 0 ? (e.onCancel?.(o), e.onClose("x")) : e.onDismiss !== void 0 ? e.onDismiss("x") : e.onCancel?.(o), l || d(!1);
|
|
104
|
+
}, ge = (o) => {
|
|
105
|
+
const r = o && o.type === "keydown" ? "esc" : "mask";
|
|
106
|
+
e.onClose !== void 0 ? (e.onCancel?.(o), e.onClose(r)) : e.onDismiss !== void 0 ? e.onDismiss(r) : e.onCancel?.(o), l || d(!1);
|
|
107
|
+
}, Ne = (o) => {
|
|
108
|
+
e.onSubmit ? e.onSubmit(o) : e.onOk?.(o), e.onClose?.("ok"), l || d(!1);
|
|
109
|
+
}, be = () => {
|
|
110
|
+
const o = {
|
|
111
|
+
sm: `${s}-sm`,
|
|
112
|
+
md: `${s}-md`,
|
|
113
|
+
lg: `${s}-lg`,
|
|
114
|
+
auto: `${s}-auto`,
|
|
115
|
+
fullScreen: `${s}-fullscreen`
|
|
64
116
|
};
|
|
65
|
-
if (!
|
|
66
|
-
return
|
|
67
|
-
},
|
|
117
|
+
if (!b)
|
|
118
|
+
return ke ? o.fullScreen : o[a];
|
|
119
|
+
}, we = () => !a || a === "fullScreen" || a === "auto" ? void 0 : {
|
|
68
120
|
sm: {
|
|
69
121
|
width: 430,
|
|
70
122
|
maxHeight: 118
|
|
@@ -77,94 +129,94 @@ const we = (o) => {
|
|
|
77
129
|
width: 948,
|
|
78
130
|
maxHeight: 478
|
|
79
131
|
}
|
|
80
|
-
}[
|
|
81
|
-
const { maxHeight:
|
|
132
|
+
}[a], Oe = () => w ? `${s}-with-mask` : `${s}-without-mask`, Se = () => ({ ...ae, ...re }), Be = () => {
|
|
133
|
+
const { maxHeight: o, width: r } = we() || {};
|
|
82
134
|
return {
|
|
83
135
|
// contentWidth 和 contentHeight 优先级总是最高
|
|
84
|
-
maxHeight:
|
|
85
|
-
width:
|
|
86
|
-
height:
|
|
136
|
+
maxHeight: N || o || "calc(100vh - 142px)",
|
|
137
|
+
width: ie || r,
|
|
138
|
+
height: N,
|
|
87
139
|
// minHeight: contentHeight || 118,
|
|
88
|
-
...
|
|
89
|
-
...
|
|
140
|
+
...ce,
|
|
141
|
+
...b
|
|
90
142
|
};
|
|
91
|
-
},
|
|
92
|
-
if (
|
|
93
|
-
if (
|
|
94
|
-
const
|
|
95
|
-
|
|
143
|
+
}, De = () => {
|
|
144
|
+
if (Z) return null;
|
|
145
|
+
if (E) return E;
|
|
146
|
+
const o = ue && /* @__PURE__ */ t.jsx(
|
|
147
|
+
k.IconButton,
|
|
96
148
|
{
|
|
97
|
-
onClick:
|
|
98
|
-
className: `${
|
|
149
|
+
onClick: xe,
|
|
150
|
+
className: `${s}-close`,
|
|
99
151
|
variant: "outlined",
|
|
100
152
|
size: "small",
|
|
101
|
-
children:
|
|
153
|
+
children: X || /* @__PURE__ */ t.jsx(ze, { className: `${s}-close-icon` })
|
|
102
154
|
}
|
|
103
155
|
);
|
|
104
156
|
return /* @__PURE__ */ t.jsxs(t.Fragment, { children: [
|
|
105
|
-
/* @__PURE__ */ t.jsx(
|
|
106
|
-
|
|
157
|
+
/* @__PURE__ */ t.jsx(Ie, { className: `${s}-title-text`, children: Q }),
|
|
158
|
+
o
|
|
107
159
|
] });
|
|
108
|
-
},
|
|
109
|
-
if (!
|
|
110
|
-
const { okText:
|
|
111
|
-
|
|
160
|
+
}, Ae = () => {
|
|
161
|
+
if (!Y) return null;
|
|
162
|
+
const { okText: o, cancelText: r, okButtonProps: Re, cancelButtonProps: $e, confirmLoading: je = !1 } = e, He = /* @__PURE__ */ t.jsx(
|
|
163
|
+
k,
|
|
112
164
|
{
|
|
113
165
|
variant: "contained",
|
|
114
166
|
size: "large",
|
|
115
|
-
loading:
|
|
116
|
-
onClick:
|
|
117
|
-
...
|
|
118
|
-
children:
|
|
167
|
+
loading: je,
|
|
168
|
+
onClick: Ne,
|
|
169
|
+
...Re,
|
|
170
|
+
children: o ?? O({ id: "ok" })
|
|
119
171
|
}
|
|
120
|
-
),
|
|
121
|
-
|
|
172
|
+
), V = [ee && /* @__PURE__ */ t.jsx(
|
|
173
|
+
k,
|
|
122
174
|
{
|
|
123
175
|
variant: "outlined",
|
|
124
176
|
size: "large",
|
|
125
|
-
onClick:
|
|
126
|
-
|
|
127
|
-
children:
|
|
177
|
+
onClick: pe,
|
|
178
|
+
...$e,
|
|
179
|
+
children: r ?? O({ id: "cancel" })
|
|
128
180
|
}
|
|
129
|
-
),
|
|
130
|
-
if (typeof
|
|
131
|
-
const
|
|
132
|
-
return /* @__PURE__ */ t.jsx(t.Fragment, { children: Array.isArray(
|
|
133
|
-
} else if (
|
|
134
|
-
return
|
|
135
|
-
return /* @__PURE__ */ t.jsx(t.Fragment, { children:
|
|
136
|
-
},
|
|
137
|
-
[`${
|
|
138
|
-
}),
|
|
181
|
+
), He], u = q ?? U;
|
|
182
|
+
if (typeof u == "function") {
|
|
183
|
+
const c = u(V);
|
|
184
|
+
return /* @__PURE__ */ t.jsx(t.Fragment, { children: Array.isArray(c) ? c.map((C, Ge) => /* @__PURE__ */ t.jsx(n.Fragment, { children: C }, Ge)) : c });
|
|
185
|
+
} else if (u)
|
|
186
|
+
return u;
|
|
187
|
+
return /* @__PURE__ */ t.jsx(t.Fragment, { children: V.map((c, C) => /* @__PURE__ */ t.jsx(n.Fragment, { children: c }, C)) });
|
|
188
|
+
}, Me = P(e.wrapClassName, {
|
|
189
|
+
[`${s}-centered`]: L
|
|
190
|
+
}), ye = P(e.className, `${W}-scrollbar-small`, be(), Oe());
|
|
139
191
|
return /* @__PURE__ */ t.jsx(
|
|
140
|
-
|
|
192
|
+
_e,
|
|
141
193
|
{
|
|
142
|
-
...
|
|
143
|
-
mask:
|
|
144
|
-
visible:
|
|
145
|
-
title:
|
|
146
|
-
footer:
|
|
147
|
-
style:
|
|
148
|
-
bodyStyle:
|
|
149
|
-
prefixCls:
|
|
150
|
-
className:
|
|
151
|
-
wrapClassName:
|
|
152
|
-
mousePosition:
|
|
153
|
-
onClose:
|
|
194
|
+
...fe,
|
|
195
|
+
mask: w,
|
|
196
|
+
visible: Ce,
|
|
197
|
+
title: De(),
|
|
198
|
+
footer: Ae(),
|
|
199
|
+
style: Se(),
|
|
200
|
+
bodyStyle: Be(),
|
|
201
|
+
prefixCls: s,
|
|
202
|
+
className: ye,
|
|
203
|
+
wrapClassName: Me,
|
|
204
|
+
mousePosition: h,
|
|
205
|
+
onClose: ge,
|
|
154
206
|
closable: !1,
|
|
155
207
|
closeIcon: null,
|
|
156
|
-
maskClosable:
|
|
157
|
-
keyboard:
|
|
158
|
-
focusTriggerAfterClose:
|
|
159
|
-
transitionName: `${
|
|
160
|
-
maskTransitionName: `${
|
|
161
|
-
children:
|
|
208
|
+
maskClosable: ve || oe,
|
|
209
|
+
keyboard: he || se,
|
|
210
|
+
focusTriggerAfterClose: Ee,
|
|
211
|
+
transitionName: `${s}-zoom`,
|
|
212
|
+
maskTransitionName: `${s}-fade`,
|
|
213
|
+
children: de
|
|
162
214
|
}
|
|
163
215
|
);
|
|
164
216
|
};
|
|
165
217
|
export {
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
218
|
+
to as Confirm,
|
|
219
|
+
oo as Modal,
|
|
220
|
+
oo as default
|
|
169
221
|
};
|
|
170
222
|
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export type ModalDismissReason = 'esc' | 'mask' | 'x';
|
|
@@ -0,0 +1,216 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "MultiBox",
|
|
3
|
+
"category": "Data Entry",
|
|
4
|
+
"description": "键值对列表输入组件(支持增删行、补全、行级禁用)。内部用 Record<string,string>[] 作为受控值类型,默认字段名为 label/value,可通过 replaceFields 改成业务字段名",
|
|
5
|
+
"semantic": {
|
|
6
|
+
"intent": [
|
|
7
|
+
"键值录入",
|
|
8
|
+
"参数配置",
|
|
9
|
+
"可增删行的键值对编辑"
|
|
10
|
+
],
|
|
11
|
+
"useCases": [
|
|
12
|
+
"HTTP Headers 编辑器",
|
|
13
|
+
"环境变量 / 配置项",
|
|
14
|
+
"URL Query 参数",
|
|
15
|
+
"Dictionary / Map 类型业务数据录入"
|
|
16
|
+
],
|
|
17
|
+
"riskLevel": "normal"
|
|
18
|
+
},
|
|
19
|
+
"protocolSummary": "**核心:value 类型是 Record<string, string>[],默认字段名 label / value**。业务类型(如 `{key, value}[]` 或 `{name, val}[]`)通过 replaceFields 映射进来。**replaceFields 是 partial override**(L115 实证),只写 `{key: 'k'}` 会保留默认的 `value: 'value'` 映射。onChange 回调返回的字段名跟随 replaceFields(双向联动)",
|
|
20
|
+
"typeCastingGuide": {
|
|
21
|
+
"issue": "R23 通过率 2/5 fail 根因:业务类型如 `{key: string; value: string}[]` 想透传给 MultiBox.value(类型为 `Record<string,string>[]`),sub-agent 写 `value as Record<string,string>[]` —— **TS 5.x nominal 类型严格,即使结构兼容也拒绝直接 as cast** (TS2352 'may be a mistake because neither type sufficiently overlaps')",
|
|
22
|
+
"wrongPattern": "// ❌ 错误:TS 5.x 拒绝\nconst value = headers as Record<string, string>[];\nconst handleChange = (val: Record<string, string>[]) => setHeaders(val as HeaderPair[]);",
|
|
23
|
+
"correctPatternA": "**推荐:不要 cast,直接用 Record<string, string>[] 业务类型**\n```ts\ninterface HttpEditor {\n headers: Record<string, string>[]; // 业务类型直接用 MultiBox 期望类型\n onHeadersChange: (next: Record<string, string>[]) => void;\n}\n<MultiBox value={headers} onChange={onHeadersChange} replaceFields={{ key: 'key', value: 'value' }} />\n```\n业务接口字段名是 `key`/`value` 时,Record<string,string>[] 本来就能容纳,无需自定义业务类型",
|
|
24
|
+
"correctPatternB": "**如必须保留自定义业务类型 + 双向 cast:用 unknown 中转**\n```ts\ninterface HeaderPair { key: string; value: string; }\nconst handleChange = (val: Record<string, string>[]) => {\n onHeadersChange(val as unknown as HeaderPair[]);\n};\n<MultiBox\n value={headers as unknown as Record<string, string>[]}\n onChange={handleChange}\n replaceFields={{ key: 'key', value: 'value' }}\n/>\n```\n**注意 unknown 中转是逃避 TS 严格 cast 校验,业务有责任保证字段名真的兼容**",
|
|
25
|
+
"correctPatternC": "**改 replaceFields 适配业务字段名**(最干净):\n```ts\n// 业务数据是 {name, val}[],不是 {key, value}[]\nconst data: {name: string; val: string}[] = [...];\n<MultiBox\n value={data as unknown as Record<string, string>[]}\n onChange={(v) => setData(v as unknown as {name:string;val:string}[])}\n replaceFields={{ key: 'name', value: 'val' }} // ← 让 src 按 'name'/'val' 解析\n/>\n```"
|
|
26
|
+
},
|
|
27
|
+
"replaceFieldsBehavior": {
|
|
28
|
+
"default": "{ key: 'label', value: 'value' }",
|
|
29
|
+
"mergeSemantics": "**partial override(浅合并)**:src 内部 `{ ...defaultReplaceFields, ...userReplaceFields }`。只写一个字段会保留另一个默认。例如 `replaceFields={{ key: 'name' }}` 等价于 `{ key: 'name', value: 'value' }`",
|
|
30
|
+
"outputBinding": "onChange 回调返回的 val 数组中每项字段名**跟随 replaceFields 设置**(双向联动)。即:`replaceFields={{ key: 'name' }}` 时 onChange 收到的 val 是 `{ name: string; value: string }[]` 形态",
|
|
31
|
+
"warning": "改 replaceFields 后必须同步改 value/defaultValue 元素的字段名,单改一侧(只改 replaceFields 没改 value 数据)会导致 src 找不到字段,显示空内容"
|
|
32
|
+
},
|
|
33
|
+
"variants": {
|
|
34
|
+
"default": {
|
|
35
|
+
"meaning": "默认样式"
|
|
36
|
+
}
|
|
37
|
+
},
|
|
38
|
+
"states": [
|
|
39
|
+
"default",
|
|
40
|
+
"disabled",
|
|
41
|
+
"error"
|
|
42
|
+
],
|
|
43
|
+
"idealProps": {
|
|
44
|
+
"size": {
|
|
45
|
+
"type": "enum",
|
|
46
|
+
"values": [
|
|
47
|
+
"small",
|
|
48
|
+
"medium",
|
|
49
|
+
"large"
|
|
50
|
+
],
|
|
51
|
+
"default": "large",
|
|
52
|
+
"description": "控件大小(影响 TextField 行高 + padding,具体像素由 SCSS 变量决定)"
|
|
53
|
+
},
|
|
54
|
+
"label": {
|
|
55
|
+
"type": "ReactNode",
|
|
56
|
+
"description": "标题"
|
|
57
|
+
},
|
|
58
|
+
"labelTooltip": {
|
|
59
|
+
"type": "LabelTooltipProps",
|
|
60
|
+
"description": "标题旁帮助提示"
|
|
61
|
+
},
|
|
62
|
+
"labelSign": {
|
|
63
|
+
"type": "ReactNode",
|
|
64
|
+
"description": "标题旁次级提示(短文本/标签)"
|
|
65
|
+
},
|
|
66
|
+
"placeholderKey": {
|
|
67
|
+
"type": "ReactNode",
|
|
68
|
+
"description": "键侧提示语"
|
|
69
|
+
},
|
|
70
|
+
"placeholderValue": {
|
|
71
|
+
"type": "ReactNode",
|
|
72
|
+
"description": "值侧提示语"
|
|
73
|
+
},
|
|
74
|
+
"separator": {
|
|
75
|
+
"type": "ReactNode",
|
|
76
|
+
"default": "':'",
|
|
77
|
+
"description": "键/值之间的分隔符 UI"
|
|
78
|
+
},
|
|
79
|
+
"value": {
|
|
80
|
+
"type": "Record<string, string>[]",
|
|
81
|
+
"description": "**受控值**。每项是一行键/值对象,默认按 'label'/'value' 字段名解析,可通过 replaceFields 改字段名。**业务类型如 `{key, value}[]` 与 Record<string,string>[] 的 TS cast 处理见 typeCastingGuide**"
|
|
82
|
+
},
|
|
83
|
+
"defaultValue": {
|
|
84
|
+
"type": "Record<string, string>[]",
|
|
85
|
+
"description": "**非受控初始值**;形态同 value。仅 mount + 引用变化时灌入"
|
|
86
|
+
},
|
|
87
|
+
"onChange": {
|
|
88
|
+
"type": "(val: Record<string, string>[]) => void",
|
|
89
|
+
"description": "值变化回调;val 是**完整对象数组**(不是 string[]),字段名跟随 replaceFields 设置"
|
|
90
|
+
},
|
|
91
|
+
"replaceFields": {
|
|
92
|
+
"type": "{ key?: string; value?: string }",
|
|
93
|
+
"default": "{ key: 'label', value: 'value' }",
|
|
94
|
+
"description": "**partial override**(浅合并默认值,见 replaceFieldsBehavior.mergeSemantics)。改后:1) value/defaultValue 元素字段名必须同步改 2) onChange 回调返回的字段名也跟随改(双向联动)。**单改一侧 src 找不到字段,显示空内容**"
|
|
95
|
+
},
|
|
96
|
+
"required": {
|
|
97
|
+
"type": "boolean",
|
|
98
|
+
"default": "false",
|
|
99
|
+
"description": "是否必填(影响 label 后是否显示红星 * 等视觉)"
|
|
100
|
+
},
|
|
101
|
+
"disabled": {
|
|
102
|
+
"type": "boolean | { [name: string]: boolean }[]",
|
|
103
|
+
"default": "false",
|
|
104
|
+
"description": "**两种形态**:1) `true` 整体禁用所有行所有字段;2) `{ [name: string]: boolean }[]` **行级 + 字段级禁用**——数组每项对应一行,对象 key 对应 replaceFields 的字段名(默认 'label'/'value'),value 为 true 时禁用该行该字段。例如 `[{label: true, value: false}, {label: false, value: true}]` 禁用第 1 行的 key 列 + 第 2 行的 value 列"
|
|
105
|
+
},
|
|
106
|
+
"disabledTooltip": {
|
|
107
|
+
"type": "TooltipProps",
|
|
108
|
+
"description": "禁用态 hover 提示"
|
|
109
|
+
},
|
|
110
|
+
"helperText": {
|
|
111
|
+
"type": "ReactNode | Record<string, ReactNode>[]",
|
|
112
|
+
"description": "**两种形态**:① ReactNode/string = 整体错误提示文字(typeof === 'string' 时激活 error 视觉,所有行都标红);② Record<string, ReactNode>[] = **row-level + 字段级错误**,数组每项对应一行,对象 key 对应 replaceFields 字段名,value 为错误文本"
|
|
113
|
+
},
|
|
114
|
+
"hideErrorDom": {
|
|
115
|
+
"type": "boolean | null",
|
|
116
|
+
"description": "见 HelperText 同名 prop:true=无错误不渲染,false=都渲染(布局稳定),null=永不渲染"
|
|
117
|
+
},
|
|
118
|
+
"fetchSuggestionsKey": {
|
|
119
|
+
"type": "(val: string, cb: (data: Record<string, unknown>[]) => void) => void",
|
|
120
|
+
"description": "**键侧补全数据源**(用户输入 key 时调用)。**cb 接受 Record<string, unknown>[]** 不是 string[]。每项至少要有 label 字段(显示在下拉),value 字段(选中后填回)。例:`cb([{label: 'Content-Type', value: 'Content-Type'}, ...])`。**通常与 fetchSuggestionsValue 成对使用**"
|
|
121
|
+
},
|
|
122
|
+
"fetchSuggestionsValue": {
|
|
123
|
+
"type": "(val: string, cb: (data: Record<string, unknown>[]) => void) => void",
|
|
124
|
+
"description": "**值侧补全数据源**;cb 形态同 fetchSuggestionsKey"
|
|
125
|
+
},
|
|
126
|
+
"keyOtherProps": {
|
|
127
|
+
"type": "(index: number, val: string) => TextFieldProps",
|
|
128
|
+
"description": "键侧 TextField 的额外 props(按 index 区分行,可实现某行只读 / 加 prefix 等)"
|
|
129
|
+
},
|
|
130
|
+
"valueOtherProps": {
|
|
131
|
+
"type": "(index: number, val: string) => TextFieldProps",
|
|
132
|
+
"description": "值侧 TextField 的额外 props"
|
|
133
|
+
}
|
|
134
|
+
},
|
|
135
|
+
"commonMisconceptions": {
|
|
136
|
+
"M1": {
|
|
137
|
+
"wrong": "用 `as Record<string, string>[]` 把业务类型 `HeaderPair[]` / `EnvVar[]` 强制转给 MultiBox.value",
|
|
138
|
+
"result": "**TS 5.x 报错 TS2352** 'Conversion may be a mistake because neither type sufficiently overlaps' —— TS nominal 类型严格,即使结构兼容也拒绝。R23 MultiBox-001/002/003 fail 都是这个",
|
|
139
|
+
"fix": "**3 种方案**(详见 typeCastingGuide):A) 业务直接用 Record<string,string>[] 类型(最干净);B) 用 `as unknown as` 中转(逃避 TS 严格 cast);C) 改 replaceFields 适配业务字段名 + unknown 中转"
|
|
140
|
+
},
|
|
141
|
+
"M2": {
|
|
142
|
+
"wrong": "改 replaceFields 字段名但忘记同步改 value 数据: `replaceFields={{ key: 'name' }} value={[{label: 'x', value: 'y'}]}`(value 仍按默认 label/value 字段名)",
|
|
143
|
+
"result": "src 按 replaceFieldsCom.key='name' 在 value 元素里找 `.name` 字段,**找不到 → 显示空内容**",
|
|
144
|
+
"fix": "改 replaceFields 时必须同步改 value 元素字段名:`replaceFields={{ key: 'name' }} value={[{name: 'x', value: 'y'}]}`(注意 value 字段也要保留或同时改 replaceFields.value)"
|
|
145
|
+
},
|
|
146
|
+
"M3": {
|
|
147
|
+
"wrong": "假设 replaceFields 是完全替换语义: `replaceFields={{ key: 'k' }}` 期望 value 字段名也是 'k'",
|
|
148
|
+
"result": "**replaceFields 是 partial override**(浅合并),只写 key 会保留默认 value:'value'。所以 `value={[{k: 'x', val: 'y'}]}` 不工作,需写成 `[{k: 'x', value: 'y'}]`",
|
|
149
|
+
"fix": "1) 单字段改:确保 value 用对应字段名 + 默认 value:'value';2) 双字段都改:`replaceFields={{ key: 'k', value: 'v' }}` 双向同步"
|
|
150
|
+
},
|
|
151
|
+
"M4": {
|
|
152
|
+
"wrong": "假设 disabled 只是 boolean: `disabled={ rowIndex === 0 }`",
|
|
153
|
+
"result": "整体禁用整个 MultiBox,而非'第 1 行禁用'。**disabled 支持 `{ [name]: boolean }[]` 形态做行级 + 字段级禁用**",
|
|
154
|
+
"fix": "用对象数组形态:`disabled={[{label: true, value: false}, {label: false, value: false}]}`(第 1 行 key 列禁用,其他全开)"
|
|
155
|
+
},
|
|
156
|
+
"M5": {
|
|
157
|
+
"wrong": "用 helperText: string 期望某行某列单独红框",
|
|
158
|
+
"result": "**string 形态的 helperText 激活整体错误视觉**(所有行标红),不是 row-level",
|
|
159
|
+
"fix": "row-level + 字段级错误:用 `Record<string, ReactNode>[]` 形态: `helperText={[{label: 'key 重复'}, {}, {value: '格式错误'}]}`(第 1 行 key 列报错 + 第 3 行 value 列报错)"
|
|
160
|
+
}
|
|
161
|
+
},
|
|
162
|
+
"do": [
|
|
163
|
+
"**优先用 Record<string, string>[] 作为业务类型**,避免 TS cast(M1 patternA)",
|
|
164
|
+
"**必须自定义业务类型**:用 `as unknown as` 中转(M1 patternB)",
|
|
165
|
+
"**业务字段名不叫 label/value**:同时改 replaceFields **和** value/defaultValue 数据字段名(M2/M3)",
|
|
166
|
+
"行级禁用:用 `disabled={[{label/value: boolean}]}` 对象数组形态(M4)",
|
|
167
|
+
"行级错误:用 `helperText={[{label/value: errorMsg}]}` 对象数组形态(M5)",
|
|
168
|
+
"自动补全:fetchSuggestionsKey 和 fetchSuggestionsValue 通常成对使用,cb 接受 `{label, value}` 对象数组(不是 string[])"
|
|
169
|
+
],
|
|
170
|
+
"dont": [
|
|
171
|
+
"**不要**直接 `as Record<string, string>[]` 强制 cast 业务类型——TS5 严格拒绝(M1)",
|
|
172
|
+
"**不要**单改 replaceFields 而不改 value 字段名——src 找不到字段(M2)",
|
|
173
|
+
"**不要**假设 replaceFields 完全替换——是 partial override(M3)",
|
|
174
|
+
"**不要**假设 disabled 只能 boolean——对象数组形态做行级禁用(M4)",
|
|
175
|
+
"**不要**用 string helperText 期望 row-level 错误——整体激活(M5)",
|
|
176
|
+
"键或值过长时不做截断/省略——TextField 自身样式",
|
|
177
|
+
"复杂嵌套对象录入——MultiBox 仅 2 层(key + value),换 FieldForm + dynamicFields"
|
|
178
|
+
],
|
|
179
|
+
"events": {
|
|
180
|
+
"onChange": {
|
|
181
|
+
"signature": "(val: Record<string, string>[]) => void",
|
|
182
|
+
"asyncSupported": false,
|
|
183
|
+
"examples": [
|
|
184
|
+
"onChange={(val) => setHeaders(val)} — val 是完整对象数组,字段名跟随 replaceFields 设置(默认 label/value)",
|
|
185
|
+
"增/删行也触发 onChange,val 是操作后完整的新数组(不是 diff)",
|
|
186
|
+
"行内 TextField 值变化实时触发 onChange(不是 onBlur)"
|
|
187
|
+
],
|
|
188
|
+
"commonMistakes": [
|
|
189
|
+
"期望 onChange 返回 string[]——实际返回 Record<string, string>[](对象数组),需取对应字段:val.map(v => v.value)",
|
|
190
|
+
"用 as Record<string, string>[] 把业务类型传给 onChange setter——TS 5.x 拒绝结构兼容 cast,需用 as unknown as 中转",
|
|
191
|
+
"只处理 onChange 不处理新增/删除——增删操作也走同一 onChange,val 是全量数组,不是操作了哪一行"
|
|
192
|
+
]
|
|
193
|
+
}
|
|
194
|
+
},
|
|
195
|
+
"typescriptPitfalls": [
|
|
196
|
+
{
|
|
197
|
+
"issue": "业务类型 `{key: string; value: string}[]` 与 `Record<string, string>[]` 在 TS 5.x 不能直接 as cast",
|
|
198
|
+
"wrong": "const headers: {key: string; value: string}[] = []; <MultiBox value={headers as Record<string, string>[]} /> // TS2352 拒绝",
|
|
199
|
+
"right": "<MultiBox value={headers as unknown as Record<string, string>[]} replaceFields={{ key: 'key', value: 'value' }} /> // unknown 中转"
|
|
200
|
+
},
|
|
201
|
+
{
|
|
202
|
+
"issue": "改 replaceFields.key 但不改 value 数据字段名,src 找不到字段显示空",
|
|
203
|
+
"wrong": "replaceFields={{ key: 'name' }} value={[{label: 'x', value: 'y'}]} // src 按 'name' 读,label 字段被忽略",
|
|
204
|
+
"right": "replaceFields={{ key: 'name' }} value={[{name: 'x', value: 'y'}]} // replaceFields 和数据字段名必须同步"
|
|
205
|
+
},
|
|
206
|
+
{
|
|
207
|
+
"issue": "disabled 只传 boolean 期望行级禁用——boolean true 是整体禁用,行级需用对象数组",
|
|
208
|
+
"wrong": "disabled={rowIndex === 0} // 期望第一行禁用,实际 disabled=true 时整体禁用所有行",
|
|
209
|
+
"right": "disabled={[{label: true, value: false}, {label: false, value: false}]} // 对象数组:第一行 key 列禁用"
|
|
210
|
+
}
|
|
211
|
+
],
|
|
212
|
+
"mapping": {
|
|
213
|
+
"realComponent": "MultiBox",
|
|
214
|
+
"adapter": null
|
|
215
|
+
}
|
|
216
|
+
}
|