@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,155 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "CollapseLayout",
|
|
3
|
+
"category": "Layout",
|
|
4
|
+
"description": "折叠布局,支持分区域折叠的布局组件",
|
|
5
|
+
"semantic": {
|
|
6
|
+
"intent": [
|
|
7
|
+
"分区布局",
|
|
8
|
+
"可伸缩面板"
|
|
9
|
+
],
|
|
10
|
+
"useCases": [
|
|
11
|
+
"侧边栏",
|
|
12
|
+
"详情面板",
|
|
13
|
+
"代码编辑器"
|
|
14
|
+
],
|
|
15
|
+
"riskLevel": "low"
|
|
16
|
+
},
|
|
17
|
+
"variants": {
|
|
18
|
+
"left": {
|
|
19
|
+
"meaning": "左侧折叠"
|
|
20
|
+
},
|
|
21
|
+
"right": {
|
|
22
|
+
"meaning": "右侧折叠"
|
|
23
|
+
},
|
|
24
|
+
"top": {
|
|
25
|
+
"meaning": "顶部折叠"
|
|
26
|
+
},
|
|
27
|
+
"bottom": {
|
|
28
|
+
"meaning": "底部折叠"
|
|
29
|
+
}
|
|
30
|
+
},
|
|
31
|
+
"states": [
|
|
32
|
+
"expanded",
|
|
33
|
+
"collapsed"
|
|
34
|
+
],
|
|
35
|
+
"idealProps": {
|
|
36
|
+
"type": {
|
|
37
|
+
"type": "enum",
|
|
38
|
+
"values": [
|
|
39
|
+
"left",
|
|
40
|
+
"right",
|
|
41
|
+
"top",
|
|
42
|
+
"bottom"
|
|
43
|
+
],
|
|
44
|
+
"default": "left",
|
|
45
|
+
"description": "可折叠侧(displayContent)的位置;left/top displayContent 在前,right/bottom 在后"
|
|
46
|
+
},
|
|
47
|
+
"open": {
|
|
48
|
+
"type": "boolean",
|
|
49
|
+
"default": false,
|
|
50
|
+
"description": "软受控展开状态;父改 open 强制同步,但用户点击不反向通知父端(双向同步需配合 onClickBtn)"
|
|
51
|
+
},
|
|
52
|
+
"zoomLength": {
|
|
53
|
+
"type": "number",
|
|
54
|
+
"default": 0,
|
|
55
|
+
"description": "可折叠侧最大尺寸(横向时宽,纵向时高,单位由 unit 决定);0=不显示可折叠侧"
|
|
56
|
+
},
|
|
57
|
+
"minDragLength": {
|
|
58
|
+
"type": "number",
|
|
59
|
+
"default": 100,
|
|
60
|
+
"description": "拖拽分隔条时的最小尺寸(单位固定 px,与 unit 无关)"
|
|
61
|
+
},
|
|
62
|
+
"unit": {
|
|
63
|
+
"type": "string",
|
|
64
|
+
"default": "px",
|
|
65
|
+
"description": "zoomLength / spacing 的尺寸单位(px/rem/%);不影响 minDragLength"
|
|
66
|
+
},
|
|
67
|
+
"spacing": {
|
|
68
|
+
"type": "number",
|
|
69
|
+
"default": 20,
|
|
70
|
+
"description": "defaultContent 与 displayContent 间距(单位同 unit)"
|
|
71
|
+
},
|
|
72
|
+
"defaultContent": {
|
|
73
|
+
"type": "ReactNode",
|
|
74
|
+
"description": "自适应侧内容(始终占据剩余空间)"
|
|
75
|
+
},
|
|
76
|
+
"displayContent": {
|
|
77
|
+
"type": "ReactNode",
|
|
78
|
+
"description": "可折叠侧内容(尺寸由 zoomLength / 拖拽决定)"
|
|
79
|
+
},
|
|
80
|
+
"showLabel": {
|
|
81
|
+
"type": "string",
|
|
82
|
+
"description": "收起态时按钮文字"
|
|
83
|
+
},
|
|
84
|
+
"hideLabel": {
|
|
85
|
+
"type": "string",
|
|
86
|
+
"description": "展开态时按钮文字"
|
|
87
|
+
},
|
|
88
|
+
"onClickBtn": {
|
|
89
|
+
"type": "function",
|
|
90
|
+
"signature": "(bol?: boolean, duration?: number) => void",
|
|
91
|
+
"description": "切换按钮回调;bol=新状态(true 展开),duration=动画 ms(内部根据可折叠侧尺寸计算)"
|
|
92
|
+
},
|
|
93
|
+
"onDragEnd": {
|
|
94
|
+
"type": "function",
|
|
95
|
+
"signature": "() => void",
|
|
96
|
+
"description": "用户拖拽分隔条结束回调(松开鼠标触发,不带新尺寸)"
|
|
97
|
+
}
|
|
98
|
+
},
|
|
99
|
+
"do": [
|
|
100
|
+
"用于需要可折叠侧边栏的场景(如代码编辑器左侧文件树)——传 type='left'、defaultContent=主内容、displayContent=侧栏内容、zoomLength=侧栏宽度",
|
|
101
|
+
"支持拖拽调整大小:用户拖动分隔条时组件内部更新 zoomLength;拖拽结束后通过 onDragEnd 回调通知父组件",
|
|
102
|
+
"配合 onClickBtn 监听折叠/展开按钮点击:onClickBtn(bol, duration) 的 bol=新展开状态,duration=动画毫秒数(按内容尺寸计算)"
|
|
103
|
+
],
|
|
104
|
+
"dont": [
|
|
105
|
+
"嵌套多层 CollapseLayout(嵌套会导致 zoomLength/spacing 计算混乱)",
|
|
106
|
+
"把 open prop 当做完全受控——open 是软受控(父改 open 会同步),但用户点击按钮后不会反向通知父端;双向同步需配合 onClickBtn 回调"
|
|
107
|
+
],
|
|
108
|
+
"events": {
|
|
109
|
+
"onClickBtn": {
|
|
110
|
+
"signature": "(bol?: boolean, duration?: number) => void",
|
|
111
|
+
"asyncSupported": false,
|
|
112
|
+
"examples": [
|
|
113
|
+
"监听展开/收起切换:onClickBtn={(isOpen, animMs) => { setOpen(isOpen); console.log('动画时长', animMs, 'ms'); }}",
|
|
114
|
+
"bol=true 表示点击后变为展开状态,bol=false 表示变为收起状态",
|
|
115
|
+
"duration 由组件内部根据可折叠侧当前尺寸计算(高度/宽度越大动画越长)"
|
|
116
|
+
],
|
|
117
|
+
"commonMistakes": [
|
|
118
|
+
"期望 open prop 变化时触发 onClickBtn——只有用户点击按钮才触发,外部修改 open 不触发",
|
|
119
|
+
"假设 onClickBtn 不传时用户点击无效——不传 onClickBtn 时用户点击仍然工作,只是父端感知不到状态变化"
|
|
120
|
+
]
|
|
121
|
+
},
|
|
122
|
+
"onDragEnd": {
|
|
123
|
+
"signature": "() => void",
|
|
124
|
+
"asyncSupported": false,
|
|
125
|
+
"examples": [
|
|
126
|
+
"拖拽结束后保存新尺寸:onDragEnd={() => saveLayout(constData.current.zoomLength)}",
|
|
127
|
+
"注意:onDragEnd 不携带新的 zoomLength 值,需在外部另行记录"
|
|
128
|
+
],
|
|
129
|
+
"commonMistakes": [
|
|
130
|
+
"期望 onDragEnd 回调携带新的尺寸值——实际是无参回调,新尺寸由组件内部 constData.current.zoomLength 维护,外部感知需另起方案"
|
|
131
|
+
]
|
|
132
|
+
}
|
|
133
|
+
},
|
|
134
|
+
"typescriptPitfalls": [
|
|
135
|
+
{
|
|
136
|
+
"issue": "zoomLength 和 spacing 的单位由 unit prop 决定,minDragLength 单位固定为 px",
|
|
137
|
+
"wrong": "// 错误:以为 minDragLength 受 unit='rem' 影响\nzoomLength={20} unit='rem' minDragLength={5} // minDragLength=5 依然是 px,不是 rem",
|
|
138
|
+
"right": "// minDragLength 始终 px,zoomLength/spacing 受 unit 影响:\nzoomLength={20} unit='rem' minDragLength={100} // 最小拖拽 100px"
|
|
139
|
+
},
|
|
140
|
+
{
|
|
141
|
+
"issue": "open prop 是软受控,不传时组件内部自维护展开状态",
|
|
142
|
+
"wrong": "// 仅传 open 不传 onClickBtn,以为可以完全受控\n<CollapseLayout open={externalOpen} /> // 用户点击后内部状态更新但外部 externalOpen 不变,下次 open 变化时会强制同步覆盖",
|
|
143
|
+
"right": "// 双向同步需配合 onClickBtn:\n<CollapseLayout open={isOpen} onClickBtn={(bol) => setIsOpen(!!bol)} />"
|
|
144
|
+
},
|
|
145
|
+
{
|
|
146
|
+
"issue": "defaultContent 和 displayContent 是 ReactNode 类型,不是 children",
|
|
147
|
+
"wrong": "<CollapseLayout><MySidebar /></CollapseLayout> // children 不渲染",
|
|
148
|
+
"right": "<CollapseLayout defaultContent={<MainContent />} displayContent={<Sidebar />} />"
|
|
149
|
+
}
|
|
150
|
+
],
|
|
151
|
+
"mapping": {
|
|
152
|
+
"realComponent": "CollapseLayout",
|
|
153
|
+
"adapter": null
|
|
154
|
+
}
|
|
155
|
+
}
|
|
@@ -0,0 +1,142 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "ColorPicker",
|
|
3
|
+
"category": "Data Entry",
|
|
4
|
+
"description": "颜色选择器,提供 SketchPicker/ChromePicker/SwatchesPicker/CompactPicker 四种变体,输出 hex/rgb/hsl 等多种格式",
|
|
5
|
+
"semantic": {
|
|
6
|
+
"intent": [
|
|
7
|
+
"颜色选择",
|
|
8
|
+
"主题定制"
|
|
9
|
+
],
|
|
10
|
+
"useCases": [
|
|
11
|
+
"设计工具",
|
|
12
|
+
"个性化设置",
|
|
13
|
+
"图表配色"
|
|
14
|
+
],
|
|
15
|
+
"riskLevel": "low"
|
|
16
|
+
},
|
|
17
|
+
"variants": {
|
|
18
|
+
"SketchPicker": {
|
|
19
|
+
"meaning": "default export · 完整调色板 + 预设色板 + clear/onClear 自定义清除按钮"
|
|
20
|
+
},
|
|
21
|
+
"ChromePicker": {
|
|
22
|
+
"meaning": "具名 export · Chrome 浏览器风格 + hex/rgb/hsl 切换 · 无 clear"
|
|
23
|
+
},
|
|
24
|
+
"SwatchesPicker": {
|
|
25
|
+
"meaning": "具名 export · 色样网格 · 无调色板/无透明度"
|
|
26
|
+
},
|
|
27
|
+
"CompactPicker": {
|
|
28
|
+
"meaning": "具名 export · 紧凑色板 + hex 输入 · 无透明度"
|
|
29
|
+
}
|
|
30
|
+
},
|
|
31
|
+
"states": [
|
|
32
|
+
"default"
|
|
33
|
+
],
|
|
34
|
+
"idealProps": {
|
|
35
|
+
"color": {
|
|
36
|
+
"type": "string | HSLColor | RGBColor",
|
|
37
|
+
"description": "受控当前颜色;string 接受 hex(3/4/6/8 位)"
|
|
38
|
+
},
|
|
39
|
+
"onChange": {
|
|
40
|
+
"type": "function",
|
|
41
|
+
"signature": "(color: ColorResult, event?: ChangeEvent) => void",
|
|
42
|
+
"description": "实时颜色变化(每次拖动/输入都触发,高频);color 是 ColorResult { hex, rgb, hsl, hsv, source }"
|
|
43
|
+
},
|
|
44
|
+
"onChangeComplete": {
|
|
45
|
+
"type": "function",
|
|
46
|
+
"signature": "(color: ColorResult, event?: ChangeEvent) => void",
|
|
47
|
+
"description": "完成态回调(仅鼠标释放/失焦触发,低频);用于避免高频副作用"
|
|
48
|
+
},
|
|
49
|
+
"clear": {
|
|
50
|
+
"type": "boolean",
|
|
51
|
+
"default": false,
|
|
52
|
+
"description": "仅 SketchPicker 有效;开启右下角清除方块"
|
|
53
|
+
},
|
|
54
|
+
"onClear": {
|
|
55
|
+
"type": "function",
|
|
56
|
+
"signature": "() => void",
|
|
57
|
+
"description": "仅 SketchPicker;clear=true 时点击清除按钮触发,业务方需自行 setColor 重置"
|
|
58
|
+
},
|
|
59
|
+
"disableAlpha": {
|
|
60
|
+
"type": "boolean",
|
|
61
|
+
"default": false,
|
|
62
|
+
"description": "禁用透明度滑块(影响 ColorResult.rgb/hsl/hsv 是否含 a)"
|
|
63
|
+
},
|
|
64
|
+
"presetColors": {
|
|
65
|
+
"type": "string[]",
|
|
66
|
+
"description": "预设色板;传 [] 隐藏(SketchPicker/SwatchesPicker 有效)"
|
|
67
|
+
},
|
|
68
|
+
"width": {
|
|
69
|
+
"type": "string | number",
|
|
70
|
+
"description": "picker 整体宽度"
|
|
71
|
+
}
|
|
72
|
+
},
|
|
73
|
+
"do": [
|
|
74
|
+
"默认 export 为 SketchPicker(功能最完整);需要 Chrome 风格用 ChromePicker,紧凑色板用 CompactPicker,仅色样网格用 SwatchesPicker",
|
|
75
|
+
"高频更新场景(onChange 触发频繁)建议用 onChangeComplete 避免副作用(如 API 调用)被每次拖动触发",
|
|
76
|
+
"需要清除按钮:传 clear={true} + onClear 回调(仅 SketchPicker 支持);onClear 触发时自行 setColor 重置颜色值"
|
|
77
|
+
],
|
|
78
|
+
"dont": [
|
|
79
|
+
"在移动端使用 SketchPicker / ChromePicker——触摸精度有限,改用 SwatchesPicker(固定色板)",
|
|
80
|
+
"忽略颜色对比度验证——选色后需业务方自行检查 WCAG 对比度",
|
|
81
|
+
"把 onChange 的 color 参数当 string 直接用——实际是 ColorResult 对象,取 hex 值需用 color.hex"
|
|
82
|
+
],
|
|
83
|
+
"events": {
|
|
84
|
+
"onChange": {
|
|
85
|
+
"signature": "(color: ColorResult, event?: ChangeEvent) => void",
|
|
86
|
+
"asyncSupported": false,
|
|
87
|
+
"examples": [
|
|
88
|
+
"取 hex 值:<SketchPicker onChange={(color) => setHex(color.hex)} />",
|
|
89
|
+
"取 rgba:onChange={(color) => setRgba(`rgba(${color.rgb.r},${color.rgb.g},${color.rgb.b},${color.rgb.a})`)}",
|
|
90
|
+
"高频触发(每次拖动都触发),需要低频回调改用 onChangeComplete"
|
|
91
|
+
],
|
|
92
|
+
"commonMistakes": [
|
|
93
|
+
"把 color 参数当 string 用——color 是 ColorResult 对象,取 hex 值需 color.hex(含 # 前缀),取 rgb 需 color.rgb.r/g/b",
|
|
94
|
+
"直接把 onChange 当 onChangeComplete 用——onChange 在拖动过程中高频触发,onChangeComplete 仅在鼠标释放时触发",
|
|
95
|
+
"disableAlpha=true 时仍期望 color.rgb.a 有值——禁用透明度后 a 字段可能为 undefined"
|
|
96
|
+
]
|
|
97
|
+
},
|
|
98
|
+
"onChangeComplete": {
|
|
99
|
+
"signature": "(color: ColorResult, event?: ChangeEvent) => void",
|
|
100
|
+
"asyncSupported": false,
|
|
101
|
+
"examples": [
|
|
102
|
+
"低频保存:<SketchPicker onChangeComplete={(color) => saveColor(color.hex)} />",
|
|
103
|
+
"只在鼠标释放/输入失焦时触发,适合触发 API 调用或状态持久化"
|
|
104
|
+
],
|
|
105
|
+
"commonMistakes": [
|
|
106
|
+
"把 onChangeComplete 和 onChange 都传,在 onChange 里做副作用——重复触发,只需传一个"
|
|
107
|
+
]
|
|
108
|
+
},
|
|
109
|
+
"onClear": {
|
|
110
|
+
"signature": "() => void",
|
|
111
|
+
"asyncSupported": false,
|
|
112
|
+
"examples": [
|
|
113
|
+
"仅 SketchPicker 有效:<SketchPicker clear onClear={() => setColor(undefined)} />",
|
|
114
|
+
"onClear 触发时组件不自动清空 color prop,需业务方 setColor 重置"
|
|
115
|
+
],
|
|
116
|
+
"commonMistakes": [
|
|
117
|
+
"ChromePicker/CompactPicker/SwatchesPicker 传 clear/onClear 无效——这两个 prop 仅 SketchPicker 支持"
|
|
118
|
+
]
|
|
119
|
+
}
|
|
120
|
+
},
|
|
121
|
+
"typescriptPitfalls": [
|
|
122
|
+
{
|
|
123
|
+
"issue": "onChange 的 color 参数是 ColorResult 对象,不是字符串,直接作为 string 使用会 TS 报错",
|
|
124
|
+
"wrong": "onChange={(color) => setHex(color)} // color 是 ColorResult 对象,不是 string",
|
|
125
|
+
"right": "onChange={(color) => setHex(color.hex)} // 取 hex 字符串"
|
|
126
|
+
},
|
|
127
|
+
{
|
|
128
|
+
"issue": "clear/onClear 仅 SketchPicker(默认 export)支持,传给其他变体无效且 TS 可能报类型错误",
|
|
129
|
+
"wrong": "import { ChromePicker } from '@para-ui/core'; <ChromePicker clear onClear={...} /> // ChromePicker 无这两个 prop",
|
|
130
|
+
"right": "import ColorPicker from '@para-ui/core'; // 默认 export 是 SketchPicker\n<ColorPicker clear onClear={() => setColor(undefined)} />"
|
|
131
|
+
},
|
|
132
|
+
{
|
|
133
|
+
"issue": "presetColors 传 [] 隐藏预设色板,而非传 null/undefined",
|
|
134
|
+
"wrong": "<ColorPicker presetColors={null} /> // TS 类型错误:null 不是 string[]",
|
|
135
|
+
"right": "<ColorPicker presetColors={[]} /> // 传空数组隐藏预设色板区域"
|
|
136
|
+
}
|
|
137
|
+
],
|
|
138
|
+
"mapping": {
|
|
139
|
+
"realComponent": "ColorPicker",
|
|
140
|
+
"adapter": null
|
|
141
|
+
}
|
|
142
|
+
}
|
|
@@ -0,0 +1,181 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "ComboSelect",
|
|
3
|
+
"category": "Data Entry",
|
|
4
|
+
"description": "组合选择器,支持表格、树、列表多种模式",
|
|
5
|
+
"semantic": {
|
|
6
|
+
"intent": [
|
|
7
|
+
"复杂选择",
|
|
8
|
+
"多模式选择"
|
|
9
|
+
],
|
|
10
|
+
"useCases": [
|
|
11
|
+
"人员选择",
|
|
12
|
+
"组织架构",
|
|
13
|
+
"资源选择"
|
|
14
|
+
],
|
|
15
|
+
"riskLevel": "normal"
|
|
16
|
+
},
|
|
17
|
+
"variants": {
|
|
18
|
+
"table": {
|
|
19
|
+
"meaning": "表格模式"
|
|
20
|
+
},
|
|
21
|
+
"tree": {
|
|
22
|
+
"meaning": "树形模式"
|
|
23
|
+
},
|
|
24
|
+
"list": {
|
|
25
|
+
"meaning": "列表模式"
|
|
26
|
+
}
|
|
27
|
+
},
|
|
28
|
+
"states": [
|
|
29
|
+
"default",
|
|
30
|
+
"disabled",
|
|
31
|
+
"error"
|
|
32
|
+
],
|
|
33
|
+
"idealProps": {
|
|
34
|
+
"mode": {
|
|
35
|
+
"type": "enum",
|
|
36
|
+
"values": [
|
|
37
|
+
"table",
|
|
38
|
+
"tree",
|
|
39
|
+
"list"
|
|
40
|
+
],
|
|
41
|
+
"default": "table",
|
|
42
|
+
"description": "选择器模式;tree 启用 fullPath*,table 接受 TableProps,list 无 Table/Tree props"
|
|
43
|
+
},
|
|
44
|
+
"value": {
|
|
45
|
+
"type": "SelectOpt[] | SelectOpt",
|
|
46
|
+
"description": "受控值;checkable=true 数组(多选),checkable=false 单值(单选);字段名遵循 replaceFields"
|
|
47
|
+
},
|
|
48
|
+
"defaultValue": {
|
|
49
|
+
"type": "SelectOpt[] | SelectOpt",
|
|
50
|
+
"description": "非受控默认值,与 value 互斥;类型规则同 value"
|
|
51
|
+
},
|
|
52
|
+
"onChange": {
|
|
53
|
+
"type": "function",
|
|
54
|
+
"signature": "(options: SelectOpt[] | SelectOpt, originData?: TreeNodeProps[] | TreeNodeProps) => void",
|
|
55
|
+
"description": "value 变更回调;第二参 originData 是底层原数据透传(replaceFields 映射前的形态)"
|
|
56
|
+
},
|
|
57
|
+
"checkable": {
|
|
58
|
+
"type": "boolean",
|
|
59
|
+
"default": true,
|
|
60
|
+
"description": "单选 / 多选模式开关;直接影响 value/defaultValue/onChange 类型"
|
|
61
|
+
},
|
|
62
|
+
"replaceFields": {
|
|
63
|
+
"type": "object",
|
|
64
|
+
"default": "{ key: 'key', title: 'title', children: 'children' }",
|
|
65
|
+
"description": "入参字段映射;决定 value 里对象用什么字段名"
|
|
66
|
+
},
|
|
67
|
+
"outputFields": {
|
|
68
|
+
"type": "object",
|
|
69
|
+
"default": "{ outputKey: 'key', outputTitle: 'label' }",
|
|
70
|
+
"description": "出参字段映射(独立于 replaceFields);决定 onChange options 里字段名"
|
|
71
|
+
},
|
|
72
|
+
"showSearch": {
|
|
73
|
+
"type": "boolean",
|
|
74
|
+
"default": false,
|
|
75
|
+
"description": "显示搜索框;配合 realTimeSearch/searchPlaceholder/onSearch 使用"
|
|
76
|
+
},
|
|
77
|
+
"allowClear": {
|
|
78
|
+
"type": "boolean",
|
|
79
|
+
"default": false,
|
|
80
|
+
"description": "允许清空;触发 onClear 后组件自动清内部 state,父端需同步父 state"
|
|
81
|
+
},
|
|
82
|
+
"url": {
|
|
83
|
+
"type": "string",
|
|
84
|
+
"description": "远程数据源 URL;配合 ctx/method/params 一组使用,替代 TableProps.data / TreeProps.treeData"
|
|
85
|
+
},
|
|
86
|
+
"method": {
|
|
87
|
+
"type": "enum",
|
|
88
|
+
"values": [
|
|
89
|
+
"Get",
|
|
90
|
+
"Post"
|
|
91
|
+
],
|
|
92
|
+
"default": "Get",
|
|
93
|
+
"description": "请求方法;注意首字母大写,不是 GET/POST"
|
|
94
|
+
}
|
|
95
|
+
},
|
|
96
|
+
"epics": [
|
|
97
|
+
"ComboSelect-api-rework-epic.md (R20 W-3 起草 · 议题 A 泛型化 / 议题 B 字段映射对称 / R21 user 评审)"
|
|
98
|
+
],
|
|
99
|
+
"do": [
|
|
100
|
+
"用于需要复杂选择逻辑的场景(人员选择、组织架构、资源选择),简单场景用 Select",
|
|
101
|
+
"配合服务端搜索减少数据量(url + params + showSearch + onSearch)",
|
|
102
|
+
"checkable=false 单选时,value/onChange 的 options 是 SelectOpt 对象而非数组——不要用数组 API",
|
|
103
|
+
"replaceFields 和 outputFields 独立控制:replaceFields 控制入参字段映射,outputFields 控制 onChange 出参字段映射,两者不互通"
|
|
104
|
+
],
|
|
105
|
+
"dont": [
|
|
106
|
+
"简单选择场景使用(应使用 Select,ComboSelect 引入了 Table/Tree 等重依赖)",
|
|
107
|
+
"数据量极大时不分页(远程模式需配合 TableProps.pagination 或分页参数控制)",
|
|
108
|
+
"不要假设 onOk 和 onChange 触发时机相同——showPopoverActions=true 时用 onOk/onCancel;不显示 footer 时只有 onChange"
|
|
109
|
+
],
|
|
110
|
+
"events": {
|
|
111
|
+
"onChange": {
|
|
112
|
+
"signature": "(options: SelectOpt[] | SelectOpt, originData?: TreeNodeProps[] | TreeNodeProps) => void",
|
|
113
|
+
"asyncSupported": false,
|
|
114
|
+
"examples": [
|
|
115
|
+
"多选(checkable=true):options 是 SelectOpt[] 数组,每项含 outputFields 指定的字段",
|
|
116
|
+
"单选(checkable=false):options 是单个 SelectOpt 对象(不是数组),originData 是原始树节点",
|
|
117
|
+
"清空时(allowClear=true 触发 onClear):onChange 额外触发,checkable=true 时 options=[],checkable=false 时 options={}"
|
|
118
|
+
],
|
|
119
|
+
"commonMistakes": [
|
|
120
|
+
"checkable=false 时把 options 当数组处理——单选模式 options 是 SelectOpt 对象,直接 .key 取值,不能 .map()",
|
|
121
|
+
"忽略 outputFields 对出参字段的影响——默认 outputFields={ outputKey:'key', outputTitle:'label' },出参对象的 key 名是 outputKey/outputTitle,不是原始的 replaceFields 字段名",
|
|
122
|
+
"假设 onOk 等价 onChange——showPopoverActions=false 时没有 onOk,所有变更走 onChange;showPopoverActions=true 时点「确定」才触发 onOk",
|
|
123
|
+
"onTagRemove 返回 false 阻止删除后仍期望 onChange 触发——src 实证(index.tsx:236)返回 false 时直接 return,不会触发 onChange"
|
|
124
|
+
]
|
|
125
|
+
},
|
|
126
|
+
"onOk": {
|
|
127
|
+
"signature": "(options: SelectedOptions) => void",
|
|
128
|
+
"asyncSupported": false,
|
|
129
|
+
"examples": [
|
|
130
|
+
"showPopoverActions=true 时用户点「确定」按钮触发,options 为当前选中列表",
|
|
131
|
+
"适合「选择后需要二次确认」场景——弹框有确认/取消按钮"
|
|
132
|
+
],
|
|
133
|
+
"commonMistakes": [
|
|
134
|
+
"showPopoverActions=false 时期望 onOk 触发——不会,此时直接监听 onChange",
|
|
135
|
+
"onOk 和 onChange 同时监听导致重复处理——showPopoverActions=true 时推荐只用 onOk,不依赖 onChange"
|
|
136
|
+
]
|
|
137
|
+
},
|
|
138
|
+
"onSearch": {
|
|
139
|
+
"signature": "(searchKey: string) => void",
|
|
140
|
+
"asyncSupported": false,
|
|
141
|
+
"examples": [
|
|
142
|
+
"showSearch=true 时用户输入触发,searchKey 为当前输入字符串",
|
|
143
|
+
"服务端搜索:在 onSearch 中更新请求参数,配合 params 刷新数据"
|
|
144
|
+
],
|
|
145
|
+
"commonMistakes": [
|
|
146
|
+
"不传 onSearch 时期望服务端搜索——不传则组件做客户端过滤(realTimeSearch=true 时),服务端搜索必须传 onSearch"
|
|
147
|
+
]
|
|
148
|
+
}
|
|
149
|
+
},
|
|
150
|
+
"typescriptPitfalls": [
|
|
151
|
+
{
|
|
152
|
+
"issue": "checkable=false 单选时 onChange 的 options 是 SelectOpt 对象而非数组,直接用数组方法报错",
|
|
153
|
+
"wrong": "onChange={(options) => options.map(o => o.key)} // checkable=false 时 options 是对象,没有 .map()",
|
|
154
|
+
"right": "onChange={(options) => { if (Array.isArray(options)) { /* 多选 */ } else { /* 单选,options 是 SelectOpt */ } }}"
|
|
155
|
+
},
|
|
156
|
+
{
|
|
157
|
+
"issue": "method 字段首字母大写('Get'|'Post'),传 'GET'/'POST' 会被忽略",
|
|
158
|
+
"wrong": "method='GET' // 源码 interface 定义是 'Get' | 'Post',大小写不同",
|
|
159
|
+
"right": "method='Get' // 或 method='Post'(src/ComboSelect/interface.tsx 实证)"
|
|
160
|
+
},
|
|
161
|
+
{
|
|
162
|
+
"issue": "SelectOpt 是 { disabled?: boolean; closable?: boolean; [key: string]: any },索引签名允许任意字段,但不应假设 key/title 字段名——取决于 outputFields",
|
|
163
|
+
"wrong": "const key = options[0].key // 假设出参字段名是 key,实际由 outputFields.outputKey 决定",
|
|
164
|
+
"right": "const { outputKey = 'key' } = outputFields || {}; const key = options[0][outputKey];"
|
|
165
|
+
},
|
|
166
|
+
{
|
|
167
|
+
"issue": "value 类型随 checkable 变化,单独声明 useState 类型需要联合",
|
|
168
|
+
"wrong": "const [val, setVal] = useState<SelectOpt[]>() // checkable=false 时 value 是 SelectOpt,不是数组",
|
|
169
|
+
"right": "const [val, setVal] = useState<SelectOpt[] | SelectOpt | undefined>()"
|
|
170
|
+
},
|
|
171
|
+
{
|
|
172
|
+
"issue": "嵌套 TableProps 时必须用 Para UI 的 headData(不是 antd 的 columns),字段结构也不同",
|
|
173
|
+
"wrong": "TableProps={{ columns: [{ title: '姓名', dataIndex: 'title' }] }} // TS2353: 'columns' does not exist in type TableProps",
|
|
174
|
+
"right": "TableProps={{ headData: [{ name: 'title', label: '姓名', width: 200 }] }} // headData 每项用 { name, label, width? },name 对应数据字段 key,label 是表头显示文字"
|
|
175
|
+
}
|
|
176
|
+
],
|
|
177
|
+
"mapping": {
|
|
178
|
+
"realComponent": "ComboSelect",
|
|
179
|
+
"adapter": null
|
|
180
|
+
}
|
|
181
|
+
}
|
package/lib/ComboSelect/index.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});require('./index.css');require('../Tree/style/index.css');const t=require("../_virtual/jsx-runtime.js"),o=require("react"),Wt=require("../node_modules/@para-ui/icons/Down/index.js"),Bt=require("../node_modules/@para-ui/icons/Search/index.js"),et=require("../node_modules/@para-ui/icons/Close/index.js"),Gt=require("../node_modules/@para-ui/icons/CloseCircleF/index.js"),Ut=require("../Table/index.js"),Jt=require("../Tree/Tree.js");;/* empty css */const tt=require("../Button/index.js"),Qt=require("../Dropdown/index.js"),st=require("../Popover/index.js"),be=require("../AutoTips/index.js"),Xt=require("../Tooltip/index.js"),F=require("clsx"),$=require("./utils.js"),rt=require("@paraview/lib"),Yt=require("../GlobalContext/index.js"),Zt=require("../Hooks/useGlobalProps.js"),es=require("../GlobalContext/useFormatMessage.js"),ts=require("./lang/index.js"),ss=require("../Label/index.js"),rs=require("../HelperText/index.js"),d=require("../GlobalContext/constant.js"),os=require("../Search/index.js"),ns=require("../node_modules/@para-ui/icons/LoadingF/index.js");;/* empty css */const ot=nt=>{const{mode:m="table",placeholder:je,searchPlaceholder:lt,overLine:_=!1,disabled:Re=!1,allowClear:ct=!1,className:it,style:at,maxHeight:ut,height:dt,placement:mt="bottomLeft",popoverClassName:pt,size:xt="large",popoverActions:ve=null,showPopoverActions:ge=!1,defaultOpen:Z=!1,defaultValue:Ee,replaceFields:ft={key:"key",title:"title",children:"children"},outputFields:ht={outputKey:"key",outputTitle:"label"},value:ee,onClear:te,onCancel:bt,onOk:jt,onClose:Rt,onChange:C,onSearch:se,refresh:y,TableProps:re,TreeProps:P,checkable:a=!0,url:Ce,ctx:ye,params:S,method:we="Get",showSearch:A=!1,realTimeSearch:vt=!1,error:$e=!1,hideErrorDom:gt,helperText:oe,paramsCallback:Et,fullPathKey:Ct,fullPathRender:Se,disablePopup:x=!1,tagRender:ne,onTagRemove:Ne,action:yt,label:Te="",labelTooltip:wt,required:Pe=!1,emptyProps:ke,toggleSelectedOnSingle:$t=!1,optionRender:qe,getOptionLabel:Me,dropdownMatchSelectWidth:le=!0,getPopupContainer:St,maxTagTextLength:K,renderInputContent:I,renderTagLabel:ce,renderMoreTagLabel:Le}=Zt.default(nt,"ComboSelect"),{language:Oe,locale:De}=o.useContext(Yt.default),N=o.useRef(null),[f,ie]=o.useState(!1),[j,V]=o.useState([]),H=o.useRef(new Map),[u,W]=o.useState([]),[B,ze]=o.useState(""),G=o.useRef(void 0),[k,Fe]=o.useState(null),[q,Nt]=o.useState(!1),[T,Tt]=o.useState(0),[M,L]=o.useState(!1),ae=o.useRef([]),O=o.useRef(!1),U=o.useRef(null),_e=o.useRef({}),Ae=$.getReplaceField(m,ft,re,P),{key:D="",title:Ke=""}=Ae,{outputKey:R="key",outputTitle:g="label"}=ht||{},w=es.default("ComboSelect",ts.default),Ie=o.useRef($.isRemoteLoad(m,m==="table"?re:P)),[ue,Pt]=o.useState(),h=o.useRef({list:[]}),[E,de]=o.useState(null),me=o.useRef(null);h.current.openMore=M,h.current.list=[...u];const kt=()=>{h.current.openMore&&L(!1)},Ve=e=>{if(e===null||e===0||(e===void 0&&(e=h.current.list.length),!me.current))return;const s=me.current.querySelector(".comboselect-overflow-list");if(s)if(s.scrollHeight>s.clientHeight){const r=Number(e)-1;de(r),Ve(r)}else h.current.list.length<=e&&kt()},J=()=>{if(h.current.list.length===0)return de(null);clearTimeout(h.current.resizeTimer),h.current.resizeTimer=setTimeout(()=>{de(h.current.list.length),Ve()},50)};o.useEffect(()=>(J(),()=>{clearTimeout(h.current.resizeTimer)}),[u]),o.useEffect(()=>(!_&&a?window.addEventListener("resize",J):window.removeEventListener("resize",J),()=>{window.removeEventListener("resize",J)}),[_,a]);const qt=e=>{if(!x&&!Re){if(O.current){v();return}O.current=!0,ie(!0)}},v=(e,s)=>{O.current=!1,G.current=void 0,_e.current={},ie(!1),Fe(null),ze(""),Rt?.(),s==="cancel"&&He()},He=()=>{V([]),W([])},pe=(e,s)=>{V(e),zt(s,e)},Mt=e=>{V(s=>{const r=s.findIndex(l=>l===e[R]);return r>-1&&s.splice(r,1),[...s]})},We=(e,s)=>{if(e.stopPropagation(),s.closable===!1||Ne?.(s)===!1)return;const r=[...u],l=r.findIndex(n=>n[R]===s[R]);l>-1&&r.splice(l,1),W(r),Mt(s),C?.(r)},Lt=o.useMemo(()=>$.debounce(async e=>{Q(e)},400),[]),Ot=e=>{ze(e),vt&&Lt(e)},Q=e=>{const s=e??B;se?se(s):(G.current=s?.trim(),Tt(Math.random())),Ie.current&&Pt([])},Be=(e,s)=>{s?(jt?.(u),v(null,"ok")):(bt?.(),v(null,"cancel"))},Ge=()=>{let e="auto";N.current&&(e=`${N.current.offsetWidth}px`);const s=$.getOverlaySize(m,Ie.current,ut,dt),r={minWidth:e,maxWidth:960};return typeof le=="number"?r.width=le:le&&(r.width=e),{overflow:"auto",...r,...s}},Dt=()=>F(`${d.$prefixCls}-comboselect`,it,{[`${d.$prefixCls}-comboselect-focused`]:f&&!x,[`${d.$prefixCls}-comboselect-disabled`]:Re,[`${d.$prefixCls}-comboselect-radioable`]:!a,[`${d.$prefixCls}-comboselect-error`]:$e,[`${d.$prefixCls}-comboselect-clear`]:q,[`${d.$prefixCls}-comboselect-non-popup`]:x,[`${d.$prefixCls}-comboselect-overLine`]:_},`${d.$prefixCls}-comboselect-${xt}`),zt=(e,s)=>{let r=[];if(e?.length&&(r=e.map(n=>{const i={};i[R]=n[D]||"",Me?i[g]=Me(n)||"":i[g]=n[Ke]||"";const c=ae.current?.find(p=>p[R]===i[R]);return c&&(c.disabled!==void 0&&(i.disabled=c.disabled),c.closable!==void 0&&(i.closable=c.closable)),i})),s?.length&&e){const n=s.filter(c=>e.findIndex(p=>p[D]===c)===-1),i=ae.current?.filter(c=>n?.includes(c[R]));i&&r.push(...i)}W(r);const l=rt.DeepClone(e||[]);a?C?.(r,l):C?.(r[0],l[0])},Ue=e=>{const s=e.map(r=>r[R]);W(e),V(s),ae.current=e},Ft=(e,s)=>{Fe(s.node)},Je=()=>{let e={};if(!x){const{width:s,minWidth:r,maxWidth:l}=Ge();e={width:s,minWidth:r,maxWidth:l}}return t.jsxRuntimeExports.jsx("div",{className:"comboselect-search",style:e,children:t.jsxRuntimeExports.jsx(os.Search,{className:"comboselect-search-input",rightIconExist:!0,showBtn:!1,rightIcon:t.jsxRuntimeExports.jsx(Bt.Search,{}),btnType:"inside",value:B,onChange:Ot,placeholder:lt??w({id:"searchPlaceholder"}),onClickBtn:()=>{Q()},onEnter:()=>{Q()},onClear:()=>{Q("")}})})},Qe=()=>ve?t.jsxRuntimeExports.jsx("div",{className:"comboselect-actions",children:ve}):t.jsxRuntimeExports.jsxs("div",{className:"comboselect-actions",children:[t.jsxRuntimeExports.jsx(tt.Button,{onClick:e=>Be(e,!1),variant:"outlined",size:"small",children:w({id:"cancel"})}),t.jsxRuntimeExports.jsx(tt.Button,{variant:"outlined",onClick:e=>Be(e,!0),size:"small",children:w({id:"ok"})})]}),Xe=()=>m!=="tree"||!k?null:Se?t.jsxRuntimeExports.jsx("div",{className:"comboselect-fullPath",children:Se(k??{})}):t.jsxRuntimeExports.jsxs("div",{className:"comboselect-fullPath",children:[t.jsxRuntimeExports.jsx("span",{children:w({id:"fullPath"})}),k?.[Ct]??""]}),_t=e=>{e.stopPropagation(),He(),v(),L(!1),te?.(),C?.(a?[]:{})},At=e=>{e.stopPropagation(),L(!0),v()};o.useImperativeHandle(yt,()=>({closePopup:()=>v()})),o.useEffect(()=>{!x&&Z&&(O.current=!0,ie(Z))},[Z]),o.useEffect(()=>{Ee&&Ue($.toArray(Ee))},[]),o.useEffect(()=>{ee&&Ue($.toArray(ee))},[ee]),o.useEffect(()=>{ct&&Nt(!!u?.length)},[u]),o.useEffect(()=>{const e=r=>r&&r.ownerDocument||document,s=r=>{const l=e(N.current),n=r.target,i=!l.documentElement.contains(n)||U.current?.contains(n)||N.current?.contains(n)||!1;if(m==="table"){const c=`.${d.$prefixCls}-select-popover`,p=`.${d.$prefixCls}-table-show-colums-popover`,b=`.${d.$prefixCls}-filter-popover`;if($.closest(n,`${c}, ${p}, ${b}`))return}O.current&&!i&&v()};if(f&&setTimeout(()=>{if(!U.current)return;const r=U.current.querySelector(".comboselect-search-input input");r&&r.focus()},200),!x&&f){const r=e(N.current);return r.addEventListener("mousedown",s),()=>{r.removeEventListener("mousedown",s)}}},[f]);const Ye=o.useMemo(()=>{if(!u?.length)return null;if(I)return I(a?u:u[0]);if(!a)return t.jsxRuntimeExports.jsx("span",{className:"comboselect-single-content",children:t.jsxRuntimeExports.jsx(be.default,{children:u[0]?.[g]})});if(!u.length)return;const e=l=>{if(ne)return ne(l);const{disabled:n,closable:i=!0}=l??{};let c=l[g];ce&&(c=ce(l));let p=!1;if(typeof K=="number"&&(typeof c=="string"||typeof c=="number")){const b=String(c);b.length>K&&(c=`${b.slice(0,K)}...`,p=!0)}return t.jsxRuntimeExports.jsxs("span",{className:F("comboselect-item",{"comboselect-item--disabled":n,"comboselect-item--unclosable":!i}),children:[p?t.jsxRuntimeExports.jsx(Xt.Tooltip,{title:t.jsxRuntimeExports.jsx("div",{onClick:b=>b.stopPropagation(),children:l[g]}),arrow:!1,placement:"bottomLeft",children:t.jsxRuntimeExports.jsx("span",{className:"comboselect-item-content",children:c})}):t.jsxRuntimeExports.jsx("span",{className:"comboselect-item-content",children:t.jsxRuntimeExports.jsx(be.default,{children:c})}),i===!0&&t.jsxRuntimeExports.jsx("span",{className:"comboselect-item-remove",onClick:b=>We(b,l),onMouseDown:b=>b.stopPropagation(),children:t.jsxRuntimeExports.jsx(et.Close,{})})]})},s=()=>E!==null&&h.current.list.length>E?t.jsxRuntimeExports.jsx("div",{className:"comboselect-overflow-item",children:t.jsxRuntimeExports.jsx("span",{className:"comboselect-item",onClick:At,children:t.jsxRuntimeExports.jsxs("span",{className:"comboselect-item-content",children:["+",h.current.list.length-E]})})}):null,r=u.map((l,n)=>E!==null&&E<=n?null:t.jsxRuntimeExports.jsx("div",{className:"comboselect-overflow-item",children:e(l)},n));return t.jsxRuntimeExports.jsxs("div",{className:"comboselect-overflow-list",children:[r,s()]})},[u,C,a,E,K,g,ne,I,ce,_]),X=o.useMemo(()=>{let e=S||_e.current;return A&&!se&&G.current!==void 0&&(e={...e,searchKey:G.current}),Et?.(e)||e},[S,T,y,f]),xe=o.useMemo(()=>{if(!x&&!f||m!=="table")return null;const e={url:Ce,ctx:ye,search:X,method:we},s=(r,l)=>{!a&&(v(),j.includes(r))||pe([r],[l])};return t.jsxRuntimeExports.jsx("div",{className:"comboselect-table",children:t.jsxRuntimeExports.jsx(Ut.default,{...e,...re,emptyProps:ke,check:a,radio:!a,rowKey:D,setCheck:pe,setRadio:s,checkDefaultValue:j,radioDefaultValue:j[0],refresh:y??T,autoSize:!1,refreshInside:!1,checkCount:!1,paginationType:"simple"})})},[j,y,S,T,x,f,X,D,a]),fe=o.useMemo(()=>{if(!x&&!f||!["tree","list"].includes(m))return null;const e={url:Ce,ctx:ye,params:X,method:we},s=(n,i)=>{if(!i.checked){const p={};if(p[R]=i.node[D]||"",p[g]=i.node[Ke]||"",Ne?.(p)===!1)return}if(!a&&(v(),!$t&&j.includes(i.node?.key)))return;let c=i.checkedNodes;if(a||n?.length&&(c=[i.node]),a){const p=rt.ArrayToObject("key",c);Array.from(H.current.keys()).forEach(z=>{n.includes(z)||H.current.delete(z)}),n.forEach(z=>{const he=String(z);p[he]&&H.current.set(he,p[he])}),c=Array.from(H.current.values())}pe(n,c)},r=n=>P?.titleRender?P.titleRender(n):qe?qe(n):n.title,l=F("comboselect-tree",{"comboselect-list":m==="list","comboselect-list-single":m==="list"&&!a});return t.jsxRuntimeExports.jsx("div",{className:l,children:t.jsxRuntimeExports.jsx(Jt.default,{blockNode:!0,...e,...P,wrapperStyle:{position:"static"},emptyProps:{size:"small",...ke},replaceFields:Ae,checkable:a,radioable:!a,showRadio:!1,selectable:m!=="list",loadedKeys:ue,checkedKeys:j,onCheck:s,onSelect:Ft,titleRender:r,refresh:y??T,loadingNode:t.jsxRuntimeExports.jsxs("div",{className:"loading-node-content",children:[t.jsxRuntimeExports.jsx("div",{className:"loading-icon",children:t.jsxRuntimeExports.jsx(ns.LoadingF,{})}),w({id:"searching"})]})})})},[j,y,S,T,x,f,ue,m,X,a]),Y=o.useMemo(()=>t.jsxRuntimeExports.jsxs("div",{className:"comboselect-wrapper",ref:N,onClick:qt,children:[t.jsxRuntimeExports.jsx("div",{className:F("comboselect-overflow",!a&&"comboselect-overflow-single"),children:Ye}),!x&&t.jsxRuntimeExports.jsx("span",{className:"comboselect-arrow",children:t.jsxRuntimeExports.jsx(Wt.Down,{})}),q&&t.jsxRuntimeExports.jsx("span",{className:"comboselect-clear",onClick:_t,children:t.jsxRuntimeExports.jsx(Gt.CloseCircleF,{})}),!u?.length&&t.jsxRuntimeExports.jsx("span",{className:"comboselect-placeholder",children:je??w({id:"pleaseSelect"})})]}),[u,Ye,a,q,x,je]),Kt=()=>Te||Pe?t.jsxRuntimeExports.jsx(ss.default,{label:Te,required:Pe,...wt}):null,It=()=>t.jsxRuntimeExports.jsx("div",{ref:U,className:`comboselect-dropdown-wrapper ${A?"show-search":""} mode-${m}`,children:t.jsxRuntimeExports.jsxs("div",{style:Ge(),className:`${d.$prefixCls}-scrollbar-small dropdown-content`,children:[A&&Je(),m==="table"?xe:fe,f&&Xe(),ge&&Qe()]})}),Ze=()=>{const e=()=>u.map((s,r)=>{if(E!==null&&E>r)return null;let l=s[g];return Le&&(l=Le(s)),t.jsxRuntimeExports.jsxs("div",{className:"comboselect-more-item",children:[t.jsxRuntimeExports.jsx("span",{className:"comboselect-more-item-text",children:t.jsxRuntimeExports.jsx(be.default,{children:l})}),t.jsxRuntimeExports.jsx("span",{className:"comboselect-more-item-remove",onClick:n=>We(n,s),children:t.jsxRuntimeExports.jsx(et.Close,{})})]},r)});return t.jsxRuntimeExports.jsxs("div",{className:"comboselect-more-wrapper",children:[t.jsxRuntimeExports.jsx("span",{className:"comboselect-more-title",children:t.jsxRuntimeExports.jsx("span",{children:w({id:"more"})})}),t.jsxRuntimeExports.jsx("div",{className:"comboselect-more-content",children:e()})]})},Vt=o.useMemo(()=>t.jsxRuntimeExports.jsx(Qt.Dropdown,{overlay:It(),visible:f,placement:mt,trigger:["click"],overlayClassName:F(`${d.$prefixCls}-comboselect-dropdown`,pt),getPopupContainer:St,children:t.jsxRuntimeExports.jsx(st.Popover,{visible:M,destroyTooltipOnHide:!0,placement:"rightTop",content:Ze(),onVisibleChange:()=>L(!1),overlayClassName:`${d.$prefixCls}-comboselect-more-popover`,children:Y})}),[f,j,B,y,S,k,T,q,oe,Oe,De,M,ue,C,te,Y,u]),Ht=o.useMemo(()=>t.jsxRuntimeExports.jsxs(t.jsxRuntimeExports.Fragment,{children:[t.jsxRuntimeExports.jsx(st.Popover,{visible:M,destroyTooltipOnHide:!0,placement:"rightTop",content:Ze(),onVisibleChange:()=>L(!1),overlayClassName:`${d.$prefixCls}-comboselect-more-popover`,children:Y}),t.jsxRuntimeExports.jsxs("div",{className:"comboselect-non-popup-content",children:[A&&Je(),m==="table"?xe:fe,Xe(),ge&&Qe()]})]}),[j,B,y,S,k,q,oe,Oe,De,C,te,xe,fe,Y,M,u]);return t.jsxRuntimeExports.jsxs("div",{className:Dt(),style:at,ref:me,children:[Kt(),x?Ht:Vt,x?null:t.jsxRuntimeExports.jsx(rs.default,{error:$e,helperText:oe,hideErrorDom:gt})]})};exports.ComboSelect=ot;exports.default=ot;
|
|
1
|
+
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});require('./index.css');require('../Tree/style/index.css');const t=require("../_virtual/jsx-runtime.js"),o=require("react"),Bt=require("../node_modules/@para-ui/icons/Down/index.js"),Gt=require("../node_modules/@para-ui/icons/Search/index.js"),et=require("../node_modules/@para-ui/icons/Close/index.js"),Ut=require("../node_modules/@para-ui/icons/CloseCircleF/index.js"),Jt=require("../Table/index.js"),Qt=require("../Tree/Tree.js");;/* empty css */const tt=require("../Button/index.js"),Xt=require("../Dropdown/index.js"),st=require("../Popover/index.js"),be=require("../AutoTips/index.js"),Yt=require("../Tooltip/index.js"),z=require("clsx"),S=require("./utils.js"),Zt=require("@snack-kit/lib"),es=require("../Utils/snack-kit-shims.js"),ts=require("../GlobalContext/index.js"),ss=require("../Hooks/useGlobalProps.js"),rs=require("../GlobalContext/useFormatMessage.js"),os=require("./lang/index.js"),ns=require("../Label/index.js"),ls=require("../HelperText/index.js"),d=require("../GlobalContext/constant.js"),cs=require("../Search/index.js"),is=require("../node_modules/@para-ui/icons/LoadingF/index.js");;/* empty css */const rt=ot=>{const{mode:m="table",placeholder:je,searchPlaceholder:nt,overLine:F=!1,disabled:Re=!1,allowClear:lt=!1,className:ct,style:it,maxHeight:at,height:ut,placement:dt="bottomLeft",popoverClassName:mt,size:pt="large",popoverActions:ve=null,showPopoverActions:ge=!1,defaultOpen:Z=!1,defaultValue:Ee,replaceFields:xt={key:"key",title:"title",children:"children"},outputFields:ft={outputKey:"key",outputTitle:"label"},value:ee,onClear:te,onCancel:ht,onOk:bt,onClose:jt,onChange:C,onSearch:se,refresh:y,TableProps:re,TreeProps:k,checkable:a=!0,url:Ce,ctx:ye,params:$,method:we="Get",showSearch:_=!1,realTimeSearch:Rt=!1,error:Se=!1,hideErrorDom:vt,helperText:oe,paramsCallback:gt,fullPathKey:Et,fullPathRender:$e,disablePopup:x=!1,tagRender:ne,onTagRemove:Ne,action:Ct,label:Te="",labelTooltip:yt,required:ke=!1,emptyProps:Pe,toggleSelectedOnSingle:wt=!1,optionRender:qe,getOptionLabel:Me,dropdownMatchSelectWidth:le=!0,getPopupContainer:St,maxTagTextLength:A,renderInputContent:I,renderTagLabel:ce,renderMoreTagLabel:Le}=ss.default(ot,"ComboSelect"),{language:Oe,locale:De}=o.useContext(ts.default),N=o.useRef(null),[f,ie]=o.useState(!1),[j,V]=o.useState([]),H=o.useRef(new Map),[u,W]=o.useState([]),[B,Ke]=o.useState(""),G=o.useRef(void 0),[P,ze]=o.useState(null),[q,$t]=o.useState(!1),[T,Nt]=o.useState(0),[M,L]=o.useState(!1),ae=o.useRef([]),O=o.useRef(!1),U=o.useRef(null),Fe=o.useRef({}),_e=S.getReplaceField(m,xt,re,k),{key:Tt,title:kt}=_e,D=Tt||"",Ae=kt||"",{outputKey:R="key",outputTitle:g="label"}=ft||{},w=rs.default("ComboSelect",os.default),Ie=o.useRef(S.isRemoteLoad(m,m==="table"?re:k)),[ue,Pt]=o.useState(),h=o.useRef({list:[]}),[E,de]=o.useState(null),me=o.useRef(null);h.current.openMore=M,h.current.list=[...u];const qt=()=>{h.current.openMore&&L(!1)},Ve=e=>{if(e===null||e===0||(e===void 0&&(e=h.current.list.length),!me.current))return;const s=me.current.querySelector(".comboselect-overflow-list");if(s)if(s.scrollHeight>s.clientHeight){const r=Number(e)-1;de(r),Ve(r)}else h.current.list.length<=e&&qt()},J=()=>{if(h.current.list.length===0)return de(null);clearTimeout(h.current.resizeTimer),h.current.resizeTimer=setTimeout(()=>{de(h.current.list.length),Ve()},50)};o.useEffect(()=>(J(),()=>{clearTimeout(h.current.resizeTimer)}),[u]),o.useEffect(()=>(!F&&a?window.addEventListener("resize",J):window.removeEventListener("resize",J),()=>{window.removeEventListener("resize",J)}),[F,a]);const Mt=e=>{if(!x&&!Re){if(O.current){v();return}O.current=!0,ie(!0)}},v=(e,s)=>{O.current=!1,G.current=void 0,Fe.current={},ie(!1),ze(null),Ke(""),jt?.(),s==="cancel"&&He()},He=()=>{V([]),W([])},pe=(e,s)=>{V(e),zt(s,e)},Lt=e=>{V(s=>{const r=s.findIndex(l=>l===e[R]);return r>-1&&s.splice(r,1),[...s]})},We=(e,s)=>{if(e.stopPropagation(),s.closable===!1||Ne?.(s)===!1)return;const r=[...u],l=r.findIndex(n=>n[R]===s[R]);l>-1&&r.splice(l,1),W(r),Lt(s),C?.(r)},Ot=o.useMemo(()=>S.debounce(async e=>{Q(e)},400),[]),Dt=e=>{Ke(e),Rt&&Ot(e)},Q=e=>{const s=e??B;se?se(s):(G.current=s?.trim(),Nt(Math.random())),Ie.current&&Pt([])},Be=(e,s)=>{s?(bt?.(u),v(null,"ok")):(ht?.(),v(null,"cancel"))},Ge=()=>{let e="auto";N.current&&(e=`${N.current.offsetWidth}px`);const s=S.getOverlaySize(m,Ie.current,at,ut),r={minWidth:e,maxWidth:960};return typeof le=="number"?r.width=le:le&&(r.width=e),{overflow:"auto",...r,...s}},Kt=()=>z(`${d.$prefixCls}-comboselect`,ct,{[`${d.$prefixCls}-comboselect-focused`]:f&&!x,[`${d.$prefixCls}-comboselect-disabled`]:Re,[`${d.$prefixCls}-comboselect-radioable`]:!a,[`${d.$prefixCls}-comboselect-error`]:Se,[`${d.$prefixCls}-comboselect-clear`]:q,[`${d.$prefixCls}-comboselect-non-popup`]:x,[`${d.$prefixCls}-comboselect-overLine`]:F},`${d.$prefixCls}-comboselect-${pt}`),zt=(e,s)=>{let r=[];if(e?.length&&(r=e.map(n=>{const i={};i[R]=n[D]||"",Me?i[g]=Me(n)||"":i[g]=n[Ae]||"";const c=ae.current?.find(p=>p[R]===i[R]);return c&&(c.disabled!==void 0&&(i.disabled=c.disabled),c.closable!==void 0&&(i.closable=c.closable)),i})),s?.length&&e){const n=s.filter(c=>e.findIndex(p=>p[D]===c)===-1),i=ae.current?.filter(c=>n?.includes(c[R]));i&&r.push(...i)}W(r);const l=Zt.DeepClone(e||[]);a?C?.(r,l):C?.(r[0],l[0])},Ue=e=>{const s=e.map(r=>r[R]);W(e),V(s),ae.current=e},Ft=(e,s)=>{ze(s.node)},Je=()=>{let e={};if(!x){const{width:s,minWidth:r,maxWidth:l}=Ge();e={width:s,minWidth:r,maxWidth:l}}return t.jsxRuntimeExports.jsx("div",{className:"comboselect-search",style:e,children:t.jsxRuntimeExports.jsx(cs.Search,{className:"comboselect-search-input",rightIconExist:!0,showBtn:!1,rightIcon:t.jsxRuntimeExports.jsx(Gt.Search,{}),btnType:"inside",value:B,onChange:Dt,placeholder:nt??w({id:"searchPlaceholder"}),onClickBtn:()=>{Q()},onEnter:()=>{Q()},onClear:()=>{Q("")}})})},Qe=()=>ve?t.jsxRuntimeExports.jsx("div",{className:"comboselect-actions",children:ve}):t.jsxRuntimeExports.jsxs("div",{className:"comboselect-actions",children:[t.jsxRuntimeExports.jsx(tt.Button,{onClick:e=>Be(e,!1),variant:"outlined",size:"small",children:w({id:"cancel"})}),t.jsxRuntimeExports.jsx(tt.Button,{variant:"outlined",onClick:e=>Be(e,!0),size:"small",children:w({id:"ok"})})]}),Xe=()=>m!=="tree"||!P?null:$e?t.jsxRuntimeExports.jsx("div",{className:"comboselect-fullPath",children:$e(P??{})}):t.jsxRuntimeExports.jsxs("div",{className:"comboselect-fullPath",children:[t.jsxRuntimeExports.jsx("span",{children:w({id:"fullPath"})}),P?.[Et]??""]}),_t=e=>{e.stopPropagation(),He(),v(),L(!1),te?.(),C?.(a?[]:{})},At=e=>{e.stopPropagation(),L(!0),v()};o.useImperativeHandle(Ct,()=>({closePopup:()=>v()})),o.useEffect(()=>{!x&&Z&&(O.current=!0,ie(Z))},[Z]),o.useEffect(()=>{Ee&&Ue(S.toArray(Ee))},[]),o.useEffect(()=>{ee&&Ue(S.toArray(ee))},[ee]),o.useEffect(()=>{lt&&$t(!!u?.length)},[u]),o.useEffect(()=>{const e=r=>r&&r.ownerDocument||document,s=r=>{const l=e(N.current),n=r.target,i=!l.documentElement.contains(n)||U.current?.contains(n)||N.current?.contains(n)||!1;if(m==="table"){const c=`.${d.$prefixCls}-select-popover`,p=`.${d.$prefixCls}-table-show-colums-popover`,b=`.${d.$prefixCls}-filter-popover`;if(S.closest(n,`${c}, ${p}, ${b}`))return}O.current&&!i&&v()};if(f&&setTimeout(()=>{if(!U.current)return;const r=U.current.querySelector(".comboselect-search-input input");r&&r.focus()},200),!x&&f){const r=e(N.current);return r.addEventListener("mousedown",s),()=>{r.removeEventListener("mousedown",s)}}},[f]);const Ye=o.useMemo(()=>{if(!u?.length)return null;if(I)return I(a?u:u[0]);if(!a)return t.jsxRuntimeExports.jsx("span",{className:"comboselect-single-content",children:t.jsxRuntimeExports.jsx(be.default,{children:u[0]?.[g]})});if(!u.length)return;const e=l=>{if(ne)return ne(l);const{disabled:n,closable:i=!0}=l??{};let c=l[g];ce&&(c=ce(l));let p=!1;if(typeof A=="number"&&(typeof c=="string"||typeof c=="number")){const b=String(c);b.length>A&&(c=`${b.slice(0,A)}...`,p=!0)}return t.jsxRuntimeExports.jsxs("span",{className:z("comboselect-item",{"comboselect-item--disabled":n,"comboselect-item--unclosable":!i}),children:[p?t.jsxRuntimeExports.jsx(Yt.Tooltip,{title:t.jsxRuntimeExports.jsx("div",{onClick:b=>b.stopPropagation(),children:l[g]}),arrow:!1,placement:"bottomLeft",children:t.jsxRuntimeExports.jsx("span",{className:"comboselect-item-content",children:c})}):t.jsxRuntimeExports.jsx("span",{className:"comboselect-item-content",children:t.jsxRuntimeExports.jsx(be.default,{children:c})}),i===!0&&t.jsxRuntimeExports.jsx("span",{className:"comboselect-item-remove",onClick:b=>We(b,l),onMouseDown:b=>b.stopPropagation(),children:t.jsxRuntimeExports.jsx(et.Close,{})})]})},s=()=>E!==null&&h.current.list.length>E?t.jsxRuntimeExports.jsx("div",{className:"comboselect-overflow-item",children:t.jsxRuntimeExports.jsx("span",{className:"comboselect-item",onClick:At,children:t.jsxRuntimeExports.jsxs("span",{className:"comboselect-item-content",children:["+",h.current.list.length-E]})})}):null,r=u.map((l,n)=>E!==null&&E<=n?null:t.jsxRuntimeExports.jsx("div",{className:"comboselect-overflow-item",children:e(l)},n));return t.jsxRuntimeExports.jsxs("div",{className:"comboselect-overflow-list",children:[r,s()]})},[u,C,a,E,A,g,ne,I,ce,F]),X=o.useMemo(()=>{let e=$||Fe.current;return _&&!se&&G.current!==void 0&&(e={...e,searchKey:G.current}),gt?.(e)||e},[$,T,y,f]),xe=o.useMemo(()=>{if(!x&&!f||m!=="table")return null;const e={url:Ce,ctx:ye,search:X,method:we},s=(r,l)=>{!a&&(v(),j.includes(r))||pe([r],[l])};return t.jsxRuntimeExports.jsx("div",{className:"comboselect-table",children:t.jsxRuntimeExports.jsx(Jt.default,{...e,...re,emptyProps:Pe,check:a,radio:!a,rowKey:D,setCheck:pe,setRadio:s,checkDefaultValue:j,radioDefaultValue:j[0],refresh:y??T,autoSize:!1,refreshInside:!1,checkCount:!1,paginationType:"simple"})})},[j,y,$,T,x,f,X,D,a]),fe=o.useMemo(()=>{if(!x&&!f||!["tree","list"].includes(m))return null;const e={url:Ce,ctx:ye,params:X,method:we},s=(n,i)=>{if(!i.checked){const p={};if(p[R]=i.node[D]||"",p[g]=i.node[Ae]||"",Ne?.(p)===!1)return}if(!a&&(v(),!wt&&j.includes(i.node?.key)))return;let c=i.checkedNodes;if(a||n?.length&&(c=[i.node]),a){const p=es.ArrayToObject("key",c);Array.from(H.current.keys()).forEach(K=>{n.includes(K)||H.current.delete(K)}),n.forEach(K=>{const he=String(K);p[he]&&H.current.set(he,p[he])}),c=Array.from(H.current.values())}pe(n,c)},r=n=>k?.titleRender?k.titleRender(n):qe?qe(n):n.title,l=z("comboselect-tree",{"comboselect-list":m==="list","comboselect-list-single":m==="list"&&!a});return t.jsxRuntimeExports.jsx("div",{className:l,children:t.jsxRuntimeExports.jsx(Qt.default,{blockNode:!0,...e,...k,wrapperStyle:{position:"static"},emptyProps:{size:"small",...Pe},replaceFields:_e,checkable:a,radioable:!a,showRadio:!1,selectable:m!=="list",loadedKeys:ue,checkedKeys:j,onCheck:s,onSelect:Ft,titleRender:r,refresh:y??T,loadingNode:t.jsxRuntimeExports.jsxs("div",{className:"loading-node-content",children:[t.jsxRuntimeExports.jsx("div",{className:"loading-icon",children:t.jsxRuntimeExports.jsx(is.LoadingF,{})}),w({id:"searching"})]})})})},[j,y,$,T,x,f,ue,m,X,a]),Y=o.useMemo(()=>t.jsxRuntimeExports.jsxs("div",{className:"comboselect-wrapper",ref:N,onClick:Mt,children:[t.jsxRuntimeExports.jsx("div",{className:z("comboselect-overflow",!a&&"comboselect-overflow-single"),children:Ye}),!x&&t.jsxRuntimeExports.jsx("span",{className:"comboselect-arrow",children:t.jsxRuntimeExports.jsx(Bt.Down,{})}),q&&t.jsxRuntimeExports.jsx("span",{className:"comboselect-clear",onClick:_t,children:t.jsxRuntimeExports.jsx(Ut.CloseCircleF,{})}),!u?.length&&t.jsxRuntimeExports.jsx("span",{className:"comboselect-placeholder",children:je??w({id:"pleaseSelect"})})]}),[u,Ye,a,q,x,je]),It=()=>Te||ke?t.jsxRuntimeExports.jsx(ns.default,{label:Te,required:ke,...yt}):null,Vt=()=>t.jsxRuntimeExports.jsx("div",{ref:U,className:`comboselect-dropdown-wrapper ${_?"show-search":""} mode-${m}`,children:t.jsxRuntimeExports.jsxs("div",{style:Ge(),className:`${d.$prefixCls}-scrollbar-small dropdown-content`,children:[_&&Je(),m==="table"?xe:fe,f&&Xe(),ge&&Qe()]})}),Ze=()=>{const e=()=>u.map((s,r)=>{if(E!==null&&E>r)return null;let l=s[g];return Le&&(l=Le(s)),t.jsxRuntimeExports.jsxs("div",{className:"comboselect-more-item",children:[t.jsxRuntimeExports.jsx("span",{className:"comboselect-more-item-text",children:t.jsxRuntimeExports.jsx(be.default,{children:l})}),t.jsxRuntimeExports.jsx("span",{className:"comboselect-more-item-remove",onClick:n=>We(n,s),children:t.jsxRuntimeExports.jsx(et.Close,{})})]},r)});return t.jsxRuntimeExports.jsxs("div",{className:"comboselect-more-wrapper",children:[t.jsxRuntimeExports.jsx("span",{className:"comboselect-more-title",children:t.jsxRuntimeExports.jsx("span",{children:w({id:"more"})})}),t.jsxRuntimeExports.jsx("div",{className:"comboselect-more-content",children:e()})]})},Ht=o.useMemo(()=>t.jsxRuntimeExports.jsx(Xt.Dropdown,{overlay:Vt(),visible:f,placement:dt,trigger:["click"],overlayClassName:z(`${d.$prefixCls}-comboselect-dropdown`,mt),getPopupContainer:St,children:t.jsxRuntimeExports.jsx(st.Popover,{visible:M,destroyTooltipOnHide:!0,placement:"rightTop",content:Ze(),onVisibleChange:()=>L(!1),overlayClassName:`${d.$prefixCls}-comboselect-more-popover`,children:Y})}),[f,j,B,y,$,P,T,q,oe,Oe,De,M,ue,C,te,Y,u]),Wt=o.useMemo(()=>t.jsxRuntimeExports.jsxs(t.jsxRuntimeExports.Fragment,{children:[t.jsxRuntimeExports.jsx(st.Popover,{visible:M,destroyTooltipOnHide:!0,placement:"rightTop",content:Ze(),onVisibleChange:()=>L(!1),overlayClassName:`${d.$prefixCls}-comboselect-more-popover`,children:Y}),t.jsxRuntimeExports.jsxs("div",{className:"comboselect-non-popup-content",children:[_&&Je(),m==="table"?xe:fe,Xe(),ge&&Qe()]})]}),[j,B,y,$,P,q,oe,Oe,De,C,te,xe,fe,Y,M,u]);return t.jsxRuntimeExports.jsxs("div",{className:Kt(),style:it,ref:me,children:[It(),x?Wt:Ht,x?null:t.jsxRuntimeExports.jsx(ls.default,{error:Se,helperText:oe,hideErrorDom:vt})]})};exports.ComboSelect=rt;exports.default=rt;
|
|
2
2
|
//# sourceMappingURL=index.js.map
|
|
@@ -18,7 +18,7 @@ export type { TableProps, TreeProps };
|
|
|
18
18
|
export type SelectOpt = {
|
|
19
19
|
disabled?: boolean;
|
|
20
20
|
closable?: boolean;
|
|
21
|
-
[key: string]:
|
|
21
|
+
[key: string]: unknown;
|
|
22
22
|
};
|
|
23
23
|
export type SelectedOptions = Array<SelectOpt>;
|
|
24
24
|
export type { TreeNodeProps };
|
|
@@ -107,7 +107,7 @@ export interface ComboSelectProps extends HelperTextDetailProps {
|
|
|
107
107
|
realTimeSearch?: boolean;
|
|
108
108
|
/**参数处理回调*/
|
|
109
109
|
paramsCallback?: (params: {
|
|
110
|
-
[name: string]:
|
|
110
|
+
[name: string]: unknown;
|
|
111
111
|
}) => any;
|
|
112
112
|
/**路径字段*/
|
|
113
113
|
fullPathKey?: string;
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
export declare const getReplaceField: (mode: string, repl: Record<string, unknown>, tableP?: Record<string,
|
|
1
|
+
export declare const getReplaceField: (mode: string, repl: Record<string, unknown>, tableP?: Record<string, unknown>, treeP?: Record<string, unknown>) => Record<string, unknown>;
|
|
2
2
|
export declare const toArray: (list: unknown) => unknown[];
|
|
3
3
|
export declare const isRemoteLoad: (mode: string, props?: {
|
|
4
|
-
data?:
|
|
5
|
-
treeData?:
|
|
4
|
+
data?: unknown;
|
|
5
|
+
treeData?: unknown;
|
|
6
6
|
}) => boolean;
|
|
7
7
|
export declare const getOverlaySize: (mode: string, isRemoteLoad?: boolean, maxHeight?: number, height?: number) => {
|
|
8
8
|
height: string;
|
package/lib/ComboSelect/utils.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const y=(t,r,e,n)=>{let l={};return t==="tree"?l=n?.replaceFields:l=e?.replaceFields,{...r,...l}},f=t=>t?Array.isArray(t)?t:JSON.stringify(t)==="{}"?[]:[t]:[],h=(t,r)=>t==="table"?!(r&&Array.isArray(r.data)):!(r&&Array.isArray(r.treeData)),g=(t,r=!1,e,n)=>{const i=`${e||254}px`,s=`${e||232}px`,a=`${e||338}px`,o=`${e||304}px`,u=document.documentElement.clientHeight,c=n!==void 0?"height":"maxHeight";return t==="tree"?u<=720?r?{height:i}:{[c]:i}:r?{height:a}:{[c]:a}:t==="list"?u<=720?r?{[c]:s}:{[c]:s}:r?{[c]:o}:{[c]:o}:{height:`${e??n??380}px`}};function d(t,r){let e;return function(...n){e&&clearTimeout(e),e=setTimeout(()=>{t.apply(this,n)},r)}}const S=(t,r)=>{let e=t;const n=e.matches||e.webkitMatchesSelector||e.mozMatchesSelector||e.msMatchesSelector;for(;e&&!n.call(e,r);)e=e.parentElement;return e};exports.closest=S;exports.debounce=d;exports.getOverlaySize=g;exports.getReplaceField=y;exports.isRemoteLoad=h;exports.toArray=f;
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const y=(t,r,e,n)=>{let l={};return t==="tree"?l=n?.replaceFields??{}:l=e?.replaceFields??{},{...r,...l}},f=t=>t?Array.isArray(t)?t:JSON.stringify(t)==="{}"?[]:[t]:[],h=(t,r)=>t==="table"?!(r&&Array.isArray(r.data)):!(r&&Array.isArray(r.treeData)),g=(t,r=!1,e,n)=>{const i=`${e||254}px`,s=`${e||232}px`,a=`${e||338}px`,o=`${e||304}px`,u=document.documentElement.clientHeight,c=n!==void 0?"height":"maxHeight";return t==="tree"?u<=720?r?{height:i}:{[c]:i}:r?{height:a}:{[c]:a}:t==="list"?u<=720?r?{[c]:s}:{[c]:s}:r?{[c]:o}:{[c]:o}:{height:`${e??n??380}px`}};function d(t,r){let e;return function(...n){e&&clearTimeout(e),e=setTimeout(()=>{t.apply(this,n)},r)}}const S=(t,r)=>{let e=t;const n=e.matches||e.webkitMatchesSelector||e.mozMatchesSelector||e.msMatchesSelector;for(;e&&!n.call(e,r);)e=e.parentElement;return e};exports.closest=S;exports.debounce=d;exports.getOverlaySize=g;exports.getReplaceField=y;exports.isRemoteLoad=h;exports.toArray=f;
|
|
2
2
|
//# sourceMappingURL=utils.js.map
|