@opentiny/vue-docs 3.26.8 → 3.27.0

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 (161) hide show
  1. package/demos/apis/base-select.js +13 -0
  2. package/demos/apis/calendar-view.js +12 -0
  3. package/demos/apis/color-picker.js +16 -0
  4. package/demos/apis/color-select-panel.js +14 -0
  5. package/demos/apis/config-provider.js +2 -1
  6. package/demos/apis/date-picker.js +52 -0
  7. package/demos/apis/dialog-box.js +16 -4
  8. package/demos/apis/drawer.js +22 -0
  9. package/demos/apis/exception.js +43 -27
  10. package/demos/apis/grid.js +38 -3
  11. package/demos/apis/guide.js +14 -0
  12. package/demos/apis/pager.js +3 -3
  13. package/demos/apis/query-builder.js +346 -1
  14. package/demos/apis/select.js +41 -0
  15. package/demos/apis/space.js +99 -0
  16. package/demos/apis/steps.js +15 -0
  17. package/demos/apis/time-picker.js +28 -0
  18. package/demos/apis/time-select.js +30 -0
  19. package/demos/apis/tree-menu.js +14 -0
  20. package/demos/mobile-first/app/calendar-view/basic-usage.vue +1 -1
  21. package/demos/mobile-first/app/exception/webdoc/exception.js +4 -4
  22. package/demos/mobile-first/app/load-list/webdoc/load-list.en.md +1 -1
  23. package/demos/mobile-first/app/space/basic-usage-composition-api.vue +41 -0
  24. package/demos/mobile-first/app/space/basic-usage.spec.ts +37 -0
  25. package/demos/mobile-first/app/space/basic-usage.vue +37 -0
  26. package/demos/mobile-first/app/space/space-align-composition-api.vue +37 -0
  27. package/demos/mobile-first/app/space/space-align.spec.ts +24 -0
  28. package/demos/mobile-first/app/space/space-align.vue +37 -0
  29. package/demos/mobile-first/app/space/space-direction-composition-api.vue +32 -0
  30. package/demos/mobile-first/app/space/space-direction.spec.ts +17 -0
  31. package/demos/mobile-first/app/space/space-direction.vue +32 -0
  32. package/demos/mobile-first/app/space/space-justify-composition-api.vue +44 -0
  33. package/demos/mobile-first/app/space/space-justify.spec.ts +18 -0
  34. package/demos/mobile-first/app/space/space-justify.vue +39 -0
  35. package/demos/mobile-first/app/space/space-order-composition-api.vue +14 -0
  36. package/demos/mobile-first/app/space/space-order.spec.ts +13 -0
  37. package/demos/mobile-first/app/space/space-order.vue +14 -0
  38. package/demos/mobile-first/app/space/space-size-composition-api.vue +39 -0
  39. package/demos/mobile-first/app/space/space-size.spec.ts +37 -0
  40. package/demos/mobile-first/app/space/space-size.vue +39 -0
  41. package/demos/mobile-first/app/space/space-wrap-composition-api.vue +31 -0
  42. package/demos/mobile-first/app/space/space-wrap.spec.ts +25 -0
  43. package/demos/mobile-first/app/space/space-wrap.vue +31 -0
  44. package/demos/mobile-first/app/space/webdoc/space.cn.md +9 -0
  45. package/demos/mobile-first/app/space/webdoc/space.en.md +9 -0
  46. package/demos/mobile-first/app/space/webdoc/space.js +98 -0
  47. package/demos/mobile-first/menus.js +3 -1
  48. package/demos/pc/app/calendar-view/basic-usage-composition-api.vue +1 -1
  49. package/demos/pc/app/calendar-view/basic-usage.vue +1 -1
  50. package/demos/pc/app/carousel/webdoc/carousel.js +2 -1
  51. package/demos/pc/app/color-picker/linear-gradient-composition-api.vue +20 -0
  52. package/demos/pc/app/color-picker/linear-gradient.spec.ts +10 -0
  53. package/demos/pc/app/color-picker/linear-gradient.vue +28 -0
  54. package/demos/pc/app/color-picker/webdoc/color-picker.js +27 -0
  55. package/demos/pc/app/color-select-panel/linear-gradient-composition-api.vue +38 -0
  56. package/demos/pc/app/color-select-panel/linear-gradient.spec.ts +71 -0
  57. package/demos/pc/app/color-select-panel/linear-gradient.vue +45 -0
  58. package/demos/pc/app/color-select-panel/webdoc/color-select-panel.js +12 -0
  59. package/demos/pc/app/config-provider/webdoc/config-provider.js +2 -1
  60. package/demos/pc/app/date-panel/basic-usage.vue +19 -8
  61. package/demos/pc/app/date-panel/custom-weeks.vue +19 -9
  62. package/demos/pc/app/date-panel/disabled-date.vue +29 -19
  63. package/demos/pc/app/date-panel/event.vue +38 -31
  64. package/demos/pc/app/date-panel/format.vue +15 -5
  65. package/demos/pc/app/date-panel/readonly.vue +19 -8
  66. package/demos/pc/app/date-panel/shortcuts.vue +182 -176
  67. package/demos/pc/app/date-panel/unlink-panels.vue +15 -5
  68. package/demos/pc/app/date-picker/now-composition-api.vue +4 -1
  69. package/demos/pc/app/date-picker/now.vue +6 -2
  70. package/demos/pc/app/date-picker/slot-composition-api.vue +112 -0
  71. package/demos/pc/app/date-picker/slot.spec.ts +41 -0
  72. package/demos/pc/app/date-picker/slot.vue +119 -0
  73. package/demos/pc/app/date-picker/webdoc/date-picker.js +12 -0
  74. package/demos/pc/app/dialog-box/before-close-composition-api.vue +65 -0
  75. package/demos/pc/app/dialog-box/before-close.spec.ts +6 -0
  76. package/demos/pc/app/dialog-box/before-close.vue +71 -0
  77. package/demos/pc/app/dialog-box/webdoc/dialog-box.js +16 -0
  78. package/demos/pc/app/dialog-select/nest-tree-single.spec.ts +4 -7
  79. package/demos/pc/app/drawer/webdoc/drawer.js +2 -1
  80. package/demos/pc/app/exception/basic-usage-composition-api.vue +15 -0
  81. package/demos/pc/app/exception/basic-usage.vue +21 -0
  82. package/demos/pc/app/exception/button-text-composition-api.vue +13 -0
  83. package/demos/pc/app/exception/button-text.vue +21 -0
  84. package/demos/pc/app/exception/component-page-composition-api.vue +44 -0
  85. package/demos/pc/app/exception/component-page.vue +55 -0
  86. package/demos/pc/app/exception/page-empty-composition-api.vue +7 -0
  87. package/demos/pc/app/exception/page-empty.vue +13 -0
  88. package/demos/pc/app/exception/slot-composition-api.vue +29 -0
  89. package/demos/pc/app/exception/slot.vue +23 -0
  90. package/demos/pc/app/exception/sub-message-composition-api.vue +7 -0
  91. package/demos/pc/app/exception/sub-message.vue +13 -0
  92. package/demos/pc/app/exception/webdoc/exception.cn.md +5 -0
  93. package/demos/pc/app/exception/webdoc/exception.en.md +5 -0
  94. package/demos/pc/app/exception/webdoc/exception.js +84 -0
  95. package/demos/pc/app/grid/custom/default-customs-composition-api.vue +66 -0
  96. package/demos/pc/app/grid/custom/default-customs.spec.ts +9 -0
  97. package/demos/pc/app/grid/custom/default-customs.vue +75 -0
  98. package/demos/pc/app/grid/mouse-keyboard/mouse-config-hover-composition-api.vue +70 -0
  99. package/demos/pc/app/grid/mouse-keyboard/mouse-config-hover.vue +79 -0
  100. package/demos/pc/app/grid/validation/highlight-error-composition-api.vue +183 -0
  101. package/demos/pc/app/grid/validation/highlight-error.vue +192 -0
  102. package/demos/pc/app/grid/webdoc/grid-custom.js +11 -0
  103. package/demos/pc/app/grid/webdoc/grid-editor.js +2 -2
  104. package/demos/pc/app/grid/webdoc/grid-mouse-keyboard.js +9 -0
  105. package/demos/pc/app/grid/webdoc/grid-validation.js +9 -0
  106. package/demos/pc/app/guide/mask-composition-api.vue +31 -0
  107. package/demos/pc/app/guide/mask.spec.ts +13 -0
  108. package/demos/pc/app/guide/mask.vue +41 -0
  109. package/demos/pc/app/guide/webdoc/guide.js +12 -0
  110. package/demos/pc/app/input/resize.spec.ts +1 -1
  111. package/demos/pc/app/notify/manual-close-composition-api.vue +9 -11
  112. package/demos/pc/app/notify/manual-close.spec.ts +1 -1
  113. package/demos/pc/app/notify/manual-close.vue +9 -11
  114. package/demos/pc/app/notify/verticalOffset.spec.ts +3 -1
  115. package/demos/pc/app/query-builder/handle.vue +558 -0
  116. package/demos/pc/app/query-builder/limit.vue +555 -0
  117. package/demos/pc/app/query-builder/webdoc/query-builder.js +29 -1
  118. package/demos/pc/app/radio/dynamic-disable.vue +1 -1
  119. package/demos/pc/app/space/basic-usage-composition-api.vue +41 -0
  120. package/demos/pc/app/space/basic-usage.spec.ts +37 -0
  121. package/demos/pc/app/space/basic-usage.vue +37 -0
  122. package/demos/pc/app/space/space-align-composition-api.vue +37 -0
  123. package/demos/pc/app/space/space-align.spec.ts +24 -0
  124. package/demos/pc/app/space/space-align.vue +37 -0
  125. package/demos/pc/app/space/space-direction-composition-api.vue +32 -0
  126. package/demos/pc/app/space/space-direction.spec.ts +17 -0
  127. package/demos/pc/app/space/space-direction.vue +32 -0
  128. package/demos/pc/app/space/space-justify-composition-api.vue +44 -0
  129. package/demos/pc/app/space/space-justify.spec.ts +18 -0
  130. package/demos/pc/app/space/space-justify.vue +39 -0
  131. package/demos/pc/app/space/space-order-composition-api.vue +14 -0
  132. package/demos/pc/app/space/space-order.spec.ts +13 -0
  133. package/demos/pc/app/space/space-order.vue +14 -0
  134. package/demos/pc/app/space/space-size-composition-api.vue +39 -0
  135. package/demos/pc/app/space/space-size.spec.ts +37 -0
  136. package/demos/pc/app/space/space-size.vue +39 -0
  137. package/demos/pc/app/space/space-wrap-composition-api.vue +31 -0
  138. package/demos/pc/app/space/space-wrap.spec.ts +25 -0
  139. package/demos/pc/app/space/space-wrap.vue +31 -0
  140. package/demos/pc/app/space/webdoc/space.cn.md +9 -0
  141. package/demos/pc/app/space/webdoc/space.en.md +9 -0
  142. package/demos/pc/app/space/webdoc/space.js +98 -0
  143. package/demos/pc/app/steps/slot-icon-composition-api.vue +46 -0
  144. package/demos/pc/app/steps/slot-icon.vue +54 -0
  145. package/demos/pc/app/steps/webdoc/steps.js +12 -0
  146. package/demos/pc/app/tree-menu/events-composition-api.vue +4 -0
  147. package/demos/pc/app/tree-menu/events.vue +4 -0
  148. package/demos/pc/app/tree-menu/webdoc/tree-menu.js +2 -2
  149. package/demos/pc/app/tree-menu/with-icon-composition-api.vue +149 -24
  150. package/demos/pc/app/tree-menu/with-icon.spec.ts +1 -1
  151. package/demos/pc/app/tree-menu/with-icon.vue +149 -24
  152. package/demos/pc/menus.js +16 -0
  153. package/demos/pc/webdoc/changelog.md +209 -177
  154. package/env/.env.saas +1 -1
  155. package/env/.env.saaspages +9 -0
  156. package/package.json +20 -19
  157. package/playground/App.vue +2 -2
  158. package/src/components/anchor.vue +19 -72
  159. package/src/views/components-doc/common.vue +76 -12
  160. /package/demos/pc/app/user/{nodata-text-composition-api.vue → no-data-text-composition-api.vue} +0 -0
  161. /package/demos/pc/app/user/{nodata-text.vue → no-data-text.vue} +0 -0
@@ -0,0 +1,555 @@
1
+ <template>
2
+ <div>
3
+ <tiny-query-builder ref="queryBuilder" max-height="400" :config="config" :query="query"></tiny-query-builder>
4
+ </div>
5
+ </template>
6
+
7
+ <script>
8
+ import { TinyQueryBuilder } from '@opentiny/vue'
9
+ import { random } from '@opentiny/utils'
10
+
11
+ export default {
12
+ components: {
13
+ TinyQueryBuilder
14
+ },
15
+ data() {
16
+ return {
17
+ config,
18
+ query: this.getInitialQuery()
19
+ }
20
+ },
21
+ methods: {
22
+ getInitialQuery() {
23
+ const initialQuery = {
24
+ id: generateID(),
25
+ combinator: 'and',
26
+ not: false,
27
+ rules: [
28
+ {
29
+ id: generateID(),
30
+ field: 'firstName',
31
+ value: 'Stev',
32
+ operator: 'beginsWith'
33
+ },
34
+ {
35
+ id: generateID(),
36
+ field: 'lastName',
37
+ value: 'Vai, Vaughan',
38
+ operator: 'in'
39
+ },
40
+ {
41
+ id: generateID(),
42
+ field: 'age',
43
+ operator: '>',
44
+ value: '28'
45
+ },
46
+ {
47
+ id: generateID(),
48
+ combinator: 'or',
49
+ rules: [
50
+ {
51
+ id: generateID(),
52
+ field: 'isMusician',
53
+ operator: '=',
54
+ value: true
55
+ },
56
+ {
57
+ id: generateID(),
58
+ field: 'instrument',
59
+ operator: '=',
60
+ value: 'Guitar'
61
+ }
62
+ ]
63
+ },
64
+ {
65
+ id: generateID(),
66
+ rules: [
67
+ {
68
+ id: generateID(),
69
+ field: 'isMusician',
70
+ value: true,
71
+ operator: '='
72
+ },
73
+ {
74
+ id: generateID(),
75
+ field: 'instrument',
76
+ value: 'Guitar',
77
+ operator: '='
78
+ }
79
+ ],
80
+ combinator: 'or'
81
+ },
82
+ {
83
+ id: generateID(),
84
+ field: 'groupedField1',
85
+ operator: '=',
86
+ value: 'groupedField4',
87
+ valueSource: 'field'
88
+ },
89
+ {
90
+ id: generateID(),
91
+ field: 'birthdate',
92
+ operator: 'between',
93
+ value: '1954-10-03,1960-06-06'
94
+ }
95
+ ]
96
+ }
97
+
98
+ return initialQuery
99
+ }
100
+ }
101
+ }
102
+
103
+ const generateID = () =>
104
+ '00-0-4-2-000'.replace(/[^-]/g, (s) => (((random() + ~~s) * 0x10000) >> s).toString(16).padStart(4, '0'))
105
+
106
+ const operators = [
107
+ { name: '=', label: '等于' },
108
+ { name: '!=', label: '不等于' },
109
+ { name: '<', label: '小于' },
110
+ { name: '>', label: '大于' },
111
+ { name: '<=', label: '小于等于' },
112
+ { name: '>=', label: '大于等于' },
113
+ { name: 'contains', label: '包含' },
114
+ { name: 'beginsWith', label: '开头为' },
115
+ { name: 'endsWith', label: '结束为' },
116
+ { name: 'doesNotContain', label: '不包含' },
117
+ { name: 'null', label: '为空' },
118
+ { name: 'notNull', label: '不为空' },
119
+ { name: 'between', label: '介于' },
120
+ { name: 'in', label: 'in' },
121
+ { name: 'notIn', label: 'not in' }
122
+ ]
123
+
124
+ const config = {
125
+ operators,
126
+ groupLimit: 3,
127
+ ruleLimit: 7,
128
+ showLockButtons: false,
129
+ combinators: [
130
+ {
131
+ name: 'and',
132
+ label: '且'
133
+ },
134
+ {
135
+ name: 'or',
136
+ label: '或'
137
+ }
138
+ ],
139
+ fields: [
140
+ {
141
+ name: 'firstName',
142
+ label: 'First Name',
143
+ placeholder: '请输入',
144
+ validator: (r) => !!r.value
145
+ },
146
+ {
147
+ name: 'lastName',
148
+ label: 'Last Name',
149
+ placeholder: 'Enter last name',
150
+ defaultOperator: 'beginsWith',
151
+ validator: (r) => !!r.value
152
+ },
153
+ {
154
+ name: 'age',
155
+ label: 'Age',
156
+ inputType: 'number',
157
+ validator: (r) => !!r.value
158
+ },
159
+ {
160
+ name: 'isMusician',
161
+ label: 'Is a musician',
162
+ valueEditorType: 'checkbox',
163
+ operators: [
164
+ {
165
+ name: '=',
166
+ label: '='
167
+ }
168
+ ],
169
+ defaultValue: false,
170
+ validator: (r) => !!r.value
171
+ },
172
+ {
173
+ name: 'instrument',
174
+ label: 'Primary instrument',
175
+ valueEditorType: 'select',
176
+ values: [
177
+ {
178
+ label: 'Percussion instruments',
179
+ options: [
180
+ {
181
+ name: 'Tambourine',
182
+ label: 'Tambourine'
183
+ },
184
+ {
185
+ name: 'Triangle',
186
+ label: 'Triangle'
187
+ },
188
+ {
189
+ name: 'Vibraphone',
190
+ label: 'Vibraphone'
191
+ },
192
+ {
193
+ name: 'Washboard',
194
+ label: 'Washboard'
195
+ },
196
+ {
197
+ name: 'Wood block',
198
+ label: 'Wood block'
199
+ },
200
+ {
201
+ name: 'Wooden fish',
202
+ label: 'Wooden fish'
203
+ },
204
+ {
205
+ name: 'Xylophone',
206
+ label: 'Xylophone'
207
+ }
208
+ ]
209
+ },
210
+ {
211
+ label: 'Membranophones',
212
+ options: [
213
+ {
214
+ name: 'Drum',
215
+ label: 'Drum'
216
+ },
217
+ {
218
+ name: 'Drum kit',
219
+ label: 'Drum kit'
220
+ },
221
+ {
222
+ name: "Jew's harp",
223
+ label: "Jew's harp"
224
+ },
225
+ {
226
+ name: 'Octaban',
227
+ label: 'Octaban'
228
+ },
229
+ {
230
+ name: 'Samphor',
231
+ label: 'Samphor'
232
+ },
233
+ {
234
+ name: 'Snare drum',
235
+ label: 'Snare drum'
236
+ },
237
+ {
238
+ name: 'Timpani',
239
+ label: 'Timpani'
240
+ },
241
+ {
242
+ name: 'Tom-tom',
243
+ label: 'Tom-tom'
244
+ }
245
+ ]
246
+ },
247
+ {
248
+ label: 'Wind instruments',
249
+ options: [
250
+ {
251
+ name: 'Slide whistle',
252
+ label: 'Slide whistle'
253
+ },
254
+ {
255
+ name: 'Sousaphone',
256
+ label: 'Sousaphone'
257
+ },
258
+ {
259
+ name: 'Trombone',
260
+ label: 'Trombone'
261
+ },
262
+ {
263
+ name: 'Trumpet',
264
+ label: 'Trumpet'
265
+ },
266
+ {
267
+ name: 'Tuba',
268
+ label: 'Tuba'
269
+ },
270
+ {
271
+ name: 'Whistle',
272
+ label: 'Whistle'
273
+ }
274
+ ]
275
+ },
276
+ {
277
+ label: 'Stringed instruments',
278
+ options: [
279
+ {
280
+ name: 'Ukulele',
281
+ label: 'Ukulele'
282
+ },
283
+ {
284
+ name: 'Viol',
285
+ label: 'Viol'
286
+ },
287
+ {
288
+ name: 'Violin',
289
+ label: 'Violin'
290
+ },
291
+ {
292
+ name: 'Washtub bass',
293
+ label: 'Washtub bass'
294
+ }
295
+ ]
296
+ },
297
+ {
298
+ label: 'Electronic instruments',
299
+ options: [
300
+ {
301
+ name: 'Teleharmonium',
302
+ label: 'Teleharmonium'
303
+ },
304
+ {
305
+ name: 'Tenori-on',
306
+ label: 'Tenori-on'
307
+ },
308
+ {
309
+ name: 'Theremin',
310
+ label: 'Theremin'
311
+ },
312
+ {
313
+ name: 'trautonium',
314
+ label: 'trautonium'
315
+ },
316
+ {
317
+ name: 'Turntablism',
318
+ label: 'Turntablism'
319
+ },
320
+ {
321
+ name: 'Turntable',
322
+ label: 'Turntable'
323
+ }
324
+ ]
325
+ }
326
+ ],
327
+ defaultValue: 'Cowbell',
328
+ operators: [
329
+ {
330
+ name: '=',
331
+ label: '='
332
+ },
333
+ {
334
+ name: 'in',
335
+ label: 'in'
336
+ }
337
+ ]
338
+ },
339
+ {
340
+ name: 'alsoPlays',
341
+ label: 'Also plays',
342
+ valueEditorType: 'multiselect',
343
+ values: [
344
+ {
345
+ label: 'Percussion instruments',
346
+ options: [
347
+ {
348
+ name: 'Tambourine',
349
+ label: 'Tambourine'
350
+ },
351
+ {
352
+ name: 'Triangle',
353
+ label: 'Triangle'
354
+ },
355
+ {
356
+ name: 'Vibraphone',
357
+ label: 'Vibraphone'
358
+ },
359
+ {
360
+ name: 'Washboard',
361
+ label: 'Washboard'
362
+ },
363
+ {
364
+ name: 'Wood block',
365
+ label: 'Wood block'
366
+ },
367
+ {
368
+ name: 'Wooden fish',
369
+ label: 'Wooden fish'
370
+ },
371
+ {
372
+ name: 'Xylophone',
373
+ label: 'Xylophone'
374
+ }
375
+ ]
376
+ },
377
+ {
378
+ label: 'Membranophones',
379
+ options: [
380
+ {
381
+ name: 'Drum',
382
+ label: 'Drum'
383
+ },
384
+ {
385
+ name: 'Drum kit',
386
+ label: 'Drum kit'
387
+ },
388
+ {
389
+ name: "Jew's harp",
390
+ label: "Jew's harp"
391
+ },
392
+ {
393
+ name: 'Octaban',
394
+ label: 'Octaban'
395
+ },
396
+ {
397
+ name: 'Samphor',
398
+ label: 'Samphor'
399
+ },
400
+ {
401
+ name: 'Snare drum',
402
+ label: 'Snare drum'
403
+ },
404
+ {
405
+ name: 'Timpani',
406
+ label: 'Timpani'
407
+ },
408
+ {
409
+ name: 'Tom-tom',
410
+ label: 'Tom-tom'
411
+ }
412
+ ]
413
+ },
414
+ {
415
+ label: 'Wind instruments',
416
+ options: [
417
+ {
418
+ name: 'Slide whistle',
419
+ label: 'Slide whistle'
420
+ },
421
+ {
422
+ name: 'Sousaphone',
423
+ label: 'Sousaphone'
424
+ },
425
+ {
426
+ name: 'Trombone',
427
+ label: 'Trombone'
428
+ },
429
+ {
430
+ name: 'Trumpet',
431
+ label: 'Trumpet'
432
+ },
433
+ {
434
+ name: 'Tuba',
435
+ label: 'Tuba'
436
+ },
437
+ {
438
+ name: 'Whistle',
439
+ label: 'Whistle'
440
+ }
441
+ ]
442
+ },
443
+ {
444
+ label: 'Stringed instruments',
445
+ options: [
446
+ {
447
+ name: 'Ukulele',
448
+ label: 'Ukulele'
449
+ },
450
+ {
451
+ name: 'Viol',
452
+ label: 'Viol'
453
+ },
454
+ {
455
+ name: 'Violin',
456
+ label: 'Violin'
457
+ },
458
+ {
459
+ name: 'Washtub bass',
460
+ label: 'Washtub bass'
461
+ }
462
+ ]
463
+ },
464
+ {
465
+ label: 'Electronic instruments',
466
+ options: [
467
+ {
468
+ name: 'trautonium',
469
+ label: 'trautonium'
470
+ },
471
+ {
472
+ name: 'Turntablism',
473
+ label: 'Turntablism'
474
+ },
475
+ {
476
+ name: 'Turntable',
477
+ label: 'Turntable'
478
+ }
479
+ ]
480
+ }
481
+ ],
482
+ defaultValue: 'More cowbell',
483
+ operators: [
484
+ {
485
+ name: 'in',
486
+ label: 'in'
487
+ }
488
+ ]
489
+ },
490
+ {
491
+ name: 'gender',
492
+ label: 'Gender',
493
+ operators: [
494
+ {
495
+ name: '=',
496
+ label: '='
497
+ }
498
+ ],
499
+ valueEditorType: 'radio',
500
+ values: [
501
+ {
502
+ name: 'M',
503
+ label: 'Male'
504
+ },
505
+ {
506
+ name: 'F',
507
+ label: 'Female'
508
+ },
509
+ {
510
+ name: 'O',
511
+ label: 'Other'
512
+ }
513
+ ]
514
+ },
515
+ {
516
+ name: 'datetime',
517
+ label: 'Show Time',
518
+ inputType: 'datetime-local'
519
+ },
520
+ {
521
+ name: 'alarm',
522
+ label: 'Daily Alarm',
523
+ inputType: 'time'
524
+ },
525
+ {
526
+ name: 'groupedField1',
527
+ label: 'Grouped Field 1',
528
+ comparator: 'groupNumber',
529
+ groupNumber: 'group1',
530
+ valueSources: ['field', 'value']
531
+ },
532
+ {
533
+ name: 'groupedField2',
534
+ label: 'Grouped Field 2',
535
+ comparator: 'groupNumber',
536
+ groupNumber: 'group1',
537
+ valueSources: ['field', 'value']
538
+ },
539
+ {
540
+ name: 'groupedField3',
541
+ label: 'Grouped Field 3',
542
+ comparator: 'groupNumber',
543
+ groupNumber: 'group1',
544
+ valueSources: ['field', 'value']
545
+ },
546
+ {
547
+ name: 'groupedField4',
548
+ label: 'Grouped Field 4',
549
+ comparator: 'groupNumber',
550
+ groupNumber: 'group1',
551
+ valueSources: ['field', 'value']
552
+ }
553
+ ]
554
+ }
555
+ </script>
@@ -12,7 +12,7 @@ export default {
12
12
  'zh-CN': `
13
13
  <div class="tip custom-block">
14
14
  <p class=\"custom-block-title\"> config 属性说明 </p>
15
- <code>autoSelectField</code>:范围域是否会默认选择,勾选则默认为第一个选项;反之则默认为----- \n <code>autoSelectOperator</code>:运算符是否会默认选择,勾选则默认选择第一个选项,反之则默认为----- \n <code>disabled</code>:禁用所有规则 \n <code>parsenumbers</code>:数字会被转化为 Number 类型,而非 String 类型 \n <code>showCloneButtons</code>:展示复制按钮,即整条规则可以被复制 \n <code>showCombinatorsBetweenRules</code>:组合子数组统一修改,且不再展示在连线上,以下拉选择形式出现 \n <code>showLockButtons</code>:展示锁定按钮,即整条规则可以被锁定 \n <code>showNotToggle</code>:展示 not 条件切换框 \n <code>displayOnlyField</code>:是否仅展示字段选择器 \n </div> \n 二、fields 数据配置 \n <pre> <code>\n fields 中的数据(只用于说明各字段含义,无业务特定性) \n { \n name: 'isMusician', //name:格式化数据中的值(形参) \n label: 'Is a musician', //label:范围域在规则生成器中对外展示名称 \n valueEditorType: 'checkbox', //placeholder:值域的默认缺省值 \n operators: [ //运算符自定义,name 为格式化数据中的值,label 为范围域对外展示的名称 \n { \n name: '=', \n label: '=' \n } \n ], \n bindProps: { // 通过 bindProps 参数可对某一类组件进行参数控制 \n input:{ \n clearable:true \n }, \n select:{ \n filterable:true \n } \n }, \n defaultValue: false, //defaultOperator:运算符的默认缺省选择 \n validator: (r) => !!r.value //validator:校验规则(该功能点还在迭代开发中……) \n inputType: 'number', //值域的数值类型 \n valueEditorType: 'radio' //值域编辑器的类型 \n defaultValue: false, //值域的默认值 \n values: [ //值域的可选域配置(下拉) \n { \n label: 'Percussion instruments', \n options: [ \n { \n name: 'Clapstick', \n label: 'Clapstick' \n } \n ] \n } \n ], \n values: [ //值域的可选域配置(单选) \n { \n name: 'M', \n label: 'Male' \n }, \n { \n name: 'F', \n label: 'Female' \n }, \n { \n name: 'O', \n label: 'Other' \n } \n ], \n valueSources: ['field', 'value'], //值域类型可选择 \n comparator: 'groupNumber', //分组时的比较器 \n groupNumber: 'group1', //分组的组别 \n }, \n // 组合子数组配置,label 为展示字符,name 为数据值 \n combinators: [ \n { \n name: 'and', \n label: '且' \n }, \n { \n name: 'or', \n label: '或' \n } \n ] \n </code></pre> <br>`,
15
+ <code>autoSelectField</code>:范围域是否会默认选择,勾选则默认为第一个选项;反之则默认为----- \n <code>autoSelectOperator</code>:运算符是否会默认选择,勾选则默认选择第一个选项,反之则默认为----- \n <code>disabled</code>:禁用所有规则 \n <code>parseNumbers</code>:数字会被转化为 Number 类型,而非 String 类型 \n <code>showCloneButtons</code>:展示复制按钮,即整条规则可以被复制 \n <code>showCombinatorsBetweenRules</code>:组合子数组统一修改,且不再展示在连线上,以下拉选择形式出现 \n <code>showLockButtons</code>:展示锁定按钮,即整条规则可以被锁定 \n <code>showNotToggle</code>:展示 not 条件切换框 \n <code>displayOnlyField</code>:是否仅展示字段选择器 \n </div> \n 二、fields 数据配置 \n <pre> <code>\n fields 中的数据(只用于说明各字段含义,无业务特定性) \n { \n name: 'isMusician', //name:格式化数据中的值(形参) \n label: 'Is a musician', //label:范围域在规则生成器中对外展示名称 \n valueEditorType: 'checkbox', //placeholder:值域的默认缺省值 \n operators: [ //运算符自定义,name 为格式化数据中的值,label 为范围域对外展示的名称 \n { \n name: '=', \n label: '=' \n } \n ], \n bindProps: { // 通过 bindProps 参数可对某一类组件进行参数控制 \n input:{ \n clearable:true \n }, \n select:{ \n filterable:true \n } \n }, \n defaultValue: false, //defaultOperator:运算符的默认缺省选择 \n validator: (r) => !!r.value //validator:校验规则(该功能点还在迭代开发中……) \n inputType: 'number', //值域的数值类型 \n valueEditorType: 'radio' //值域编辑器的类型 \n defaultValue: false, //值域的默认值 \n values: [ //值域的可选域配置(下拉) \n { \n label: 'Percussion instruments', \n options: [ \n { \n name: 'Clapstick', \n label: 'Clapstick' \n } \n ] \n } \n ], \n values: [ //值域的可选域配置(单选) \n { \n name: 'M', \n label: 'Male' \n }, \n { \n name: 'F', \n label: 'Female' \n }, \n { \n name: 'O', \n label: 'Other' \n } \n ], \n valueSources: ['field', 'value'], //值域类型可选择 \n comparator: 'groupNumber', //分组时的比较器 \n groupNumber: 'group1', //分组的组别 \n }, \n // 组合子数组配置,label 为展示字符,name 为数据值 \n combinators: [ \n { \n name: 'and', \n label: '且' \n }, \n { \n name: 'or', \n label: '或' \n } \n ] \n </code></pre> <br>`,
16
16
  'en-US': ''
17
17
  },
18
18
  codeFiles: ['basic-usage.vue']
@@ -54,6 +54,34 @@ export default {
54
54
  },
55
55
  codeFiles: ['max-height.vue']
56
56
  },
57
+ {
58
+ demoId: 'handle',
59
+ name: {
60
+ 'zh-CN': '显示与禁用设置',
61
+ 'en-US': 'Display and Disable Settings'
62
+ },
63
+ desc: {
64
+ 'zh-CN':
65
+ '添加 <code>disabled</code> 属性是否全部禁用,添加 <code>showNewRule</code> 属性是否显示新增条件,添加 <code>showNewGroup</code> 属性是否显示新增子条件组,添加 <code>isRuleDisable</code> 属性是否禁用新增条件,添加 <code>isGroupDisable</code> 属性是否禁用新增子条件组。',
66
+ 'en-US':
67
+ 'Add <code>disabled</code> property to disable all, add <code>showNewRule</code> property to show new condition, add <code>showNewGroup</code> property to show new sub-condition group, add <code>isRuleDisable</code> property to disable new rule, add <code>isGroupDisable</code> property to disable new group.'
68
+ },
69
+ codeFiles: ['handle.vue']
70
+ },
71
+ {
72
+ demoId: 'limit',
73
+ name: {
74
+ 'zh-CN': '限制数量',
75
+ 'en-US': 'Limit Settings'
76
+ },
77
+ desc: {
78
+ 'zh-CN':
79
+ '添加 <code>ruleLimit</code> 属性设置新增条件的最大数量,<code>groupLimit</code> 属性设置新增子条件组的最大数量。',
80
+ 'en-US':
81
+ 'Add <code>ruleLimit</code> property to set the maximum number of new rules, <code>groupLimit</code> property to set the maximum number of new sub-condition groups.'
82
+ },
83
+ codeFiles: ['limit.vue']
84
+ },
57
85
  {
58
86
  demoId: 'sub-component-param',
59
87
  name: {
@@ -31,7 +31,7 @@ export default {
31
31
  return {
32
32
  radio: '禁用',
33
33
  radio1: '6',
34
- radio2: '1',
34
+ radio2: '3',
35
35
  dataArr: [
36
36
  { lable: '3', value: '备选项 1' },
37
37
  { lable: '6', value: '备选项 2' },
@@ -0,0 +1,41 @@
1
+ <template>
2
+ <!-- 给 space 容器加 id,方便 e2e 定位 -->
3
+ <div id="space-basic-usage">
4
+ <!-- 方向按钮 -->
5
+ <tiny-button type="primary" @click="setDirection('row')">行</tiny-button>
6
+ <tiny-button type="success" @click="setDirection('column')">列</tiny-button>
7
+
8
+ <!-- 间距按钮 -->
9
+ <div style="margin: 10px 0">
10
+ <tiny-button @click="value += 5">增加间距 +5</tiny-button>
11
+ <tiny-button @click="value -= 5">减少间距 -5</tiny-button>
12
+ </div>
13
+
14
+ <!-- 在 tiny-space 上加一个 class,保证 E2E 稳定 -->
15
+ <tiny-space class="tiny-space" :size="value" :direction="direction">
16
+ <tiny-button style="margin: 0" v-for="n in 3" :key="n">按钮 {{ n }}</tiny-button>
17
+ </tiny-space>
18
+ </div>
19
+ </template>
20
+
21
+ <script>
22
+ import { TinyButton, TinySpace } from '@opentiny/vue'
23
+
24
+ export default {
25
+ components: {
26
+ TinySpace,
27
+ TinyButton
28
+ },
29
+ data() {
30
+ return {
31
+ value: 10, // 初始间距
32
+ direction: 'column' // 初始方向为 column
33
+ }
34
+ },
35
+ methods: {
36
+ setDirection(direction) {
37
+ this.direction = direction
38
+ }
39
+ }
40
+ }
41
+ </script>
@@ -0,0 +1,37 @@
1
+ import { test, expect } from '@playwright/test'
2
+
3
+ test('Space Basic Demo - direction & size (按钮版)', async ({ page }) => {
4
+ await page.goto('space#space-basic-usage')
5
+
6
+ const space = page.locator('#space-basic-usage .tiny-space')
7
+ await space.waitFor({ state: 'visible', timeout: 5000 })
8
+
9
+ const getGap = async () =>
10
+ await space.evaluate((el) => {
11
+ const style = getComputedStyle(el)
12
+ return style.gap || '0px'
13
+ })
14
+
15
+ const getFlexDirection = async () => await space.evaluate((el) => getComputedStyle(el).flexDirection)
16
+
17
+ // 初始状态检查
18
+ expect(await getFlexDirection()).toBe('column')
19
+ expect(await getGap()).toBe('10px')
20
+
21
+ // 点击“行”按钮 -> flex-direction 应变成 row
22
+ const rowButton = page.locator('#space-basic-usage .tiny-button', { hasText: '行' })
23
+ await rowButton.click()
24
+ expect(await getFlexDirection()).toBe('row')
25
+
26
+ // 点击增加间距按钮 -> gap 应变成 15px
27
+ const increaseGap = page.locator('#space-basic-usage .tiny-button', { hasText: '增加间距 +5' })
28
+ await increaseGap.click()
29
+ await page.waitForTimeout(50) // 等待 DOM 更新
30
+ expect(await getGap()).toBe('15px')
31
+
32
+ // 点击减少间距按钮 -> gap 应变回 10px
33
+ const decreaseGap = page.locator('#space-basic-usage .tiny-button', { hasText: '减少间距 -5' })
34
+ await decreaseGap.click()
35
+ await page.waitForTimeout(50)
36
+ expect(await getGap()).toBe('10px')
37
+ })