@para-ui/core 5.0.0-beta.8 → 5.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/AGENTS.md +315 -0
- package/AlignBox/component.json +89 -0
- package/Anchor/component.json +130 -0
- package/Argv/component.json +216 -0
- package/AutoBox/component.json +133 -0
- package/AutoButton/component.json +109 -0
- package/AutoTips/component.json +121 -0
- package/Badge/component.json +92 -0
- package/Breadcrumbs/component.json +142 -0
- package/Button/component.json +168 -0
- package/ButtonGroup/component.json +132 -0
- package/Card/component.json +162 -0
- package/Carousel/component.json +142 -0
- package/Cascader/component.json +196 -0
- package/Checkbox/component.json +138 -0
- package/CheckboxGroup/component.json +152 -0
- package/CodeEditor/component.json +189 -0
- package/Collapse/component.json +166 -0
- package/CollapseBox/component.json +84 -0
- package/CollapseLayout/component.json +155 -0
- package/ColorPicker/component.json +142 -0
- package/ComboSelect/component.json +181 -0
- package/Container/component.json +111 -0
- package/ContentBox/component.json +81 -0
- package/CopyText/component.json +118 -0
- package/CycleSelector/component.json +98 -0
- package/DatePicker/component.json +192 -0
- package/Descriptions/component.json +142 -0
- package/Desktop/component.json +171 -0
- package/DragVerify/component.json +114 -0
- package/Drawer/component.json +200 -0
- package/Dropdown/component.json +147 -0
- package/DynamicMultiBox/component.json +278 -0
- package/Empty/component.json +123 -0
- package/ExpressionInput/component.json +79 -0
- package/FieldForm/component.json +196 -0
- package/Form/component.json +161 -0
- package/FormItem/component.json +171 -0
- package/FunctionModal/component.json +197 -0
- package/Help/component.json +118 -0
- package/HelperText/component.json +126 -0
- package/Image/component.json +165 -0
- package/InputCode/component.json +191 -0
- package/InputLang/component.json +205 -0
- package/InputNumber/component.json +162 -0
- package/Label/component.json +126 -0
- package/Loading/component.json +91 -0
- package/Menu/component.json +180 -0
- package/Message/component.json +246 -0
- package/Modal/component.json +277 -0
- package/MultiBox/component.json +216 -0
- package/Notification/component.json +184 -0
- package/OperateBtn/component.json +134 -0
- package/PageHeader/component.json +112 -0
- package/Pagination/component.json +181 -0
- package/PasswordRules/component.json +105 -0
- package/PopConfirm/component.json +227 -0
- package/PopMenu/component.json +131 -0
- package/Popover/component.json +165 -0
- package/Progress/component.json +161 -0
- package/Prompt/component.json +144 -0
- package/Querying/component.json +96 -0
- package/QuickReply/component.json +129 -0
- package/README.md +0 -5
- package/Radio/component.json +136 -0
- package/RadioGroup/component.json +149 -0
- package/RangeInput/component.json +198 -0
- package/Result/component.json +104 -0
- package/ScrollBar/component.json +115 -0
- package/Search/component.json +177 -0
- package/Select/component.json +244 -0
- package/SelectInput/component.json +184 -0
- package/Selector/component.json +203 -0
- package/SelectorPicker/component.json +179 -0
- package/SingleBox/component.json +151 -0
- package/Slider/component.json +181 -0
- package/SortBox/component.json +108 -0
- package/Status/component.json +104 -0
- package/Stepper/component.json +129 -0
- package/Switch/component.json +207 -0
- package/Table/component.json +547 -0
- package/Tabs/component.json +227 -0
- package/Tag/component.json +221 -0
- package/TextEditor/component.json +186 -0
- package/TextField/component.json +290 -0
- package/TimePicker/component.json +176 -0
- package/Timeline/component.json +110 -0
- package/Title/component.json +156 -0
- package/ToggleButton/component.json +153 -0
- package/Tooltip/component.json +176 -0
- package/Transfer/component.json +157 -0
- package/Tree/component.json +512 -0
- package/Upload/component.json +450 -0
- package/ai-workflows/01-crud-list-multi-drawer.md +278 -0
- package/ai-workflows/02-rbac-operation-buttons.md +290 -0
- package/ai-workflows/03-complex-form-async-cascade.md +350 -0
- package/ai-workflows/04-array-field-form.md +281 -0
- package/ai-workflows/05-popconfirm-async-message-queue.md +333 -0
- package/ai-workflows/06-modal-drawer-form-workflow.md +385 -0
- package/ai-workflows/07-search-filter-table-trio.md +387 -0
- package/ai-workflows/08-table-advanced-features.md +365 -0
- package/ai-workflows/09-batch-operation-export-progress.md +367 -0
- package/ai-workflows/10-cross-component-state-coordination.md +412 -0
- package/es/AlignBox/component.json +89 -0
- package/es/AlignBox/index.css +1 -1
- package/es/AlignBox/index.d.ts +6 -2
- package/es/AlignBox/index.js +1 -1
- package/es/AlignBox/style/index.css +1 -1
- package/es/Anchor/anchorMenu/index.d.ts +2 -1
- package/es/Anchor/anchorMenu/index.js +36 -33
- package/es/Anchor/component.json +130 -0
- package/es/Anchor/index.js +52 -49
- package/es/Anchor/type.d.ts +8 -4
- package/es/Argv/batchEdit/index.js +1 -1
- package/es/Argv/component.json +216 -0
- package/es/Argv/dataGenerator/index.js +1 -1
- package/es/Argv/index.d.ts +5 -6
- package/es/Argv/index.js +1 -1
- package/es/AutoBox/component.json +133 -0
- package/es/AutoBox/index.d.ts +3 -3
- package/es/AutoBox/index.js +1 -1
- package/es/AutoBox/protal.d.ts +2 -2
- package/es/AutoBox/protal.js +33 -30
- package/es/AutoButton/component.json +109 -0
- package/es/AutoButton/index.js +1 -1
- package/es/AutoTips/autoTipsMultiline/index.d.ts +1 -1
- package/es/AutoTips/autoTipsMultiline/index.js +1 -1
- package/es/AutoTips/component.json +121 -0
- package/es/AutoTips/index.js +1 -1
- package/es/Badge/component.json +92 -0
- package/es/Breadcrumbs/component.json +142 -0
- package/es/Breadcrumbs/index.js +1 -1
- package/es/Button/SplitButton.d.ts +2 -2
- package/es/Button/component.json +168 -0
- package/es/Button/index.js +44 -44
- package/es/ButtonGroup/component.json +132 -0
- package/es/ButtonGroup/index.d.ts +1 -1
- package/es/Card/component.json +162 -0
- package/es/Card/index.d.ts +2 -2
- package/es/Card/index.js +2 -2
- package/es/Carousel/component.json +142 -0
- package/es/Carousel/index.d.ts +1 -1
- package/es/Cascader/Cascader.js +1 -1
- package/es/Cascader/OptionList/Column.js +1 -1
- package/es/Cascader/OptionList/index.js +1 -1
- package/es/Cascader/component.json +196 -0
- package/es/Cascader/hooks/useEntities.js +7 -7
- package/es/Cascader/interface.d.ts +1 -0
- package/es/Cascader/utils/commonUtil.d.ts +1 -1
- package/es/Cascader/utils/commonUtil.js +16 -16
- package/es/Cascader/utils/treeUtil.d.ts +14 -5
- package/es/Cascader/utils/treeUtil.js +1 -1
- package/es/Checkbox/component.json +138 -0
- package/es/CheckboxGroup/component.json +152 -0
- package/es/CheckboxGroup/index.js +1 -1
- package/es/CodeEditor/component.json +189 -0
- package/es/CodeEditor/index.d.ts +11 -10
- package/es/CodeEditor/index.js +25 -25
- package/es/Collapse/component.json +166 -0
- package/es/Collapse/index.d.ts +1 -1
- package/es/Collapse/index.js +23 -22
- package/es/CollapseBox/component.json +84 -0
- package/es/CollapseLayout/component.json +155 -0
- package/es/ColorPicker/component.json +142 -0
- package/es/ComboSelect/component.json +181 -0
- package/es/ComboSelect/index.js +115 -109
- package/es/ComboSelect/interface.d.ts +2 -2
- package/es/ComboSelect/utils.d.ts +3 -3
- package/es/ComboSelect/utils.js +1 -1
- package/es/Container/component.json +111 -0
- package/es/ContentBox/component.json +81 -0
- package/es/CopyText/component.json +118 -0
- package/es/CycleSelector/component.json +98 -0
- package/es/CycleSelector/index.js +14 -13
- package/es/DatePicker/component.json +192 -0
- package/es/DatePicker/generatePicker/generateRangePicker.js +11 -11
- package/es/DatePicker/generatePicker/generateSinglePicker.js +2 -2
- package/es/Descriptions/component.json +142 -0
- package/es/Descriptions/index.d.ts +1 -1
- package/es/Desktop/component.json +171 -0
- package/es/Desktop/index.js +1 -1
- package/es/DragVerify/component.json +114 -0
- package/es/DragVerify/index.js +19 -19
- package/es/Drawer/component.json +200 -0
- package/es/Drawer/index.js +86 -86
- package/es/Drawer/interface.d.ts +1 -1
- package/es/Drawer/util.d.ts +1 -6
- package/es/Drawer/util.js +9 -6
- package/es/Dropdown/component.json +147 -0
- package/es/Dropdown/index.js +1 -1
- package/es/DynamicMultiBox/component.json +278 -0
- package/es/DynamicMultiBox/formItem.d.ts +1 -1
- package/es/DynamicMultiBox/index.d.ts +2 -2
- package/es/DynamicMultiBox/index.js +1 -1
- package/es/DynamicMultiBox/interface.d.ts +76 -76
- package/es/DynamicMultiBox/rowForm.d.ts +2 -2
- package/es/Empty/component.json +123 -0
- package/es/Empty/index.css +1 -1
- package/es/Empty/index.d.ts +2 -2
- package/es/Empty/index.js +27 -26
- package/es/Empty/style/index.css +1 -1
- package/es/ExpressionInput/HighlightOverlay.d.ts +8 -0
- package/es/ExpressionInput/HighlightOverlay.js +27 -0
- package/es/ExpressionInput/Popup.d.ts +19 -0
- package/es/ExpressionInput/Popup.js +93 -0
- package/es/ExpressionInput/component.json +79 -0
- package/es/ExpressionInput/detectChainAtCursor.d.ts +17 -0
- package/es/ExpressionInput/detectChainAtCursor.js +31 -0
- package/es/ExpressionInput/filterCandidatesByPartial.d.ts +2 -0
- package/es/ExpressionInput/filterCandidatesByPartial.js +15 -0
- package/es/ExpressionInput/highlightSegments.d.ts +9 -0
- package/es/ExpressionInput/highlightSegments.js +14 -0
- package/es/ExpressionInput/index.css +1 -0
- package/es/ExpressionInput/index.d.ts +5 -0
- package/es/ExpressionInput/index.js +178 -0
- package/es/ExpressionInput/interface.d.ts +52 -0
- package/es/ExpressionInput/isExpressionValue.d.ts +5 -0
- package/es/ExpressionInput/isExpressionValue.js +18 -0
- package/es/ExpressionInput/lang/en_US.d.ts +4 -0
- package/es/ExpressionInput/lang/en_US.js +7 -0
- package/es/ExpressionInput/lang/index.d.ts +9 -0
- package/es/ExpressionInput/lang/index.js +10 -0
- package/es/ExpressionInput/lang/zh_CN.d.ts +4 -0
- package/es/ExpressionInput/lang/zh_CN.js +7 -0
- package/es/ExpressionInput/style/css.js +1 -0
- package/es/ExpressionInput/style/index.css +1 -0
- package/es/ExpressionInput/style/index.js +1 -0
- package/es/ExpressionInput/useExpressionInput.d.ts +26 -0
- package/es/ExpressionInput/useExpressionInput.js +59 -0
- package/es/FieldForm/FieldFormItem/ItemHolder.js +1 -1
- package/es/FieldForm/FieldFormItem/MemoInput.d.ts +2 -2
- package/es/FieldForm/FieldFormItem/StatusProvider.js +1 -1
- package/es/FieldForm/FieldFormItem/index.d.ts +6 -6
- package/es/FieldForm/Form.d.ts +2 -2
- package/es/FieldForm/Form.js +1 -1
- package/es/FieldForm/FormItemInput.js +1 -1
- package/es/FieldForm/FormItemLabel.js +1 -1
- package/es/FieldForm/FormList.d.ts +2 -2
- package/es/FieldForm/component.json +196 -0
- package/es/FieldForm/context.d.ts +5 -1
- package/es/FieldForm/context.js +2 -2
- package/es/FieldForm/hooks/useForm.d.ts +4 -3
- package/es/FieldForm/hooks/useFormInstance.d.ts +1 -1
- package/es/FieldForm/hooks/useFormItemStatus.d.ts +9 -5
- package/es/FieldForm/hooks/useFormItemStatus.js +2 -2
- package/es/FieldForm/hooks/useItemRef.d.ts +1 -1
- package/es/FieldForm/hooks/useItemRef.js +6 -6
- package/es/Form/component.json +161 -0
- package/es/Form/index.d.ts +52 -49
- package/es/Form/index.js +1 -1
- package/es/FormItem/compoments/defaultCompoments/index.d.ts +5 -5
- package/es/FormItem/compoments/defaultCompoments/index.js +12 -11
- package/es/FormItem/compoments/formCheckboxGroup/index.d.ts +2 -2
- package/es/FormItem/compoments/formFile/index.js +8 -8
- package/es/FormItem/compoments/formRadioGroup/index.d.ts +1 -1
- package/es/FormItem/compoments/formSelect/index.d.ts +1 -1
- package/es/FormItem/component.json +171 -0
- package/es/FormItem/index.d.ts +5 -5
- package/es/FormItem/index.js +23 -23
- package/es/FormItem/itemType.js +1 -1
- package/es/FunctionModal/component.json +197 -0
- package/es/FunctionModal/dialog.d.ts +1 -1
- package/es/FunctionModal/modalContext.d.ts +4 -1
- package/es/GlobalContext/confirmLocale.js +1 -1
- package/es/GlobalContext/index.js +1 -1
- package/es/Help/component.json +118 -0
- package/es/HelperText/component.json +126 -0
- package/es/Image/PreviewGroup.js +1 -1
- package/es/Image/component.json +165 -0
- package/es/Image/index.js +1 -1
- package/es/InputCode/component.json +191 -0
- package/es/InputCode/index.d.ts +2 -2
- package/es/InputCode/index.js +1 -1
- package/es/InputLang/component.json +205 -0
- package/es/InputLang/index.js +2 -2
- package/es/InputNumber/component.json +162 -0
- package/es/InputNumber/index.d.ts +13 -7
- package/es/InputNumber/index.js +152 -144
- package/es/Label/component.json +126 -0
- package/es/Label/index.d.ts +2 -2
- package/es/Loading/component.json +91 -0
- package/es/Menu/component.json +180 -0
- package/es/Menu/verticalMenuList.js +1 -1
- package/es/Message/component.json +246 -0
- package/es/Message/index.d.ts +2 -2
- package/es/Message/index.js +19 -19
- package/es/Modal/Confirm/index.d.ts +1 -1
- package/es/Modal/Confirm/index.js +1 -1
- package/es/Modal/component.json +277 -0
- package/es/Modal/index.d.ts +85 -5
- package/es/Modal/index.js +159 -122
- package/es/Modal/interface.d.ts +1 -0
- package/es/MultiBox/component.json +216 -0
- package/es/MultiBox/index.js +19 -14
- package/es/Notification/component.json +184 -0
- package/es/OperateBtn/component.json +134 -0
- package/es/OperateBtn/index.d.ts +3 -3
- package/es/PageHeader/component.json +112 -0
- package/es/PageHeader/horizontalMeun.js +1 -1
- package/es/PageHeader/horizontalMeunRight.js +1 -1
- package/es/Pagination/component.json +181 -0
- package/es/Pagination/index.js +15 -15
- package/es/ParauiProvider/index.js +1 -1
- package/es/PasswordRules/component.json +105 -0
- package/es/PasswordRules/index.d.ts +4 -4
- package/es/PopConfirm/component.json +227 -0
- package/es/PopConfirm/index.d.ts +1 -1
- package/es/PopConfirm/index.js +1 -1
- package/es/PopMenu/component.json +131 -0
- package/es/PopMenu/hooks.d.ts +1 -1
- package/es/PopMenu/index.js +8 -8
- package/es/Popover/component.json +165 -0
- package/es/Popover/index.js +1 -1
- package/es/Progress/component.json +161 -0
- package/es/Prompt/component.json +144 -0
- package/es/Querying/component.json +96 -0
- package/es/Querying/index.css +1 -1
- package/es/Querying/index.d.ts +2 -2
- package/es/Querying/index.js +20 -19
- package/es/Querying/style/index.css +1 -1
- package/es/QuickReply/QuickReplyCode/index.js +1 -1
- package/es/QuickReply/component.json +129 -0
- package/es/QuickReply/index.d.ts +1 -1
- package/es/Radio/component.json +136 -0
- package/es/RadioGroup/component.json +149 -0
- package/es/RangeInput/component.json +198 -0
- package/es/RangeInput/index.d.ts +15 -7
- package/es/RangeInput/index.js +120 -103
- package/es/Result/component.json +104 -0
- package/es/ScrollBar/component.json +115 -0
- package/es/Search/component.json +177 -0
- package/es/Search/index.d.ts +1 -1
- package/es/Select/component.json +244 -0
- package/es/Select/index.d.ts +11 -8
- package/es/Select/index.js +441 -438
- package/es/SelectInput/component.json +184 -0
- package/es/SelectInput/index.d.ts +4 -4
- package/es/SelectInput/index.js +8 -8
- package/es/Selector/component.json +203 -0
- package/es/Selector/index.js +56 -50
- package/es/Selector/interface.d.ts +2 -2
- package/es/Selector/selectorData/index.js +1 -1
- package/es/Selector/selectorMain/index.js +3 -3
- package/es/Selector/selectorNode/index.js +1 -1
- package/es/Selector/util.d.ts +3 -3
- package/es/Selector/util.js +6 -12
- package/es/SelectorPicker/component.json +179 -0
- package/es/SelectorPicker/index.d.ts +5 -5
- package/es/SelectorPicker/index.js +15 -15
- package/es/SingleBox/component.json +151 -0
- package/es/SingleBox/index.d.ts +2 -2
- package/es/Slider/component.json +181 -0
- package/es/SortBox/component.json +108 -0
- package/es/Status/component.json +104 -0
- package/es/Stepper/component.json +129 -0
- package/es/Stepper/index.d.ts +2 -2
- package/es/Switch/component.json +207 -0
- package/es/Switch/index.css +1 -1
- package/es/Switch/index.d.ts +3 -2
- package/es/Switch/index.js +60 -59
- package/es/Switch/style/index.css +1 -1
- package/es/Table/component.json +547 -0
- package/es/Table/index.d.ts +2 -2
- package/es/Table/index.js +385 -382
- package/es/Table/interface.d.ts +30 -0
- package/es/Table/tableHead.js +1 -1
- package/es/Table/util.d.ts +1 -1
- package/es/Table/util.js +3 -12
- package/es/Tabs/component.json +227 -0
- package/es/Tag/component.json +221 -0
- package/es/Tag/index.css +1 -1
- package/es/Tag/index.d.ts +1 -1
- package/es/Tag/index.js +20 -20
- package/es/Tag/style/index.css +1 -1
- package/es/TextEditor/component.json +186 -0
- package/es/TextEditor/index.d.ts +5 -5
- package/es/TextEditor/index.js +1 -1
- package/es/TextField/component.json +290 -0
- package/es/TextField/index.d.ts +2 -2
- package/es/TextField/index.js +1 -1
- package/es/TimePicker/component.json +176 -0
- package/es/Timeline/component.json +110 -0
- package/es/Title/component.json +156 -0
- package/es/ToggleButton/component.json +153 -0
- package/es/ToggleButton/index.js +1 -1
- package/es/Tooltip/component.json +176 -0
- package/es/Tooltip/index.js +58 -53
- package/es/Tooltip/interface.d.ts +14 -1
- package/es/Tooltip/utils.js +6 -6
- package/es/Transfer/component.json +157 -0
- package/es/Tree/OperateBar/index.js +1 -1
- package/es/Tree/Tree.js +3 -3
- package/es/Tree/component.json +512 -0
- package/es/Tree/interface.d.ts +1 -1
- package/es/Upload/component.json +450 -0
- package/es/Upload/util.js +1 -1
- package/es/Utils/snack-kit-shims.d.ts +18 -0
- package/es/Utils/snack-kit-shims.js +19 -0
- package/es/Utils/type.d.ts +0 -6
- package/es/_virtual/index.js +5 -3
- package/es/_virtual/index2.js +2 -5
- package/es/index.d.ts +4 -0
- package/es/index.js +152 -150
- package/es/locale/en-US.d.ts +3 -0
- package/es/locale/en-US.js +3 -0
- package/es/locale/en_US.d.ts +361 -0
- package/es/locale/en_US.js +364 -0
- package/es/locale/index.d.ts +1 -723
- package/es/locale/index2.js +10 -0
- package/es/locale/zh-CN.d.ts +3 -0
- package/es/locale/zh-CN.js +3 -0
- package/es/locale/zh_CN.d.ts +361 -0
- package/es/locale/zh_CN.js +364 -0
- package/es/node_modules/classnames/index.js +1 -1
- package/lib/AlignBox/component.json +89 -0
- package/lib/AlignBox/index.css +1 -1
- package/lib/AlignBox/index.d.ts +6 -2
- package/lib/AlignBox/index.js +1 -1
- package/lib/AlignBox/style/index.css +1 -1
- package/lib/Anchor/anchorMenu/index.d.ts +2 -1
- package/lib/Anchor/anchorMenu/index.js +1 -1
- package/lib/Anchor/component.json +130 -0
- package/lib/Anchor/index.js +1 -1
- package/lib/Anchor/type.d.ts +8 -4
- package/lib/Argv/component.json +216 -0
- package/lib/Argv/dataGenerator/index.js +1 -1
- package/lib/Argv/index.d.ts +5 -6
- package/lib/Argv/index.js +1 -1
- package/lib/AutoBox/component.json +133 -0
- package/lib/AutoBox/index.d.ts +3 -3
- package/lib/AutoBox/index.js +1 -1
- package/lib/AutoBox/protal.d.ts +2 -2
- package/lib/AutoBox/protal.js +1 -1
- package/lib/AutoButton/component.json +109 -0
- package/lib/AutoButton/index.js +1 -1
- package/lib/AutoTips/autoTipsMultiline/index.d.ts +1 -1
- package/lib/AutoTips/autoTipsMultiline/index.js +1 -1
- package/lib/AutoTips/component.json +121 -0
- package/lib/AutoTips/index.js +1 -1
- package/lib/Badge/component.json +92 -0
- package/lib/Breadcrumbs/component.json +142 -0
- package/lib/Breadcrumbs/index.js +1 -1
- package/lib/Button/SplitButton.d.ts +2 -2
- package/lib/Button/component.json +168 -0
- package/lib/Button/index.js +1 -1
- package/lib/ButtonGroup/component.json +132 -0
- package/lib/ButtonGroup/index.d.ts +1 -1
- package/lib/Card/component.json +162 -0
- package/lib/Card/index.d.ts +2 -2
- package/lib/Card/index.js +1 -1
- package/lib/Carousel/component.json +142 -0
- package/lib/Carousel/index.d.ts +1 -1
- package/lib/Cascader/Cascader.js +1 -1
- package/lib/Cascader/OptionList/Column.js +1 -1
- package/lib/Cascader/OptionList/index.js +1 -1
- package/lib/Cascader/component.json +196 -0
- package/lib/Cascader/hooks/useEntities.js +1 -1
- package/lib/Cascader/interface.d.ts +1 -0
- package/lib/Cascader/utils/commonUtil.d.ts +1 -1
- package/lib/Cascader/utils/commonUtil.js +1 -1
- package/lib/Cascader/utils/treeUtil.d.ts +14 -5
- package/lib/Cascader/utils/treeUtil.js +1 -1
- package/lib/Checkbox/component.json +138 -0
- package/lib/CheckboxGroup/component.json +152 -0
- package/lib/CheckboxGroup/index.js +1 -1
- package/lib/CodeEditor/component.json +189 -0
- package/lib/CodeEditor/index.d.ts +11 -10
- package/lib/CodeEditor/index.js +1 -1
- package/lib/Collapse/component.json +166 -0
- package/lib/Collapse/index.d.ts +1 -1
- package/lib/Collapse/index.js +1 -1
- package/lib/CollapseBox/component.json +84 -0
- package/lib/CollapseLayout/component.json +155 -0
- package/lib/ColorPicker/component.json +142 -0
- package/lib/ComboSelect/component.json +181 -0
- package/lib/ComboSelect/index.js +1 -1
- package/lib/ComboSelect/interface.d.ts +2 -2
- package/lib/ComboSelect/utils.d.ts +3 -3
- package/lib/ComboSelect/utils.js +1 -1
- package/lib/Container/component.json +111 -0
- package/lib/ContentBox/component.json +81 -0
- package/lib/CopyText/component.json +118 -0
- package/lib/CycleSelector/component.json +98 -0
- package/lib/CycleSelector/index.js +1 -1
- package/lib/DatePicker/component.json +192 -0
- package/lib/DatePicker/generatePicker/generateRangePicker.js +1 -1
- package/lib/DatePicker/generatePicker/generateSinglePicker.js +1 -1
- package/lib/Descriptions/component.json +142 -0
- package/lib/Descriptions/index.d.ts +1 -1
- package/lib/Desktop/component.json +171 -0
- package/lib/Desktop/index.js +1 -1
- package/lib/DragVerify/component.json +114 -0
- package/lib/DragVerify/index.js +1 -1
- package/lib/Drawer/component.json +200 -0
- package/lib/Drawer/index.js +1 -1
- package/lib/Drawer/interface.d.ts +1 -1
- package/lib/Drawer/util.d.ts +1 -6
- package/lib/Drawer/util.js +1 -1
- package/lib/Dropdown/component.json +147 -0
- package/lib/Dropdown/index.js +1 -1
- package/lib/DynamicMultiBox/component.json +278 -0
- package/lib/DynamicMultiBox/formItem.d.ts +1 -1
- package/lib/DynamicMultiBox/index.d.ts +2 -2
- package/lib/DynamicMultiBox/index.js +1 -1
- package/lib/DynamicMultiBox/interface.d.ts +76 -76
- package/lib/DynamicMultiBox/rowForm.d.ts +2 -2
- package/lib/Empty/component.json +123 -0
- package/lib/Empty/index.css +1 -1
- package/lib/Empty/index.d.ts +2 -2
- package/lib/Empty/index.js +1 -1
- package/lib/Empty/style/index.css +1 -1
- package/lib/ExpressionInput/HighlightOverlay.d.ts +8 -0
- package/lib/ExpressionInput/HighlightOverlay.js +2 -0
- package/lib/ExpressionInput/Popup.d.ts +19 -0
- package/lib/ExpressionInput/Popup.js +2 -0
- package/lib/ExpressionInput/component.json +79 -0
- package/lib/ExpressionInput/detectChainAtCursor.d.ts +17 -0
- package/lib/ExpressionInput/detectChainAtCursor.js +2 -0
- package/lib/ExpressionInput/filterCandidatesByPartial.d.ts +2 -0
- package/lib/ExpressionInput/filterCandidatesByPartial.js +2 -0
- package/lib/ExpressionInput/highlightSegments.d.ts +9 -0
- package/lib/ExpressionInput/highlightSegments.js +2 -0
- package/lib/ExpressionInput/index.css +1 -0
- package/lib/ExpressionInput/index.d.ts +5 -0
- package/lib/ExpressionInput/index.js +2 -0
- package/lib/ExpressionInput/interface.d.ts +52 -0
- package/lib/ExpressionInput/isExpressionValue.d.ts +5 -0
- package/lib/ExpressionInput/isExpressionValue.js +2 -0
- package/lib/ExpressionInput/lang/en_US.d.ts +4 -0
- package/lib/ExpressionInput/lang/en_US.js +2 -0
- package/lib/ExpressionInput/lang/index.d.ts +9 -0
- package/lib/ExpressionInput/lang/index.js +2 -0
- package/lib/ExpressionInput/lang/zh_CN.d.ts +4 -0
- package/lib/ExpressionInput/lang/zh_CN.js +2 -0
- package/lib/ExpressionInput/style/css.js +1 -0
- package/lib/ExpressionInput/style/index.css +1 -0
- package/lib/ExpressionInput/style/index.js +1 -0
- package/lib/ExpressionInput/useExpressionInput.d.ts +26 -0
- package/lib/ExpressionInput/useExpressionInput.js +2 -0
- package/lib/FieldForm/FieldFormItem/ItemHolder.js +1 -1
- package/lib/FieldForm/FieldFormItem/MemoInput.d.ts +2 -2
- package/lib/FieldForm/FieldFormItem/StatusProvider.js +1 -1
- package/lib/FieldForm/FieldFormItem/index.d.ts +6 -6
- package/lib/FieldForm/Form.d.ts +2 -2
- package/lib/FieldForm/Form.js +1 -1
- package/lib/FieldForm/FormItemInput.js +1 -1
- package/lib/FieldForm/FormItemLabel.js +1 -1
- package/lib/FieldForm/FormList.d.ts +2 -2
- package/lib/FieldForm/component.json +196 -0
- package/lib/FieldForm/context.d.ts +5 -1
- package/lib/FieldForm/context.js +1 -1
- package/lib/FieldForm/hooks/useForm.d.ts +4 -3
- package/lib/FieldForm/hooks/useFormInstance.d.ts +1 -1
- package/lib/FieldForm/hooks/useFormItemStatus.d.ts +9 -5
- package/lib/FieldForm/hooks/useFormItemStatus.js +1 -1
- package/lib/FieldForm/hooks/useItemRef.d.ts +1 -1
- package/lib/FieldForm/hooks/useItemRef.js +1 -1
- package/lib/Form/component.json +161 -0
- package/lib/Form/index.d.ts +52 -49
- package/lib/Form/index.js +1 -1
- package/lib/FormItem/compoments/defaultCompoments/index.d.ts +5 -5
- package/lib/FormItem/compoments/defaultCompoments/index.js +1 -1
- package/lib/FormItem/compoments/formCheckboxGroup/index.d.ts +2 -2
- package/lib/FormItem/compoments/formFile/index.js +1 -1
- package/lib/FormItem/compoments/formRadioGroup/index.d.ts +1 -1
- package/lib/FormItem/compoments/formSelect/index.d.ts +1 -1
- package/lib/FormItem/component.json +171 -0
- package/lib/FormItem/index.d.ts +5 -5
- package/lib/FormItem/index.js +1 -1
- package/lib/FormItem/itemType.js +1 -1
- package/lib/FunctionModal/component.json +197 -0
- package/lib/FunctionModal/dialog.d.ts +1 -1
- package/lib/FunctionModal/modalContext.d.ts +4 -1
- package/lib/GlobalContext/confirmLocale.js +1 -1
- package/lib/GlobalContext/index.js +1 -1
- package/lib/Help/component.json +118 -0
- package/lib/HelperText/component.json +126 -0
- package/lib/Image/PreviewGroup.js +1 -1
- package/lib/Image/component.json +165 -0
- package/lib/Image/index.js +1 -1
- package/lib/InputCode/component.json +191 -0
- package/lib/InputCode/index.d.ts +2 -2
- package/lib/InputLang/component.json +205 -0
- package/lib/InputLang/index.js +1 -1
- package/lib/InputNumber/component.json +162 -0
- package/lib/InputNumber/index.d.ts +13 -7
- package/lib/InputNumber/index.js +1 -1
- package/lib/Label/component.json +126 -0
- package/lib/Label/index.d.ts +2 -2
- package/lib/Loading/component.json +91 -0
- package/lib/Menu/component.json +180 -0
- package/lib/Menu/verticalMenuList.js +1 -1
- package/lib/Message/component.json +246 -0
- package/lib/Message/index.d.ts +2 -2
- package/lib/Message/index.js +1 -1
- package/lib/Modal/Confirm/index.d.ts +1 -1
- package/lib/Modal/Confirm/index.js +1 -1
- package/lib/Modal/component.json +277 -0
- package/lib/Modal/index.d.ts +85 -5
- package/lib/Modal/index.js +1 -1
- package/lib/Modal/interface.d.ts +1 -0
- package/lib/MultiBox/component.json +216 -0
- package/lib/MultiBox/index.js +1 -1
- package/lib/Notification/component.json +184 -0
- package/lib/OperateBtn/component.json +134 -0
- package/lib/OperateBtn/index.d.ts +3 -3
- package/lib/PageHeader/component.json +112 -0
- package/lib/PageHeader/horizontalMeun.js +1 -1
- package/lib/PageHeader/horizontalMeunRight.js +1 -1
- package/lib/Pagination/component.json +181 -0
- package/lib/Pagination/index.js +1 -1
- package/lib/ParauiProvider/index.js +1 -1
- package/lib/PasswordRules/component.json +105 -0
- package/lib/PasswordRules/index.d.ts +4 -4
- package/lib/PopConfirm/component.json +227 -0
- package/lib/PopConfirm/index.d.ts +1 -1
- package/lib/PopConfirm/index.js +1 -1
- package/lib/PopMenu/component.json +131 -0
- package/lib/PopMenu/hooks.d.ts +1 -1
- package/lib/PopMenu/index.js +1 -1
- package/lib/Popover/component.json +165 -0
- package/lib/Popover/index.js +1 -1
- package/lib/Progress/component.json +161 -0
- package/lib/Prompt/component.json +144 -0
- package/lib/Querying/component.json +96 -0
- package/lib/Querying/index.css +1 -1
- package/lib/Querying/index.d.ts +2 -2
- package/lib/Querying/index.js +1 -1
- package/lib/Querying/style/index.css +1 -1
- package/lib/QuickReply/QuickReplyCode/index.js +1 -1
- package/lib/QuickReply/component.json +129 -0
- package/lib/QuickReply/index.d.ts +1 -1
- package/lib/Radio/component.json +136 -0
- package/lib/RadioGroup/component.json +149 -0
- package/lib/RangeInput/component.json +198 -0
- package/lib/RangeInput/index.d.ts +15 -7
- package/lib/RangeInput/index.js +1 -1
- package/lib/Result/component.json +104 -0
- package/lib/ScrollBar/component.json +115 -0
- package/lib/Search/component.json +177 -0
- package/lib/Search/index.d.ts +1 -1
- package/lib/Select/component.json +244 -0
- package/lib/Select/index.d.ts +11 -8
- package/lib/Select/index.js +1 -1
- package/lib/SelectInput/component.json +184 -0
- package/lib/SelectInput/index.d.ts +4 -4
- package/lib/SelectInput/index.js +1 -1
- package/lib/Selector/component.json +203 -0
- package/lib/Selector/index.js +1 -1
- package/lib/Selector/interface.d.ts +2 -2
- package/lib/Selector/selectorData/index.js +1 -1
- package/lib/Selector/selectorMain/index.js +1 -1
- package/lib/Selector/selectorNode/index.js +1 -1
- package/lib/Selector/util.d.ts +3 -3
- package/lib/Selector/util.js +1 -1
- package/lib/SelectorPicker/component.json +179 -0
- package/lib/SelectorPicker/index.d.ts +5 -5
- package/lib/SelectorPicker/index.js +1 -1
- package/lib/SingleBox/component.json +151 -0
- package/lib/SingleBox/index.d.ts +2 -2
- package/lib/Slider/component.json +181 -0
- package/lib/SortBox/component.json +108 -0
- package/lib/Status/component.json +104 -0
- package/lib/Stepper/component.json +129 -0
- package/lib/Stepper/index.d.ts +2 -2
- package/lib/Switch/component.json +207 -0
- package/lib/Switch/index.css +1 -1
- package/lib/Switch/index.d.ts +3 -2
- package/lib/Switch/index.js +1 -1
- package/lib/Switch/style/index.css +1 -1
- package/lib/Table/component.json +547 -0
- package/lib/Table/index.d.ts +2 -2
- package/lib/Table/index.js +1 -1
- package/lib/Table/interface.d.ts +30 -0
- package/lib/Table/tableHead.js +1 -1
- package/lib/Table/util.d.ts +1 -1
- package/lib/Table/util.js +1 -1
- package/lib/Tabs/component.json +227 -0
- package/lib/Tag/component.json +221 -0
- package/lib/Tag/index.css +1 -1
- package/lib/Tag/index.d.ts +1 -1
- package/lib/Tag/index.js +1 -1
- package/lib/Tag/style/index.css +1 -1
- package/lib/TextEditor/component.json +186 -0
- package/lib/TextEditor/index.d.ts +5 -5
- package/lib/TextEditor/index.js +1 -1
- package/lib/TextField/component.json +290 -0
- package/lib/TextField/index.d.ts +2 -2
- package/lib/TextField/index.js +1 -1
- package/lib/TimePicker/component.json +176 -0
- package/lib/Timeline/component.json +110 -0
- package/lib/Title/component.json +156 -0
- package/lib/ToggleButton/component.json +153 -0
- package/lib/ToggleButton/index.js +1 -1
- package/lib/Tooltip/component.json +176 -0
- package/lib/Tooltip/index.js +1 -1
- package/lib/Tooltip/interface.d.ts +14 -1
- package/lib/Tooltip/utils.js +1 -1
- package/lib/Transfer/component.json +157 -0
- package/lib/Tree/OperateBar/index.js +2 -2
- package/lib/Tree/Tree.js +1 -1
- package/lib/Tree/component.json +512 -0
- package/lib/Tree/interface.d.ts +1 -1
- package/lib/Upload/component.json +450 -0
- package/lib/Upload/util.js +1 -1
- package/lib/Utils/snack-kit-shims.d.ts +18 -0
- package/lib/Utils/snack-kit-shims.js +2 -0
- package/lib/Utils/type.d.ts +0 -6
- package/lib/_virtual/index.js +1 -1
- package/lib/_virtual/index2.js +1 -1
- package/lib/index.d.ts +4 -0
- package/lib/index.js +1 -1
- package/lib/locale/en-US.d.ts +3 -0
- package/lib/locale/en-US.js +1 -1
- package/lib/locale/en_US.d.ts +361 -0
- package/lib/locale/en_US.js +2 -0
- package/lib/locale/index.d.ts +1 -723
- package/lib/locale/index2.js +2 -0
- package/lib/locale/zh-CN.d.ts +3 -0
- package/lib/locale/zh-CN.js +1 -1
- package/lib/locale/zh_CN.d.ts +361 -0
- package/lib/locale/zh_CN.js +2 -0
- package/lib/node_modules/classnames/index.js +1 -1
- package/package.json +24 -4
- package/es/_virtual/index3.js +0 -5
- package/es/_virtual/index4.js +0 -5
- package/es/node_modules/@para-snack/core/dist/index.js +0 -5231
- package/lib/_virtual/index3.js +0 -2
- package/lib/_virtual/index4.js +0 -2
- package/lib/node_modules/@para-snack/core/dist/index.js +0 -20
- /package/es/{InputCode → CodeEditor}/index.css +0 -0
- /package/es/{Utils/Hooks → Hooks}/useResizeObserver.d.ts +0 -0
- /package/es/{Utils/Hooks → Hooks}/useResizeObserver.js +0 -0
- /package/lib/{Utils/Hooks → Hooks}/useResizeObserver.d.ts +0 -0
- /package/lib/{Utils/Hooks → Hooks}/useResizeObserver.js +0 -0
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
import { j as t } from "../_virtual/jsx-runtime.js";
|
|
2
|
+
import * as p from "react";
|
|
3
|
+
import { Lock as S } from "../node_modules/@para-ui/icons/Lock/index.js";
|
|
4
|
+
import { $prefixCls as o } from "../GlobalContext/constant.js";
|
|
5
|
+
const i = 30, d = 240, m = 4, b = p.forwardRef((v, g) => {
|
|
6
|
+
const {
|
|
7
|
+
instanceClass: T,
|
|
8
|
+
visible: $,
|
|
9
|
+
rect: a,
|
|
10
|
+
header: j,
|
|
11
|
+
candidates: s,
|
|
12
|
+
highlight: h,
|
|
13
|
+
virtualizeThreshold: w,
|
|
14
|
+
onSelect: N,
|
|
15
|
+
onHighlightChange: E
|
|
16
|
+
} = v, [H, x] = p.useState(0), c = p.useRef(null);
|
|
17
|
+
if (p.useEffect(() => {
|
|
18
|
+
x(0), c.current && (c.current.scrollTop = 0);
|
|
19
|
+
}, [s]), p.useEffect(() => {
|
|
20
|
+
const e = c.current;
|
|
21
|
+
if (!e)
|
|
22
|
+
return;
|
|
23
|
+
const n = h * i, r = e.scrollTop, f = r + e.clientHeight;
|
|
24
|
+
n < r ? e.scrollTop = n : n + i > f && (e.scrollTop = n + i - e.clientHeight);
|
|
25
|
+
}, [h]), !$ || s.length === 0)
|
|
26
|
+
return null;
|
|
27
|
+
const l = s.length > w, u = l ? Math.max(0, Math.floor(H / i) - m) : 0, M = l ? Math.ceil(d / i) + m * 2 : s.length, R = l ? Math.min(s.length, u + M) : s.length, y = s.slice(u, R), C = u * i;
|
|
28
|
+
return /* @__PURE__ */ t.jsxs(
|
|
29
|
+
"div",
|
|
30
|
+
{
|
|
31
|
+
ref: g,
|
|
32
|
+
className: `${o}-expression-input-popup ${T}`,
|
|
33
|
+
style: { position: "fixed", top: a.top, left: a.left, width: a.width },
|
|
34
|
+
children: [
|
|
35
|
+
/* @__PURE__ */ t.jsx("div", { className: `${o}-expression-input-popup-header`, children: j }),
|
|
36
|
+
/* @__PURE__ */ t.jsx(
|
|
37
|
+
"div",
|
|
38
|
+
{
|
|
39
|
+
ref: c,
|
|
40
|
+
className: `${o}-expression-input-popup-list`,
|
|
41
|
+
style: { maxHeight: d, overflowY: "auto" },
|
|
42
|
+
onScroll: (e) => {
|
|
43
|
+
l && x(e.currentTarget.scrollTop);
|
|
44
|
+
},
|
|
45
|
+
children: /* @__PURE__ */ t.jsx("div", { style: { height: l ? s.length * i : void 0, position: "relative" }, children: /* @__PURE__ */ t.jsx(
|
|
46
|
+
"div",
|
|
47
|
+
{
|
|
48
|
+
style: {
|
|
49
|
+
position: l ? "absolute" : void 0,
|
|
50
|
+
top: l ? C : void 0,
|
|
51
|
+
left: 0,
|
|
52
|
+
right: 0
|
|
53
|
+
},
|
|
54
|
+
children: y.map((e, n) => {
|
|
55
|
+
const r = u + n, f = r === h;
|
|
56
|
+
return /* @__PURE__ */ t.jsxs(
|
|
57
|
+
"div",
|
|
58
|
+
{
|
|
59
|
+
"data-testid": `expr-candidate-row-${e.value}`,
|
|
60
|
+
className: `${o}-expression-input-popup-item${f ? ` ${o}-expression-input-popup-item-active` : ""}`,
|
|
61
|
+
style: { height: i },
|
|
62
|
+
onMouseEnter: () => E(r),
|
|
63
|
+
onMouseDown: (I) => {
|
|
64
|
+
I.preventDefault(), N(e);
|
|
65
|
+
},
|
|
66
|
+
children: [
|
|
67
|
+
/* @__PURE__ */ t.jsx("span", { className: `${o}-expression-input-popup-item-value`, children: e.label ?? e.value }),
|
|
68
|
+
e.desc && /* @__PURE__ */ t.jsx("span", { className: `${o}-expression-input-popup-item-desc`, children: e.desc }),
|
|
69
|
+
e.sensitive && /* @__PURE__ */ t.jsx(
|
|
70
|
+
S,
|
|
71
|
+
{
|
|
72
|
+
"data-testid": `expr-candidate-lock-${e.value}`,
|
|
73
|
+
className: `${o}-expression-input-popup-item-lock`
|
|
74
|
+
}
|
|
75
|
+
)
|
|
76
|
+
]
|
|
77
|
+
},
|
|
78
|
+
e.value
|
|
79
|
+
);
|
|
80
|
+
})
|
|
81
|
+
}
|
|
82
|
+
) })
|
|
83
|
+
}
|
|
84
|
+
)
|
|
85
|
+
]
|
|
86
|
+
}
|
|
87
|
+
);
|
|
88
|
+
});
|
|
89
|
+
b.displayName = "Popup";
|
|
90
|
+
export {
|
|
91
|
+
b as Popup
|
|
92
|
+
};
|
|
93
|
+
//# sourceMappingURL=Popup.js.map
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "ExpressionInput",
|
|
3
|
+
"category": "数据录入",
|
|
4
|
+
"description": "单行表达式变量自动补全输入框,默认要求 {{ }} 包裹触发,候选数据完全由业务方通过 resolveCandidates 注入。",
|
|
5
|
+
"semantic": {
|
|
6
|
+
"intent": ["在文本中输入引用变量的表达式", "按命名空间层级下钻选择变量"],
|
|
7
|
+
"useCases": ["脚本/配置里引用运行时变量", "低代码画布属性面板里的表达式绑定"],
|
|
8
|
+
"riskLevel": "low"
|
|
9
|
+
},
|
|
10
|
+
"variants": {
|
|
11
|
+
"braces": { "meaning": "默认触发模式,要求光标位于 {{ }} 区间内才弹出候选" },
|
|
12
|
+
"bare": { "meaning": "不要求大括号包裹,任意位置匹配 triggerPrefix 即弹出候选" }
|
|
13
|
+
},
|
|
14
|
+
"states": ["default", "focus", "disabled", "readOnly", "popup-open"],
|
|
15
|
+
"idealProps": {
|
|
16
|
+
"value": { "type": "string", "description": "受控值", "required": false },
|
|
17
|
+
"onChange": { "type": "function", "description": "值变化回调", "signature": "(value: string) => void" },
|
|
18
|
+
"resolveCandidates": {
|
|
19
|
+
"type": "function",
|
|
20
|
+
"description": "按命名空间路径返回该层级的完整候选列表,组件内部按 parts 缓存",
|
|
21
|
+
"signature": "(parts: string[]) => ExprCandidate[]",
|
|
22
|
+
"required": true
|
|
23
|
+
},
|
|
24
|
+
"triggerMode": {
|
|
25
|
+
"type": "string",
|
|
26
|
+
"description": "触发匹配机制",
|
|
27
|
+
"values": ["braces", "bare"],
|
|
28
|
+
"default": "braces"
|
|
29
|
+
},
|
|
30
|
+
"triggerPrefix": { "type": "string", "description": "触发前缀符号", "default": "$" },
|
|
31
|
+
"virtualizeThreshold": { "type": "number", "description": "候选数超过该阈值启用虚拟滚动", "default": "50" },
|
|
32
|
+
"renderPopupHeader": {
|
|
33
|
+
"type": "function",
|
|
34
|
+
"description": "自定义浮层 header 文案",
|
|
35
|
+
"signature": "(ctx: ExprChainCtx, count: number) => React.ReactNode",
|
|
36
|
+
"required": false
|
|
37
|
+
},
|
|
38
|
+
"expressionTooltip": {
|
|
39
|
+
"type": "ReactNode",
|
|
40
|
+
"description": "表达式说明 tooltip 文案,不传则不展示;仅当 value 命中表达式格式(braces/bare)时 hover/focus 才弹出",
|
|
41
|
+
"required": false
|
|
42
|
+
}
|
|
43
|
+
},
|
|
44
|
+
"commonMisconceptions": [
|
|
45
|
+
"以为 resolveCandidates 每次按键都会被调用——实际只有下钻/回退到新的命名空间层级时才调用,同层级内逐字过滤是客户端完成的",
|
|
46
|
+
"以为默认触发不需要 {{ }} 包裹——默认 triggerMode 是 'braces',裸写 $.xxx 不会触发,需要显式传 triggerMode='bare' 才对齐 Ditto 原始行为",
|
|
47
|
+
"以为传入的 candidate.value 可以是任意字符串——实际必须是合法标识符字符([A-Za-z0-9_$]),否则插入后再次解析会被截断",
|
|
48
|
+
"以为 expressionTooltip 会随打字实时弹出/消失——实际是否命中只在 hover/focus 触发那一刻判定,光标停留期间继续输入使 value 从未命中变为命中不会自动弹出,需要重新 hover/focus",
|
|
49
|
+
"以为花括号着色和 expressionTooltip 用同一套判定标准——实际着色只看 {{ }} 是否配对闭合,不校验内容合法性,门槛比 expressionTooltip 低,{{$.}} 这类值会着色但不会弹出 tooltip,两者可能不一致,这是预期行为"
|
|
50
|
+
],
|
|
51
|
+
"do": [
|
|
52
|
+
"为需要继续下钻子级的候选项设置 chain: true,让选中后自动追加 . 方便连续输入",
|
|
53
|
+
"为敏感字段设置 sensitive: true,组件会自动展示锁图标",
|
|
54
|
+
"在 Modal/Drawer 中使用时无需额外处理,组件内部已对接 usePopupContainer 自动寻找最近可滚动祖先容器"
|
|
55
|
+
],
|
|
56
|
+
"dont": [
|
|
57
|
+
"不要在 resolveCandidates 内部做未做缓存的重量级计算并假设组件会防抖——组件只在 parts 变化时调用一次,但单次调用本身仍需业务方保证足够快",
|
|
58
|
+
"不要给多个实例传相同的 DOM id 或手动操作 document.body 上的浮层 — 组件已经用 UUID 做了实例隔离"
|
|
59
|
+
],
|
|
60
|
+
"events": {
|
|
61
|
+
"onChange": {
|
|
62
|
+
"signature": "(value: string) => void",
|
|
63
|
+
"asyncSupported": false,
|
|
64
|
+
"examples": ["受控更新 value 状态"],
|
|
65
|
+
"commonMistakes": ["忘记把新 value 传回 props.value,导致组件表现为不可编辑"]
|
|
66
|
+
}
|
|
67
|
+
},
|
|
68
|
+
"typescriptPitfalls": [
|
|
69
|
+
{
|
|
70
|
+
"issue": "resolveCandidates 类型签名从 ChainCtx 变成了 parts: string[]",
|
|
71
|
+
"wrong": "resolveCandidates={(ctx) => ctx.partial ? [] : rootCandidates}",
|
|
72
|
+
"right": "resolveCandidates={(parts) => parts.length === 0 ? rootCandidates : []}"
|
|
73
|
+
}
|
|
74
|
+
],
|
|
75
|
+
"mapping": {
|
|
76
|
+
"realComponent": "ExpressionInput",
|
|
77
|
+
"adapter": "无,直接使用"
|
|
78
|
+
}
|
|
79
|
+
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/** partial 片段本身允许出现的字符(不含 .) */
|
|
2
|
+
export declare const ID_TAIL: RegExp;
|
|
3
|
+
export interface DetectChainOptions {
|
|
4
|
+
triggerPrefix: string;
|
|
5
|
+
triggerMode: 'braces' | 'bare';
|
|
6
|
+
}
|
|
7
|
+
export interface ChainResult {
|
|
8
|
+
/** 链路在原文本中的起始下标(含前缀符号) */
|
|
9
|
+
startIdx: number;
|
|
10
|
+
/** 链路在原文本中的结束下标(即光标位置) */
|
|
11
|
+
endIdx: number;
|
|
12
|
+
/** 已确定的上级片段 */
|
|
13
|
+
parts: string[];
|
|
14
|
+
/** 正在输入的片段 */
|
|
15
|
+
partial: string;
|
|
16
|
+
}
|
|
17
|
+
export declare function detectChainAtCursor(text: string, cursor: number, options: DetectChainOptions): ChainResult | null;
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
const x = /[A-Za-z0-9_$]/;
|
|
2
|
+
function g(t) {
|
|
3
|
+
const e = t.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
|
|
4
|
+
return new RegExp(`[A-Za-z0-9_.${e}]`);
|
|
5
|
+
}
|
|
6
|
+
function h(t, e) {
|
|
7
|
+
const i = t.slice(0, e), r = i.lastIndexOf("{{");
|
|
8
|
+
if (r === -1 || i.lastIndexOf("}}") > r)
|
|
9
|
+
return !1;
|
|
10
|
+
const o = t.slice(e), n = o.indexOf("}}"), s = o.indexOf("{{");
|
|
11
|
+
return n === -1 ? !0 : !(s !== -1 && s < n);
|
|
12
|
+
}
|
|
13
|
+
function I(t, e, i) {
|
|
14
|
+
const { triggerPrefix: r, triggerMode: c } = i;
|
|
15
|
+
if (c === "braces" && !h(t, e))
|
|
16
|
+
return null;
|
|
17
|
+
const o = g(r);
|
|
18
|
+
let n = e;
|
|
19
|
+
for (; n > 0 && o.test(t[n - 1]); )
|
|
20
|
+
n -= 1;
|
|
21
|
+
const s = t.slice(n, e), f = `${r}.`;
|
|
22
|
+
if (!s.startsWith(f))
|
|
23
|
+
return null;
|
|
24
|
+
const a = s.slice(f.length), u = a.length > 0 ? a.split(".") : [""], l = u.pop(), d = u;
|
|
25
|
+
return l.length > 0 && !l.split("").every((p) => x.test(p)) ? null : { startIdx: n, endIdx: e, parts: d, partial: l };
|
|
26
|
+
}
|
|
27
|
+
export {
|
|
28
|
+
x as ID_TAIL,
|
|
29
|
+
I as detectChainAtCursor
|
|
30
|
+
};
|
|
31
|
+
//# sourceMappingURL=detectChainAtCursor.js.map
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
function n(e, r) {
|
|
2
|
+
if (!r)
|
|
3
|
+
return e;
|
|
4
|
+
const t = r.toLowerCase();
|
|
5
|
+
return e.filter((o) => {
|
|
6
|
+
if (o.value.toLowerCase().startsWith(t))
|
|
7
|
+
return !0;
|
|
8
|
+
const l = o.label?.toLowerCase();
|
|
9
|
+
return !!l && l.includes(t);
|
|
10
|
+
});
|
|
11
|
+
}
|
|
12
|
+
export {
|
|
13
|
+
n as filterCandidatesByPartial
|
|
14
|
+
};
|
|
15
|
+
//# sourceMappingURL=filterCandidatesByPartial.js.map
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
const n = /\{\{[^{}]*\}\}/g;
|
|
2
|
+
function s(e) {
|
|
3
|
+
if (!e)
|
|
4
|
+
return [];
|
|
5
|
+
const i = [];
|
|
6
|
+
let h = 0, t;
|
|
7
|
+
for (n.lastIndex = 0; (t = n.exec(e)) !== null; )
|
|
8
|
+
t.index > h && i.push({ text: e.slice(h, t.index), highlight: !1 }), i.push({ text: t[0], highlight: !0 }), h = t.index + t[0].length;
|
|
9
|
+
return h < e.length && i.push({ text: e.slice(h), highlight: !1 }), i;
|
|
10
|
+
}
|
|
11
|
+
export {
|
|
12
|
+
s as highlightSegments
|
|
13
|
+
};
|
|
14
|
+
//# sourceMappingURL=highlightSegments.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
@charset "UTF-8";.paraui-v4-expression-input{display:inline-block;width:100%}.paraui-v4-expression-input input{position:relative;z-index:1;color:transparent!important;caret-color:#1d2126!important}.paraui-v4-expression-input-overlay{position:absolute;inset:0;z-index:0;overflow:hidden;color:#1d2126;white-space:pre;pointer-events:none}.paraui-v4-expression-input-overlay-highlight{color:#2e65e6}.paraui-v4-expression-input-popup{z-index:1500;min-width:280px;overflow:hidden;background:#fff;border:1px solid rgb(212,218,227);border-radius:4px;box-shadow:0 2px 8px #d4dae366}.paraui-v4-expression-input-popup-header{padding:6px 12px;font-size:12px;color:#a1a8b3;border-bottom:1px solid rgb(234,236,241)}.paraui-v4-expression-input-popup-list{padding:4px 0}.paraui-v4-expression-input-popup-item{display:flex;align-items:center;padding:0 12px;font-size:14px;color:#1d2126;white-space:nowrap;cursor:pointer}.paraui-v4-expression-input-popup-item-active{color:#2e65e6;background:#f0f5ff}.paraui-v4-expression-input-popup-item-value{flex:0 0 auto;margin-right:8px}.paraui-v4-expression-input-popup-item-desc{flex:1 1 auto;overflow:hidden;font-size:12px;color:#a1a8b3;text-overflow:ellipsis}.paraui-v4-expression-input-popup-item-lock{flex:0 0 auto;margin-left:8px;font-size:16px;color:#a1a8b3}
|
|
@@ -0,0 +1,178 @@
|
|
|
1
|
+
import { j as a } from "../_virtual/jsx-runtime.js";
|
|
2
|
+
import './index.css';/* empty css */
|
|
3
|
+
import * as r from "react";
|
|
4
|
+
import * as b from "react-dom";
|
|
5
|
+
import { UUID as X } from "@snack-kit/lib";
|
|
6
|
+
import { TextField as Z } from "../TextField/index.js";
|
|
7
|
+
import { Tooltip as Q } from "../Tooltip/index.js";
|
|
8
|
+
import Y from "../GlobalContext/usePopupContainer.js";
|
|
9
|
+
import ee from "../GlobalContext/useFormatMessage.js";
|
|
10
|
+
import { $prefixCls as T } from "../GlobalContext/constant.js";
|
|
11
|
+
import { useExpressionInput as te } from "./useExpressionInput.js";
|
|
12
|
+
import { Popup as re } from "./Popup.js";
|
|
13
|
+
import { isExpressionValue as ne } from "./isExpressionValue.js";
|
|
14
|
+
import { highlightSegments as oe } from "./highlightSegments.js";
|
|
15
|
+
import ie from "./HighlightOverlay.js";
|
|
16
|
+
import se from "./lang/index.js";
|
|
17
|
+
const le = 50, ae = "$", Re = (j) => {
|
|
18
|
+
const {
|
|
19
|
+
value: o,
|
|
20
|
+
onChange: z,
|
|
21
|
+
resolveCandidates: D,
|
|
22
|
+
triggerMode: h = "braces",
|
|
23
|
+
triggerPrefix: d = ae,
|
|
24
|
+
virtualizeThreshold: F = le,
|
|
25
|
+
renderPopupHeader: v,
|
|
26
|
+
expressionTooltip: p,
|
|
27
|
+
disabled: E,
|
|
28
|
+
readOnly: I,
|
|
29
|
+
className: x,
|
|
30
|
+
...y
|
|
31
|
+
} = j, H = ee("ExpressionInput", se), [f] = r.useState(() => `${T}-expression-input-${X()}`), n = r.useRef(null), S = r.useRef(null), O = r.useRef({ getRootDomNode: () => n.current }), P = Y(O), [$, M] = r.useState({ top: 0, left: 0, width: 0 }), l = r.useRef(null), [w, q] = r.useState(null), [U, W] = r.useState({}), _ = r.useMemo(() => oe(o ?? ""), [o]), {
|
|
32
|
+
open: i,
|
|
33
|
+
ctx: c,
|
|
34
|
+
candidates: g,
|
|
35
|
+
highlight: A,
|
|
36
|
+
setHighlight: B,
|
|
37
|
+
handleValueChange: K,
|
|
38
|
+
handleKeyDown: N,
|
|
39
|
+
handleSelect: V,
|
|
40
|
+
close: R,
|
|
41
|
+
pendingCursorRef: m
|
|
42
|
+
} = te({
|
|
43
|
+
value: o ?? "",
|
|
44
|
+
onChange: z,
|
|
45
|
+
resolveCandidates: D,
|
|
46
|
+
triggerMode: h,
|
|
47
|
+
triggerPrefix: d,
|
|
48
|
+
disabled: E,
|
|
49
|
+
readOnly: I
|
|
50
|
+
}), s = r.useCallback(() => {
|
|
51
|
+
const e = n.current?.querySelector("input, textarea");
|
|
52
|
+
if (!e)
|
|
53
|
+
return;
|
|
54
|
+
const t = e.getBoundingClientRect();
|
|
55
|
+
M({ top: t.bottom + 4, left: t.left, width: Math.max(t.width, 280) });
|
|
56
|
+
}, []), u = r.useCallback(() => {
|
|
57
|
+
const e = n.current?.querySelector("input, textarea");
|
|
58
|
+
if (!e)
|
|
59
|
+
return;
|
|
60
|
+
q(e.parentElement);
|
|
61
|
+
const t = window.getComputedStyle(e);
|
|
62
|
+
W({
|
|
63
|
+
paddingTop: t.paddingTop,
|
|
64
|
+
paddingRight: t.paddingRight,
|
|
65
|
+
paddingBottom: t.paddingBottom,
|
|
66
|
+
paddingLeft: t.paddingLeft,
|
|
67
|
+
fontFamily: t.fontFamily,
|
|
68
|
+
fontSize: t.fontSize,
|
|
69
|
+
fontWeight: t.fontWeight,
|
|
70
|
+
lineHeight: t.lineHeight,
|
|
71
|
+
letterSpacing: t.letterSpacing,
|
|
72
|
+
boxSizing: t.boxSizing,
|
|
73
|
+
borderWidth: t.borderWidth,
|
|
74
|
+
borderStyle: t.borderStyle,
|
|
75
|
+
borderColor: "transparent"
|
|
76
|
+
});
|
|
77
|
+
}, []);
|
|
78
|
+
r.useLayoutEffect(() => (u(), window.addEventListener("resize", u), () => window.removeEventListener("resize", u)), [u]), r.useEffect(() => {
|
|
79
|
+
const e = n.current?.querySelector("input, textarea");
|
|
80
|
+
if (!e)
|
|
81
|
+
return;
|
|
82
|
+
const t = () => {
|
|
83
|
+
l.current && (l.current.scrollLeft = e.scrollLeft);
|
|
84
|
+
};
|
|
85
|
+
return e.addEventListener("scroll", t), () => e.removeEventListener("scroll", t);
|
|
86
|
+
}, []), r.useEffect(() => {
|
|
87
|
+
const e = n.current?.querySelector("input, textarea");
|
|
88
|
+
e && l.current && (l.current.scrollLeft = e.scrollLeft);
|
|
89
|
+
}, [o]), r.useEffect(() => {
|
|
90
|
+
const e = m.current;
|
|
91
|
+
if (e === null)
|
|
92
|
+
return;
|
|
93
|
+
const t = n.current?.querySelector("input, textarea");
|
|
94
|
+
t && (t.focus(), t.setSelectionRange(e, e)), m.current = null;
|
|
95
|
+
}, [o, m]), r.useEffect(() => {
|
|
96
|
+
if (i)
|
|
97
|
+
return s(), window.addEventListener("scroll", s, !0), window.addEventListener("resize", s), () => {
|
|
98
|
+
window.removeEventListener("scroll", s, !0), window.removeEventListener("resize", s);
|
|
99
|
+
};
|
|
100
|
+
}, [i, s]), r.useEffect(() => {
|
|
101
|
+
if (!i)
|
|
102
|
+
return;
|
|
103
|
+
const e = (t) => {
|
|
104
|
+
const C = t.target;
|
|
105
|
+
n.current?.contains(C) || S.current?.contains(C) || R();
|
|
106
|
+
};
|
|
107
|
+
return document.addEventListener("mousedown", e, !0), () => document.removeEventListener("mousedown", e, !0);
|
|
108
|
+
}, [i, R, f]);
|
|
109
|
+
const k = (e) => {
|
|
110
|
+
const t = e.target.selectionStart ?? e.target.value.length;
|
|
111
|
+
K(e.target.value, t);
|
|
112
|
+
}, G = c ? v ? v(c, g.length) : H(
|
|
113
|
+
{ id: "header" },
|
|
114
|
+
{ path: c.parts.length ? c.parts.join(".") : d, count: g.length }
|
|
115
|
+
) : null, J = !!p && ne(o ?? "", d, h), L = /* @__PURE__ */ a.jsx(
|
|
116
|
+
Z,
|
|
117
|
+
{
|
|
118
|
+
...y,
|
|
119
|
+
value: o,
|
|
120
|
+
disabled: E,
|
|
121
|
+
onChange: k,
|
|
122
|
+
onKeydown: (e) => {
|
|
123
|
+
N(e), y.onKeydown?.(e);
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
);
|
|
127
|
+
return /* @__PURE__ */ a.jsxs(
|
|
128
|
+
"div",
|
|
129
|
+
{
|
|
130
|
+
ref: n,
|
|
131
|
+
className: `${T}-expression-input ${f}${x ? ` ${x}` : ""}`,
|
|
132
|
+
children: [
|
|
133
|
+
p ? /* @__PURE__ */ a.jsx(
|
|
134
|
+
Q,
|
|
135
|
+
{
|
|
136
|
+
title: p,
|
|
137
|
+
trigger: ["hover", "focus"],
|
|
138
|
+
...J ? {} : { visible: !1 },
|
|
139
|
+
children: L
|
|
140
|
+
}
|
|
141
|
+
) : L,
|
|
142
|
+
w && b.createPortal(
|
|
143
|
+
/* @__PURE__ */ a.jsx(
|
|
144
|
+
ie,
|
|
145
|
+
{
|
|
146
|
+
ref: l,
|
|
147
|
+
segments: _,
|
|
148
|
+
style: U
|
|
149
|
+
}
|
|
150
|
+
),
|
|
151
|
+
w
|
|
152
|
+
),
|
|
153
|
+
i && n.current && b.createPortal(
|
|
154
|
+
/* @__PURE__ */ a.jsx(
|
|
155
|
+
re,
|
|
156
|
+
{
|
|
157
|
+
ref: S,
|
|
158
|
+
instanceClass: f,
|
|
159
|
+
visible: i,
|
|
160
|
+
rect: $,
|
|
161
|
+
header: G,
|
|
162
|
+
candidates: g,
|
|
163
|
+
highlight: A,
|
|
164
|
+
virtualizeThreshold: F,
|
|
165
|
+
onSelect: V,
|
|
166
|
+
onHighlightChange: B
|
|
167
|
+
}
|
|
168
|
+
),
|
|
169
|
+
P(n.current)
|
|
170
|
+
)
|
|
171
|
+
]
|
|
172
|
+
}
|
|
173
|
+
);
|
|
174
|
+
};
|
|
175
|
+
export {
|
|
176
|
+
Re as default
|
|
177
|
+
};
|
|
178
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import { TextFieldProps } from '../TextField';
|
|
2
|
+
import * as React from 'react';
|
|
3
|
+
export interface ExprCandidate {
|
|
4
|
+
/** 插入表达式时使用的实际值 */
|
|
5
|
+
value: string;
|
|
6
|
+
/** 展示用名称,不传则显示 value */
|
|
7
|
+
label?: string;
|
|
8
|
+
/** 右侧描述文案 */
|
|
9
|
+
desc?: string;
|
|
10
|
+
/** 选中后是否自动追加 `.` 以便继续下钻子级 */
|
|
11
|
+
chain?: boolean;
|
|
12
|
+
/** 是否为敏感字段,展示锁图标 */
|
|
13
|
+
sensitive?: boolean;
|
|
14
|
+
}
|
|
15
|
+
export interface ExprChainCtx {
|
|
16
|
+
/** 当前光标所在链路中,已确定的上级片段(不含正在输入的部分) */
|
|
17
|
+
parts: string[];
|
|
18
|
+
/** 当前正在输入、尚未确定的片段 */
|
|
19
|
+
partial: string;
|
|
20
|
+
}
|
|
21
|
+
export interface ExpressionInputProps extends Omit<TextFieldProps, 'value' | 'onChange'> {
|
|
22
|
+
value?: string;
|
|
23
|
+
onChange?: (value: string) => void;
|
|
24
|
+
/**
|
|
25
|
+
* 只读态,输入触发前缀时不弹出候选浮层。
|
|
26
|
+
* 注:仓库现有 TextField 无 readOnly 能力,该态仅影响候选弹出逻辑,不改变输入框本身的可编辑外观。
|
|
27
|
+
*/
|
|
28
|
+
readOnly?: boolean;
|
|
29
|
+
/**
|
|
30
|
+
* 按当前命名空间路径(不含正在输入的 partial)返回该层级的完整候选列表。
|
|
31
|
+
* 仅在 parts 变化(下钻/回退层级)时调用,组件内部按 parts 缓存结果;
|
|
32
|
+
* 同层级内继续输入 partial 只做客户端过滤,不会重复调用。
|
|
33
|
+
*/
|
|
34
|
+
resolveCandidates: (parts: string[]) => ExprCandidate[];
|
|
35
|
+
/**
|
|
36
|
+
* 触发匹配机制,默认 'braces':仅当光标位于 `{{ }}` 区间内且内容匹配
|
|
37
|
+
* `{prefix}.xxx` 才弹窗。'bare':不要求大括号包裹,对齐 Ditto 原始行为。
|
|
38
|
+
*/
|
|
39
|
+
triggerMode?: 'braces' | 'bare';
|
|
40
|
+
/** 触发表达式补全的前缀符号,默认 '$' */
|
|
41
|
+
triggerPrefix?: string;
|
|
42
|
+
/** 候选数量超过该阈值时启用虚拟滚动,默认 50 */
|
|
43
|
+
virtualizeThreshold?: number;
|
|
44
|
+
/** 自定义浮层 header 文案(面包屑 + 数量 + 快捷键提示),不传则使用默认 i18n 文案 */
|
|
45
|
+
renderPopupHeader?: (ctx: ExprChainCtx, count: number) => React.ReactNode;
|
|
46
|
+
/**
|
|
47
|
+
* 表达式说明 tooltip 文案,不传则不展示;仅当 value 命中表达式格式(braces/bare)时,hover/focus 输入框才会真正弹出。
|
|
48
|
+
* 注:是否命中只在触发 hover/focus 那一刻判定,若光标停留期间继续输入使 value 从未命中变为命中,
|
|
49
|
+
* 不会自动弹出,需要重新 hover/focus 才会展示——这是已知的边界行为,非 bug。
|
|
50
|
+
*/
|
|
51
|
+
expressionTooltip?: React.ReactNode;
|
|
52
|
+
}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { ID_TAIL as s } from "./detectChainAtCursor.js";
|
|
2
|
+
function o(e) {
|
|
3
|
+
return e.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
|
|
4
|
+
}
|
|
5
|
+
function c(e) {
|
|
6
|
+
const t = o(e), r = `${s.source}+`;
|
|
7
|
+
return `${t}\\.${r}(?:\\.${r})*`;
|
|
8
|
+
}
|
|
9
|
+
function p(e, t, r) {
|
|
10
|
+
if (!e)
|
|
11
|
+
return !1;
|
|
12
|
+
const n = c(t);
|
|
13
|
+
return r === "braces" ? new RegExp(`\\{\\{\\s*${n}\\s*\\}\\}`).test(e) : new RegExp(n).test(e);
|
|
14
|
+
}
|
|
15
|
+
export {
|
|
16
|
+
p as isExpressionValue
|
|
17
|
+
};
|
|
18
|
+
//# sourceMappingURL=isExpressionValue.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import './index.css';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
.paraui-v4-expression-input{display:inline-block;width:100%}.paraui-v4-expression-input input{position:relative;z-index:1;color:rgba(0,0,0,0) !important;caret-color:#1d2126 !important}.paraui-v4-expression-input-overlay{position:absolute;top:0;right:0;bottom:0;left:0;z-index:0;overflow:hidden;color:#1d2126;white-space:pre;pointer-events:none}.paraui-v4-expression-input-overlay-highlight{color:#2e65e6}.paraui-v4-expression-input-popup{z-index:1500;min-width:280px;overflow:hidden;background:#fff;border:1px solid #d4dae3;border-radius:4px;box-shadow:0px 2px 8px 0px rgba(212,218,227,.4)}.paraui-v4-expression-input-popup-header{padding:6px 12px;font-size:12px;color:#a1a8b3;border-bottom:1px solid #eaecf1}.paraui-v4-expression-input-popup-list{padding:4px 0}.paraui-v4-expression-input-popup-item{display:flex;align-items:center;padding:0 12px;font-size:14px;color:#1d2126;white-space:nowrap;cursor:pointer}.paraui-v4-expression-input-popup-item-active{color:#2e65e6;background:#f0f5ff}.paraui-v4-expression-input-popup-item-value{flex:0 0 auto;margin-right:8px}.paraui-v4-expression-input-popup-item-desc{flex:1 1 auto;overflow:hidden;font-size:12px;color:#a1a8b3;text-overflow:ellipsis}.paraui-v4-expression-input-popup-item-lock{flex:0 0 auto;margin-left:8px;font-size:16px;color:#a1a8b3}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import './index.css';
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { ExprCandidate, ExprChainCtx } from './interface';
|
|
2
|
+
import * as React from 'react';
|
|
3
|
+
export interface UseExpressionInputOptions {
|
|
4
|
+
value: string;
|
|
5
|
+
onChange?: (value: string) => void;
|
|
6
|
+
resolveCandidates: (parts: string[]) => ExprCandidate[];
|
|
7
|
+
triggerMode: 'braces' | 'bare';
|
|
8
|
+
triggerPrefix: string;
|
|
9
|
+
disabled?: boolean;
|
|
10
|
+
readOnly?: boolean;
|
|
11
|
+
}
|
|
12
|
+
export interface UseExpressionInputResult {
|
|
13
|
+
open: boolean;
|
|
14
|
+
ctx: ExprChainCtx | null;
|
|
15
|
+
candidates: ExprCandidate[];
|
|
16
|
+
highlight: number;
|
|
17
|
+
/** 手动指定当前高亮索引,供鼠标移入候选行时与键盘 ArrowUp/Down 共享同一份高亮状态,避免出现两套独立高亮源 */
|
|
18
|
+
setHighlight: (index: number) => void;
|
|
19
|
+
/** 插入候选后期望的光标落点(相对新 value 的下标),供 Task 6 index.tsx 把光标设置到实际 DOM input 上;未处于"刚插入"状态时为 null */
|
|
20
|
+
pendingCursorRef: React.MutableRefObject<number | null>;
|
|
21
|
+
handleValueChange: (nextValue: string, cursor: number) => void;
|
|
22
|
+
handleKeyDown: (event: React.KeyboardEvent<HTMLInputElement>) => void;
|
|
23
|
+
handleSelect: (candidate: ExprCandidate) => void;
|
|
24
|
+
close: () => void;
|
|
25
|
+
}
|
|
26
|
+
export declare function useExpressionInput(options: UseExpressionInputOptions): UseExpressionInputResult;
|