@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,179 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "SelectorPicker",
|
|
3
|
+
"category": "Data Entry",
|
|
4
|
+
"description": "选择器弹出框,Selector 的弹出框封装",
|
|
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": "Record<string, any>[] | Record<string, any>",
|
|
30
|
+
"description": "受控选中值;multiple=true 时为对象数组 Record<string,any>[],false 时为单对象 Record<string,any>;清空时 onChange 入参为 null。外部以 string[] key 列表受控时,挂入前用 useMemo data.filter 反查为对象数组(见 api.ts 顶部 C 协议)"
|
|
31
|
+
},
|
|
32
|
+
"defaultValue": {
|
|
33
|
+
"type": "Record<string, any>[] | Record<string, any>",
|
|
34
|
+
"description": "非受控默认值;类型规则同 value"
|
|
35
|
+
},
|
|
36
|
+
"onChange": {
|
|
37
|
+
"type": "(val: Record<string,any>[] | Record<string,any> | null, node: Record<string,any>, rowData: Record<string,any>) => void",
|
|
38
|
+
"description": "值变化回调;multiple 时 val 为数组,否则为单对象;清空时 val=null(回写外部 string[] 时需 ?? [] 兜底);node=节点处理后数据、rowData=原始数据"
|
|
39
|
+
},
|
|
40
|
+
"multiple": {
|
|
41
|
+
"type": "boolean",
|
|
42
|
+
"default": false,
|
|
43
|
+
"description": "是否多选;true 时 value/defaultValue 必须为数组,onChange 入参 val 也为数组"
|
|
44
|
+
},
|
|
45
|
+
"allowClear": {
|
|
46
|
+
"type": "boolean",
|
|
47
|
+
"default": false,
|
|
48
|
+
"description": "是否支持清除已选值;true 时悬停显示清除按钮,触发顺序:onClear() → onChange(null)"
|
|
49
|
+
},
|
|
50
|
+
"selectorProps": {
|
|
51
|
+
"type": "Omit<SelectorProps, 'layout' | 'disabled' | 'value' | 'defaultValue' | 'onChange' | 'selectMode'>",
|
|
52
|
+
"description": "透传给底层 Selector 的属性(data/url/fieldConfig/rowKey/breadcrumbsHead/searchOption/backDataFieldConfig 等);Omit 列出的字段已被 SelectorPicker 接管不可透传;常用子字段速查见 api.ts 顶部 E 协议"
|
|
53
|
+
},
|
|
54
|
+
"tagRender": {
|
|
55
|
+
"type": "(item: Record<string, any>) => React.ReactNode",
|
|
56
|
+
"description": "多选 tag 自定义渲染;入参为已选 list 项对象"
|
|
57
|
+
},
|
|
58
|
+
"size": {
|
|
59
|
+
"type": "'small' | 'medium' | 'large'",
|
|
60
|
+
"values": ["small", "medium", "large"],
|
|
61
|
+
"default": "large",
|
|
62
|
+
"description": "输入框尺寸"
|
|
63
|
+
},
|
|
64
|
+
"placeholder": {
|
|
65
|
+
"type": "string",
|
|
66
|
+
"default": "请选择",
|
|
67
|
+
"description": "未选中时占位文本"
|
|
68
|
+
},
|
|
69
|
+
"getPopupContainer": {
|
|
70
|
+
"type": "(triggerNode: HTMLElement) => HTMLElement",
|
|
71
|
+
"description": "浮层挂载容器;默认 body,Modal 内必传 trigger.parentNode 避免点击穿透"
|
|
72
|
+
},
|
|
73
|
+
"label": {
|
|
74
|
+
"type": "React.ReactNode",
|
|
75
|
+
"description": "标签文案;支持节点(可嵌图标 / Tooltip 触发器)"
|
|
76
|
+
},
|
|
77
|
+
"required": {
|
|
78
|
+
"type": "boolean",
|
|
79
|
+
"default": false,
|
|
80
|
+
"description": "是否必填;true 时 label 前渲染红色 *"
|
|
81
|
+
},
|
|
82
|
+
"disabled": {
|
|
83
|
+
"type": "boolean",
|
|
84
|
+
"default": false,
|
|
85
|
+
"description": "禁用整个选择器(无法点击展开浮层、无法清除)"
|
|
86
|
+
},
|
|
87
|
+
"error": {
|
|
88
|
+
"type": "boolean",
|
|
89
|
+
"default": false,
|
|
90
|
+
"description": "错误状态;输入框边框变红,搭配 helperText 显示错误信息"
|
|
91
|
+
},
|
|
92
|
+
"helperText": {
|
|
93
|
+
"type": "React.ReactNode",
|
|
94
|
+
"description": "辅助文本;error=true 时显示为错误信息,否则显示为常规说明"
|
|
95
|
+
},
|
|
96
|
+
"overLine": {
|
|
97
|
+
"type": "boolean",
|
|
98
|
+
"description": "多选时已选项是否换行;true 换行,false 单行折叠显示 +N"
|
|
99
|
+
}
|
|
100
|
+
},
|
|
101
|
+
"do": [
|
|
102
|
+
"配合 Selector 使用(SelectorPicker 是 Selector 的弹出框封装,所有候选数据走 selectorProps.data 透传给底层 Selector)",
|
|
103
|
+
"外部以 string[](key 列表)受控时,用 useMemo data.find 反查映射为 Record<string,any>[] 后挂入 value(详见 api.ts §C 反向映射模式)",
|
|
104
|
+
"二次封装业务组件时,JSX 内 **受控 prop 写在 {...pickerProps} spread 之后**,后写覆盖保护受控状态(详见 api.ts §D)",
|
|
105
|
+
"提供清空功能(allowClear=true + onClear 监听,onChange 入参 val=null 时回写外部 string[] 用 `?? []` 兜底)"
|
|
106
|
+
],
|
|
107
|
+
"dont": [
|
|
108
|
+
"传 `visible` / `open` / `show` 显隐控制 prop(本组件不存在;父层条件渲染 `{showPicker && <SelectorPicker ... />}` 控制 mount;见 api.ts §A)",
|
|
109
|
+
"selectorProps 透传 `layout` / `disabled` / `value` / `defaultValue` / `onChange` / `selectMode`(已被 SelectorPicker 接管,类型已 Omit,透传无效)",
|
|
110
|
+
"selectorProps 写错字段名:`list`(应为 `data`)/ `keys`(应为 `rowKey`)— 内部不消费会静默失败",
|
|
111
|
+
"二次封装时 `pickerProps?: any` **作为推荐签名**(❌ 不能阻止外部覆盖受控;✅ 推荐 `Omit<SelectorPickerProps, 'value'|'defaultValue'|'onChange'|'multiple'|'selectorProps'>`);**但若需求模板硬性要求 any 签名,见 interpretivePriority 兼容路径**",
|
|
112
|
+
"弹窗内容过于复杂",
|
|
113
|
+
"忽略 placeholder"
|
|
114
|
+
],
|
|
115
|
+
"interpretivePriority": {
|
|
116
|
+
"principle": "**需求模板接口 `pickerProps: any` 与本组件 §D 协议推荐 Omit<...> 冲突时,严格按需求接口签名(api.ts §D-bis 兼容路径)**",
|
|
117
|
+
"reason": "需求接口(requirements/*.json)是观察者制定的固定 spec · 优化 AI 无权改;§D 协议 Omit<...> 是组件库的安全推荐 · sub-agent 不应擅自改需求接口签名;但 anti-pattern any 接口在运行时仍需保护受控状态 → 通过 JSX spread 顺序(受控 prop 写在 spread 之后)实现",
|
|
118
|
+
"resolution": "1. 接口签名照搬需求 `pickerProps: any`(不改) ;2. JSX 写法严格遵 §D 协议(`{...pickerProps} value={...} onChange={...} multiple` — 受控 prop 后写覆盖) ;3. 类型安全靠运行时 spread 顺序,不靠类型层面阻断;详见 api.ts §D-bis 完整代码示例",
|
|
119
|
+
"dataSourceDecisionTree": "data 来源根据需求接口字段决定:(1)接口含 data prop → 直接 selectorProps={{data}} 透传;(2)接口不含 data 字段,只有 pickerProps → 候选数据从 pickerProps.selectorProps.data 透传(`selectorProps={{ ...(pickerProps?.selectorProps ?? {}) }}`),封装层不内置;(3)需求语义为内置固定数据(如部门选择) → 封装层 const data = [...] 然后 selectorProps={{data}};详见 api.ts §D-ter",
|
|
120
|
+
"antiPatterns": [
|
|
121
|
+
"❌ 看到需求接口 `pickerProps: any` 后,擅自改为 Omit<...> 违背需求 spec",
|
|
122
|
+
"❌ 接口写 any,JSX 把 spread 放在受控 prop 之后(`<SelectorPicker value={...} onChange={...} {...pickerProps} />` — 外部 pickerProps 覆盖受控状态)",
|
|
123
|
+
"❌ 二次封装时,封装层 hardcode 候选数据而不查需求接口字段(需求接口若含 data prop 应透传,不应硬编码)"
|
|
124
|
+
],
|
|
125
|
+
"correctPatterns": [
|
|
126
|
+
"✅ 接口签名 `pickerProps: any`(照搬需求) + JSX `<SelectorPicker {...pickerProps} value={...} onChange={...} multiple selectorProps={{ data }} />`(受控后写覆盖)",
|
|
127
|
+
"✅ 看需求接口:若有 data prop → `selectorProps={{ data }}`;若无 data 字段但有 pickerProps → `selectorProps={{ ...(pickerProps?.selectorProps ?? {}) }}`(透传外部数据);若需求要求'内置部门列表'业务语义 → 封装层 const data = [...] hardcode"
|
|
128
|
+
]
|
|
129
|
+
},
|
|
130
|
+
"events": {
|
|
131
|
+
"onChange": {
|
|
132
|
+
"signature": "(val: Record<string,any>[] | Record<string,any> | null, node: Record<string,any>, rowData: Record<string,any>) => void",
|
|
133
|
+
"asyncSupported": false,
|
|
134
|
+
"examples": [
|
|
135
|
+
"单选时 val 是单对象,多选时 val 是对象数组,清空时 val 是 null",
|
|
136
|
+
"受控外部 string[] 场景:onChange={(val) => setIds(val ? (Array.isArray(val) ? val : [val]).map(it => it[rowKey]) : [])}",
|
|
137
|
+
"清空时兜底:setIds((val ?? []) instanceof Array ? val.map(it => it.key) : [])"
|
|
138
|
+
],
|
|
139
|
+
"commonMistakes": [
|
|
140
|
+
"清空时期望 val 是 [] 而非 null——清空时 val=null,需 ?? [] 兜底",
|
|
141
|
+
"multiple=false 期望 val 是数组——单选 val 是单对象,需按模式分支处理",
|
|
142
|
+
"忽略第二三参 node/rowData——node 是内部处理后的数据,rowData 是原始数据,两者都是对象 Map(key=rowKey)"
|
|
143
|
+
]
|
|
144
|
+
},
|
|
145
|
+
"onClear": {
|
|
146
|
+
"signature": "() => void",
|
|
147
|
+
"asyncSupported": false,
|
|
148
|
+
"examples": [
|
|
149
|
+
"用户点击清除按钮时先触发 onClear,再触发 onChange(null, {}, {})",
|
|
150
|
+
"受控场景需同时监听 onClear 和 onChange 才能完整捕获清空"
|
|
151
|
+
],
|
|
152
|
+
"commonMistakes": [
|
|
153
|
+
"只监听 onClear 而不监听 onChange——受控 value 不会自动清空,需在 onChange 里同步 state",
|
|
154
|
+
"allowClear=false 时期望 onClear 触发——allowClear=false 不显示清除按钮,onClear 不会触发"
|
|
155
|
+
]
|
|
156
|
+
}
|
|
157
|
+
},
|
|
158
|
+
"typescriptPitfalls": [
|
|
159
|
+
{
|
|
160
|
+
"issue": "selectorProps 透传了已被 SelectorPicker 接管的字段(如 layout/disabled/value/onChange/selectMode),TypeScript 报 Omit 类型错误",
|
|
161
|
+
"wrong": "selectorProps={{ layout: 'lr', value: [...], onChange: handler }} // 这些字段已 Omit",
|
|
162
|
+
"right": "selectorProps={{ data: [...], rowKey: 'id', fieldConfig: { mainTitle: 'name' } }} // 只传未 Omit 的字段"
|
|
163
|
+
},
|
|
164
|
+
{
|
|
165
|
+
"issue": "multiple=true 时 value 传单对象而非数组,受控不生效",
|
|
166
|
+
"wrong": "multiple={true} value={{ key: '1' }} // multiple 时 value 必须是 Record<string,any>[]",
|
|
167
|
+
"right": "multiple={true} value={[{ key: '1' }]} // 数组包裹"
|
|
168
|
+
},
|
|
169
|
+
{
|
|
170
|
+
"issue": "selectorProps 传 data 字段名拼错(如 list/items),候选数据静默失败",
|
|
171
|
+
"wrong": "selectorProps={{ list: myData }} // Selector 内部读 data,不读 list",
|
|
172
|
+
"right": "selectorProps={{ data: myData }} // Selector prop 名是 data"
|
|
173
|
+
}
|
|
174
|
+
],
|
|
175
|
+
"mapping": {
|
|
176
|
+
"realComponent": "SelectorPicker",
|
|
177
|
+
"adapter": null
|
|
178
|
+
}
|
|
179
|
+
}
|
|
@@ -31,15 +31,15 @@ export interface SelectorPickerProps extends HelperTextDetailProps {
|
|
|
31
31
|
/** 支持清除 */
|
|
32
32
|
allowClear?: boolean;
|
|
33
33
|
/** 值 */
|
|
34
|
-
value?: Record<string,
|
|
34
|
+
value?: Record<string, unknown>[] | Record<string, unknown>;
|
|
35
35
|
/** 默认值 不受控 */
|
|
36
|
-
defaultValue?: Record<string,
|
|
36
|
+
defaultValue?: Record<string, unknown>[] | Record<string, unknown>;
|
|
37
37
|
/** 自定义tag内容 */
|
|
38
|
-
tagRender?: (item:
|
|
38
|
+
tagRender?: (item: Record<string, unknown>) => ReactNode;
|
|
39
39
|
/** 清除回调 */
|
|
40
40
|
onClear?: () => void;
|
|
41
41
|
/** 改变事件 val绑定值, node处理过的数据 rowData原始数据 */
|
|
42
|
-
onChange?: (val: Record<string,
|
|
42
|
+
onChange?: (val: Record<string, unknown>[] | Record<string, unknown> | null, node: Record<string, unknown>, rowData: Record<string, unknown>) => void;
|
|
43
43
|
/** 选择器属性 */
|
|
44
44
|
selectorProps?: Omit<SelectorProps, 'layout' | 'disabled' | 'value' | 'defaultValue' | 'disabled' | 'onChange' | 'selectMode'>;
|
|
45
45
|
/** 浮层渲染容器 */
|
|
@@ -48,7 +48,7 @@ export interface SelectorPickerProps extends HelperTextDetailProps {
|
|
|
48
48
|
morePopoverClassName?: string;
|
|
49
49
|
/** 下拉框className */
|
|
50
50
|
overlayClassName?: string;
|
|
51
|
-
[name: string]:
|
|
51
|
+
[name: string]: unknown;
|
|
52
52
|
}
|
|
53
53
|
declare const SelectorPicker: React.FC<SelectorPickerProps>;
|
|
54
54
|
export default SelectorPicker;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { j as r } from "../_virtual/jsx-runtime.js";
|
|
2
2
|
import { useState as b, useRef as Q, useEffect as U } from "react";
|
|
3
3
|
import X from "clsx";
|
|
4
|
-
import
|
|
4
|
+
import Ne from "../HelperText/index.js";
|
|
5
5
|
import Pe from "../Label/index.js";
|
|
6
6
|
import { Dropdown as $e } from "../Dropdown/index.js";
|
|
7
7
|
import Te, { handFieldConfig as Ve } from "../Selector/index.js";
|
|
@@ -20,7 +20,7 @@ const er = (C) => {
|
|
|
20
20
|
className: Z,
|
|
21
21
|
label: S,
|
|
22
22
|
value: w,
|
|
23
|
-
defaultValue:
|
|
23
|
+
defaultValue: y,
|
|
24
24
|
required: z = !1,
|
|
25
25
|
labelTooltip: _,
|
|
26
26
|
error: D = !1,
|
|
@@ -35,10 +35,10 @@ const er = (C) => {
|
|
|
35
35
|
allowClear: H = !1,
|
|
36
36
|
overLine: f = !1,
|
|
37
37
|
selectorProps: L,
|
|
38
|
-
onChange:
|
|
38
|
+
onChange: A,
|
|
39
39
|
onClear: ne,
|
|
40
40
|
tagRender: a,
|
|
41
|
-
morePopoverClassName:
|
|
41
|
+
morePopoverClassName: F,
|
|
42
42
|
getPopupContainer: oe,
|
|
43
43
|
overlayClassName: se
|
|
44
44
|
} = C, u = {
|
|
@@ -48,12 +48,12 @@ const er = (C) => {
|
|
|
48
48
|
),
|
|
49
49
|
...C.selectorProps?.backDataFieldConfig
|
|
50
50
|
}, [K, ce] = b(
|
|
51
|
-
|
|
52
|
-
), [O, j] = b(!1), [R, q] = b(!1), [s,
|
|
51
|
+
y || []
|
|
52
|
+
), [O, j] = b(!1), [R, q] = b(!1), [s, N] = b(null), h = Q(null), t = Q({ list: [] }), o = `${c}-selector-picker`;
|
|
53
53
|
t.current.value = w, t.current.valueCom = K, t.current.openMore = R;
|
|
54
54
|
const J = () => t.current.value !== void 0 ? t.current.value : t.current.valueCom, ie = () => {
|
|
55
55
|
const e = J();
|
|
56
|
-
let l = e ? [e] : [];
|
|
56
|
+
let l = e ? Array.isArray(e) ? e : [e] : [];
|
|
57
57
|
return e instanceof Array && (l = [...e]), l;
|
|
58
58
|
};
|
|
59
59
|
t.current.list = ie(), U(() => (!f && d ? window.addEventListener("resize", k) : window.removeEventListener("resize", k), () => {
|
|
@@ -70,18 +70,18 @@ const er = (C) => {
|
|
|
70
70
|
if (n)
|
|
71
71
|
if (n.scrollHeight > n.clientHeight) {
|
|
72
72
|
const v = Number(e) - 1;
|
|
73
|
-
|
|
73
|
+
N(v), W(v);
|
|
74
74
|
} else
|
|
75
75
|
t.current.list.length <= e && G();
|
|
76
76
|
}, k = () => {
|
|
77
|
-
if (t.current.list.length === 0) return
|
|
77
|
+
if (t.current.list.length === 0) return N(null);
|
|
78
78
|
clearTimeout(t.current.resizeTimer), t.current.resizeTimer = setTimeout(() => {
|
|
79
|
-
|
|
79
|
+
N(t.current.list.length), W();
|
|
80
80
|
}, 50);
|
|
81
81
|
}, B = (e, l, n) => {
|
|
82
82
|
n.stopPropagation(), t.current.list.splice(l, 1), P([...t.current.list], {}, {});
|
|
83
83
|
}, P = (e, l, n) => {
|
|
84
|
-
|
|
84
|
+
A && A(e, l, n), d || j(!1), w === void 0 && ce(e || []);
|
|
85
85
|
}, ae = () => {
|
|
86
86
|
if (S || z)
|
|
87
87
|
return /* @__PURE__ */ r.jsx(
|
|
@@ -98,7 +98,7 @@ const er = (C) => {
|
|
|
98
98
|
disabled: i,
|
|
99
99
|
selectMode: d ? "check" : "radio",
|
|
100
100
|
value: J(),
|
|
101
|
-
defaultValue:
|
|
101
|
+
defaultValue: y,
|
|
102
102
|
onChange: P,
|
|
103
103
|
...L
|
|
104
104
|
});
|
|
@@ -131,7 +131,7 @@ const er = (C) => {
|
|
|
131
131
|
className: T ? "check-select-content-item" : "check-select-content-item check-select-content-item-noclose",
|
|
132
132
|
children: [
|
|
133
133
|
/* @__PURE__ */ r.jsx("span", { children: /* @__PURE__ */ r.jsx(V, { placement: "top-start", children: we || be }) }),
|
|
134
|
-
T && /* @__PURE__ */ r.jsx(Y, { onClick: (
|
|
134
|
+
T && /* @__PURE__ */ r.jsx(Y, { onClick: (ye) => B?.(p, m, ye) })
|
|
135
135
|
]
|
|
136
136
|
},
|
|
137
137
|
m
|
|
@@ -186,7 +186,7 @@ const er = (C) => {
|
|
|
186
186
|
}) })
|
|
187
187
|
] }), ge = () => {
|
|
188
188
|
let e = `${c}-selector-more-popover ${c}-scrollbar-small`;
|
|
189
|
-
return g && (e += ` ${c}-selector-more-popover-${g}`),
|
|
189
|
+
return g && (e += ` ${c}-selector-more-popover-${g}`), F && (e += ` ${F}`), e;
|
|
190
190
|
}, I = () => /* @__PURE__ */ r.jsx(
|
|
191
191
|
Me,
|
|
192
192
|
{
|
|
@@ -238,7 +238,7 @@ const er = (C) => {
|
|
|
238
238
|
ae(),
|
|
239
239
|
je(),
|
|
240
240
|
/* @__PURE__ */ r.jsx(
|
|
241
|
-
|
|
241
|
+
Ne,
|
|
242
242
|
{
|
|
243
243
|
error: D,
|
|
244
244
|
helperText: re,
|
|
@@ -0,0 +1,151 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "SingleBox",
|
|
3
|
+
"category": "Data Entry",
|
|
4
|
+
"description": "逐行多值列表输入框(每行一个值,整体以 string[] 数组收集 · 支持自动补全)",
|
|
5
|
+
"semantic": {
|
|
6
|
+
"intent": [
|
|
7
|
+
"多值列表输入(逐行)",
|
|
8
|
+
"标签集合录入",
|
|
9
|
+
"自动补全"
|
|
10
|
+
],
|
|
11
|
+
"useCases": [
|
|
12
|
+
"多关键词输入(每行一个)",
|
|
13
|
+
"标签批量录入",
|
|
14
|
+
"多值配置项"
|
|
15
|
+
],
|
|
16
|
+
"riskLevel": "low"
|
|
17
|
+
},
|
|
18
|
+
"variants": {
|
|
19
|
+
"default": {
|
|
20
|
+
"meaning": "默认样式"
|
|
21
|
+
}
|
|
22
|
+
},
|
|
23
|
+
"states": [
|
|
24
|
+
"default",
|
|
25
|
+
"disabled",
|
|
26
|
+
"error"
|
|
27
|
+
],
|
|
28
|
+
"idealProps": {
|
|
29
|
+
"value": {
|
|
30
|
+
"type": "array",
|
|
31
|
+
"itemType": "string",
|
|
32
|
+
"description": "受控值 string[],与 defaultValue 互斥(必须配合 onChange 同步)。**业务 string 单值桥接**(协议 SB1):`value={s ? [s] : []}`;**value=[] 行为**(协议 SB2):自动渲染一个空 input 行"
|
|
33
|
+
},
|
|
34
|
+
"defaultValue": {
|
|
35
|
+
"type": "array",
|
|
36
|
+
"itemType": "string",
|
|
37
|
+
"description": "非受控默认值,与 value 互斥,仅首次 mount 生效"
|
|
38
|
+
},
|
|
39
|
+
"onChange": {
|
|
40
|
+
"type": "function",
|
|
41
|
+
"signature": "(val: string[]) => void",
|
|
42
|
+
"description": "值变更回调,val 是当前所有行的完整数组快照。**业务 string 单值桥接**(协议 SB1):`(val) => setKeyword(val[0] ?? '')`;**val 永远至少 [''])**(协议 SB3);**disabled+受控**仍需传 onChange(空函数避免 warning)"
|
|
43
|
+
},
|
|
44
|
+
"fetchSuggestions": {
|
|
45
|
+
"type": "function",
|
|
46
|
+
"signature": "(val: string, cb: (data: any[]) => void) => void",
|
|
47
|
+
"description": "自动补全数据源,存在时每行 input 启用联想。cb 数据可为 string[](直接显示)或 {label, value}[](按 label 显示)"
|
|
48
|
+
},
|
|
49
|
+
"size": {
|
|
50
|
+
"type": "enum",
|
|
51
|
+
"values": [
|
|
52
|
+
"small",
|
|
53
|
+
"medium",
|
|
54
|
+
"large"
|
|
55
|
+
],
|
|
56
|
+
"default": "large",
|
|
57
|
+
"description": "控件大小"
|
|
58
|
+
},
|
|
59
|
+
"disabled": {
|
|
60
|
+
"type": "boolean",
|
|
61
|
+
"default": false,
|
|
62
|
+
"description": "禁用整组输入,可配合 disabledTooltip 解释原因"
|
|
63
|
+
},
|
|
64
|
+
"required": {
|
|
65
|
+
"type": "boolean",
|
|
66
|
+
"default": false,
|
|
67
|
+
"description": "必填(透传到 Label 显示星号)"
|
|
68
|
+
},
|
|
69
|
+
"label": {
|
|
70
|
+
"type": "ReactNode",
|
|
71
|
+
"description": "标题"
|
|
72
|
+
},
|
|
73
|
+
"placeholder": {
|
|
74
|
+
"type": "ReactNode",
|
|
75
|
+
"description": "每行 input 占位"
|
|
76
|
+
},
|
|
77
|
+
"helperText": {
|
|
78
|
+
"type": "ReactNode | ReactNode[]",
|
|
79
|
+
"description": "错误文本,单值=所有行共享;数组=按行下标对应,空串项表示该行无错"
|
|
80
|
+
},
|
|
81
|
+
"disabledTooltip": {
|
|
82
|
+
"type": "TooltipProps",
|
|
83
|
+
"description": "禁用态下添加按钮的 tooltip 配置(仅 disabled=true 时生效)"
|
|
84
|
+
},
|
|
85
|
+
"otherProps": {
|
|
86
|
+
"type": "(index: number, val: string) => TextFieldProps",
|
|
87
|
+
"description": "每行 TextField 的额外 props;index 是行下标(0-based),返回对象展开到该行 TextField"
|
|
88
|
+
}
|
|
89
|
+
},
|
|
90
|
+
"crossPropInteractions": [
|
|
91
|
+
"value=[] / [''] = 渲染一个空 input 行(自动归一化)",
|
|
92
|
+
"业务 string ↔ SingleBox string[] 桥接 = 入站 [s] + 出站 val[0] ?? ''(协议 SB1)",
|
|
93
|
+
"disabled=true = 隐藏添加/删除按钮 + 所有 input 只读;受控仍需传 onChange",
|
|
94
|
+
"helperText[] 按行下标对应 + value[] 行数 = 错误信息可逐行显示",
|
|
95
|
+
"fetchSuggestions + otherProps = 联想 + 按行定制(如某行 maxLength)"
|
|
96
|
+
],
|
|
97
|
+
"commonMisconceptions": [
|
|
98
|
+
"❌ SingleBox 是单值输入框 — 实际 value 是 string[](多行)",
|
|
99
|
+
"❌ value=[] 不显示输入框 — 自动渲染一个空 input 行",
|
|
100
|
+
"❌ 删除所有行后 onChange 给 [] — 实际最少 [''](组件保留一行)",
|
|
101
|
+
"❌ disabled+受控可省略 onChange — 仍需传(空函数)避免 React warning",
|
|
102
|
+
"❌ 业务 string 直接传 value — 必须 [s] 包装,onChange 取 val[0]"
|
|
103
|
+
],
|
|
104
|
+
"do": [
|
|
105
|
+
"支持自动完成",
|
|
106
|
+
"提供建议列表",
|
|
107
|
+
"业务单值场景用 [s] 包装 value + (val) => val[0] ?? '' 出站桥接"
|
|
108
|
+
],
|
|
109
|
+
"dont": [
|
|
110
|
+
"建议列表过长",
|
|
111
|
+
"忽略去重",
|
|
112
|
+
"把 SingleBox 当单值 TextField 用(它是多值列表,建议用 TextField)"
|
|
113
|
+
],
|
|
114
|
+
"events": {
|
|
115
|
+
"onChange": {
|
|
116
|
+
"signature": "(val: string[]) => void",
|
|
117
|
+
"asyncSupported": false,
|
|
118
|
+
"examples": [
|
|
119
|
+
"val 是所有行当前值的完整数组快照,如 ['keyword1', 'keyword2', '']",
|
|
120
|
+
"业务单值桥接:onChange={(val) => setSingleKeyword(val[0] ?? '')}",
|
|
121
|
+
"删除最后一行后 val 仍是 [''](保留至少一行空 input)"
|
|
122
|
+
],
|
|
123
|
+
"commonMistakes": [
|
|
124
|
+
"期望删除所有行后 onChange 返回 [] ——组件保留最少一行,val 永远是 [''] 或更多",
|
|
125
|
+
"disabled+受控时省略 onChange——仍需传(可传空函数)否则 React 报 prop 变化 warning",
|
|
126
|
+
"业务 string 直接传 value——必须 [s] 包装,onChange 取 val[0] ?? ''"
|
|
127
|
+
]
|
|
128
|
+
}
|
|
129
|
+
},
|
|
130
|
+
"typescriptPitfalls": [
|
|
131
|
+
{
|
|
132
|
+
"issue": "value 类型是 string[],传单个 string 报 TS 类型不兼容",
|
|
133
|
+
"wrong": "value={keyword} // keyword: string,TS 报不兼容 string[]",
|
|
134
|
+
"right": "value={keyword ? [keyword] : ['']} // 桥接:string → string[]"
|
|
135
|
+
},
|
|
136
|
+
{
|
|
137
|
+
"issue": "helperText 传数组时数组下标必须与 value 数组行数对齐",
|
|
138
|
+
"wrong": "value={['a','b']} helperText={['err0']} // 仅第 0 行报错,第 1 行错误无文案但不会静默",
|
|
139
|
+
"right": "value={['a','b']} helperText={['err0', 'err1']} // 按行下标一一对应"
|
|
140
|
+
},
|
|
141
|
+
{
|
|
142
|
+
"issue": "otherProps 函数需要返回完整 TextFieldProps 对象,类型不对会扩散到每行 TextField",
|
|
143
|
+
"wrong": "otherProps={(i) => i === 0 ? { maxLength: 10 } : null} // null 不满足 TextFieldProps",
|
|
144
|
+
"right": "otherProps={(i) => i === 0 ? { maxLength: 10 } : {}} // 非目标行返回空对象"
|
|
145
|
+
}
|
|
146
|
+
],
|
|
147
|
+
"mapping": {
|
|
148
|
+
"realComponent": "SingleBox",
|
|
149
|
+
"adapter": null
|
|
150
|
+
}
|
|
151
|
+
}
|
package/es/SingleBox/index.d.ts
CHANGED
|
@@ -37,10 +37,10 @@ export interface SingleBoxProps extends HelperTextDetailProps {
|
|
|
37
37
|
/** 改变值 */
|
|
38
38
|
onChange?: (val: string[]) => void;
|
|
39
39
|
/** 匹配 */
|
|
40
|
-
fetchSuggestions?: (val: string, cb: (data:
|
|
40
|
+
fetchSuggestions?: (val: string, cb: (data: Record<string, unknown>[]) => void) => void;
|
|
41
41
|
/** 输入框其他参数 */
|
|
42
42
|
otherProps?: (index: number, val: string) => TextFieldProps;
|
|
43
|
-
[name: string]:
|
|
43
|
+
[name: string]: unknown;
|
|
44
44
|
}
|
|
45
45
|
export declare const SingleBox: FunctionComponent<SingleBoxProps>;
|
|
46
46
|
export default SingleBox;
|
|
@@ -0,0 +1,181 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "Slider",
|
|
3
|
+
"category": "Data Entry",
|
|
4
|
+
"description": "滑动输入条,用于在给定范围内选择一个值或范围",
|
|
5
|
+
"semantic": {
|
|
6
|
+
"intent": [
|
|
7
|
+
"数值调节",
|
|
8
|
+
"范围选择",
|
|
9
|
+
"模糊输入"
|
|
10
|
+
],
|
|
11
|
+
"useCases": [
|
|
12
|
+
"音量调节",
|
|
13
|
+
"价格筛选",
|
|
14
|
+
"亮度调整"
|
|
15
|
+
],
|
|
16
|
+
"riskLevel": "low"
|
|
17
|
+
},
|
|
18
|
+
"variants": {
|
|
19
|
+
"default": {
|
|
20
|
+
"meaning": "单滑块"
|
|
21
|
+
},
|
|
22
|
+
"range": {
|
|
23
|
+
"meaning": "双滑块范围选择"
|
|
24
|
+
}
|
|
25
|
+
},
|
|
26
|
+
"states": [
|
|
27
|
+
"default",
|
|
28
|
+
"disabled"
|
|
29
|
+
],
|
|
30
|
+
"idealProps": {
|
|
31
|
+
"value": {
|
|
32
|
+
"type": "number | number[]",
|
|
33
|
+
"description": "当前取值;range 模式下传 [min, max] 数组"
|
|
34
|
+
},
|
|
35
|
+
"defaultValue": {
|
|
36
|
+
"type": "number | number[]",
|
|
37
|
+
"description": "默认取值"
|
|
38
|
+
},
|
|
39
|
+
"min": {
|
|
40
|
+
"type": "number",
|
|
41
|
+
"default": 0,
|
|
42
|
+
"description": "最小值"
|
|
43
|
+
},
|
|
44
|
+
"max": {
|
|
45
|
+
"type": "number",
|
|
46
|
+
"default": 100,
|
|
47
|
+
"description": "最大值"
|
|
48
|
+
},
|
|
49
|
+
"step": {
|
|
50
|
+
"type": "number",
|
|
51
|
+
"default": 1,
|
|
52
|
+
"description": "步长"
|
|
53
|
+
},
|
|
54
|
+
"range": {
|
|
55
|
+
"type": "boolean | { draggableTrack?: boolean }",
|
|
56
|
+
"description": "双滑块模式(核心 prop);传 true 时 value 变为 [min, max] 数组;传 { draggableTrack: true } 时允许拖拽整段轨道",
|
|
57
|
+
"default": false,
|
|
58
|
+
"required": false
|
|
59
|
+
},
|
|
60
|
+
"vertical": {
|
|
61
|
+
"type": "boolean",
|
|
62
|
+
"description": "垂直方向",
|
|
63
|
+
"default": false,
|
|
64
|
+
"required": false
|
|
65
|
+
},
|
|
66
|
+
"dots": {
|
|
67
|
+
"type": "boolean",
|
|
68
|
+
"description": "是否只能拖拽到刻度上(配合 marks 使用)",
|
|
69
|
+
"default": false,
|
|
70
|
+
"required": false
|
|
71
|
+
},
|
|
72
|
+
"tipFormatter": {
|
|
73
|
+
"type": "function",
|
|
74
|
+
"signature": "(value: number) => ReactNode | null",
|
|
75
|
+
"description": "格式化 Tooltip 显示;传 null 隐藏 Tooltip",
|
|
76
|
+
"required": false
|
|
77
|
+
},
|
|
78
|
+
"onAfterChange": {
|
|
79
|
+
"type": "function",
|
|
80
|
+
"signature": "(value: number | number[]) => void",
|
|
81
|
+
"description": "mouseup 时触发;与 onChange 区别:onChange 是拖拽过程中实时触发,onAfterChange 仅在释放后触发一次",
|
|
82
|
+
"required": false
|
|
83
|
+
},
|
|
84
|
+
"onChange": {
|
|
85
|
+
"type": "function",
|
|
86
|
+
"signature": "(value: number | number[]) => void",
|
|
87
|
+
"description": "值改变回调(拖拽过程实时触发);range 模式下 value 是 [min, max] 数组"
|
|
88
|
+
},
|
|
89
|
+
"disabled": {
|
|
90
|
+
"type": "boolean",
|
|
91
|
+
"default": false,
|
|
92
|
+
"description": "是否禁用"
|
|
93
|
+
},
|
|
94
|
+
"marks": {
|
|
95
|
+
"type": "object",
|
|
96
|
+
"objectShape": {
|
|
97
|
+
"[number]": { "type": "string | ReactNode", "description": "刻度值 → 显示标签,例:{ 0: '0°C', 26: '26°C', 100: '100°C' }" }
|
|
98
|
+
},
|
|
99
|
+
"completeExample": "{ 0: '0°C', 26: '26°C', 37: '37°C', 100: { style: { color: '#f50' }, label: <strong>100°C</strong> } }",
|
|
100
|
+
"description": "刻度标记"
|
|
101
|
+
},
|
|
102
|
+
"tooltipVisible": {
|
|
103
|
+
"type": "boolean",
|
|
104
|
+
"description": "Tooltip 是否可见"
|
|
105
|
+
},
|
|
106
|
+
"tooltipPlacement": {
|
|
107
|
+
"type": "enum",
|
|
108
|
+
"values": [
|
|
109
|
+
"top",
|
|
110
|
+
"bottom",
|
|
111
|
+
"left",
|
|
112
|
+
"right",
|
|
113
|
+
"topLeft",
|
|
114
|
+
"topRight",
|
|
115
|
+
"bottomLeft",
|
|
116
|
+
"bottomRight"
|
|
117
|
+
],
|
|
118
|
+
"default": "top",
|
|
119
|
+
"description": "Tooltip 位置"
|
|
120
|
+
}
|
|
121
|
+
},
|
|
122
|
+
"do": [
|
|
123
|
+
"在需要快速调节数值且对精度要求不高时使用",
|
|
124
|
+
"使用 marks 辅助用户定位常用值(配合 dots=true 让用户只能拖到刻度位置)",
|
|
125
|
+
"受控用法:value + onChange 实现受控;range 模式 value 必须是 number[] 数组([min, max])",
|
|
126
|
+
"高精度场景搭配 InputNumber:onChange 实时同步到 InputNumber,onAfterChange 仅在释放后更新"
|
|
127
|
+
],
|
|
128
|
+
"dont": [
|
|
129
|
+
"在需要极高精度输入的场景单纯依赖 Slider(应配合 InputNumber)",
|
|
130
|
+
"范围极小(如 0-1)时使用 Slider——步长精度和 UI 交互体验差",
|
|
131
|
+
"range 模式 value 传单 number 而非 number[]——会导致 rc-slider 报 PropTypes warning 并功能异常"
|
|
132
|
+
],
|
|
133
|
+
"events": {
|
|
134
|
+
"onChange": {
|
|
135
|
+
"signature": "(value: number | number[]) => void",
|
|
136
|
+
"asyncSupported": false,
|
|
137
|
+
"examples": [
|
|
138
|
+
"单滑块:onChange={(val) => setVolume(val as number)}",
|
|
139
|
+
"范围滑块(range=true):onChange={(val) => setRange(val as number[])}",
|
|
140
|
+
"拖拽过程中实时触发,高频触发时应注意性能(可用 onAfterChange 替代)"
|
|
141
|
+
],
|
|
142
|
+
"commonMistakes": [
|
|
143
|
+
"range 模式期望 value 是单 number——range=true 时 value 始终是 number[2]",
|
|
144
|
+
"混淆 onChange 和 onAfterChange——onChange 拖拽过程高频触发,onAfterChange 仅 mouseup 时触发一次",
|
|
145
|
+
"tipFormatter 传 null 后期望 onChange 仍提供 tooltip 展示——null 表示完全隐藏 tooltip"
|
|
146
|
+
]
|
|
147
|
+
},
|
|
148
|
+
"onAfterChange": {
|
|
149
|
+
"signature": "(value: number | number[]) => void",
|
|
150
|
+
"asyncSupported": false,
|
|
151
|
+
"examples": [
|
|
152
|
+
"用户释放滑块时触发一次,适合触发网络请求或昂贵计算",
|
|
153
|
+
"range 模式:value 是 [min, max] 数组"
|
|
154
|
+
],
|
|
155
|
+
"commonMistakes": [
|
|
156
|
+
"期望 onAfterChange 在拖拽过程中实时触发——只有 mouseup 时才触发,拖拽中用 onChange"
|
|
157
|
+
]
|
|
158
|
+
}
|
|
159
|
+
},
|
|
160
|
+
"typescriptPitfalls": [
|
|
161
|
+
{
|
|
162
|
+
"issue": "range 模式 value/onChange 类型是 number[],非 range 模式是 number,混用报 TS 错",
|
|
163
|
+
"wrong": "range value={50} onChange={(v) => setVal(v)} // range=true 时 v 是 number[],赋给 number 报错",
|
|
164
|
+
"right": "range value={[20, 80]} onChange={(v) => setRange(v as number[])} // range=true 显式 as number[]"
|
|
165
|
+
},
|
|
166
|
+
{
|
|
167
|
+
"issue": "SliderSingleProps 和 SliderRangeProps 是 union 类型,直接展开 props 时 TS 可能报不兼容",
|
|
168
|
+
"wrong": "const sliderProps: SliderSingleProps = { range: true, value: [0,50] } // range=true 应用 SliderRangeProps",
|
|
169
|
+
"right": "const sliderProps: SliderRangeProps = { range: true, value: [0, 50], onChange: (v) => setRange(v) }"
|
|
170
|
+
},
|
|
171
|
+
{
|
|
172
|
+
"issue": "tipFormatter 传 null 和不传的行为不同",
|
|
173
|
+
"wrong": "tipFormatter={null} // 期望默认格式化显示——null 表示完全隐藏 tooltip",
|
|
174
|
+
"right": "tipFormatter={undefined} // 不传或 undefined 使用内置 toString 格式化;null 隐藏 tooltip"
|
|
175
|
+
}
|
|
176
|
+
],
|
|
177
|
+
"mapping": {
|
|
178
|
+
"realComponent": "Slider",
|
|
179
|
+
"adapter": null
|
|
180
|
+
}
|
|
181
|
+
}
|