@ticatec/uniface-element 0.2.0 → 0.2.1

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 (126) hide show
  1. package/README.md +273 -1
  2. package/README_CN.md +341 -0
  3. package/dist/common/MouseClickHandler.d.ts +1 -1
  4. package/dist/dialog/CommonDialog.svelte +6 -3
  5. package/dist/dialog/CommonDialog.svelte.d.ts +2 -1
  6. package/dist/dialog/Dialog.svelte +36 -10
  7. package/dist/dialog/Dialog.svelte.d.ts +4 -3
  8. package/dist/dialog/DialogBoard.svelte +11 -8
  9. package/dist/dialog/DialogWrapper.svelte +10 -0
  10. package/dist/dialog/DialogWrapper.svelte.d.ts +22 -0
  11. package/dist/dialog/Dialogs.js +1 -1
  12. package/dist/dialog/ModalResult.d.ts +5 -0
  13. package/dist/dialog/ModalResult.js +5 -0
  14. package/docs/buttons/cn/ActionBar.md +459 -0
  15. package/docs/buttons/cn/Button.md +228 -0
  16. package/docs/buttons/cn/IconButton.md +294 -0
  17. package/docs/buttons/cn/README.md +600 -0
  18. package/docs/buttons/cn/TextButton.md +163 -0
  19. package/docs/buttons/en/ActionBar.md +459 -0
  20. package/docs/buttons/en/Button.md +228 -0
  21. package/docs/buttons/en/IconButton.md +294 -0
  22. package/docs/buttons/en/README.md +600 -0
  23. package/docs/buttons/en/TextButton.md +163 -0
  24. package/docs/containers/cn/accordion.md +622 -0
  25. package/docs/containers/cn/box.md +445 -0
  26. package/docs/containers/cn/card.md +404 -0
  27. package/docs/containers/cn/page.md +576 -0
  28. package/docs/containers/cn/tabs.md +686 -0
  29. package/docs/containers/en/accordion.md +622 -0
  30. package/docs/containers/en/box.md +445 -0
  31. package/docs/containers/en/card.md +404 -0
  32. package/docs/containers/en/page.md +576 -0
  33. package/docs/containers/en/tabs.md +686 -0
  34. package/docs/data-display/cn/concise-data-table.md +731 -0
  35. package/docs/data-display/cn/listbox.md +786 -0
  36. package/docs/data-display/cn/treeview.md +863 -0
  37. package/docs/data-display/en/concise-data-table.md +732 -0
  38. package/docs/data-display/en/listbox.md +786 -0
  39. package/docs/data-display/en/treeview.md +863 -0
  40. package/docs/data-table/cn/README.md +596 -0
  41. package/docs/data-table/en/README.md +596 -0
  42. package/docs/dialog/cn/README.md +767 -0
  43. package/docs/dialog/en/README.md +767 -0
  44. package/docs/form/cn/README.md +847 -0
  45. package/docs/form/en/README.md +847 -0
  46. package/docs/form-components/cn/README.md +495 -0
  47. package/docs/form-components/cn/attachmentfilesfield.md +757 -0
  48. package/docs/form-components/cn/cascade-options-select.md +374 -0
  49. package/docs/form-components/cn/checkbox.md +58 -0
  50. package/docs/form-components/cn/date-picker.md +138 -0
  51. package/docs/form-components/cn/datetime-picker.md +228 -0
  52. package/docs/form-components/cn/group-checkbox.md +405 -0
  53. package/docs/form-components/cn/group-radiobox.md +525 -0
  54. package/docs/form-components/cn/imagefilesfield.md +651 -0
  55. package/docs/form-components/cn/input-options-select.md +250 -0
  56. package/docs/form-components/cn/lookup-editor.md +406 -0
  57. package/docs/form-components/cn/memoeditor.md +409 -0
  58. package/docs/form-components/cn/number-editor.md +261 -0
  59. package/docs/form-components/cn/options-multi-select.md +177 -0
  60. package/docs/form-components/cn/options-select.md +83 -0
  61. package/docs/form-components/cn/passwordeditor.md +538 -0
  62. package/docs/form-components/cn/prompts-text-editor.md +241 -0
  63. package/docs/form-components/cn/radiobutton.md +84 -0
  64. package/docs/form-components/cn/switch.md +178 -0
  65. package/docs/form-components/cn/text-editor.md +142 -0
  66. package/docs/form-components/cn/time-editor.md +159 -0
  67. package/docs/form-components/cn/unit-number-editor.md +164 -0
  68. package/docs/form-components/en/README.md +463 -0
  69. package/docs/form-components/en/attachmentfilesfield.md +757 -0
  70. package/docs/form-components/en/cascade-options-select.md +358 -0
  71. package/docs/form-components/en/checkbox.md +59 -0
  72. package/docs/form-components/en/date-picker.md +138 -0
  73. package/docs/form-components/en/datetime-picker.md +228 -0
  74. package/docs/form-components/en/group-checkbox.md +395 -0
  75. package/docs/form-components/en/group-radiobox.md +498 -0
  76. package/docs/form-components/en/imagefilesfield.md +651 -0
  77. package/docs/form-components/en/input-options-select.md +239 -0
  78. package/docs/form-components/en/lookup-editor.md +389 -0
  79. package/docs/form-components/en/memoeditor.md +409 -0
  80. package/docs/form-components/en/number-editor.md +249 -0
  81. package/docs/form-components/en/options-multi-select.md +177 -0
  82. package/docs/form-components/en/options-select.md +83 -0
  83. package/docs/form-components/en/passwordeditor.md +538 -0
  84. package/docs/form-components/en/prompts-text-editor.md +241 -0
  85. package/docs/form-components/en/radiobutton.md +84 -0
  86. package/docs/form-components/en/switch.md +180 -0
  87. package/docs/form-components/en/text-editor.md +142 -0
  88. package/docs/form-components/en/time-editor.md +159 -0
  89. package/docs/form-components/en/unit-number-editor.md +164 -0
  90. package/docs/form-layout/cn/criteria-field.md +652 -0
  91. package/docs/form-layout/cn/flex-form.md +454 -0
  92. package/docs/form-layout/cn/flex-row-form.md +542 -0
  93. package/docs/form-layout/cn/form-field.md +923 -0
  94. package/docs/form-layout/cn/grid-form.md +676 -0
  95. package/docs/form-layout/en/criteria-field.md +652 -0
  96. package/docs/form-layout/en/flex-form.md +454 -0
  97. package/docs/form-layout/en/flex-row-form.md +542 -0
  98. package/docs/form-layout/en/form-field.md +923 -0
  99. package/docs/form-layout/en/grid-form.md +676 -0
  100. package/docs/global/cn/README.md +534 -0
  101. package/docs/global/en/README.md +534 -0
  102. package/docs/layout/cn/classiclayout.md +460 -0
  103. package/docs/layout/cn/headerlayout.md +524 -0
  104. package/docs/layout/cn/sidebarlayout.md +263 -0
  105. package/docs/layout/en/classiclayout.md +951 -0
  106. package/docs/layout/en/headerlayout.md +524 -0
  107. package/docs/layout/en/sidebarlayout.md +262 -0
  108. package/docs/misc/cn/README.md +1217 -0
  109. package/docs/misc/en/README.md +1217 -0
  110. package/docs/navigation/cn/breadcrumb.md +291 -0
  111. package/docs/navigation/cn/navigator.md +322 -0
  112. package/docs/navigation/cn/navigatormenu.md +512 -0
  113. package/docs/navigation/cn/progressbar.md +199 -0
  114. package/docs/navigation/cn/progressstepbar.md +299 -0
  115. package/docs/navigation/en/breadcrumb.md +291 -0
  116. package/docs/navigation/en/navigator.md +322 -0
  117. package/docs/navigation/en/navigatormenu.md +512 -0
  118. package/docs/navigation/en/progressbar.md +199 -0
  119. package/docs/navigation/en/progressstepbar.md +299 -0
  120. package/docs/search-filters/cn/daterange.md +1156 -0
  121. package/docs/search-filters/cn/numberrange.md +688 -0
  122. package/docs/search-filters/cn/searchbox.md +1582 -0
  123. package/docs/search-filters/en/daterange.md +1156 -0
  124. package/docs/search-filters/en/numberrange.md +688 -0
  125. package/docs/search-filters/en/searchbox.md +1582 -0
  126. package/package.json +38 -5
@@ -0,0 +1,177 @@
1
+ # OptionsMultiSelect 组件
2
+
3
+ 多选下拉组件,允许从选项中选择多个值,以标签形式显示。
4
+
5
+ ## 属性
6
+
7
+ | 属性 | 类型 | 默认值 | 描述 |
8
+ |------|------|--------|------|
9
+ | `variant` | `'' \| 'plain' \| 'outlined' \| 'filled'` | `''` | 外观变体 |
10
+ | `disabled` | `boolean` | `false` | 是否禁用 |
11
+ | `readonly` | `boolean` | `false` | 是否只读 |
12
+ | `compact` | `boolean` | `false` | 是否紧凑模式 |
13
+ | `value` | `string` | `''` | 选中值(用分隔符连接) |
14
+ | `delimiter` | `string` | `';'` | 值分隔符 |
15
+ | `options` | `Array<any>` | `[]` | 选项数组 |
16
+ | `keyField` | `string` | `'code'` | 值字段名 |
17
+ | `textField` | `string` | `'text'` | 显示字段名 |
18
+ | `placeholder` | `string` | `''` | 占位符文本 |
19
+ | `emptyText` | `string` | `''` | 空值显示文本 |
20
+ | `disableOptions` | `Array<string>` | `[]` | 禁用的选项值 |
21
+ | `hideOptions` | `Array<string>` | `[]` | 隐藏的选项值 |
22
+ | `displayMode` | `DisplayMode` | `DisplayMode.Edit` | 显示模式 |
23
+ | `menu$height` | `number` | `0` | 下拉菜单高度 |
24
+ | `tagColor` | `string` | `''` | 标签颜色 |
25
+ | `tagVariant` | `'borderless' \| 'border' \| 'round'` | `'border'` | 标签样式 |
26
+ | `style` | `string` | `''` | 自定义样式 |
27
+ | `onChange` | `OnChangeHandler<Array<string>>` | - | 值变化回调 |
28
+
29
+ ## 使用示例
30
+
31
+ ```svelte
32
+ <script lang="ts">
33
+ import OptionsMultiSelect from '@ticatec/uniface-element/OptionsMultiSelect';
34
+
35
+ interface Option {
36
+ code: string;
37
+ text: string;
38
+ }
39
+
40
+ // 技能选项
41
+ const skills: Option[] = [
42
+ { code: 'js', text: 'JavaScript' },
43
+ { code: 'ts', text: 'TypeScript' },
44
+ { code: 'svelte', text: 'Svelte' },
45
+ { code: 'vue', text: 'Vue.js' },
46
+ { code: 'react', text: 'React' },
47
+ { code: 'node', text: 'Node.js' },
48
+ { code: 'python', text: 'Python' },
49
+ { code: 'java', text: 'Java' }
50
+ ];
51
+
52
+ // 兴趣爱好
53
+ const hobbies: Option[] = [
54
+ { code: 'reading', text: '阅读' },
55
+ { code: 'music', text: '音乐' },
56
+ { code: 'sports', text: '运动' },
57
+ { code: 'travel', text: '旅行' },
58
+ { code: 'photography', text: '摄影' },
59
+ { code: 'cooking', text: '烹饪' }
60
+ ];
61
+
62
+ let selectedSkills: string = '';
63
+ let selectedHobbies: string = '';
64
+
65
+ const handleSkillsChange = (values: string[]): void => {
66
+ console.log('选择的技能:', values);
67
+ };
68
+
69
+ const handleHobbiesChange = (values: string[]): void => {
70
+ console.log('选择的爱好:', values);
71
+ };
72
+ </script>
73
+
74
+ <!-- 技能多选 -->
75
+ <OptionsMultiSelect
76
+ placeholder="请选择您的技能"
77
+ options={skills}
78
+ keyField="code"
79
+ textField="text"
80
+ bind:value={selectedSkills}
81
+ onChange={handleSkillsChange}
82
+ />
83
+
84
+ <!-- 兴趣爱好多选(圆角标签) -->
85
+ <OptionsMultiSelect
86
+ placeholder="请选择您的兴趣爱好"
87
+ options={hobbies}
88
+ keyField="code"
89
+ textField="text"
90
+ tagVariant="round"
91
+ tagColor="#007bff"
92
+ bind:value={selectedHobbies}
93
+ onChange={handleHobbiesChange}
94
+ />
95
+ ```
96
+
97
+ ## 高级用法
98
+
99
+ ### 动态选项管理
100
+ ```svelte
101
+ <script lang="ts">
102
+ interface Category {
103
+ id: string;
104
+ name: string;
105
+ parent_id: string | null;
106
+ }
107
+
108
+ let selectedCategories: string = '';
109
+ let availableCategories: Category[] = [];
110
+ let userLevel: 'basic' | 'premium' | 'admin' = 'basic';
111
+
112
+ // 根据用户级别过滤可用分类
113
+ $: filteredCategories = availableCategories.filter(cat => {
114
+ if (userLevel === 'basic') {
115
+ return cat.parent_id === null; // 只显示顶级分类
116
+ } else if (userLevel === 'premium') {
117
+ return true; // 显示所有分类
118
+ } else {
119
+ return true; // 管理员看到所有分类
120
+ }
121
+ });
122
+
123
+ // 根据用户级别设置禁用选项
124
+ $: disabledOptions = userLevel === 'basic'
125
+ ? availableCategories.filter(cat => cat.parent_id !== null).map(cat => cat.id)
126
+ : [];
127
+ </script>
128
+
129
+ <OptionsMultiSelect
130
+ placeholder="请选择分类"
131
+ options={filteredCategories}
132
+ keyField="id"
133
+ textField="name"
134
+ {disabledOptions}
135
+ bind:value={selectedCategories}
136
+ />
137
+ ```
138
+
139
+ ## 最佳实践
140
+
141
+ ### 1. 限制选择数量
142
+ ```svelte
143
+ <script lang="ts">
144
+ let selectedTags: string = '';
145
+ let maxTags: number = 5;
146
+ let tagError: string = '';
147
+
148
+ const handleTagsChange = (values: string[]): void => {
149
+ if (values.length > maxTags) {
150
+ tagError = `最多只能选择 ${maxTags} 个标签`;
151
+ // 截取前maxTags个
152
+ selectedTags = values.slice(0, maxTags).join(';');
153
+ } else {
154
+ tagError = '';
155
+ }
156
+ };
157
+ </script>
158
+
159
+ <OptionsMultiSelect
160
+ options={tagOptions}
161
+ bind:value={selectedTags}
162
+ onChange={handleTagsChange}
163
+ />
164
+ {#if tagError}
165
+ <div class="error-message">{tagError}</div>
166
+ {/if}
167
+ ```
168
+
169
+ ### 2. 自定义标签样式
170
+ ```svelte
171
+ <OptionsMultiSelect
172
+ options={colorOptions}
173
+ tagVariant="round"
174
+ tagColor="var(--primary-color)"
175
+ bind:value={selectedColors}
176
+ />
177
+ ```
@@ -0,0 +1,83 @@
1
+ # OptionsSelect 组件
2
+
3
+ 单选下拉选择组件,从预定义选项中选择一个值。
4
+
5
+ ## 属性
6
+
7
+ | 属性 | 类型 | 默认值 | 描述 |
8
+ |------|------|--------|------|
9
+ | `variant` | `'' \| 'plain' \| 'outlined' \| 'filled'` | `''` | 外观变体 |
10
+ | `disabled` | `boolean` | `false` | 是否禁用 |
11
+ | `readonly` | `boolean` | `false` | 是否只读 |
12
+ | `compact` | `boolean` | `false` | 是否紧凑模式 |
13
+ | `value` | `any` | `null` | 选中的值 |
14
+ | `options` | `Array<any>` | `[]` | 选项数组 |
15
+ | `keyField` | `string` | `'code'` | 值字段名 |
16
+ | `textField` | `string` | `'text'` | 显示字段名 |
17
+ | `placeholder` | `string` | `''` | 占位符文本 |
18
+ | `emptyText` | `string` | `''` | 空值显示文本 |
19
+ | `disableOptions` | `Array<string>` | `[]` | 禁用的选项值 |
20
+ | `hideOptions` | `Array<string>` | `[]` | 隐藏的选项值 |
21
+ | `displayMode` | `DisplayMode` | `DisplayMode.Edit` | 显示模式 |
22
+ | `menu$height` | `number` | `0` | 下拉菜单高度 |
23
+ | `style` | `string` | `''` | 自定义样式 |
24
+ | `onChange` | `OnChangeHandler<any>` | - | 值变化回调 |
25
+
26
+ ## 使用示例
27
+
28
+ ```svelte
29
+ <script lang="ts">
30
+ import OptionsSelect from '@ticatec/uniface-element/OptionsSelect';
31
+
32
+ // 国家选项
33
+ const countries = [
34
+ { code: 'CN', text: '中国' },
35
+ { code: 'US', text: '美国' },
36
+ { code: 'JP', text: '日本' },
37
+ { code: 'GB', text: '英国' },
38
+ { code: 'DE', text: '德国' }
39
+ ];
40
+
41
+ // 状态选项
42
+ const statuses = [
43
+ { code: 'active', text: '活跃' },
44
+ { code: 'inactive', text: '非活跃' },
45
+ { code: 'pending', text: '待审核' },
46
+ { code: 'suspended', text: '暂停' }
47
+ ];
48
+
49
+ let selectedCountry = '';
50
+ let userStatus = 'active';
51
+
52
+ const handleCountryChange = (value) => {
53
+ selectedCountry = value;
54
+ console.log('选择的国家:', value);
55
+ };
56
+
57
+ const handleStatusChange = (value) => {
58
+ userStatus = value;
59
+ console.log('用户状态:', value);
60
+ };
61
+ </script>
62
+
63
+ <!-- 国家选择 -->
64
+ <OptionsSelect
65
+ placeholder="请选择国家"
66
+ options={countries}
67
+ keyField="code"
68
+ textField="text"
69
+ bind:value={selectedCountry}
70
+ onChange={handleCountryChange}
71
+ />
72
+
73
+ <!-- 用户状态选择(禁用部分选项) -->
74
+ <OptionsSelect
75
+ placeholder="请选择状态"
76
+ options={statuses}
77
+ keyField="code"
78
+ textField="text"
79
+ disableOptions={['suspended']}
80
+ bind:value={userStatus}
81
+ onChange={handleStatusChange}
82
+ />
83
+ ```