@ticatec/uniface-element 5.0.1 → 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.
Files changed (255) hide show
  1. package/README.md +29 -54
  2. package/README_CN.md +37 -57
  3. package/dist/base-calendar/CalendarBase.svelte +29 -6
  4. package/dist/base-calendar/CalendarBase.svelte.d.ts +4 -0
  5. package/dist/base-calendar/MonthPickupPanel.svelte +19 -6
  6. package/dist/base-calendar/MonthPickupPanel.svelte.d.ts +1 -1
  7. package/dist/base-calendar/MonthlyCalendar.svelte +18 -2
  8. package/dist/base-calendar/YearPickupPanel.svelte +24 -6
  9. package/dist/base-calendar/YearPickupPanel.svelte.d.ts +1 -1
  10. package/dist/composite/pagination_panel/PaginationPanel.svelte +2 -0
  11. package/dist/data_display/card/CommonCardActionBar.svelte +34 -14
  12. package/dist/data_display/concise_data_table/Column.d.ts +6 -0
  13. package/dist/data_display/concise_data_table/ConciseListTable.svelte +4 -3
  14. package/dist/data_display/concise_data_table/DataCell.svelte +3 -3
  15. package/dist/data_display/list_box/ListBox.svelte +90 -15
  16. package/dist/data_display/list_box/ListBox.svelte.d.ts +4 -0
  17. package/dist/data_display/tree_view/TreeNodeView.svelte +25 -4
  18. package/dist/data_table/DataTable.svelte +5 -5
  19. package/dist/data_table/DataTable.svelte.d.ts +36 -16
  20. package/dist/data_table/lib/ActionsColumn.d.ts +2 -2
  21. package/dist/data_table/lib/DataColumn.d.ts +7 -1
  22. package/dist/data_table/lib/RowAction.d.ts +5 -5
  23. package/dist/data_table/parts/FixedHeaderPanel.svelte +18 -3
  24. package/dist/data_table/parts/FixedRow.svelte +10 -1
  25. package/dist/data_table/parts/HrefCell.svelte +1 -1
  26. package/dist/data_table/parts/TableHeaderPanel.svelte +18 -2
  27. package/dist/data_table/parts/TextCell.svelte +2 -2
  28. package/dist/form/attachment_files/AttachmentEditor.svelte +9 -9
  29. package/dist/form/attachment_files/FileRender.svelte +1 -1
  30. package/dist/form/attachment_files/FileUploadPanel.svelte +5 -1
  31. package/dist/form/cascade_options_select/CascadeOptionSelect.svelte +10 -2
  32. package/dist/form/cascade_options_select/OptionsBox.svelte +48 -2
  33. package/dist/form/color_picker/ColorPickerPanel.svelte +23 -20
  34. package/dist/form/color_picker/ColorPickerPanel.svelte.d.ts +5 -18
  35. package/dist/form/common_editor/CommonEditor.svelte +18 -4
  36. package/dist/form/common_editor/CommonPicker.svelte +11 -4
  37. package/dist/form/common_editor/CommonPopupEditor.svelte +8 -1
  38. package/dist/form/common_range_editor/CommonRangeEditor.svelte +11 -2
  39. package/dist/form/date_picker/DatePicker.svelte +1 -1
  40. package/dist/form/date_picker/DateTimePicker.svelte +1 -1
  41. package/dist/form/date_picker/ScrollBar.svelte +20 -12
  42. package/dist/form/date_picker/ScrollBar.svelte.d.ts +4 -18
  43. package/dist/form/date_range/DateRangeEditor.svelte +11 -3
  44. package/dist/form/group_box/group-check-box/GroupCheckBox.svelte +6 -1
  45. package/dist/form/group_box/group-radio-box/GroupRadioBox.svelte +6 -1
  46. package/dist/form/image-files/ImageFilesField.svelte +51 -7
  47. package/dist/form/image-files/ImagePreview.svelte +8 -2
  48. package/dist/form/image-files/ImageRender.svelte +69 -11
  49. package/dist/form/input_options_select/InputOptionsSelect.svelte +10 -2
  50. package/dist/form/lookup_editor/LookupEditor.svelte +9 -2
  51. package/dist/form/options_multi_select/OptionsMultiSelect.svelte +19 -3
  52. package/dist/form/options_select/OptionsSelect.svelte +15 -6
  53. package/dist/form/options_select/OptionsSelect.svelte.d.ts +39 -17
  54. package/dist/form/prompts_text_editor/PromptsTextEditor.svelte +10 -2
  55. package/dist/form/switch/Switch.svelte +4 -4
  56. package/dist/form/unit-number-editor/UnitNumberEditor.svelte +10 -2
  57. package/dist/general/button/Button.svelte +3 -0
  58. package/dist/general/button/Button.svelte.d.ts +1 -0
  59. package/dist/general/button/IconButton.svelte +3 -1
  60. package/dist/general/button/IconButton.svelte.d.ts +1 -0
  61. package/dist/general/button/TextButton.svelte +3 -0
  62. package/dist/general/button/TextButton.svelte.d.ts +1 -0
  63. package/dist/general/icon/Icon.svelte +18 -1
  64. package/dist/general/tag/Tag.svelte +9 -1
  65. package/dist/navigation/nav_menu/NavigatorMenu.svelte +2 -2
  66. package/dist/navigation/nav_menu/NavigatorMenuItem.svelte +10 -1
  67. package/dist/navigation/navigator/Navigator.svelte +17 -17
  68. package/dist/navigation/page-stack/PageStack.svelte +160 -0
  69. package/dist/navigation/page-stack/PageStack.svelte.d.ts +24 -0
  70. package/dist/navigation/page-stack/PageStackContext.d.ts +25 -0
  71. package/dist/navigation/page-stack/PageStackContext.js +12 -0
  72. package/dist/navigation/page-stack/PageStackFrame.svelte +24 -0
  73. package/dist/navigation/page-stack/PageStackFrame.svelte.d.ts +11 -0
  74. package/dist/navigation/page-stack/README.md +154 -0
  75. package/dist/navigation/page-stack/README_CN.md +154 -0
  76. package/dist/navigation/page-stack/index.d.ts +6 -0
  77. package/dist/navigation/page-stack/index.js +4 -0
  78. package/dist/navigation/pagination/Pagination.svelte +114 -14
  79. package/dist/navigation/tabs/Tabs.svelte +42 -10
  80. package/dist/navigation/tabs/Tabs.svelte.d.ts +2 -2
  81. package/dist/overlay/common/FloatingPanel.svelte +3 -11
  82. package/dist/overlay/common/FullscreenOverlay.svelte +27 -3
  83. package/dist/overlay/common/FullscreenOverlay.svelte.d.ts +6 -27
  84. package/dist/overlay/common/ModalPopover.svelte +18 -2
  85. package/dist/overlay/common/Popover.svelte +56 -57
  86. package/dist/overlay/common/Popover.svelte.d.ts +1 -5
  87. package/dist/overlay/common/escapeClose.d.ts +28 -0
  88. package/dist/overlay/common/escapeClose.js +47 -0
  89. package/dist/overlay/common/focusTrap.d.ts +8 -0
  90. package/dist/overlay/common/focusTrap.js +83 -0
  91. package/dist/overlay/common/mountSingleton.d.ts +27 -0
  92. package/dist/overlay/common/mountSingleton.js +45 -0
  93. package/dist/overlay/common/outsideClick.d.ts +28 -0
  94. package/dist/overlay/common/outsideClick.js +20 -0
  95. package/dist/overlay/common/scrollLock.d.ts +8 -0
  96. package/dist/overlay/common/scrollLock.js +49 -0
  97. package/dist/overlay/context-menu/ContextMenu.svelte.js +2 -15
  98. package/dist/overlay/context-menu/ContextMenuPanel.svelte +13 -1
  99. package/dist/overlay/dialog/Dialog.svelte +46 -29
  100. package/dist/overlay/dialog/DialogManager.svelte.js +7 -9
  101. package/dist/overlay/drawer/Drawer.svelte +30 -3
  102. package/dist/overlay/indicator/Indicator.svelte.js +2 -15
  103. package/dist/overlay/indicator/IndicatorPanel.svelte +4 -1
  104. package/dist/overlay/message-box/MessageBox.svelte.js +2 -15
  105. package/dist/overlay/message-box/MessageBoxPanel.svelte +19 -3
  106. package/dist/overlay/toast/Toast.svelte.js +2 -15
  107. package/dist/overlay/toast/ToastPanel.svelte +1 -1
  108. package/dist/overlay/tooltip/Tooltip.svelte +1 -1
  109. package/dist/ticatec-uniface-web.css +102 -7
  110. package/dist/types.d.ts +4 -3
  111. package/docs/components/README.md +133 -0
  112. package/docs/components/accordion/README.md +60 -0
  113. package/docs/components/accordion/example.svelte +7 -0
  114. package/docs/components/action-bar/README.md +114 -0
  115. package/docs/components/action-bar/example.svelte +7 -0
  116. package/docs/components/app-top-bar/README.md +60 -0
  117. package/docs/components/app-top-bar/example.svelte +9 -0
  118. package/docs/components/attachment-files/README.md +332 -0
  119. package/docs/components/attachment-files/example.svelte +16 -0
  120. package/docs/components/box/README.md +63 -0
  121. package/docs/components/box/example.svelte +10 -0
  122. package/docs/components/breadcrumbs/README.md +86 -0
  123. package/docs/components/breadcrumbs/example.svelte +11 -0
  124. package/docs/components/button/README.md +103 -0
  125. package/docs/components/button/example.svelte +10 -0
  126. package/docs/components/card/README.md +113 -0
  127. package/docs/components/card/example.svelte +10 -0
  128. package/docs/components/cascade-options-select/README.md +162 -0
  129. package/docs/components/cascade-options-select/example.svelte +18 -0
  130. package/docs/components/checkbox/README.md +103 -0
  131. package/docs/components/checkbox/example.svelte +15 -0
  132. package/docs/components/classic-layout/README.md +76 -0
  133. package/docs/components/classic-layout/example.svelte +16 -0
  134. package/docs/components/color-picker/README.md +132 -0
  135. package/docs/components/color-picker/example.svelte +16 -0
  136. package/docs/components/columns-layout/README.md +70 -0
  137. package/docs/components/columns-layout/example.svelte +12 -0
  138. package/docs/components/common-dialog/README.md +109 -0
  139. package/docs/components/common-dialog/example.svelte +12 -0
  140. package/docs/components/concise-data-table/README.md +307 -0
  141. package/docs/components/concise-data-table/example.svelte +16 -0
  142. package/docs/components/context-menu/README.md +99 -0
  143. package/docs/components/context-menu/example.svelte +10 -0
  144. package/docs/components/criteria-field/README.md +69 -0
  145. package/docs/components/criteria-field/example.svelte +9 -0
  146. package/docs/components/data-table/README.md +365 -0
  147. package/docs/components/data-table/example.svelte +23 -0
  148. package/docs/components/date-picker/README.md +136 -0
  149. package/docs/components/date-picker/example.svelte +16 -0
  150. package/docs/components/date-range/README.md +122 -0
  151. package/docs/components/date-range/example.svelte +15 -0
  152. package/docs/components/date-time-picker/README.md +142 -0
  153. package/docs/components/date-time-picker/example.svelte +16 -0
  154. package/docs/components/dialog/README.md +174 -0
  155. package/docs/components/dialog/example.svelte +13 -0
  156. package/docs/components/dialog-board/README.md +41 -0
  157. package/docs/components/dialog-board/example.svelte +5 -0
  158. package/docs/components/drawer/README.md +70 -0
  159. package/docs/components/drawer/example.svelte +12 -0
  160. package/docs/components/flex-form/README.md +55 -0
  161. package/docs/components/flex-form/example.svelte +7 -0
  162. package/docs/components/flex-row-form/README.md +56 -0
  163. package/docs/components/flex-row-form/example.svelte +7 -0
  164. package/docs/components/form-field/README.md +84 -0
  165. package/docs/components/form-field/example.svelte +10 -0
  166. package/docs/components/full-screen-overlay/README.md +66 -0
  167. package/docs/components/full-screen-overlay/example.svelte +11 -0
  168. package/docs/components/grid-form/README.md +75 -0
  169. package/docs/components/grid-form/example.svelte +9 -0
  170. package/docs/components/group-check-box/README.md +147 -0
  171. package/docs/components/group-check-box/example.svelte +21 -0
  172. package/docs/components/group-radio-box/README.md +144 -0
  173. package/docs/components/group-radio-box/example.svelte +21 -0
  174. package/docs/components/header-layout/README.md +65 -0
  175. package/docs/components/header-layout/example.svelte +12 -0
  176. package/docs/components/icon/README.md +87 -0
  177. package/docs/components/icon/example.svelte +9 -0
  178. package/docs/components/icon-button/README.md +91 -0
  179. package/docs/components/icon-button/example.svelte +10 -0
  180. package/docs/components/image-files/README.md +174 -0
  181. package/docs/components/image-files/example.svelte +19 -0
  182. package/docs/components/indicator/README.md +53 -0
  183. package/docs/components/indicator/example.svelte +14 -0
  184. package/docs/components/input-options-select/README.md +163 -0
  185. package/docs/components/input-options-select/example.svelte +16 -0
  186. package/docs/components/list-box/ListItem.svelte +14 -0
  187. package/docs/components/list-box/README.md +221 -0
  188. package/docs/components/list-box/example.svelte +61 -0
  189. package/docs/components/lookup-editor/README.md +137 -0
  190. package/docs/components/lookup-editor/example.svelte +16 -0
  191. package/docs/components/memo-editor/README.md +143 -0
  192. package/docs/components/memo-editor/example.svelte +16 -0
  193. package/docs/components/message-box/README.md +68 -0
  194. package/docs/components/message-box/example.svelte +10 -0
  195. package/docs/components/navigator/README.md +75 -0
  196. package/docs/components/navigator/example.svelte +13 -0
  197. package/docs/components/navigator-menu/README.md +113 -0
  198. package/docs/components/navigator-menu/example.svelte +10 -0
  199. package/docs/components/number-editor/README.md +144 -0
  200. package/docs/components/number-editor/example.svelte +16 -0
  201. package/docs/components/number-range/README.md +116 -0
  202. package/docs/components/number-range/example.svelte +15 -0
  203. package/docs/components/options-multi-select/README.md +161 -0
  204. package/docs/components/options-multi-select/example.svelte +20 -0
  205. package/docs/components/options-select/README.md +160 -0
  206. package/docs/components/options-select/example.svelte +21 -0
  207. package/docs/components/page/README.md +77 -0
  208. package/docs/components/page/example.svelte +10 -0
  209. package/docs/components/pagination/README.md +88 -0
  210. package/docs/components/pagination/example.svelte +10 -0
  211. package/docs/components/pagination-panel/README.md +120 -0
  212. package/docs/components/pagination-panel/example.svelte +16 -0
  213. package/docs/components/popup-hint/README.md +44 -0
  214. package/docs/components/popup-hint/example.svelte +5 -0
  215. package/docs/components/progress-bar/README.md +64 -0
  216. package/docs/components/progress-bar/example.svelte +8 -0
  217. package/docs/components/progress-step-bar/README.md +93 -0
  218. package/docs/components/progress-step-bar/example.svelte +7 -0
  219. package/docs/components/prompts-text-editor/README.md +146 -0
  220. package/docs/components/prompts-text-editor/example.svelte +17 -0
  221. package/docs/components/radio-button/README.md +121 -0
  222. package/docs/components/radio-button/example.svelte +18 -0
  223. package/docs/components/rows-layout/README.md +70 -0
  224. package/docs/components/rows-layout/example.svelte +12 -0
  225. package/docs/components/search-box/README.md +136 -0
  226. package/docs/components/search-box/example.svelte +16 -0
  227. package/docs/components/separator/README.md +44 -0
  228. package/docs/components/separator/example.svelte +7 -0
  229. package/docs/components/sidebar-layout/README.md +65 -0
  230. package/docs/components/sidebar-layout/example.svelte +12 -0
  231. package/docs/components/split/README.md +48 -0
  232. package/docs/components/split/example.svelte +8 -0
  233. package/docs/components/switch/README.md +77 -0
  234. package/docs/components/switch/example.svelte +11 -0
  235. package/docs/components/tabs/README.md +127 -0
  236. package/docs/components/tabs/example.svelte +22 -0
  237. package/docs/components/tag/README.md +63 -0
  238. package/docs/components/tag/example.svelte +8 -0
  239. package/docs/components/text-button/README.md +90 -0
  240. package/docs/components/text-button/example.svelte +9 -0
  241. package/docs/components/text-editor/README.md +147 -0
  242. package/docs/components/text-editor/example.svelte +16 -0
  243. package/docs/components/time-editor/README.md +130 -0
  244. package/docs/components/time-editor/example.svelte +16 -0
  245. package/docs/components/toast/README.md +52 -0
  246. package/docs/components/toast/example.svelte +9 -0
  247. package/docs/components/tooltip/README.md +44 -0
  248. package/docs/components/tooltip/example.svelte +5 -0
  249. package/docs/components/transfer/README.md +109 -0
  250. package/docs/components/transfer/example.svelte +13 -0
  251. package/docs/components/tree-view/README.md +163 -0
  252. package/docs/components/tree-view/example.svelte +26 -0
  253. package/docs/components/unit-number-editor/README.md +192 -0
  254. package/docs/components/unit-number-editor/example.svelte +18 -0
  255. package/package.json +15 -7
@@ -0,0 +1,109 @@
1
+ # Transfer
2
+
3
+ 复合组件组件。本文档由源码自动生成,类型以当前版本为准。
4
+
5
+ ## 简介
6
+
7
+ 在左右两个列表之间移动数据项的穿梭框。
8
+
9
+ ## 适用场景
10
+
11
+ - 成员授权、角色分配和字段选择
12
+ - 需要清晰区分待选与已选集合
13
+
14
+ ## 导入
15
+
16
+ ```ts
17
+ import Transfer from '@ticatec/uniface-element/Transfer';
18
+ ```
19
+
20
+ ## 属性
21
+
22
+ | 属性 | 重要 | 类型 | 必填 | 默认值 | 可绑定/响应式 | 说明 |
23
+ | --- | --- | --- | --- | --- | --- | --- |
24
+ | `style` | 否 | `string` | 否 | `''` | 否 | 附加到组件根元素的内联样式。 |
25
+ | `sourceList` | 是 | `Array<any>` | 否 | `$bindable([])` | 是 | 可选配置,具体取值范围和数据结构见类型列。 |
26
+ | `sourceTitle` | 否 | `string` | 否 | `undefined` | 否 | 可选配置,具体取值范围和数据结构见类型列。 |
27
+ | `targetList` | 是 | `Array<any>` | 否 | `$bindable([])` | 是 | 可选配置,具体取值范围和数据结构见类型列。 |
28
+ | `targetTitle` | 否 | `string` | 否 | `undefined` | 否 | 可选配置,具体取值范围和数据结构见类型列。 |
29
+ | `itemRender` | 否 | `any` | 否 | `null` | 否 | 可选配置,具体取值范围和数据结构见类型列。 |
30
+ | `filter` | 是 | `FunFilter \| null` | 否 | `null` | 否 | 本地过滤函数。接收当前数据项和搜索文字,返回 true 时保留该项。仅用于已经加载到内存中的 list。 |
31
+ | `onchange` | 是 | `TransferData` | 否 | `undefined` | 否 | 用户完成值变更时调用;编程式赋值是否触发请以组件行为说明为准。 |
32
+ | `onfocus` | 否 | `(event: FocusEvent) => void` | 否 | `undefined` | 否 | 组件获得焦点时调用。 |
33
+ | `onblur` | 否 | `(event: FocusEvent) => void` | 否 | `undefined` | 否 | 组件失去焦点时调用。 |
34
+ | `footer$style` | 否 | `string` | 否 | `'width: 100%; background-color: #f0f0f0; padding: 2px 6px; text-align: right; box-sizing: border-box'` | 否 | 可选配置,具体取值范围和数据结构见类型列。 |
35
+
36
+ > 组件的“可绑定”表示源码使用了 Svelte 5 的 `$bindable`;服务的“响应式”表示成员使用了 `$state`。复杂类型请同时参考 TypeScript 自动补全。
37
+
38
+ ## 重要属性说明
39
+
40
+ ### `sourceList`
41
+
42
+ 可选配置,具体取值范围和数据结构见类型列。
43
+
44
+ - 类型:`Array<any>`
45
+ - 默认值:`$bindable([])`
46
+ - 推荐写法:`bind:sourceList`
47
+
48
+ ### `targetList`
49
+
50
+ 可选配置,具体取值范围和数据结构见类型列。
51
+
52
+ - 类型:`Array<any>`
53
+ - 默认值:`$bindable([])`
54
+ - 推荐写法:`bind:targetList`
55
+
56
+ ### `filter`
57
+
58
+ 本地过滤函数。接收当前数据项和搜索文字,返回 true 时保留该项。仅用于已经加载到内存中的 list。
59
+
60
+ - 类型:`FunFilter | null`
61
+ - 默认值:`null`
62
+ - 示例写法:参见下方完整示例中的类型化实现。
63
+
64
+ ### `onchange`
65
+
66
+ 用户完成值变更时调用;编程式赋值是否触发请以组件行为说明为准。
67
+
68
+ - 类型:`TransferData`
69
+ - 默认值:`undefined`
70
+ - 示例写法:`onchange={async (...args: any[]) => { console.log('onchange', ...args); return true; }}`
71
+
72
+ ## 相关类型定义
73
+
74
+ 以下定义帮助理解复杂属性的数据结构;其中部分辅助类型属于内部实现,不一定是独立导出入口。
75
+
76
+ ### `FunFilter`
77
+
78
+ ```ts
79
+ export type FunFilter = (item: any, text: string) => boolean;
80
+ ```
81
+
82
+ ### `TransferData`
83
+
84
+ ```ts
85
+ export type TransferData = (list: Array<any>, direction: "left" | "right") => Promise<boolean>;
86
+ ```
87
+
88
+ ## 示例
89
+
90
+ 完整示例见 [example.svelte](./example.svelte)。
91
+ ```svelte
92
+ <script lang="ts">
93
+ import Transfer from '@ticatec/uniface-element/Transfer';
94
+ let sourceList = $state<any>([]);
95
+ let targetList = $state<any>([]);
96
+ </script>
97
+
98
+ <Transfer
99
+ bind:sourceList
100
+ bind:targetList
101
+ onchange={async (...args: any[]) => { console.log('onchange', ...args); return true; }}
102
+ onfocus={async (...args: any[]) => { console.log('onfocus', ...args); return true; }}
103
+ />
104
+ <p>当前状态:{JSON.stringify({sourceList, targetList})}</p>
105
+ ```
106
+
107
+ ## 源码
108
+
109
+ - `src/lib/composite/transfer/Transfer.svelte`
@@ -0,0 +1,13 @@
1
+ <script lang="ts">
2
+ import Transfer from '@ticatec/uniface-element/Transfer';
3
+ let sourceList = $state<any>([]);
4
+ let targetList = $state<any>([]);
5
+ </script>
6
+
7
+ <Transfer
8
+ bind:sourceList
9
+ bind:targetList
10
+ onchange={async (...args: any[]) => { console.log('onchange', ...args); return true; }}
11
+ onfocus={async (...args: any[]) => { console.log('onfocus', ...args); return true; }}
12
+ />
13
+ <p>当前状态:{JSON.stringify({sourceList, targetList})}</p>
@@ -0,0 +1,163 @@
1
+ # TreeView
2
+
3
+ 数据展示组件。本文档由源码自动生成,类型以当前版本为准。
4
+
5
+ ## 简介
6
+
7
+ 以可展开的层级节点展示树形数据,支持选择、懒加载和自定义图标。
8
+
9
+ ## 适用场景
10
+
11
+ - 组织架构、文件目录和分类树
12
+ - 数据具有父子关系且需要展开、选择或右键操作
13
+
14
+ ## 导入
15
+
16
+ ```ts
17
+ import TreeView from '@ticatec/uniface-element/TreeView';
18
+ ```
19
+
20
+ ## 属性
21
+
22
+ | 属性 | 重要 | 类型 | 必填 | 默认值 | 可绑定/响应式 | 说明 |
23
+ | --- | --- | --- | --- | --- | --- | --- |
24
+ | `tree` | 是 | `HierarchyTree<any>` | 是 | `—` | 否 | HierarchyTree 实例,负责节点层级、键值与父子关系。 |
25
+ | `textField` | 是 | `string \| GetText<any>` | 是 | `—` | 否 | 数据项中用于界面显示的文本字段名。 |
26
+ | `iconField` | 否 | `string \| GetIcon<any>` | 否 | `undefined` | 否 | 可选配置,具体取值范围和数据结构见类型列。 |
27
+ | `nodeIcon` | 否 | `Snippet<[NodeIconContext]>` | 否 | `undefined` | 否 | Svelte Snippet 渲染入口,用于替换或补充默认内容。 |
28
+ | `chevronIcon` | 否 | `Snippet<[ChevronIconContext]>` | 否 | `undefined` | 否 | Svelte Snippet 渲染入口,用于替换或补充默认内容。 |
29
+ | `style` | 否 | `string` | 否 | `''` | 否 | 附加到组件根元素的内联样式。 |
30
+ | `lazyLoader` | 是 | `TreeLazyLoader \| null` | 否 | `null` | 否 | 异步分页加载器,签名为 `(filterText, pageNo) => Promise<{list, hasMore}>`。ListBox 当前从第 1 页开始请求,滚动到底部且 `hasMore=true` 时继续加载。 |
31
+ | `activeNode` | 是 | `any` | 否 | `$bindable<any>(null)` | 是 | 可选配置,具体取值范围和数据结构见类型列。 |
32
+ | `class` | 否 | `string` | 否 | `''` | 否 | 附加到组件根元素的 CSS class。 |
33
+ | `isVisible` | 否 | `NodeVisibleFun` | 否 | `undefined` | 否 | 可选配置,具体取值范围和数据结构见类型列。 |
34
+ | `onchange` | 是 | `OnNodeSelectionChange` | 否 | `undefined` | 否 | 用户完成值变更时调用;编程式赋值是否触发请以组件行为说明为准。 |
35
+ | `onfocus` | 否 | `(event: FocusEvent) => void` | 否 | `undefined` | 否 | 组件获得焦点时调用。 |
36
+ | `onblur` | 否 | `(event: FocusEvent) => void` | 否 | `undefined` | 否 | 组件失去焦点时调用。 |
37
+ | `onContextMenu` | 否 | `OnContextMenu` | 否 | `undefined` | 否 | 事件或行为回调;参数与返回值以类型签名为准。 |
38
+ | `title` | 否 | `string` | 否 | `undefined` | 否 | 可选配置,具体取值范围和数据结构见类型列。 |
39
+ | `defaultExpandDepth` | 否 | `number` | 否 | `0` | 否 | 初始展开多少层(0 = 全部折叠,1 = 展开根节点,依此类推)。默认 0。 |
40
+
41
+ > 组件的“可绑定”表示源码使用了 Svelte 5 的 `$bindable`;服务的“响应式”表示成员使用了 `$state`。复杂类型请同时参考 TypeScript 自动补全。
42
+
43
+ ## 重要属性说明
44
+
45
+ ### `tree`
46
+
47
+ HierarchyTree 实例,负责节点层级、键值与父子关系。
48
+
49
+ - 类型:`HierarchyTree<any>`
50
+ - 默认值:`—`
51
+ - 示例写法:参见下方完整示例中的类型化实现。
52
+
53
+ ### `textField`
54
+
55
+ 数据项中用于界面显示的文本字段名。
56
+
57
+ - 类型:`string | GetText<any>`
58
+ - 默认值:`—`
59
+ - 示例写法:`textField="text"`
60
+
61
+ ### `lazyLoader`
62
+
63
+ 异步分页加载器,签名为 `(filterText, pageNo) => Promise<{list, hasMore}>`。ListBox 当前从第 1 页开始请求,滚动到底部且 `hasMore=true` 时继续加载。
64
+
65
+ - 类型:`TreeLazyLoader | null`
66
+ - 默认值:`null`
67
+ - 示例写法:参见下方完整示例中的类型化实现。
68
+
69
+ ### `activeNode`
70
+
71
+ 可选配置,具体取值范围和数据结构见类型列。
72
+
73
+ - 类型:`any`
74
+ - 默认值:`$bindable<any>(null)`
75
+ - 推荐写法:`bind:activeNode`
76
+
77
+ ### `onchange`
78
+
79
+ 用户完成值变更时调用;编程式赋值是否触发请以组件行为说明为准。
80
+
81
+ - 类型:`OnNodeSelectionChange`
82
+ - 默认值:`undefined`
83
+ - 示例写法:`onchange={async (...args: any[]) => { console.log('onchange', ...args); return true; }}`
84
+
85
+ ## 相关类型定义
86
+
87
+ 以下定义帮助理解复杂属性的数据结构;其中部分辅助类型属于内部实现,不一定是独立导出入口。
88
+
89
+ ### `TreeLazyLoader`
90
+
91
+ ```ts
92
+ export interface TreeLazyLoader {
93
+ /**
94
+ * 检查是否是枝节点(可能包含子节点)
95
+ */
96
+ isBranch: (node: IHierarchyData<any>) => boolean;
97
+
98
+ /**
99
+ * 加载子节点数据
100
+ */
101
+ load: LoadChildrenFun;
102
+ }
103
+ ```
104
+
105
+ ### `NodeVisibleFun`
106
+
107
+ ```ts
108
+ export type NodeVisibleFun = (node: IHierarchyData<any>) => boolean;
109
+ ```
110
+
111
+ ### `OnNodeSelectionChange`
112
+
113
+ ```ts
114
+ export type OnNodeSelectionChange = (node: IHierarchyData<any>) => Promise<boolean>;
115
+ ```
116
+
117
+ ### `OnContextMenu`
118
+
119
+ ```ts
120
+ export type OnContextMenu = (event: MouseEvent, data: any) => void;
121
+ ```
122
+
123
+ ### `LoadChildrenFun`
124
+
125
+ ```ts
126
+ export type LoadChildrenFun = (item: IHierarchyData<any>) => Promise<Array<any>>;
127
+ ```
128
+
129
+ ## 示例
130
+
131
+ 完整示例见 [example.svelte](./example.svelte)。
132
+ ```svelte
133
+ <script lang="ts">
134
+ import TreeView from '@ticatec/uniface-element/TreeView';
135
+ import {HierarchyTree} from '@ticatec/uniface-element/TreeNodes';
136
+
137
+ type Department = {id: string; parentId: string | null; name: string};
138
+ const departments: Department[] = [
139
+ {id: 'company', parentId: null, name: '公司'},
140
+ {id: 'dev', parentId: 'company', name: '研发部'},
141
+ {id: 'product', parentId: 'company', name: '产品部'}
142
+ ];
143
+ const tree = new HierarchyTree<Department>({
144
+ getKey: (item: Department) => item.id,
145
+ getParentKey: (item: Department) => item.parentId
146
+ });
147
+ tree.setData(departments);
148
+ let activeNode = $state<any>(null);
149
+ </script>
150
+
151
+ <TreeView
152
+ {tree}
153
+ textField="name"
154
+ title="组织架构"
155
+ defaultExpandDepth={1}
156
+ bind:activeNode
157
+ onchange={async (node) => { console.log('选择节点', node?.data); return true; }}
158
+ />
159
+ ```
160
+
161
+ ## 源码
162
+
163
+ - `src/lib/data_display/tree_view/TreeView.svelte`
@@ -0,0 +1,26 @@
1
+ <script lang="ts">
2
+ import TreeView from '@ticatec/uniface-element/TreeView';
3
+ import {HierarchyTree} from '@ticatec/uniface-element/TreeNodes';
4
+
5
+ type Department = {id: string; parentId: string | null; name: string};
6
+ const departments: Department[] = [
7
+ {id: 'company', parentId: null, name: '公司'},
8
+ {id: 'dev', parentId: 'company', name: '研发部'},
9
+ {id: 'product', parentId: 'company', name: '产品部'}
10
+ ];
11
+ const tree = new HierarchyTree<Department>({
12
+ getKey: (item: Department) => item.id,
13
+ getParentKey: (item: Department) => item.parentId
14
+ });
15
+ tree.setData(departments);
16
+ let activeNode = $state<any>(null);
17
+ </script>
18
+
19
+ <TreeView
20
+ {tree}
21
+ textField="name"
22
+ title="组织架构"
23
+ defaultExpandDepth={1}
24
+ bind:activeNode
25
+ onchange={async (node) => { console.log('选择节点', node?.data); return true; }}
26
+ />
@@ -0,0 +1,192 @@
1
+ # UnitNumberEditor
2
+
3
+ 表单组件。本文档由源码自动生成,类型以当前版本为准。
4
+
5
+ ## 简介
6
+
7
+ 带单位显示的数值编辑器。
8
+
9
+ ## 适用场景
10
+
11
+ - 长度、重量、百分比和货币数值
12
+ - 数值含义依赖固定单位的输入
13
+
14
+ ## 导入
15
+
16
+ ```ts
17
+ import UnitNumberEditor from '@ticatec/uniface-element/UnitNumberEditor';
18
+ ```
19
+
20
+ ## 属性
21
+
22
+ | 属性 | 重要 | 类型 | 必填 | 默认值 | 可绑定/响应式 | 说明 |
23
+ | --- | --- | --- | --- | --- | --- | --- |
24
+ | `variant` | 是 | `EditorVariant` | 否 | `undefined` | 否 | 视觉样式变体,可选值:`""`(默认)、`plain`、`outlined`、`filled`;具体含义见组件说明。 |
25
+ | `compact` | 否 | `boolean` | 否 | `false` | 否 | 启用紧凑尺寸,减少组件高度和内边距。 |
26
+ | `style` | 否 | `string` | 否 | `undefined` | 否 | 附加到组件根元素的内联样式。 |
27
+ | `tooltip` | 否 | `string` | 否 | `undefined` | 否 | 可选配置,具体取值范围和数据结构见类型列。 |
28
+ | `error` | 否 | `string` | 否 | `undefined` | 否 | 可选配置,具体取值范围和数据结构见类型列。 |
29
+ | `value` | 是 | `number` | 否 | `$bindable<number \| undefined>()` | 是 | 组件的核心值。支持绑定时建议使用 `bind:value`,外部修改会同步到组件。 |
30
+ | `unitCode` | 是 | `string` | 否 | `$bindable<string \| undefined>()` | 是 | 可选配置,具体取值范围和数据结构见类型列。 |
31
+ | `units` | 是 | `Array<UnitOption>` | 是 | `—` | 否 | 可选单位列表;用户可在输入框旁切换单位,数值随单位换算显示。 |
32
+ | `disabled` | 是 | `boolean` | 否 | `false` | 否 | 禁用交互。禁用后通常不可聚焦、不可修改,也不会触发变更操作。 |
33
+ | `readonly` | 是 | `boolean` | 否 | `false` | 否 | 只读状态。保留内容展示,但阻止用户修改。 |
34
+ | `prefix` | 否 | `string` | 否 | `undefined` | 否 | 可选配置,具体取值范围和数据结构见类型列。 |
35
+ | `allowNegative` | 否 | `boolean` | 否 | `false` | 否 | 可选配置,具体取值范围和数据结构见类型列。 |
36
+ | `menu$height` | 否 | `number` | 否 | `0` | 否 | 高度配置,数值单位为像素。 |
37
+ | `placeholder` | 是 | `string` | 否 | `undefined` | 否 | 值为空时显示的提示文本。 |
38
+ | `onchange` | 是 | `(value: number \| undefined) => void` | 否 | `undefined` | 否 | 用户完成值变更时调用;编程式赋值是否触发请以组件行为说明为准。 |
39
+ | `onfocus` | 否 | `(e: FocusEvent) => void` | 否 | `undefined` | 否 | 组件获得焦点时调用。 |
40
+ | `onblur` | 否 | `(e: FocusEvent) => void` | 否 | `undefined` | 否 | 组件失去焦点时调用。 |
41
+ | `leadingIcon` | 否 | `Snippet` | 否 | `undefined` | 否 | Svelte Snippet 渲染入口,用于替换或补充默认内容。 |
42
+
43
+ > 组件的“可绑定”表示源码使用了 Svelte 5 的 `$bindable`;服务的“响应式”表示成员使用了 `$state`。复杂类型请同时参考 TypeScript 自动补全。
44
+
45
+ ## 重要属性说明
46
+
47
+ ### `variant`
48
+
49
+ 视觉样式变体,可选值:`""`(默认)、`plain`、`outlined`、`filled`;具体含义见组件说明。
50
+
51
+ - 类型:`EditorVariant`
52
+ - 默认值:`undefined`
53
+ - 示例写法:`variant="plain"`
54
+
55
+ ### `value`
56
+
57
+ 组件的核心值。支持绑定时建议使用 `bind:value`,外部修改会同步到组件。
58
+
59
+ - 类型:`number`
60
+ - 默认值:`$bindable<number | undefined>()`
61
+ - 推荐写法:`bind:value`
62
+
63
+ ### `unitCode`
64
+
65
+ 可选配置,具体取值范围和数据结构见类型列。
66
+
67
+ - 类型:`string`
68
+ - 默认值:`$bindable<string | undefined>()`
69
+ - 推荐写法:`bind:unitCode`
70
+
71
+ ### `units`
72
+
73
+ 可选单位列表;用户可在输入框旁切换单位,数值随单位换算显示。
74
+
75
+ - 类型:`Array<UnitOption>`
76
+ - 默认值:`—`
77
+ - 示例写法:`units={[]}`
78
+
79
+ ### `disabled`
80
+
81
+ 禁用交互。禁用后通常不可聚焦、不可修改,也不会触发变更操作。
82
+
83
+ - 类型:`boolean`
84
+ - 默认值:`false`
85
+ - 示例写法:`disabled={false}`
86
+
87
+ ### `readonly`
88
+
89
+ 只读状态。保留内容展示,但阻止用户修改。
90
+
91
+ - 类型:`boolean`
92
+ - 默认值:`false`
93
+ - 示例写法:`readonly={false}`
94
+
95
+ ### `placeholder`
96
+
97
+ 值为空时显示的提示文本。
98
+
99
+ - 类型:`string`
100
+ - 默认值:`undefined`
101
+ - 示例写法:`placeholder="请输入或选择"`
102
+
103
+ ### `onchange`
104
+
105
+ 用户完成值变更时调用;编程式赋值是否触发请以组件行为说明为准。
106
+
107
+ - 类型:`(value: number | undefined) => void`
108
+ - 默认值:`undefined`
109
+ - 示例写法:`onchange={async (...args: any[]) => { console.log('onchange', ...args); return true; }}`
110
+
111
+ ## 组件实例方法
112
+
113
+ 通过 `bind:this` 获取组件实例后调用。
114
+
115
+ | 方法 | 类型 | 说明 |
116
+ | --- | --- | --- |
117
+ | `focus()` | `() => void` | 组件实例方法。 |
118
+
119
+ ## 相关类型定义
120
+
121
+ 以下定义帮助理解复杂属性的数据结构;其中部分辅助类型属于内部实现,不一定是独立导出入口。
122
+
123
+ ### `EditorVariant`
124
+
125
+ ```ts
126
+ export type EditorVariant = '' | 'plain' | 'outlined' | 'filled';
127
+ ```
128
+
129
+ ### `UnitOption`
130
+
131
+ ```ts
132
+ export default interface UnitOption {
133
+
134
+ /**
135
+ * 单位编码
136
+ */
137
+ code: string;
138
+
139
+ /**
140
+ * 单位文字
141
+ */
142
+ text?: string;
143
+
144
+ /**
145
+ * 标准比例
146
+ */
147
+ ratio?: number;
148
+
149
+ /**
150
+ * 小数位
151
+ */
152
+ precision?: number;
153
+
154
+ /**
155
+ * 最大值
156
+ */
157
+ max?: number;
158
+
159
+ /**
160
+ * 最小值
161
+ */
162
+ min?: number;
163
+ }
164
+ ```
165
+
166
+ ## 示例
167
+
168
+ 完整示例见 [example.svelte](./example.svelte)。
169
+ ```svelte
170
+ <script lang="ts">
171
+ import UnitNumberEditor from '@ticatec/uniface-element/UnitNumberEditor';
172
+ let value = $state<any>(42);
173
+ let unitCode = $state<any>();
174
+ </script>
175
+
176
+ <UnitNumberEditor
177
+ units={[]}
178
+ bind:value
179
+ bind:unitCode
180
+ onchange={async (...args: any[]) => { console.log('onchange', ...args); return true; }}
181
+ onfocus={async (...args: any[]) => { console.log('onfocus', ...args); return true; }}
182
+ variant="plain"
183
+ placeholder="请输入或选择"
184
+ compact={true}
185
+ disabled={false}
186
+ />
187
+ <p>当前状态:{JSON.stringify({value, unitCode})}</p>
188
+ ```
189
+
190
+ ## 源码
191
+
192
+ - `src/lib/form/unit-number-editor/UnitNumberEditor.svelte`
@@ -0,0 +1,18 @@
1
+ <script lang="ts">
2
+ import UnitNumberEditor from '@ticatec/uniface-element/UnitNumberEditor';
3
+ let value = $state<any>(42);
4
+ let unitCode = $state<any>();
5
+ </script>
6
+
7
+ <UnitNumberEditor
8
+ units={[]}
9
+ bind:value
10
+ bind:unitCode
11
+ onchange={async (...args: any[]) => { console.log('onchange', ...args); return true; }}
12
+ onfocus={async (...args: any[]) => { console.log('onfocus', ...args); return true; }}
13
+ variant="plain"
14
+ placeholder="请输入或选择"
15
+ compact={true}
16
+ disabled={false}
17
+ />
18
+ <p>当前状态:{JSON.stringify({value, unitCode})}</p>
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ticatec/uniface-element",
3
- "version": "5.0.1",
3
+ "version": "5.0.2",
4
4
  "description": "A comprehensive UI component library for Svelte applications with rich form controls, data tables, layouts and interactive elements",
5
5
  "keywords": [
6
6
  "svelte",
@@ -24,7 +24,7 @@
24
24
  },
25
25
  "files": [
26
26
  "dist",
27
- "docs/**/*.md",
27
+ "docs/**/*",
28
28
  "*.md",
29
29
  "!dist/**/*.scss",
30
30
  "!dist/**/*.test.*",
@@ -365,6 +365,11 @@
365
365
  "svelte": "./dist/navigation/tabs/index.js",
366
366
  "import": "./dist/navigation/tabs/index.js"
367
367
  },
368
+ "./PageStack": {
369
+ "types": "./dist/navigation/page-stack/index.d.ts",
370
+ "svelte": "./dist/navigation/page-stack/index.js",
371
+ "import": "./dist/navigation/page-stack/index.js"
372
+ },
368
373
  "./FullScreenOverlay": {
369
374
  "types": "./dist/overlay/common/FullscreenOverlay.svelte.d.ts",
370
375
  "svelte": "./dist/overlay/common/FullscreenOverlay.svelte",
@@ -429,9 +434,9 @@
429
434
  "devDependencies": {
430
435
  "@eslint/js": "^10.0.1",
431
436
  "@sveltejs/adapter-auto": "^7.0.1",
432
- "@sveltejs/kit": "^2.60.1",
437
+ "@sveltejs/kit": "^2.70.2",
433
438
  "@sveltejs/package": "^2.5.7",
434
- "@sveltejs/vite-plugin-svelte": "^7.1.2",
439
+ "@sveltejs/vite-plugin-svelte": "^7.2.0",
435
440
  "@tailwindcss/postcss": "^4.3.1",
436
441
  "@testing-library/svelte": "^5.4.2",
437
442
  "@ticatec/i18n": "^0.5.0",
@@ -445,15 +450,15 @@
445
450
  "prettier-plugin-svelte": "^4.0.0",
446
451
  "publint": "^0.3.21",
447
452
  "sass": "^1.99.0",
448
- "svelte": "^5.55.9",
449
- "svelte-check": "^4.4.8",
453
+ "svelte": "^5.56.5",
454
+ "svelte-check": "^4.7.4",
450
455
  "svelte-preprocess": "^6.0.3",
451
456
  "tailwindcss": "^4.3.1",
452
457
  "tslib": "^2.8.1",
453
458
  "typescript": "^5.7.3",
454
459
  "typescript-eslint": "^8.59.4",
455
460
  "vite": "^8.0.13",
456
- "vitest": "^3.2.7"
461
+ "vitest": "^4.1.10"
457
462
  },
458
463
  "author": "Henry Feng",
459
464
  "license": "MIT",
@@ -485,12 +490,15 @@
485
490
  "build:css": "sass ./src/lib/ticatec-uniface-web.scss:./src/lib/ticatec-uniface-web.css --no-source-map",
486
491
  "build": "pnpm run build:css && svelte-kit sync && svelte-package",
487
492
  "package": "svelte-kit sync && svelte-package && publint",
493
+ "test:consumer": "pnpm --filter uniface-element-consumer-test test",
488
494
  "check": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json",
489
495
  "check:watch": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json --watch",
490
496
  "lint": "eslint src/lib",
491
497
  "lint:fix": "eslint src/lib --fix",
492
498
  "format": "prettier --write .",
493
499
  "format:check": "prettier --check .",
500
+ "docs:components": "node ./scripts/generate-component-docs.mjs",
501
+ "docs:check": "pnpm run build && node ./scripts/check-docs-examples.mjs",
494
502
  "typecheck": "pnpm run check",
495
503
  "test": "vitest run",
496
504
  "audit": "pnpm audit",