@timus-networks/theme 2.0.1 → 2.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 (193) hide show
  1. package/README.md +34 -49
  2. package/dist/module.d.mts +1 -1
  3. package/dist/module.d.ts +1 -1
  4. package/dist/module.json +2 -2
  5. package/dist/module.mjs +40 -18
  6. package/dist/runtime/components/development/example.alert.vue +29 -0
  7. package/dist/runtime/components/development/example.avatar.vue +85 -0
  8. package/dist/runtime/components/development/example.badge.vue +93 -0
  9. package/dist/runtime/components/development/example.breadcrumb.vue +54 -0
  10. package/dist/runtime/components/development/example.button.vue +235 -0
  11. package/dist/runtime/components/{example.button.vue.d.ts → development/example.button.vue.d.ts} +2 -1
  12. package/dist/runtime/components/development/example.card.vue +68 -0
  13. package/dist/runtime/components/development/example.checkbox.vue +176 -0
  14. package/dist/runtime/components/{example.checkbox.vue.d.ts → development/example.checkbox.vue.d.ts} +2 -2
  15. package/dist/runtime/components/development/example.collapse.vue +38 -0
  16. package/dist/runtime/components/development/example.datepicker.vue +193 -0
  17. package/dist/runtime/components/development/example.description.vue +94 -0
  18. package/dist/runtime/components/{example.dialog.vue → development/example.dialog.vue} +21 -24
  19. package/dist/runtime/components/development/example.dropdown.vue +166 -0
  20. package/dist/runtime/components/development/example.form.vue +488 -0
  21. package/dist/runtime/components/development/example.input.vue +270 -0
  22. package/dist/runtime/components/development/example.input.vue.d.ts +23 -0
  23. package/dist/runtime/components/development/example.link.vue +68 -0
  24. package/dist/runtime/components/development/example.message.vue +64 -0
  25. package/dist/runtime/components/development/example.notification.vue +75 -0
  26. package/dist/runtime/components/development/example.number.vue +70 -0
  27. package/dist/runtime/components/development/example.pagination.vue +89 -0
  28. package/dist/runtime/components/development/example.popover.vue +151 -0
  29. package/dist/runtime/components/development/example.radio.vue +163 -0
  30. package/dist/runtime/components/{example.radio.vue.d.ts → development/example.radio.vue.d.ts} +3 -2
  31. package/dist/runtime/components/development/example.select.vue +588 -0
  32. package/dist/runtime/components/{example.select.vue.d.ts → development/example.select.vue.d.ts} +3 -2
  33. package/dist/runtime/components/development/example.sidebar.vue +101 -0
  34. package/dist/runtime/components/development/example.static.vue +50 -0
  35. package/dist/runtime/components/development/example.switch.vue +101 -0
  36. package/dist/runtime/components/{example.table.vue → development/example.table.vue} +8 -22
  37. package/dist/runtime/components/development/example.tag.vue +255 -0
  38. package/dist/runtime/components/development/example.timepicker.vue +89 -0
  39. package/dist/runtime/components/development/example.tooltip.vue +104 -0
  40. package/dist/runtime/components/development/example.upload.vue +84 -0
  41. package/dist/runtime/components/production/html-encode.vue +96 -0
  42. package/dist/runtime/components/production/timus-breadcrumb.d.ts +36 -0
  43. package/dist/runtime/components/production/timus-breadcrumb.js +224 -0
  44. package/dist/runtime/components/production/timus-breadcrumb.mjs +224 -0
  45. package/dist/runtime/components/production/timus-breadcrumb.vue +83 -0
  46. package/dist/runtime/components/production/timus-breadcrumb.vue.d.ts +340 -0
  47. package/dist/runtime/composables/useBreadcrumb.d.ts +8 -0
  48. package/dist/runtime/composables/useBreadcrumb.js +53 -0
  49. package/dist/runtime/composables/useBreadcrumb.mjs +53 -0
  50. package/dist/runtime/pages/theme.vue +44 -13
  51. package/dist/runtime/plugins/disable-warnings-plugin.js +18 -0
  52. package/dist/runtime/plugins/disable-warnings-plugin.mjs +18 -0
  53. package/dist/runtime/public/scss/element-plus/affix.css +28 -0
  54. package/dist/runtime/public/scss/element-plus/alert.css +116 -20
  55. package/dist/runtime/public/scss/element-plus/anchor-link.css +28 -0
  56. package/dist/runtime/public/scss/element-plus/anchor.css +28 -0
  57. package/dist/runtime/public/scss/element-plus/aside.css +28 -0
  58. package/dist/runtime/public/scss/element-plus/autocomplete.css +28 -0
  59. package/dist/runtime/public/scss/element-plus/avatar.css +60 -10
  60. package/dist/runtime/public/scss/element-plus/backtop.css +28 -0
  61. package/dist/runtime/public/scss/element-plus/badge.css +30 -2
  62. package/dist/runtime/public/scss/element-plus/base.css +31 -3
  63. package/dist/runtime/public/scss/element-plus/breadcrumb.css +46 -6
  64. package/dist/runtime/public/scss/element-plus/button-group.css +154 -32
  65. package/dist/runtime/public/scss/element-plus/button.css +70 -24
  66. package/dist/runtime/public/scss/element-plus/calendar.css +28 -0
  67. package/dist/runtime/public/scss/element-plus/card.css +41 -6
  68. package/dist/runtime/public/scss/element-plus/carousel-item.css +28 -0
  69. package/dist/runtime/public/scss/element-plus/carousel.css +28 -0
  70. package/dist/runtime/public/scss/element-plus/cascader-panel.css +28 -0
  71. package/dist/runtime/public/scss/element-plus/cascader.css +28 -0
  72. package/dist/runtime/public/scss/element-plus/check-tag.css +28 -0
  73. package/dist/runtime/public/scss/element-plus/checkbox-button.css +33 -0
  74. package/dist/runtime/public/scss/element-plus/checkbox-group.css +28 -0
  75. package/dist/runtime/public/scss/element-plus/checkbox.css +28 -0
  76. package/dist/runtime/public/scss/element-plus/col.css +28 -0
  77. package/dist/runtime/public/scss/element-plus/collapse.css +28 -0
  78. package/dist/runtime/public/scss/element-plus/color-picker.css +28 -0
  79. package/dist/runtime/public/scss/element-plus/common/popup.css +28 -0
  80. package/dist/runtime/public/scss/element-plus/common/transition.css +28 -0
  81. package/dist/runtime/public/scss/element-plus/common/var.css +28 -0
  82. package/dist/runtime/public/scss/element-plus/container.css +28 -0
  83. package/dist/runtime/public/scss/element-plus/dark/css-vars.css +28 -0
  84. package/dist/runtime/public/scss/element-plus/dark/var.css +28 -0
  85. package/dist/runtime/public/scss/element-plus/date-picker/date-picker.css +76 -14
  86. package/dist/runtime/public/scss/element-plus/date-picker/date-range-picker.css +41 -9
  87. package/dist/runtime/public/scss/element-plus/date-picker/date-table.css +31 -3
  88. package/dist/runtime/public/scss/element-plus/date-picker/month-table.css +28 -0
  89. package/dist/runtime/public/scss/element-plus/date-picker/picker-panel.css +69 -6
  90. package/dist/runtime/public/scss/element-plus/date-picker/picker.css +28 -0
  91. package/dist/runtime/public/scss/element-plus/date-picker/time-picker.css +56 -16
  92. package/dist/runtime/public/scss/element-plus/date-picker/time-range-picker.css +39 -4
  93. package/dist/runtime/public/scss/element-plus/date-picker/time-spinner.css +31 -4
  94. package/dist/runtime/public/scss/element-plus/date-picker/year-table.css +28 -0
  95. package/dist/runtime/public/scss/element-plus/date-picker.css +134 -50
  96. package/dist/runtime/public/scss/element-plus/descriptions-item.css +48 -8
  97. package/dist/runtime/public/scss/element-plus/descriptions.css +78 -16
  98. package/dist/runtime/public/scss/element-plus/dialog.css +30 -2
  99. package/dist/runtime/public/scss/element-plus/display.css +28 -0
  100. package/dist/runtime/public/scss/element-plus/divider.css +28 -0
  101. package/dist/runtime/public/scss/element-plus/drawer.css +28 -0
  102. package/dist/runtime/public/scss/element-plus/dropdown.css +43 -12
  103. package/dist/runtime/public/scss/element-plus/empty.css +28 -0
  104. package/dist/runtime/public/scss/element-plus/footer.css +28 -0
  105. package/dist/runtime/public/scss/element-plus/form.css +28 -0
  106. package/dist/runtime/public/scss/element-plus/header.css +28 -0
  107. package/dist/runtime/public/scss/element-plus/icon.css +30 -2
  108. package/dist/runtime/public/scss/element-plus/image-viewer.css +28 -0
  109. package/dist/runtime/public/scss/element-plus/image.css +28 -0
  110. package/dist/runtime/public/scss/element-plus/index.css +920 -329
  111. package/dist/runtime/public/scss/element-plus/input-number.css +50 -6
  112. package/dist/runtime/public/scss/element-plus/input.css +28 -0
  113. package/dist/runtime/public/scss/element-plus/link.css +59 -28
  114. package/dist/runtime/public/scss/element-plus/loading.css +28 -0
  115. package/dist/runtime/public/scss/element-plus/main.css +28 -0
  116. package/dist/runtime/public/scss/element-plus/mention.css +28 -0
  117. package/dist/runtime/public/scss/element-plus/menu.css +28 -0
  118. package/dist/runtime/public/scss/element-plus/message-box.css +34 -2
  119. package/dist/runtime/public/scss/element-plus/message.css +161 -31
  120. package/dist/runtime/public/scss/element-plus/mixins/mixins.css +28 -0
  121. package/dist/runtime/public/scss/element-plus/notification.css +41 -9
  122. package/dist/runtime/public/scss/element-plus/option-group.css +28 -0
  123. package/dist/runtime/public/scss/element-plus/option.css +29 -0
  124. package/dist/runtime/public/scss/element-plus/overlay.css +28 -0
  125. package/dist/runtime/public/scss/element-plus/page-header.css +28 -0
  126. package/dist/runtime/public/scss/element-plus/pagination.css +64 -11
  127. package/dist/runtime/public/scss/element-plus/popconfirm.css +28 -0
  128. package/dist/runtime/public/scss/element-plus/popover.css +28 -0
  129. package/dist/runtime/public/scss/element-plus/popper.css +29 -1
  130. package/dist/runtime/public/scss/element-plus/progress.css +28 -0
  131. package/dist/runtime/public/scss/element-plus/radio-button.css +36 -2
  132. package/dist/runtime/public/scss/element-plus/radio-group.css +28 -0
  133. package/dist/runtime/public/scss/element-plus/radio.css +28 -0
  134. package/dist/runtime/public/scss/element-plus/rate.css +28 -0
  135. package/dist/runtime/public/scss/element-plus/reset.css +28 -0
  136. package/dist/runtime/public/scss/element-plus/result.css +28 -0
  137. package/dist/runtime/public/scss/element-plus/row.css +28 -0
  138. package/dist/runtime/public/scss/element-plus/scrollbar.css +28 -0
  139. package/dist/runtime/public/scss/element-plus/segmented.css +28 -0
  140. package/dist/runtime/public/scss/element-plus/select-dropdown-v2.css +28 -0
  141. package/dist/runtime/public/scss/element-plus/select-dropdown.css +28 -0
  142. package/dist/runtime/public/scss/element-plus/select-v2.css +48 -23
  143. package/dist/runtime/public/scss/element-plus/select.css +48 -23
  144. package/dist/runtime/public/scss/element-plus/skeleton-item.css +28 -0
  145. package/dist/runtime/public/scss/element-plus/skeleton.css +28 -0
  146. package/dist/runtime/public/scss/element-plus/slider.css +28 -0
  147. package/dist/runtime/public/scss/element-plus/space.css +28 -0
  148. package/dist/runtime/public/scss/element-plus/spinner.css +28 -0
  149. package/dist/runtime/public/scss/element-plus/statistic.css +28 -0
  150. package/dist/runtime/public/scss/element-plus/step.css +28 -0
  151. package/dist/runtime/public/scss/element-plus/steps.css +28 -0
  152. package/dist/runtime/public/scss/element-plus/switch.css +116 -20
  153. package/dist/runtime/public/scss/element-plus/table-column.css +29 -1
  154. package/dist/runtime/public/scss/element-plus/table-v2.css +28 -0
  155. package/dist/runtime/public/scss/element-plus/table.css +28 -0
  156. package/dist/runtime/public/scss/element-plus/tabs.css +30 -2
  157. package/dist/runtime/public/scss/element-plus/tag.css +28 -0
  158. package/dist/runtime/public/scss/element-plus/text.css +34 -0
  159. package/dist/runtime/public/scss/element-plus/time-picker.css +111 -30
  160. package/dist/runtime/public/scss/element-plus/time-select.css +76 -14
  161. package/dist/runtime/public/scss/element-plus/timeline-item.css +28 -0
  162. package/dist/runtime/public/scss/element-plus/timeline.css +28 -0
  163. package/dist/runtime/public/scss/element-plus/tooltip-v2.css +28 -0
  164. package/dist/runtime/public/scss/element-plus/tour.css +30 -2
  165. package/dist/runtime/public/scss/element-plus/transfer.css +28 -0
  166. package/dist/runtime/public/scss/element-plus/tree-select.css +28 -0
  167. package/dist/runtime/public/scss/element-plus/tree.css +28 -0
  168. package/dist/runtime/public/scss/element-plus/upload.css +28 -0
  169. package/dist/runtime/public/scss/element-plus/var.css +29 -1
  170. package/dist/runtime/public/scss/element-plus/virtual-list.css +28 -0
  171. package/dist/runtime/public/scss/theme.css +79 -2
  172. package/dist/runtime/types.d.ts +7 -16
  173. package/package.json +1 -1
  174. package/dist/runtime/components/example.button.vue +0 -237
  175. package/dist/runtime/components/example.checkbox.vue +0 -190
  176. package/dist/runtime/components/example.form.vue +0 -494
  177. package/dist/runtime/components/example.input.vue +0 -286
  178. package/dist/runtime/components/example.input.vue.d.ts +0 -20
  179. package/dist/runtime/components/example.popover.vue +0 -161
  180. package/dist/runtime/components/example.radio.vue +0 -165
  181. package/dist/runtime/components/example.select.vue +0 -591
  182. package/dist/runtime/components/example.sidebar.vue +0 -104
  183. package/dist/runtime/components/example.tag.vue +0 -279
  184. package/dist/runtime/components/html-encode.vue +0 -37
  185. package/dist/runtime/plugins/element-extend-plugin.d.ts +0 -38
  186. package/dist/runtime/plugins/element-extend-plugin.js +0 -39
  187. package/dist/runtime/plugins/element-extend-plugin.mjs +0 -39
  188. package/dist/runtime/plugins/experimental-size-plugin.js +0 -13
  189. package/dist/runtime/plugins/experimental-size-plugin.mjs +0 -13
  190. /package/dist/runtime/plugins/{experimental-size-plugin.d.ts → disable-warnings-plugin.d.ts} +0 -0
  191. /package/dist/runtime/plugins/{theme-provider.d.ts → theme-provider-plugin.d.ts} +0 -0
  192. /package/dist/runtime/plugins/{theme-provider.js → theme-provider-plugin.js} +0 -0
  193. /package/dist/runtime/plugins/{theme-provider.mjs → theme-provider-plugin.mjs} +0 -0
@@ -0,0 +1,488 @@
1
+ <template>
2
+ <div class="flex flex-col gap-8 mb-16">
3
+ <h1 class="">Form</h1>
4
+ <p>Form consists of input, radio, select, checkbox and so on. With form, you can collect, verify and submit data.</p>
5
+
6
+ <el-card>
7
+ <template #header>Basic Form</template>
8
+ <div class="flex flex-col gap-3 items-start">
9
+ <p>
10
+ It includes all kinds of input items, such as input, select, radio and checkbox. In each form component, you need a form-item field to be the container of your input
11
+ item.
12
+ </p>
13
+ <div class="flex gap-2">
14
+ <el-form :model="form" label-width="auto" style="max-width: 600px" :label-position="labelPosition" require-asterisk-position="right">
15
+ <el-form-item label="Form Align" :required="true" class="grow">
16
+ <el-radio-group v-model="labelPosition" aria-label="label position">
17
+ <el-radio-button value="left">Left</el-radio-button>
18
+ <el-radio-button value="right">Right</el-radio-button>
19
+ <el-radio-button value="top">Top</el-radio-button>
20
+ </el-radio-group>
21
+ </el-form-item>
22
+ <el-form-item label="Activity name" class="grow">
23
+ <el-input v-model="form.name" />
24
+ </el-form-item>
25
+ <el-form-item label="Activity form">
26
+ <el-input v-model="form.desc" type="textarea" />
27
+ </el-form-item>
28
+ <el-form-item label="Instant delivery">
29
+ <el-switch v-model="form.delivery" />
30
+ </el-form-item>
31
+ <el-form-item label="Activity type">
32
+ <el-checkbox-group v-model="form.type">
33
+ <el-checkbox value="Online activities" name="type"> Online activities </el-checkbox>
34
+ <el-checkbox value="Promotion activities" name="type"> Promotion activities </el-checkbox>
35
+ <el-checkbox value="Offline activities" name="type"> Offline activities </el-checkbox>
36
+ <el-checkbox value="Simple brand exposure" name="type"> Simple brand exposure </el-checkbox>
37
+ </el-checkbox-group>
38
+ </el-form-item>
39
+ <el-form-item label="Resources">
40
+ <el-radio-group v-model="form.resource">
41
+ <el-radio value="Sponsor">Sponsor</el-radio>
42
+ <el-radio value="Venue">Venue</el-radio>
43
+ </el-radio-group>
44
+ </el-form-item>
45
+ <el-form-item label="Activity time">
46
+ <el-col :span="11">
47
+ <el-date-picker v-model="form.date1" type="date" placeholder="Pick a date" style="width: 100%" />
48
+ </el-col>
49
+ <el-col :span="2" class="text-center">
50
+ <span class="text-gray-500">-</span>
51
+ </el-col>
52
+ <el-col :span="11">
53
+ <el-time-picker v-model="form.date2" placeholder="Pick a time" style="width: 100%" />
54
+ </el-col>
55
+ </el-form-item>
56
+ <el-form-item class="flex gap-7">
57
+ <el-button class="mr-7.5" type="primary" @click="onSubmit">Create</el-button>
58
+ <el-button>Cancel</el-button>
59
+ </el-form-item>
60
+ </el-form>
61
+ </div>
62
+ </div>
63
+
64
+ <template #footer> <html-encode :tag="snippets.basic" /> </template>
65
+ </el-card>
66
+
67
+ <el-card>
68
+ <template #header> Same Line Form Items </template>
69
+ <div class="flex flex-col gap-3 items-start">
70
+ <p>
71
+ Add a <el-text tag="mark">div</el-text> with a class name containing <el-text tag="mark">.el-form-items</el-text> to make the form items appear on the same line, which
72
+ will automatically add a 30px gap between them.
73
+ </p>
74
+ <div class="flex gap-2">
75
+ <el-form :model="form" label-width="auto" :label-position="labelPosition" require-asterisk-position="right">
76
+ <div class="el-form-items">
77
+ <el-form-item label="Activity form">
78
+ <el-input v-model="form.input" />
79
+ </el-form-item>
80
+ <el-form-item label="Activity zone">
81
+ <el-select v-model="form.region" placeholder="please select your zone" class="!w-32">
82
+ <el-option label="Zone one" value="shanghai" />
83
+ <el-option label="Zone two" value="beijing" />
84
+ </el-select>
85
+ </el-form-item>
86
+ <el-form-item label="Activity form">
87
+ <el-input v-model="form.input" />
88
+ </el-form-item>
89
+ <el-form-item label="Deactivity form">
90
+ <el-input v-model="form.input" />
91
+ </el-form-item>
92
+ <el-form-item label="Activity zone" class="w-32">
93
+ <el-select v-model="form.region" placeholder="please select your zone">
94
+ <el-option label="Zone one" value="shanghai" />
95
+ <el-option label="Zone two" value="beijing" />
96
+ </el-select>
97
+ </el-form-item>
98
+ <el-form-item>
99
+ <el-button class="isax-add" />
100
+ </el-form-item>
101
+ </div>
102
+ </el-form>
103
+ </div>
104
+ </div>
105
+
106
+ <template #footer> <html-encode :tag="snippets.same_line" /> </template>
107
+ </el-card>
108
+
109
+ <el-card>
110
+ <template #header> Sticky Form Items </template>
111
+ <div class="flex flex-col gap-3 items-start">
112
+ <p>
113
+ Add a <el-text tag="mark">div</el-text> with a class name containing <el-text tag="mark">sticky</el-text> and <el-text tag="mark">el-form-items</el-text> to make it stick
114
+ to others.
115
+ </p>
116
+ <div class="flex gap-2">
117
+ <el-form :model="form" label-width="auto" :label-position="labelPosition" require-asterisk-position="right">
118
+ <div class="el-form-items sticky">
119
+ <el-form-item label="Activity form">
120
+ <el-input v-model="form.input" />
121
+ </el-form-item>
122
+ <el-form-item label="Activity zone">
123
+ <el-select v-model="form.region" placeholder="please select your zone" class="!w-32">
124
+ <el-option label="Zone one" value="shanghai" />
125
+ <el-option label="Zone two" value="beijing" />
126
+ </el-select>
127
+ </el-form-item>
128
+ <el-form-item label="Activity form">
129
+ <el-input v-model="form.input" />
130
+ </el-form-item>
131
+ <el-form-item label="Deactivity form">
132
+ <el-input v-model="form.input" />
133
+ </el-form-item>
134
+ <el-form-item label="Activity zone" class="w-32">
135
+ <el-select v-model="form.region" placeholder="please select your zone">
136
+ <el-option label="Zone one" value="shanghai" />
137
+ <el-option label="Zone two" value="beijing" />
138
+ </el-select>
139
+ </el-form-item>
140
+ <el-form-item>
141
+ <el-button class="isax-add" />
142
+ </el-form-item>
143
+ </div>
144
+ </el-form>
145
+ </div>
146
+ </div>
147
+ <template #footer> <html-encode :tag="snippets.sticky" /> </template>
148
+ </el-card>
149
+
150
+ <el-card>
151
+ <template #header> Validation </template>
152
+ <div class="flex flex-col gap-3 items-start">
153
+ <p>
154
+ Form component allows you to verify your data, helping you find and correct errors. Just add the <el-text tag="mark">rules</el-text> attribute for
155
+ <el-text tag="mark">Form</el-text> component, pass validation rules, and set prop attribute for FormItem as a specific key that needs to be validated. See more
156
+ information at <a href="https://github.com/yiminghe/async-validator" target="_blank">async-validator</a>.
157
+ </p>
158
+ <div class="flex gap-2">
159
+ <el-form
160
+ ref="ruleFormRef"
161
+ style="max-width: 600px"
162
+ :model="ruleForm"
163
+ :rules="rules"
164
+ label-width="auto"
165
+ class="demo-ruleForm"
166
+ :size="formSize"
167
+ status-icon
168
+ require-asterisk-position="right"
169
+ label-position="top"
170
+ >
171
+ <el-form-item label="Activity name" prop="name">
172
+ <el-input v-model="ruleForm.name" />
173
+ </el-form-item>
174
+ <el-form-item label="Activity zone" prop="region">
175
+ <el-select v-model="ruleForm.region" placeholder="Activity zone">
176
+ <el-option label="Zone one" value="shanghai" />
177
+ <el-option label="Zone two" value="beijing" />
178
+ </el-select>
179
+ </el-form-item>
180
+ <el-form-item label="Activity count" prop="count">
181
+ <el-select-v2 v-model="ruleForm.count" placeholder="Activity count" :options="options" />
182
+ </el-form-item>
183
+ <el-form-item label="Activity time" required>
184
+ <el-col :span="11">
185
+ <el-form-item prop="date1">
186
+ <el-input v-model="ruleForm.name" />
187
+ </el-form-item>
188
+ </el-col>
189
+ <el-col class="text-center" :span="2">
190
+ <span class="text-gray-500">-</span>
191
+ </el-col>
192
+ <el-col :span="11">
193
+ <el-form-item prop="date2">
194
+ <el-input v-model="ruleForm.name" />
195
+ </el-form-item>
196
+ </el-col>
197
+ </el-form-item>
198
+ <div label="Activity time" required class="el-form-items sticky">
199
+ <el-form-item prop="date1" label="Date 1">
200
+ <el-date-picker v-model="ruleForm.date1" type="date" aria-label="Pick a date" placeholder="Pick a date" style="width: 100%" />
201
+ </el-form-item>
202
+ <el-form-item prop="date2">
203
+ <el-time-picker v-model="ruleForm.date2" aria-label="Pick a time" placeholder="Pick a time" style="width: 100%" />
204
+ </el-form-item>
205
+ </div>
206
+ <el-form-item label="Instant delivery" prop="delivery">
207
+ <el-switch v-model="ruleForm.delivery" />
208
+ </el-form-item>
209
+ <el-form-item label="Activity location" prop="location">
210
+ <el-segmented v-model="ruleForm.location" :options="locationOptions" />
211
+ </el-form-item>
212
+ <el-form-item label="Activity type" prop="type">
213
+ <el-checkbox-group v-model="ruleForm.type">
214
+ <el-checkbox value="Online activities" name="type"> Online activities </el-checkbox>
215
+ <el-checkbox value="Promotion activities" name="type"> Promotion activities </el-checkbox>
216
+ <el-checkbox value="Offline activities" name="type"> Offline activities </el-checkbox>
217
+ <el-checkbox value="Simple brand exposure" name="type"> Simple brand exposure </el-checkbox>
218
+ </el-checkbox-group>
219
+ </el-form-item>
220
+ <el-form-item label="Resources" prop="resource">
221
+ <el-radio-group v-model="ruleForm.resource">
222
+ <el-radio value="Sponsorship">Sponsorship</el-radio>
223
+ <el-radio value="Venue">Venue</el-radio>
224
+ </el-radio-group>
225
+ </el-form-item>
226
+ <el-form-item label="Activity form" prop="desc">
227
+ <el-input v-model="ruleForm.desc" type="textarea" />
228
+ </el-form-item>
229
+ <el-form-item>
230
+ <el-button type="primary" class="mr-7.5" @click="submitForm(ruleFormRef)"> Create </el-button>
231
+ <el-button @click="resetForm(ruleFormRef)">Reset</el-button>
232
+ </el-form-item>
233
+ </el-form>
234
+ </div>
235
+ </div>
236
+ <template #footer> <html-encode :tag="snippets.validation" /> </template>
237
+ </el-card>
238
+
239
+ <el-card>
240
+ <template #header> Sizes </template>
241
+ <div class="flex flex-col gap-3 items-start">
242
+ <p>
243
+ All components in a Form inherit their <el-text tag="mark">size</el-text> attribute from that Form. Similarly, FormItem also has a size attribute. Still you can fine tune
244
+ each component's size if you don't want that component to inherit its size from From or FormItem.
245
+ </p>
246
+ <div class="flex flex-col gap-7.5">
247
+ <div class="flex gap-7.5">
248
+ <el-radio-group v-model="formSize" aria-label="size control">
249
+ <el-radio-button value="default">default</el-radio-button>
250
+ <el-radio-button value="large">large</el-radio-button>
251
+ <el-radio-button value="medium">medium</el-radio-button>
252
+ <el-radio-button value="small">small</el-radio-button>
253
+ <el-radio-button value="mini">mini</el-radio-button>
254
+ </el-radio-group>
255
+ <el-radio-group v-model="labelPosition" aria-label="position control">
256
+ <el-radio-button value="left">Left</el-radio-button>
257
+ <el-radio-button value="right">Right</el-radio-button>
258
+ <el-radio-button value="top">Top</el-radio-button>
259
+ </el-radio-group>
260
+ </div>
261
+ <el-form style="max-width: 600px" :model="ruleForm" label-width="auto" :label-position="labelPosition" :size="formSize">
262
+ <el-form-item label="Activity name">
263
+ <el-input v-model="ruleForm.name" />
264
+ </el-form-item>
265
+ <el-form-item label="Activity zone">
266
+ <el-select v-model="ruleForm.region" placeholder="please select your zone">
267
+ <el-option label="Zone one" value="shanghai" />
268
+ <el-option label="Zone two" value="beijing" />
269
+ </el-select>
270
+ </el-form-item>
271
+ <el-form-item label="Activity time">
272
+ <el-col :span="11">
273
+ <el-date-picker v-model="ruleForm.date1" type="date" aria-label="Pick a date" placeholder="Pick a date" style="width: 100%" />
274
+ </el-col>
275
+ <el-col class="text-center" :span="1" style="margin: 0 0.5rem">-</el-col>
276
+ <el-col :span="11">
277
+ <el-time-picker v-model="ruleForm.date2" aria-label="Pick a time" placeholder="Pick a time" style="width: 100%" />
278
+ </el-col>
279
+ </el-form-item>
280
+ <el-form-item label="Activity type">
281
+ <el-checkbox-group v-model="ruleForm.type">
282
+ <el-checkbox-button value="Online activities" name="type"> Online activities </el-checkbox-button>
283
+ <el-checkbox-button value="Promotion activities" name="type"> Promotion activities </el-checkbox-button>
284
+ </el-checkbox-group>
285
+ </el-form-item>
286
+ <el-form-item label="Resources">
287
+ <el-radio-group v-model="ruleForm.resource">
288
+ <el-radio border value="Sponsor">Sponsor</el-radio>
289
+ <el-radio border value="Venue">Venue</el-radio>
290
+ </el-radio-group>
291
+ </el-form-item>
292
+ <el-form-item>
293
+ <el-button type="primary" class="mr-7.5" @click="onSubmit">Create</el-button>
294
+ <el-button>Cancel</el-button>
295
+ </el-form-item>
296
+ </el-form>
297
+ </div>
298
+ </div>
299
+ <template #footer> <html-encode :tag="snippets.size" /> </template>
300
+ </el-card>
301
+ </div>
302
+ </template>
303
+
304
+ <script lang="ts" setup>
305
+ import type { FormProps } from 'element-plus';
306
+ import { reactive, ref } from 'vue';
307
+
308
+ // do not use same name with ref
309
+ const form = reactive({
310
+ name: '',
311
+ region: '',
312
+ date1: '',
313
+ date2: '',
314
+ delivery: false,
315
+ input: '',
316
+ type: [],
317
+ resource: '',
318
+ desc: '',
319
+ });
320
+ const onSubmit = () => {
321
+ console.log('submit!');
322
+ };
323
+ const labelPosition = ref<FormProps['labelPosition']>('top');
324
+ const snippets = ref({
325
+ basic: `
326
+ <el-form :model="form" label-width="auto" :label-position="top" require-asterisk-position="right">
327
+ </el-form>`,
328
+ same_line: `
329
+ <el-form :model="form" label-width="auto" :label-position="top" require-asterisk-position="right">
330
+ <div class="el-form-items">
331
+ <el-form-item label="Activity form">
332
+ <el-input v-model="form.input" />
333
+ </el-form-item>
334
+ <el-form-item label="Activity zone">
335
+ <el-select v-model="form.region" placeholder="please select your zone" class="!w-32">
336
+ <el-option label="Zone one" value="shanghai" />
337
+ <el-option label="Zone two" value="beijing" />
338
+ </el-select>
339
+ </el-form-item>
340
+ <el-form-item>
341
+ <el-button class="isax-add" />
342
+ </el-form-item>
343
+ </div>
344
+ </el-form>`,
345
+ sticky: `
346
+ <el-form :model="form" label-width="auto" :label-position="top" require-asterisk-position="right">
347
+ <div class="el-form-items sticky">
348
+ <el-form-item label="Activity form">
349
+ <el-input v-model="form.input" />
350
+ </el-form-item>
351
+ <el-form-item label="Activity zone">
352
+ <el-select v-model="form.region" placeholder="please select your zone" class="!w-32">
353
+ <el-option label="Zone one" value="shanghai" />
354
+ <el-option label="Zone two" value="beijing" />
355
+ </el-select>
356
+ </el-form-item>
357
+ <el-form-item>
358
+ <el-button class="isax-add" />
359
+ </el-form-item>
360
+ </div>
361
+ </el-form>
362
+ `,
363
+ validation: `
364
+ <el-form
365
+ ref="ruleFormRef"
366
+ style="max-width: 600px"
367
+ :model="ruleForm"
368
+ :rules="rules"
369
+ label-width="auto"
370
+ class="demo-ruleForm"
371
+ :size="formSize"
372
+ status-icon
373
+ require-asterisk-position="right"
374
+ label-position="top"
375
+ />`,
376
+ size: `<el-form size="large" :model="ruleForm" label-width="auto" label-position="top"></el-form>`,
377
+ });
378
+
379
+ // Rules
380
+
381
+ import type { ComponentSize, FormInstance, FormRules } from 'element-plus';
382
+
383
+ interface RuleForm {
384
+ name: string;
385
+ region: string;
386
+ count: string;
387
+ date1: string;
388
+ date2: string;
389
+ delivery: boolean;
390
+ location: string;
391
+ type: string[];
392
+ resource: string;
393
+ desc: string;
394
+ }
395
+
396
+ const formSize = ref<ComponentSize>('default');
397
+ const ruleFormRef = ref<FormInstance>();
398
+ const ruleForm = reactive<RuleForm>({
399
+ name: 'Hello',
400
+ region: '',
401
+ count: '',
402
+ date1: '',
403
+ date2: '',
404
+ delivery: false,
405
+ location: '',
406
+ type: [],
407
+ resource: '',
408
+ desc: '',
409
+ });
410
+ const locationOptions = ['Home', 'Company', 'School'];
411
+ const rules = reactive<FormRules<RuleForm>>({
412
+ name: [
413
+ { required: true, message: 'Please input Activity name', trigger: 'blur' },
414
+ { min: 3, max: 5, message: 'Length should be 3 to 5', trigger: 'blur' },
415
+ ],
416
+ region: [
417
+ {
418
+ required: true,
419
+ message: 'Please select Activity zone',
420
+ trigger: 'change',
421
+ },
422
+ ],
423
+ count: [
424
+ {
425
+ required: true,
426
+ message: 'Please select Activity count',
427
+ trigger: 'change',
428
+ },
429
+ ],
430
+ date1: [
431
+ {
432
+ type: 'date',
433
+ required: true,
434
+ message: 'Please pick a date',
435
+ trigger: 'change',
436
+ },
437
+ ],
438
+ date2: [
439
+ {
440
+ type: 'date',
441
+ required: true,
442
+ message: 'Please pick a time',
443
+ trigger: 'change',
444
+ },
445
+ ],
446
+ location: [
447
+ {
448
+ required: true,
449
+ message: 'Please select a location',
450
+ trigger: 'change',
451
+ },
452
+ ],
453
+ type: [
454
+ {
455
+ type: 'array',
456
+ required: true,
457
+ message: 'Please select at least one activity type',
458
+ trigger: 'change',
459
+ },
460
+ ],
461
+ resource: [
462
+ {
463
+ required: true,
464
+ message: 'Please select activity resource',
465
+ trigger: 'change',
466
+ },
467
+ ],
468
+ desc: [{ required: true, message: 'Please input activity form', trigger: 'blur' }],
469
+ });
470
+ const submitForm = async (formEl: FormInstance | undefined) => {
471
+ if (!formEl) return;
472
+ await formEl.validate((valid: boolean, fields) => {
473
+ if (valid) {
474
+ console.log('submit!');
475
+ } else {
476
+ console.log('error submit!', fields);
477
+ }
478
+ });
479
+ };
480
+ const resetForm = (formEl: FormInstance | undefined) => {
481
+ if (!formEl) return;
482
+ formEl.resetFields();
483
+ };
484
+ const options = Array.from({ length: 10000 }).map((_, idx) => ({
485
+ value: `${idx + 1}`,
486
+ label: `${idx + 1}`,
487
+ }));
488
+ </script>