@para-ui/core 5.0.0-beta.12 → 5.0.0-beta.13
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/AGENTS.md +315 -0
- package/AlignBox/component.json +89 -0
- package/Anchor/component.json +130 -0
- package/Argv/component.json +216 -0
- package/AutoBox/component.json +133 -0
- package/AutoButton/component.json +109 -0
- package/AutoTips/component.json +121 -0
- package/Badge/component.json +92 -0
- package/Breadcrumbs/component.json +142 -0
- package/Button/component.json +168 -0
- package/ButtonGroup/component.json +132 -0
- package/Card/component.json +162 -0
- package/Carousel/component.json +142 -0
- package/Cascader/component.json +196 -0
- package/Checkbox/component.json +138 -0
- package/CheckboxGroup/component.json +152 -0
- package/CodeEditor/component.json +189 -0
- package/Collapse/component.json +166 -0
- package/CollapseBox/component.json +84 -0
- package/CollapseLayout/component.json +155 -0
- package/ColorPicker/component.json +142 -0
- package/ComboSelect/component.json +181 -0
- package/Container/component.json +111 -0
- package/ContentBox/component.json +81 -0
- package/CopyText/component.json +118 -0
- package/CycleSelector/component.json +98 -0
- package/DatePicker/component.json +192 -0
- package/Descriptions/component.json +142 -0
- package/Desktop/component.json +171 -0
- package/DragVerify/component.json +114 -0
- package/Drawer/component.json +200 -0
- package/Dropdown/component.json +147 -0
- package/DynamicMultiBox/component.json +278 -0
- package/Empty/component.json +123 -0
- package/FieldForm/component.json +196 -0
- package/Form/component.json +161 -0
- package/FormItem/component.json +171 -0
- package/FunctionModal/component.json +197 -0
- package/Help/component.json +118 -0
- package/HelperText/component.json +126 -0
- package/Image/component.json +165 -0
- package/InputCode/component.json +191 -0
- package/InputLang/component.json +205 -0
- package/InputNumber/component.json +162 -0
- package/Label/component.json +126 -0
- package/Loading/component.json +91 -0
- package/Menu/component.json +180 -0
- package/Message/component.json +246 -0
- package/Modal/component.json +277 -0
- package/MultiBox/component.json +216 -0
- package/Notification/component.json +184 -0
- package/OperateBtn/component.json +134 -0
- package/PageHeader/component.json +112 -0
- package/Pagination/component.json +181 -0
- package/PasswordRules/component.json +105 -0
- package/PopConfirm/component.json +227 -0
- package/PopMenu/component.json +131 -0
- package/Popover/component.json +165 -0
- package/Progress/component.json +161 -0
- package/Prompt/component.json +144 -0
- package/Querying/component.json +96 -0
- package/QuickReply/component.json +129 -0
- package/Radio/component.json +136 -0
- package/RadioGroup/component.json +149 -0
- package/RangeInput/component.json +198 -0
- package/Result/component.json +104 -0
- package/ScrollBar/component.json +115 -0
- package/Search/component.json +177 -0
- package/Select/component.json +244 -0
- package/SelectInput/component.json +184 -0
- package/Selector/component.json +203 -0
- package/SelectorPicker/component.json +179 -0
- package/SingleBox/component.json +151 -0
- package/Slider/component.json +181 -0
- package/SortBox/component.json +108 -0
- package/Status/component.json +104 -0
- package/Stepper/component.json +129 -0
- package/Switch/component.json +207 -0
- package/Table/component.json +547 -0
- package/Tabs/component.json +227 -0
- package/Tag/component.json +221 -0
- package/TextEditor/component.json +186 -0
- package/TextField/component.json +290 -0
- package/TimePicker/component.json +176 -0
- package/Timeline/component.json +110 -0
- package/Title/component.json +156 -0
- package/ToggleButton/component.json +153 -0
- package/Tooltip/component.json +176 -0
- package/Transfer/component.json +157 -0
- package/Tree/component.json +512 -0
- package/Upload/component.json +450 -0
- package/ai-workflows/01-crud-list-multi-drawer.md +278 -0
- package/ai-workflows/02-rbac-operation-buttons.md +290 -0
- package/ai-workflows/03-complex-form-async-cascade.md +350 -0
- package/ai-workflows/04-array-field-form.md +281 -0
- package/ai-workflows/05-popconfirm-async-message-queue.md +333 -0
- package/ai-workflows/06-modal-drawer-form-workflow.md +385 -0
- package/ai-workflows/07-search-filter-table-trio.md +387 -0
- package/ai-workflows/08-table-advanced-features.md +365 -0
- package/ai-workflows/09-batch-operation-export-progress.md +367 -0
- package/ai-workflows/10-cross-component-state-coordination.md +412 -0
- package/es/AlignBox/component.json +89 -0
- package/es/AlignBox/index.css +1 -1
- package/es/AlignBox/index.d.ts +6 -2
- package/es/AlignBox/index.js +1 -1
- package/es/AlignBox/style/index.css +1 -1
- package/es/Anchor/anchorMenu/index.d.ts +2 -1
- package/es/Anchor/anchorMenu/index.js +36 -33
- package/es/Anchor/component.json +130 -0
- package/es/Anchor/index.js +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/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 +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 +73 -68
- 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 +10 -10
- package/es/DatePicker/generatePicker/generateSinglePicker.js +1 -1
- 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/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/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 +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/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/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 +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/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/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/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 +9 -3
- /package/es/{Utils/Hooks → Hooks}/useResizeObserver.d.ts +0 -0
- /package/es/{Utils/Hooks → Hooks}/useResizeObserver.js +0 -0
- /package/lib/{Utils/Hooks → Hooks}/useResizeObserver.d.ts +0 -0
- /package/lib/{Utils/Hooks → Hooks}/useResizeObserver.js +0 -0
|
@@ -0,0 +1,184 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "SelectInput",
|
|
3
|
+
"category": "Data Entry",
|
|
4
|
+
"description": "下拉输入框,结合下拉选择和文本输入",
|
|
5
|
+
"semantic": {
|
|
6
|
+
"intent": [
|
|
7
|
+
"组合输入",
|
|
8
|
+
"带搜索的选择"
|
|
9
|
+
],
|
|
10
|
+
"useCases": [
|
|
11
|
+
"分类选择",
|
|
12
|
+
"带输入的下拉",
|
|
13
|
+
"联想输入"
|
|
14
|
+
],
|
|
15
|
+
"riskLevel": "normal"
|
|
16
|
+
},
|
|
17
|
+
"variants": {
|
|
18
|
+
"default": {
|
|
19
|
+
"meaning": "默认样式"
|
|
20
|
+
}
|
|
21
|
+
},
|
|
22
|
+
"states": [
|
|
23
|
+
"default",
|
|
24
|
+
"disabled",
|
|
25
|
+
"error"
|
|
26
|
+
],
|
|
27
|
+
"idealProps": {
|
|
28
|
+
"value": {
|
|
29
|
+
"type": "any",
|
|
30
|
+
"description": "受控值;multiple=true 时为数组,multiple=false(默认)时为单值;必须配合 onChange。**单值类型**:list 项 value 字段值(string / number 取决于 SelectOptionBase.value 实际类型)"
|
|
31
|
+
},
|
|
32
|
+
"defaultValue": {
|
|
33
|
+
"type": "any",
|
|
34
|
+
"description": "非受控默认值;类型规则同 value"
|
|
35
|
+
},
|
|
36
|
+
"onChange": {
|
|
37
|
+
"type": "(val, e) => void",
|
|
38
|
+
"description": "值变化回调。**实际签名**(协议 SI1):multiple=false → `(val: string | undefined, e: SyntheticEvent) => void`(清空时 val 为 undefined);multiple=true → `(val: string[], e) => void`。**val 是 list 项 value 字段值**(不是整个对象);业务 `(next: string) => void` 透传桥接:`onChange={(val) => onChange((val ?? '') as string)}` 显式过 undefined"
|
|
39
|
+
},
|
|
40
|
+
"list": {
|
|
41
|
+
"type": "SelectOptionBase[]",
|
|
42
|
+
"itemSchema": {
|
|
43
|
+
"label": { "type": "ReactNode", "required": true, "description": "选项显示文案" },
|
|
44
|
+
"value": { "type": "any", "required": true, "description": "选项值(onChange 回调的 val 是此字段值)" },
|
|
45
|
+
"children": { "type": "any[]", "description": "子选项" },
|
|
46
|
+
"disabled": { "type": "boolean", "description": "是否禁用" }
|
|
47
|
+
},
|
|
48
|
+
"description": "下拉选项数组;项 = `{ label: ReactNode, value: any, children?: any[], disabled?: boolean }`。空数组或不传时 showSelect 自动 false。**string[] 转换**(协议 SI5):`options.map(opt => ({label: opt, value: opt}))`"
|
|
49
|
+
},
|
|
50
|
+
"multiple": {
|
|
51
|
+
"type": "boolean",
|
|
52
|
+
"default": false,
|
|
53
|
+
"description": "多选模式;true 时 value 必须为数组"
|
|
54
|
+
},
|
|
55
|
+
"showSelect": {
|
|
56
|
+
"type": "boolean",
|
|
57
|
+
"description": "是否显示下拉浮层;未显式传时,有 list 自动 true,无 list 自动 false。显式 false 退化为纯输入框"
|
|
58
|
+
},
|
|
59
|
+
"showName": {
|
|
60
|
+
"type": "string",
|
|
61
|
+
"default": "label",
|
|
62
|
+
"description": "list 项中显示名字段名"
|
|
63
|
+
},
|
|
64
|
+
"showValue": {
|
|
65
|
+
"type": "string",
|
|
66
|
+
"default": "value",
|
|
67
|
+
"description": "list 项中选中值字段名"
|
|
68
|
+
},
|
|
69
|
+
"searchModel": {
|
|
70
|
+
"type": "'outside' | 'inside'",
|
|
71
|
+
"values": ["outside", "inside"],
|
|
72
|
+
"default": "inside",
|
|
73
|
+
"description": "搜索框位置(协议 SI3);outside=输入框永远显示在触发按钮位置(联想标签 / 主搜);inside=输入框在浮层展开后才显示(二级筛选)。**fetchSuggestions / 联想推荐 outside**"
|
|
74
|
+
},
|
|
75
|
+
"fetchSuggestions": {
|
|
76
|
+
"type": "(val: string, cb: (data: SelectOptionBase[]) => void) => void",
|
|
77
|
+
"description": "异步联想搜索;与 list 互斥。**搭配 searchModel='outside'**(协议 SI3 / SI4)"
|
|
78
|
+
},
|
|
79
|
+
"onEnterInput": {
|
|
80
|
+
"type": "(val: string) => void",
|
|
81
|
+
"description": "回车事件;val=当前输入框原始文本(非 list 项 value)。**输入新分类必传**(协议 SI4):用户输入下拉外文本时 onChange 不触发,只有 onEnterInput 能捕获"
|
|
82
|
+
},
|
|
83
|
+
"blurChangeValueBol": {
|
|
84
|
+
"type": "boolean",
|
|
85
|
+
"default": false,
|
|
86
|
+
"description": "失焦时是否将输入框文本写回 value;适合搜索式输入立即生效场景"
|
|
87
|
+
},
|
|
88
|
+
"labelMode": {
|
|
89
|
+
"type": "'outside' | 'inside'",
|
|
90
|
+
"values": ["outside", "inside"],
|
|
91
|
+
"default": "outside",
|
|
92
|
+
"description": "标题位置(注:此 prop 命名与 searchModel 不同语义)"
|
|
93
|
+
},
|
|
94
|
+
"overLine": {
|
|
95
|
+
"type": "boolean",
|
|
96
|
+
"default": false,
|
|
97
|
+
"description": "已选项是否换行;true=超出 chip 换行,false=单行 + 折叠 '+N'"
|
|
98
|
+
},
|
|
99
|
+
"disabled": {
|
|
100
|
+
"type": "boolean | any[]",
|
|
101
|
+
"description": "禁用;布尔禁全部,数组按 value 禁用部分选项"
|
|
102
|
+
},
|
|
103
|
+
"size": {
|
|
104
|
+
"type": "'small' | 'medium' | 'large'",
|
|
105
|
+
"values": ["small", "medium", "large"],
|
|
106
|
+
"default": "large",
|
|
107
|
+
"description": "尺寸"
|
|
108
|
+
}
|
|
109
|
+
},
|
|
110
|
+
"crossPropInteractions": [
|
|
111
|
+
"multiple + onChange 签名 = 两套 union(false 时 val 可 undefined / true 时 val: string[])",
|
|
112
|
+
"fetchSuggestions + searchModel = 推荐配 outside(协议 SI3)",
|
|
113
|
+
"showSelect=false → 强制 searchModel='outside'(纯输入框模式)",
|
|
114
|
+
"onEnterInput + outside = 输入新分类的标准组合(协议 SI4)",
|
|
115
|
+
"list 项 value + showValue = 决定 onChange val 实际类型"
|
|
116
|
+
],
|
|
117
|
+
"commonMisconceptions": [
|
|
118
|
+
"❌ onChange 单参直接透传 `onChange={onChange}` — 实际是双参 + val 可 undefined,TS 不符",
|
|
119
|
+
"❌ onChange val 是整个 SelectOptionBase 对象 — 实际是 value 字段值",
|
|
120
|
+
"❌ outside 模式下纯输入回车自动 onChange — 实际需要 onEnterInput 捕获",
|
|
121
|
+
"❌ fetchSuggestions 默认走 outside — 默认 inside,需显式 searchModel='outside'",
|
|
122
|
+
"❌ string[] 直接传 list — 必须 map 成 SelectOptionBase[] {label, value}"
|
|
123
|
+
],
|
|
124
|
+
"do": [
|
|
125
|
+
"在需要选择并输入的场景使用(比 Select 更自由,比 TextField 带下拉)",
|
|
126
|
+
"支持联想搜索:配合 fetchSuggestions + searchModel='outside' 实现外部输入即触发联想",
|
|
127
|
+
"输入新值回车捕获:配合 onEnterInput 处理用户输入了下拉列表外的文本场景",
|
|
128
|
+
"list 必须传 SelectOptionBase[]:string[] 数组先 map 成 `{label: opt, value: opt}` 形式"
|
|
129
|
+
],
|
|
130
|
+
"dont": [
|
|
131
|
+
"选项过多时不分页(应配合 fetchSuggestions 做异步分页)",
|
|
132
|
+
"忽略键盘操作(onEnterInput 是捕获回车新建条目的关键入口)",
|
|
133
|
+
"直接把 string[] 传给 list——必须 map 成 `[{label, value}]` 形式(协议 SI5)"
|
|
134
|
+
],
|
|
135
|
+
"events": {
|
|
136
|
+
"onChange": {
|
|
137
|
+
"signature": "(val: T | T[] | undefined, e: React.SyntheticEvent) => void",
|
|
138
|
+
"asyncSupported": false,
|
|
139
|
+
"examples": [
|
|
140
|
+
"单选时 val 为选中项 value 字段值(清空时 val 为 undefined,不是 '')",
|
|
141
|
+
"多选时 val 为已选项 value 字段值数组",
|
|
142
|
+
"受控桥接:onChange={(val) => setVal((val ?? '') as string)}"
|
|
143
|
+
],
|
|
144
|
+
"commonMistakes": [
|
|
145
|
+
"直接传 onChange={setValue} 时 TS 报签名不匹配——需要 (val, _e) => setValue(val ?? '')",
|
|
146
|
+
"期望输入框回车触发 onChange——outside 模式下用户输入未选中选项时不触发 onChange,只触发 onEnterInput",
|
|
147
|
+
"误以为 val 是整个 SelectOptionBase 对象——val 是 value 字段值(由 showValue 决定)"
|
|
148
|
+
]
|
|
149
|
+
},
|
|
150
|
+
"onEnterInput": {
|
|
151
|
+
"signature": "(val: string) => void",
|
|
152
|
+
"asyncSupported": false,
|
|
153
|
+
"examples": [
|
|
154
|
+
"用户在输入框回车时触发,val 为输入框的原始字符串",
|
|
155
|
+
"新建标签场景:onEnterInput={(newTag) => setTags([...tags, newTag])}"
|
|
156
|
+
],
|
|
157
|
+
"commonMistakes": [
|
|
158
|
+
"与 onChange 混淆——onEnterInput 是捕获「选项外文本回车」,onChange 是选项选中",
|
|
159
|
+
"忘记传 onEnterInput 导致用户输入新值回车无任何响应"
|
|
160
|
+
]
|
|
161
|
+
}
|
|
162
|
+
},
|
|
163
|
+
"typescriptPitfalls": [
|
|
164
|
+
{
|
|
165
|
+
"issue": "onChange 签名有第二参 e: SyntheticEvent,单参函数直接传报 TS 错误",
|
|
166
|
+
"wrong": "onChange={setVal} // setVal: (v: string) => void,缺少 e 参数",
|
|
167
|
+
"right": "onChange={(val, _e) => setVal(val ?? '')} // 显式声明两参,_e 忽略"
|
|
168
|
+
},
|
|
169
|
+
{
|
|
170
|
+
"issue": "list 传 string[] 直接报 TS 不兼容 SelectOptionBase[]",
|
|
171
|
+
"wrong": "list={['option1', 'option2']} // string 不满足 SelectOptionBase 接口",
|
|
172
|
+
"right": "list={['option1', 'option2'].map(s => ({ label: s, value: s }))} // 转换为 SelectOptionBase[]"
|
|
173
|
+
},
|
|
174
|
+
{
|
|
175
|
+
"issue": "SelectInput extends SelectProps(Single | Multiple 联合),在泛型 T 未能被推断时 onChange 的 val 参数可能隐式 any(TS7006),需要显式标注参数类型",
|
|
176
|
+
"wrong": "onChange={(val, _e) => setValue(val as string)} // TS7006: val 隐式 any(泛型推断失败时)",
|
|
177
|
+
"right": "// 单选模式:\nonChange={(val: string | undefined, _e: React.SyntheticEvent) => setValue(val)}\n// 多选模式:\nonChange={(val: string[], _e: React.SyntheticEvent) => setValues(val ?? [])}"
|
|
178
|
+
}
|
|
179
|
+
],
|
|
180
|
+
"mapping": {
|
|
181
|
+
"realComponent": "SelectInput",
|
|
182
|
+
"adapter": null
|
|
183
|
+
}
|
|
184
|
+
}
|
|
@@ -0,0 +1,203 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "Selector",
|
|
3
|
+
"category": "Data Entry",
|
|
4
|
+
"description": "选择器组件,支持分页、搜索、多选等功能",
|
|
5
|
+
"semantic": {
|
|
6
|
+
"intent": [
|
|
7
|
+
"复杂选择",
|
|
8
|
+
"数据筛选"
|
|
9
|
+
],
|
|
10
|
+
"useCases": [
|
|
11
|
+
"人员选择",
|
|
12
|
+
"组织选择",
|
|
13
|
+
"资源分配"
|
|
14
|
+
],
|
|
15
|
+
"riskLevel": "normal"
|
|
16
|
+
},
|
|
17
|
+
"variants": {
|
|
18
|
+
"lr": {
|
|
19
|
+
"meaning": "左右布局"
|
|
20
|
+
},
|
|
21
|
+
"tb": {
|
|
22
|
+
"meaning": "上下布局"
|
|
23
|
+
},
|
|
24
|
+
"list": {
|
|
25
|
+
"meaning": "列表布局"
|
|
26
|
+
}
|
|
27
|
+
},
|
|
28
|
+
"states": [
|
|
29
|
+
"default",
|
|
30
|
+
"disabled",
|
|
31
|
+
"error"
|
|
32
|
+
],
|
|
33
|
+
"idealProps": {
|
|
34
|
+
"value": {
|
|
35
|
+
"type": "Record<string, any>[] | Record<string, any>",
|
|
36
|
+
"description": "受控值;radio 模式为单对象(初始无选可传 null),check 模式为对象数组;无 selectMode 时无效。**最小回显格式**(协议 S1):value 对象只需含 rowKey 字段即可匹配回显;外部 string[] keys 反查 = `items.filter(it => keys.includes(it[rowKey]))`"
|
|
37
|
+
},
|
|
38
|
+
"defaultValue": {
|
|
39
|
+
"type": "Record<string, any>[] | Record<string, any>",
|
|
40
|
+
"description": "非受控默认值;类型规则同 value"
|
|
41
|
+
},
|
|
42
|
+
"onChange": {
|
|
43
|
+
"type": "(val, node, rowData) => void",
|
|
44
|
+
"description": "值变化回调;**radio 模式 val 为 Record<string,any>**(单对象 / null),**check 模式 val 为 Record<string,any>[]**(数组 / null);node=出站处理后数据(若传 backDataFieldConfig 则字段映射)、rowData=原始;**出站 keys 提取**:`val.map(it => it[rowKey])`(协议 S1);onSelect 返回 true 时不触发"
|
|
45
|
+
},
|
|
46
|
+
"onSelect": {
|
|
47
|
+
"type": "(item, bol, isAllCheck) => boolean | Promise<boolean>",
|
|
48
|
+
"description": "勾选事件;返回 true 阻断 onChange(二次确认场景);先于 onChange 触发"
|
|
49
|
+
},
|
|
50
|
+
"layout": {
|
|
51
|
+
"type": "'lr' | 'tb' | 'list'",
|
|
52
|
+
"values": ["lr", "tb", "list"],
|
|
53
|
+
"default": "lr",
|
|
54
|
+
"description": "布局;lr=左右、tb=上下、list=纯列表(无已选区,适合内嵌)。**三种 layout 的 value/onChange 受控行为完全一致**(协议 S4),只有视觉差异"
|
|
55
|
+
},
|
|
56
|
+
"selectMode": {
|
|
57
|
+
"type": "'radio' | 'check'",
|
|
58
|
+
"values": ["radio", "check"],
|
|
59
|
+
"description": "选择模式;radio=单选;check=多选+全选;undefined=只读浏览"
|
|
60
|
+
},
|
|
61
|
+
"nodeMode": {
|
|
62
|
+
"type": "'leaf' | 'branch'",
|
|
63
|
+
"values": ["leaf", "branch"],
|
|
64
|
+
"default": "branch",
|
|
65
|
+
"description": "节点选择粒度;leaf=只选叶子;branch=分支/叶子皆可"
|
|
66
|
+
},
|
|
67
|
+
"rowKey": {
|
|
68
|
+
"type": "string",
|
|
69
|
+
"default": "'key'",
|
|
70
|
+
"description": "唯一标识字段(协议 S2);**影响 disabled/disabledChild 数组匹配 + value 对象匹配 + 缓存 + 出站 val.key**;data 用 id 时必须传 `rowKey='id'`"
|
|
71
|
+
},
|
|
72
|
+
"data": {
|
|
73
|
+
"type": "SelectorAnyJson[]",
|
|
74
|
+
"description": "本地数据源;与 url 互斥"
|
|
75
|
+
},
|
|
76
|
+
"url": {
|
|
77
|
+
"type": "string",
|
|
78
|
+
"description": "远程数据请求地址;搭配 method/params/paramsCallback 使用"
|
|
79
|
+
},
|
|
80
|
+
"pagination": {
|
|
81
|
+
"type": "boolean",
|
|
82
|
+
"default": false,
|
|
83
|
+
"description": "是否远程分页;仅 url 模式生效"
|
|
84
|
+
},
|
|
85
|
+
"search": {
|
|
86
|
+
"type": "boolean",
|
|
87
|
+
"default": false,
|
|
88
|
+
"description": "是否显示搜索框。**本地 data 模式内置关键词过滤无需 onSearch**(协议 S5);url 远程自动重发请求;自定义场景传 onSearch"
|
|
89
|
+
},
|
|
90
|
+
"searchTrigger": {
|
|
91
|
+
"type": "'onChange' | 'onEnter'",
|
|
92
|
+
"values": ["onChange", "onEnter"],
|
|
93
|
+
"default": "onChange",
|
|
94
|
+
"description": "搜索触发时机;onEnter 适合远程节流"
|
|
95
|
+
},
|
|
96
|
+
"fieldConfig": {
|
|
97
|
+
"type": "SelectorFieldConfigProps",
|
|
98
|
+
"description": "入站字段映射(mainTitle/subTitle/img/tag/info/children/parentId/key/type · 省略时自动应用默认值,详见 api.ts default 列)"
|
|
99
|
+
},
|
|
100
|
+
"backDataFieldConfig": {
|
|
101
|
+
"type": "SelectorFieldConfigProps",
|
|
102
|
+
"description": "出站字段映射;onChange 数据字段名转换;默认同 fieldConfig(出站字段名与入站一致)"
|
|
103
|
+
},
|
|
104
|
+
"disabled": {
|
|
105
|
+
"type": "string[] | boolean",
|
|
106
|
+
"default": false,
|
|
107
|
+
"description": "禁用;布尔禁全部,数组按 rowKey 禁用部分"
|
|
108
|
+
},
|
|
109
|
+
"isAllCheck": {
|
|
110
|
+
"type": "boolean",
|
|
111
|
+
"default": true,
|
|
112
|
+
"description": "复选模式下是否显示全选;仅 selectMode=check 生效"
|
|
113
|
+
}
|
|
114
|
+
},
|
|
115
|
+
"crossPropInteractions": [
|
|
116
|
+
"value + rowKey = 最小回显对象只需含 rowKey 字段(默认 'key')",
|
|
117
|
+
"selectMode + value 类型:radio→单对象/null,check→对象数组/null",
|
|
118
|
+
"layout='list' + value/onChange = 受控行为与 lr/tb 完全一致(协议 S4)",
|
|
119
|
+
"search + 本地 data = 内置过滤,无需 onSearch;+ url = 自动重发请求",
|
|
120
|
+
"rowKey + data + disabled[] = 三者用同一字段名匹配,改 rowKey 须全链路对齐"
|
|
121
|
+
],
|
|
122
|
+
"commonMisconceptions": [
|
|
123
|
+
"❌ value 必须传完整对象(label/subTitle 等)— 仅需 rowKey 字段即可回显",
|
|
124
|
+
"❌ 本地 data + search 必须传 onSearch — 组件内置过滤,本地场景省略 onSearch",
|
|
125
|
+
"❌ layout='list' 不支持受控 value/onChange — 三种 layout 行为一致",
|
|
126
|
+
"❌ radio 模式初始无选不能传 null — 可传 null 或省略 value prop",
|
|
127
|
+
"❌ data 用 id 字段不改 rowKey — 必须传 rowKey='id' 否则静默 fail"
|
|
128
|
+
],
|
|
129
|
+
"do": [
|
|
130
|
+
"支持服务端分页和搜索",
|
|
131
|
+
"提供面包屑导航",
|
|
132
|
+
"selectMode=check 多选场景显式传 value 数组 + onChange 接数组",
|
|
133
|
+
"data 本地数据源场景与 url 远程数据源场景二选一,不要同时传"
|
|
134
|
+
],
|
|
135
|
+
"dont": [
|
|
136
|
+
"数据量大时不分页",
|
|
137
|
+
"忽略禁用状态",
|
|
138
|
+
"selectMode 切换为 radio 时仍把 value 设为数组(类型不匹配)",
|
|
139
|
+
"onSelect 返回 true 阻断 onChange 后忘记自行更新 value(导致 UI 与 state 不同步)"
|
|
140
|
+
],
|
|
141
|
+
"events": {
|
|
142
|
+
"onChange": {
|
|
143
|
+
"signature": "(val: SelectorAnyJson[] | SelectorAnyJson | null, node: SelectorAnyJson, rowData: SelectorAnyJson) => void",
|
|
144
|
+
"asyncSupported": false,
|
|
145
|
+
"examples": [
|
|
146
|
+
"radio 模式:val 是单个 Record<string,any>,出站取 key 用 val[rowKey]",
|
|
147
|
+
"check 模式:val 是 Record<string,any>[],出站取 key 列表用 val.map(it => it[rowKey])",
|
|
148
|
+
"清空时 val 为 null——受控外部 string[] 兜底:setSelected(val ? val.map(it => it[rowKey]) : [])"
|
|
149
|
+
],
|
|
150
|
+
"commonMistakes": [
|
|
151
|
+
"误把 val 当 rowKey string[] 使用——onChange 返回对象/数组,取 key 需 val[rowKey] 或 map",
|
|
152
|
+
"忘记 rowKey 对齐——data 用 id 字段时传了 rowKey='id' 但 onChange 还用 val.key 取值(实际是 val.id)",
|
|
153
|
+
"radio 模式期望 val 是数组——radio 模式 val 始终是单对象(或 null),不是 [item]"
|
|
154
|
+
]
|
|
155
|
+
},
|
|
156
|
+
"onSelect": {
|
|
157
|
+
"signature": "(item: SelectorAnyJson | SelectorAnyJson[], bol: boolean, isAllCheck: boolean) => Promise<boolean | void> | (boolean | void)",
|
|
158
|
+
"asyncSupported": true,
|
|
159
|
+
"examples": [
|
|
160
|
+
"返回 true 阻断 onChange:二次确认场景在 onSelect 里弹 Dialog,确认后手动调用 onChange 逻辑",
|
|
161
|
+
"返回 void/false 不阻断,onChange 正常触发",
|
|
162
|
+
"全选时 item 是 SelectorAnyJson[](当前页所有项),isAllCheck=true"
|
|
163
|
+
],
|
|
164
|
+
"commonMistakes": [
|
|
165
|
+
"返回 true 阻断 onChange 后忘记自行更新 value——UI 与 state 不同步",
|
|
166
|
+
"误以为 onSelect 和 onChange 是同一回调——onSelect 先触发且返回值控制是否触发 onChange"
|
|
167
|
+
]
|
|
168
|
+
},
|
|
169
|
+
"onSearch": {
|
|
170
|
+
"signature": "(val: string, reqParams: SearchFuncProps) => Promise<SearchReqDataProps> | SearchReqDataProps",
|
|
171
|
+
"asyncSupported": true,
|
|
172
|
+
"examples": [
|
|
173
|
+
"自定义搜索:return { data: { data: filteredList } }(不分页)",
|
|
174
|
+
"分页搜索:return { data: { data: { list: arr, total: 100 } } }(pagination=true)"
|
|
175
|
+
],
|
|
176
|
+
"commonMistakes": [
|
|
177
|
+
"本地 data 场景传了 onSearch——本地模式内置过滤无需 onSearch,传了会覆盖内置逻辑",
|
|
178
|
+
"返回格式错误:不分页应返回 data.data = SelectorAnyJson[],分页应返回 data.data = { list, total }"
|
|
179
|
+
]
|
|
180
|
+
}
|
|
181
|
+
},
|
|
182
|
+
"typescriptPitfalls": [
|
|
183
|
+
{
|
|
184
|
+
"issue": "data 用非 key 字段作唯一 ID 时忘记传 rowKey,导致选中值匹配静默失败",
|
|
185
|
+
"wrong": "data={[{ id: '1', label: 'A' }]} value={[{ id: '1' }]} // 内部用 .key 匹配,id 字段被忽略",
|
|
186
|
+
"right": "data={[{ id: '1', label: 'A' }]} rowKey='id' value={[{ id: '1' }]} // rowKey 告知用 id 字段"
|
|
187
|
+
},
|
|
188
|
+
{
|
|
189
|
+
"issue": "radio 模式 value 传对象数组,check 模式 value 传单对象——类型反了",
|
|
190
|
+
"wrong": "selectMode='radio' value={[{ key: '1' }]} // radio 应为单对象",
|
|
191
|
+
"right": "selectMode='radio' value={{ key: '1' }} // 单对象;check 模式才用数组"
|
|
192
|
+
},
|
|
193
|
+
{
|
|
194
|
+
"issue": "disabled 数组传整个对象而非 rowKey 值列表,禁用匹配不生效",
|
|
195
|
+
"wrong": "disabled={[{ key: '1', label: 'A' }]} // src 内部 disabled.indexOf(item.key) 查 string/number",
|
|
196
|
+
"right": "disabled={['1', '2']} // 传 rowKey 值的 string[] 列表"
|
|
197
|
+
}
|
|
198
|
+
],
|
|
199
|
+
"mapping": {
|
|
200
|
+
"realComponent": "Selector",
|
|
201
|
+
"adapter": null
|
|
202
|
+
}
|
|
203
|
+
}
|
package/es/Selector/index.js
CHANGED
|
@@ -34,11 +34,11 @@ const Cr = (c, x) => ({
|
|
|
34
34
|
defaultValue: re,
|
|
35
35
|
data: J,
|
|
36
36
|
pagination: je = !1,
|
|
37
|
-
size:
|
|
37
|
+
size: A = 10,
|
|
38
38
|
isLazy: ae = !1,
|
|
39
|
-
isAllCheck:
|
|
39
|
+
isAllCheck: Ie = !0,
|
|
40
40
|
disabled: y,
|
|
41
|
-
disabledChild:
|
|
41
|
+
disabledChild: ve,
|
|
42
42
|
detail: F,
|
|
43
43
|
detailRender: te,
|
|
44
44
|
backDataFieldConfig: Pe,
|
|
@@ -53,16 +53,16 @@ const Cr = (c, x) => ({
|
|
|
53
53
|
groupRange: xe = "search",
|
|
54
54
|
emptyProps: se,
|
|
55
55
|
selectRenderItem: He,
|
|
56
|
-
selectRender:
|
|
56
|
+
selectRender: Ae,
|
|
57
57
|
onChange: oe,
|
|
58
|
-
onSelect:
|
|
58
|
+
onSelect: w,
|
|
59
59
|
onSearch: ue,
|
|
60
60
|
onRefresh: O,
|
|
61
61
|
error: ie = !1,
|
|
62
|
-
hideErrorDom:
|
|
62
|
+
hideErrorDom: we = !0,
|
|
63
63
|
helperText: Me = "",
|
|
64
64
|
mainHeader: _e
|
|
65
|
-
} = hr(c, "Selector"), le = mr("Selector", gr), C = Cr(c.fieldConfig, k), D = { ...C, ...Pe }, [fe, M] = g([]), [Ne, _] = g(!1), [
|
|
65
|
+
} = hr(c, "Selector"), le = mr("Selector", gr), C = Cr(c.fieldConfig, k), D = { ...C, ...Pe }, [fe, M] = g([]), [Ne, _] = g(!1), [I, $e] = g([]), [de, Je] = g({}), [v, S] = g([]), [Fe, P] = g(!1), [Ee, he] = g({ val: "" }), [Oe, K] = g([]), [Ke, me] = g(!1), [Ge, T] = g(!0), [Qe, ge] = g(), e = ur({
|
|
66
66
|
/** 对象集合 所有的 */
|
|
67
67
|
jsonData: {},
|
|
68
68
|
/** 浅拷贝对象 所有的 */
|
|
@@ -79,7 +79,7 @@ const Cr = (c, x) => ({
|
|
|
79
79
|
reqId: "",
|
|
80
80
|
/** 请求数据 */
|
|
81
81
|
reqParams: {
|
|
82
|
-
size:
|
|
82
|
+
size: A,
|
|
83
83
|
pagination: !1,
|
|
84
84
|
isLazy: !1
|
|
85
85
|
},
|
|
@@ -96,13 +96,13 @@ const Cr = (c, x) => ({
|
|
|
96
96
|
/** 搜索配置 */
|
|
97
97
|
searchConfig: {
|
|
98
98
|
page: 1,
|
|
99
|
-
size:
|
|
99
|
+
size: A,
|
|
100
100
|
reqId: "",
|
|
101
101
|
/** 当前页数据源 本地数据为当前页所有的数据,请求数据为当前展示的数据 */
|
|
102
102
|
currentSourceData: []
|
|
103
103
|
}
|
|
104
104
|
});
|
|
105
|
-
e.current.searchConfig.size =
|
|
105
|
+
e.current.searchConfig.size = A, e.current.reqParams.size = A, e.current.reqParams.pagination = je, e.current.reqParams.isLazy = ae;
|
|
106
106
|
const z = c.data || !e.current.reqParams.isLazy && e.current.noLazyReq;
|
|
107
107
|
L(() => (re !== void 0 && Q(re), () => {
|
|
108
108
|
e.current.reqTimer && clearTimeout(e.current.reqTimer);
|
|
@@ -223,13 +223,13 @@ const Cr = (c, x) => ({
|
|
|
223
223
|
}, p = () => {
|
|
224
224
|
e.current.page = 1, ge(Math.random());
|
|
225
225
|
}, Q = (r) => {
|
|
226
|
-
let t = r ? [r] : [];
|
|
226
|
+
let t = r ? Array.isArray(r) ? r : [r] : [];
|
|
227
227
|
r instanceof Array && (t = [...r]);
|
|
228
228
|
const a = dr(D.key, t);
|
|
229
229
|
e.current.selectValueJson = a, Je(a), $e([...t]);
|
|
230
230
|
}, We = (r, t) => {
|
|
231
|
-
let a = [...
|
|
232
|
-
t && (a = [], e.current.beforeSearchBreadcrumbs === null && (e.current.beforeSearchBreadcrumbs = [...
|
|
231
|
+
let a = [...v];
|
|
232
|
+
t && (a = [], e.current.beforeSearchBreadcrumbs === null && (e.current.beforeSearchBreadcrumbs = [...v])), a.push({
|
|
233
233
|
label: r.mainTitle,
|
|
234
234
|
value: r.key || ""
|
|
235
235
|
}), S(a);
|
|
@@ -250,15 +250,15 @@ const Cr = (c, x) => ({
|
|
|
250
250
|
const t = r.key || "";
|
|
251
251
|
if (b === "radio" && de[t]) return;
|
|
252
252
|
const a = e.current.selectValueJson[t];
|
|
253
|
-
if (!(
|
|
253
|
+
if (!(w && await w(r, b === "radio" ? !0 : !a, !1))) {
|
|
254
254
|
if (b === "radio") {
|
|
255
255
|
const n = U(r);
|
|
256
256
|
V(n, [n], e.current.jsonData[t], e.current.jsonDataCopy[t]);
|
|
257
257
|
}
|
|
258
258
|
if (b === "check") {
|
|
259
259
|
const n = [], s = {}, o = {};
|
|
260
|
-
for (let u = 0, d =
|
|
261
|
-
const l =
|
|
260
|
+
for (let u = 0, d = I.length; u < d; u++) {
|
|
261
|
+
const l = I[u];
|
|
262
262
|
if (!a || r.key !== l[D.key]) {
|
|
263
263
|
const i = l[D.key] || "";
|
|
264
264
|
s[i] = e.current.jsonData[i], o[i] = e.current.jsonDataCopy[i], n.push(l);
|
|
@@ -272,7 +272,7 @@ const Cr = (c, x) => ({
|
|
|
272
272
|
}
|
|
273
273
|
}
|
|
274
274
|
}, Ze = (r) => !!(y && (y === !0 || y instanceof Array && r.key && y.indexOf(r.key) !== -1) || r.disabled), er = async (r) => {
|
|
275
|
-
const t = [...fe], a = [...
|
|
275
|
+
const t = [...fe], a = [...I], n = [], s = {}, o = {}, u = [], d = [];
|
|
276
276
|
for (let i = 0, m = t.length; i < m; i++) {
|
|
277
277
|
const f = t[i], h = f.key || "";
|
|
278
278
|
Ze(f) || (r ? e.current.selectValueJson[h] || (a.push(U(f)), d.push(f)) : e.current.selectValueJson[h] && (u.push(h), d.push(f)));
|
|
@@ -282,7 +282,7 @@ const Cr = (c, x) => ({
|
|
|
282
282
|
r ? (s[h] = e.current.jsonData[h], o[h] = e.current.jsonDataCopy[h]) : u.indexOf(h) === -1 && (s[h] = e.current.jsonData[h], o[h] = e.current.jsonDataCopy[h], n.push(f));
|
|
283
283
|
}
|
|
284
284
|
const l = r ? a : n;
|
|
285
|
-
|
|
285
|
+
w && await w(d, !!r, !1) || V(l, l, s, o);
|
|
286
286
|
}, rr = (r) => {
|
|
287
287
|
if (r) {
|
|
288
288
|
e.current.searchConfig.page = e.current.searchConfig.page + 1, qe();
|
|
@@ -290,7 +290,7 @@ const Cr = (c, x) => ({
|
|
|
290
290
|
}
|
|
291
291
|
e.current.page = e.current.page + 1, ge(Math.random());
|
|
292
292
|
}, De = () => {
|
|
293
|
-
const r = [...
|
|
293
|
+
const r = [...v], t = E || {
|
|
294
294
|
label: le({ id: "root" }),
|
|
295
295
|
// 根
|
|
296
296
|
value: "_paraui_first_floor"
|
|
@@ -302,8 +302,8 @@ const Cr = (c, x) => ({
|
|
|
302
302
|
}), ne && r.unshift(t), e.current.breadcrumbsList = r, r;
|
|
303
303
|
}, ar = (r) => {
|
|
304
304
|
const t = [];
|
|
305
|
-
for (let a = 0, n =
|
|
306
|
-
const s =
|
|
305
|
+
for (let a = 0, n = v.length; a < n; a++) {
|
|
306
|
+
const s = v[a];
|
|
307
307
|
if (t.push(s), s.value === r.value)
|
|
308
308
|
break;
|
|
309
309
|
}
|
|
@@ -345,6 +345,7 @@ const Cr = (c, x) => ({
|
|
|
345
345
|
if (c.requestCallback) {
|
|
346
346
|
c.requestCallback(
|
|
347
347
|
t,
|
|
348
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
348
349
|
(n) => {
|
|
349
350
|
P(!1), Se(n);
|
|
350
351
|
},
|
|
@@ -404,7 +405,7 @@ const Cr = (c, x) => ({
|
|
|
404
405
|
e.current.searchConfig.page = 1, e.current.searchConfig.currentSourceData = [], qe();
|
|
405
406
|
}, sr = (r, t) => {
|
|
406
407
|
if (b === "radio" && V(null, [], {}, {}), b === "check") {
|
|
407
|
-
const a = [...
|
|
408
|
+
const a = [...I];
|
|
408
409
|
a.splice(t, 1);
|
|
409
410
|
const n = {}, s = {};
|
|
410
411
|
for (let o = 0, u = a.length; o < u; o++) {
|
|
@@ -420,7 +421,7 @@ const Cr = (c, x) => ({
|
|
|
420
421
|
backDataFieldConfig: D,
|
|
421
422
|
groupType: ce,
|
|
422
423
|
handSelectorNodeInfo: c.handSelectorNodeInfo,
|
|
423
|
-
list:
|
|
424
|
+
list: I,
|
|
424
425
|
nodeMode: N,
|
|
425
426
|
detail: F,
|
|
426
427
|
detailRender: te,
|
|
@@ -428,7 +429,7 @@ const Cr = (c, x) => ({
|
|
|
428
429
|
onClose: sr,
|
|
429
430
|
selectDataTitleRender: c.selectDataTitleRender,
|
|
430
431
|
selectRenderItem: He,
|
|
431
|
-
selectRender:
|
|
432
|
+
selectRender: Ae,
|
|
432
433
|
disabled: y
|
|
433
434
|
}
|
|
434
435
|
), or = () => {
|
|
@@ -450,7 +451,7 @@ const Cr = (c, x) => ({
|
|
|
450
451
|
rowKey: k,
|
|
451
452
|
value: de,
|
|
452
453
|
loadMore: Ne,
|
|
453
|
-
isAllCheck:
|
|
454
|
+
isAllCheck: Ie,
|
|
454
455
|
list: fe,
|
|
455
456
|
groupType: ce,
|
|
456
457
|
groupRange: xe,
|
|
@@ -466,7 +467,7 @@ const Cr = (c, x) => ({
|
|
|
466
467
|
searchLoading: Fe,
|
|
467
468
|
searchVal: Ee,
|
|
468
469
|
disabled: y,
|
|
469
|
-
disabledChild:
|
|
470
|
+
disabledChild: ve,
|
|
470
471
|
loading: Ge,
|
|
471
472
|
searchLoadMore: Ke,
|
|
472
473
|
searchList: Oe,
|
|
@@ -491,7 +492,7 @@ const Cr = (c, x) => ({
|
|
|
491
492
|
{
|
|
492
493
|
error: ie,
|
|
493
494
|
helperText: Me,
|
|
494
|
-
hideErrorDom:
|
|
495
|
+
hideErrorDom: we
|
|
495
496
|
}
|
|
496
497
|
)
|
|
497
498
|
]
|
|
@@ -409,7 +409,7 @@ export interface SelectorProps extends HelperTextDetailProps {
|
|
|
409
409
|
/** 处理请求参数 */
|
|
410
410
|
paramsCallback?: (data: ReqFuncProps, isSearch?: boolean) => ReqFuncProps;
|
|
411
411
|
/** 请求回调参数 requestCallback(data, cb) cb(data) 需要回调数据回来 */
|
|
412
|
-
requestCallback?: (data:
|
|
412
|
+
requestCallback?: (data: Record<string, unknown>, cb: (data: SelectorAnyJson[]) => void, isSearch?: boolean) => void;
|
|
413
413
|
/** 选中数据标题render */
|
|
414
414
|
selectDataTitleRender?: (list?: SelectorAnyJson[]) => ReactNode;
|
|
415
415
|
/** 选中每一项自定义 */
|
|
@@ -42,7 +42,7 @@ const oe = (q) => {
|
|
|
42
42
|
} = q, j = ae("Selector", ie), [W, X] = se({}), p = V({
|
|
43
43
|
listTypeJson: {},
|
|
44
44
|
fieldConfig: {},
|
|
45
|
-
resizeTimer:
|
|
45
|
+
resizeTimer: void 0
|
|
46
46
|
}), g = V(null), T = V(null);
|
|
47
47
|
p.current.listTypeJson = xe("value", a), p.current.fieldConfig = U || {}, ne(() => (N(), () => {
|
|
48
48
|
clearTimeout(p.current.resizeTimer);
|
|
@@ -243,7 +243,7 @@ const oe = (q) => {
|
|
|
243
243
|
onSearch: O,
|
|
244
244
|
onRefresh: Y
|
|
245
245
|
} = q, Z = ae("Selector", ie), [K, A] = se(!1), [P, k] = se(""), h = V({
|
|
246
|
-
searchTimer:
|
|
246
|
+
searchTimer: void 0,
|
|
247
247
|
searchStr: ""
|
|
248
248
|
});
|
|
249
249
|
ne(() => {
|
|
@@ -34,7 +34,7 @@ const pe = (R) => {
|
|
|
34
34
|
onLevel: b,
|
|
35
35
|
onSelect: D,
|
|
36
36
|
onClose: $
|
|
37
|
-
} = R, k = _("Selector", ee), [F, L] = y(), [M, h] = y(!1), n = Q(), T = () => {
|
|
37
|
+
} = R, k = _("Selector", ee), [F, L] = y(), [M, h] = y(!1), n = Q(null), T = () => {
|
|
38
38
|
a || D && D();
|
|
39
39
|
}, z = (s) => {
|
|
40
40
|
s.stopPropagation(), !v && b && b();
|