@para-ui/core 5.0.0-beta.12 → 5.0.0-beta.14
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/codemods/modal-onCancel-to-onDismiss.js +69 -0
- package/es/AlignBox/component.json +89 -0
- package/es/AlignBox/index.css +1 -1
- package/es/AlignBox/index.d.ts +6 -2
- package/es/AlignBox/index.js +1 -1
- package/es/AlignBox/style/index.css +1 -1
- package/es/Anchor/anchorMenu/index.d.ts +2 -1
- package/es/Anchor/anchorMenu/index.js +36 -33
- package/es/Anchor/component.json +130 -0
- package/es/Anchor/index.js +50 -47
- package/es/Anchor/type.d.ts +8 -4
- package/es/Argv/component.json +216 -0
- package/es/Argv/index.d.ts +5 -6
- package/es/AutoBox/component.json +133 -0
- package/es/AutoBox/index.d.ts +3 -3
- package/es/AutoBox/index.js +1 -1
- package/es/AutoBox/protal.d.ts +2 -2
- package/es/AutoBox/protal.js +32 -29
- package/es/AutoButton/component.json +109 -0
- package/es/AutoButton/index.js +1 -1
- package/es/AutoTips/autoTipsMultiline/index.d.ts +1 -1
- package/es/AutoTips/autoTipsMultiline/index.js +1 -1
- package/es/AutoTips/component.json +121 -0
- package/es/Badge/component.json +92 -0
- package/es/Breadcrumbs/component.json +142 -0
- package/es/Breadcrumbs/index.js +1 -1
- package/es/Button/SplitButton.d.ts +2 -2
- package/es/Button/component.json +168 -0
- package/es/Button/index.js +44 -44
- package/es/ButtonGroup/component.json +132 -0
- package/es/ButtonGroup/index.d.ts +1 -1
- package/es/Card/component.json +162 -0
- package/es/Card/index.d.ts +2 -2
- package/es/Card/index.js +2 -2
- package/es/Carousel/component.json +142 -0
- package/es/Carousel/index.d.ts +1 -1
- package/es/Cascader/Cascader.js +188 -180
- package/es/Cascader/component.json +196 -0
- package/es/Cascader/hooks/useEntities.js +7 -7
- package/es/Cascader/interface.d.ts +1 -0
- package/es/Cascader/utils/commonUtil.d.ts +1 -1
- package/es/Cascader/utils/commonUtil.js +16 -16
- package/es/Cascader/utils/treeUtil.d.ts +14 -5
- package/es/Cascader/utils/treeUtil.js +1 -1
- package/es/Checkbox/component.json +138 -0
- package/es/CheckboxGroup/component.json +152 -0
- package/es/CodeEditor/component.json +189 -0
- package/es/CodeEditor/index.d.ts +10 -9
- package/es/Collapse/component.json +166 -0
- package/es/Collapse/index.d.ts +1 -1
- package/es/Collapse/index.js +41 -33
- 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 +299 -287
- package/es/ComboSelect/interface.d.ts +6 -3
- 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.d.ts +0 -8
- package/es/DatePicker/generatePicker/generateRangePicker.js +73 -65
- package/es/DatePicker/generatePicker/generateSinglePicker.js +1 -1
- package/es/DatePicker/generatePicker/index.d.ts +11 -4
- package/es/Descriptions/component.json +142 -0
- package/es/Descriptions/index.d.ts +1 -1
- package/es/Desktop/component.json +171 -0
- package/es/DragVerify/component.json +114 -0
- package/es/DragVerify/index.js +19 -19
- package/es/Drawer/component.json +200 -0
- package/es/Drawer/index.js +86 -86
- package/es/Drawer/interface.d.ts +1 -1
- package/es/Drawer/util.d.ts +1 -6
- package/es/Drawer/util.js +9 -6
- package/es/Dropdown/component.json +147 -0
- package/es/DynamicMultiBox/component.json +278 -0
- package/es/DynamicMultiBox/formItem.d.ts +1 -1
- package/es/DynamicMultiBox/rowForm.d.ts +2 -2
- package/es/Empty/component.json +123 -0
- package/es/Empty/index.css +1 -1
- package/es/Empty/index.d.ts +2 -2
- package/es/Empty/index.js +27 -26
- package/es/Empty/style/index.css +1 -1
- package/es/FieldForm/FieldFormItem/MemoInput.d.ts +2 -2
- package/es/FieldForm/FieldFormItem/index.d.ts +6 -6
- package/es/FieldForm/Form.d.ts +2 -2
- package/es/FieldForm/FormList.d.ts +2 -2
- package/es/FieldForm/component.json +196 -0
- package/es/FieldForm/context.d.ts +5 -1
- package/es/FieldForm/context.js +2 -2
- package/es/FieldForm/hooks/useForm.d.ts +4 -3
- package/es/FieldForm/hooks/useFormInstance.d.ts +1 -1
- package/es/FieldForm/hooks/useFormItemStatus.d.ts +9 -5
- package/es/FieldForm/hooks/useFormItemStatus.js +2 -2
- package/es/FieldForm/hooks/useItemRef.d.ts +1 -1
- package/es/FieldForm/hooks/useItemRef.js +6 -6
- package/es/Form/component.json +161 -0
- package/es/Form/index.d.ts +52 -49
- package/es/FormItem/compoments/defaultCompoments/index.d.ts +5 -5
- package/es/FormItem/compoments/defaultCompoments/index.js +12 -11
- package/es/FormItem/compoments/formCheckboxGroup/index.d.ts +2 -2
- package/es/FormItem/compoments/formFile/index.js +8 -8
- package/es/FormItem/compoments/formRadioGroup/index.d.ts +1 -1
- package/es/FormItem/compoments/formSelect/index.d.ts +1 -1
- package/es/FormItem/component.json +171 -0
- package/es/FormItem/index.d.ts +5 -5
- package/es/FormItem/index.js +23 -23
- package/es/FormItem/itemType.js +1 -1
- package/es/FunctionModal/component.json +197 -0
- package/es/FunctionModal/dialog.d.ts +1 -1
- package/es/FunctionModal/modalContext.d.ts +4 -1
- package/es/Help/component.json +118 -0
- package/es/HelperText/component.json +126 -0
- package/es/Image/component.json +165 -0
- package/es/InputCode/component.json +191 -0
- package/es/InputCode/index.d.ts +2 -2
- package/es/InputLang/component.json +205 -0
- package/es/InputLang/index.js +1 -1
- package/es/InputNumber/component.json +162 -0
- package/es/Label/component.json +126 -0
- package/es/Label/index.d.ts +2 -2
- package/es/Loading/component.json +91 -0
- package/es/Menu/component.json +180 -0
- package/es/Message/component.json +246 -0
- package/es/Message/index.d.ts +2 -2
- package/es/Message/index.js +2 -2
- package/es/Modal/Confirm/index.d.ts +1 -1
- package/es/Modal/Confirm/index.js +81 -75
- package/es/Modal/component.json +277 -0
- package/es/Modal/index.d.ts +97 -6
- package/es/Modal/index.js +174 -122
- package/es/Modal/interface.d.ts +1 -0
- package/es/MultiBox/component.json +216 -0
- package/es/MultiBox/index.js +19 -14
- package/es/Notification/component.json +184 -0
- package/es/OperateBtn/component.json +134 -0
- package/es/OperateBtn/index.d.ts +3 -3
- package/es/PageHeader/component.json +112 -0
- package/es/Pagination/component.json +181 -0
- package/es/Pagination/index.js +15 -15
- package/es/PasswordRules/component.json +105 -0
- package/es/PasswordRules/index.d.ts +4 -4
- package/es/PopConfirm/component.json +227 -0
- package/es/PopConfirm/index.d.ts +1 -1
- package/es/PopConfirm/index.js +1 -1
- package/es/PopMenu/component.json +131 -0
- package/es/PopMenu/hooks.d.ts +1 -1
- package/es/PopMenu/index.js +8 -8
- package/es/Popover/component.json +165 -0
- package/es/Popover/index.js +1 -1
- package/es/Progress/component.json +161 -0
- package/es/Prompt/component.json +144 -0
- package/es/Querying/component.json +96 -0
- package/es/Querying/index.css +1 -1
- package/es/Querying/index.d.ts +2 -2
- package/es/Querying/index.js +20 -19
- package/es/Querying/style/index.css +1 -1
- package/es/QuickReply/component.json +129 -0
- package/es/QuickReply/index.d.ts +1 -1
- package/es/Radio/component.json +136 -0
- package/es/RadioGroup/component.json +149 -0
- package/es/RangeInput/component.json +198 -0
- package/es/RangeInput/index.js +1 -1
- package/es/Result/component.json +104 -0
- package/es/ScrollBar/component.json +115 -0
- package/es/Search/component.json +177 -0
- package/es/Search/index.d.ts +1 -1
- package/es/Select/component.json +244 -0
- package/es/Select/index.js +113 -113
- package/es/SelectInput/component.json +184 -0
- package/es/Selector/component.json +203 -0
- package/es/Selector/index.js +28 -27
- package/es/Selector/interface.d.ts +1 -1
- package/es/Selector/selectorMain/index.js +2 -2
- package/es/Selector/selectorNode/index.js +1 -1
- package/es/Selector/util.d.ts +2 -2
- package/es/SelectorPicker/component.json +179 -0
- package/es/SelectorPicker/index.d.ts +5 -5
- package/es/SelectorPicker/index.js +15 -15
- package/es/SingleBox/component.json +151 -0
- package/es/SingleBox/index.d.ts +2 -2
- package/es/Slider/component.json +181 -0
- package/es/SortBox/component.json +108 -0
- package/es/Status/component.json +104 -0
- package/es/Stepper/component.json +129 -0
- package/es/Stepper/index.d.ts +2 -2
- package/es/Switch/component.json +207 -0
- package/es/Switch/index.css +1 -1
- package/es/Switch/index.d.ts +3 -2
- package/es/Switch/index.js +60 -59
- package/es/Switch/style/index.css +1 -1
- package/es/Table/component.json +547 -0
- package/es/Table/index.d.ts +2 -2
- package/es/Table/index.js +414 -414
- package/es/Table/interface.d.ts +6 -0
- package/es/Tabs/component.json +227 -0
- package/es/Tag/component.json +221 -0
- package/es/Tag/index.css +1 -1
- package/es/Tag/index.d.ts +1 -1
- package/es/Tag/index.js +20 -20
- package/es/Tag/style/index.css +1 -1
- package/es/TextEditor/component.json +186 -0
- package/es/TextEditor/index.d.ts +5 -5
- package/es/TextField/component.json +290 -0
- package/es/TextField/index.d.ts +2 -2
- package/es/TimePicker/component.json +176 -0
- package/es/Timeline/component.json +110 -0
- package/es/Title/component.json +156 -0
- package/es/ToggleButton/component.json +153 -0
- package/es/Tooltip/component.json +176 -0
- package/es/Tooltip/index.js +74 -63
- package/es/Tooltip/interface.d.ts +14 -1
- package/es/Tooltip/utils.js +6 -6
- package/es/Transfer/component.json +157 -0
- package/es/Tree/component.json +512 -0
- package/es/Upload/component.json +450 -0
- package/es/Utils/type.d.ts +0 -2
- package/es/index.d.ts +2 -0
- package/es/index.js +1 -1
- package/es/locale/en_US.d.ts +361 -0
- package/es/locale/en_US.js +364 -0
- package/es/locale/index.d.ts +1 -723
- package/es/locale/index2.js +10 -0
- package/es/locale/zh_CN.d.ts +361 -0
- package/es/locale/zh_CN.js +364 -0
- package/lib/AlignBox/component.json +89 -0
- package/lib/AlignBox/index.css +1 -1
- package/lib/AlignBox/index.d.ts +6 -2
- package/lib/AlignBox/index.js +1 -1
- package/lib/AlignBox/style/index.css +1 -1
- package/lib/Anchor/anchorMenu/index.d.ts +2 -1
- package/lib/Anchor/anchorMenu/index.js +1 -1
- package/lib/Anchor/component.json +130 -0
- package/lib/Anchor/index.js +1 -1
- package/lib/Anchor/type.d.ts +8 -4
- package/lib/Argv/component.json +216 -0
- package/lib/Argv/index.d.ts +5 -6
- package/lib/AutoBox/component.json +133 -0
- package/lib/AutoBox/index.d.ts +3 -3
- package/lib/AutoBox/index.js +1 -1
- package/lib/AutoBox/protal.d.ts +2 -2
- package/lib/AutoBox/protal.js +1 -1
- package/lib/AutoButton/component.json +109 -0
- package/lib/AutoButton/index.js +1 -1
- package/lib/AutoTips/autoTipsMultiline/index.d.ts +1 -1
- package/lib/AutoTips/autoTipsMultiline/index.js +1 -1
- package/lib/AutoTips/component.json +121 -0
- package/lib/Badge/component.json +92 -0
- package/lib/Breadcrumbs/component.json +142 -0
- package/lib/Breadcrumbs/index.js +1 -1
- package/lib/Button/SplitButton.d.ts +2 -2
- package/lib/Button/component.json +168 -0
- package/lib/Button/index.js +1 -1
- package/lib/ButtonGroup/component.json +132 -0
- package/lib/ButtonGroup/index.d.ts +1 -1
- package/lib/Card/component.json +162 -0
- package/lib/Card/index.d.ts +2 -2
- package/lib/Card/index.js +1 -1
- package/lib/Carousel/component.json +142 -0
- package/lib/Carousel/index.d.ts +1 -1
- package/lib/Cascader/Cascader.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/CodeEditor/component.json +189 -0
- package/lib/CodeEditor/index.d.ts +10 -9
- package/lib/Collapse/component.json +166 -0
- package/lib/Collapse/index.d.ts +1 -1
- package/lib/Collapse/index.js +1 -1
- package/lib/CollapseBox/component.json +84 -0
- package/lib/CollapseLayout/component.json +155 -0
- package/lib/ColorPicker/component.json +142 -0
- package/lib/ComboSelect/component.json +181 -0
- package/lib/ComboSelect/index.js +1 -1
- package/lib/ComboSelect/interface.d.ts +6 -3
- 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.d.ts +0 -8
- package/lib/DatePicker/generatePicker/generateRangePicker.js +1 -1
- package/lib/DatePicker/generatePicker/generateSinglePicker.js +1 -1
- package/lib/DatePicker/generatePicker/index.d.ts +11 -4
- package/lib/Descriptions/component.json +142 -0
- package/lib/Descriptions/index.d.ts +1 -1
- package/lib/Desktop/component.json +171 -0
- package/lib/DragVerify/component.json +114 -0
- package/lib/DragVerify/index.js +1 -1
- package/lib/Drawer/component.json +200 -0
- package/lib/Drawer/index.js +1 -1
- package/lib/Drawer/interface.d.ts +1 -1
- package/lib/Drawer/util.d.ts +1 -6
- package/lib/Drawer/util.js +1 -1
- package/lib/Dropdown/component.json +147 -0
- package/lib/DynamicMultiBox/component.json +278 -0
- package/lib/DynamicMultiBox/formItem.d.ts +1 -1
- package/lib/DynamicMultiBox/rowForm.d.ts +2 -2
- package/lib/Empty/component.json +123 -0
- package/lib/Empty/index.css +1 -1
- package/lib/Empty/index.d.ts +2 -2
- package/lib/Empty/index.js +1 -1
- package/lib/Empty/style/index.css +1 -1
- package/lib/FieldForm/FieldFormItem/MemoInput.d.ts +2 -2
- package/lib/FieldForm/FieldFormItem/index.d.ts +6 -6
- package/lib/FieldForm/Form.d.ts +2 -2
- package/lib/FieldForm/FormList.d.ts +2 -2
- package/lib/FieldForm/component.json +196 -0
- package/lib/FieldForm/context.d.ts +5 -1
- package/lib/FieldForm/context.js +1 -1
- package/lib/FieldForm/hooks/useForm.d.ts +4 -3
- package/lib/FieldForm/hooks/useFormInstance.d.ts +1 -1
- package/lib/FieldForm/hooks/useFormItemStatus.d.ts +9 -5
- package/lib/FieldForm/hooks/useFormItemStatus.js +1 -1
- package/lib/FieldForm/hooks/useItemRef.d.ts +1 -1
- package/lib/FieldForm/hooks/useItemRef.js +1 -1
- package/lib/Form/component.json +161 -0
- package/lib/Form/index.d.ts +52 -49
- package/lib/FormItem/compoments/defaultCompoments/index.d.ts +5 -5
- package/lib/FormItem/compoments/defaultCompoments/index.js +1 -1
- package/lib/FormItem/compoments/formCheckboxGroup/index.d.ts +2 -2
- package/lib/FormItem/compoments/formFile/index.js +1 -1
- package/lib/FormItem/compoments/formRadioGroup/index.d.ts +1 -1
- package/lib/FormItem/compoments/formSelect/index.d.ts +1 -1
- package/lib/FormItem/component.json +171 -0
- package/lib/FormItem/index.d.ts +5 -5
- package/lib/FormItem/index.js +1 -1
- package/lib/FormItem/itemType.js +1 -1
- package/lib/FunctionModal/component.json +197 -0
- package/lib/FunctionModal/dialog.d.ts +1 -1
- package/lib/FunctionModal/modalContext.d.ts +4 -1
- package/lib/Help/component.json +118 -0
- package/lib/HelperText/component.json +126 -0
- package/lib/Image/component.json +165 -0
- package/lib/InputCode/component.json +191 -0
- package/lib/InputCode/index.d.ts +2 -2
- package/lib/InputLang/component.json +205 -0
- package/lib/InputLang/index.js +1 -1
- package/lib/InputNumber/component.json +162 -0
- package/lib/Label/component.json +126 -0
- package/lib/Label/index.d.ts +2 -2
- package/lib/Loading/component.json +91 -0
- package/lib/Menu/component.json +180 -0
- package/lib/Message/component.json +246 -0
- package/lib/Message/index.d.ts +2 -2
- package/lib/Message/index.js +1 -1
- package/lib/Modal/Confirm/index.d.ts +1 -1
- package/lib/Modal/Confirm/index.js +1 -1
- package/lib/Modal/component.json +277 -0
- package/lib/Modal/index.d.ts +97 -6
- package/lib/Modal/index.js +1 -1
- package/lib/Modal/interface.d.ts +1 -0
- package/lib/MultiBox/component.json +216 -0
- package/lib/MultiBox/index.js +1 -1
- package/lib/Notification/component.json +184 -0
- package/lib/OperateBtn/component.json +134 -0
- package/lib/OperateBtn/index.d.ts +3 -3
- package/lib/PageHeader/component.json +112 -0
- package/lib/Pagination/component.json +181 -0
- package/lib/Pagination/index.js +1 -1
- package/lib/PasswordRules/component.json +105 -0
- package/lib/PasswordRules/index.d.ts +4 -4
- package/lib/PopConfirm/component.json +227 -0
- package/lib/PopConfirm/index.d.ts +1 -1
- package/lib/PopConfirm/index.js +1 -1
- package/lib/PopMenu/component.json +131 -0
- package/lib/PopMenu/hooks.d.ts +1 -1
- package/lib/PopMenu/index.js +1 -1
- package/lib/Popover/component.json +165 -0
- package/lib/Popover/index.js +1 -1
- package/lib/Progress/component.json +161 -0
- package/lib/Prompt/component.json +144 -0
- package/lib/Querying/component.json +96 -0
- package/lib/Querying/index.css +1 -1
- package/lib/Querying/index.d.ts +2 -2
- package/lib/Querying/index.js +1 -1
- package/lib/Querying/style/index.css +1 -1
- package/lib/QuickReply/component.json +129 -0
- package/lib/QuickReply/index.d.ts +1 -1
- package/lib/Radio/component.json +136 -0
- package/lib/RadioGroup/component.json +149 -0
- package/lib/RangeInput/component.json +198 -0
- package/lib/RangeInput/index.js +1 -1
- package/lib/Result/component.json +104 -0
- package/lib/ScrollBar/component.json +115 -0
- package/lib/Search/component.json +177 -0
- package/lib/Search/index.d.ts +1 -1
- package/lib/Select/component.json +244 -0
- package/lib/Select/index.js +1 -1
- package/lib/SelectInput/component.json +184 -0
- package/lib/Selector/component.json +203 -0
- package/lib/Selector/index.js +1 -1
- package/lib/Selector/interface.d.ts +1 -1
- package/lib/Selector/selectorMain/index.js +1 -1
- package/lib/Selector/selectorNode/index.js +1 -1
- package/lib/Selector/util.d.ts +2 -2
- package/lib/SelectorPicker/component.json +179 -0
- package/lib/SelectorPicker/index.d.ts +5 -5
- package/lib/SelectorPicker/index.js +1 -1
- package/lib/SingleBox/component.json +151 -0
- package/lib/SingleBox/index.d.ts +2 -2
- package/lib/Slider/component.json +181 -0
- package/lib/SortBox/component.json +108 -0
- package/lib/Status/component.json +104 -0
- package/lib/Stepper/component.json +129 -0
- package/lib/Stepper/index.d.ts +2 -2
- package/lib/Switch/component.json +207 -0
- package/lib/Switch/index.css +1 -1
- package/lib/Switch/index.d.ts +3 -2
- package/lib/Switch/index.js +1 -1
- package/lib/Switch/style/index.css +1 -1
- package/lib/Table/component.json +547 -0
- package/lib/Table/index.d.ts +2 -2
- package/lib/Table/index.js +1 -1
- package/lib/Table/interface.d.ts +6 -0
- package/lib/Tabs/component.json +227 -0
- package/lib/Tag/component.json +221 -0
- package/lib/Tag/index.css +1 -1
- package/lib/Tag/index.d.ts +1 -1
- package/lib/Tag/index.js +1 -1
- package/lib/Tag/style/index.css +1 -1
- package/lib/TextEditor/component.json +186 -0
- package/lib/TextEditor/index.d.ts +5 -5
- package/lib/TextField/component.json +290 -0
- package/lib/TextField/index.d.ts +2 -2
- package/lib/TimePicker/component.json +176 -0
- package/lib/Timeline/component.json +110 -0
- package/lib/Title/component.json +156 -0
- package/lib/ToggleButton/component.json +153 -0
- package/lib/Tooltip/component.json +176 -0
- package/lib/Tooltip/index.js +1 -1
- package/lib/Tooltip/interface.d.ts +14 -1
- package/lib/Tooltip/utils.js +1 -1
- package/lib/Transfer/component.json +157 -0
- package/lib/Tree/component.json +512 -0
- package/lib/Upload/component.json +450 -0
- package/lib/Utils/type.d.ts +0 -2
- package/lib/index.d.ts +2 -0
- package/lib/index.js +1 -1
- package/lib/locale/en_US.d.ts +361 -0
- package/lib/locale/en_US.js +2 -0
- package/lib/locale/index.d.ts +1 -723
- package/lib/locale/index2.js +2 -0
- package/lib/locale/zh_CN.d.ts +361 -0
- package/lib/locale/zh_CN.js +2 -0
- package/package.json +10 -3
- /package/es/{Utils/Hooks → Hooks}/useResizeObserver.d.ts +0 -0
- /package/es/{Utils/Hooks → Hooks}/useResizeObserver.js +0 -0
- /package/lib/{Utils/Hooks → Hooks}/useResizeObserver.d.ts +0 -0
- /package/lib/{Utils/Hooks → Hooks}/useResizeObserver.js +0 -0
|
@@ -0,0 +1,227 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "PopConfirm",
|
|
3
|
+
"category": "Feedback",
|
|
4
|
+
"description": "点击元素,弹出气泡确认框,用于危险操作二次确认",
|
|
5
|
+
"semantic": {
|
|
6
|
+
"intent": [
|
|
7
|
+
"二次确认",
|
|
8
|
+
"防止误操作",
|
|
9
|
+
"轻量级确认"
|
|
10
|
+
],
|
|
11
|
+
"useCases": [
|
|
12
|
+
"删除操作",
|
|
13
|
+
"风险操作",
|
|
14
|
+
"状态变更"
|
|
15
|
+
],
|
|
16
|
+
"riskLevel": "high"
|
|
17
|
+
},
|
|
18
|
+
"variants": {
|
|
19
|
+
"default": {
|
|
20
|
+
"meaning": "默认样式"
|
|
21
|
+
}
|
|
22
|
+
},
|
|
23
|
+
"states": [
|
|
24
|
+
"visible",
|
|
25
|
+
"hidden",
|
|
26
|
+
"loading"
|
|
27
|
+
],
|
|
28
|
+
"idealProps": {
|
|
29
|
+
"title": {
|
|
30
|
+
"type": "string | ReactNode",
|
|
31
|
+
"description": "确认框标题(src/Popconfirm/index.tsx:117 `title && <div>` 实证:未传时不渲染标题区域)"
|
|
32
|
+
},
|
|
33
|
+
"content": {
|
|
34
|
+
"type": "string | ReactNode",
|
|
35
|
+
"description": "确认框正文内容(src/Popconfirm/index.tsx:119 `content && <div>` 实证:独立于 title 渲染,支持 ReactNode)"
|
|
36
|
+
},
|
|
37
|
+
"onOk": {
|
|
38
|
+
"type": "function",
|
|
39
|
+
"signature": "() => void",
|
|
40
|
+
"description": "点击确认按钮的回调(src/Popconfirm/index.tsx:63 `handleOk` → `onOk?.()` 实证)。签名是 `() => void`,**不接收参数**。⚠️ onOk 调用后组件会自动调 handleClose 关闭弹框(非受控模式下)"
|
|
41
|
+
},
|
|
42
|
+
"onCancel": {
|
|
43
|
+
"type": "function",
|
|
44
|
+
"signature": "() => void",
|
|
45
|
+
"description": "点击取消按钮的回调(src/Popconfirm/index.tsx:60 `handleCancel` → `onCancel?.()` 实证)。签名是 `() => void`,**不接收参数**。onCancel 调用后同样会自动 handleClose"
|
|
46
|
+
},
|
|
47
|
+
"okText": {
|
|
48
|
+
"type": "string",
|
|
49
|
+
"default": "确定",
|
|
50
|
+
"description": "确认按钮文字(src/Popconfirm/index.tsx:170 `okText ?? intl({id:'ok'})` 实证,未传时使用 i18n 默认值)"
|
|
51
|
+
},
|
|
52
|
+
"cancelText": {
|
|
53
|
+
"type": "string",
|
|
54
|
+
"default": "取消",
|
|
55
|
+
"description": "取消按钮文字(src/Popconfirm/index.tsx:158 `cancelText ?? intl({id:'cancel'})` 实证)"
|
|
56
|
+
},
|
|
57
|
+
"okButtonProps": {
|
|
58
|
+
"type": "object",
|
|
59
|
+
"objectShape": {
|
|
60
|
+
"disabled": { "type": "boolean", "description": "禁用确认按钮" },
|
|
61
|
+
"loading": { "type": "boolean", "description": "确认按钮 loading 状态" },
|
|
62
|
+
"variant": { "type": "'contained' | 'outlined' | 'text'", "description": "按钮样式变体" },
|
|
63
|
+
"size": { "type": "'small' | 'medium' | 'large'", "description": "按钮尺寸" }
|
|
64
|
+
},
|
|
65
|
+
"description": "确认按钮属性(ButtonProps 子集)。⚠️ okButtonDanger=true 时 danger 样式优先级高于 okButtonProps.danger(src:168 `danger={okButtonDanger ?? okButtonProps?.danger}` 实证)"
|
|
66
|
+
},
|
|
67
|
+
"trigger": {
|
|
68
|
+
"type": "enum",
|
|
69
|
+
"values": [
|
|
70
|
+
"click",
|
|
71
|
+
"hover"
|
|
72
|
+
],
|
|
73
|
+
"default": "click",
|
|
74
|
+
"description": "触发方式(src/Popconfirm/index.tsx:82 解构默认值 'click' 实证)"
|
|
75
|
+
},
|
|
76
|
+
"type": {
|
|
77
|
+
"type": "enum",
|
|
78
|
+
"values": ["success", "info", "error", "warning"],
|
|
79
|
+
"default": "warning",
|
|
80
|
+
"description": "图标类型(src/Popconfirm/index.tsx:83 解构默认 'warning' 实证,`iconMapping` 字典按 type 取对应 icon)"
|
|
81
|
+
},
|
|
82
|
+
"open": {
|
|
83
|
+
"type": "boolean",
|
|
84
|
+
"default": false,
|
|
85
|
+
"description": "是否显示弹框(受控,需配合 controllable=true 才生效)。src:175 `controllable && setInOpen(open)` 实证:**单独传 open 不生效——必须同时传 controllable={true}**"
|
|
86
|
+
},
|
|
87
|
+
"controllable": {
|
|
88
|
+
"type": "boolean",
|
|
89
|
+
"default": false,
|
|
90
|
+
"description": "是否启用受控模式(src:73 `!controllable` 判断实证)。true 时内部不自动切换 inOpen,完全由 open prop 控制;false(默认) 时为非受控,点击确定/取消自动关闭"
|
|
91
|
+
},
|
|
92
|
+
"showCancel": {
|
|
93
|
+
"type": "boolean",
|
|
94
|
+
"default": true,
|
|
95
|
+
"description": "是否显示取消按钮(src:152-160 `showCancel &&` 实证)"
|
|
96
|
+
},
|
|
97
|
+
"okButtonDanger": {
|
|
98
|
+
"type": "boolean",
|
|
99
|
+
"default": false,
|
|
100
|
+
"description": "确认按钮是否显示危险(红色)样式(src:168 优先级高于 okButtonProps.danger)"
|
|
101
|
+
},
|
|
102
|
+
"countdown": {
|
|
103
|
+
"type": "boolean",
|
|
104
|
+
"default": false,
|
|
105
|
+
"description": "是否启用确认按钮倒计时(src:92-112 useEffect 实证)。倒计时进行时确认按钮 disabled,倒计时结束自动解除。搭配 countdownTime 设置时长"
|
|
106
|
+
},
|
|
107
|
+
"countdownTime": {
|
|
108
|
+
"type": "number",
|
|
109
|
+
"default": 5,
|
|
110
|
+
"description": "倒计时时长(秒,src:88 解构默认值 5 实证)。countdown=true 时生效"
|
|
111
|
+
},
|
|
112
|
+
"onClose": {
|
|
113
|
+
"type": "function",
|
|
114
|
+
"signature": "() => void",
|
|
115
|
+
"description": "弹框关闭回调(src:66-72 `handleClose` → `onClose?.()` 实证)。**非受控模式下**:确定/取消/点击外部都会触发 onClose。受控模式(controllable=true)下不触发自动关闭流程"
|
|
116
|
+
},
|
|
117
|
+
"onCountdownFinish": {
|
|
118
|
+
"type": "function",
|
|
119
|
+
"signature": "() => void",
|
|
120
|
+
"description": "倒计时完成回调(src:100 `onCountdownFinish?.()` 实证)。countdown=true 时,倒计时到 0 触发"
|
|
121
|
+
},
|
|
122
|
+
"placement": {
|
|
123
|
+
"type": "enum",
|
|
124
|
+
"values": ["top", "bottom", "left", "right", "top-start", "top-end", "bottom-start", "bottom-end"],
|
|
125
|
+
"default": "top-start",
|
|
126
|
+
"description": "弹框弹出位置(src:89 解构默认 'top-start' 实证,透传给 Tooltip placement)"
|
|
127
|
+
}
|
|
128
|
+
},
|
|
129
|
+
"do": [
|
|
130
|
+
"在执行不可逆或高风险操作前使用 PopConfirm",
|
|
131
|
+
"提供明确的标题和内容描述(title + content 分层,title 是主判断,content 是补充说明)",
|
|
132
|
+
"高危操作(如删除)使用 okButtonDanger={true} 突出危险样式,提示用户谨慎操作",
|
|
133
|
+
"需要强制用户读完提示再确认时使用 countdown={true},配合 countdownTime 控制等待时长",
|
|
134
|
+
"受控模式必须 controllable={true} + open={state} 配合使用,单独传 open 无效"
|
|
135
|
+
],
|
|
136
|
+
"dont": [
|
|
137
|
+
"滥用 PopConfirm 导致用户疲劳(非关键操作不应确认)",
|
|
138
|
+
"在 PopConfirm 中放置过多复杂内容(应使用 Modal)",
|
|
139
|
+
"不要假设 onOk/onCancel 有参数——签名是 `() => void`,无参数(src 实证)",
|
|
140
|
+
"不要单独传 open={true} 而不传 controllable={true}——非受控模式下 open prop 被忽略(src:175 实证)",
|
|
141
|
+
"不要在 actions 自定义底部按钮后还期望 onOk/onCancel 被触发——传了 actions 时默认按钮区域被完全替换"
|
|
142
|
+
],
|
|
143
|
+
"events": {
|
|
144
|
+
"onOk": {
|
|
145
|
+
"signature": "() => void",
|
|
146
|
+
"asyncSupported": false,
|
|
147
|
+
"examples": [
|
|
148
|
+
"点击确认按钮触发,非受控模式下弹框自动关闭",
|
|
149
|
+
"高危删除操作:onOk 内调 deleteItem(id) 执行删除逻辑",
|
|
150
|
+
"配合 okButtonDanger={true}:onOk 显示红色按钮,用户点击后执行危险操作"
|
|
151
|
+
],
|
|
152
|
+
"commonMistakes": [
|
|
153
|
+
"假设 onOk 接收参数(如 event)→ 签名是 () => void,无参数(src:63-65 `onOk?.()` 实证)",
|
|
154
|
+
"在 onOk 内调 setOpen(false) 手动关闭 → 非受控模式下 handleOk 已自动调 handleClose 关闭,无需手动干预",
|
|
155
|
+
"假设 async onOk 能自动等待 → PopConfirm 不支持 asyncSupported,onOk 不 await,调用立即返回"
|
|
156
|
+
]
|
|
157
|
+
},
|
|
158
|
+
"onCancel": {
|
|
159
|
+
"signature": "() => void",
|
|
160
|
+
"asyncSupported": false,
|
|
161
|
+
"examples": [
|
|
162
|
+
"点击取消按钮触发,弹框自动关闭",
|
|
163
|
+
"onCancel 内重置临时状态(如清空输入框)",
|
|
164
|
+
"showCancel=false 时 onCancel 不会被触发(取消按钮不显示)"
|
|
165
|
+
],
|
|
166
|
+
"commonMistakes": [
|
|
167
|
+
"假设 onCancel 接收 event 参数 → 签名是 () => void(src:60-62 `onCancel?.()` 实证)",
|
|
168
|
+
"把 onCancel 和 onClose 混用 → onCancel 只绑定取消按钮,onClose 在任何关闭路径后触发",
|
|
169
|
+
"传 showCancel={false} 后仍期望 onCancel 触发 → 按钮不渲染,用户无法点击触发"
|
|
170
|
+
]
|
|
171
|
+
},
|
|
172
|
+
"onClose": {
|
|
173
|
+
"signature": "() => void",
|
|
174
|
+
"asyncSupported": false,
|
|
175
|
+
"examples": [
|
|
176
|
+
"非受控模式下,确定/取消/点击外部都会触发 onClose",
|
|
177
|
+
"用于清理弹框关闭后的状态(如重置 loading 标志)",
|
|
178
|
+
"受控模式(controllable=true)下由业务方手动控制 open,onClose 作为通知回调"
|
|
179
|
+
],
|
|
180
|
+
"commonMistakes": [
|
|
181
|
+
"受控模式下期望 onClose 自动关闭弹框 → controllable=true 时 handleClose 内 setInOpen 不被调用,需业务方 setOpen(false)",
|
|
182
|
+
"假设 onClose 和 onCancel 是同一个 → onClose 是统一关闭通知,onCancel 只绑取消按钮",
|
|
183
|
+
"非受控下在 onOk 内又调 setOpen(false) 与 onClose 重复 → 非受控模式已自动关闭"
|
|
184
|
+
]
|
|
185
|
+
},
|
|
186
|
+
"onCountdownFinish": {
|
|
187
|
+
"signature": "() => void",
|
|
188
|
+
"asyncSupported": false,
|
|
189
|
+
"examples": [
|
|
190
|
+
"countdown=true 倒计时到 0 时触发,此时确认按钮解禁",
|
|
191
|
+
"用于记录用户是否耐心等待完整倒计时(埋点场景)",
|
|
192
|
+
"倒计时完成后触发提示音或动画"
|
|
193
|
+
],
|
|
194
|
+
"commonMistakes": [
|
|
195
|
+
"仅传 onCountdownFinish 而未传 countdown={true} → countdown=false 时不会启动计时,回调不触发",
|
|
196
|
+
"假设倒计时完成后弹框自动关闭 → onCountdownFinish 只是通知,不自动关闭,需在回调内手动处理",
|
|
197
|
+
"假设倒计时单位是毫秒 → countdownTime 单位是秒(src:88 默认值 5 = 5秒)"
|
|
198
|
+
]
|
|
199
|
+
}
|
|
200
|
+
},
|
|
201
|
+
"typescriptPitfalls": [
|
|
202
|
+
{
|
|
203
|
+
"issue": "onOk / onCancel 的类型声明是 Function,不是具体签名,直接用 any 会丢类型安全",
|
|
204
|
+
"wrong": "onOk={(val: any) => doDelete(val)} // onOk 无参数,val 永远是 undefined",
|
|
205
|
+
"right": "onOk={() => doDelete(id)} // 正确:() => void,id 从外部闭包获取"
|
|
206
|
+
},
|
|
207
|
+
{
|
|
208
|
+
"issue": "受控模式需同时传 controllable={true},单独传 open 无效",
|
|
209
|
+
"wrong": "<PopConfirm open={isOpen} onClose={() => setIsOpen(false)} /> // open 被忽略,非受控模式",
|
|
210
|
+
"right": "<PopConfirm open={isOpen} controllable={true} onClose={() => setIsOpen(false)} />"
|
|
211
|
+
},
|
|
212
|
+
{
|
|
213
|
+
"issue": "type 枚举控制图标,不接受 'danger' 等非法值",
|
|
214
|
+
"wrong": "<PopConfirm type='danger' /> // 'danger' 不在枚举里,iconMapping 会取 undefined",
|
|
215
|
+
"right": "<PopConfirm type='error' okButtonDanger={true} /> // 危险操作:type='error' 图标 + okButtonDanger 红色按钮"
|
|
216
|
+
},
|
|
217
|
+
{
|
|
218
|
+
"issue": "countdown 倒计时单位是秒,不是毫秒",
|
|
219
|
+
"wrong": "<PopConfirm countdown={true} countdownTime={3000} /> // 3000 秒 = 50 分钟,几乎不会结束",
|
|
220
|
+
"right": "<PopConfirm countdown={true} countdownTime={3} /> // 3 秒倒计时"
|
|
221
|
+
}
|
|
222
|
+
],
|
|
223
|
+
"mapping": {
|
|
224
|
+
"realComponent": "PopConfirm",
|
|
225
|
+
"adapter": null
|
|
226
|
+
}
|
|
227
|
+
}
|
|
@@ -59,7 +59,7 @@ export interface PopConfirmProps {
|
|
|
59
59
|
onCountdownFinish?: () => void;
|
|
60
60
|
/** 浮层渲染容器,默认body */
|
|
61
61
|
getPopupContainer?: (triggerNode: HTMLElement) => HTMLElement;
|
|
62
|
-
[name: string]:
|
|
62
|
+
[name: string]: unknown;
|
|
63
63
|
}
|
|
64
64
|
export declare const PopConfirm: FC<PopConfirmProps>;
|
|
65
65
|
export default PopConfirm;
|
package/lib/PopConfirm/index.js
CHANGED
|
@@ -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"),s=require("react"),Y=require("../node_modules/@para-ui/icons/CheckCircleF/index.js"),Z=require("../node_modules/@para-ui/icons/WarningCircle/index.js"),ee=require("../node_modules/@para-ui/icons/CloseCircleF/index.js"),ne=require("../node_modules/@para-ui/icons/WarningCircleF/index.js"),b=require("../Button/index.js"),se=require("../Tooltip/index.js"),i=require("clsx"),te=require("../GlobalContext/useFormatMessage.js"),oe=require("./lang/index.js"),f=require("../GlobalContext/constant.js"),re=require("../GlobalContext/usePopupContainer.js");;/* empty css */const ie={success:e.jsxRuntimeExports.jsx(Y.CheckCircleF,{}),warning:e.jsxRuntimeExports.jsx(ne.WarningCircleF,{}),error:e.jsxRuntimeExports.jsx(ee.CloseCircleF,{}),info:e.jsxRuntimeExports.jsx(Z.WarningCircle,{})},q=w=>{const{trigger:N="click",type:k="warning",title:t,content:c,description:j,icon:P,okText:$,cancelText:T,onOk:y,onCancel:B,okButtonProps:a,cancelButtonProps:F,placement:I="top-start",className:O,overlayClassName:M,style:S,children:_,open:l=!1,controllable:u=!1,showCancel:z=!0,bubble:W=!0,okButtonDanger:D,countdown:o,countdownTime:C=5,actions:V,onClose:p,onCountdownFinish:A,getPopupContainer:G,...H}=w,g=te.default("PopConfirm",oe.default),R=s.useRef(),J=re.default(R,G),[x,m]=s.useState(!1),r=s.useRef(),[d,h]=s.useState(C),E=s.useMemo(()=>o&&d>=1,[o,d]);s.useEffect(()=>(o&&(x?(h(C),r.current=setInterval(()=>{h(n=>n<=1?(A?.(),clearInterval(r.current),0):n-1)},1e3)):clearInterval(r.current)),()=>{clearInterval(r.current)}),[x,o]);const K=()=>{B?.(),v()},L=()=>{y?.(),v()},v=()=>{u||(m(!1),p?.())},Q=n=>{u?l&&p?.():(m(n),n||p?.())};s.useEffect(()=>{u&&m(l)},[l]);const U=()=>{const n=e.jsxRuntimeExports.jsxs(e.jsxRuntimeExports.Fragment,{children:[z&&e.jsxRuntimeExports.jsx(b.Button,{className:`${f.$prefixCls}-popconfirm-btn`,onClick:K,variant:"outlined",size:"small",...F,children:T??g({id:"cancel"})}),e.jsxRuntimeExports.jsx(b.Button,{className:`${f.$prefixCls}-popconfirm-btn`,onClick:L,variant:"contained",size:"small",...a,danger:D??a?.danger,disabled:E?!0:a?.disabled,children:E?`${d}s`:$??g({id:"ok"})})]});return e.jsxRuntimeExports.jsxs("div",{className:i("popconfirm-wrapper"),style:S,onClick:X=>{W||X.stopPropagation()},children:[e.jsxRuntimeExports.jsxs("div",{className:"popconfirm-message",children:[e.jsxRuntimeExports.jsx("span",{className:"popconfirm-message-icon",children:P||ie[k]}),e.jsxRuntimeExports.jsxs("div",{className:"popconfirm-message-body",children:[t&&e.jsxRuntimeExports.jsx("div",{className:"popconfirm-message-title",children:t}),c&&e.jsxRuntimeExports.jsx("div",{className:i("popconfirm-message-content",t?"":"without-title"),children:c}),j&&e.jsxRuntimeExports.jsx("div",{className:i("popconfirm-message-description",t||c?"":"without-title-or-content"),children:j})]})]}),e.jsxRuntimeExports.jsx("div",{className:"popconfirm-btns",children:V??n})]})};return e.jsxRuntimeExports.jsx(se.Tooltip,{...H,ref:R,trigger:N,open:x,arrow:!1,placement:I,title:U(),onVisibleChange:Q,overlayClassName:i(`${f.$prefixCls}-popconfirm`,M,O),getPopupContainer:J,children:_})};exports.PopConfirm=q;exports.default=q;
|
|
1
|
+
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});require('./index.css');const e=require("../_virtual/jsx-runtime.js"),s=require("react"),Y=require("../node_modules/@para-ui/icons/CheckCircleF/index.js"),Z=require("../node_modules/@para-ui/icons/WarningCircle/index.js"),ee=require("../node_modules/@para-ui/icons/CloseCircleF/index.js"),ne=require("../node_modules/@para-ui/icons/WarningCircleF/index.js"),b=require("../Button/index.js"),se=require("../Tooltip/index.js"),i=require("clsx"),te=require("../GlobalContext/useFormatMessage.js"),oe=require("./lang/index.js"),f=require("../GlobalContext/constant.js"),re=require("../GlobalContext/usePopupContainer.js");;/* empty css */const ie={success:e.jsxRuntimeExports.jsx(Y.CheckCircleF,{}),warning:e.jsxRuntimeExports.jsx(ne.WarningCircleF,{}),error:e.jsxRuntimeExports.jsx(ee.CloseCircleF,{}),info:e.jsxRuntimeExports.jsx(Z.WarningCircle,{})},q=w=>{const{trigger:N="click",type:k="warning",title:t,content:c,description:j,icon:P,okText:$,cancelText:T,onOk:y,onCancel:B,okButtonProps:a,cancelButtonProps:F,placement:I="top-start",className:O,overlayClassName:M,style:S,children:_,open:l=!1,controllable:u=!1,showCancel:z=!0,bubble:W=!0,okButtonDanger:D,countdown:o,countdownTime:C=5,actions:V,onClose:p,onCountdownFinish:A,getPopupContainer:G,...H}=w,g=te.default("PopConfirm",oe.default),R=s.useRef(null),J=re.default(R,G),[x,m]=s.useState(!1),r=s.useRef(),[d,h]=s.useState(C),E=s.useMemo(()=>o&&d>=1,[o,d]);s.useEffect(()=>(o&&(x?(h(C),r.current=setInterval(()=>{h(n=>n<=1?(A?.(),clearInterval(r.current),0):n-1)},1e3)):clearInterval(r.current)),()=>{clearInterval(r.current)}),[x,o]);const K=()=>{B?.(),v()},L=()=>{y?.(),v()},v=()=>{u||(m(!1),p?.())},Q=n=>{u?l&&p?.():(m(n),n||p?.())};s.useEffect(()=>{u&&m(l)},[l]);const U=()=>{const n=e.jsxRuntimeExports.jsxs(e.jsxRuntimeExports.Fragment,{children:[z&&e.jsxRuntimeExports.jsx(b.Button,{className:`${f.$prefixCls}-popconfirm-btn`,onClick:K,variant:"outlined",size:"small",...F,children:T??g({id:"cancel"})}),e.jsxRuntimeExports.jsx(b.Button,{className:`${f.$prefixCls}-popconfirm-btn`,onClick:L,variant:"contained",size:"small",...a,danger:D??a?.danger,disabled:E?!0:a?.disabled,children:E?`${d}s`:$??g({id:"ok"})})]});return e.jsxRuntimeExports.jsxs("div",{className:i("popconfirm-wrapper"),style:S,onClick:X=>{W||X.stopPropagation()},children:[e.jsxRuntimeExports.jsxs("div",{className:"popconfirm-message",children:[e.jsxRuntimeExports.jsx("span",{className:"popconfirm-message-icon",children:P||ie[k]}),e.jsxRuntimeExports.jsxs("div",{className:"popconfirm-message-body",children:[t&&e.jsxRuntimeExports.jsx("div",{className:"popconfirm-message-title",children:t}),c&&e.jsxRuntimeExports.jsx("div",{className:i("popconfirm-message-content",t?"":"without-title"),children:c}),j&&e.jsxRuntimeExports.jsx("div",{className:i("popconfirm-message-description",t||c?"":"without-title-or-content"),children:j})]})]}),e.jsxRuntimeExports.jsx("div",{className:"popconfirm-btns",children:V??n})]})};return e.jsxRuntimeExports.jsx(se.Tooltip,{...H,ref:R,trigger:N,open:x,arrow:!1,placement:I,title:U(),onVisibleChange:Q,overlayClassName:i(`${f.$prefixCls}-popconfirm`,M,O),getPopupContainer:J,children:_})};exports.PopConfirm=q;exports.default=q;
|
|
2
2
|
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "PopMenu",
|
|
3
|
+
"category": "Navigation",
|
|
4
|
+
"description": "下拉级联菜单,支持分组、子菜单嵌套和受控选中态,基于 Popover 实现",
|
|
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
|
+
"visible",
|
|
25
|
+
"hidden"
|
|
26
|
+
],
|
|
27
|
+
"idealProps": {
|
|
28
|
+
"data": {
|
|
29
|
+
"type": "PopMenuListItemProps[] | PopMenuGroupItemProps[]",
|
|
30
|
+
"description": "菜单数据源;**PopMenuListItemProps** = { name: string(必填,唯一 key); title?: string(显示文案); disabled?: boolean; disabledTip?: string; help?: string; render?: (handle: IPopMenuHandler) => ReactElement(自定义渲染); onClick?: (name, item?, path?) => void; children?: PopMenuListItemProps[](子菜单)};**PopMenuGroupItemProps** = { list: PopMenuListItemProps[] }(用于分组,混合传时未分组项自动聚合到末尾组)"
|
|
31
|
+
},
|
|
32
|
+
"direction": {
|
|
33
|
+
"type": "enum",
|
|
34
|
+
"values": ["left", "right"],
|
|
35
|
+
"default": "left",
|
|
36
|
+
"description": "弹出方向;left=右侧展开(默认 placement=bottomRight);right=左侧展开(默认 placement=bottomLeft)"
|
|
37
|
+
},
|
|
38
|
+
"onChange": {
|
|
39
|
+
"type": "(value: TPopMenuValue) => void",
|
|
40
|
+
"description": "选中项变化时的回调;**TPopMenuValue = string[]**(选中路径数组);每次点击叶子节点时触发"
|
|
41
|
+
},
|
|
42
|
+
"onClick": {
|
|
43
|
+
"type": "(name: string, item?: PopMenuListItemProps, path?: string[]) => void",
|
|
44
|
+
"description": "点击菜单项时的回调;name=当前项的 name 字段;path=从根到当前项的 name 路径数组(不含当前项)"
|
|
45
|
+
},
|
|
46
|
+
"value": {
|
|
47
|
+
"type": "TPopMenuValue",
|
|
48
|
+
"description": "当前选中的菜单路径数组(受控);**TPopMenuValue = string[]**;每个元素是对应层级的 name 值"
|
|
49
|
+
},
|
|
50
|
+
"children": {
|
|
51
|
+
"type": "ReactNode",
|
|
52
|
+
"description": "触发浮层的目标节点(包裹在内层 div 里,ref 由 PopMenu 内部管理,可传任意 ReactNode)"
|
|
53
|
+
},
|
|
54
|
+
"menuClassName": {
|
|
55
|
+
"type": "string",
|
|
56
|
+
"description": "菜单列表容器的自定义 className(src/PopMenu/index.tsx:28 interface 实证)"
|
|
57
|
+
},
|
|
58
|
+
"menuStyle": {
|
|
59
|
+
"type": "React.CSSProperties",
|
|
60
|
+
"description": "菜单列表容器的自定义样式"
|
|
61
|
+
},
|
|
62
|
+
"contentClassName": {
|
|
63
|
+
"type": "string",
|
|
64
|
+
"description": "触发节点外层 div 的自定义 className"
|
|
65
|
+
},
|
|
66
|
+
"contentStyle": {
|
|
67
|
+
"type": "React.CSSProperties",
|
|
68
|
+
"description": "触发节点外层 div 的自定义样式"
|
|
69
|
+
}
|
|
70
|
+
},
|
|
71
|
+
"do": [
|
|
72
|
+
"收纳低频操作——标准场景传 data 数组,每项必须有 name 字段(唯一 key)",
|
|
73
|
+
"Label 简短清晰,子菜单层级不超过 2 层",
|
|
74
|
+
"危险操作通过 PopMenuListItemProps.disabled + disabledTip 做防误操作提示",
|
|
75
|
+
"需要自定义菜单项(如带图标/颜色)时用 render 函数,形参 handle.closeMenu() 可手动关闭浮层"
|
|
76
|
+
],
|
|
77
|
+
"dont": [
|
|
78
|
+
"Dropdown 层级过深 (>2)——嵌套层级过多用户迷失,超过 2 层改用 Modal 表单",
|
|
79
|
+
"Dropdown 内放置过度复杂的表单",
|
|
80
|
+
"用数组下标作为 name——name 用于选中值追踪,必须全局唯一字符串"
|
|
81
|
+
],
|
|
82
|
+
"events": {
|
|
83
|
+
"onClick": {
|
|
84
|
+
"signature": "(name: string, item?: PopMenuListItemProps, path?: string[]) => void",
|
|
85
|
+
"asyncSupported": false,
|
|
86
|
+
"examples": [
|
|
87
|
+
"基本点击:onClick={(name, item) => { handleAction(name); }}",
|
|
88
|
+
"获取完整路径:onClick={(name, item, path) => { console.log([...path, name]); }} // path 是父级 name 数组,不含当前",
|
|
89
|
+
"自定义渲染中关闭浮层:render={(handle) => <div onClick={() => { doAction(); handle.closeMenu(); }}>自定义项</div>}"
|
|
90
|
+
],
|
|
91
|
+
"commonMistakes": [
|
|
92
|
+
"期望 onClick 在父节点(有 children 的项)点击时触发——有子菜单的节点展开子菜单,不触发 onClick;只有叶子节点触发",
|
|
93
|
+
"用 item.name 做显示文案——显示文案是 item.title;item.name 是唯一 key",
|
|
94
|
+
"假设 path 包含当前节点——path 只包含父级路径,不含当前点击项;完整路径是 [...path, name]"
|
|
95
|
+
]
|
|
96
|
+
},
|
|
97
|
+
"onChange": {
|
|
98
|
+
"signature": "(value: TPopMenuValue) => void",
|
|
99
|
+
"asyncSupported": false,
|
|
100
|
+
"examples": [
|
|
101
|
+
"受控选中:onChange={(val) => setValue(val)}",
|
|
102
|
+
"value 是 string[],如 ['group1', 'item2'] 表示选中了 group1 下的 item2"
|
|
103
|
+
],
|
|
104
|
+
"commonMistakes": [
|
|
105
|
+
"假设 value 是单个字符串——TPopMenuValue = string[],即使只有一级也是数组",
|
|
106
|
+
"onClick 和 onChange 重复处理同一逻辑——onClick 含 name+item+path 更精细;onChange 只有路径数组"
|
|
107
|
+
]
|
|
108
|
+
}
|
|
109
|
+
},
|
|
110
|
+
"typescriptPitfalls": [
|
|
111
|
+
{
|
|
112
|
+
"issue": "data 中每个 item 的 name 字段必填(string),缺少会导致选中态追踪失效",
|
|
113
|
+
"wrong": "data={[{ title: '编辑' }, { title: '删除' }]} // 缺少 name 字段,TS 报错",
|
|
114
|
+
"right": "data={[{ name: 'edit', title: '编辑' }, { name: 'delete', title: '删除' }]}"
|
|
115
|
+
},
|
|
116
|
+
{
|
|
117
|
+
"issue": "TPopMenuValue 是 string[],value 和 onChange 的类型都是数组,不是单个字符串",
|
|
118
|
+
"wrong": "value='edit' onChange={(val: string) => setValue(val)} // 类型不匹配",
|
|
119
|
+
"right": "value={['edit']} onChange={(val: string[]) => setValue(val)}"
|
|
120
|
+
},
|
|
121
|
+
{
|
|
122
|
+
"issue": "PopMenuListItemProps.render 的形参是 IPopMenuHandler 对象,不是 React event",
|
|
123
|
+
"wrong": "render={(e) => <div onClick={() => e.preventDefault()}>...</div>} // e 不是事件",
|
|
124
|
+
"right": "render={(handle) => <div onClick={() => { doAction(); handle.closeMenu(); }}>...</div>} // handle.closeMenu() 关闭浮层"
|
|
125
|
+
}
|
|
126
|
+
],
|
|
127
|
+
"mapping": {
|
|
128
|
+
"realComponent": "PopMenu",
|
|
129
|
+
"adapter": null
|
|
130
|
+
}
|
|
131
|
+
}
|
package/lib/PopMenu/hooks.d.ts
CHANGED
package/lib/PopMenu/index.js
CHANGED
|
@@ -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"),r=require("clsx"),S=require("react"),m=require("../GlobalContext/constant.js"),I=require("../Popover/index.js"),d=require("./context.js"),$=require("./hooks.js");;/* empty css */const k=require("./list.js"),l=u=>{const{overlayClassName:x,data:h,children:i,menuClassName:f,menuStyle:v,contentClassName:j,contentStyle:y,value:C,onChange:g,onClick:P,path:R,...e}=u,{width:q,ref:M}=$.useComponentWidth([i]),c=S.useRef(),{handle:a,menuIndex:E}=d.usePopMenuContext(),N=()=>{const o=[],s={list:[]};return h.forEach(t=>{typeof t=="object"&&t!==null&&"list"in t?o.push(t):s.list.push(t)}),s.list?.length&&o.push(s),n.jsxRuntimeExports.jsx(n.jsxRuntimeExports.Fragment,{children:o.map((t,p)=>n.jsxRuntimeExports.jsx(k.default,{direction:e.direction,list:t.list,className:r(f,{"pop-menu-separator":p!==o.length-1}),style:v},p))})},b=()=>e.placement?e.placement:e.direction==="right"?"bottomLeft":"bottomRight";return n.jsxRuntimeExports.jsx(d.PopMenuProvider,{value:{menuIndex:E+1,path:R||[],direction:e.direction||"left",props:u,value:C||[],onChange:g||(()=>{}),onClick:P||(()=>{}),handle:{closeMenu:()=>{typeof e?.visible>"u"&&(c?.current?.close(),a&&a?.closeMenu?.())}}},children:n.jsxRuntimeExports.jsx(I.Popover,{...e,isPopover:!0,ref:c,overlayClassName:r(`${m.$prefixCls}-pop-menu`,x),overlayInnerStyle:{minWidth:q,...e.overlayInnerStyle},content:N(),placement:b(),children:n.jsxRuntimeExports.jsx("div",{ref:M,className:r(`${m.$prefixCls}-pop-menu-content`,j),style:y,children:i})})})};l.displayName="PopMenu";exports.PopMenu=l;exports.default=l;
|
|
1
|
+
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});require('./index.css');const n=require("../_virtual/jsx-runtime.js"),r=require("clsx"),S=require("react"),m=require("../GlobalContext/constant.js"),I=require("../Popover/index.js"),d=require("./context.js"),$=require("./hooks.js");;/* empty css */const k=require("./list.js"),l=u=>{const{overlayClassName:x,data:h,children:i,menuClassName:f,menuStyle:v,contentClassName:j,contentStyle:y,value:C,onChange:g,onClick:P,path:R,...e}=u,{width:q,ref:M}=$.useComponentWidth([i]),c=S.useRef(null),{handle:a,menuIndex:E}=d.usePopMenuContext(),N=()=>{const o=[],s={list:[]};return h.forEach(t=>{typeof t=="object"&&t!==null&&"list"in t?o.push(t):s.list.push(t)}),s.list?.length&&o.push(s),n.jsxRuntimeExports.jsx(n.jsxRuntimeExports.Fragment,{children:o.map((t,p)=>n.jsxRuntimeExports.jsx(k.default,{direction:e.direction,list:t.list,className:r(f,{"pop-menu-separator":p!==o.length-1}),style:v},p))})},b=()=>e.placement?e.placement:e.direction==="right"?"bottomLeft":"bottomRight";return n.jsxRuntimeExports.jsx(d.PopMenuProvider,{value:{menuIndex:E+1,path:R||[],direction:e.direction||"left",props:u,value:C||[],onChange:g||(()=>{}),onClick:P||(()=>{}),handle:{closeMenu:()=>{typeof e?.visible>"u"&&(c?.current?.close(),a&&a?.closeMenu?.())}}},children:n.jsxRuntimeExports.jsx(I.Popover,{...e,isPopover:!0,ref:c,overlayClassName:r(`${m.$prefixCls}-pop-menu`,x),overlayInnerStyle:{minWidth:q,...e.overlayInnerStyle},content:N(),placement:b(),children:n.jsxRuntimeExports.jsx("div",{ref:M,className:r(`${m.$prefixCls}-pop-menu-content`,j),style:y,children:i})})})};l.displayName="PopMenu";exports.PopMenu=l;exports.default=l;
|
|
2
2
|
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1,165 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "Popover",
|
|
3
|
+
"category": "Data Display",
|
|
4
|
+
"description": "点击/鼠标移入元素,弹出气泡式的卡片浮层,支持标题+内容的富内容承载",
|
|
5
|
+
"semantic": {
|
|
6
|
+
"intent": [
|
|
7
|
+
"展示详情",
|
|
8
|
+
"复杂操作",
|
|
9
|
+
"承载内容"
|
|
10
|
+
],
|
|
11
|
+
"useCases": [
|
|
12
|
+
"用户信息卡片",
|
|
13
|
+
"复杂筛选配置",
|
|
14
|
+
"帮助文档预览"
|
|
15
|
+
],
|
|
16
|
+
"riskLevel": "normal"
|
|
17
|
+
},
|
|
18
|
+
"variants": {
|
|
19
|
+
"default": {
|
|
20
|
+
"meaning": "默认样式"
|
|
21
|
+
}
|
|
22
|
+
},
|
|
23
|
+
"states": [
|
|
24
|
+
"visible",
|
|
25
|
+
"hidden"
|
|
26
|
+
],
|
|
27
|
+
"idealProps": {
|
|
28
|
+
"content": {
|
|
29
|
+
"type": "ReactNode",
|
|
30
|
+
"description": "卡片内容主体"
|
|
31
|
+
},
|
|
32
|
+
"title": {
|
|
33
|
+
"type": "string | ReactNode",
|
|
34
|
+
"description": "卡片标题。**不传时浮层不渲染标题区**(无空白占位);如需仅展示 content,省略 title 即可"
|
|
35
|
+
},
|
|
36
|
+
"children": {
|
|
37
|
+
"type": "ReactElement",
|
|
38
|
+
"description": "**触发浮层的目标节点**——必须是『单一可接收 ref 的 React 元素』(rc-tooltip 内部约束,需挂 ref 监听事件)。传 string / Fragment / 多个并列节点会导致 ref 挂载失败、触发不生效。当业务方接到 ReactNode 类型的 trigger 节点(可能是字符串 / Fragment / 数组)时,外层包一层 `<span style={{ display: 'inline-block' }}>` 兜底"
|
|
39
|
+
},
|
|
40
|
+
"placement": {
|
|
41
|
+
"type": "enum",
|
|
42
|
+
"values": [
|
|
43
|
+
"top",
|
|
44
|
+
"left",
|
|
45
|
+
"right",
|
|
46
|
+
"bottom",
|
|
47
|
+
"topLeft",
|
|
48
|
+
"topRight",
|
|
49
|
+
"bottomLeft",
|
|
50
|
+
"bottomRight",
|
|
51
|
+
"leftTop",
|
|
52
|
+
"leftBottom",
|
|
53
|
+
"rightTop",
|
|
54
|
+
"rightBottom"
|
|
55
|
+
],
|
|
56
|
+
"default": "bottom",
|
|
57
|
+
"description": "弹出位置(src/Popover/index.tsx:65 实证默认 `bottom`,非 `top`)"
|
|
58
|
+
},
|
|
59
|
+
"trigger": {
|
|
60
|
+
"type": "enum",
|
|
61
|
+
"values": [
|
|
62
|
+
"hover",
|
|
63
|
+
"focus",
|
|
64
|
+
"click",
|
|
65
|
+
"contextMenu"
|
|
66
|
+
],
|
|
67
|
+
"default": "click",
|
|
68
|
+
"description": "触发行为。`contextMenu` 时由内部 rc-tooltip 自动 preventDefault 浏览器原生右键菜单。**仅支持单值,不支持数组形式**——多种触发需用受控模式(visible + onVisibleChange + 业务方自行监听多种事件)"
|
|
69
|
+
},
|
|
70
|
+
"visible": {
|
|
71
|
+
"type": "boolean",
|
|
72
|
+
"default": false,
|
|
73
|
+
"description": "**控制显示(受控,src 真实主名)**——Popover 继承 TooltipProps,src/Tooltip/index.tsx:25 取 `visible ?? open`,visible 优先。新代码任选其一;不要同时传。**受控语义**:传 visible 后 Popover 完全受控,用户的 click / hover / contextMenu 不会自动切换内部 state,仅触发 onVisibleChange 让父组件决定是否改 visible(请求改变 vs 直接改变)"
|
|
74
|
+
},
|
|
75
|
+
"open": {
|
|
76
|
+
"type": "boolean",
|
|
77
|
+
"default": false,
|
|
78
|
+
"description": "`visible` 的别名(antd 风格)"
|
|
79
|
+
},
|
|
80
|
+
"onVisibleChange": {
|
|
81
|
+
"type": "function",
|
|
82
|
+
"signature": "(visible: boolean) => void",
|
|
83
|
+
"description": "**显示隐藏回调(src 真实事件名是 onVisibleChange,不是 onOpenChange)**。受控时仍会被调用——表示父组件应改变 visible;非受控时由 Popover 内部 state 切换并同时回调"
|
|
84
|
+
},
|
|
85
|
+
"arrow": {
|
|
86
|
+
"type": "boolean",
|
|
87
|
+
"default": false,
|
|
88
|
+
"description": "是否显示箭头(src/Popover/index.tsx:69 实证默认 `false`,非 `true`)"
|
|
89
|
+
},
|
|
90
|
+
"getPopupContainer": {
|
|
91
|
+
"type": "function",
|
|
92
|
+
"signature": "(triggerNode: HTMLElement) => HTMLElement",
|
|
93
|
+
"description": "指定弹层的挂载容器(src/Tooltip/interface.tsx:41 实证,Popover 继承 TooltipProps)。默认挂载到 body;传入函数返回目标 DOM 节点可实现局部定位(如 Modal 内的 Popover 挂载到 Modal 容器,避免层叠问题)。**函数在浮层首次展示时调用**,须确保此时目标 DOM 已挂载"
|
|
94
|
+
},
|
|
95
|
+
"mouseEnterDelay": {
|
|
96
|
+
"type": "number",
|
|
97
|
+
"default": 0.1,
|
|
98
|
+
"description": "鼠标移入后弹出延迟(单位:秒,src/Popover/index.tsx:67 defaultProps 实证默认 0.1)。`trigger='hover'` 时生效;设为 0 则立即弹出"
|
|
99
|
+
},
|
|
100
|
+
"mouseLeaveDelay": {
|
|
101
|
+
"type": "number",
|
|
102
|
+
"default": 0.1,
|
|
103
|
+
"description": "鼠标移出后消失延迟(单位:秒,src/Popover/index.tsx:68 defaultProps 实证默认 0.1)。`trigger='hover'` 时生效;用于防止鼠标从 trigger 移至浮层时浮层闪烁消失"
|
|
104
|
+
},
|
|
105
|
+
"defaultVisible": {
|
|
106
|
+
"type": "boolean",
|
|
107
|
+
"default": false,
|
|
108
|
+
"description": "⚠️ **非受控初始可见性**(rc-tooltip prop,src/Popover/index.tsx:193 defaultProps 实证默认 false)。与 `visible`/`open` 互斥——传 `visible` 后为受控模式,`defaultVisible` 失效。**仅控制首次渲染时的初始展开状态**,之后由 trigger 事件驱动内部 state,父组件无需管理"
|
|
109
|
+
}
|
|
110
|
+
},
|
|
111
|
+
"do": [
|
|
112
|
+
"当内容较多或包含交互(如按钮、链接)时使用 Popover",
|
|
113
|
+
"提供清晰的关闭方式(如果不是 hover 触发)",
|
|
114
|
+
"**children 必须是单一可接收 ref 的 React 元素**:`<Button>` / `<span>` / 自定义 forwardRef 组件均可;传业务接到的 ReactNode 时外层包 `<span style={{display:'inline-block'}}>` 兜底",
|
|
115
|
+
"**省略 title 不渲染标题区**(无空白占位);只展示 content 时直接不传 title 即可(覆盖『无标题快速详情』场景)",
|
|
116
|
+
"**右键菜单场景**:`trigger='contextMenu'`,内部自动 preventDefault;可配合 `visible + onVisibleChange` 实现『点击菜单项后关闭浮层』",
|
|
117
|
+
"**外部按钮控制显隐**:用 `visible + onVisibleChange` 受控;trigger prop 决定 onVisibleChange 被调用的时机(hover/click/contextMenu)",
|
|
118
|
+
"**纯受控 + 任意 trigger 时父组件应忽略 onVisibleChange 请求**(DEFECT-001):trigger 缺 'none' / 'manual' 选项,纯受控场景下用户点击/悬停/右键仍触发 onVisibleChange — 父组件直接保留 visible state 不响应即可,不要主动反向 setState;不需要交互时通过 unmount 完全屏蔽"
|
|
119
|
+
],
|
|
120
|
+
"dont": [
|
|
121
|
+
"仅用于展示简单文本(应使用 Tooltip)",
|
|
122
|
+
"弹出层级过深或遮挡关键信息",
|
|
123
|
+
"**不要给 children 传字符串 / Fragment / 数组**——rc-tooltip 内部约束需挂 ref 监听事件,非元素 children 会让触发失效;如必须传 ReactNode,外层包 inline-block span",
|
|
124
|
+
"**不要传 `onOpenChange`**——src 真实事件名是 `onVisibleChange`,传 onOpenChange 不会触发任何回调",
|
|
125
|
+
"**不要给 trigger 传数组**(如 `['click', 'contextMenu']`)——src 类型仅单值字符串联合;多种触发用受控模式自行监听",
|
|
126
|
+
"不要假设传 visible 后 trigger 仍会切换内部 state——受控模式下 trigger 仅决定 onVisibleChange 被调用的时机,由父组件决定是否真改 visible"
|
|
127
|
+
],
|
|
128
|
+
"events": {
|
|
129
|
+
"onVisibleChange": {
|
|
130
|
+
"signature": "(visible: boolean) => void",
|
|
131
|
+
"asyncSupported": false,
|
|
132
|
+
"examples": [
|
|
133
|
+
"非受控监听:onVisibleChange={(v) => console.log('浮层', v ? '展开' : '收起')}",
|
|
134
|
+
"受控开关:visible={open} onVisibleChange={(v) => setOpen(v)}",
|
|
135
|
+
"点击浮层内关闭按钮后同步状态:onVisibleChange={(v) => { if (!v) setOpen(false); }}"
|
|
136
|
+
],
|
|
137
|
+
"commonMistakes": [
|
|
138
|
+
"事件名写成 onOpenChange——Popover 的事件名是 onVisibleChange,onOpenChange 不会触发",
|
|
139
|
+
"受控时在 onVisibleChange 里 setState(false) 来关闭——可行,但若 trigger='click' 则点击外部也会触发关闭,需确保 state 正确响应",
|
|
140
|
+
"同时传 visible 和 open——visible 优先,二者同时传会造成混乱,任选其一"
|
|
141
|
+
]
|
|
142
|
+
}
|
|
143
|
+
},
|
|
144
|
+
"typescriptPitfalls": [
|
|
145
|
+
{
|
|
146
|
+
"issue": "trigger 不支持数组,只支持单字符串联合类型",
|
|
147
|
+
"wrong": "trigger={['click', 'hover']} // TS 类型报错,src 仅支持单值",
|
|
148
|
+
"right": "trigger='click' // 单一触发;需多种触发时用 visible + onVisibleChange 受控模式"
|
|
149
|
+
},
|
|
150
|
+
{
|
|
151
|
+
"issue": "onVisibleChange 事件名——src 真实字段名,不是 antd v5 的 onOpenChange",
|
|
152
|
+
"wrong": "onOpenChange={(v) => setOpen(v)} // 不会触发,TS 可能不报错(spread 透传),但无效果",
|
|
153
|
+
"right": "onVisibleChange={(v) => setOpen(v)}"
|
|
154
|
+
},
|
|
155
|
+
{
|
|
156
|
+
"issue": "children 须是单一 ReactElement,传 string 或 Fragment 导致触发失效且无 TS 报错",
|
|
157
|
+
"wrong": "// TS 接受 ReactNode,但 rc-tooltip 运行时挂 ref 失败:\n<Popover content={...}>{someStringOrFragment}</Popover>",
|
|
158
|
+
"right": "<Popover content={...}><span style={{ display: 'inline-block' }}>{someStringOrFragment}</span></Popover>"
|
|
159
|
+
}
|
|
160
|
+
],
|
|
161
|
+
"mapping": {
|
|
162
|
+
"realComponent": "Popover",
|
|
163
|
+
"adapter": null
|
|
164
|
+
}
|
|
165
|
+
}
|
package/lib/Popover/index.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});require('./index.css');const t=require("../_virtual/jsx-runtime.js"),i=require("react"),f=require("../Tooltip/index.js"),u=require("../GlobalContext/constant.js"),v=require("../GlobalContext/usePopupContainer.js"),d=require("clsx");;/* empty css */const o=i.forwardRef((s,r)=>{const{title:n,content:l,...p}=s,e=i.useRef(),x=v.default(e,s.getPopupContainer);i.useEffect(()=>{r&&(typeof r=="function"?r(e.current):r.current=e.current)},[e.current]);const m=c=>!n&&!l?null:t.jsxRuntimeExports.jsxs(t.jsxRuntimeExports.Fragment,{children:[n&&t.jsxRuntimeExports.jsx("div",{className:`${c}-title`,children:n}),t.jsxRuntimeExports.jsx("div",{className:`${c}-inner-content`,children:l})]}),a=`${u.$rcPrefixCls}-popover`;return t.jsxRuntimeExports.jsx(f.Tooltip,{...p,isPopover:!0,prefixCls:a,overlayClassName:d(`${u.$prefixCls}-popover`,s.overlayClassName),ref:e,title:m(a),transitionName:`${u.$rcPrefixCls}-popover-zoom-big`,getPopupContainer:x})});o.displayName="Popover";o.defaultProps={placement:"bottom",trigger:"click",mouseEnterDelay:.1,mouseLeaveDelay:.1,arrow:!1};exports.Popover=o;exports.default=o;
|
|
1
|
+
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});require('./index.css');const t=require("../_virtual/jsx-runtime.js"),i=require("react"),f=require("../Tooltip/index.js"),u=require("../GlobalContext/constant.js"),v=require("../GlobalContext/usePopupContainer.js"),d=require("clsx");;/* empty css */const o=i.forwardRef((s,r)=>{const{title:n,content:l,...p}=s,e=i.useRef(null),x=v.default(e,s.getPopupContainer);i.useEffect(()=>{r&&(typeof r=="function"?r(e.current):r.current=e.current)},[e.current]);const m=c=>!n&&!l?null:t.jsxRuntimeExports.jsxs(t.jsxRuntimeExports.Fragment,{children:[n&&t.jsxRuntimeExports.jsx("div",{className:`${c}-title`,children:n}),t.jsxRuntimeExports.jsx("div",{className:`${c}-inner-content`,children:l})]}),a=`${u.$rcPrefixCls}-popover`;return t.jsxRuntimeExports.jsx(f.Tooltip,{...p,isPopover:!0,prefixCls:a,overlayClassName:d(`${u.$prefixCls}-popover`,s.overlayClassName),ref:e,title:m(a),transitionName:`${u.$rcPrefixCls}-popover-zoom-big`,getPopupContainer:x})});o.displayName="Popover";o.defaultProps={placement:"bottom",trigger:"click",mouseEnterDelay:.1,mouseLeaveDelay:.1,arrow:!1};exports.Popover=o;exports.default=o;
|
|
2
2
|
//# sourceMappingURL=index.js.map
|