@ticatec/uniface-element 0.2.0 → 0.2.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 (209) hide show
  1. package/README.md +320 -1
  2. package/README_CN.md +392 -0
  3. package/dist/accordion/Accordion.svelte +1 -1
  4. package/dist/action-bar/ActionBar.svelte +7 -1
  5. package/dist/attachment-files/FileRender.svelte +1 -1
  6. package/dist/attachment-files/FileUploadBar.svelte +7 -6
  7. package/dist/attachment-files/FileUploadPanel.svelte +2 -2
  8. package/dist/base-calendar/DateContext.js +5 -4
  9. package/dist/base-calendar/YearPickupPanel.svelte +4 -4
  10. package/dist/card/Card.svelte +1 -1
  11. package/dist/card/Card.svelte.d.ts +1 -1
  12. package/dist/cascade-options-select/CascadeOptionSelect.svelte +2 -3
  13. package/dist/cascade-options-select/CascadeOptionSelect.svelte.d.ts +46 -1
  14. package/dist/cascade-options-select/CascadePanel.svelte +1 -1
  15. package/dist/checkbox/CheckBox.svelte +1 -1
  16. package/dist/color-picker/ColorPicker.svelte +9 -9
  17. package/dist/color-picker/ColorPicker.svelte.d.ts +0 -2
  18. package/dist/color-picker/ColorPickerPanel.svelte +11 -15
  19. package/dist/color-picker/ColorPickerPanel.svelte.d.ts +1 -1
  20. package/dist/common/CommonPicker.svelte +2 -2
  21. package/dist/common/CommonPicker.svelte.d.ts +1 -1
  22. package/dist/common/MouseClickHandler.d.ts +1 -1
  23. package/dist/common/Popover.svelte +28 -6
  24. package/dist/common/Popover.svelte.d.ts +9 -3
  25. package/dist/common/uniface-utils.js +6 -4
  26. package/dist/common-editor/CommonEditor.svelte +1 -1
  27. package/dist/common-editor/CommonEditor.svelte.d.ts +1 -1
  28. package/dist/common-editor/NumberInput.svelte +1 -1
  29. package/dist/common-editor/NumberInput.svelte.d.ts +1 -1
  30. package/dist/concise-data-table/ConciseListTable.svelte +7 -2
  31. package/dist/concise-data-table/ConciseListTable.svelte.d.ts +1 -0
  32. package/dist/concise-data-table/DataRow.svelte +1 -1
  33. package/dist/concise-data-table/TableOptions.d.ts +1 -1
  34. package/dist/data-table/DataTable.svelte +1 -1
  35. package/dist/data-table/parts/ActionsPanel.svelte +4 -3
  36. package/dist/data-table/parts/ActionsRow.svelte +3 -3
  37. package/dist/data-table/parts/ContentPanel.svelte +3 -2
  38. package/dist/data-table/parts/FixedColumnsPanel.svelte +0 -1
  39. package/dist/data-table/parts/FixedColumnsPanel.svelte.d.ts +1 -2
  40. package/dist/data-table/parts/FixedHeaderPanel.svelte +2 -2
  41. package/dist/data-table/parts/FixedRow.svelte +2 -1
  42. package/dist/data-table/parts/FixedRow.svelte.d.ts +1 -1
  43. package/dist/data-table/parts/HrefCell.svelte +23 -2
  44. package/dist/data-table/parts/PopupMenu.svelte +25 -2
  45. package/dist/data-table/parts/PopupMenu.svelte.d.ts +8 -1
  46. package/dist/date-picker/DatePicker.svelte +0 -1
  47. package/dist/date-picker/DateTimePicker.svelte +3 -3
  48. package/dist/date-picker/ScrollBar.svelte +4 -7
  49. package/dist/date-range/DateRangeEditor.svelte +1 -1
  50. package/dist/dialog/CommonDialog.svelte +8 -5
  51. package/dist/dialog/CommonDialog.svelte.d.ts +2 -1
  52. package/dist/dialog/Dialog.svelte +37 -12
  53. package/dist/dialog/Dialog.svelte.d.ts +4 -3
  54. package/dist/dialog/DialogBoard.svelte +11 -8
  55. package/dist/dialog/DialogWrapper.svelte +10 -0
  56. package/dist/{common-editor/DateInput.svelte.d.ts → dialog/DialogWrapper.svelte.d.ts} +6 -13
  57. package/dist/dialog/Dialogs.js +1 -1
  58. package/dist/dialog/ModalResult.d.ts +5 -0
  59. package/dist/dialog/ModalResult.js +5 -0
  60. package/dist/drawer/Drawer.svelte +1 -1
  61. package/dist/form-field/FormField.svelte +2 -1
  62. package/dist/form-field/FormField.svelte.d.ts +1 -0
  63. package/dist/form-panel/flex-row-form/FormContainer.svelte +1 -1
  64. package/dist/form-panel/grid-form/EmptyCell.svelte +8 -7
  65. package/dist/form-panel/grid-form/EmptyCell.svelte.d.ts +2 -2
  66. package/dist/form-panel/grid-form/GridField.svelte +1 -1
  67. package/dist/i18nRes/i18nRes.d.ts +2 -0
  68. package/dist/i18nRes/i18nRes.js +44 -0
  69. package/dist/i18nRes/index.d.ts +2 -0
  70. package/dist/i18nRes/index.js +2 -0
  71. package/dist/image-files/ImageFilesField.svelte +1 -1
  72. package/dist/indicator/IndicatorBoard.svelte +1 -1
  73. package/dist/inline-cell-editor/InvalidEditor.svelte +1 -0
  74. package/dist/input-options-select/InputOptionsSelect.svelte +6 -6
  75. package/dist/input-options-select/InputOptionsSelect.svelte.d.ts +1 -1
  76. package/dist/layout/flex/FlexBlock.svelte +1 -1
  77. package/dist/lookup-editor/LookupEditor.svelte +1 -1
  78. package/dist/memo-editor/MemoEditor.svelte +2 -2
  79. package/dist/message-box/IMessageBox.d.ts +2 -4
  80. package/dist/message-box/IMessageBox.js +4 -6
  81. package/dist/message-box/MessageBoxBoard.svelte +1 -3
  82. package/dist/options-multi-select/OptionsMultiSelect.svelte +1 -1
  83. package/dist/prompts-text-editor/PromptsTextEditor.svelte +2 -2
  84. package/dist/prompts-text-editor/PromptsTextEditor.svelte.d.ts +1 -1
  85. package/dist/property-editor/PropertyEditor.svelte +3 -3
  86. package/dist/text-editor/PasswordEditor.svelte +1 -1
  87. package/dist/transfer/Transfer.svelte +17 -12
  88. package/dist/transfer/Transfer.svelte.d.ts +0 -1
  89. package/dist/unit-number-editor/UnitNumberEditor.svelte +2 -2
  90. package/docs/buttons/cn/ActionBar.md +459 -0
  91. package/docs/buttons/cn/Button.md +228 -0
  92. package/docs/buttons/cn/IconButton.md +294 -0
  93. package/docs/buttons/cn/README.md +600 -0
  94. package/docs/buttons/cn/TextButton.md +163 -0
  95. package/docs/buttons/en/ActionBar.md +459 -0
  96. package/docs/buttons/en/Button.md +228 -0
  97. package/docs/buttons/en/IconButton.md +294 -0
  98. package/docs/buttons/en/README.md +600 -0
  99. package/docs/buttons/en/TextButton.md +163 -0
  100. package/docs/containers/cn/accordion.md +622 -0
  101. package/docs/containers/cn/box.md +445 -0
  102. package/docs/containers/cn/card.md +404 -0
  103. package/docs/containers/cn/page.md +576 -0
  104. package/docs/containers/cn/tabs.md +686 -0
  105. package/docs/containers/en/accordion.md +622 -0
  106. package/docs/containers/en/box.md +445 -0
  107. package/docs/containers/en/card.md +404 -0
  108. package/docs/containers/en/page.md +576 -0
  109. package/docs/containers/en/tabs.md +686 -0
  110. package/docs/data-display/cn/concise-data-table.md +731 -0
  111. package/docs/data-display/cn/listbox.md +786 -0
  112. package/docs/data-display/cn/treeview.md +863 -0
  113. package/docs/data-display/en/concise-data-table.md +732 -0
  114. package/docs/data-display/en/listbox.md +786 -0
  115. package/docs/data-display/en/treeview.md +863 -0
  116. package/docs/data-table/cn/README.md +596 -0
  117. package/docs/data-table/en/README.md +596 -0
  118. package/docs/dialog/cn/README.md +767 -0
  119. package/docs/dialog/en/README.md +767 -0
  120. package/docs/form/cn/README.md +847 -0
  121. package/docs/form/en/README.md +847 -0
  122. package/docs/form-components/cn/README.md +495 -0
  123. package/docs/form-components/cn/attachmentfilesfield.md +757 -0
  124. package/docs/form-components/cn/cascade-options-select.md +374 -0
  125. package/docs/form-components/cn/checkbox.md +58 -0
  126. package/docs/form-components/cn/date-picker.md +138 -0
  127. package/docs/form-components/cn/datetime-picker.md +228 -0
  128. package/docs/form-components/cn/group-checkbox.md +405 -0
  129. package/docs/form-components/cn/group-radiobox.md +525 -0
  130. package/docs/form-components/cn/imagefilesfield.md +651 -0
  131. package/docs/form-components/cn/input-options-select.md +250 -0
  132. package/docs/form-components/cn/lookup-editor.md +406 -0
  133. package/docs/form-components/cn/memoeditor.md +409 -0
  134. package/docs/form-components/cn/number-editor.md +261 -0
  135. package/docs/form-components/cn/options-multi-select.md +177 -0
  136. package/docs/form-components/cn/options-select.md +83 -0
  137. package/docs/form-components/cn/passwordeditor.md +538 -0
  138. package/docs/form-components/cn/prompts-text-editor.md +241 -0
  139. package/docs/form-components/cn/radiobutton.md +84 -0
  140. package/docs/form-components/cn/switch.md +178 -0
  141. package/docs/form-components/cn/text-editor.md +142 -0
  142. package/docs/form-components/cn/time-editor.md +159 -0
  143. package/docs/form-components/cn/unit-number-editor.md +164 -0
  144. package/docs/form-components/en/README.md +463 -0
  145. package/docs/form-components/en/attachmentfilesfield.md +757 -0
  146. package/docs/form-components/en/cascade-options-select.md +358 -0
  147. package/docs/form-components/en/checkbox.md +59 -0
  148. package/docs/form-components/en/date-picker.md +138 -0
  149. package/docs/form-components/en/datetime-picker.md +228 -0
  150. package/docs/form-components/en/group-checkbox.md +395 -0
  151. package/docs/form-components/en/group-radiobox.md +498 -0
  152. package/docs/form-components/en/imagefilesfield.md +651 -0
  153. package/docs/form-components/en/input-options-select.md +239 -0
  154. package/docs/form-components/en/lookup-editor.md +389 -0
  155. package/docs/form-components/en/memoeditor.md +409 -0
  156. package/docs/form-components/en/number-editor.md +249 -0
  157. package/docs/form-components/en/options-multi-select.md +177 -0
  158. package/docs/form-components/en/options-select.md +83 -0
  159. package/docs/form-components/en/passwordeditor.md +538 -0
  160. package/docs/form-components/en/prompts-text-editor.md +241 -0
  161. package/docs/form-components/en/radiobutton.md +84 -0
  162. package/docs/form-components/en/switch.md +180 -0
  163. package/docs/form-components/en/text-editor.md +142 -0
  164. package/docs/form-components/en/time-editor.md +159 -0
  165. package/docs/form-components/en/unit-number-editor.md +164 -0
  166. package/docs/form-layout/cn/criteria-field.md +652 -0
  167. package/docs/form-layout/cn/flex-form.md +454 -0
  168. package/docs/form-layout/cn/flex-row-form.md +542 -0
  169. package/docs/form-layout/cn/form-field.md +923 -0
  170. package/docs/form-layout/cn/grid-form.md +676 -0
  171. package/docs/form-layout/en/criteria-field.md +652 -0
  172. package/docs/form-layout/en/flex-form.md +454 -0
  173. package/docs/form-layout/en/flex-row-form.md +542 -0
  174. package/docs/form-layout/en/form-field.md +923 -0
  175. package/docs/form-layout/en/grid-form.md +676 -0
  176. package/docs/global/cn/README.md +534 -0
  177. package/docs/global/en/README.md +534 -0
  178. package/docs/layout/cn/classiclayout.md +460 -0
  179. package/docs/layout/cn/headerlayout.md +524 -0
  180. package/docs/layout/cn/sidebarlayout.md +263 -0
  181. package/docs/layout/en/classiclayout.md +951 -0
  182. package/docs/layout/en/headerlayout.md +524 -0
  183. package/docs/layout/en/sidebarlayout.md +262 -0
  184. package/docs/misc/cn/README.md +1217 -0
  185. package/docs/misc/en/README.md +1217 -0
  186. package/docs/navigation/cn/breadcrumb.md +291 -0
  187. package/docs/navigation/cn/navigator.md +322 -0
  188. package/docs/navigation/cn/navigatormenu.md +512 -0
  189. package/docs/navigation/cn/progressbar.md +199 -0
  190. package/docs/navigation/cn/progressstepbar.md +299 -0
  191. package/docs/navigation/en/breadcrumb.md +291 -0
  192. package/docs/navigation/en/navigator.md +322 -0
  193. package/docs/navigation/en/navigatormenu.md +512 -0
  194. package/docs/navigation/en/progressbar.md +199 -0
  195. package/docs/navigation/en/progressstepbar.md +299 -0
  196. package/docs/search-filters/cn/daterange.md +1156 -0
  197. package/docs/search-filters/cn/numberrange.md +688 -0
  198. package/docs/search-filters/cn/searchbox.md +1582 -0
  199. package/docs/search-filters/en/daterange.md +1156 -0
  200. package/docs/search-filters/en/numberrange.md +688 -0
  201. package/docs/search-filters/en/searchbox.md +1582 -0
  202. package/package.json +53 -13
  203. package/dist/common-editor/DateInput.svelte +0 -27
  204. package/dist/i18n_resources/index.d.ts +0 -3
  205. package/dist/i18n_resources/index.js +0 -3
  206. /package/dist/{i18n_resources → i18nRes}/uniface_cn_resource.d.ts +0 -0
  207. /package/dist/{i18n_resources → i18nRes}/uniface_cn_resource.js +0 -0
  208. /package/dist/{i18n_resources → i18nRes}/uniface_en_resource.d.ts +0 -0
  209. /package/dist/{i18n_resources → i18nRes}/uniface_en_resource.js +0 -0
@@ -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
+ ```