@para-ui/core 5.0.0-beta.9 → 5.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/AGENTS.md +315 -0
- package/AlignBox/component.json +89 -0
- package/Anchor/component.json +130 -0
- package/Argv/component.json +216 -0
- package/AutoBox/component.json +133 -0
- package/AutoButton/component.json +109 -0
- package/AutoTips/component.json +121 -0
- package/Badge/component.json +92 -0
- package/Breadcrumbs/component.json +142 -0
- package/Button/component.json +168 -0
- package/ButtonGroup/component.json +132 -0
- package/Card/component.json +162 -0
- package/Carousel/component.json +142 -0
- package/Cascader/component.json +196 -0
- package/Checkbox/component.json +138 -0
- package/CheckboxGroup/component.json +152 -0
- package/CodeEditor/component.json +189 -0
- package/Collapse/component.json +166 -0
- package/CollapseBox/component.json +84 -0
- package/CollapseLayout/component.json +155 -0
- package/ColorPicker/component.json +142 -0
- package/ComboSelect/component.json +181 -0
- package/Container/component.json +111 -0
- package/ContentBox/component.json +81 -0
- package/CopyText/component.json +118 -0
- package/CycleSelector/component.json +98 -0
- package/DatePicker/component.json +192 -0
- package/Descriptions/component.json +142 -0
- package/Desktop/component.json +171 -0
- package/DragVerify/component.json +114 -0
- package/Drawer/component.json +200 -0
- package/Dropdown/component.json +147 -0
- package/DynamicMultiBox/component.json +278 -0
- package/Empty/component.json +123 -0
- package/ExpressionInput/component.json +79 -0
- package/FieldForm/component.json +196 -0
- package/Form/component.json +161 -0
- package/FormItem/component.json +171 -0
- package/FunctionModal/component.json +197 -0
- package/Help/component.json +118 -0
- package/HelperText/component.json +126 -0
- package/Image/component.json +165 -0
- package/InputCode/component.json +191 -0
- package/InputLang/component.json +205 -0
- package/InputNumber/component.json +162 -0
- package/Label/component.json +126 -0
- package/Loading/component.json +91 -0
- package/Menu/component.json +180 -0
- package/Message/component.json +246 -0
- package/Modal/component.json +277 -0
- package/MultiBox/component.json +216 -0
- package/Notification/component.json +184 -0
- package/OperateBtn/component.json +134 -0
- package/PageHeader/component.json +112 -0
- package/Pagination/component.json +181 -0
- package/PasswordRules/component.json +105 -0
- package/PopConfirm/component.json +227 -0
- package/PopMenu/component.json +131 -0
- package/Popover/component.json +165 -0
- package/Progress/component.json +161 -0
- package/Prompt/component.json +144 -0
- package/Querying/component.json +96 -0
- package/QuickReply/component.json +129 -0
- package/Radio/component.json +136 -0
- package/RadioGroup/component.json +149 -0
- package/RangeInput/component.json +198 -0
- package/Result/component.json +104 -0
- package/ScrollBar/component.json +115 -0
- package/Search/component.json +177 -0
- package/Select/component.json +244 -0
- package/SelectInput/component.json +184 -0
- package/Selector/component.json +203 -0
- package/SelectorPicker/component.json +179 -0
- package/SingleBox/component.json +151 -0
- package/Slider/component.json +181 -0
- package/SortBox/component.json +108 -0
- package/Status/component.json +104 -0
- package/Stepper/component.json +129 -0
- package/Switch/component.json +207 -0
- package/Table/component.json +547 -0
- package/Tabs/component.json +227 -0
- package/Tag/component.json +221 -0
- package/TextEditor/component.json +186 -0
- package/TextField/component.json +290 -0
- package/TimePicker/component.json +176 -0
- package/Timeline/component.json +110 -0
- package/Title/component.json +156 -0
- package/ToggleButton/component.json +153 -0
- package/Tooltip/component.json +176 -0
- package/Transfer/component.json +157 -0
- package/Tree/component.json +512 -0
- package/Upload/component.json +450 -0
- package/ai-workflows/01-crud-list-multi-drawer.md +278 -0
- package/ai-workflows/02-rbac-operation-buttons.md +290 -0
- package/ai-workflows/03-complex-form-async-cascade.md +350 -0
- package/ai-workflows/04-array-field-form.md +281 -0
- package/ai-workflows/05-popconfirm-async-message-queue.md +333 -0
- package/ai-workflows/06-modal-drawer-form-workflow.md +385 -0
- package/ai-workflows/07-search-filter-table-trio.md +387 -0
- package/ai-workflows/08-table-advanced-features.md +365 -0
- package/ai-workflows/09-batch-operation-export-progress.md +367 -0
- package/ai-workflows/10-cross-component-state-coordination.md +412 -0
- package/es/AlignBox/component.json +89 -0
- package/es/AlignBox/index.css +1 -1
- package/es/AlignBox/index.d.ts +6 -2
- package/es/AlignBox/index.js +1 -1
- package/es/AlignBox/style/index.css +1 -1
- package/es/Anchor/anchorMenu/index.d.ts +2 -1
- package/es/Anchor/anchorMenu/index.js +36 -33
- package/es/Anchor/component.json +130 -0
- package/es/Anchor/index.js +52 -49
- package/es/Anchor/type.d.ts +8 -4
- package/es/Argv/batchEdit/index.js +1 -1
- package/es/Argv/component.json +216 -0
- package/es/Argv/dataGenerator/index.js +1 -1
- package/es/Argv/index.d.ts +5 -6
- package/es/Argv/index.js +1 -1
- package/es/AutoBox/component.json +133 -0
- package/es/AutoBox/index.d.ts +3 -3
- package/es/AutoBox/index.js +1 -1
- package/es/AutoBox/protal.d.ts +2 -2
- package/es/AutoBox/protal.js +33 -30
- package/es/AutoButton/component.json +109 -0
- package/es/AutoButton/index.js +1 -1
- package/es/AutoTips/autoTipsMultiline/index.d.ts +1 -1
- package/es/AutoTips/autoTipsMultiline/index.js +1 -1
- package/es/AutoTips/component.json +121 -0
- package/es/AutoTips/index.js +1 -1
- package/es/Badge/component.json +92 -0
- package/es/Breadcrumbs/component.json +142 -0
- package/es/Breadcrumbs/index.js +1 -1
- package/es/Button/SplitButton.d.ts +2 -2
- package/es/Button/component.json +168 -0
- package/es/Button/index.js +44 -44
- package/es/ButtonGroup/component.json +132 -0
- package/es/ButtonGroup/index.d.ts +1 -1
- package/es/Card/component.json +162 -0
- package/es/Card/index.d.ts +2 -2
- package/es/Card/index.js +2 -2
- package/es/Carousel/component.json +142 -0
- package/es/Carousel/index.d.ts +1 -1
- package/es/Cascader/Cascader.js +1 -1
- package/es/Cascader/OptionList/Column.js +1 -1
- package/es/Cascader/OptionList/index.js +1 -1
- package/es/Cascader/component.json +196 -0
- package/es/Cascader/hooks/useEntities.js +7 -7
- package/es/Cascader/interface.d.ts +1 -0
- package/es/Cascader/utils/commonUtil.d.ts +1 -1
- package/es/Cascader/utils/commonUtil.js +16 -16
- package/es/Cascader/utils/treeUtil.d.ts +14 -5
- package/es/Cascader/utils/treeUtil.js +1 -1
- package/es/Checkbox/component.json +138 -0
- package/es/CheckboxGroup/component.json +152 -0
- package/es/CheckboxGroup/index.js +1 -1
- package/es/CodeEditor/component.json +189 -0
- package/es/CodeEditor/index.d.ts +11 -10
- package/es/CodeEditor/index.js +25 -25
- package/es/Collapse/component.json +166 -0
- package/es/Collapse/index.d.ts +1 -1
- package/es/Collapse/index.js +23 -22
- package/es/CollapseBox/component.json +84 -0
- package/es/CollapseLayout/component.json +155 -0
- package/es/ColorPicker/component.json +142 -0
- package/es/ComboSelect/component.json +181 -0
- package/es/ComboSelect/index.js +115 -109
- package/es/ComboSelect/interface.d.ts +2 -2
- package/es/ComboSelect/utils.d.ts +3 -3
- package/es/ComboSelect/utils.js +1 -1
- package/es/Container/component.json +111 -0
- package/es/ContentBox/component.json +81 -0
- package/es/CopyText/component.json +118 -0
- package/es/CycleSelector/component.json +98 -0
- package/es/CycleSelector/index.js +14 -13
- package/es/DatePicker/component.json +192 -0
- package/es/DatePicker/generatePicker/generateRangePicker.js +11 -11
- package/es/DatePicker/generatePicker/generateSinglePicker.js +2 -2
- package/es/Descriptions/component.json +142 -0
- package/es/Descriptions/index.d.ts +1 -1
- package/es/Desktop/component.json +171 -0
- package/es/Desktop/index.js +1 -1
- package/es/DragVerify/component.json +114 -0
- package/es/DragVerify/index.js +19 -19
- package/es/Drawer/component.json +200 -0
- package/es/Drawer/index.js +86 -86
- package/es/Drawer/interface.d.ts +1 -1
- package/es/Drawer/util.d.ts +1 -6
- package/es/Drawer/util.js +9 -6
- package/es/Dropdown/component.json +147 -0
- package/es/Dropdown/index.js +1 -1
- package/es/DynamicMultiBox/component.json +278 -0
- package/es/DynamicMultiBox/formItem.d.ts +1 -1
- package/es/DynamicMultiBox/index.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/ExpressionInput/HighlightOverlay.d.ts +8 -0
- package/es/ExpressionInput/HighlightOverlay.js +27 -0
- package/es/ExpressionInput/Popup.d.ts +19 -0
- package/es/ExpressionInput/Popup.js +93 -0
- package/es/ExpressionInput/component.json +79 -0
- package/es/ExpressionInput/detectChainAtCursor.d.ts +17 -0
- package/es/ExpressionInput/detectChainAtCursor.js +31 -0
- package/es/ExpressionInput/filterCandidatesByPartial.d.ts +2 -0
- package/es/ExpressionInput/filterCandidatesByPartial.js +15 -0
- package/es/ExpressionInput/highlightSegments.d.ts +9 -0
- package/es/ExpressionInput/highlightSegments.js +14 -0
- package/es/ExpressionInput/index.css +1 -0
- package/es/ExpressionInput/index.d.ts +5 -0
- package/es/ExpressionInput/index.js +178 -0
- package/es/ExpressionInput/interface.d.ts +52 -0
- package/es/ExpressionInput/isExpressionValue.d.ts +5 -0
- package/es/ExpressionInput/isExpressionValue.js +18 -0
- package/es/ExpressionInput/lang/en_US.d.ts +4 -0
- package/es/ExpressionInput/lang/en_US.js +7 -0
- package/es/ExpressionInput/lang/index.d.ts +9 -0
- package/es/ExpressionInput/lang/index.js +10 -0
- package/es/ExpressionInput/lang/zh_CN.d.ts +4 -0
- package/es/ExpressionInput/lang/zh_CN.js +7 -0
- package/es/ExpressionInput/style/css.js +1 -0
- package/es/ExpressionInput/style/index.css +1 -0
- package/es/ExpressionInput/style/index.js +1 -0
- package/es/ExpressionInput/useExpressionInput.d.ts +26 -0
- package/es/ExpressionInput/useExpressionInput.js +59 -0
- package/es/FieldForm/FieldFormItem/ItemHolder.js +1 -1
- package/es/FieldForm/FieldFormItem/MemoInput.d.ts +2 -2
- package/es/FieldForm/FieldFormItem/StatusProvider.js +1 -1
- package/es/FieldForm/FieldFormItem/index.d.ts +6 -6
- package/es/FieldForm/Form.d.ts +2 -2
- package/es/FieldForm/Form.js +1 -1
- package/es/FieldForm/FormItemInput.js +1 -1
- package/es/FieldForm/FormItemLabel.js +1 -1
- package/es/FieldForm/FormList.d.ts +2 -2
- package/es/FieldForm/component.json +196 -0
- package/es/FieldForm/context.d.ts +5 -1
- package/es/FieldForm/context.js +2 -2
- package/es/FieldForm/hooks/useForm.d.ts +4 -3
- package/es/FieldForm/hooks/useFormInstance.d.ts +1 -1
- package/es/FieldForm/hooks/useFormItemStatus.d.ts +9 -5
- package/es/FieldForm/hooks/useFormItemStatus.js +2 -2
- package/es/FieldForm/hooks/useItemRef.d.ts +1 -1
- package/es/FieldForm/hooks/useItemRef.js +6 -6
- package/es/Form/component.json +161 -0
- package/es/Form/index.d.ts +52 -49
- package/es/Form/index.js +1 -1
- package/es/FormItem/compoments/defaultCompoments/index.d.ts +5 -5
- package/es/FormItem/compoments/defaultCompoments/index.js +12 -11
- package/es/FormItem/compoments/formCheckboxGroup/index.d.ts +2 -2
- package/es/FormItem/compoments/formFile/index.js +8 -8
- package/es/FormItem/compoments/formRadioGroup/index.d.ts +1 -1
- package/es/FormItem/compoments/formSelect/index.d.ts +1 -1
- package/es/FormItem/component.json +171 -0
- package/es/FormItem/index.d.ts +5 -5
- package/es/FormItem/index.js +23 -23
- package/es/FormItem/itemType.js +1 -1
- package/es/FunctionModal/component.json +197 -0
- package/es/FunctionModal/dialog.d.ts +1 -1
- package/es/FunctionModal/modalContext.d.ts +4 -1
- package/es/GlobalContext/confirmLocale.js +1 -1
- package/es/GlobalContext/index.js +1 -1
- package/es/Help/component.json +118 -0
- package/es/HelperText/component.json +126 -0
- package/es/Image/PreviewGroup.js +1 -1
- package/es/Image/component.json +165 -0
- package/es/Image/index.js +1 -1
- package/es/InputCode/component.json +191 -0
- package/es/InputCode/index.d.ts +2 -2
- package/es/InputCode/index.js +1 -1
- package/es/InputLang/component.json +205 -0
- package/es/InputLang/index.js +2 -2
- package/es/InputNumber/component.json +162 -0
- package/es/InputNumber/index.d.ts +13 -7
- package/es/InputNumber/index.js +152 -144
- package/es/Label/component.json +126 -0
- package/es/Label/index.d.ts +2 -2
- package/es/Loading/component.json +91 -0
- package/es/Menu/component.json +180 -0
- package/es/Menu/verticalMenuList.js +1 -1
- package/es/Message/component.json +246 -0
- package/es/Message/index.d.ts +2 -2
- package/es/Message/index.js +19 -19
- package/es/Modal/Confirm/index.d.ts +1 -1
- package/es/Modal/Confirm/index.js +1 -1
- package/es/Modal/component.json +277 -0
- package/es/Modal/index.d.ts +85 -5
- package/es/Modal/index.js +159 -122
- package/es/Modal/interface.d.ts +1 -0
- package/es/MultiBox/component.json +216 -0
- package/es/MultiBox/index.js +19 -14
- package/es/Notification/component.json +184 -0
- package/es/OperateBtn/component.json +134 -0
- package/es/OperateBtn/index.d.ts +3 -3
- package/es/PageHeader/component.json +112 -0
- package/es/PageHeader/horizontalMeun.js +1 -1
- package/es/PageHeader/horizontalMeunRight.js +1 -1
- package/es/Pagination/component.json +181 -0
- package/es/Pagination/index.js +15 -15
- package/es/ParauiProvider/index.js +1 -1
- package/es/PasswordRules/component.json +105 -0
- package/es/PasswordRules/index.d.ts +4 -4
- package/es/PopConfirm/component.json +227 -0
- package/es/PopConfirm/index.d.ts +1 -1
- package/es/PopConfirm/index.js +1 -1
- package/es/PopMenu/component.json +131 -0
- package/es/PopMenu/hooks.d.ts +1 -1
- package/es/PopMenu/index.js +8 -8
- package/es/Popover/component.json +165 -0
- package/es/Popover/index.js +1 -1
- package/es/Progress/component.json +161 -0
- package/es/Prompt/component.json +144 -0
- package/es/Querying/component.json +96 -0
- package/es/Querying/index.css +1 -1
- package/es/Querying/index.d.ts +2 -2
- package/es/Querying/index.js +20 -19
- package/es/Querying/style/index.css +1 -1
- package/es/QuickReply/QuickReplyCode/index.js +1 -1
- package/es/QuickReply/component.json +129 -0
- package/es/QuickReply/index.d.ts +1 -1
- package/es/Radio/component.json +136 -0
- package/es/RadioGroup/component.json +149 -0
- package/es/RangeInput/component.json +198 -0
- package/es/RangeInput/index.d.ts +15 -7
- package/es/RangeInput/index.js +120 -103
- package/es/Result/component.json +104 -0
- package/es/ScrollBar/component.json +115 -0
- package/es/Search/component.json +177 -0
- package/es/Search/index.d.ts +1 -1
- package/es/Select/component.json +244 -0
- package/es/Select/index.d.ts +11 -8
- package/es/Select/index.js +441 -438
- package/es/SelectInput/component.json +184 -0
- package/es/SelectInput/index.d.ts +4 -4
- package/es/SelectInput/index.js +8 -8
- package/es/Selector/component.json +203 -0
- package/es/Selector/index.js +56 -50
- package/es/Selector/interface.d.ts +2 -2
- package/es/Selector/selectorData/index.js +1 -1
- package/es/Selector/selectorMain/index.js +3 -3
- package/es/Selector/selectorNode/index.js +1 -1
- package/es/Selector/util.d.ts +3 -3
- package/es/Selector/util.js +6 -12
- package/es/SelectorPicker/component.json +179 -0
- package/es/SelectorPicker/index.d.ts +5 -5
- package/es/SelectorPicker/index.js +15 -15
- package/es/SingleBox/component.json +151 -0
- package/es/SingleBox/index.d.ts +2 -2
- package/es/Slider/component.json +181 -0
- package/es/SortBox/component.json +108 -0
- package/es/Status/component.json +104 -0
- package/es/Stepper/component.json +129 -0
- package/es/Stepper/index.d.ts +2 -2
- package/es/Switch/component.json +207 -0
- package/es/Switch/index.css +1 -1
- package/es/Switch/index.d.ts +3 -2
- package/es/Switch/index.js +60 -59
- package/es/Switch/style/index.css +1 -1
- package/es/Table/component.json +547 -0
- package/es/Table/index.d.ts +2 -2
- package/es/Table/index.js +385 -382
- package/es/Table/interface.d.ts +30 -0
- package/es/Table/tableHead.js +1 -1
- package/es/Table/util.d.ts +1 -1
- package/es/Table/util.js +3 -12
- package/es/Tabs/component.json +227 -0
- package/es/Tag/component.json +221 -0
- package/es/Tag/index.css +1 -1
- package/es/Tag/index.d.ts +1 -1
- package/es/Tag/index.js +20 -20
- package/es/Tag/style/index.css +1 -1
- package/es/TextEditor/component.json +186 -0
- package/es/TextEditor/index.d.ts +5 -5
- package/es/TextEditor/index.js +1 -1
- package/es/TextField/component.json +290 -0
- package/es/TextField/index.d.ts +2 -2
- package/es/TextField/index.js +1 -1
- package/es/TimePicker/component.json +176 -0
- package/es/Timeline/component.json +110 -0
- package/es/Title/component.json +156 -0
- package/es/ToggleButton/component.json +153 -0
- package/es/ToggleButton/index.js +1 -1
- package/es/Tooltip/component.json +176 -0
- package/es/Tooltip/index.js +58 -53
- package/es/Tooltip/interface.d.ts +14 -1
- package/es/Tooltip/utils.js +6 -6
- package/es/Transfer/component.json +157 -0
- package/es/Tree/OperateBar/index.js +1 -1
- package/es/Tree/Tree.js +3 -3
- package/es/Tree/component.json +512 -0
- package/es/Tree/interface.d.ts +1 -1
- package/es/Upload/component.json +450 -0
- package/es/Upload/util.js +1 -1
- package/es/Utils/snack-kit-shims.d.ts +18 -0
- package/es/Utils/snack-kit-shims.js +19 -0
- package/es/Utils/type.d.ts +0 -6
- package/es/_virtual/index.js +5 -3
- package/es/_virtual/index2.js +2 -5
- package/es/index.d.ts +4 -0
- package/es/index.js +152 -150
- package/es/locale/en-US.d.ts +3 -0
- package/es/locale/en-US.js +3 -0
- package/es/locale/en_US.d.ts +361 -0
- package/es/locale/en_US.js +364 -0
- package/es/locale/index.d.ts +1 -723
- package/es/locale/index2.js +10 -0
- package/es/locale/zh-CN.d.ts +3 -0
- package/es/locale/zh-CN.js +3 -0
- package/es/locale/zh_CN.d.ts +361 -0
- package/es/locale/zh_CN.js +364 -0
- package/es/node_modules/classnames/index.js +1 -1
- package/lib/AlignBox/component.json +89 -0
- package/lib/AlignBox/index.css +1 -1
- package/lib/AlignBox/index.d.ts +6 -2
- package/lib/AlignBox/index.js +1 -1
- package/lib/AlignBox/style/index.css +1 -1
- package/lib/Anchor/anchorMenu/index.d.ts +2 -1
- package/lib/Anchor/anchorMenu/index.js +1 -1
- package/lib/Anchor/component.json +130 -0
- package/lib/Anchor/index.js +1 -1
- package/lib/Anchor/type.d.ts +8 -4
- package/lib/Argv/component.json +216 -0
- package/lib/Argv/dataGenerator/index.js +1 -1
- package/lib/Argv/index.d.ts +5 -6
- package/lib/Argv/index.js +1 -1
- package/lib/AutoBox/component.json +133 -0
- package/lib/AutoBox/index.d.ts +3 -3
- package/lib/AutoBox/index.js +1 -1
- package/lib/AutoBox/protal.d.ts +2 -2
- package/lib/AutoBox/protal.js +1 -1
- package/lib/AutoButton/component.json +109 -0
- package/lib/AutoButton/index.js +1 -1
- package/lib/AutoTips/autoTipsMultiline/index.d.ts +1 -1
- package/lib/AutoTips/autoTipsMultiline/index.js +1 -1
- package/lib/AutoTips/component.json +121 -0
- package/lib/AutoTips/index.js +1 -1
- package/lib/Badge/component.json +92 -0
- package/lib/Breadcrumbs/component.json +142 -0
- package/lib/Breadcrumbs/index.js +1 -1
- package/lib/Button/SplitButton.d.ts +2 -2
- package/lib/Button/component.json +168 -0
- package/lib/Button/index.js +1 -1
- package/lib/ButtonGroup/component.json +132 -0
- package/lib/ButtonGroup/index.d.ts +1 -1
- package/lib/Card/component.json +162 -0
- package/lib/Card/index.d.ts +2 -2
- package/lib/Card/index.js +1 -1
- package/lib/Carousel/component.json +142 -0
- package/lib/Carousel/index.d.ts +1 -1
- package/lib/Cascader/Cascader.js +1 -1
- package/lib/Cascader/OptionList/Column.js +1 -1
- package/lib/Cascader/OptionList/index.js +1 -1
- package/lib/Cascader/component.json +196 -0
- package/lib/Cascader/hooks/useEntities.js +1 -1
- package/lib/Cascader/interface.d.ts +1 -0
- package/lib/Cascader/utils/commonUtil.d.ts +1 -1
- package/lib/Cascader/utils/commonUtil.js +1 -1
- package/lib/Cascader/utils/treeUtil.d.ts +14 -5
- package/lib/Cascader/utils/treeUtil.js +1 -1
- package/lib/Checkbox/component.json +138 -0
- package/lib/CheckboxGroup/component.json +152 -0
- package/lib/CheckboxGroup/index.js +1 -1
- package/lib/CodeEditor/component.json +189 -0
- package/lib/CodeEditor/index.d.ts +11 -10
- package/lib/CodeEditor/index.js +1 -1
- package/lib/Collapse/component.json +166 -0
- package/lib/Collapse/index.d.ts +1 -1
- package/lib/Collapse/index.js +1 -1
- package/lib/CollapseBox/component.json +84 -0
- package/lib/CollapseLayout/component.json +155 -0
- package/lib/ColorPicker/component.json +142 -0
- package/lib/ComboSelect/component.json +181 -0
- package/lib/ComboSelect/index.js +1 -1
- package/lib/ComboSelect/interface.d.ts +2 -2
- package/lib/ComboSelect/utils.d.ts +3 -3
- package/lib/ComboSelect/utils.js +1 -1
- package/lib/Container/component.json +111 -0
- package/lib/ContentBox/component.json +81 -0
- package/lib/CopyText/component.json +118 -0
- package/lib/CycleSelector/component.json +98 -0
- package/lib/CycleSelector/index.js +1 -1
- package/lib/DatePicker/component.json +192 -0
- package/lib/DatePicker/generatePicker/generateRangePicker.js +1 -1
- package/lib/DatePicker/generatePicker/generateSinglePicker.js +1 -1
- package/lib/Descriptions/component.json +142 -0
- package/lib/Descriptions/index.d.ts +1 -1
- package/lib/Desktop/component.json +171 -0
- package/lib/Desktop/index.js +1 -1
- package/lib/DragVerify/component.json +114 -0
- package/lib/DragVerify/index.js +1 -1
- package/lib/Drawer/component.json +200 -0
- package/lib/Drawer/index.js +1 -1
- package/lib/Drawer/interface.d.ts +1 -1
- package/lib/Drawer/util.d.ts +1 -6
- package/lib/Drawer/util.js +1 -1
- package/lib/Dropdown/component.json +147 -0
- package/lib/Dropdown/index.js +1 -1
- package/lib/DynamicMultiBox/component.json +278 -0
- package/lib/DynamicMultiBox/formItem.d.ts +1 -1
- package/lib/DynamicMultiBox/index.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/ExpressionInput/HighlightOverlay.d.ts +8 -0
- package/lib/ExpressionInput/HighlightOverlay.js +2 -0
- package/lib/ExpressionInput/Popup.d.ts +19 -0
- package/lib/ExpressionInput/Popup.js +2 -0
- package/lib/ExpressionInput/component.json +79 -0
- package/lib/ExpressionInput/detectChainAtCursor.d.ts +17 -0
- package/lib/ExpressionInput/detectChainAtCursor.js +2 -0
- package/lib/ExpressionInput/filterCandidatesByPartial.d.ts +2 -0
- package/lib/ExpressionInput/filterCandidatesByPartial.js +2 -0
- package/lib/ExpressionInput/highlightSegments.d.ts +9 -0
- package/lib/ExpressionInput/highlightSegments.js +2 -0
- package/lib/ExpressionInput/index.css +1 -0
- package/lib/ExpressionInput/index.d.ts +5 -0
- package/lib/ExpressionInput/index.js +2 -0
- package/lib/ExpressionInput/interface.d.ts +52 -0
- package/lib/ExpressionInput/isExpressionValue.d.ts +5 -0
- package/lib/ExpressionInput/isExpressionValue.js +2 -0
- package/lib/ExpressionInput/lang/en_US.d.ts +4 -0
- package/lib/ExpressionInput/lang/en_US.js +2 -0
- package/lib/ExpressionInput/lang/index.d.ts +9 -0
- package/lib/ExpressionInput/lang/index.js +2 -0
- package/lib/ExpressionInput/lang/zh_CN.d.ts +4 -0
- package/lib/ExpressionInput/lang/zh_CN.js +2 -0
- package/lib/ExpressionInput/style/css.js +1 -0
- package/lib/ExpressionInput/style/index.css +1 -0
- package/lib/ExpressionInput/style/index.js +1 -0
- package/lib/ExpressionInput/useExpressionInput.d.ts +26 -0
- package/lib/ExpressionInput/useExpressionInput.js +2 -0
- package/lib/FieldForm/FieldFormItem/ItemHolder.js +1 -1
- package/lib/FieldForm/FieldFormItem/MemoInput.d.ts +2 -2
- package/lib/FieldForm/FieldFormItem/StatusProvider.js +1 -1
- package/lib/FieldForm/FieldFormItem/index.d.ts +6 -6
- package/lib/FieldForm/Form.d.ts +2 -2
- package/lib/FieldForm/Form.js +1 -1
- package/lib/FieldForm/FormItemInput.js +1 -1
- package/lib/FieldForm/FormItemLabel.js +1 -1
- package/lib/FieldForm/FormList.d.ts +2 -2
- package/lib/FieldForm/component.json +196 -0
- package/lib/FieldForm/context.d.ts +5 -1
- package/lib/FieldForm/context.js +1 -1
- package/lib/FieldForm/hooks/useForm.d.ts +4 -3
- package/lib/FieldForm/hooks/useFormInstance.d.ts +1 -1
- package/lib/FieldForm/hooks/useFormItemStatus.d.ts +9 -5
- package/lib/FieldForm/hooks/useFormItemStatus.js +1 -1
- package/lib/FieldForm/hooks/useItemRef.d.ts +1 -1
- package/lib/FieldForm/hooks/useItemRef.js +1 -1
- package/lib/Form/component.json +161 -0
- package/lib/Form/index.d.ts +52 -49
- package/lib/Form/index.js +1 -1
- package/lib/FormItem/compoments/defaultCompoments/index.d.ts +5 -5
- package/lib/FormItem/compoments/defaultCompoments/index.js +1 -1
- package/lib/FormItem/compoments/formCheckboxGroup/index.d.ts +2 -2
- package/lib/FormItem/compoments/formFile/index.js +1 -1
- package/lib/FormItem/compoments/formRadioGroup/index.d.ts +1 -1
- package/lib/FormItem/compoments/formSelect/index.d.ts +1 -1
- package/lib/FormItem/component.json +171 -0
- package/lib/FormItem/index.d.ts +5 -5
- package/lib/FormItem/index.js +1 -1
- package/lib/FormItem/itemType.js +1 -1
- package/lib/FunctionModal/component.json +197 -0
- package/lib/FunctionModal/dialog.d.ts +1 -1
- package/lib/FunctionModal/modalContext.d.ts +4 -1
- package/lib/GlobalContext/confirmLocale.js +1 -1
- package/lib/GlobalContext/index.js +1 -1
- package/lib/Help/component.json +118 -0
- package/lib/HelperText/component.json +126 -0
- package/lib/Image/PreviewGroup.js +1 -1
- package/lib/Image/component.json +165 -0
- package/lib/Image/index.js +1 -1
- package/lib/InputCode/component.json +191 -0
- package/lib/InputCode/index.d.ts +2 -2
- package/lib/InputLang/component.json +205 -0
- package/lib/InputLang/index.js +1 -1
- package/lib/InputNumber/component.json +162 -0
- package/lib/InputNumber/index.d.ts +13 -7
- package/lib/InputNumber/index.js +1 -1
- package/lib/Label/component.json +126 -0
- package/lib/Label/index.d.ts +2 -2
- package/lib/Loading/component.json +91 -0
- package/lib/Menu/component.json +180 -0
- package/lib/Menu/verticalMenuList.js +1 -1
- package/lib/Message/component.json +246 -0
- package/lib/Message/index.d.ts +2 -2
- package/lib/Message/index.js +1 -1
- package/lib/Modal/Confirm/index.d.ts +1 -1
- package/lib/Modal/Confirm/index.js +1 -1
- package/lib/Modal/component.json +277 -0
- package/lib/Modal/index.d.ts +85 -5
- package/lib/Modal/index.js +1 -1
- package/lib/Modal/interface.d.ts +1 -0
- package/lib/MultiBox/component.json +216 -0
- package/lib/MultiBox/index.js +1 -1
- package/lib/Notification/component.json +184 -0
- package/lib/OperateBtn/component.json +134 -0
- package/lib/OperateBtn/index.d.ts +3 -3
- package/lib/PageHeader/component.json +112 -0
- package/lib/PageHeader/horizontalMeun.js +1 -1
- package/lib/PageHeader/horizontalMeunRight.js +1 -1
- package/lib/Pagination/component.json +181 -0
- package/lib/Pagination/index.js +1 -1
- package/lib/ParauiProvider/index.js +1 -1
- package/lib/PasswordRules/component.json +105 -0
- package/lib/PasswordRules/index.d.ts +4 -4
- package/lib/PopConfirm/component.json +227 -0
- package/lib/PopConfirm/index.d.ts +1 -1
- package/lib/PopConfirm/index.js +1 -1
- package/lib/PopMenu/component.json +131 -0
- package/lib/PopMenu/hooks.d.ts +1 -1
- package/lib/PopMenu/index.js +1 -1
- package/lib/Popover/component.json +165 -0
- package/lib/Popover/index.js +1 -1
- package/lib/Progress/component.json +161 -0
- package/lib/Prompt/component.json +144 -0
- package/lib/Querying/component.json +96 -0
- package/lib/Querying/index.css +1 -1
- package/lib/Querying/index.d.ts +2 -2
- package/lib/Querying/index.js +1 -1
- package/lib/Querying/style/index.css +1 -1
- package/lib/QuickReply/QuickReplyCode/index.js +1 -1
- package/lib/QuickReply/component.json +129 -0
- package/lib/QuickReply/index.d.ts +1 -1
- package/lib/Radio/component.json +136 -0
- package/lib/RadioGroup/component.json +149 -0
- package/lib/RangeInput/component.json +198 -0
- package/lib/RangeInput/index.d.ts +15 -7
- package/lib/RangeInput/index.js +1 -1
- package/lib/Result/component.json +104 -0
- package/lib/ScrollBar/component.json +115 -0
- package/lib/Search/component.json +177 -0
- package/lib/Search/index.d.ts +1 -1
- package/lib/Select/component.json +244 -0
- package/lib/Select/index.d.ts +11 -8
- package/lib/Select/index.js +1 -1
- package/lib/SelectInput/component.json +184 -0
- package/lib/SelectInput/index.d.ts +4 -4
- package/lib/SelectInput/index.js +1 -1
- package/lib/Selector/component.json +203 -0
- package/lib/Selector/index.js +1 -1
- package/lib/Selector/interface.d.ts +2 -2
- package/lib/Selector/selectorData/index.js +1 -1
- package/lib/Selector/selectorMain/index.js +1 -1
- package/lib/Selector/selectorNode/index.js +1 -1
- package/lib/Selector/util.d.ts +3 -3
- package/lib/Selector/util.js +1 -1
- package/lib/SelectorPicker/component.json +179 -0
- package/lib/SelectorPicker/index.d.ts +5 -5
- package/lib/SelectorPicker/index.js +1 -1
- package/lib/SingleBox/component.json +151 -0
- package/lib/SingleBox/index.d.ts +2 -2
- package/lib/Slider/component.json +181 -0
- package/lib/SortBox/component.json +108 -0
- package/lib/Status/component.json +104 -0
- package/lib/Stepper/component.json +129 -0
- package/lib/Stepper/index.d.ts +2 -2
- package/lib/Switch/component.json +207 -0
- package/lib/Switch/index.css +1 -1
- package/lib/Switch/index.d.ts +3 -2
- package/lib/Switch/index.js +1 -1
- package/lib/Switch/style/index.css +1 -1
- package/lib/Table/component.json +547 -0
- package/lib/Table/index.d.ts +2 -2
- package/lib/Table/index.js +1 -1
- package/lib/Table/interface.d.ts +30 -0
- package/lib/Table/tableHead.js +1 -1
- package/lib/Table/util.d.ts +1 -1
- package/lib/Table/util.js +1 -1
- package/lib/Tabs/component.json +227 -0
- package/lib/Tag/component.json +221 -0
- package/lib/Tag/index.css +1 -1
- package/lib/Tag/index.d.ts +1 -1
- package/lib/Tag/index.js +1 -1
- package/lib/Tag/style/index.css +1 -1
- package/lib/TextEditor/component.json +186 -0
- package/lib/TextEditor/index.d.ts +5 -5
- package/lib/TextEditor/index.js +1 -1
- package/lib/TextField/component.json +290 -0
- package/lib/TextField/index.d.ts +2 -2
- package/lib/TextField/index.js +1 -1
- package/lib/TimePicker/component.json +176 -0
- package/lib/Timeline/component.json +110 -0
- package/lib/Title/component.json +156 -0
- package/lib/ToggleButton/component.json +153 -0
- package/lib/ToggleButton/index.js +1 -1
- package/lib/Tooltip/component.json +176 -0
- package/lib/Tooltip/index.js +1 -1
- package/lib/Tooltip/interface.d.ts +14 -1
- package/lib/Tooltip/utils.js +1 -1
- package/lib/Transfer/component.json +157 -0
- package/lib/Tree/OperateBar/index.js +2 -2
- package/lib/Tree/Tree.js +1 -1
- package/lib/Tree/component.json +512 -0
- package/lib/Tree/interface.d.ts +1 -1
- package/lib/Upload/component.json +450 -0
- package/lib/Upload/util.js +1 -1
- package/lib/Utils/snack-kit-shims.d.ts +18 -0
- package/lib/Utils/snack-kit-shims.js +2 -0
- package/lib/Utils/type.d.ts +0 -6
- package/lib/_virtual/index.js +1 -1
- package/lib/_virtual/index2.js +1 -1
- package/lib/index.d.ts +4 -0
- package/lib/index.js +1 -1
- package/lib/locale/en-US.d.ts +3 -0
- package/lib/locale/en-US.js +1 -1
- package/lib/locale/en_US.d.ts +361 -0
- package/lib/locale/en_US.js +2 -0
- package/lib/locale/index.d.ts +1 -723
- package/lib/locale/index2.js +2 -0
- package/lib/locale/zh-CN.d.ts +3 -0
- package/lib/locale/zh-CN.js +1 -1
- package/lib/locale/zh_CN.d.ts +361 -0
- package/lib/locale/zh_CN.js +2 -0
- package/lib/node_modules/classnames/index.js +1 -1
- package/package.json +24 -4
- package/es/_virtual/index3.js +0 -5
- package/es/_virtual/index4.js +0 -5
- package/es/node_modules/@para-snack/core/dist/index.js +0 -5231
- package/lib/_virtual/index3.js +0 -2
- package/lib/_virtual/index4.js +0 -2
- package/lib/node_modules/@para-snack/core/dist/index.js +0 -20
- /package/es/{InputCode → CodeEditor}/index.css +0 -0
- /package/es/{Utils/Hooks → Hooks}/useResizeObserver.d.ts +0 -0
- /package/es/{Utils/Hooks → Hooks}/useResizeObserver.js +0 -0
- /package/lib/{Utils/Hooks → Hooks}/useResizeObserver.d.ts +0 -0
- /package/lib/{Utils/Hooks → Hooks}/useResizeObserver.js +0 -0
|
@@ -28,7 +28,7 @@ export interface SearchReqDataProps {
|
|
|
28
28
|
* */
|
|
29
29
|
isTree?: boolean;
|
|
30
30
|
};
|
|
31
|
-
|
|
31
|
+
error?: Error | string | null;
|
|
32
32
|
}
|
|
33
33
|
/** 面包屑 */
|
|
34
34
|
export interface BreadcrumbsListItem {
|
|
@@ -409,7 +409,7 @@ export interface SelectorProps extends HelperTextDetailProps {
|
|
|
409
409
|
/** 处理请求参数 */
|
|
410
410
|
paramsCallback?: (data: ReqFuncProps, isSearch?: boolean) => ReqFuncProps;
|
|
411
411
|
/** 请求回调参数 requestCallback(data, cb) cb(data) 需要回调数据回来 */
|
|
412
|
-
requestCallback?: (data:
|
|
412
|
+
requestCallback?: (data: Record<string, unknown>, cb: (data: SelectorAnyJson[]) => void, isSearch?: boolean) => void;
|
|
413
413
|
/** 选中数据标题render */
|
|
414
414
|
selectDataTitleRender?: (list?: SelectorAnyJson[]) => ReactNode;
|
|
415
415
|
/** 选中每一项自定义 */
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});require('./index.css');const n=require("../../_virtual/jsx-runtime.js"),h=require("react"),
|
|
1
|
+
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});require('./index.css');const n=require("../../_virtual/jsx-runtime.js"),h=require("react"),L=require("../selectorNode/index.js"),P=require("../../AutoTips/index.js"),z=require("../../node_modules/@para-ui/icons/Close/index.js"),B=require("../../Utils/snack-kit-shims.js"),G=require("../../GlobalContext/useFormatMessage.js"),R=require("../../GlobalContext/constant.js"),H=require("../lang/index.js");;/* empty css */const Q=k=>{const{className:b,layout:m="node",style:D,list:a,groupType:l,nodeMode:q,backDataFieldConfig:o,detail:S,detailRender:g,disabled:c,handSelectorNodeInfo:E,selectDataTitleRender:y,selectRenderItem:d,selectRender:u,onClose:x}=k,$=G.default("Selector",H.default),[v,F]=h.useState({}),j=h.useRef({listTypeJson:{},backDataFieldConfig:{}});j.current.listTypeJson=B.ArrayToObject("value",l),j.current.backDataFieldConfig=o||{},h.useEffect(()=>{if(a&&l&&l.length>0){const e={};for(let s=0,t=a.length;s<t;s++){const i=a[s],r=i[j.current.backDataFieldConfig.type||""];e[r]||(e[r]=[]),e[r].push(i)}F(e)}},[a]);const p=e=>{if(c){if(c===!0)return!0;if(c instanceof Array){const s=o?.key||"",t=e[s];if(c.indexOf(t)!==-1)return!0}}return!1},I=(e,s)=>{let t=e;E&&(t=E(e));const r={useCase:"edit",close:!p(e),detail:S,nodeMode:q,onClose:()=>x&&x(t,s),disabled:p(e),tagStyle:t.tagStyle};d&&(r.leftRender=()=>d(e)),t.leaf!==void 0&&(r.nodeMode=t.leaf?"leaf":"branch");const N=["img","mainTitle","subTitle","tag"];for(let f=0,w=N.length;f<w;f++){const T=N[f]||"",K=o&&o[T]||"";r[T]=t[K]}return g&&(r.detailRender=async()=>await g(t,!1)),t.detail!==void 0&&(r.detail=t.detail),t.close!==void 0&&(r.close=t.close),r},M=()=>u?u(a||[]):a?.map((e,s)=>n.jsxRuntimeExports.jsx(L.default,{...I(e,s)},s)),C=()=>{const e=()=>{if(y)return y(a);if(l)return n.jsxRuntimeExports.jsx(n.jsxRuntimeExports.Fragment,{children:l.map((s,t)=>{let i=0;const r=s.value;if(v[r]&&(i=v[r].length),i!==0)return n.jsxRuntimeExports.jsxs("span",{className:"title-content",children:[i,"个",s.label||s.value]},t)})})};return n.jsxRuntimeExports.jsxs("div",{className:"title",children:[n.jsxRuntimeExports.jsxs("span",{className:"title-tip",children:[$({id:"selected"}),":"]}),e()]})},A=()=>n.jsxRuntimeExports.jsxs("div",{className:"selector-data-node-box",children:[C(),n.jsxRuntimeExports.jsx("div",{className:"content",children:M()})]}),O=()=>u?u(a||[]):n.jsxRuntimeExports.jsx(n.jsxRuntimeExports.Fragment,{children:a?.map((e,s)=>{const t=p(e);return n.jsxRuntimeExports.jsxs("span",{className:"content-tag",children:[n.jsxRuntimeExports.jsx("span",{children:d?d(e):n.jsxRuntimeExports.jsx(P.default,{children:e[o?.mainTitle||""]||e[o?.key||""]})}),!t&&n.jsxRuntimeExports.jsx(z.Close,{onClick:()=>x&&x(e,s)})]},s)})}),_=()=>n.jsxRuntimeExports.jsxs("div",{className:"selector-data-tag-box",children:[C(),n.jsxRuntimeExports.jsx("div",{className:"content",children:O()})]}),J=()=>{let e=`${R.$prefixCls}-selector-data`;return m&&(e+=` ${R.$prefixCls}-selector-data-${m}`),c===!0&&(e+=` ${R.$prefixCls}-selector-data-disabled`),b&&(e+=` ${b}`),e};return n.jsxRuntimeExports.jsx("div",{className:J(),style:D,children:m==="node"?A():_()})};exports.default=Q;
|
|
2
2
|
//# sourceMappingURL=index.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});require('./index.css');const
|
|
1
|
+
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});require('./index.css');const s=require("../../_virtual/jsx-runtime.js"),o=require("react"),ne=require("../selectorNode/index.js"),ue=require("../../Search/index.js"),he=require("../../Breadcrumbs/index.js"),fe=require("../../Loading/index.js"),me=require("../../Empty/index.js"),xe=require("../../node_modules/@para-ui/icons/Search/index.js"),pe=require("../../node_modules/@para-ui/icons/Refresh/index.js"),je=require("../../Utils/snack-kit-shims.js"),ie=require("../../GlobalContext/useFormatMessage.js"),le=require("../lang/index.js"),q=require("../../GlobalContext/constant.js");;/* empty css */const ce=P=>{const{className:C,value:f,rowKey:re="key",nodeMode:A="branch",selectMode:m,loadMore:k=!1,isAllCheck:j=!1,detail:V,detailRender:B,isLazy:G,list:i,groupType:a,breadcrumbs:z,breadcrumbsSeparator:D="-",breadcrumbsList:R=[],fieldConfig:Q,disabled:d,disabledChild:u,emptyProps:S,loading:x,onClickBreadcrumbs:w,onLevel:I,onSelect:v,onLoad:_,onAllCheck:E}=P,y=ie.default("Selector",le.default),[U,W]=o.useState({}),p=o.useRef({listTypeJson:{},fieldConfig:{},resizeTimer:void 0}),b=o.useRef(null),L=o.useRef(null);p.current.listTypeJson=je.ArrayToObject("value",a),p.current.fieldConfig=Q||{},o.useEffect(()=>(T(),()=>{clearTimeout(p.current.resizeTimer)}),[]),o.useEffect(()=>{if(i&&a&&a.length>0){const e={};for(let t=0,c=i.length;t<c;t++){const r=i[t],l=r.type;e[l]||(e[l]=[]),e[l].push(r)}W(e)}},[i]);const T=()=>{clearTimeout(p.current.resizeTimer),p.current.resizeTimer=setTimeout(()=>{N()},100)},N=()=>{if(!L.current||!b.current)return;const e=b.current,t=L.current;if(t.classList.remove("selector-main-list-scroll-top","selector-main-list-scroll-bottom","selector-main-list-scroll-middle"),!(e.scrollHeight<=e.clientHeight)){if(e.scrollTop===0){t.classList.add("selector-main-list-scroll-top");return}if(e.clientHeight+e.scrollTop===e.scrollHeight){t.classList.add("selector-main-list-scroll-bottom");return}t.classList.add("selector-main-list-scroll-middle")}},F=()=>{const e={checked:!1,indeterminate:!1};if(!f||!i||i.length===0)return e;for(let t=0,c=i.length;t<c;t++){const r=i[t],l=r.key;if(H(r)){f[l]&&(e.checked=!0);continue}f[l]?e.checked=!0:e.indeterminate=!0}return e.checked&&e.indeterminate?(e.checked=!1,e):(!e.checked&&e.indeterminate&&(e.indeterminate=!1),e)},H=e=>!!(d&&(d===!0||d instanceof Array&&e.key&&d.indexOf(e.key)!==-1)||e.disabled),O=e=>!!(u&&(u===!0||u instanceof Array&&e.key&&u.indexOf(e.key)!==-1)||e.disabledChild),X=()=>{if(!j||m!=="check")return null;const e=F(),t=()=>{let c=!0;e.checked&&(c=!1),E&&E(c)};return s.jsxRuntimeExports.jsx(ne.default,{disabled:d===!0,nodeMode:"branch",mainTitle:y({id:"selectAll"}),selectMode:"check",...e,onSelect:t,className:"selector-all-check"})},Y=()=>{_&&_()},J=()=>k?s.jsxRuntimeExports.jsx("div",{className:"selector-main-list-more",onClick:Y,children:s.jsxRuntimeExports.jsx("span",{className:"more-btn",children:y({id:"seeMore"})})}):null,M=e=>{let t=!1;return f&&f[e.key]&&(t=!0),t},K=e=>{const t={useCase:"view",detail:V,nodeMode:A,disabled:H(e),disabledChild:O(e),onLevel:()=>I&&I(e),onSelect:()=>v&&v(e),checked:M(e)};e.leaf!==void 0&&(t.nodeMode=e.leaf?"leaf":"branch");const c=["img","mainTitle","subTitle","tag","tagStyle"];for(let r=0,l=c.length;r<l;r++){const $=c[r];t[$]=e[$]}if(e.choice!==!1&&m&&(t.selectMode=m),G)t.child=e.child;else{const r=e.children||[];r&&r.length>0&&(t.child=!0),e.child!==void 0&&(t.child=e.child)}return B&&(t.detailRender=async()=>await B(e,!0)),e.detail!==void 0&&(t.detail=e.detail),t},g=e=>e?.map((t,c)=>s.jsxRuntimeExports.jsx(ne.default,{...K(t)},c)),h=()=>a&&a.length>0?s.jsxRuntimeExports.jsx(s.jsxRuntimeExports.Fragment,{children:a.map((e,t)=>{const c=e.value,r=U[c]||[];let l="selector-group-title";return t===0&&(l+=" selector-group-title-first"),s.jsxRuntimeExports.jsxs(o.Fragment,{children:[r.length>0&&s.jsxRuntimeExports.jsx("div",{className:l,children:e.label||c}),g(r)]},t)})}):g(i||[]),Z=e=>{w&&w(e)},ee=()=>!z||R.length===0?null:s.jsxRuntimeExports.jsx("div",{className:"nav-box",children:s.jsxRuntimeExports.jsx(he.Breadcrumbs,{minNum:1,list:R,separator:D,onClickItem:Z})}),te=()=>i?.length===0&&!x?s.jsxRuntimeExports.jsx("div",{className:"selector-main-list-no-data",children:s.jsxRuntimeExports.jsx(me.default,{...S,size:S?.size||"small"})}):s.jsxRuntimeExports.jsxs("div",{className:"selector-main-list",children:[X(),s.jsxRuntimeExports.jsx("div",{className:"selector-main-list-content",ref:L,children:s.jsxRuntimeExports.jsx("div",{className:"selector-main-list-content-box",ref:b,onScroll:N,children:h()})}),J()]}),se=()=>{let e="selector-main-content";return C&&(e+=` ${C}`),d&&(e+=" selector-main-content-disabled"),j&&m==="check"&&(e+=" selector-main-content-all-check"),k&&(e+=" selector-main-content-load-more"),e};return T(),s.jsxRuntimeExports.jsxs("div",{className:se(),children:[ee(),te()]})},be=P=>{const{className:C,style:f,url:re,value:A,rowKey:m="key",nodeMode:k="branch",selectMode:j,loadMore:V=!1,searchLoadMore:B=!1,isAllCheck:G=!1,disabled:i,disabledChild:a,detail:z,detailRender:D,isLazy:R,list:Q,groupType:d,groupRange:u,search:S,searchVal:x="",searchPlaceholder:w,searchTrigger:I,searchLoading:v,searchList:_,loading:E,mainHeader:y,breadcrumbs:U,breadcrumbsSeparator:W="-",breadcrumbsList:p=[],fieldConfig:b,onClickBreadcrumbs:L,onLevel:T,onSelect:N,onLoad:F,onAllCheck:H,onSearch:O,onRefresh:X}=P,Y=ie.default("Selector",le.default),[J,M]=o.useState(!1),[K,g]=o.useState(""),h=o.useRef({searchTimer:void 0,searchStr:""});o.useEffect(()=>{x&&(h.current.searchStr=x.val,g(x.val),x.val!==""&&M(!0))},[x]);const Z=n=>{g(n),h.current.searchStr=n,I!=="onEnter"&&e()},ee=()=>{e(!0)},te=()=>{e(!0)},se=()=>{e()},e=n=>{clearTimeout(h.current.searchTimer),h.current.searchTimer=setTimeout(()=>{M(!!h.current.searchStr),O&&O(h.current.searchStr,!!n)},300)},t=()=>{const n=()=>K?s.jsxRuntimeExports.jsx(xe.Search,{}):!re&&!X?null:s.jsxRuntimeExports.jsx(pe.Refresh,{});return s.jsxRuntimeExports.jsx(s.jsxRuntimeExports.Fragment,{children:S&&s.jsxRuntimeExports.jsx(ue.Search,{className:"selectot-main-search",value:K,rightIconExist:!0,showBtn:!1,rightIcon:n(),btnType:"inside",onChange:Z,onEnter:ee,onClear:se,placeholder:w||Y({id:"pleaseEnter"}),onClickBtn:te})})},c=n=>de=>{n&&(h.current.searchStr="",g(""),M(!1)),T&&T(de,n)},r=n=>()=>{F&&F(n)},l=()=>s.jsxRuntimeExports.jsx(ce,{className:"selector-main-list-box",value:A,rowKey:m,nodeMode:k,selectMode:j,loadMore:V,isAllCheck:G,disabled:i,disabledChild:a,detail:z,detailRender:D,isLazy:R,list:Q,loading:E,groupType:u==="list"||u==="searchList"?d:void 0,breadcrumbs:U,breadcrumbsSeparator:W,breadcrumbsList:p,fieldConfig:b,onClickBreadcrumbs:L,onLevel:c(!1),onSelect:N,onLoad:r(!1),onAllCheck:H},"list"),$=()=>{if(J)return s.jsxRuntimeExports.jsx(ce,{className:"selector-main-search-content",value:A,rowKey:m,nodeMode:k,selectMode:j,loadMore:B,isAllCheck:!1,disabled:i,disabledChild:a,detail:z,detailRender:D,isLazy:R,list:_,groupType:u==="search"||u==="searchList"?d:void 0,fieldConfig:b,loading:v,onSelect:N,onLevel:c(!0),onLoad:r(!0)},"search")},oe=()=>{if(v||E)return s.jsxRuntimeExports.jsx(fe.Loading,{})},ae=()=>{let n=`${q.$prefixCls}-selector-main`;return C&&(n+=` ${C}`),j==="check"&&(n+=` ${q.$prefixCls}-selector-main-select`),J&&(n+=` ${q.$prefixCls}-selector-main-show-search`),S&&(n+=` ${q.$prefixCls}-selector-main-search`),i===!0&&(n+=` ${q.$prefixCls}-selector-main-disabled`),n};return s.jsxRuntimeExports.jsxs("div",{className:ae(),style:f,children:[t(),y&&s.jsxRuntimeExports.jsx("div",{className:"selector-main-header",children:y}),s.jsxRuntimeExports.jsxs("div",{className:"selector-main-box",children:[l(),$(),oe()]})]})};exports.default=be;
|
|
2
2
|
//# sourceMappingURL=index.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});require('./index.css');const e=require("../../_virtual/jsx-runtime.js"),m=require("react"),K=require("../../Radio/index.js"),Q=require("../../Checkbox/index.js"),U=require("../../Popover/index.js"),c=require("../../AutoTips/index.js"),W=require("../../Loading/index.js"),X=require("../../node_modules/@para-ui/icons/Close/index.js"),t=require("../../GlobalContext/constant.js"),Y=require("../../GlobalContext/useFormatMessage.js"),Z=require("../lang/index.js");;/* empty css */const ee=k=>{const{className:p,style:L,nodeMode:d="branch",useCase:S="view",img:n,selectMode:j,mainTitle:r,subTitle:o,tag:l,tagStyle:h,detail:x,detailRender:f,leftRender:R,child:E,close:g,checked:C,indeterminate:y,disabled:a,disabledChild:N,onLevel:v,onSelect:$,onClose:b}=k,D=Y.default("Selector",Z.default),[_,q]=m.useState(),[P,u]=m.useState(!1),i=m.useRef(),M=()=>{a||$&&$()},T=s=>{s.stopPropagation(),!N&&v&&v()},w=s=>{s.stopPropagation()},F=s=>{s.stopPropagation(),b&&b()},z=async s=>{if(!f)return;if(u(!1),!s)return q(null);u(!0),i.current&&i.current.classList.add("selector-detail-popover-content-loading");const J=await f();i.current&&i.current.classList.remove("selector-detail-popover-content-loading"),u(!1),q(J)},A=()=>{if(!n)return null;let s=n;return typeof n=="string"&&(s=e.jsxRuntimeExports.jsx("img",{src:n})),e.jsxRuntimeExports.jsx("span",{className:"node-img",children:s})},B=()=>j==="radio"?e.jsxRuntimeExports.jsx(K.Radio,{size:"small",className:"selector-node-radio",checked:C,disabled:a}):j==="check"?e.jsxRuntimeExports.jsx(Q.Checkbox,{size:"small",className:"selector-node-check",checked:C,disabled:a,indeterminate:y}):null,I=()=>e.jsxRuntimeExports.jsxs("div",{className:"selector-detail-popover-content",ref:i,children:[_,P&&e.jsxRuntimeExports.jsx(W.Loading,{})]}),O=()=>x?e.jsxRuntimeExports.jsx(U.Popover,{content:I(),trigger:"hover",placement:"bottomRight",overlayClassName:`${t.$prefixCls}-selector-detail`,onVisibleChange:z,children:e.jsxRuntimeExports.jsx("span",{className:"detail",onClick:w,children:D({id:"detail"})})}):null,V=()=>{if(d==="branch")return e.jsxRuntimeExports.jsxs(e.jsxRuntimeExports.Fragment,{children:[r&&e.jsxRuntimeExports.jsx("span",{className:"main-title",children:e.jsxRuntimeExports.jsx(c.default,{children:r})}),o&&e.jsxRuntimeExports.jsx("span",{className:"sub-title",children:e.jsxRuntimeExports.jsx(c.default,{children:o})}),l&&e.jsxRuntimeExports.jsx("span",{className:"tag",style:h,children:l})]});if(d==="leaf")return e.jsxRuntimeExports.jsxs("div",{className:"title-box",children:[e.jsxRuntimeExports.jsxs("div",{className:"main-title-box",children:[r&&e.jsxRuntimeExports.jsx("span",{className:"main-title",children:e.jsxRuntimeExports.jsx(c.default,{children:r})}),l&&e.jsxRuntimeExports.jsx("span",{className:"tag",style:h,children:l})]}),o&&e.jsxRuntimeExports.jsx("div",{className:"sub-title",children:e.jsxRuntimeExports.jsx(c.default,{children:o})})]})},G=()=>R?R():e.jsxRuntimeExports.jsxs(e.jsxRuntimeExports.Fragment,{children:[B(),A(),V()]}),H=()=>{let s=`${t.$prefixCls}-selector-node`;return s+=` ${t.$prefixCls}-selector-node-${S}`,s+=` ${t.$prefixCls}-selector-node-${d}`,a&&(s+=` ${t.$prefixCls}-selector-node-disabled`),N&&(s+=` ${t.$prefixCls}-selector-node-disabled-child`),n&&(s+=` ${t.$prefixCls}-selector-node-img`),p&&(s+=` ${p}`),s};return e.jsxRuntimeExports.jsxs("div",{className:H(),style:L,onClick:M,children:[e.jsxRuntimeExports.jsx("div",{className:"selector-node-left",children:G()}),e.jsxRuntimeExports.jsxs("div",{className:"selector-node-right",children:[O(),x&&E&&e.jsxRuntimeExports.jsx("span",{className:"line"}),E&&e.jsxRuntimeExports.jsx("span",{className:"lower-child",onClick:T,children:D({id:"child"})}),x&&g&&e.jsxRuntimeExports.jsx("span",{className:"line"}),g&&e.jsxRuntimeExports.jsx("span",{className:"close",onClick:F,children:e.jsxRuntimeExports.jsx(X.Close,{})})]})]})};exports.default=ee;
|
|
1
|
+
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});require('./index.css');const e=require("../../_virtual/jsx-runtime.js"),m=require("react"),K=require("../../Radio/index.js"),Q=require("../../Checkbox/index.js"),U=require("../../Popover/index.js"),c=require("../../AutoTips/index.js"),W=require("../../Loading/index.js"),X=require("../../node_modules/@para-ui/icons/Close/index.js"),t=require("../../GlobalContext/constant.js"),Y=require("../../GlobalContext/useFormatMessage.js"),Z=require("../lang/index.js");;/* empty css */const ee=k=>{const{className:p,style:L,nodeMode:d="branch",useCase:S="view",img:n,selectMode:j,mainTitle:r,subTitle:o,tag:l,tagStyle:h,detail:x,detailRender:f,leftRender:R,child:E,close:g,checked:C,indeterminate:y,disabled:a,disabledChild:N,onLevel:v,onSelect:$,onClose:b}=k,D=Y.default("Selector",Z.default),[_,q]=m.useState(),[P,u]=m.useState(!1),i=m.useRef(null),M=()=>{a||$&&$()},T=s=>{s.stopPropagation(),!N&&v&&v()},w=s=>{s.stopPropagation()},F=s=>{s.stopPropagation(),b&&b()},z=async s=>{if(!f)return;if(u(!1),!s)return q(null);u(!0),i.current&&i.current.classList.add("selector-detail-popover-content-loading");const J=await f();i.current&&i.current.classList.remove("selector-detail-popover-content-loading"),u(!1),q(J)},A=()=>{if(!n)return null;let s=n;return typeof n=="string"&&(s=e.jsxRuntimeExports.jsx("img",{src:n})),e.jsxRuntimeExports.jsx("span",{className:"node-img",children:s})},B=()=>j==="radio"?e.jsxRuntimeExports.jsx(K.Radio,{size:"small",className:"selector-node-radio",checked:C,disabled:a}):j==="check"?e.jsxRuntimeExports.jsx(Q.Checkbox,{size:"small",className:"selector-node-check",checked:C,disabled:a,indeterminate:y}):null,I=()=>e.jsxRuntimeExports.jsxs("div",{className:"selector-detail-popover-content",ref:i,children:[_,P&&e.jsxRuntimeExports.jsx(W.Loading,{})]}),O=()=>x?e.jsxRuntimeExports.jsx(U.Popover,{content:I(),trigger:"hover",placement:"bottomRight",overlayClassName:`${t.$prefixCls}-selector-detail`,onVisibleChange:z,children:e.jsxRuntimeExports.jsx("span",{className:"detail",onClick:w,children:D({id:"detail"})})}):null,V=()=>{if(d==="branch")return e.jsxRuntimeExports.jsxs(e.jsxRuntimeExports.Fragment,{children:[r&&e.jsxRuntimeExports.jsx("span",{className:"main-title",children:e.jsxRuntimeExports.jsx(c.default,{children:r})}),o&&e.jsxRuntimeExports.jsx("span",{className:"sub-title",children:e.jsxRuntimeExports.jsx(c.default,{children:o})}),l&&e.jsxRuntimeExports.jsx("span",{className:"tag",style:h,children:l})]});if(d==="leaf")return e.jsxRuntimeExports.jsxs("div",{className:"title-box",children:[e.jsxRuntimeExports.jsxs("div",{className:"main-title-box",children:[r&&e.jsxRuntimeExports.jsx("span",{className:"main-title",children:e.jsxRuntimeExports.jsx(c.default,{children:r})}),l&&e.jsxRuntimeExports.jsx("span",{className:"tag",style:h,children:l})]}),o&&e.jsxRuntimeExports.jsx("div",{className:"sub-title",children:e.jsxRuntimeExports.jsx(c.default,{children:o})})]})},G=()=>R?R():e.jsxRuntimeExports.jsxs(e.jsxRuntimeExports.Fragment,{children:[B(),A(),V()]}),H=()=>{let s=`${t.$prefixCls}-selector-node`;return s+=` ${t.$prefixCls}-selector-node-${S}`,s+=` ${t.$prefixCls}-selector-node-${d}`,a&&(s+=` ${t.$prefixCls}-selector-node-disabled`),N&&(s+=` ${t.$prefixCls}-selector-node-disabled-child`),n&&(s+=` ${t.$prefixCls}-selector-node-img`),p&&(s+=` ${p}`),s};return e.jsxRuntimeExports.jsxs("div",{className:H(),style:L,onClick:M,children:[e.jsxRuntimeExports.jsx("div",{className:"selector-node-left",children:G()}),e.jsxRuntimeExports.jsxs("div",{className:"selector-node-right",children:[O(),x&&E&&e.jsxRuntimeExports.jsx("span",{className:"line"}),E&&e.jsxRuntimeExports.jsx("span",{className:"lower-child",onClick:T,children:D({id:"child"})}),x&&g&&e.jsxRuntimeExports.jsx("span",{className:"line"}),g&&e.jsxRuntimeExports.jsx("span",{className:"close",onClick:F,children:e.jsxRuntimeExports.jsx(X.Close,{})})]})]})};exports.default=ee;
|
|
2
2
|
//# sourceMappingURL=index.js.map
|
package/lib/Selector/util.d.ts
CHANGED
|
@@ -5,11 +5,11 @@ export interface ReqFuncProps {
|
|
|
5
5
|
/** 请求上下文 */
|
|
6
6
|
ctx?: string;
|
|
7
7
|
/** 请求参数 */
|
|
8
|
-
data?:
|
|
9
|
-
[name: string]:
|
|
8
|
+
data?: Record<string, unknown>;
|
|
9
|
+
[name: string]: unknown;
|
|
10
10
|
}
|
|
11
11
|
/**
|
|
12
12
|
* 发送请求
|
|
13
13
|
* @param obj {ReqFuncProps} 请求信息
|
|
14
14
|
*/
|
|
15
|
-
export declare const reqFunc: (obj: ReqFuncProps) => Promise<import('@
|
|
15
|
+
export declare const reqFunc: (obj: ReqFuncProps) => Promise<import('@snack-kit/lib').HttpResult<unknown>> | undefined;
|
package/lib/Selector/util.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const n=require("@snack-kit/lib"),u=s=>{const{method:t,data:e,url:r,...o}=s;if(t==="Get")return n.Get(r,{params:e,...o});if(t==="Post")return n.Post(r,e,o)};exports.reqFunc=u;
|
|
2
2
|
//# sourceMappingURL=util.js.map
|
|
@@ -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,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"),o=require("react"),J=require("clsx"),$e=require("../HelperText/index.js"),be=require("../Label/index.js"),we=require("../Dropdown/index.js"),Q=require("../Selector/index.js"),
|
|
1
|
+
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});require('./index.css');const r=require("../_virtual/jsx-runtime.js"),o=require("react"),J=require("clsx"),$e=require("../HelperText/index.js"),be=require("../Label/index.js"),we=require("../Dropdown/index.js"),Q=require("../Selector/index.js"),P=require("../AutoTips/index.js"),ye=require("../Popover/index.js"),Ne=require("../node_modules/@para-ui/icons/CloseCircleF/index.js"),Pe=require("../node_modules/@para-ui/icons/Down/index.js"),U=require("../node_modules/@para-ui/icons/Close/index.js"),i=require("../GlobalContext/constant.js"),Te=require("../GlobalContext/useFormatMessage.js"),qe=require("./lang/index.js"),Se=require("../Tooltip/index.js");;/* empty css */const Me=v=>{const T=Te.default("SelectorPicker",qe.default),{className:X,label:q,value:k,defaultValue:$,required:S=!1,labelTooltip:Y,error:M=!1,hideErrorDom:Z,helperText:ee,size:C="large",disabled:a=!1,disabledTooltip:V,style:re,placeholder:te=T("select"),multiple:m=!1,allowClear:D=!1,overLine:f=!1,selectorProps:_,onChange:z,onClear:se,tagRender:u,morePopoverClassName:H,getPopupContainer:ne,overlayClassName:le}=v,p={...Q.handFieldConfig(v.selectorProps?.fieldConfig,v.selectorProps?.rowKey||"key"),...v.selectorProps?.backDataFieldConfig},[L,oe]=o.useState($||[]),[A,E]=o.useState(!1),[F,O]=o.useState(!1),[c,b]=o.useState(null),h=o.useRef(null),t=o.useRef({list:[]}),l=`${i.$prefixCls}-selector-picker`;t.current.value=k,t.current.valueCom=L,t.current.openMore=F;const K=()=>t.current.value!==void 0?t.current.value:t.current.valueCom,ce=()=>{const e=K();let s=e?Array.isArray(e)?e:[e]:[];return e instanceof Array&&(s=[...e]),s};t.current.list=ce(),o.useEffect(()=>(!f&&m?window.addEventListener("resize",g):window.removeEventListener("resize",g),()=>{window.removeEventListener("resize",g)}),[f,m]),o.useEffect(()=>(g(),()=>{clearTimeout(t.current.resizeTimer)}),[L,k]);const W=e=>{if(e===null||e===0)return;e===void 0&&(e=t.current.list.length);const s=h.current;if(!s)return;const n=s.querySelector(".selector-picker-wrapper-content-check");if(n)if(n.scrollHeight>n.clientHeight){const j=Number(e)-1;b(j),W(j)}else t.current.list.length<=e&&G()},g=()=>{if(t.current.list.length===0)return b(null);clearTimeout(t.current.resizeTimer),t.current.resizeTimer=setTimeout(()=>{b(t.current.list.length),W()},50)},B=(e,s,n)=>{n.stopPropagation(),t.current.list.splice(s,1),w([...t.current.list],{},{})},w=(e,s,n)=>{z&&z(e,s,n),m||E(!1),k===void 0&&oe(e||[])},ie=()=>{if(q||S)return r.jsxRuntimeExports.jsx(be.default,{label:q,required:S,...Y})},ae=()=>{const e=()=>({layout:"list",disabled:a,selectMode:m?"check":"radio",value:K(),defaultValue:$,onChange:w,..._});return r.jsxRuntimeExports.jsx("div",{className:`selector-picker-dropdown-content ${i.$prefixCls}-scrollbar-small`,style:{width:`${h&&h.current?h.current.offsetWidth:0}px`},children:r.jsxRuntimeExports.jsx(Q.default,{...e()})})},ue=e=>{e.stopPropagation(),O(!0),E(!1)},G=()=>{t.current.openMore&&O(!1)},pe=e=>{e.stopPropagation(),E(!1),se?.(),w(null,{},{})},de=e=>{a||E(e)},xe=()=>{if(m)return r.jsxRuntimeExports.jsxs("div",{className:"selector-picker-wrapper-content-check",children:[t.current.list.map((d,x)=>{if(c!==null&&c<=x)return null;const y=p.mainTitle||"",Ee=p.key||"",ge=d[y]||d[Ee],Re=u&&u(d);let N=!0;return a===!0&&(N=!1),r.jsxRuntimeExports.jsxs("div",{className:N?"check-select-content-item":"check-select-content-item check-select-content-item-noclose",children:[r.jsxRuntimeExports.jsx("span",{children:r.jsxRuntimeExports.jsx(P.default,{placement:"top-start",children:Re||ge})}),N&&r.jsxRuntimeExports.jsx(U.Close,{onClick:ke=>B?.(d,x,ke)})]},x)}),(()=>{if(c!==null&&t.current.list.length>c)return r.jsxRuntimeExports.jsx("div",{className:"check-select-content-item check-select-content-item-more",onClick:ue,children:r.jsxRuntimeExports.jsxs("span",{children:["+",t.current.list.length-c]})})})()]});const e=p.mainTitle||"",s=p.key||"",n=t.current.list[0]?.[e]||t.current.list[0]?.[s],R=u&&u(t.current.list[0])||n;return r.jsxRuntimeExports.jsx("div",{className:"selector-picker-wrapper-content-radio",children:f?R:r.jsxRuntimeExports.jsx(P.default,{placement:"top-start",children:R})})},me=()=>t.current.list.length?r.jsxRuntimeExports.jsx("div",{className:"selector-picker-wrapper-content",children:xe()}):null,fe=()=>r.jsxRuntimeExports.jsxs("div",{className:"selector-picker-wrapper",children:[me(),!t.current.list.length&&r.jsxRuntimeExports.jsx("span",{className:"selector-picker-placeholder",children:te}),r.jsxRuntimeExports.jsx("span",{className:"selector-picker-arrow",children:r.jsxRuntimeExports.jsx(Pe.Down,{})}),D&&t.current.list.length&&!a?r.jsxRuntimeExports.jsx("span",{className:"selector-picker-clear",onClick:pe,children:r.jsxRuntimeExports.jsx(Ne.CloseCircleF,{})}):null]}),he=()=>r.jsxRuntimeExports.jsxs("div",{className:"select-more",children:[r.jsxRuntimeExports.jsx("div",{className:"select-more-title",children:r.jsxRuntimeExports.jsx("span",{children:T({id:"more"})})}),r.jsxRuntimeExports.jsx("div",{className:"select-more-content",children:t.current.list.map((e,s)=>{if(c!==null&&c>s)return null;const n=p.mainTitle||"",j=p.key||"",R=e[n]||e[j],d=u&&u(e);let x=!0;return a===!0&&(x=!1),r.jsxRuntimeExports.jsxs("div",{className:"select-more-content-item",children:[r.jsxRuntimeExports.jsx("span",{children:r.jsxRuntimeExports.jsx(P.default,{placement:"top-start",children:d||R})}),x&&r.jsxRuntimeExports.jsx(U.Close,{onClick:y=>B?.(e,s,y)})]},s)})})]}),je=()=>{let e=`${i.$prefixCls}-selector-more-popover ${i.$prefixCls}-scrollbar-small`;return C&&(e+=` ${i.$prefixCls}-selector-more-popover-${C}`),H&&(e+=` ${H}`),e},I=()=>r.jsxRuntimeExports.jsx(ye.Popover,{placement:"rightTop",visible:F,content:he(),onVisibleChange:G,overlayClassName:je(),children:fe()}),ve=()=>r.jsxRuntimeExports.jsx(we.Dropdown,{visible:A,destroyPopupOnHide:!0,overlay:ae(),placement:"bottomLeft",trigger:["click"],onVisibleChange:de,overlayClassName:J(`${i.$prefixCls}-selector-picker-dropdown`,le,{[`${i.$prefixCls}-selector-picker-dropdown-search`]:_?.search}),getPopupContainer:ne,children:V?r.jsxRuntimeExports.jsx(Se.Tooltip,{disabled:!0,...V,children:I()}):I()}),Ce=()=>J(l,X,{[`${l}-focused`]:A,[`${l}-disabled`]:a,[`${l}-error`]:M,[`${l}-clear`]:D&&t.current.list.length,[`${l}-${C}`]:C,[`${l}-wrap`]:f,[`${l}-nowrap`]:!f});return r.jsxRuntimeExports.jsxs("div",{className:Ce(),style:re,ref:h,children:[ie(),ve(),r.jsxRuntimeExports.jsx($e.default,{error:M,helperText:ee,hideErrorDom:Z})]})};exports.default=Me;
|
|
2
2
|
//# sourceMappingURL=index.js.map
|
|
@@ -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/lib/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;
|