@para-ui/core 5.0.0-beta.11 → 5.0.0-beta.13
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/AGENTS.md +315 -0
- package/AlignBox/component.json +89 -0
- package/Anchor/component.json +130 -0
- package/Argv/component.json +216 -0
- package/AutoBox/component.json +133 -0
- package/AutoButton/component.json +109 -0
- package/AutoTips/component.json +121 -0
- package/Badge/component.json +92 -0
- package/Breadcrumbs/component.json +142 -0
- package/Button/component.json +168 -0
- package/ButtonGroup/component.json +132 -0
- package/Card/component.json +162 -0
- package/Carousel/component.json +142 -0
- package/Cascader/component.json +196 -0
- package/Checkbox/component.json +138 -0
- package/CheckboxGroup/component.json +152 -0
- package/CodeEditor/component.json +189 -0
- package/Collapse/component.json +166 -0
- package/CollapseBox/component.json +84 -0
- package/CollapseLayout/component.json +155 -0
- package/ColorPicker/component.json +142 -0
- package/ComboSelect/component.json +181 -0
- package/Container/component.json +111 -0
- package/ContentBox/component.json +81 -0
- package/CopyText/component.json +118 -0
- package/CycleSelector/component.json +98 -0
- package/DatePicker/component.json +192 -0
- package/Descriptions/component.json +142 -0
- package/Desktop/component.json +171 -0
- package/DragVerify/component.json +114 -0
- package/Drawer/component.json +200 -0
- package/Dropdown/component.json +147 -0
- package/DynamicMultiBox/component.json +278 -0
- package/Empty/component.json +123 -0
- package/FieldForm/component.json +196 -0
- package/Form/component.json +161 -0
- package/FormItem/component.json +171 -0
- package/FunctionModal/component.json +197 -0
- package/Help/component.json +118 -0
- package/HelperText/component.json +126 -0
- package/Image/component.json +165 -0
- package/InputCode/component.json +191 -0
- package/InputLang/component.json +205 -0
- package/InputNumber/component.json +162 -0
- package/Label/component.json +126 -0
- package/Loading/component.json +91 -0
- package/Menu/component.json +180 -0
- package/Message/component.json +246 -0
- package/Modal/component.json +277 -0
- package/MultiBox/component.json +216 -0
- package/Notification/component.json +184 -0
- package/OperateBtn/component.json +134 -0
- package/PageHeader/component.json +112 -0
- package/Pagination/component.json +181 -0
- package/PasswordRules/component.json +105 -0
- package/PopConfirm/component.json +227 -0
- package/PopMenu/component.json +131 -0
- package/Popover/component.json +165 -0
- package/Progress/component.json +161 -0
- package/Prompt/component.json +144 -0
- package/Querying/component.json +96 -0
- package/QuickReply/component.json +129 -0
- package/Radio/component.json +136 -0
- package/RadioGroup/component.json +149 -0
- package/RangeInput/component.json +198 -0
- package/Result/component.json +104 -0
- package/ScrollBar/component.json +115 -0
- package/Search/component.json +177 -0
- package/Select/component.json +244 -0
- package/SelectInput/component.json +184 -0
- package/Selector/component.json +203 -0
- package/SelectorPicker/component.json +179 -0
- package/SingleBox/component.json +151 -0
- package/Slider/component.json +181 -0
- package/SortBox/component.json +108 -0
- package/Status/component.json +104 -0
- package/Stepper/component.json +129 -0
- package/Switch/component.json +207 -0
- package/Table/component.json +547 -0
- package/Tabs/component.json +227 -0
- package/Tag/component.json +221 -0
- package/TextEditor/component.json +186 -0
- package/TextField/component.json +290 -0
- package/TimePicker/component.json +176 -0
- package/Timeline/component.json +110 -0
- package/Title/component.json +156 -0
- package/ToggleButton/component.json +153 -0
- package/Tooltip/component.json +176 -0
- package/Transfer/component.json +157 -0
- package/Tree/component.json +512 -0
- package/Upload/component.json +450 -0
- package/ai-workflows/01-crud-list-multi-drawer.md +278 -0
- package/ai-workflows/02-rbac-operation-buttons.md +290 -0
- package/ai-workflows/03-complex-form-async-cascade.md +350 -0
- package/ai-workflows/04-array-field-form.md +281 -0
- package/ai-workflows/05-popconfirm-async-message-queue.md +333 -0
- package/ai-workflows/06-modal-drawer-form-workflow.md +385 -0
- package/ai-workflows/07-search-filter-table-trio.md +387 -0
- package/ai-workflows/08-table-advanced-features.md +365 -0
- package/ai-workflows/09-batch-operation-export-progress.md +367 -0
- package/ai-workflows/10-cross-component-state-coordination.md +412 -0
- package/es/AlignBox/component.json +89 -0
- package/es/AlignBox/index.css +1 -1
- package/es/AlignBox/index.d.ts +6 -2
- package/es/AlignBox/index.js +1 -1
- package/es/AlignBox/style/index.css +1 -1
- package/es/Anchor/anchorMenu/index.d.ts +2 -1
- package/es/Anchor/anchorMenu/index.js +36 -33
- package/es/Anchor/component.json +130 -0
- package/es/Anchor/index.js +52 -49
- package/es/Anchor/type.d.ts +8 -4
- package/es/Argv/component.json +216 -0
- package/es/Argv/dataGenerator/index.js +1 -1
- package/es/Argv/index.d.ts +5 -6
- package/es/Argv/index.js +1 -1
- package/es/AutoBox/component.json +133 -0
- package/es/AutoBox/index.d.ts +3 -3
- package/es/AutoBox/index.js +1 -1
- package/es/AutoBox/protal.d.ts +2 -2
- package/es/AutoBox/protal.js +33 -30
- package/es/AutoButton/component.json +109 -0
- package/es/AutoButton/index.js +1 -1
- package/es/AutoTips/autoTipsMultiline/index.d.ts +1 -1
- package/es/AutoTips/autoTipsMultiline/index.js +1 -1
- package/es/AutoTips/component.json +121 -0
- package/es/AutoTips/index.js +1 -1
- package/es/Badge/component.json +92 -0
- package/es/Breadcrumbs/component.json +142 -0
- package/es/Breadcrumbs/index.js +1 -1
- package/es/Button/SplitButton.d.ts +2 -2
- package/es/Button/component.json +168 -0
- package/es/Button/index.js +44 -44
- package/es/ButtonGroup/component.json +132 -0
- package/es/ButtonGroup/index.d.ts +1 -1
- package/es/Card/component.json +162 -0
- package/es/Card/index.d.ts +2 -2
- package/es/Card/index.js +2 -2
- package/es/Carousel/component.json +142 -0
- package/es/Carousel/index.d.ts +1 -1
- package/es/Cascader/Cascader.js +1 -1
- package/es/Cascader/OptionList/Column.js +1 -1
- package/es/Cascader/OptionList/index.js +1 -1
- package/es/Cascader/component.json +196 -0
- package/es/Cascader/hooks/useEntities.js +7 -7
- package/es/Cascader/interface.d.ts +1 -0
- package/es/Cascader/utils/commonUtil.d.ts +1 -1
- package/es/Cascader/utils/commonUtil.js +16 -16
- package/es/Cascader/utils/treeUtil.d.ts +14 -5
- package/es/Cascader/utils/treeUtil.js +1 -1
- package/es/Checkbox/component.json +138 -0
- package/es/CheckboxGroup/component.json +152 -0
- package/es/CheckboxGroup/index.js +1 -1
- package/es/CodeEditor/component.json +189 -0
- package/es/CodeEditor/index.d.ts +11 -10
- package/es/CodeEditor/index.js +19 -19
- package/es/Collapse/component.json +166 -0
- package/es/Collapse/index.d.ts +1 -1
- package/es/Collapse/index.js +23 -22
- package/es/CollapseBox/component.json +84 -0
- package/es/CollapseLayout/component.json +155 -0
- package/es/ColorPicker/component.json +142 -0
- package/es/ComboSelect/component.json +181 -0
- package/es/ComboSelect/index.js +115 -109
- package/es/ComboSelect/interface.d.ts +2 -2
- package/es/ComboSelect/utils.d.ts +3 -3
- package/es/ComboSelect/utils.js +1 -1
- package/es/Container/component.json +111 -0
- package/es/ContentBox/component.json +81 -0
- package/es/CopyText/component.json +118 -0
- package/es/CycleSelector/component.json +98 -0
- package/es/CycleSelector/index.js +14 -13
- package/es/DatePicker/component.json +192 -0
- package/es/DatePicker/generatePicker/generateRangePicker.js +11 -11
- package/es/DatePicker/generatePicker/generateSinglePicker.js +2 -2
- package/es/Descriptions/component.json +142 -0
- package/es/Descriptions/index.d.ts +1 -1
- package/es/Desktop/component.json +171 -0
- package/es/Desktop/index.js +1 -1
- package/es/DragVerify/component.json +114 -0
- package/es/DragVerify/index.js +19 -19
- package/es/Drawer/component.json +200 -0
- package/es/Drawer/index.js +86 -86
- package/es/Drawer/interface.d.ts +1 -1
- package/es/Drawer/util.d.ts +1 -6
- package/es/Drawer/util.js +9 -6
- package/es/Dropdown/component.json +147 -0
- package/es/Dropdown/index.js +1 -1
- package/es/DynamicMultiBox/component.json +278 -0
- package/es/DynamicMultiBox/formItem.d.ts +1 -1
- package/es/DynamicMultiBox/index.js +1 -1
- package/es/DynamicMultiBox/rowForm.d.ts +2 -2
- package/es/Empty/component.json +123 -0
- package/es/Empty/index.css +1 -1
- package/es/Empty/index.d.ts +2 -2
- package/es/Empty/index.js +27 -26
- package/es/Empty/style/index.css +1 -1
- package/es/FieldForm/FieldFormItem/ItemHolder.js +1 -1
- package/es/FieldForm/FieldFormItem/MemoInput.d.ts +2 -2
- package/es/FieldForm/FieldFormItem/StatusProvider.js +1 -1
- package/es/FieldForm/FieldFormItem/index.d.ts +6 -6
- package/es/FieldForm/Form.d.ts +2 -2
- package/es/FieldForm/Form.js +1 -1
- package/es/FieldForm/FormItemInput.js +1 -1
- package/es/FieldForm/FormItemLabel.js +1 -1
- package/es/FieldForm/FormList.d.ts +2 -2
- package/es/FieldForm/component.json +196 -0
- package/es/FieldForm/context.d.ts +5 -1
- package/es/FieldForm/context.js +2 -2
- package/es/FieldForm/hooks/useForm.d.ts +4 -3
- package/es/FieldForm/hooks/useFormInstance.d.ts +1 -1
- package/es/FieldForm/hooks/useFormItemStatus.d.ts +9 -5
- package/es/FieldForm/hooks/useFormItemStatus.js +2 -2
- package/es/FieldForm/hooks/useItemRef.d.ts +1 -1
- package/es/FieldForm/hooks/useItemRef.js +6 -6
- package/es/Form/component.json +161 -0
- package/es/Form/index.d.ts +52 -49
- package/es/Form/index.js +1 -1
- package/es/FormItem/compoments/defaultCompoments/index.d.ts +5 -5
- package/es/FormItem/compoments/defaultCompoments/index.js +12 -11
- package/es/FormItem/compoments/formCheckboxGroup/index.d.ts +2 -2
- package/es/FormItem/compoments/formFile/index.js +8 -8
- package/es/FormItem/compoments/formRadioGroup/index.d.ts +1 -1
- package/es/FormItem/compoments/formSelect/index.d.ts +1 -1
- package/es/FormItem/component.json +171 -0
- package/es/FormItem/index.d.ts +5 -5
- package/es/FormItem/index.js +23 -23
- package/es/FormItem/itemType.js +1 -1
- package/es/FunctionModal/component.json +197 -0
- package/es/FunctionModal/dialog.d.ts +1 -1
- package/es/FunctionModal/modalContext.d.ts +4 -1
- package/es/GlobalContext/confirmLocale.js +1 -1
- package/es/GlobalContext/index.js +1 -1
- package/es/Help/component.json +118 -0
- package/es/HelperText/component.json +126 -0
- package/es/Image/PreviewGroup.js +1 -1
- package/es/Image/component.json +165 -0
- package/es/Image/index.js +1 -1
- package/es/InputCode/component.json +191 -0
- package/es/InputCode/index.d.ts +2 -2
- package/es/InputLang/component.json +205 -0
- package/es/InputLang/index.js +2 -2
- package/es/InputNumber/component.json +162 -0
- package/es/Label/component.json +126 -0
- package/es/Label/index.d.ts +2 -2
- package/es/Loading/component.json +91 -0
- package/es/Menu/component.json +180 -0
- package/es/Menu/verticalMenuList.js +1 -1
- package/es/Message/component.json +246 -0
- package/es/Message/index.d.ts +2 -2
- package/es/Message/index.js +2 -2
- package/es/Modal/Confirm/index.d.ts +1 -1
- package/es/Modal/Confirm/index.js +1 -1
- package/es/Modal/component.json +277 -0
- package/es/Modal/index.d.ts +85 -5
- package/es/Modal/index.js +159 -122
- package/es/Modal/interface.d.ts +1 -0
- package/es/MultiBox/component.json +216 -0
- package/es/MultiBox/index.js +19 -14
- package/es/Notification/component.json +184 -0
- package/es/OperateBtn/component.json +134 -0
- package/es/OperateBtn/index.d.ts +3 -3
- package/es/PageHeader/component.json +112 -0
- package/es/PageHeader/horizontalMeun.js +1 -1
- package/es/PageHeader/horizontalMeunRight.js +1 -1
- package/es/Pagination/component.json +181 -0
- package/es/Pagination/index.js +15 -15
- package/es/ParauiProvider/index.js +1 -1
- package/es/PasswordRules/component.json +105 -0
- package/es/PasswordRules/index.d.ts +4 -4
- package/es/PopConfirm/component.json +227 -0
- package/es/PopConfirm/index.d.ts +1 -1
- package/es/PopConfirm/index.js +1 -1
- package/es/PopMenu/component.json +131 -0
- package/es/PopMenu/hooks.d.ts +1 -1
- package/es/PopMenu/index.js +8 -8
- package/es/Popover/component.json +165 -0
- package/es/Popover/index.js +1 -1
- package/es/Progress/component.json +161 -0
- package/es/Prompt/component.json +144 -0
- package/es/Querying/component.json +96 -0
- package/es/Querying/index.css +1 -1
- package/es/Querying/index.d.ts +2 -2
- package/es/Querying/index.js +20 -19
- package/es/Querying/style/index.css +1 -1
- package/es/QuickReply/QuickReplyCode/index.js +1 -1
- package/es/QuickReply/component.json +129 -0
- package/es/QuickReply/index.d.ts +1 -1
- package/es/Radio/component.json +136 -0
- package/es/RadioGroup/component.json +149 -0
- package/es/RangeInput/component.json +198 -0
- package/es/RangeInput/index.js +20 -20
- package/es/Result/component.json +104 -0
- package/es/ScrollBar/component.json +115 -0
- package/es/Search/component.json +177 -0
- package/es/Search/index.d.ts +1 -1
- package/es/Select/component.json +244 -0
- package/es/Select/index.js +114 -114
- package/es/SelectInput/component.json +184 -0
- package/es/Selector/component.json +203 -0
- package/es/Selector/index.js +56 -50
- package/es/Selector/interface.d.ts +2 -2
- package/es/Selector/selectorData/index.js +1 -1
- package/es/Selector/selectorMain/index.js +3 -3
- package/es/Selector/selectorNode/index.js +1 -1
- package/es/Selector/util.d.ts +3 -3
- package/es/Selector/util.js +6 -12
- package/es/SelectorPicker/component.json +179 -0
- package/es/SelectorPicker/index.d.ts +5 -5
- package/es/SelectorPicker/index.js +15 -15
- package/es/SingleBox/component.json +151 -0
- package/es/SingleBox/index.d.ts +2 -2
- package/es/Slider/component.json +181 -0
- package/es/SortBox/component.json +108 -0
- package/es/Status/component.json +104 -0
- package/es/Stepper/component.json +129 -0
- package/es/Stepper/index.d.ts +2 -2
- package/es/Switch/component.json +207 -0
- package/es/Switch/index.css +1 -1
- package/es/Switch/index.d.ts +3 -2
- package/es/Switch/index.js +60 -59
- package/es/Switch/style/index.css +1 -1
- package/es/Table/component.json +547 -0
- package/es/Table/index.d.ts +2 -2
- package/es/Table/index.js +385 -382
- package/es/Table/interface.d.ts +30 -0
- package/es/Table/tableHead.js +1 -1
- package/es/Table/util.d.ts +1 -1
- package/es/Table/util.js +3 -12
- package/es/Tabs/component.json +227 -0
- package/es/Tag/component.json +221 -0
- package/es/Tag/index.css +1 -1
- package/es/Tag/index.d.ts +1 -1
- package/es/Tag/index.js +20 -20
- package/es/Tag/style/index.css +1 -1
- package/es/TextEditor/component.json +186 -0
- package/es/TextEditor/index.d.ts +5 -5
- package/es/TextEditor/index.js +1 -1
- package/es/TextField/component.json +290 -0
- package/es/TextField/index.d.ts +2 -2
- package/es/TextField/index.js +1 -1
- package/es/TimePicker/component.json +176 -0
- package/es/Timeline/component.json +110 -0
- package/es/Title/component.json +156 -0
- package/es/ToggleButton/component.json +153 -0
- package/es/ToggleButton/index.js +1 -1
- package/es/Tooltip/component.json +176 -0
- package/es/Tooltip/index.js +58 -53
- package/es/Tooltip/interface.d.ts +14 -1
- package/es/Tooltip/utils.js +6 -6
- package/es/Transfer/component.json +157 -0
- package/es/Tree/OperateBar/index.js +1 -1
- package/es/Tree/Tree.js +3 -3
- package/es/Tree/component.json +512 -0
- package/es/Tree/interface.d.ts +1 -1
- package/es/Upload/component.json +450 -0
- package/es/Upload/util.js +1 -1
- package/es/Utils/snack-kit-shims.d.ts +18 -0
- package/es/Utils/snack-kit-shims.js +19 -0
- package/es/Utils/type.d.ts +0 -2
- package/es/_virtual/index.js +5 -3
- package/es/_virtual/index2.js +2 -5
- package/es/index.d.ts +2 -0
- package/es/index.js +1 -1
- package/es/locale/en_US.d.ts +361 -0
- package/es/locale/en_US.js +364 -0
- package/es/locale/index.d.ts +1 -723
- package/es/locale/index2.js +10 -0
- package/es/locale/zh_CN.d.ts +361 -0
- package/es/locale/zh_CN.js +364 -0
- package/es/node_modules/classnames/index.js +1 -1
- package/lib/AlignBox/component.json +89 -0
- package/lib/AlignBox/index.css +1 -1
- package/lib/AlignBox/index.d.ts +6 -2
- package/lib/AlignBox/index.js +1 -1
- package/lib/AlignBox/style/index.css +1 -1
- package/lib/Anchor/anchorMenu/index.d.ts +2 -1
- package/lib/Anchor/anchorMenu/index.js +1 -1
- package/lib/Anchor/component.json +130 -0
- package/lib/Anchor/index.js +1 -1
- package/lib/Anchor/type.d.ts +8 -4
- package/lib/Argv/component.json +216 -0
- package/lib/Argv/dataGenerator/index.js +1 -1
- package/lib/Argv/index.d.ts +5 -6
- package/lib/Argv/index.js +1 -1
- package/lib/AutoBox/component.json +133 -0
- package/lib/AutoBox/index.d.ts +3 -3
- package/lib/AutoBox/index.js +1 -1
- package/lib/AutoBox/protal.d.ts +2 -2
- package/lib/AutoBox/protal.js +1 -1
- package/lib/AutoButton/component.json +109 -0
- package/lib/AutoButton/index.js +1 -1
- package/lib/AutoTips/autoTipsMultiline/index.d.ts +1 -1
- package/lib/AutoTips/autoTipsMultiline/index.js +1 -1
- package/lib/AutoTips/component.json +121 -0
- package/lib/AutoTips/index.js +1 -1
- package/lib/Badge/component.json +92 -0
- package/lib/Breadcrumbs/component.json +142 -0
- package/lib/Breadcrumbs/index.js +1 -1
- package/lib/Button/SplitButton.d.ts +2 -2
- package/lib/Button/component.json +168 -0
- package/lib/Button/index.js +1 -1
- package/lib/ButtonGroup/component.json +132 -0
- package/lib/ButtonGroup/index.d.ts +1 -1
- package/lib/Card/component.json +162 -0
- package/lib/Card/index.d.ts +2 -2
- package/lib/Card/index.js +1 -1
- package/lib/Carousel/component.json +142 -0
- package/lib/Carousel/index.d.ts +1 -1
- package/lib/Cascader/Cascader.js +1 -1
- package/lib/Cascader/OptionList/Column.js +1 -1
- package/lib/Cascader/OptionList/index.js +1 -1
- package/lib/Cascader/component.json +196 -0
- package/lib/Cascader/hooks/useEntities.js +1 -1
- package/lib/Cascader/interface.d.ts +1 -0
- package/lib/Cascader/utils/commonUtil.d.ts +1 -1
- package/lib/Cascader/utils/commonUtil.js +1 -1
- package/lib/Cascader/utils/treeUtil.d.ts +14 -5
- package/lib/Cascader/utils/treeUtil.js +1 -1
- package/lib/Checkbox/component.json +138 -0
- package/lib/CheckboxGroup/component.json +152 -0
- package/lib/CheckboxGroup/index.js +1 -1
- package/lib/CodeEditor/component.json +189 -0
- package/lib/CodeEditor/index.d.ts +11 -10
- package/lib/CodeEditor/index.js +1 -1
- package/lib/Collapse/component.json +166 -0
- package/lib/Collapse/index.d.ts +1 -1
- package/lib/Collapse/index.js +1 -1
- package/lib/CollapseBox/component.json +84 -0
- package/lib/CollapseLayout/component.json +155 -0
- package/lib/ColorPicker/component.json +142 -0
- package/lib/ComboSelect/component.json +181 -0
- package/lib/ComboSelect/index.js +1 -1
- package/lib/ComboSelect/interface.d.ts +2 -2
- package/lib/ComboSelect/utils.d.ts +3 -3
- package/lib/ComboSelect/utils.js +1 -1
- package/lib/Container/component.json +111 -0
- package/lib/ContentBox/component.json +81 -0
- package/lib/CopyText/component.json +118 -0
- package/lib/CycleSelector/component.json +98 -0
- package/lib/CycleSelector/index.js +1 -1
- package/lib/DatePicker/component.json +192 -0
- package/lib/DatePicker/generatePicker/generateRangePicker.js +1 -1
- package/lib/DatePicker/generatePicker/generateSinglePicker.js +1 -1
- package/lib/Descriptions/component.json +142 -0
- package/lib/Descriptions/index.d.ts +1 -1
- package/lib/Desktop/component.json +171 -0
- package/lib/Desktop/index.js +1 -1
- package/lib/DragVerify/component.json +114 -0
- package/lib/DragVerify/index.js +1 -1
- package/lib/Drawer/component.json +200 -0
- package/lib/Drawer/index.js +1 -1
- package/lib/Drawer/interface.d.ts +1 -1
- package/lib/Drawer/util.d.ts +1 -6
- package/lib/Drawer/util.js +1 -1
- package/lib/Dropdown/component.json +147 -0
- package/lib/Dropdown/index.js +1 -1
- package/lib/DynamicMultiBox/component.json +278 -0
- package/lib/DynamicMultiBox/formItem.d.ts +1 -1
- package/lib/DynamicMultiBox/index.js +1 -1
- package/lib/DynamicMultiBox/rowForm.d.ts +2 -2
- package/lib/Empty/component.json +123 -0
- package/lib/Empty/index.css +1 -1
- package/lib/Empty/index.d.ts +2 -2
- package/lib/Empty/index.js +1 -1
- package/lib/Empty/style/index.css +1 -1
- package/lib/FieldForm/FieldFormItem/ItemHolder.js +1 -1
- package/lib/FieldForm/FieldFormItem/MemoInput.d.ts +2 -2
- package/lib/FieldForm/FieldFormItem/StatusProvider.js +1 -1
- package/lib/FieldForm/FieldFormItem/index.d.ts +6 -6
- package/lib/FieldForm/Form.d.ts +2 -2
- package/lib/FieldForm/Form.js +1 -1
- package/lib/FieldForm/FormItemInput.js +1 -1
- package/lib/FieldForm/FormItemLabel.js +1 -1
- package/lib/FieldForm/FormList.d.ts +2 -2
- package/lib/FieldForm/component.json +196 -0
- package/lib/FieldForm/context.d.ts +5 -1
- package/lib/FieldForm/context.js +1 -1
- package/lib/FieldForm/hooks/useForm.d.ts +4 -3
- package/lib/FieldForm/hooks/useFormInstance.d.ts +1 -1
- package/lib/FieldForm/hooks/useFormItemStatus.d.ts +9 -5
- package/lib/FieldForm/hooks/useFormItemStatus.js +1 -1
- package/lib/FieldForm/hooks/useItemRef.d.ts +1 -1
- package/lib/FieldForm/hooks/useItemRef.js +1 -1
- package/lib/Form/component.json +161 -0
- package/lib/Form/index.d.ts +52 -49
- package/lib/Form/index.js +1 -1
- package/lib/FormItem/compoments/defaultCompoments/index.d.ts +5 -5
- package/lib/FormItem/compoments/defaultCompoments/index.js +1 -1
- package/lib/FormItem/compoments/formCheckboxGroup/index.d.ts +2 -2
- package/lib/FormItem/compoments/formFile/index.js +1 -1
- package/lib/FormItem/compoments/formRadioGroup/index.d.ts +1 -1
- package/lib/FormItem/compoments/formSelect/index.d.ts +1 -1
- package/lib/FormItem/component.json +171 -0
- package/lib/FormItem/index.d.ts +5 -5
- package/lib/FormItem/index.js +1 -1
- package/lib/FormItem/itemType.js +1 -1
- package/lib/FunctionModal/component.json +197 -0
- package/lib/FunctionModal/dialog.d.ts +1 -1
- package/lib/FunctionModal/modalContext.d.ts +4 -1
- package/lib/GlobalContext/confirmLocale.js +1 -1
- package/lib/GlobalContext/index.js +1 -1
- package/lib/Help/component.json +118 -0
- package/lib/HelperText/component.json +126 -0
- package/lib/Image/PreviewGroup.js +1 -1
- package/lib/Image/component.json +165 -0
- package/lib/Image/index.js +1 -1
- package/lib/InputCode/component.json +191 -0
- package/lib/InputCode/index.d.ts +2 -2
- package/lib/InputLang/component.json +205 -0
- package/lib/InputLang/index.js +1 -1
- package/lib/InputNumber/component.json +162 -0
- package/lib/Label/component.json +126 -0
- package/lib/Label/index.d.ts +2 -2
- package/lib/Loading/component.json +91 -0
- package/lib/Menu/component.json +180 -0
- package/lib/Menu/verticalMenuList.js +1 -1
- package/lib/Message/component.json +246 -0
- package/lib/Message/index.d.ts +2 -2
- package/lib/Message/index.js +1 -1
- package/lib/Modal/Confirm/index.d.ts +1 -1
- package/lib/Modal/Confirm/index.js +1 -1
- package/lib/Modal/component.json +277 -0
- package/lib/Modal/index.d.ts +85 -5
- package/lib/Modal/index.js +1 -1
- package/lib/Modal/interface.d.ts +1 -0
- package/lib/MultiBox/component.json +216 -0
- package/lib/MultiBox/index.js +1 -1
- package/lib/Notification/component.json +184 -0
- package/lib/OperateBtn/component.json +134 -0
- package/lib/OperateBtn/index.d.ts +3 -3
- package/lib/PageHeader/component.json +112 -0
- package/lib/PageHeader/horizontalMeun.js +1 -1
- package/lib/PageHeader/horizontalMeunRight.js +1 -1
- package/lib/Pagination/component.json +181 -0
- package/lib/Pagination/index.js +1 -1
- package/lib/ParauiProvider/index.js +1 -1
- package/lib/PasswordRules/component.json +105 -0
- package/lib/PasswordRules/index.d.ts +4 -4
- package/lib/PopConfirm/component.json +227 -0
- package/lib/PopConfirm/index.d.ts +1 -1
- package/lib/PopConfirm/index.js +1 -1
- package/lib/PopMenu/component.json +131 -0
- package/lib/PopMenu/hooks.d.ts +1 -1
- package/lib/PopMenu/index.js +1 -1
- package/lib/Popover/component.json +165 -0
- package/lib/Popover/index.js +1 -1
- package/lib/Progress/component.json +161 -0
- package/lib/Prompt/component.json +144 -0
- package/lib/Querying/component.json +96 -0
- package/lib/Querying/index.css +1 -1
- package/lib/Querying/index.d.ts +2 -2
- package/lib/Querying/index.js +1 -1
- package/lib/Querying/style/index.css +1 -1
- package/lib/QuickReply/QuickReplyCode/index.js +1 -1
- package/lib/QuickReply/component.json +129 -0
- package/lib/QuickReply/index.d.ts +1 -1
- package/lib/Radio/component.json +136 -0
- package/lib/RadioGroup/component.json +149 -0
- package/lib/RangeInput/component.json +198 -0
- package/lib/RangeInput/index.js +1 -1
- package/lib/Result/component.json +104 -0
- package/lib/ScrollBar/component.json +115 -0
- package/lib/Search/component.json +177 -0
- package/lib/Search/index.d.ts +1 -1
- package/lib/Select/component.json +244 -0
- package/lib/Select/index.js +1 -1
- package/lib/SelectInput/component.json +184 -0
- package/lib/Selector/component.json +203 -0
- package/lib/Selector/index.js +1 -1
- package/lib/Selector/interface.d.ts +2 -2
- package/lib/Selector/selectorData/index.js +1 -1
- package/lib/Selector/selectorMain/index.js +1 -1
- package/lib/Selector/selectorNode/index.js +1 -1
- package/lib/Selector/util.d.ts +3 -3
- package/lib/Selector/util.js +1 -1
- package/lib/SelectorPicker/component.json +179 -0
- package/lib/SelectorPicker/index.d.ts +5 -5
- package/lib/SelectorPicker/index.js +1 -1
- package/lib/SingleBox/component.json +151 -0
- package/lib/SingleBox/index.d.ts +2 -2
- package/lib/Slider/component.json +181 -0
- package/lib/SortBox/component.json +108 -0
- package/lib/Status/component.json +104 -0
- package/lib/Stepper/component.json +129 -0
- package/lib/Stepper/index.d.ts +2 -2
- package/lib/Switch/component.json +207 -0
- package/lib/Switch/index.css +1 -1
- package/lib/Switch/index.d.ts +3 -2
- package/lib/Switch/index.js +1 -1
- package/lib/Switch/style/index.css +1 -1
- package/lib/Table/component.json +547 -0
- package/lib/Table/index.d.ts +2 -2
- package/lib/Table/index.js +1 -1
- package/lib/Table/interface.d.ts +30 -0
- package/lib/Table/tableHead.js +1 -1
- package/lib/Table/util.d.ts +1 -1
- package/lib/Table/util.js +1 -1
- package/lib/Tabs/component.json +227 -0
- package/lib/Tag/component.json +221 -0
- package/lib/Tag/index.css +1 -1
- package/lib/Tag/index.d.ts +1 -1
- package/lib/Tag/index.js +1 -1
- package/lib/Tag/style/index.css +1 -1
- package/lib/TextEditor/component.json +186 -0
- package/lib/TextEditor/index.d.ts +5 -5
- package/lib/TextEditor/index.js +1 -1
- package/lib/TextField/component.json +290 -0
- package/lib/TextField/index.d.ts +2 -2
- package/lib/TextField/index.js +1 -1
- package/lib/TimePicker/component.json +176 -0
- package/lib/Timeline/component.json +110 -0
- package/lib/Title/component.json +156 -0
- package/lib/ToggleButton/component.json +153 -0
- package/lib/ToggleButton/index.js +1 -1
- package/lib/Tooltip/component.json +176 -0
- package/lib/Tooltip/index.js +1 -1
- package/lib/Tooltip/interface.d.ts +14 -1
- package/lib/Tooltip/utils.js +1 -1
- package/lib/Transfer/component.json +157 -0
- package/lib/Tree/OperateBar/index.js +2 -2
- package/lib/Tree/Tree.js +1 -1
- package/lib/Tree/component.json +512 -0
- package/lib/Tree/interface.d.ts +1 -1
- package/lib/Upload/component.json +450 -0
- package/lib/Upload/util.js +1 -1
- package/lib/Utils/snack-kit-shims.d.ts +18 -0
- package/lib/Utils/snack-kit-shims.js +2 -0
- package/lib/Utils/type.d.ts +0 -2
- package/lib/_virtual/index.js +1 -1
- package/lib/_virtual/index2.js +1 -1
- package/lib/index.d.ts +2 -0
- package/lib/index.js +1 -1
- package/lib/locale/en_US.d.ts +361 -0
- package/lib/locale/en_US.js +2 -0
- package/lib/locale/index.d.ts +1 -723
- package/lib/locale/index2.js +2 -0
- package/lib/locale/zh_CN.d.ts +361 -0
- package/lib/locale/zh_CN.js +2 -0
- package/lib/node_modules/classnames/index.js +1 -1
- package/package.json +11 -4
- package/es/_virtual/index3.js +0 -5
- package/es/_virtual/index4.js +0 -5
- package/es/node_modules/@para-snack/core/dist/index.js +0 -5231
- package/lib/_virtual/index3.js +0 -2
- package/lib/_virtual/index4.js +0 -2
- package/lib/node_modules/@para-snack/core/dist/index.js +0 -20
- /package/es/{Utils/Hooks → Hooks}/useResizeObserver.d.ts +0 -0
- /package/es/{Utils/Hooks → Hooks}/useResizeObserver.js +0 -0
- /package/lib/{Utils/Hooks → Hooks}/useResizeObserver.d.ts +0 -0
- /package/lib/{Utils/Hooks → Hooks}/useResizeObserver.js +0 -0
|
@@ -0,0 +1,136 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "Radio",
|
|
3
|
+
"category": "Data Entry",
|
|
4
|
+
"description": "单选框,用于在多个选项中选择一个,支持受控/非受控及 disabled tooltip",
|
|
5
|
+
"semantic": {
|
|
6
|
+
"intent": [
|
|
7
|
+
"单项选择",
|
|
8
|
+
"互斥选择"
|
|
9
|
+
],
|
|
10
|
+
"useCases": [
|
|
11
|
+
"性别选择",
|
|
12
|
+
"支付方式",
|
|
13
|
+
"配置切换"
|
|
14
|
+
],
|
|
15
|
+
"riskLevel": "low"
|
|
16
|
+
},
|
|
17
|
+
"variants": {
|
|
18
|
+
"default": {
|
|
19
|
+
"meaning": "独立单选框"
|
|
20
|
+
},
|
|
21
|
+
"group": {
|
|
22
|
+
"meaning": "单选框组"
|
|
23
|
+
},
|
|
24
|
+
"button": {
|
|
25
|
+
"meaning": "按钮样式单选"
|
|
26
|
+
}
|
|
27
|
+
},
|
|
28
|
+
"states": [
|
|
29
|
+
"checked",
|
|
30
|
+
"unchecked",
|
|
31
|
+
"disabled"
|
|
32
|
+
],
|
|
33
|
+
"idealProps": {
|
|
34
|
+
"checked": {
|
|
35
|
+
"type": "boolean",
|
|
36
|
+
"description": "受控选中态;父维护 state · 互斥实现:`checked={selectedValue === thisValue}`;**onChange 仅 unchecked → checked 单向触发**(单选框选中后无法 UI 取消)"
|
|
37
|
+
},
|
|
38
|
+
"defaultChecked": {
|
|
39
|
+
"type": "boolean",
|
|
40
|
+
"description": "非受控初始选中态;首次渲染后内部维护;onChange 仍单向触发"
|
|
41
|
+
},
|
|
42
|
+
"disabled": {
|
|
43
|
+
"type": "boolean",
|
|
44
|
+
"default": false,
|
|
45
|
+
"description": "禁用(无法点击/触发 onChange);**本组件无 readOnly prop**,只读场景用 disabled+CSS 灰度覆盖"
|
|
46
|
+
},
|
|
47
|
+
"label": {
|
|
48
|
+
"type": "ReactNode",
|
|
49
|
+
"description": "标题文案;支持 ReactNode(AutoTips 包裹可实现超长截断+hover 显示完整,详见 codeString.ts labelOverflowRadio)"
|
|
50
|
+
},
|
|
51
|
+
"labelTooltip": {
|
|
52
|
+
"type": "LabelTooltipProps",
|
|
53
|
+
"description": "**帮助图标式 tooltip**:label 旁渲染 ? 图标 · hover 显示 tooltip;**不是文字截断省略**(截断需配 AutoTips 包 label · 见 codeString.ts)"
|
|
54
|
+
},
|
|
55
|
+
"width": {
|
|
56
|
+
"type": "string",
|
|
57
|
+
"description": "组件外层容器宽度;常用配合 label 截断(`width='100px'`)"
|
|
58
|
+
},
|
|
59
|
+
"onChange": {
|
|
60
|
+
"type": "(e: React.MouseEvent<HTMLLabelElement>, checked: boolean) => void",
|
|
61
|
+
"description": "选中态变化回调(src/Radio/index.tsx:38 interface 实证,签名为 MouseEvent on HTMLLabelElement,非 ChangeEvent);**仅在 unchecked → checked 单向触发一次**;第二参数 checked = 切换后的新状态(本组件场景下永远为 true)"
|
|
62
|
+
},
|
|
63
|
+
"size": {
|
|
64
|
+
"type": "enum",
|
|
65
|
+
"values": ["small", "medium", "large"],
|
|
66
|
+
"default": "large",
|
|
67
|
+
"description": "单选框大小(src/Radio/index.tsx:24,46,77 实证:default='large';控制 CSS 类 paraui-v4-radio-{size})"
|
|
68
|
+
},
|
|
69
|
+
"disabledTooltip": {
|
|
70
|
+
"type": "TooltipProps",
|
|
71
|
+
"description": "禁用状态下的 Tooltip 配置(src/Radio/index.tsx:34-35,136-142 实证:disabled 时将整个 Radio 包裹在 Tooltip 内,透传全部 TooltipProps,字段名 `title` 作为提示内容)"
|
|
72
|
+
},
|
|
73
|
+
"inputProps": {
|
|
74
|
+
"type": "React.InputHTMLAttributes<HTMLInputElement>",
|
|
75
|
+
"description": "内层原生 radio input 的额外 props(src/Radio/index.tsx:36,118 实证:透传到 `<input type='radio' {...props.inputProps} />`,可用于设置 name/value 等原生属性)"
|
|
76
|
+
},
|
|
77
|
+
"className": {
|
|
78
|
+
"type": "string",
|
|
79
|
+
"description": "自定义类名(src/Radio/index.tsx:14,43 实证,追加到根 label 元素的 className)"
|
|
80
|
+
},
|
|
81
|
+
"style": {
|
|
82
|
+
"type": "React.CSSProperties",
|
|
83
|
+
"description": "自定义样式(src/Radio/index.tsx:16,51,102 实证,透传到根 label 元素的 style;与 width prop 合并)"
|
|
84
|
+
}
|
|
85
|
+
},
|
|
86
|
+
"do": [
|
|
87
|
+
"选项较少(< 5)时优先展示所有选项而非使用 Select",
|
|
88
|
+
"Radio Group 能够清晰展示所有可用选项",
|
|
89
|
+
"**多 Radio 互斥**:父维护 `useState<string> selectedValue` · 每个 Radio 用 `checked={selectedValue === thisValue}` + onChange 触发后 `setSelectedValue(thisValue)`(完整示例见 docs/view/radio/codeString.ts multiRadioGroup)",
|
|
90
|
+
"**label 超长截断 + hover 完整显示**:用 `AutoTips` 包 label,如 `<Radio label={<AutoTips tipMaxWidth='none'>超长 label</AutoTips>} width='180px' />`"
|
|
91
|
+
],
|
|
92
|
+
"dont": [
|
|
93
|
+
"在可以多选的场景使用 Radio",
|
|
94
|
+
"Radio 选中后无法取消(设计上应保持选中状态;若需 on/off 切换语义请用 Checkbox)",
|
|
95
|
+
"**期望 onChange 在选中后再次点击会再触发(单向触发,只在 unchecked → checked 触发一次)**",
|
|
96
|
+
"**依赖 labelTooltip 实现 label 文字截断省略**(labelTooltip 只是 ? 帮助图标 tooltip · 不截断;截断用 AutoTips 包 label)",
|
|
97
|
+
"**期望 Radio 有 readOnly prop**(无;只读用 disabled + CSS)"
|
|
98
|
+
],
|
|
99
|
+
"events": {
|
|
100
|
+
"onChange": {
|
|
101
|
+
"signature": "(e: React.MouseEvent<HTMLLabelElement>, checked: boolean) => void",
|
|
102
|
+
"asyncSupported": false,
|
|
103
|
+
"examples": [
|
|
104
|
+
"受控互斥:onChange={(e, checked) => { if (checked) setSelectedValue(thisValue); }}",
|
|
105
|
+
"非受控监听:onChange={(e, checked) => console.log('选中', checked)} // checked 永远为 true",
|
|
106
|
+
"阻止冒泡:onChange={(e, checked) => { e.stopPropagation(); setSelected(checked); }}"
|
|
107
|
+
],
|
|
108
|
+
"commonMistakes": [
|
|
109
|
+
"期望回调签名是 (e: ChangeEvent<HTMLInputElement>) → 实际是 MouseEvent<HTMLLabelElement>,监听 e.target 行为不同",
|
|
110
|
+
"期望 checked 参数可以是 false(已选后再次点击)——onChange 只在 unchecked→checked 触发,checked 永远为 true",
|
|
111
|
+
"用 onChange 做「取消选中」逻辑——Radio 无法通过点击取消选中;需要 toggle 语义请用 Checkbox"
|
|
112
|
+
]
|
|
113
|
+
}
|
|
114
|
+
},
|
|
115
|
+
"typescriptPitfalls": [
|
|
116
|
+
{
|
|
117
|
+
"issue": "onChange 签名是 MouseEvent on HTMLLabelElement,不是 ChangeEvent<HTMLInputElement>",
|
|
118
|
+
"wrong": "onChange={(e: React.ChangeEvent<HTMLInputElement>) => setValue(e.target.checked)} // 类型不匹配",
|
|
119
|
+
"right": "onChange={(e: React.MouseEvent<HTMLLabelElement>, checked: boolean) => { if (checked) setValue(thisValue); }}"
|
|
120
|
+
},
|
|
121
|
+
{
|
|
122
|
+
"issue": "disabledTooltip 的类型是 TooltipProps(完整对象),不是字符串",
|
|
123
|
+
"wrong": "disabledTooltip='此项不可选' // 类型报错,应传对象",
|
|
124
|
+
"right": "disabledTooltip={{ title: '此项不可选', placement: 'top' }}"
|
|
125
|
+
},
|
|
126
|
+
{
|
|
127
|
+
"issue": "size 默认值是 'large'(不是 'medium'),与 antd/MUI 业界惯例不同",
|
|
128
|
+
"wrong": "// 不传 size 期望得到中等大小\n<Radio label='选项' /> // 实际渲染 large 尺寸",
|
|
129
|
+
"right": "<Radio label='选项' size='medium' /> // 明确指定 size 避免布局意外"
|
|
130
|
+
}
|
|
131
|
+
],
|
|
132
|
+
"mapping": {
|
|
133
|
+
"realComponent": "Radio",
|
|
134
|
+
"adapter": null
|
|
135
|
+
}
|
|
136
|
+
}
|
|
@@ -0,0 +1,149 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "RadioGroup",
|
|
3
|
+
"category": "Data Entry",
|
|
4
|
+
"description": "单选框组,统一管理一组 Radio 的受控选中态,支持泛型约束和二维布局",
|
|
5
|
+
"semantic": {
|
|
6
|
+
"intent": [
|
|
7
|
+
"单选",
|
|
8
|
+
"互斥选择"
|
|
9
|
+
],
|
|
10
|
+
"useCases": [
|
|
11
|
+
"选项切换",
|
|
12
|
+
"模式选择",
|
|
13
|
+
"单选配置"
|
|
14
|
+
],
|
|
15
|
+
"riskLevel": "low"
|
|
16
|
+
},
|
|
17
|
+
"variants": {
|
|
18
|
+
"default": {
|
|
19
|
+
"meaning": "默认样式"
|
|
20
|
+
}
|
|
21
|
+
},
|
|
22
|
+
"states": [
|
|
23
|
+
"default",
|
|
24
|
+
"disabled"
|
|
25
|
+
],
|
|
26
|
+
"idealProps": {
|
|
27
|
+
"list": {
|
|
28
|
+
"type": "RadioListProps[] | RadioListProps[][]",
|
|
29
|
+
"description": "选项数据(必填)。**RadioListProps extends RadioProps**(可含 label/disabled 等 Radio prop)。⚠️ 默认以 `item[id]` 取值(id prop 默认 'name'),list 每项必须有对应字段;传二维数组 `RadioListProps[][]` 时按行分组渲染"
|
|
30
|
+
},
|
|
31
|
+
"value": {
|
|
32
|
+
"type": "T",
|
|
33
|
+
"description": "当前选中值(受控);类型 T 由泛型推断(默认 unknown);与 list 项的 item[id] 字段值对比决定哪项选中"
|
|
34
|
+
},
|
|
35
|
+
"defaultValue": {
|
|
36
|
+
"type": "T",
|
|
37
|
+
"description": "默认选中值(非受控初始态);与 value 互斥——传 value 则受控"
|
|
38
|
+
},
|
|
39
|
+
"onChange": {
|
|
40
|
+
"type": "(val: T, item?: RadioListProps) => void",
|
|
41
|
+
"description": "值变化回调;val = item[id](即 list 项中 id 字段对应的值);item 是被点击的完整 list 项对象"
|
|
42
|
+
},
|
|
43
|
+
"id": {
|
|
44
|
+
"type": "string",
|
|
45
|
+
"default": "name",
|
|
46
|
+
"description": "**list 每项的取值字段名**(默认 'name',不是 'value')——RadioGroup 内部取 item[id] 作为选中值;⚠️ 这是常见混淆点:字段名是 'name' 不是 'value'"
|
|
47
|
+
},
|
|
48
|
+
"label": {
|
|
49
|
+
"type": "ReactNode",
|
|
50
|
+
"description": "组标题"
|
|
51
|
+
},
|
|
52
|
+
"labelTooltip": {
|
|
53
|
+
"type": "LabelTooltipProps",
|
|
54
|
+
"description": "组标题旁的帮助图标 tooltip"
|
|
55
|
+
},
|
|
56
|
+
"required": {
|
|
57
|
+
"type": "boolean",
|
|
58
|
+
"default": false,
|
|
59
|
+
"description": "是否必填(显示红色星号)"
|
|
60
|
+
},
|
|
61
|
+
"row": {
|
|
62
|
+
"type": "boolean",
|
|
63
|
+
"default": true,
|
|
64
|
+
"description": "布局方式;true=横向排列;false=纵向排列"
|
|
65
|
+
},
|
|
66
|
+
"spacing": {
|
|
67
|
+
"type": "string",
|
|
68
|
+
"default": "32px",
|
|
69
|
+
"description": "横向布局时每项之间的间距(CSS 值,如 '16px');row=false 时不生效"
|
|
70
|
+
},
|
|
71
|
+
"itemWidth": {
|
|
72
|
+
"type": "string",
|
|
73
|
+
"description": "每项的固定宽度(CSS 值,如 '120px');配合 row=false 的栅格对齐"
|
|
74
|
+
},
|
|
75
|
+
"size": {
|
|
76
|
+
"type": "enum",
|
|
77
|
+
"values": ["small", "medium", "large"],
|
|
78
|
+
"default": "large",
|
|
79
|
+
"description": "尺寸,透传给每个 Radio(src/RadioGroup/index.tsx:65 实证,default='large')"
|
|
80
|
+
},
|
|
81
|
+
"disabled": {
|
|
82
|
+
"type": "boolean",
|
|
83
|
+
"default": false,
|
|
84
|
+
"description": "全局禁用所有选项(优先于 list 每项的 disabled)"
|
|
85
|
+
},
|
|
86
|
+
"error": {
|
|
87
|
+
"type": "boolean",
|
|
88
|
+
"default": false,
|
|
89
|
+
"description": "错误状态(显示红色边框 + helperText 错误样式,来自 HelperTextDetailProps 继承)"
|
|
90
|
+
},
|
|
91
|
+
"helperText": {
|
|
92
|
+
"type": "ReactNode",
|
|
93
|
+
"default": "",
|
|
94
|
+
"description": "错误或提示文字(error=true 时红色显示,error=false 时灰色显示)"
|
|
95
|
+
},
|
|
96
|
+
"hideErrorDom": {
|
|
97
|
+
"type": "boolean",
|
|
98
|
+
"description": "是否隐藏错误文字 DOM(表单布局固定高度时防止错误文字撑开布局)"
|
|
99
|
+
}
|
|
100
|
+
},
|
|
101
|
+
"do": [
|
|
102
|
+
"配合 Radio 使用——RadioGroup 统一管理 checked 状态,无需每个 Radio 手动维护",
|
|
103
|
+
"选项数量适中(2-5),超出 5 个考虑 Select",
|
|
104
|
+
"list 项必须有 id 对应字段(默认 'name')作为选中值,如 `list={[{ name: 'a', label: '选项A' }]}` 且不传 id prop",
|
|
105
|
+
"支持泛型收窄类型:`<RadioGroup<'male' | 'female'>>` 让 value/onChange 类型推断更精确"
|
|
106
|
+
],
|
|
107
|
+
"dont": [
|
|
108
|
+
"选项过多(应使用 Select)",
|
|
109
|
+
"忽略默认选中——至少通过 defaultValue 或 value 提供初始状态,否则所有项均未选中",
|
|
110
|
+
"以为 list 项的取值字段是 'value'——RadioGroup 默认取 item['name'],需要用 'value' 字段时需传 id='value'"
|
|
111
|
+
],
|
|
112
|
+
"events": {
|
|
113
|
+
"onChange": {
|
|
114
|
+
"signature": "(val: T, item?: RadioListProps) => void",
|
|
115
|
+
"asyncSupported": false,
|
|
116
|
+
"examples": [
|
|
117
|
+
"受控写法:value={selected} onChange={(val) => setSelected(val)}",
|
|
118
|
+
"获取完整 item:onChange={(val, item) => { setSelected(val); logItem(item); }}",
|
|
119
|
+
"泛型收窄:<RadioGroup<'a' | 'b'> list={...} value={v} onChange={(val) => setV(val)}>"
|
|
120
|
+
],
|
|
121
|
+
"commonMistakes": [
|
|
122
|
+
"假设 val 是 item.value——RadioGroup 取 item[id](默认 item.name),不是 item.value",
|
|
123
|
+
"不回写 value prop 导致选中态不更新——RadioGroup 是受控组件,onChange 后必须 setState 回写 value",
|
|
124
|
+
"list 项缺少 id 字段——id 默认 'name',list 项无 name 字段时 val 会是 undefined"
|
|
125
|
+
]
|
|
126
|
+
}
|
|
127
|
+
},
|
|
128
|
+
"typescriptPitfalls": [
|
|
129
|
+
{
|
|
130
|
+
"issue": "id prop 指定取值字段名,默认是 'name' 不是 'value',混淆导致 onChange 收到 undefined",
|
|
131
|
+
"wrong": "// list 每项有 value 字段,但不传 id:\nlist={[{ value: 'male', label: '男' }]} // onChange 收到 undefined,因为取的是 item['name']",
|
|
132
|
+
"right": "// 方案A:list 项用 name 字段\nlist={[{ name: 'male', label: '男' }]}\n// 方案B:显式传 id='value'\n<RadioGroup id='value' list={[{ value: 'male', label: '男' }]} />"
|
|
133
|
+
},
|
|
134
|
+
{
|
|
135
|
+
"issue": "RadioGroup 泛型参数 T 默认 unknown,value/onChange 类型过宽,建议显式传泛型",
|
|
136
|
+
"wrong": "// T=unknown,onChange val 类型 unknown,需 as 强转:\nconst [v, setV] = useState<string>(); onChange={(val) => setV(val as string)}",
|
|
137
|
+
"right": "const [v, setV] = useState<string>(); <RadioGroup<string> value={v} onChange={(val) => setV(val)} />"
|
|
138
|
+
},
|
|
139
|
+
{
|
|
140
|
+
"issue": "list 支持二维数组分行,但每行内项的 onChange 逻辑相同——误以为二维数组需要特殊处理",
|
|
141
|
+
"wrong": "// 二维数组时自己实现 checked 逻辑\nlist={[[...], [...]]} value={v} onChange不传 // 组件已内部处理,不需要额外逻辑",
|
|
142
|
+
"right": "<RadioGroup list={[[item1, item2], [item3, item4]]} value={v} onChange={(val) => setV(val)} />"
|
|
143
|
+
}
|
|
144
|
+
],
|
|
145
|
+
"mapping": {
|
|
146
|
+
"realComponent": "RadioGroup",
|
|
147
|
+
"adapter": null
|
|
148
|
+
}
|
|
149
|
+
}
|
|
@@ -0,0 +1,198 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "RangeInput",
|
|
3
|
+
"category": "Data Entry",
|
|
4
|
+
"description": "范围输入框,两个 InputNumber 组成数值区间,自动 swap 防止 min>max",
|
|
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": "Clearable extends true ? [number | null, number | null] : [number | undefined, number | undefined]",
|
|
30
|
+
"description": "当前值(受控)。**类型随 clearable 泛型条件切换**(协议 RI1):clearable=true → `[number | null, number | null]`(任一端可 null 表示清空);clearable=false(默认)→ `[number | undefined, number | undefined]`(直接传 null TS 报错)"
|
|
31
|
+
},
|
|
32
|
+
"defaultValue": {
|
|
33
|
+
"type": "Clearable extends true ? [number | null, number | null] : [number | undefined, number | undefined]",
|
|
34
|
+
"description": "默认值(非受控);类型规则同 value(随 clearable 切换)"
|
|
35
|
+
},
|
|
36
|
+
"onChange": {
|
|
37
|
+
"type": "(val, index) => void",
|
|
38
|
+
"description": "值变化回调。**val 类型**:clearable=true → `[number | null, number | null]`;clearable=false → `[number, number]`。**index** 是触发输入框下标(0/1),index=-1 表示内部 swap 触发(min>max 自动交换)。**业务 [number, number] 桥接**:`(val) => onChange([val[0] ?? 0, val[1] ?? 0])`(协议 RI2)"
|
|
39
|
+
},
|
|
40
|
+
"clearable": {
|
|
41
|
+
"type": "boolean",
|
|
42
|
+
"default": false,
|
|
43
|
+
"description": "是否允许清空(协议 RI1)。**默认 false**;true 时全链路类型放宽到 `number | null`,清空后 onChange 回传含 null 的二元组(不是 null 本体);false 时类型收窄。**业务需要清空必须显式 `clearable={true}`**"
|
|
44
|
+
},
|
|
45
|
+
"size": {
|
|
46
|
+
"type": "enum",
|
|
47
|
+
"values": [
|
|
48
|
+
"small",
|
|
49
|
+
"medium",
|
|
50
|
+
"large"
|
|
51
|
+
],
|
|
52
|
+
"default": "large",
|
|
53
|
+
"description": "控件大小(三档全部支持)"
|
|
54
|
+
},
|
|
55
|
+
"label": {
|
|
56
|
+
"type": "ReactNode",
|
|
57
|
+
"description": "组标题"
|
|
58
|
+
},
|
|
59
|
+
"labelTooltip": {
|
|
60
|
+
"type": "LabelTooltipProps",
|
|
61
|
+
"description": "标题旁帮助图标 tooltip"
|
|
62
|
+
},
|
|
63
|
+
"required": {
|
|
64
|
+
"type": "boolean",
|
|
65
|
+
"default": false,
|
|
66
|
+
"description": "是否必填(显示红色星号)"
|
|
67
|
+
},
|
|
68
|
+
"disabled": {
|
|
69
|
+
"type": "boolean | [boolean, boolean]",
|
|
70
|
+
"default": false,
|
|
71
|
+
"description": "禁用;boolean=两侧都禁;[boolean, boolean]=分别控制左右"
|
|
72
|
+
},
|
|
73
|
+
"disabledTooltip": {
|
|
74
|
+
"type": "TooltipProps | [TooltipProps, TooltipProps]",
|
|
75
|
+
"description": "禁用状态 tooltip;单值=两侧共享;数组=分别控制左右(src/RangeInput/index.tsx:34 interface 实证)"
|
|
76
|
+
},
|
|
77
|
+
"separator": {
|
|
78
|
+
"type": "ReactNode",
|
|
79
|
+
"default": "~",
|
|
80
|
+
"description": "中间分隔符"
|
|
81
|
+
},
|
|
82
|
+
"unit": {
|
|
83
|
+
"type": "ReactNode",
|
|
84
|
+
"description": "单位文本(显示在右侧)"
|
|
85
|
+
},
|
|
86
|
+
"placeholder": {
|
|
87
|
+
"type": "ReactNode | [ReactNode, ReactNode]",
|
|
88
|
+
"description": "占位文本;单值=两侧共享;数组=分别控制左右"
|
|
89
|
+
},
|
|
90
|
+
"warningMessage": {
|
|
91
|
+
"type": "ReactNode",
|
|
92
|
+
"description": "min>max 自动 swap 后展示的警告文案(swap 发生后显示 warnTime 毫秒)"
|
|
93
|
+
},
|
|
94
|
+
"warnTime": {
|
|
95
|
+
"type": "number",
|
|
96
|
+
"default": 2000,
|
|
97
|
+
"description": "warningMessage 自动消失时间(毫秒)"
|
|
98
|
+
},
|
|
99
|
+
"otherProps": {
|
|
100
|
+
"type": "[InputNumberProps, InputNumberProps]",
|
|
101
|
+
"description": "左右两个 InputNumber 的额外 props,分别透传(src/RangeInput/index.tsx:60 interface 实证)"
|
|
102
|
+
},
|
|
103
|
+
"error": {
|
|
104
|
+
"type": "boolean",
|
|
105
|
+
"default": false,
|
|
106
|
+
"description": "错误状态"
|
|
107
|
+
},
|
|
108
|
+
"helperText": {
|
|
109
|
+
"type": "ReactNode",
|
|
110
|
+
"description": "错误/提示文字"
|
|
111
|
+
},
|
|
112
|
+
"onBlur": {
|
|
113
|
+
"type": "(event: React.FocusEvent<HTMLInputElement>, index: number) => void",
|
|
114
|
+
"description": "失去焦点回调;index=0/1 区分左右;swap 逻辑在整体失焦后触发(rAF 延后)"
|
|
115
|
+
},
|
|
116
|
+
"onFocus": {
|
|
117
|
+
"type": "(event: React.FocusEvent<HTMLInputElement>, index: number) => void",
|
|
118
|
+
"description": "获得焦点回调;index=0/1 区分左右"
|
|
119
|
+
},
|
|
120
|
+
"onEnter": {
|
|
121
|
+
"type": "(event: React.KeyboardEvent<HTMLInputElement>, index: number) => void",
|
|
122
|
+
"description": "回车回调;index=0/1 区分左右"
|
|
123
|
+
}
|
|
124
|
+
},
|
|
125
|
+
"crossPropInteractions": [
|
|
126
|
+
"clearable=true + value 类型 = 全链路放宽 [number | null, number | null]",
|
|
127
|
+
"clearable=false(默认)+ value 类型 = 收窄 [number | undefined, number | undefined]",
|
|
128
|
+
"onChange val + index = index=0/1 触发位,-1 表示内部 swap(min>max 自动交换)",
|
|
129
|
+
"disabled [boolean, boolean] + disabledTooltip [TooltipProps, TooltipProps] = 分别控制左右",
|
|
130
|
+
"size + 三档全部支持 = small / medium / large(api.ts 与 component.json 已对齐)"
|
|
131
|
+
],
|
|
132
|
+
"commonMisconceptions": [
|
|
133
|
+
"❌ 默认就能传 [null, null] 清空 — 必须显式 clearable={true}",
|
|
134
|
+
"❌ clearable=true 清空回传 null 本体 — 实际回传 [null, null] 二元组",
|
|
135
|
+
"❌ onChange 永远是 [number | null, number | null] — clearable=false 时实为 [number, number]",
|
|
136
|
+
"❌ size 只支持 small/large — 三档全部支持(api.ts 已修正)",
|
|
137
|
+
"❌ value desc 说「默认值 受控」— 历史 typo,实际是「当前值 受控」"
|
|
138
|
+
],
|
|
139
|
+
"do": [
|
|
140
|
+
"校验最小值不能大于最大值——组件会在整体失焦后自动 swap,配合 warningMessage 提示用户",
|
|
141
|
+
"提供清晰的分隔符(默认 '~',可自定义如 ' 至 ')",
|
|
142
|
+
"业务需要清空功能时显式传 clearable={true}(类型全链路放宽)",
|
|
143
|
+
"业务 [number, number] 严格非 null 时不传 clearable(类型收窄保护,onChange 回参直接是 [number, number])"
|
|
144
|
+
],
|
|
145
|
+
"dont": [
|
|
146
|
+
"忽略边界校验——min>max 时组件虽自动 swap,但最好在 onChange 里加业务层校验",
|
|
147
|
+
"不提示输入错误——配合 error + helperText 展示校验失败原因",
|
|
148
|
+
"默认 clearable=false 时传 [null, null](TS 报错)"
|
|
149
|
+
],
|
|
150
|
+
"events": {
|
|
151
|
+
"onChange": {
|
|
152
|
+
"signature": "(val: [number | null, number | null] | [number, number], index: number) => void",
|
|
153
|
+
"asyncSupported": false,
|
|
154
|
+
"examples": [
|
|
155
|
+
"受控写法:value={range} onChange={(val, index) => setRange(val)}",
|
|
156
|
+
"区分触发位:onChange={(val, index) => { if (index === 0) validateMin(val[0]); else if (index === 1) validateMax(val[1]); else console.log('swap 触发'); }}",
|
|
157
|
+
"clearable=false 桥接:onChange={(val) => setBizRange([val[0] ?? 0, val[1] ?? 0])}"
|
|
158
|
+
],
|
|
159
|
+
"commonMistakes": [
|
|
160
|
+
"index=-1 时 val 两端都变化(swap)——不能只看 val[index],index=-1 时应同时处理两端",
|
|
161
|
+
"clearable=false 时 onChange val 里出现 null——理论上不会,但渐进过渡期需兼容",
|
|
162
|
+
"忘记回写 value prop——RangeInput 是受控组件,onChange 后必须 setState 回写,否则页面回弹"
|
|
163
|
+
]
|
|
164
|
+
},
|
|
165
|
+
"onBlur": {
|
|
166
|
+
"signature": "(event: React.FocusEvent<HTMLInputElement>, index: number) => void",
|
|
167
|
+
"asyncSupported": false,
|
|
168
|
+
"examples": [
|
|
169
|
+
"整体失焦时才触发 swap——左右切焦时 onBlur 会被调但 swap 不触发(rAF 检测 activeElement 仍在组件内)",
|
|
170
|
+
"onBlur={(e, index) => { if (!rootRef.current?.contains(document.activeElement)) doValidation(); }}"
|
|
171
|
+
],
|
|
172
|
+
"commonMistakes": [
|
|
173
|
+
"在 onBlur 里立即读 value 期望拿到 swap 后的值——swap 是通过 rAF 异步触发,onBlur 调用时 swap 尚未执行"
|
|
174
|
+
]
|
|
175
|
+
}
|
|
176
|
+
},
|
|
177
|
+
"typescriptPitfalls": [
|
|
178
|
+
{
|
|
179
|
+
"issue": "clearable=false(默认)时 value 类型是 [number | undefined, number | undefined],直接传 [null, null] TS 报错",
|
|
180
|
+
"wrong": "value={[null, null]} // clearable=false 时类型不允许 null",
|
|
181
|
+
"right": "<RangeInput<true> clearable value={[null, null]} /> // 显式泛型 true 或 clearable={true}"
|
|
182
|
+
},
|
|
183
|
+
{
|
|
184
|
+
"issue": "onChange val 类型随 clearable 泛型变化,不显式传泛型时 val 类型推断可能宽泛",
|
|
185
|
+
"wrong": "// clearable=false 但 onChange handler 写成接受 null:\nonChange={(val: [number | null, number | null]) => ...} // 与 clearable=false 合约不符",
|
|
186
|
+
"right": "// clearable=false(默认)\nonChange={(val: [number, number]) => setRange(val)}"
|
|
187
|
+
},
|
|
188
|
+
{
|
|
189
|
+
"issue": "disabled 支持 [boolean, boolean] 元组,但传普通 boolean[] 数组类型不精确",
|
|
190
|
+
"wrong": "const flags: boolean[] = [true, false]; <RangeInput disabled={flags} /> // 类型报错",
|
|
191
|
+
"right": "const flags: [boolean, boolean] = [true, false]; <RangeInput disabled={flags} />"
|
|
192
|
+
}
|
|
193
|
+
],
|
|
194
|
+
"mapping": {
|
|
195
|
+
"realComponent": "RangeInput",
|
|
196
|
+
"adapter": null
|
|
197
|
+
}
|
|
198
|
+
}
|
package/lib/RangeInput/index.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});require('./index.css');const r=require("../_virtual/jsx-runtime.js"),t=require("react"),
|
|
1
|
+
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});require('./index.css');const r=require("../_virtual/jsx-runtime.js"),t=require("react"),i=require("../GlobalContext/constant.js"),Z=require("../Label/index.js"),M=require("../InputNumber/index.js"),B=require("../HelperText/index.js"),ee=require("clsx"),ne=require("../Tooltip/index.js"),re=require("@snack-kit/lib");;/* empty css */function V(u){const{className:P,style:W,label:H,labelTooltip:z,size:L="large",required:O=!1,disabled:o=!1,disabledTooltip:l,warningMessage:g,warnTime:k=2e3,defaultValue:te,value:h,error:j=!1,hideErrorDom:E,helperText:G="",separator:J="~",unit:v,placeholder:c,clearable:se=!1,onFocus:C,onBlur:w,onEnter:T,onChange:d,otherProps:f}=u,[m,p]=t.useState([null,null]),[K,I]=t.useState(!1),[Q,q]=t.useState(!1),e=t.useRef({timer:null,swapRafId:null}),$=t.useRef(null);t.useEffect(()=>{u.defaultValue!==void 0&&p(u.defaultValue)},[]),t.useEffect(()=>{h!==void 0&&p(h)},[h]),t.useEffect(()=>()=>{e.current.swapRafId!==null&&(cancelAnimationFrame(e.current.swapRafId),e.current.swapRafId=null),e.current.timer!==null&&(clearTimeout(e.current.timer),e.current.timer=null)},[]);const N=n=>c&&c instanceof Array?c[n]:c,x=n=>o&&o instanceof Array?o[n]:o,F=n=>s=>{I(!0),C&&C(s,n)},A=n=>s=>{I(!1),w&&w(s,n),e.current.swapRafId!==null&&cancelAnimationFrame(e.current.swapRafId),e.current.swapRafId=requestAnimationFrame(()=>{e.current.swapRafId=null;const a=$.current;if(a&&a.contains(document.activeElement))return;const[R,b]=m;if(R!==null&&b!==null&&R>b){const y=[b,R];u.value===void 0&&p(y),d&&d(y,-1),g&&U()}})},U=()=>{clearTimeout(e.current.timer??void 0),q(!0),e.current.timer=setTimeout(()=>{q(!1)},k)},D=n=>s=>{T&&T(s,n)},S=n=>s=>{const a=re.DeepClone(m);a[n]=s,u.value===void 0&&p(a),d&&d(a,n)},_=()=>r.jsxRuntimeExports.jsxs("div",{className:"range-input-content",children:[r.jsxRuntimeExports.jsx(M.InputNumber,{...f&&f[0],clearable:!0,btnMode:"none",hideErrorDom:!0,placeholder:N(0),disabled:x(0),disabledTooltip:l?.[0],value:m[0],onFocus:F(0),onBlur:A(0),onEnter:D(0),onChange:S(0)}),r.jsxRuntimeExports.jsx("span",{className:"separator",children:J}),r.jsxRuntimeExports.jsx(M.InputNumber,{...f&&f[1],clearable:!0,btnMode:"none",hideErrorDom:!0,placeholder:N(1),disabled:x(1),disabledTooltip:l?.[1],value:m[1],onFocus:F(1),onBlur:A(1),onEnter:D(1),onChange:S(1)}),v&&r.jsxRuntimeExports.jsx("span",{className:"unit",children:v})]}),X=()=>l&&!(l instanceof Array)?r.jsxRuntimeExports.jsx(ne.Tooltip,{disabled:!0,...l,children:_()}):_(),Y=()=>Q?r.jsxRuntimeExports.jsx(B.default,{className:"range-input-warning-text",helperText:g,hideErrorDom:E}):r.jsxRuntimeExports.jsx(B.default,{className:"range-input-error-text",error:j,helperText:G,hideErrorDom:E});return r.jsxRuntimeExports.jsxs("div",{ref:$,className:ee(P,`${i.$prefixCls}-range-input`,`${i.$prefixCls}-range-input-${L}`,{[`${i.$prefixCls}-range-input-focus`]:K,[`${i.$prefixCls}-range-input-disabled`]:o===!0||x(0)&&x(1),[`${i.$prefixCls}-range-input-error`]:j}),style:W,children:[r.jsxRuntimeExports.jsx(Z.default,{label:H,required:O,...z}),X(),Y()]})}exports.RangeInput=V;exports.default=V;
|
|
2
2
|
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "Result",
|
|
3
|
+
"category": "Feedback",
|
|
4
|
+
"description": "用于反馈一系列操作任务的处理结果",
|
|
5
|
+
"semantic": {
|
|
6
|
+
"intent": [
|
|
7
|
+
"展示结果",
|
|
8
|
+
"引导下一步",
|
|
9
|
+
"明确状态"
|
|
10
|
+
],
|
|
11
|
+
"useCases": [
|
|
12
|
+
"提交成功",
|
|
13
|
+
"提交失败",
|
|
14
|
+
"加载中"
|
|
15
|
+
],
|
|
16
|
+
"riskLevel": "normal"
|
|
17
|
+
},
|
|
18
|
+
"variants": {
|
|
19
|
+
"success": {
|
|
20
|
+
"meaning": "成功(src 实装)"
|
|
21
|
+
},
|
|
22
|
+
"error": {
|
|
23
|
+
"meaning": "错误(src 实装)"
|
|
24
|
+
},
|
|
25
|
+
"loading": {
|
|
26
|
+
"meaning": "加载中(src 实装)"
|
|
27
|
+
},
|
|
28
|
+
"_blueprint_403": {
|
|
29
|
+
"meaning": "(蓝图 / src 未实装)无权限页 — 当前需用 icon 自定义模拟,见 discussions/Result-status-expansion-and-footer-epic.md"
|
|
30
|
+
},
|
|
31
|
+
"_blueprint_404": {
|
|
32
|
+
"meaning": "(蓝图 / src 未实装)未找到页 — 当前需用 icon 自定义模拟"
|
|
33
|
+
},
|
|
34
|
+
"_blueprint_500": {
|
|
35
|
+
"meaning": "(蓝图 / src 未实装)服务器错误页 — 当前需用 icon 自定义模拟"
|
|
36
|
+
},
|
|
37
|
+
"_blueprint_warning": {
|
|
38
|
+
"meaning": "(蓝图 / src 未实装)警告反馈 — 当前需用 icon 自定义模拟"
|
|
39
|
+
},
|
|
40
|
+
"_blueprint_info": {
|
|
41
|
+
"meaning": "(蓝图 / src 未实装)信息反馈 — 当前需用 icon 自定义模拟"
|
|
42
|
+
}
|
|
43
|
+
},
|
|
44
|
+
"states": [
|
|
45
|
+
"visible"
|
|
46
|
+
],
|
|
47
|
+
"idealProps": {
|
|
48
|
+
"status": {
|
|
49
|
+
"type": "'success' | 'error' | 'loading'",
|
|
50
|
+
"values": ["success", "error", "loading"],
|
|
51
|
+
"description": "结果状态;⚠️ src 当前仅实装这 3 个枚举值(src/Result/index.tsx:22 实证);蓝图 404/403/500/warning/info 见 variants._blueprint_* 与 discussions/Result-status-expansion-and-footer-epic.md;业务侧需要这些状态时,用 icon 自定义模拟"
|
|
52
|
+
},
|
|
53
|
+
"title": {
|
|
54
|
+
"type": "ReactNode",
|
|
55
|
+
"description": "标题;src 内部经 AutoTips 包装,长文案自动 Tooltip"
|
|
56
|
+
},
|
|
57
|
+
"subTitle": {
|
|
58
|
+
"type": "ReactNode",
|
|
59
|
+
"description": "副标题;无 AutoTips 包装"
|
|
60
|
+
},
|
|
61
|
+
"icon": {
|
|
62
|
+
"type": "ReactNode",
|
|
63
|
+
"description": "自定义结果图标;优先级【高于】status 默认图标;src 内部包在 .icon-box 容器中"
|
|
64
|
+
},
|
|
65
|
+
"footer": {
|
|
66
|
+
"type": "ReactNode",
|
|
67
|
+
"description": "⚠️ 操作区(底部);prop 名是 footer(不是 extra)!component.json 历史版本写过 extra 是蓝图笔误,src 实际实装的是 footer(src/Result/index.tsx:30 实证);通常放 1-2 个按钮"
|
|
68
|
+
}
|
|
69
|
+
},
|
|
70
|
+
"do": [
|
|
71
|
+
"在关键环节(支付/提交)结束后用 Result 反馈结果",
|
|
72
|
+
"提供明确的返回或重试按钮(放在 footer 插槽)",
|
|
73
|
+
"shape: 404/403/500/warning 等业务状态,通过 icon 自定义图标 + title 文案表达",
|
|
74
|
+
"长 title 文案放心使用 — 组件内部经 AutoTips 自动 Tooltip"
|
|
75
|
+
],
|
|
76
|
+
"dont": [
|
|
77
|
+
"**不要传 status='404' / '403' / '500' / 'warning' / 'info'** — src 当前仅 success/error/loading 3 枚举,会触发 tsc 类型错误",
|
|
78
|
+
"**不要用 extra prop** — 操作区是 footer(extra 是蓝图未实装)",
|
|
79
|
+
"在简单的操作反馈中使用 Result(应使用 Message)",
|
|
80
|
+
"在 footer 内放过多按钮(2 个为佳:主+次)"
|
|
81
|
+
],
|
|
82
|
+
"events": {},
|
|
83
|
+
"typescriptPitfalls": [
|
|
84
|
+
{
|
|
85
|
+
"issue": "status 枚举仅有 3 个值,传 '404'/'403'/'500'/'warning'/'info' 触发 TS 类型错误",
|
|
86
|
+
"wrong": "<Result status='404' title='Not Found' /> // TS 报 '404' 不属于 'success' | 'error' | 'loading'",
|
|
87
|
+
"right": "<Result icon={<NotFoundIcon />} title='404 - Not Found' /> // 用 icon 自定义模拟"
|
|
88
|
+
},
|
|
89
|
+
{
|
|
90
|
+
"issue": "操作区插槽名是 footer,不是 extra(历史蓝图遗留 extra 但 src 未实装)",
|
|
91
|
+
"wrong": "<Result status='success' extra={<Button>返回</Button>} /> // extra prop 不存在,静默无效",
|
|
92
|
+
"right": "<Result status='success' footer={<Button>返回</Button>} /> // src/Result/index.tsx:30 实证 footer"
|
|
93
|
+
},
|
|
94
|
+
{
|
|
95
|
+
"issue": "icon 与 status 同时传时 icon 优先,status 图标被覆盖",
|
|
96
|
+
"wrong": "// 期望用 status 图标同时用自定义外层容器 → icon 覆盖 status 图标",
|
|
97
|
+
"right": "// 需要自定义图标时只传 icon,无需传 status;需要预设图标时只传 status,不传 icon"
|
|
98
|
+
}
|
|
99
|
+
],
|
|
100
|
+
"mapping": {
|
|
101
|
+
"realComponent": "Result",
|
|
102
|
+
"adapter": null
|
|
103
|
+
}
|
|
104
|
+
}
|