@ticatec/uniface-element 5.0.0 → 5.0.2
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/README.md +29 -54
- package/README_CN.md +37 -57
- package/dist/app_layout/ClassicLayout.svelte +8 -40
- package/dist/app_layout/ColumnsLayout.svelte +3 -3
- package/dist/app_layout/HeaderLayout.svelte +4 -20
- package/dist/app_layout/RowsLayout.svelte +3 -3
- package/dist/app_layout/SidebarLayout.svelte +4 -20
- package/dist/base-calendar/CalendarBase.svelte +29 -6
- package/dist/base-calendar/CalendarBase.svelte.d.ts +4 -0
- package/dist/base-calendar/MonthPickupPanel.svelte +19 -6
- package/dist/base-calendar/MonthPickupPanel.svelte.d.ts +1 -1
- package/dist/base-calendar/MonthlyCalendar.svelte +18 -2
- package/dist/base-calendar/YearPickupPanel.svelte +24 -6
- package/dist/base-calendar/YearPickupPanel.svelte.d.ts +1 -1
- package/dist/composite/pagination_panel/PaginationPanel.svelte +2 -0
- package/dist/composite/transfer/Transfer.svelte +12 -6
- package/dist/data_display/accordion/Accordion.svelte +1 -4
- package/dist/data_display/card/CommonCardActionBar.svelte +31 -37
- package/dist/data_display/concise_data_table/Column.d.ts +6 -0
- package/dist/data_display/concise_data_table/ConciseListTable.svelte +4 -3
- package/dist/data_display/concise_data_table/DataCell.svelte +3 -3
- package/dist/data_display/list_box/ListBox.svelte +96 -23
- package/dist/data_display/list_box/ListBox.svelte.d.ts +4 -0
- package/dist/data_display/tree_view/TreeNodeView.svelte +25 -4
- package/dist/data_table/DataTable.svelte +5 -5
- package/dist/data_table/DataTable.svelte.d.ts +36 -16
- package/dist/data_table/lib/ActionsColumn.d.ts +2 -2
- package/dist/data_table/lib/DataColumn.d.ts +7 -1
- package/dist/data_table/lib/RowAction.d.ts +5 -5
- package/dist/data_table/lib/clickOutSide.js +6 -5
- package/dist/data_table/parts/FixedHeaderPanel.svelte +18 -3
- package/dist/data_table/parts/FixedRow.svelte +10 -1
- package/dist/data_table/parts/HrefCell.svelte +1 -1
- package/dist/data_table/parts/TableHeaderPanel.svelte +18 -2
- package/dist/data_table/parts/TextCell.svelte +2 -2
- package/dist/form/attachment_files/AttachmentEditor.svelte +20 -15
- package/dist/form/attachment_files/FileRender.svelte +1 -1
- package/dist/form/attachment_files/FileUploadBar.svelte +5 -2
- package/dist/form/attachment_files/FileUploadPanel.svelte +11 -73
- package/dist/form/cascade_options_select/CascadeOptionSelect.svelte +10 -2
- package/dist/form/cascade_options_select/OptionsBox.svelte +48 -2
- package/dist/form/checkbox/CheckBox.svelte +2 -7
- package/dist/form/color_picker/ColorPicker.svelte +150 -35
- package/dist/form/color_picker/ColorPicker.svelte.d.ts +7 -25
- package/dist/form/color_picker/ColorPickerPanel.svelte +23 -20
- package/dist/form/color_picker/ColorPickerPanel.svelte.d.ts +5 -18
- package/dist/form/color_picker/README.md +14 -7
- package/dist/form/color_picker/README_CN.md +14 -7
- package/dist/form/common_editor/CommonEditor.svelte +18 -4
- package/dist/form/common_editor/CommonPicker.svelte +14 -10
- package/dist/form/common_editor/CommonPopupEditor.svelte +8 -1
- package/dist/form/common_range_editor/CommonRangeEditor.svelte +11 -2
- package/dist/form/date_picker/DatePicker.svelte +1 -1
- package/dist/form/date_picker/DateTimePicker.svelte +1 -1
- package/dist/form/date_picker/ScrollBar.svelte +20 -12
- package/dist/form/date_picker/ScrollBar.svelte.d.ts +4 -18
- package/dist/form/date_range/DateRangeEditor.svelte +11 -3
- package/dist/form/group_box/group-check-box/GroupCheckBox.svelte +6 -1
- package/dist/form/group_box/group-radio-box/GroupRadioBox.svelte +6 -1
- package/dist/form/image-files/ImageFilesField.svelte +51 -7
- package/dist/form/image-files/ImagePreview.svelte +23 -9
- package/dist/form/image-files/ImageRender.svelte +69 -11
- package/dist/form/input_options_select/InputOptionsSelect.svelte +10 -2
- package/dist/form/lookup_editor/LookupEditor.svelte +9 -2
- package/dist/form/memo_editor/MemoEditor.svelte +2 -2
- package/dist/form/number_editor/NumberEditor.svelte +2 -2
- package/dist/form/options_multi_select/OptionsMultiSelect.svelte +20 -12
- package/dist/form/options_select/OptionsSelect.svelte +15 -6
- package/dist/form/options_select/OptionsSelect.svelte.d.ts +39 -17
- package/dist/form/prompts_text_editor/PromptsTextEditor.svelte +10 -2
- package/dist/form/radio_button/RadioButton.svelte +2 -8
- package/dist/form/switch/Switch.svelte +4 -4
- package/dist/form/text_editor/TextEditor.svelte +2 -2
- package/dist/form/unit-number-editor/UnitNumberEditor.svelte +10 -2
- package/dist/general/button/Button.svelte +5 -0
- package/dist/general/button/Button.svelte.d.ts +1 -0
- package/dist/general/button/IconButton.svelte +3 -1
- package/dist/general/button/IconButton.svelte.d.ts +1 -0
- package/dist/general/button/TextButton.svelte +3 -0
- package/dist/general/button/TextButton.svelte.d.ts +1 -0
- package/dist/general/icon/Icon.svelte +18 -1
- package/dist/general/split/Split.svelte +24 -4
- package/dist/general/tag/Tag.svelte +9 -1
- package/dist/navigation/nav_menu/MenuItem.d.ts +4 -2
- package/dist/navigation/nav_menu/NavigatorMenu.svelte +157 -34
- package/dist/navigation/nav_menu/NavigatorMenu.svelte.d.ts +2 -3
- package/dist/navigation/nav_menu/NavigatorMenuItem.svelte +25 -13
- package/dist/navigation/nav_menu/NavigatorMenuItem.svelte.d.ts +3 -3
- package/dist/navigation/navigator/Navigator.svelte +17 -17
- package/dist/navigation/page-stack/PageStack.svelte +160 -0
- package/dist/navigation/page-stack/PageStack.svelte.d.ts +24 -0
- package/dist/navigation/page-stack/PageStackContext.d.ts +25 -0
- package/dist/navigation/page-stack/PageStackContext.js +12 -0
- package/dist/navigation/page-stack/PageStackFrame.svelte +24 -0
- package/dist/navigation/page-stack/PageStackFrame.svelte.d.ts +11 -0
- package/dist/navigation/page-stack/README.md +154 -0
- package/dist/navigation/page-stack/README_CN.md +154 -0
- package/dist/navigation/page-stack/index.d.ts +6 -0
- package/dist/navigation/page-stack/index.js +4 -0
- package/dist/navigation/pagination/Pagination.svelte +114 -14
- package/dist/navigation/progress_step_bar/ProgressStepBlock.svelte +1 -5
- package/dist/navigation/tabs/Tabs.svelte +42 -10
- package/dist/navigation/tabs/Tabs.svelte.d.ts +2 -2
- package/dist/overlay/common/FloatingPanel.svelte +3 -17
- package/dist/overlay/common/FullscreenOverlay.svelte +27 -3
- package/dist/overlay/common/FullscreenOverlay.svelte.d.ts +6 -27
- package/dist/overlay/common/ModalPopover.svelte +18 -2
- package/dist/overlay/common/Popover.svelte +61 -57
- package/dist/overlay/common/Popover.svelte.d.ts +1 -5
- package/dist/overlay/common/escapeClose.d.ts +28 -0
- package/dist/overlay/common/escapeClose.js +47 -0
- package/dist/overlay/common/focusTrap.d.ts +8 -0
- package/dist/overlay/common/focusTrap.js +83 -0
- package/dist/overlay/common/mountSingleton.d.ts +27 -0
- package/dist/overlay/common/mountSingleton.js +45 -0
- package/dist/overlay/common/outsideClick.d.ts +28 -0
- package/dist/overlay/common/outsideClick.js +20 -0
- package/dist/overlay/common/scrollLock.d.ts +8 -0
- package/dist/overlay/common/scrollLock.js +49 -0
- package/dist/overlay/common/uniface-utils.js +0 -1
- package/dist/overlay/context-menu/ContextMenu.svelte.js +2 -15
- package/dist/overlay/context-menu/ContextMenuPanel.svelte +27 -3
- package/dist/overlay/dialog/Dialog.svelte +48 -32
- package/dist/overlay/dialog/DialogManager.svelte.js +7 -9
- package/dist/overlay/dialog/DialogWrapper.svelte +5 -2
- package/dist/overlay/drawer/Drawer.svelte +30 -3
- package/dist/overlay/indicator/Indicator.svelte.js +2 -15
- package/dist/overlay/indicator/IndicatorPanel.svelte +4 -1
- package/dist/overlay/message-box/MessageBox.svelte.js +2 -15
- package/dist/overlay/message-box/MessageBoxPanel.svelte +19 -3
- package/dist/overlay/toast/Toast.svelte.js +2 -15
- package/dist/overlay/toast/ToastPanel.svelte +1 -1
- package/dist/overlay/tooltip/Tooltip.svelte +1 -1
- package/dist/ticatec-uniface-web.css +128 -13
- package/dist/types.d.ts +4 -3
- package/dist/utils/prefixFilter.d.ts +3 -3
- package/dist/utils/prefixFilter.js +3 -5
- package/docs/components/README.md +133 -0
- package/docs/components/accordion/README.md +60 -0
- package/docs/components/accordion/example.svelte +7 -0
- package/docs/components/action-bar/README.md +114 -0
- package/docs/components/action-bar/example.svelte +7 -0
- package/docs/components/app-top-bar/README.md +60 -0
- package/docs/components/app-top-bar/example.svelte +9 -0
- package/docs/components/attachment-files/README.md +332 -0
- package/docs/components/attachment-files/example.svelte +16 -0
- package/docs/components/box/README.md +63 -0
- package/docs/components/box/example.svelte +10 -0
- package/docs/components/breadcrumbs/README.md +86 -0
- package/docs/components/breadcrumbs/example.svelte +11 -0
- package/docs/components/button/README.md +103 -0
- package/docs/components/button/example.svelte +10 -0
- package/docs/components/card/README.md +113 -0
- package/docs/components/card/example.svelte +10 -0
- package/docs/components/cascade-options-select/README.md +162 -0
- package/docs/components/cascade-options-select/example.svelte +18 -0
- package/docs/components/checkbox/README.md +103 -0
- package/docs/components/checkbox/example.svelte +15 -0
- package/docs/components/classic-layout/README.md +76 -0
- package/docs/components/classic-layout/example.svelte +16 -0
- package/docs/components/color-picker/README.md +132 -0
- package/docs/components/color-picker/example.svelte +16 -0
- package/docs/components/columns-layout/README.md +70 -0
- package/docs/components/columns-layout/example.svelte +12 -0
- package/docs/components/common-dialog/README.md +109 -0
- package/docs/components/common-dialog/example.svelte +12 -0
- package/docs/components/concise-data-table/README.md +307 -0
- package/docs/components/concise-data-table/example.svelte +16 -0
- package/docs/components/context-menu/README.md +99 -0
- package/docs/components/context-menu/example.svelte +10 -0
- package/docs/components/criteria-field/README.md +69 -0
- package/docs/components/criteria-field/example.svelte +9 -0
- package/docs/components/data-table/README.md +365 -0
- package/docs/components/data-table/example.svelte +23 -0
- package/docs/components/date-picker/README.md +136 -0
- package/docs/components/date-picker/example.svelte +16 -0
- package/docs/components/date-range/README.md +122 -0
- package/docs/components/date-range/example.svelte +15 -0
- package/docs/components/date-time-picker/README.md +142 -0
- package/docs/components/date-time-picker/example.svelte +16 -0
- package/docs/components/dialog/README.md +174 -0
- package/docs/components/dialog/example.svelte +13 -0
- package/docs/components/dialog-board/README.md +41 -0
- package/docs/components/dialog-board/example.svelte +5 -0
- package/docs/components/drawer/README.md +70 -0
- package/docs/components/drawer/example.svelte +12 -0
- package/docs/components/flex-form/README.md +55 -0
- package/docs/components/flex-form/example.svelte +7 -0
- package/docs/components/flex-row-form/README.md +56 -0
- package/docs/components/flex-row-form/example.svelte +7 -0
- package/docs/components/form-field/README.md +84 -0
- package/docs/components/form-field/example.svelte +10 -0
- package/docs/components/full-screen-overlay/README.md +66 -0
- package/docs/components/full-screen-overlay/example.svelte +11 -0
- package/docs/components/grid-form/README.md +75 -0
- package/docs/components/grid-form/example.svelte +9 -0
- package/docs/components/group-check-box/README.md +147 -0
- package/docs/components/group-check-box/example.svelte +21 -0
- package/docs/components/group-radio-box/README.md +144 -0
- package/docs/components/group-radio-box/example.svelte +21 -0
- package/docs/components/header-layout/README.md +65 -0
- package/docs/components/header-layout/example.svelte +12 -0
- package/docs/components/icon/README.md +87 -0
- package/docs/components/icon/example.svelte +9 -0
- package/docs/components/icon-button/README.md +91 -0
- package/docs/components/icon-button/example.svelte +10 -0
- package/docs/components/image-files/README.md +174 -0
- package/docs/components/image-files/example.svelte +19 -0
- package/docs/components/indicator/README.md +53 -0
- package/docs/components/indicator/example.svelte +14 -0
- package/docs/components/input-options-select/README.md +163 -0
- package/docs/components/input-options-select/example.svelte +16 -0
- package/docs/components/list-box/ListItem.svelte +14 -0
- package/docs/components/list-box/README.md +221 -0
- package/docs/components/list-box/example.svelte +61 -0
- package/docs/components/lookup-editor/README.md +137 -0
- package/docs/components/lookup-editor/example.svelte +16 -0
- package/docs/components/memo-editor/README.md +143 -0
- package/docs/components/memo-editor/example.svelte +16 -0
- package/docs/components/message-box/README.md +68 -0
- package/docs/components/message-box/example.svelte +10 -0
- package/docs/components/navigator/README.md +75 -0
- package/docs/components/navigator/example.svelte +13 -0
- package/docs/components/navigator-menu/README.md +113 -0
- package/docs/components/navigator-menu/example.svelte +10 -0
- package/docs/components/number-editor/README.md +144 -0
- package/docs/components/number-editor/example.svelte +16 -0
- package/docs/components/number-range/README.md +116 -0
- package/docs/components/number-range/example.svelte +15 -0
- package/docs/components/options-multi-select/README.md +161 -0
- package/docs/components/options-multi-select/example.svelte +20 -0
- package/docs/components/options-select/README.md +160 -0
- package/docs/components/options-select/example.svelte +21 -0
- package/docs/components/page/README.md +77 -0
- package/docs/components/page/example.svelte +10 -0
- package/docs/components/pagination/README.md +88 -0
- package/docs/components/pagination/example.svelte +10 -0
- package/docs/components/pagination-panel/README.md +120 -0
- package/docs/components/pagination-panel/example.svelte +16 -0
- package/docs/components/popup-hint/README.md +44 -0
- package/docs/components/popup-hint/example.svelte +5 -0
- package/docs/components/progress-bar/README.md +64 -0
- package/docs/components/progress-bar/example.svelte +8 -0
- package/docs/components/progress-step-bar/README.md +93 -0
- package/docs/components/progress-step-bar/example.svelte +7 -0
- package/docs/components/prompts-text-editor/README.md +146 -0
- package/docs/components/prompts-text-editor/example.svelte +17 -0
- package/docs/components/radio-button/README.md +121 -0
- package/docs/components/radio-button/example.svelte +18 -0
- package/docs/components/rows-layout/README.md +70 -0
- package/docs/components/rows-layout/example.svelte +12 -0
- package/docs/components/search-box/README.md +136 -0
- package/docs/components/search-box/example.svelte +16 -0
- package/docs/components/separator/README.md +44 -0
- package/docs/components/separator/example.svelte +7 -0
- package/docs/components/sidebar-layout/README.md +65 -0
- package/docs/components/sidebar-layout/example.svelte +12 -0
- package/docs/components/split/README.md +48 -0
- package/docs/components/split/example.svelte +8 -0
- package/docs/components/switch/README.md +77 -0
- package/docs/components/switch/example.svelte +11 -0
- package/docs/components/tabs/README.md +127 -0
- package/docs/components/tabs/example.svelte +22 -0
- package/docs/components/tag/README.md +63 -0
- package/docs/components/tag/example.svelte +8 -0
- package/docs/components/text-button/README.md +90 -0
- package/docs/components/text-button/example.svelte +9 -0
- package/docs/components/text-editor/README.md +147 -0
- package/docs/components/text-editor/example.svelte +16 -0
- package/docs/components/time-editor/README.md +130 -0
- package/docs/components/time-editor/example.svelte +16 -0
- package/docs/components/toast/README.md +52 -0
- package/docs/components/toast/example.svelte +9 -0
- package/docs/components/tooltip/README.md +44 -0
- package/docs/components/tooltip/example.svelte +5 -0
- package/docs/components/transfer/README.md +109 -0
- package/docs/components/transfer/example.svelte +13 -0
- package/docs/components/tree-view/README.md +163 -0
- package/docs/components/tree-view/example.svelte +26 -0
- package/docs/components/unit-number-editor/README.md +192 -0
- package/docs/components/unit-number-editor/example.svelte +18 -0
- package/package.json +15 -7
|
@@ -0,0 +1,163 @@
|
|
|
1
|
+
# InputOptionsSelect
|
|
2
|
+
|
|
3
|
+
表单组件。本文档由源码自动生成,类型以当前版本为准。
|
|
4
|
+
|
|
5
|
+
## 简介
|
|
6
|
+
|
|
7
|
+
允许输入文字并从候选项中选择的组合控件。
|
|
8
|
+
|
|
9
|
+
## 适用场景
|
|
10
|
+
|
|
11
|
+
- 客户、产品和地址快速检索
|
|
12
|
+
- 用户既需要键入搜索又需要选择完整对象
|
|
13
|
+
|
|
14
|
+
## 导入
|
|
15
|
+
|
|
16
|
+
```ts
|
|
17
|
+
import InputOptionsSelect from '@ticatec/uniface-element/InputOptionsSelect';
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
## 属性
|
|
21
|
+
|
|
22
|
+
| 属性 | 重要 | 类型 | 必填 | 默认值 | 可绑定/响应式 | 说明 |
|
|
23
|
+
| --- | --- | --- | --- | --- | --- | --- |
|
|
24
|
+
| `theme` | 否 | `string` | 否 | `undefined` | 否 | 主题样式名称,用于切换组件外观主题 |
|
|
25
|
+
| `tooltip` | 否 | `string` | 否 | `undefined` | 否 | 悬停提示信息,鼠标悬浮在字段上时显示 |
|
|
26
|
+
| `error` | 否 | `string` | 否 | `undefined` | 否 | 错误信息,用于在字段下方展示校验错误提示 |
|
|
27
|
+
| `disabled` | 是 | `boolean` | 否 | `false` | 否 | 是否禁用该字段,禁用后字段不可编辑且不响应交互 |
|
|
28
|
+
| `readonly` | 是 | `boolean` | 否 | `false` | 否 | 是否只读,只读状态下字段不可编辑但可聚焦和复制 |
|
|
29
|
+
| `compact` | 否 | `boolean` | 否 | `false` | 否 | 是否启用紧凑模式,紧凑模式下字段内部间距更小 |
|
|
30
|
+
| `variant` | 是 | `EditorVariant` | 否 | `undefined` | 否 | 编辑器外观样式变体 |
|
|
31
|
+
| `placeholder` | 是 | `string` | 否 | `undefined` | 否 | 占位提示文本,字段值为空时在输入区域内展示 |
|
|
32
|
+
| `style` | 否 | `string` | 否 | `undefined` | 否 | 自定义内联样式,会应用到字段根容器上 |
|
|
33
|
+
| `onfocus` | 否 | `(event: FocusEvent) => void` | 否 | `undefined` | 否 | 字段获得焦点时触发的回调 |
|
|
34
|
+
| `onblur` | 否 | `(event: FocusEvent) => void` | 否 | `undefined` | 否 | 字段失去焦点时触发的回调 |
|
|
35
|
+
| `onchange` | 是 | `(value?: any) => void` | 否 | `undefined` | 否 | 字段值发生变化时触发的回调 |
|
|
36
|
+
| `mandatory` | 否 | `boolean` | 否 | `false` | 否 | 是否为必填字段,必填时字段值不能为空 |
|
|
37
|
+
| `text` | 否 | `string` | 否 | `undefined` | 否 | 可选配置,具体取值范围和数据结构见类型列。 |
|
|
38
|
+
| `value` | 是 | `any` | 否 | `$bindable()` | 是 | 组件的核心值。支持绑定时建议使用 `bind:value`,外部修改会同步到组件。 |
|
|
39
|
+
| `keyField` | 否 | `string` | 否 | `'code'` | 否 | 数据项中作为唯一值或选中值的字段名。 |
|
|
40
|
+
| `textField` | 否 | `string` | 否 | `"text"` | 否 | 数据项中用于界面显示的文本字段名。 |
|
|
41
|
+
| `retrieveText` | 否 | `RetrieveOptionText` | 否 | `undefined` | 否 | 可选配置,具体取值范围和数据结构见类型列。 |
|
|
42
|
+
| `displayCode` | 否 | `boolean` | 否 | `false` | 否 | 可选配置,具体取值范围和数据结构见类型列。 |
|
|
43
|
+
| `menu$height` | 否 | `number` | 否 | `0` | 否 | 高度配置,数值单位为像素。 |
|
|
44
|
+
| `itemRender` | 否 | `any` | 否 | `undefined` | 否 | 可选配置,具体取值范围和数据结构见类型列。 |
|
|
45
|
+
| `lazyLoader` | 是 | `ListLazyLoader` | 否 | `undefined` | 否 | 异步分页加载器,签名为 `(filterText, pageNo) => Promise<{list, hasMore}>`。ListBox 当前从第 1 页开始请求,滚动到底部且 `hasMore=true` 时继续加载。 |
|
|
46
|
+
| `oninput` | 否 | `(value: string) => void` | 否 | `undefined` | 否 | 事件或行为回调;参数与返回值以类型签名为准。 |
|
|
47
|
+
|
|
48
|
+
> 组件的“可绑定”表示源码使用了 Svelte 5 的 `$bindable`;服务的“响应式”表示成员使用了 `$state`。复杂类型请同时参考 TypeScript 自动补全。
|
|
49
|
+
|
|
50
|
+
## 重要属性说明
|
|
51
|
+
|
|
52
|
+
### `disabled`
|
|
53
|
+
|
|
54
|
+
是否禁用该字段,禁用后字段不可编辑且不响应交互
|
|
55
|
+
|
|
56
|
+
- 类型:`boolean`
|
|
57
|
+
- 默认值:`false`
|
|
58
|
+
- 示例写法:`disabled={false}`
|
|
59
|
+
|
|
60
|
+
### `readonly`
|
|
61
|
+
|
|
62
|
+
是否只读,只读状态下字段不可编辑但可聚焦和复制
|
|
63
|
+
|
|
64
|
+
- 类型:`boolean`
|
|
65
|
+
- 默认值:`false`
|
|
66
|
+
- 示例写法:`readonly={false}`
|
|
67
|
+
|
|
68
|
+
### `variant`
|
|
69
|
+
|
|
70
|
+
编辑器外观样式变体
|
|
71
|
+
|
|
72
|
+
- 类型:`EditorVariant`
|
|
73
|
+
- 默认值:`undefined`
|
|
74
|
+
- 示例写法:`variant="plain"`
|
|
75
|
+
|
|
76
|
+
### `placeholder`
|
|
77
|
+
|
|
78
|
+
占位提示文本,字段值为空时在输入区域内展示
|
|
79
|
+
|
|
80
|
+
- 类型:`string`
|
|
81
|
+
- 默认值:`undefined`
|
|
82
|
+
- 示例写法:`placeholder="请输入或选择"`
|
|
83
|
+
|
|
84
|
+
### `onchange`
|
|
85
|
+
|
|
86
|
+
字段值发生变化时触发的回调
|
|
87
|
+
|
|
88
|
+
- 类型:`(value?: any) => void`
|
|
89
|
+
- 默认值:`undefined`
|
|
90
|
+
- 示例写法:`onchange={async (...args: any[]) => { console.log('onchange', ...args); return true; }}`
|
|
91
|
+
|
|
92
|
+
### `value`
|
|
93
|
+
|
|
94
|
+
组件的核心值。支持绑定时建议使用 `bind:value`,外部修改会同步到组件。
|
|
95
|
+
|
|
96
|
+
- 类型:`any`
|
|
97
|
+
- 默认值:`$bindable()`
|
|
98
|
+
- 推荐写法:`bind:value`
|
|
99
|
+
|
|
100
|
+
### `lazyLoader`
|
|
101
|
+
|
|
102
|
+
异步分页加载器,签名为 `(filterText, pageNo) => Promise<{list, hasMore}>`。ListBox 当前从第 1 页开始请求,滚动到底部且 `hasMore=true` 时继续加载。
|
|
103
|
+
|
|
104
|
+
- 类型:`ListLazyLoader`
|
|
105
|
+
- 默认值:`undefined`
|
|
106
|
+
- 示例写法:参见下方完整示例中的类型化实现。
|
|
107
|
+
|
|
108
|
+
## 相关类型定义
|
|
109
|
+
|
|
110
|
+
以下定义帮助理解复杂属性的数据结构;其中部分辅助类型属于内部实现,不一定是独立导出入口。
|
|
111
|
+
|
|
112
|
+
### `EditorVariant`
|
|
113
|
+
|
|
114
|
+
```ts
|
|
115
|
+
export type EditorVariant = '' | 'plain' | 'outlined' | 'filled';
|
|
116
|
+
```
|
|
117
|
+
|
|
118
|
+
### `RetrieveOptionText`
|
|
119
|
+
|
|
120
|
+
```ts
|
|
121
|
+
export type RetrieveOptionText = (item: any) => string;
|
|
122
|
+
```
|
|
123
|
+
|
|
124
|
+
### `ListLazyLoader`
|
|
125
|
+
|
|
126
|
+
```ts
|
|
127
|
+
export type ListLazyLoader = (text: string, pageNo: number) => Promise<LoadResult>;
|
|
128
|
+
```
|
|
129
|
+
|
|
130
|
+
### `LoadResult`
|
|
131
|
+
|
|
132
|
+
```ts
|
|
133
|
+
export interface LoadResult {
|
|
134
|
+
hasMore: boolean;
|
|
135
|
+
list: Array<any>;
|
|
136
|
+
}
|
|
137
|
+
```
|
|
138
|
+
|
|
139
|
+
## 示例
|
|
140
|
+
|
|
141
|
+
完整示例见 [example.svelte](./example.svelte)。
|
|
142
|
+
```svelte
|
|
143
|
+
<script lang="ts">
|
|
144
|
+
import InputOptionsSelect from '@ticatec/uniface-element/InputOptionsSelect';
|
|
145
|
+
let value = $state<any>('dev');
|
|
146
|
+
</script>
|
|
147
|
+
|
|
148
|
+
<InputOptionsSelect
|
|
149
|
+
bind:value
|
|
150
|
+
onchange={async (...args: any[]) => { console.log('onchange', ...args); return true; }}
|
|
151
|
+
onfocus={async (...args: any[]) => { console.log('onfocus', ...args); return true; }}
|
|
152
|
+
variant="plain"
|
|
153
|
+
placeholder="请输入或选择"
|
|
154
|
+
keyField="code"
|
|
155
|
+
textField="text"
|
|
156
|
+
disabled={false}
|
|
157
|
+
/>
|
|
158
|
+
<p>当前状态:{JSON.stringify({value})}</p>
|
|
159
|
+
```
|
|
160
|
+
|
|
161
|
+
## 源码
|
|
162
|
+
|
|
163
|
+
- `src/lib/form/input_options_select/InputOptionsSelect.svelte`
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
import InputOptionsSelect from '@ticatec/uniface-element/InputOptionsSelect';
|
|
3
|
+
let value = $state<any>('dev');
|
|
4
|
+
</script>
|
|
5
|
+
|
|
6
|
+
<InputOptionsSelect
|
|
7
|
+
bind:value
|
|
8
|
+
onchange={async (...args: any[]) => { console.log('onchange', ...args); return true; }}
|
|
9
|
+
onfocus={async (...args: any[]) => { console.log('onfocus', ...args); return true; }}
|
|
10
|
+
variant="plain"
|
|
11
|
+
placeholder="请输入或选择"
|
|
12
|
+
keyField="code"
|
|
13
|
+
textField="text"
|
|
14
|
+
disabled={false}
|
|
15
|
+
/>
|
|
16
|
+
<p>当前状态:{JSON.stringify({value})}</p>
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
let {item, selected = false}: {item: {name: string; department: string}; selected?: boolean} = $props();
|
|
3
|
+
</script>
|
|
4
|
+
|
|
5
|
+
<div class:selected>
|
|
6
|
+
<strong>{item.name}</strong>
|
|
7
|
+
<small>{item.department}</small>
|
|
8
|
+
</div>
|
|
9
|
+
|
|
10
|
+
<style>
|
|
11
|
+
div {display: flex; justify-content: space-between; padding: 8px 12px;}
|
|
12
|
+
div.selected {background: #eef4ff; color: #174ea6;}
|
|
13
|
+
small {color: #64748b;}
|
|
14
|
+
</style>
|
|
@@ -0,0 +1,221 @@
|
|
|
1
|
+
# ListBox
|
|
2
|
+
|
|
3
|
+
数据展示组件。本文档由源码自动生成,类型以当前版本为准。
|
|
4
|
+
|
|
5
|
+
## 简介
|
|
6
|
+
|
|
7
|
+
支持自定义行、本地过滤、选择和懒加载的列表框。
|
|
8
|
+
|
|
9
|
+
## 适用场景
|
|
10
|
+
|
|
11
|
+
- 人员、商品和权限项选择
|
|
12
|
+
- 需要单选、多选、搜索或滚动分页加载
|
|
13
|
+
|
|
14
|
+
## 导入
|
|
15
|
+
|
|
16
|
+
```ts
|
|
17
|
+
import ListBox from '@ticatec/uniface-element/ListBox';
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
## 属性
|
|
21
|
+
|
|
22
|
+
| 属性 | 重要 | 类型 | 必填 | 默认值 | 可绑定/响应式 | 说明 |
|
|
23
|
+
| --- | --- | --- | --- | --- | --- | --- |
|
|
24
|
+
| `readonly` | 是 | `boolean` | 否 | `false` | 否 | 只读状态。保留内容展示,但阻止用户修改。 |
|
|
25
|
+
| `style` | 否 | `string \| null` | 否 | `undefined` | 否 | 附加到组件根元素的内联样式。 |
|
|
26
|
+
| `list` | 是 | `Array<any>` | 否 | `undefined` | 否 | 组件展示的数据集合。数据项结构由相关列、字段映射或渲染器决定。 |
|
|
27
|
+
| `itemRender` | 否 | `any` | 否 | `undefined` | 否 | 可选配置,具体取值范围和数据结构见类型列。 |
|
|
28
|
+
| `selectMode` | 是 | `'none' \| 'single' \| 'multiple'` | 否 | `'none'` | 否 | 选择模式:none 只响应普通点击,single 单选,multiple 多选。 |
|
|
29
|
+
| `filter` | 是 | `FunFilter \| null` | 否 | `undefined` | 否 | 本地过滤函数。接收当前数据项和搜索文字,返回 true 时保留该项。仅用于已经加载到内存中的 list。 |
|
|
30
|
+
| `lazyLoader` | 是 | `ListLazyLoader \| null` | 否 | `undefined` | 否 | 异步分页加载器,签名为 `(filterText, pageNo) => Promise<{list, hasMore}>`。ListBox 当前从第 1 页开始请求,滚动到底部且 `hasMore=true` 时继续加载。 |
|
|
31
|
+
| `selectedItem` | 是 | `any` | 否 | `undefined` | 否 | 单选模式下的当前选中项;选中变化通过 `onSelectChange` 返回。 |
|
|
32
|
+
| `selectedList` | 是 | `Array<any>` | 否 | `$bindable([])` | 是 | 多选模式下的选中项数组,推荐使用 `bind:selectedList`。 |
|
|
33
|
+
| `class` | 否 | `string` | 否 | `undefined` | 否 | 附加到组件根元素的 CSS class。 |
|
|
34
|
+
| `item$props` | 否 | `any` | 否 | `undefined` | 否 | 可选配置,具体取值范围和数据结构见类型列。 |
|
|
35
|
+
| `onchange` | 是 | `OnSelectChange` | 否 | `undefined` | 否 | 用户完成值变更时调用;编程式赋值是否触发请以组件行为说明为准。 |
|
|
36
|
+
| `onSelectChange` | 否 | `OnSelectChange` | 否 | `undefined` | 否 | @deprecated 请使用 onchange;仍受支持以兼容旧调用。 |
|
|
37
|
+
| `onItemDblClick` | 否 | `OnItemDblClick` | 否 | `undefined` | 否 | 事件或行为回调;参数与返回值以类型签名为准。 |
|
|
38
|
+
| `onItemClick` | 否 | `OnItemClick` | 否 | `undefined` | 否 | 事件或行为回调;参数与返回值以类型签名为准。 |
|
|
39
|
+
| `title` | 否 | `string` | 否 | `undefined` | 否 | 可选配置,具体取值范围和数据结构见类型列。 |
|
|
40
|
+
| `round` | 否 | `boolean` | 否 | `false` | 否 | 可选配置,具体取值范围和数据结构见类型列。 |
|
|
41
|
+
| `filterText` | 是 | `string` | 否 | `undefined` | 否 | 过滤输入框的外部初始值或受控值,用于预设搜索条件。 |
|
|
42
|
+
| `header` | 否 | `any` | 否 | `undefined` | 否 | 可选配置,具体取值范围和数据结构见类型列。 |
|
|
43
|
+
| `footer` | 否 | `any` | 否 | `undefined` | 否 | 可选配置,具体取值范围和数据结构见类型列。 |
|
|
44
|
+
| `loadMoreIndicator` | 否 | `any` | 否 | `undefined` | 否 | 可选配置,具体取值范围和数据结构见类型列。 |
|
|
45
|
+
|
|
46
|
+
> 组件的“可绑定”表示源码使用了 Svelte 5 的 `$bindable`;服务的“响应式”表示成员使用了 `$state`。复杂类型请同时参考 TypeScript 自动补全。
|
|
47
|
+
|
|
48
|
+
## 重要属性说明
|
|
49
|
+
|
|
50
|
+
### `readonly`
|
|
51
|
+
|
|
52
|
+
只读状态。保留内容展示,但阻止用户修改。
|
|
53
|
+
|
|
54
|
+
- 类型:`boolean`
|
|
55
|
+
- 默认值:`false`
|
|
56
|
+
- 示例写法:`readonly={false}`
|
|
57
|
+
|
|
58
|
+
### `list`
|
|
59
|
+
|
|
60
|
+
组件展示的数据集合。数据项结构由相关列、字段映射或渲染器决定。
|
|
61
|
+
|
|
62
|
+
- 类型:`Array<any>`
|
|
63
|
+
- 默认值:`undefined`
|
|
64
|
+
- 示例写法:`list={[
|
|
65
|
+
{id: 1, name: '张三', department: '研发部'},
|
|
66
|
+
{id: 2, name: '李四', department: '产品部'}
|
|
67
|
+
]}`
|
|
68
|
+
|
|
69
|
+
### `selectMode`
|
|
70
|
+
|
|
71
|
+
选择模式:none 只响应普通点击,single 单选,multiple 多选。
|
|
72
|
+
|
|
73
|
+
- 类型:`'none' | 'single' | 'multiple'`
|
|
74
|
+
- 默认值:`'none'`
|
|
75
|
+
- 示例写法:`selectMode="single"`
|
|
76
|
+
|
|
77
|
+
### `filter`
|
|
78
|
+
|
|
79
|
+
本地过滤函数。接收当前数据项和搜索文字,返回 true 时保留该项。仅用于已经加载到内存中的 list。
|
|
80
|
+
|
|
81
|
+
- 类型:`FunFilter | null`
|
|
82
|
+
- 默认值:`undefined`
|
|
83
|
+
- 示例写法:参见下方完整示例中的类型化实现。
|
|
84
|
+
|
|
85
|
+
### `lazyLoader`
|
|
86
|
+
|
|
87
|
+
异步分页加载器,签名为 `(filterText, pageNo) => Promise<{list, hasMore}>`。ListBox 当前从第 1 页开始请求,滚动到底部且 `hasMore=true` 时继续加载。
|
|
88
|
+
|
|
89
|
+
- 类型:`ListLazyLoader | null`
|
|
90
|
+
- 默认值:`undefined`
|
|
91
|
+
- 示例写法:参见下方完整示例中的类型化实现。
|
|
92
|
+
|
|
93
|
+
### `selectedItem`
|
|
94
|
+
|
|
95
|
+
单选模式下的当前选中项;选中变化通过 `onSelectChange` 返回。
|
|
96
|
+
|
|
97
|
+
- 类型:`any`
|
|
98
|
+
- 默认值:`undefined`
|
|
99
|
+
- 示例写法:参见下方完整示例中的类型化实现。
|
|
100
|
+
|
|
101
|
+
### `selectedList`
|
|
102
|
+
|
|
103
|
+
多选模式下的选中项数组,推荐使用 `bind:selectedList`。
|
|
104
|
+
|
|
105
|
+
- 类型:`Array<any>`
|
|
106
|
+
- 默认值:`$bindable([])`
|
|
107
|
+
- 推荐写法:`bind:selectedList`
|
|
108
|
+
|
|
109
|
+
### `onchange`
|
|
110
|
+
|
|
111
|
+
用户完成值变更时调用;编程式赋值是否触发请以组件行为说明为准。
|
|
112
|
+
|
|
113
|
+
- 类型:`OnSelectChange`
|
|
114
|
+
- 默认值:`undefined`
|
|
115
|
+
- 示例写法:`onchange={async (...args: any[]) => { console.log('onchange', ...args); return true; }}`
|
|
116
|
+
|
|
117
|
+
### `filterText`
|
|
118
|
+
|
|
119
|
+
过滤输入框的外部初始值或受控值,用于预设搜索条件。
|
|
120
|
+
|
|
121
|
+
- 类型:`string`
|
|
122
|
+
- 默认值:`undefined`
|
|
123
|
+
- 示例写法:`filterText="研发"`
|
|
124
|
+
|
|
125
|
+
## 相关类型定义
|
|
126
|
+
|
|
127
|
+
以下定义帮助理解复杂属性的数据结构;其中部分辅助类型属于内部实现,不一定是独立导出入口。
|
|
128
|
+
|
|
129
|
+
### `FunFilter`
|
|
130
|
+
|
|
131
|
+
```ts
|
|
132
|
+
export type FunFilter = (item: any, text: string) => boolean;
|
|
133
|
+
```
|
|
134
|
+
|
|
135
|
+
### `ListLazyLoader`
|
|
136
|
+
|
|
137
|
+
```ts
|
|
138
|
+
export type ListLazyLoader = (text: string, pageNo: number) => Promise<LoadResult>;
|
|
139
|
+
```
|
|
140
|
+
|
|
141
|
+
### `LoadResult`
|
|
142
|
+
|
|
143
|
+
```ts
|
|
144
|
+
export interface LoadResult {
|
|
145
|
+
hasMore: boolean;
|
|
146
|
+
list: Array<any>;
|
|
147
|
+
}
|
|
148
|
+
```
|
|
149
|
+
|
|
150
|
+
## 示例
|
|
151
|
+
|
|
152
|
+
完整示例见 [example.svelte](./example.svelte)。
|
|
153
|
+
配套的自定义行组件见 [ListItem.svelte](./ListItem.svelte)。
|
|
154
|
+
|
|
155
|
+
```svelte
|
|
156
|
+
<script lang="ts">
|
|
157
|
+
import ListBox from '@ticatec/uniface-element/ListBox';
|
|
158
|
+
import ListItem from './ListItem.svelte';
|
|
159
|
+
|
|
160
|
+
type User = {id: number; name: string; department: string};
|
|
161
|
+
const users: User[] = [
|
|
162
|
+
{id: 1, name: '张三', department: '研发部'},
|
|
163
|
+
{id: 2, name: '李四', department: '产品部'},
|
|
164
|
+
{id: 3, name: '王五', department: '研发部'}
|
|
165
|
+
];
|
|
166
|
+
let selectedUser = $state<User | null>(null);
|
|
167
|
+
let selectedUsers = $state<User[]>([]);
|
|
168
|
+
|
|
169
|
+
const filterUser = (user: User, keyword: string) =>
|
|
170
|
+
user.name.includes(keyword) || user.department.includes(keyword);
|
|
171
|
+
|
|
172
|
+
async function lazyLoader(keyword: string, pageNo: number) {
|
|
173
|
+
await new Promise((resolve) => setTimeout(resolve, 400));
|
|
174
|
+
const pageSize = 10;
|
|
175
|
+
const all = Array.from({length: 35}, (_, index) => ({
|
|
176
|
+
id: index + 1,
|
|
177
|
+
name: `用户 ${index + 1}`,
|
|
178
|
+
department: index % 2 ? '产品部' : '研发部'
|
|
179
|
+
})).filter((user) => filterUser(user, keyword));
|
|
180
|
+
const start = (pageNo - 1) * pageSize;
|
|
181
|
+
return {
|
|
182
|
+
list: all.slice(start, start + pageSize),
|
|
183
|
+
hasMore: start + pageSize < all.length
|
|
184
|
+
};
|
|
185
|
+
}
|
|
186
|
+
</script>
|
|
187
|
+
|
|
188
|
+
<h3>本地过滤与单选</h3>
|
|
189
|
+
<ListBox
|
|
190
|
+
list={users}
|
|
191
|
+
itemRender={ListItem}
|
|
192
|
+
selectMode="single"
|
|
193
|
+
filter={filterUser}
|
|
194
|
+
filterText="研发"
|
|
195
|
+
title="员工列表"
|
|
196
|
+
onSelectChange={(user) => selectedUser = user}
|
|
197
|
+
/>
|
|
198
|
+
<p>当前选中:{selectedUser?.name ?? '无'}</p>
|
|
199
|
+
|
|
200
|
+
<h3>多选</h3>
|
|
201
|
+
<ListBox
|
|
202
|
+
list={users}
|
|
203
|
+
itemRender={ListItem}
|
|
204
|
+
selectMode="multiple"
|
|
205
|
+
bind:selectedList={selectedUsers}
|
|
206
|
+
/>
|
|
207
|
+
<p>已选择:{selectedUsers.map((user) => user.name).join('、') || '无'}</p>
|
|
208
|
+
|
|
209
|
+
<h3>分页懒加载</h3>
|
|
210
|
+
<ListBox
|
|
211
|
+
itemRender={ListItem}
|
|
212
|
+
selectMode="single"
|
|
213
|
+
{lazyLoader}
|
|
214
|
+
title="滚动到底部自动加载下一页"
|
|
215
|
+
onSelectChange={(user) => console.log('lazy selected', user)}
|
|
216
|
+
/>
|
|
217
|
+
```
|
|
218
|
+
|
|
219
|
+
## 源码
|
|
220
|
+
|
|
221
|
+
- `src/lib/data_display/list_box/ListBox.svelte`
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
import ListBox from '@ticatec/uniface-element/ListBox';
|
|
3
|
+
import ListItem from './ListItem.svelte';
|
|
4
|
+
|
|
5
|
+
type User = {id: number; name: string; department: string};
|
|
6
|
+
const users: User[] = [
|
|
7
|
+
{id: 1, name: '张三', department: '研发部'},
|
|
8
|
+
{id: 2, name: '李四', department: '产品部'},
|
|
9
|
+
{id: 3, name: '王五', department: '研发部'}
|
|
10
|
+
];
|
|
11
|
+
let selectedUser = $state<User | null>(null);
|
|
12
|
+
let selectedUsers = $state<User[]>([]);
|
|
13
|
+
|
|
14
|
+
const filterUser = (user: User, keyword: string) =>
|
|
15
|
+
user.name.includes(keyword) || user.department.includes(keyword);
|
|
16
|
+
|
|
17
|
+
async function lazyLoader(keyword: string, pageNo: number) {
|
|
18
|
+
await new Promise((resolve) => setTimeout(resolve, 400));
|
|
19
|
+
const pageSize = 10;
|
|
20
|
+
const all = Array.from({length: 35}, (_, index) => ({
|
|
21
|
+
id: index + 1,
|
|
22
|
+
name: `用户 ${index + 1}`,
|
|
23
|
+
department: index % 2 ? '产品部' : '研发部'
|
|
24
|
+
})).filter((user) => filterUser(user, keyword));
|
|
25
|
+
const start = (pageNo - 1) * pageSize;
|
|
26
|
+
return {
|
|
27
|
+
list: all.slice(start, start + pageSize),
|
|
28
|
+
hasMore: start + pageSize < all.length
|
|
29
|
+
};
|
|
30
|
+
}
|
|
31
|
+
</script>
|
|
32
|
+
|
|
33
|
+
<h3>本地过滤与单选</h3>
|
|
34
|
+
<ListBox
|
|
35
|
+
list={users}
|
|
36
|
+
itemRender={ListItem}
|
|
37
|
+
selectMode="single"
|
|
38
|
+
filter={filterUser}
|
|
39
|
+
filterText="研发"
|
|
40
|
+
title="员工列表"
|
|
41
|
+
onSelectChange={(user) => selectedUser = user}
|
|
42
|
+
/>
|
|
43
|
+
<p>当前选中:{selectedUser?.name ?? '无'}</p>
|
|
44
|
+
|
|
45
|
+
<h3>多选</h3>
|
|
46
|
+
<ListBox
|
|
47
|
+
list={users}
|
|
48
|
+
itemRender={ListItem}
|
|
49
|
+
selectMode="multiple"
|
|
50
|
+
bind:selectedList={selectedUsers}
|
|
51
|
+
/>
|
|
52
|
+
<p>已选择:{selectedUsers.map((user) => user.name).join('、') || '无'}</p>
|
|
53
|
+
|
|
54
|
+
<h3>分页懒加载</h3>
|
|
55
|
+
<ListBox
|
|
56
|
+
itemRender={ListItem}
|
|
57
|
+
selectMode="single"
|
|
58
|
+
{lazyLoader}
|
|
59
|
+
title="滚动到底部自动加载下一页"
|
|
60
|
+
onSelectChange={(user) => console.log('lazy selected', user)}
|
|
61
|
+
/>
|
|
@@ -0,0 +1,137 @@
|
|
|
1
|
+
# LookupEditor
|
|
2
|
+
|
|
3
|
+
表单组件。本文档由源码自动生成,类型以当前版本为准。
|
|
4
|
+
|
|
5
|
+
## 简介
|
|
6
|
+
|
|
7
|
+
通过弹出查找界面选择复杂业务对象的编辑器。
|
|
8
|
+
|
|
9
|
+
## 适用场景
|
|
10
|
+
|
|
11
|
+
- 客户、订单和组织对象查找
|
|
12
|
+
- 候选数据复杂、需要远程检索或额外字段展示
|
|
13
|
+
|
|
14
|
+
## 导入
|
|
15
|
+
|
|
16
|
+
```ts
|
|
17
|
+
import LookupEditor from '@ticatec/uniface-element/LookupEditor';
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
## 属性
|
|
21
|
+
|
|
22
|
+
| 属性 | 重要 | 类型 | 必填 | 默认值 | 可绑定/响应式 | 说明 |
|
|
23
|
+
| --- | --- | --- | --- | --- | --- | --- |
|
|
24
|
+
| `theme` | 否 | `string` | 否 | `undefined` | 否 | 主题样式名称,用于切换组件外观主题 |
|
|
25
|
+
| `tooltip` | 否 | `string` | 否 | `undefined` | 否 | 悬停提示信息,鼠标悬浮在字段上时显示 |
|
|
26
|
+
| `error` | 否 | `string` | 否 | `undefined` | 否 | 错误信息,用于在字段下方展示校验错误提示 |
|
|
27
|
+
| `disabled` | 是 | `boolean` | 否 | `false` | 否 | 是否禁用该字段,禁用后字段不可编辑且不响应交互 |
|
|
28
|
+
| `readonly` | 是 | `boolean` | 否 | `false` | 否 | 是否只读,只读状态下字段不可编辑但可聚焦和复制 |
|
|
29
|
+
| `compact` | 否 | `boolean` | 否 | `false` | 否 | 是否启用紧凑模式,紧凑模式下字段内部间距更小 |
|
|
30
|
+
| `variant` | 是 | `EditorVariant` | 否 | `undefined` | 否 | 编辑器外观样式变体 |
|
|
31
|
+
| `placeholder` | 是 | `string` | 否 | `undefined` | 否 | 占位提示文本,字段值为空时在输入区域内展示 |
|
|
32
|
+
| `style` | 否 | `string` | 否 | `undefined` | 否 | 自定义内联样式,会应用到字段根容器上 |
|
|
33
|
+
| `onfocus` | 否 | `(event: FocusEvent) => void` | 否 | `undefined` | 否 | 字段获得焦点时触发的回调 |
|
|
34
|
+
| `onblur` | 否 | `(event: FocusEvent) => void` | 否 | `undefined` | 否 | 字段失去焦点时触发的回调 |
|
|
35
|
+
| `onchange` | 是 | `(value?: any) => void` | 否 | `undefined` | 否 | 字段值发生变化时触发的回调 |
|
|
36
|
+
| `mandatory` | 否 | `boolean` | 否 | `false` | 否 | 可选配置,具体取值范围和数据结构见类型列。 |
|
|
37
|
+
| `value` | 是 | `any` | 否 | `$bindable()` | 是 | 组件的核心值。支持绑定时建议使用 `bind:value`,外部修改会同步到组件。 |
|
|
38
|
+
| `text` | 否 | `string` | 否 | `undefined` | 否 | 可选配置,具体取值范围和数据结构见类型列。 |
|
|
39
|
+
| `onaction` | 否 | `() => void` | 否 | `undefined` | 否 | 事件或行为回调;参数与返回值以类型签名为准。 |
|
|
40
|
+
| `leadingIcon` | 否 | `Snippet` | 否 | `undefined` | 否 | Svelte Snippet 渲染入口,用于替换或补充默认内容。 |
|
|
41
|
+
|
|
42
|
+
> 组件的“可绑定”表示源码使用了 Svelte 5 的 `$bindable`;服务的“响应式”表示成员使用了 `$state`。复杂类型请同时参考 TypeScript 自动补全。
|
|
43
|
+
|
|
44
|
+
## 重要属性说明
|
|
45
|
+
|
|
46
|
+
### `disabled`
|
|
47
|
+
|
|
48
|
+
是否禁用该字段,禁用后字段不可编辑且不响应交互
|
|
49
|
+
|
|
50
|
+
- 类型:`boolean`
|
|
51
|
+
- 默认值:`false`
|
|
52
|
+
- 示例写法:`disabled={false}`
|
|
53
|
+
|
|
54
|
+
### `readonly`
|
|
55
|
+
|
|
56
|
+
是否只读,只读状态下字段不可编辑但可聚焦和复制
|
|
57
|
+
|
|
58
|
+
- 类型:`boolean`
|
|
59
|
+
- 默认值:`false`
|
|
60
|
+
- 示例写法:`readonly={false}`
|
|
61
|
+
|
|
62
|
+
### `variant`
|
|
63
|
+
|
|
64
|
+
编辑器外观样式变体
|
|
65
|
+
|
|
66
|
+
- 类型:`EditorVariant`
|
|
67
|
+
- 默认值:`undefined`
|
|
68
|
+
- 示例写法:`variant="plain"`
|
|
69
|
+
|
|
70
|
+
### `placeholder`
|
|
71
|
+
|
|
72
|
+
占位提示文本,字段值为空时在输入区域内展示
|
|
73
|
+
|
|
74
|
+
- 类型:`string`
|
|
75
|
+
- 默认值:`undefined`
|
|
76
|
+
- 示例写法:`placeholder="请输入或选择"`
|
|
77
|
+
|
|
78
|
+
### `onchange`
|
|
79
|
+
|
|
80
|
+
字段值发生变化时触发的回调
|
|
81
|
+
|
|
82
|
+
- 类型:`(value?: any) => void`
|
|
83
|
+
- 默认值:`undefined`
|
|
84
|
+
- 示例写法:`onchange={async (...args: any[]) => { console.log('onchange', ...args); return true; }}`
|
|
85
|
+
|
|
86
|
+
### `value`
|
|
87
|
+
|
|
88
|
+
组件的核心值。支持绑定时建议使用 `bind:value`,外部修改会同步到组件。
|
|
89
|
+
|
|
90
|
+
- 类型:`any`
|
|
91
|
+
- 默认值:`$bindable()`
|
|
92
|
+
- 推荐写法:`bind:value`
|
|
93
|
+
|
|
94
|
+
## 组件实例方法
|
|
95
|
+
|
|
96
|
+
通过 `bind:this` 获取组件实例后调用。
|
|
97
|
+
|
|
98
|
+
| 方法 | 类型 | 说明 |
|
|
99
|
+
| --- | --- | --- |
|
|
100
|
+
| `focus()` | `() => void` | 组件实例方法。 |
|
|
101
|
+
| `clear()` | `() => void` | 组件实例方法。 |
|
|
102
|
+
|
|
103
|
+
## 相关类型定义
|
|
104
|
+
|
|
105
|
+
以下定义帮助理解复杂属性的数据结构;其中部分辅助类型属于内部实现,不一定是独立导出入口。
|
|
106
|
+
|
|
107
|
+
### `EditorVariant`
|
|
108
|
+
|
|
109
|
+
```ts
|
|
110
|
+
export type EditorVariant = '' | 'plain' | 'outlined' | 'filled';
|
|
111
|
+
```
|
|
112
|
+
|
|
113
|
+
## 示例
|
|
114
|
+
|
|
115
|
+
完整示例见 [example.svelte](./example.svelte)。
|
|
116
|
+
```svelte
|
|
117
|
+
<script lang="ts">
|
|
118
|
+
import LookupEditor from '@ticatec/uniface-element/LookupEditor';
|
|
119
|
+
let value = $state<any>();
|
|
120
|
+
</script>
|
|
121
|
+
|
|
122
|
+
<LookupEditor
|
|
123
|
+
bind:value
|
|
124
|
+
onchange={async (...args: any[]) => { console.log('onchange', ...args); return true; }}
|
|
125
|
+
onfocus={async (...args: any[]) => { console.log('onfocus', ...args); return true; }}
|
|
126
|
+
variant="plain"
|
|
127
|
+
placeholder="请输入或选择"
|
|
128
|
+
disabled={false}
|
|
129
|
+
readonly={false}
|
|
130
|
+
compact={true}
|
|
131
|
+
/>
|
|
132
|
+
<p>当前状态:{JSON.stringify({value})}</p>
|
|
133
|
+
```
|
|
134
|
+
|
|
135
|
+
## 源码
|
|
136
|
+
|
|
137
|
+
- `src/lib/form/lookup_editor/LookupEditor.svelte`
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
import LookupEditor from '@ticatec/uniface-element/LookupEditor';
|
|
3
|
+
let value = $state<any>();
|
|
4
|
+
</script>
|
|
5
|
+
|
|
6
|
+
<LookupEditor
|
|
7
|
+
bind:value
|
|
8
|
+
onchange={async (...args: any[]) => { console.log('onchange', ...args); return true; }}
|
|
9
|
+
onfocus={async (...args: any[]) => { console.log('onfocus', ...args); return true; }}
|
|
10
|
+
variant="plain"
|
|
11
|
+
placeholder="请输入或选择"
|
|
12
|
+
disabled={false}
|
|
13
|
+
readonly={false}
|
|
14
|
+
compact={true}
|
|
15
|
+
/>
|
|
16
|
+
<p>当前状态:{JSON.stringify({value})}</p>
|