@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.
- package/demos/apis/base-select.js +13 -0
- package/demos/apis/calendar-view.js +12 -0
- package/demos/apis/color-picker.js +16 -0
- package/demos/apis/color-select-panel.js +14 -0
- package/demos/apis/config-provider.js +2 -1
- package/demos/apis/date-picker.js +52 -0
- package/demos/apis/dialog-box.js +16 -4
- package/demos/apis/drawer.js +22 -0
- package/demos/apis/exception.js +43 -27
- package/demos/apis/grid.js +38 -3
- package/demos/apis/guide.js +14 -0
- package/demos/apis/pager.js +3 -3
- package/demos/apis/query-builder.js +346 -1
- package/demos/apis/select.js +41 -0
- package/demos/apis/space.js +99 -0
- package/demos/apis/steps.js +15 -0
- package/demos/apis/time-picker.js +28 -0
- package/demos/apis/time-select.js +30 -0
- package/demos/apis/tree-menu.js +14 -0
- package/demos/mobile-first/app/calendar-view/basic-usage.vue +1 -1
- package/demos/mobile-first/app/exception/webdoc/exception.js +4 -4
- package/demos/mobile-first/app/load-list/webdoc/load-list.en.md +1 -1
- package/demos/mobile-first/app/space/basic-usage-composition-api.vue +41 -0
- package/demos/mobile-first/app/space/basic-usage.spec.ts +37 -0
- package/demos/mobile-first/app/space/basic-usage.vue +37 -0
- package/demos/mobile-first/app/space/space-align-composition-api.vue +37 -0
- package/demos/mobile-first/app/space/space-align.spec.ts +24 -0
- package/demos/mobile-first/app/space/space-align.vue +37 -0
- package/demos/mobile-first/app/space/space-direction-composition-api.vue +32 -0
- package/demos/mobile-first/app/space/space-direction.spec.ts +17 -0
- package/demos/mobile-first/app/space/space-direction.vue +32 -0
- package/demos/mobile-first/app/space/space-justify-composition-api.vue +44 -0
- package/demos/mobile-first/app/space/space-justify.spec.ts +18 -0
- package/demos/mobile-first/app/space/space-justify.vue +39 -0
- package/demos/mobile-first/app/space/space-order-composition-api.vue +14 -0
- package/demos/mobile-first/app/space/space-order.spec.ts +13 -0
- package/demos/mobile-first/app/space/space-order.vue +14 -0
- package/demos/mobile-first/app/space/space-size-composition-api.vue +39 -0
- package/demos/mobile-first/app/space/space-size.spec.ts +37 -0
- package/demos/mobile-first/app/space/space-size.vue +39 -0
- package/demos/mobile-first/app/space/space-wrap-composition-api.vue +31 -0
- package/demos/mobile-first/app/space/space-wrap.spec.ts +25 -0
- package/demos/mobile-first/app/space/space-wrap.vue +31 -0
- package/demos/mobile-first/app/space/webdoc/space.cn.md +9 -0
- package/demos/mobile-first/app/space/webdoc/space.en.md +9 -0
- package/demos/mobile-first/app/space/webdoc/space.js +98 -0
- package/demos/mobile-first/menus.js +3 -1
- package/demos/pc/app/calendar-view/basic-usage-composition-api.vue +1 -1
- package/demos/pc/app/calendar-view/basic-usage.vue +1 -1
- package/demos/pc/app/carousel/webdoc/carousel.js +2 -1
- package/demos/pc/app/color-picker/linear-gradient-composition-api.vue +20 -0
- package/demos/pc/app/color-picker/linear-gradient.spec.ts +10 -0
- package/demos/pc/app/color-picker/linear-gradient.vue +28 -0
- package/demos/pc/app/color-picker/webdoc/color-picker.js +27 -0
- package/demos/pc/app/color-select-panel/linear-gradient-composition-api.vue +38 -0
- package/demos/pc/app/color-select-panel/linear-gradient.spec.ts +71 -0
- package/demos/pc/app/color-select-panel/linear-gradient.vue +45 -0
- package/demos/pc/app/color-select-panel/webdoc/color-select-panel.js +12 -0
- package/demos/pc/app/config-provider/webdoc/config-provider.js +2 -1
- package/demos/pc/app/date-panel/basic-usage.vue +19 -8
- package/demos/pc/app/date-panel/custom-weeks.vue +19 -9
- package/demos/pc/app/date-panel/disabled-date.vue +29 -19
- package/demos/pc/app/date-panel/event.vue +38 -31
- package/demos/pc/app/date-panel/format.vue +15 -5
- package/demos/pc/app/date-panel/readonly.vue +19 -8
- package/demos/pc/app/date-panel/shortcuts.vue +182 -176
- package/demos/pc/app/date-panel/unlink-panels.vue +15 -5
- package/demos/pc/app/date-picker/now-composition-api.vue +4 -1
- package/demos/pc/app/date-picker/now.vue +6 -2
- package/demos/pc/app/date-picker/slot-composition-api.vue +112 -0
- package/demos/pc/app/date-picker/slot.spec.ts +41 -0
- package/demos/pc/app/date-picker/slot.vue +119 -0
- package/demos/pc/app/date-picker/webdoc/date-picker.js +12 -0
- package/demos/pc/app/dialog-box/before-close-composition-api.vue +65 -0
- package/demos/pc/app/dialog-box/before-close.spec.ts +6 -0
- package/demos/pc/app/dialog-box/before-close.vue +71 -0
- package/demos/pc/app/dialog-box/webdoc/dialog-box.js +16 -0
- package/demos/pc/app/dialog-select/nest-tree-single.spec.ts +4 -7
- package/demos/pc/app/drawer/webdoc/drawer.js +2 -1
- package/demos/pc/app/exception/basic-usage-composition-api.vue +15 -0
- package/demos/pc/app/exception/basic-usage.vue +21 -0
- package/demos/pc/app/exception/button-text-composition-api.vue +13 -0
- package/demos/pc/app/exception/button-text.vue +21 -0
- package/demos/pc/app/exception/component-page-composition-api.vue +44 -0
- package/demos/pc/app/exception/component-page.vue +55 -0
- package/demos/pc/app/exception/page-empty-composition-api.vue +7 -0
- package/demos/pc/app/exception/page-empty.vue +13 -0
- package/demos/pc/app/exception/slot-composition-api.vue +29 -0
- package/demos/pc/app/exception/slot.vue +23 -0
- package/demos/pc/app/exception/sub-message-composition-api.vue +7 -0
- package/demos/pc/app/exception/sub-message.vue +13 -0
- package/demos/pc/app/exception/webdoc/exception.cn.md +5 -0
- package/demos/pc/app/exception/webdoc/exception.en.md +5 -0
- package/demos/pc/app/exception/webdoc/exception.js +84 -0
- package/demos/pc/app/grid/custom/default-customs-composition-api.vue +66 -0
- package/demos/pc/app/grid/custom/default-customs.spec.ts +9 -0
- package/demos/pc/app/grid/custom/default-customs.vue +75 -0
- package/demos/pc/app/grid/mouse-keyboard/mouse-config-hover-composition-api.vue +70 -0
- package/demos/pc/app/grid/mouse-keyboard/mouse-config-hover.vue +79 -0
- package/demos/pc/app/grid/validation/highlight-error-composition-api.vue +183 -0
- package/demos/pc/app/grid/validation/highlight-error.vue +192 -0
- package/demos/pc/app/grid/webdoc/grid-custom.js +11 -0
- package/demos/pc/app/grid/webdoc/grid-editor.js +2 -2
- package/demos/pc/app/grid/webdoc/grid-mouse-keyboard.js +9 -0
- package/demos/pc/app/grid/webdoc/grid-validation.js +9 -0
- package/demos/pc/app/guide/mask-composition-api.vue +31 -0
- package/demos/pc/app/guide/mask.spec.ts +13 -0
- package/demos/pc/app/guide/mask.vue +41 -0
- package/demos/pc/app/guide/webdoc/guide.js +12 -0
- package/demos/pc/app/input/resize.spec.ts +1 -1
- package/demos/pc/app/notify/manual-close-composition-api.vue +9 -11
- package/demos/pc/app/notify/manual-close.spec.ts +1 -1
- package/demos/pc/app/notify/manual-close.vue +9 -11
- package/demos/pc/app/notify/verticalOffset.spec.ts +3 -1
- package/demos/pc/app/query-builder/handle.vue +558 -0
- package/demos/pc/app/query-builder/limit.vue +555 -0
- package/demos/pc/app/query-builder/webdoc/query-builder.js +29 -1
- package/demos/pc/app/radio/dynamic-disable.vue +1 -1
- package/demos/pc/app/space/basic-usage-composition-api.vue +41 -0
- package/demos/pc/app/space/basic-usage.spec.ts +37 -0
- package/demos/pc/app/space/basic-usage.vue +37 -0
- package/demos/pc/app/space/space-align-composition-api.vue +37 -0
- package/demos/pc/app/space/space-align.spec.ts +24 -0
- package/demos/pc/app/space/space-align.vue +37 -0
- package/demos/pc/app/space/space-direction-composition-api.vue +32 -0
- package/demos/pc/app/space/space-direction.spec.ts +17 -0
- package/demos/pc/app/space/space-direction.vue +32 -0
- package/demos/pc/app/space/space-justify-composition-api.vue +44 -0
- package/demos/pc/app/space/space-justify.spec.ts +18 -0
- package/demos/pc/app/space/space-justify.vue +39 -0
- package/demos/pc/app/space/space-order-composition-api.vue +14 -0
- package/demos/pc/app/space/space-order.spec.ts +13 -0
- package/demos/pc/app/space/space-order.vue +14 -0
- package/demos/pc/app/space/space-size-composition-api.vue +39 -0
- package/demos/pc/app/space/space-size.spec.ts +37 -0
- package/demos/pc/app/space/space-size.vue +39 -0
- package/demos/pc/app/space/space-wrap-composition-api.vue +31 -0
- package/demos/pc/app/space/space-wrap.spec.ts +25 -0
- package/demos/pc/app/space/space-wrap.vue +31 -0
- package/demos/pc/app/space/webdoc/space.cn.md +9 -0
- package/demos/pc/app/space/webdoc/space.en.md +9 -0
- package/demos/pc/app/space/webdoc/space.js +98 -0
- package/demos/pc/app/steps/slot-icon-composition-api.vue +46 -0
- package/demos/pc/app/steps/slot-icon.vue +54 -0
- package/demos/pc/app/steps/webdoc/steps.js +12 -0
- package/demos/pc/app/tree-menu/events-composition-api.vue +4 -0
- package/demos/pc/app/tree-menu/events.vue +4 -0
- package/demos/pc/app/tree-menu/webdoc/tree-menu.js +2 -2
- package/demos/pc/app/tree-menu/with-icon-composition-api.vue +149 -24
- package/demos/pc/app/tree-menu/with-icon.spec.ts +1 -1
- package/demos/pc/app/tree-menu/with-icon.vue +149 -24
- package/demos/pc/menus.js +16 -0
- package/demos/pc/webdoc/changelog.md +209 -177
- package/env/.env.saas +1 -1
- package/env/.env.saaspages +9 -0
- package/package.json +20 -19
- package/playground/App.vue +2 -2
- package/src/components/anchor.vue +19 -72
- package/src/views/components-doc/common.vue +76 -12
- /package/demos/pc/app/user/{nodata-text-composition-api.vue → no-data-text-composition-api.vue} +0 -0
- /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>
|
|
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: {
|
|
@@ -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
|
+
})
|