vuetify 3.1.5 → 3.1.7
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/dist/json/attributes.json +562 -34
- package/dist/json/importMap.json +36 -36
- package/dist/json/tags.json +136 -2
- package/dist/json/web-types.json +2163 -85
- package/dist/vuetify-labs.css +30 -25
- package/dist/vuetify-labs.d.ts +3455 -146
- package/dist/vuetify-labs.esm.js +123 -73
- package/dist/vuetify-labs.esm.js.map +1 -1
- package/dist/vuetify-labs.js +123 -73
- package/dist/vuetify-labs.min.css +2 -2
- package/dist/vuetify.css +89 -84
- package/dist/vuetify.d.ts +1928 -77
- package/dist/vuetify.esm.js +102 -63
- package/dist/vuetify.esm.js.map +1 -1
- package/dist/vuetify.js +102 -63
- package/dist/vuetify.js.map +1 -1
- package/dist/vuetify.min.css +2 -2
- package/dist/vuetify.min.js +674 -669
- package/dist/vuetify.min.js.map +1 -1
- package/lib/components/VAlert/index.d.ts +22 -0
- package/lib/components/VApp/index.d.ts +6 -0
- package/lib/components/VAppBar/index.d.ts +36 -0
- package/lib/components/VAutocomplete/index.d.ts +117 -6
- package/lib/components/VAvatar/index.d.ts +6 -0
- package/lib/components/VBadge/index.d.ts +8 -0
- package/lib/components/VBanner/index.d.ts +24 -0
- package/lib/components/VBottomNavigation/index.d.ts +6 -0
- package/lib/components/VBreadcrumbs/index.d.ts +28 -4
- package/lib/components/VBtn/index.d.ts +12 -0
- package/lib/components/VBtnGroup/index.d.ts +6 -0
- package/lib/components/VBtnToggle/index.d.ts +6 -0
- package/lib/components/VCard/index.d.ts +60 -0
- package/lib/components/VCarousel/index.d.ts +60 -0
- package/lib/components/VCheckbox/index.d.ts +38 -0
- package/lib/components/VChip/index.d.ts +12 -0
- package/lib/components/VChipGroup/index.d.ts +6 -0
- package/lib/components/VCode/index.d.ts +6 -0
- package/lib/components/VColorPicker/VColorPicker.mjs +9 -1
- package/lib/components/VColorPicker/VColorPicker.mjs.map +1 -1
- package/lib/components/VColorPicker/VColorPickerCanvas.css +2 -1
- package/lib/components/VColorPicker/VColorPickerCanvas.mjs +36 -18
- package/lib/components/VColorPicker/VColorPickerCanvas.mjs.map +1 -1
- package/lib/components/VColorPicker/VColorPickerCanvas.sass +2 -1
- package/lib/components/VColorPicker/VColorPickerEdit.mjs +4 -4
- package/lib/components/VColorPicker/VColorPickerEdit.mjs.map +1 -1
- package/lib/components/VColorPicker/VColorPickerPreview.mjs +2 -2
- package/lib/components/VColorPicker/VColorPickerPreview.mjs.map +1 -1
- package/lib/components/VColorPicker/util/index.mjs +2 -5
- package/lib/components/VColorPicker/util/index.mjs.map +1 -1
- package/lib/components/VCombobox/index.d.ts +117 -6
- package/lib/components/VCounter/index.d.ts +24 -0
- package/lib/components/VDefaultsProvider/index.d.ts +6 -0
- package/lib/components/VDialog/index.d.ts +64 -1
- package/lib/components/VDivider/index.d.ts +6 -0
- package/lib/components/VExpansionPanel/VExpansionPanelTitle.mjs.map +1 -1
- package/lib/components/VExpansionPanel/index.d.ts +49 -12
- package/lib/components/VField/index.d.ts +20 -6
- package/lib/components/VFileInput/index.d.ts +43 -1
- package/lib/components/VFooter/index.d.ts +7 -1
- package/lib/components/VForm/index.d.ts +6 -0
- package/lib/components/VGrid/index.d.ts +24 -0
- package/lib/components/VHover/index.d.ts +12 -0
- package/lib/components/VIcon/index.d.ts +12 -0
- package/lib/components/VImg/index.d.ts +12 -0
- package/lib/components/VInput/index.d.ts +12 -0
- package/lib/components/VItemGroup/index.d.ts +12 -0
- package/lib/components/VKbd/index.d.ts +6 -0
- package/lib/components/VLabel/index.d.ts +6 -0
- package/lib/components/VLayout/index.d.ts +12 -0
- package/lib/components/VLazy/index.d.ts +6 -0
- package/lib/components/VList/index.d.ts +77 -6
- package/lib/components/VLocaleProvider/index.d.ts +6 -0
- package/lib/components/VMain/index.d.ts +6 -0
- package/lib/components/VMenu/index.d.ts +64 -1
- package/lib/components/VMessages/index.d.ts +24 -0
- package/lib/components/VNavigationDrawer/index.d.ts +12 -0
- package/lib/components/VNoSsr/index.d.ts +6 -0
- package/lib/components/VOverlay/index.d.ts +18 -0
- package/lib/components/VOverlay/scrollStrategies.mjs +1 -1
- package/lib/components/VOverlay/scrollStrategies.mjs.map +1 -1
- package/lib/components/VPagination/index.d.ts +14 -0
- package/lib/components/VParallax/index.d.ts +12 -0
- package/lib/components/VProgressCircular/index.d.ts +6 -0
- package/lib/components/VProgressLinear/index.d.ts +12 -0
- package/lib/components/VRadio/index.d.ts +16 -0
- package/lib/components/VRadioGroup/index.d.ts +22 -0
- package/lib/components/VRangeSlider/index.d.ts +16 -0
- package/lib/components/VRating/index.d.ts +8 -0
- package/lib/components/VResponsive/index.d.ts +8 -0
- package/lib/components/VSelect/index.d.ts +183 -6
- package/lib/components/VSelectionControl/index.d.ts +14 -6
- package/lib/components/VSelectionControlGroup/index.d.ts +6 -0
- package/lib/components/VSheet/VSheet.mjs +22 -12
- package/lib/components/VSheet/VSheet.mjs.map +1 -1
- package/lib/components/VSheet/index.d.ts +7 -1
- package/lib/components/VSlideGroup/index.d.ts +26 -0
- package/lib/components/VSlider/index.d.ts +16 -0
- package/lib/components/VSnackbar/index.d.ts +44 -1
- package/lib/components/VSwitch/index.d.ts +22 -0
- package/lib/components/VSystemBar/VSystemBar.css +5 -1
- package/lib/components/VSystemBar/VSystemBar.sass +5 -1
- package/lib/components/VSystemBar/_variables.scss +4 -1
- package/lib/components/VSystemBar/index.d.ts +6 -0
- package/lib/components/VTable/index.d.ts +12 -0
- package/lib/components/VTabs/index.d.ts +12 -0
- package/lib/components/VTextField/index.d.ts +54 -6
- package/lib/components/VTextarea/index.d.ts +39 -1
- package/lib/components/VThemeProvider/index.d.ts +6 -0
- package/lib/components/VTimeline/index.d.ts +16 -0
- package/lib/components/VToolbar/index.d.ts +30 -0
- package/lib/components/VTooltip/index.d.ts +46 -1
- package/lib/components/VValidation/index.d.ts +6 -0
- package/lib/components/VWindow/index.d.ts +34 -0
- package/lib/components/index.d.ts +1918 -67
- package/lib/components/transitions/index.d.ts +96 -0
- package/lib/composables/nested/nested.mjs +2 -2
- package/lib/composables/nested/nested.mjs.map +1 -1
- package/lib/composables/nested/selectStrategies.mjs +7 -1
- package/lib/composables/nested/selectStrategies.mjs.map +1 -1
- package/lib/composables/proxiedModel.mjs +1 -1
- package/lib/composables/proxiedModel.mjs.map +1 -1
- package/lib/composables/resizeObserver.mjs.map +1 -1
- package/lib/composables/theme.mjs +21 -13
- package/lib/composables/theme.mjs.map +1 -1
- package/lib/entry-bundler.mjs +1 -1
- package/lib/framework.mjs +1 -1
- package/lib/index.d.ts +9 -9
- package/lib/labs/VDataTable/VDataTableRows.mjs +4 -6
- package/lib/labs/VDataTable/VDataTableRows.mjs.map +1 -1
- package/lib/labs/VDataTable/VDataTableServer.mjs +2 -2
- package/lib/labs/VDataTable/VDataTableServer.mjs.map +1 -1
- package/lib/labs/VDataTable/index.d.ts +1503 -48
- package/lib/labs/VVirtualScroll/VVirtualScroll.mjs +18 -5
- package/lib/labs/VVirtualScroll/VVirtualScroll.mjs.map +1 -1
- package/lib/labs/VVirtualScroll/index.d.ts +9 -6
- package/lib/labs/components.d.ts +1512 -54
- package/lib/util/colorUtils.mjs +4 -5
- package/lib/util/colorUtils.mjs.map +1 -1
- package/lib/util/defineComponent.mjs.map +1 -1
- package/package.json +4 -4
|
@@ -6,6 +6,9 @@ declare const VDialogTransition: vue.DefineComponent<{} & {
|
|
|
6
6
|
$children?: vue.VNodeChild | (() => vue.VNodeChild) | {
|
|
7
7
|
default?: (() => vue.VNodeChild) | undefined;
|
|
8
8
|
};
|
|
9
|
+
$slots?: {
|
|
10
|
+
default?: (() => vue.VNodeChild) | undefined;
|
|
11
|
+
} | undefined;
|
|
9
12
|
'v-slots'?: {
|
|
10
13
|
default?: false | (() => vue.VNodeChild) | undefined;
|
|
11
14
|
} | undefined;
|
|
@@ -17,6 +20,9 @@ declare const VDialogTransition: vue.DefineComponent<{} & {
|
|
|
17
20
|
$children?: vue.VNodeChild | (() => vue.VNodeChild) | {
|
|
18
21
|
default?: (() => vue.VNodeChild) | undefined;
|
|
19
22
|
};
|
|
23
|
+
$slots?: {
|
|
24
|
+
default?: (() => vue.VNodeChild) | undefined;
|
|
25
|
+
} | undefined;
|
|
20
26
|
'v-slots'?: {
|
|
21
27
|
default?: false | (() => vue.VNodeChild) | undefined;
|
|
22
28
|
} | undefined;
|
|
@@ -35,6 +41,9 @@ declare const VFabTransition: vue.DefineComponent<{
|
|
|
35
41
|
$children?: vue.VNodeChild | (() => vue.VNodeChild) | {
|
|
36
42
|
default?: (() => vue.VNodeChild) | undefined;
|
|
37
43
|
};
|
|
44
|
+
$slots?: {
|
|
45
|
+
default?: (() => vue.VNodeChild) | undefined;
|
|
46
|
+
} | undefined;
|
|
38
47
|
'v-slots'?: {
|
|
39
48
|
default?: false | (() => vue.VNodeChild) | undefined;
|
|
40
49
|
} | undefined;
|
|
@@ -52,6 +61,9 @@ declare const VFabTransition: vue.DefineComponent<{
|
|
|
52
61
|
$children?: vue.VNodeChild | (() => vue.VNodeChild) | {
|
|
53
62
|
default?: (() => vue.VNodeChild) | undefined;
|
|
54
63
|
};
|
|
64
|
+
$slots?: {
|
|
65
|
+
default?: (() => vue.VNodeChild) | undefined;
|
|
66
|
+
} | undefined;
|
|
55
67
|
'v-slots'?: {
|
|
56
68
|
default?: false | (() => vue.VNodeChild) | undefined;
|
|
57
69
|
} | undefined;
|
|
@@ -75,6 +87,9 @@ declare const VDialogBottomTransition: vue.DefineComponent<{
|
|
|
75
87
|
$children?: vue.VNodeChild | (() => vue.VNodeChild) | {
|
|
76
88
|
default?: (() => vue.VNodeChild) | undefined;
|
|
77
89
|
};
|
|
90
|
+
$slots?: {
|
|
91
|
+
default?: (() => vue.VNodeChild) | undefined;
|
|
92
|
+
} | undefined;
|
|
78
93
|
'v-slots'?: {
|
|
79
94
|
default?: false | (() => vue.VNodeChild) | undefined;
|
|
80
95
|
} | undefined;
|
|
@@ -92,6 +107,9 @@ declare const VDialogBottomTransition: vue.DefineComponent<{
|
|
|
92
107
|
$children?: vue.VNodeChild | (() => vue.VNodeChild) | {
|
|
93
108
|
default?: (() => vue.VNodeChild) | undefined;
|
|
94
109
|
};
|
|
110
|
+
$slots?: {
|
|
111
|
+
default?: (() => vue.VNodeChild) | undefined;
|
|
112
|
+
} | undefined;
|
|
95
113
|
'v-slots'?: {
|
|
96
114
|
default?: false | (() => vue.VNodeChild) | undefined;
|
|
97
115
|
} | undefined;
|
|
@@ -115,6 +133,9 @@ declare const VDialogTopTransition: vue.DefineComponent<{
|
|
|
115
133
|
$children?: vue.VNodeChild | (() => vue.VNodeChild) | {
|
|
116
134
|
default?: (() => vue.VNodeChild) | undefined;
|
|
117
135
|
};
|
|
136
|
+
$slots?: {
|
|
137
|
+
default?: (() => vue.VNodeChild) | undefined;
|
|
138
|
+
} | undefined;
|
|
118
139
|
'v-slots'?: {
|
|
119
140
|
default?: false | (() => vue.VNodeChild) | undefined;
|
|
120
141
|
} | undefined;
|
|
@@ -132,6 +153,9 @@ declare const VDialogTopTransition: vue.DefineComponent<{
|
|
|
132
153
|
$children?: vue.VNodeChild | (() => vue.VNodeChild) | {
|
|
133
154
|
default?: (() => vue.VNodeChild) | undefined;
|
|
134
155
|
};
|
|
156
|
+
$slots?: {
|
|
157
|
+
default?: (() => vue.VNodeChild) | undefined;
|
|
158
|
+
} | undefined;
|
|
135
159
|
'v-slots'?: {
|
|
136
160
|
default?: false | (() => vue.VNodeChild) | undefined;
|
|
137
161
|
} | undefined;
|
|
@@ -155,6 +179,9 @@ declare const VFadeTransition: vue.DefineComponent<{
|
|
|
155
179
|
$children?: vue.VNodeChild | (() => vue.VNodeChild) | {
|
|
156
180
|
default?: (() => vue.VNodeChild) | undefined;
|
|
157
181
|
};
|
|
182
|
+
$slots?: {
|
|
183
|
+
default?: (() => vue.VNodeChild) | undefined;
|
|
184
|
+
} | undefined;
|
|
158
185
|
'v-slots'?: {
|
|
159
186
|
default?: false | (() => vue.VNodeChild) | undefined;
|
|
160
187
|
} | undefined;
|
|
@@ -172,6 +199,9 @@ declare const VFadeTransition: vue.DefineComponent<{
|
|
|
172
199
|
$children?: vue.VNodeChild | (() => vue.VNodeChild) | {
|
|
173
200
|
default?: (() => vue.VNodeChild) | undefined;
|
|
174
201
|
};
|
|
202
|
+
$slots?: {
|
|
203
|
+
default?: (() => vue.VNodeChild) | undefined;
|
|
204
|
+
} | undefined;
|
|
175
205
|
'v-slots'?: {
|
|
176
206
|
default?: false | (() => vue.VNodeChild) | undefined;
|
|
177
207
|
} | undefined;
|
|
@@ -195,6 +225,9 @@ declare const VScaleTransition: vue.DefineComponent<{
|
|
|
195
225
|
$children?: vue.VNodeChild | (() => vue.VNodeChild) | {
|
|
196
226
|
default?: (() => vue.VNodeChild) | undefined;
|
|
197
227
|
};
|
|
228
|
+
$slots?: {
|
|
229
|
+
default?: (() => vue.VNodeChild) | undefined;
|
|
230
|
+
} | undefined;
|
|
198
231
|
'v-slots'?: {
|
|
199
232
|
default?: false | (() => vue.VNodeChild) | undefined;
|
|
200
233
|
} | undefined;
|
|
@@ -212,6 +245,9 @@ declare const VScaleTransition: vue.DefineComponent<{
|
|
|
212
245
|
$children?: vue.VNodeChild | (() => vue.VNodeChild) | {
|
|
213
246
|
default?: (() => vue.VNodeChild) | undefined;
|
|
214
247
|
};
|
|
248
|
+
$slots?: {
|
|
249
|
+
default?: (() => vue.VNodeChild) | undefined;
|
|
250
|
+
} | undefined;
|
|
215
251
|
'v-slots'?: {
|
|
216
252
|
default?: false | (() => vue.VNodeChild) | undefined;
|
|
217
253
|
} | undefined;
|
|
@@ -235,6 +271,9 @@ declare const VScrollXTransition: vue.DefineComponent<{
|
|
|
235
271
|
$children?: vue.VNodeChild | (() => vue.VNodeChild) | {
|
|
236
272
|
default?: (() => vue.VNodeChild) | undefined;
|
|
237
273
|
};
|
|
274
|
+
$slots?: {
|
|
275
|
+
default?: (() => vue.VNodeChild) | undefined;
|
|
276
|
+
} | undefined;
|
|
238
277
|
'v-slots'?: {
|
|
239
278
|
default?: false | (() => vue.VNodeChild) | undefined;
|
|
240
279
|
} | undefined;
|
|
@@ -252,6 +291,9 @@ declare const VScrollXTransition: vue.DefineComponent<{
|
|
|
252
291
|
$children?: vue.VNodeChild | (() => vue.VNodeChild) | {
|
|
253
292
|
default?: (() => vue.VNodeChild) | undefined;
|
|
254
293
|
};
|
|
294
|
+
$slots?: {
|
|
295
|
+
default?: (() => vue.VNodeChild) | undefined;
|
|
296
|
+
} | undefined;
|
|
255
297
|
'v-slots'?: {
|
|
256
298
|
default?: false | (() => vue.VNodeChild) | undefined;
|
|
257
299
|
} | undefined;
|
|
@@ -275,6 +317,9 @@ declare const VScrollXReverseTransition: vue.DefineComponent<{
|
|
|
275
317
|
$children?: vue.VNodeChild | (() => vue.VNodeChild) | {
|
|
276
318
|
default?: (() => vue.VNodeChild) | undefined;
|
|
277
319
|
};
|
|
320
|
+
$slots?: {
|
|
321
|
+
default?: (() => vue.VNodeChild) | undefined;
|
|
322
|
+
} | undefined;
|
|
278
323
|
'v-slots'?: {
|
|
279
324
|
default?: false | (() => vue.VNodeChild) | undefined;
|
|
280
325
|
} | undefined;
|
|
@@ -292,6 +337,9 @@ declare const VScrollXReverseTransition: vue.DefineComponent<{
|
|
|
292
337
|
$children?: vue.VNodeChild | (() => vue.VNodeChild) | {
|
|
293
338
|
default?: (() => vue.VNodeChild) | undefined;
|
|
294
339
|
};
|
|
340
|
+
$slots?: {
|
|
341
|
+
default?: (() => vue.VNodeChild) | undefined;
|
|
342
|
+
} | undefined;
|
|
295
343
|
'v-slots'?: {
|
|
296
344
|
default?: false | (() => vue.VNodeChild) | undefined;
|
|
297
345
|
} | undefined;
|
|
@@ -315,6 +363,9 @@ declare const VScrollYTransition: vue.DefineComponent<{
|
|
|
315
363
|
$children?: vue.VNodeChild | (() => vue.VNodeChild) | {
|
|
316
364
|
default?: (() => vue.VNodeChild) | undefined;
|
|
317
365
|
};
|
|
366
|
+
$slots?: {
|
|
367
|
+
default?: (() => vue.VNodeChild) | undefined;
|
|
368
|
+
} | undefined;
|
|
318
369
|
'v-slots'?: {
|
|
319
370
|
default?: false | (() => vue.VNodeChild) | undefined;
|
|
320
371
|
} | undefined;
|
|
@@ -332,6 +383,9 @@ declare const VScrollYTransition: vue.DefineComponent<{
|
|
|
332
383
|
$children?: vue.VNodeChild | (() => vue.VNodeChild) | {
|
|
333
384
|
default?: (() => vue.VNodeChild) | undefined;
|
|
334
385
|
};
|
|
386
|
+
$slots?: {
|
|
387
|
+
default?: (() => vue.VNodeChild) | undefined;
|
|
388
|
+
} | undefined;
|
|
335
389
|
'v-slots'?: {
|
|
336
390
|
default?: false | (() => vue.VNodeChild) | undefined;
|
|
337
391
|
} | undefined;
|
|
@@ -355,6 +409,9 @@ declare const VScrollYReverseTransition: vue.DefineComponent<{
|
|
|
355
409
|
$children?: vue.VNodeChild | (() => vue.VNodeChild) | {
|
|
356
410
|
default?: (() => vue.VNodeChild) | undefined;
|
|
357
411
|
};
|
|
412
|
+
$slots?: {
|
|
413
|
+
default?: (() => vue.VNodeChild) | undefined;
|
|
414
|
+
} | undefined;
|
|
358
415
|
'v-slots'?: {
|
|
359
416
|
default?: false | (() => vue.VNodeChild) | undefined;
|
|
360
417
|
} | undefined;
|
|
@@ -372,6 +429,9 @@ declare const VScrollYReverseTransition: vue.DefineComponent<{
|
|
|
372
429
|
$children?: vue.VNodeChild | (() => vue.VNodeChild) | {
|
|
373
430
|
default?: (() => vue.VNodeChild) | undefined;
|
|
374
431
|
};
|
|
432
|
+
$slots?: {
|
|
433
|
+
default?: (() => vue.VNodeChild) | undefined;
|
|
434
|
+
} | undefined;
|
|
375
435
|
'v-slots'?: {
|
|
376
436
|
default?: false | (() => vue.VNodeChild) | undefined;
|
|
377
437
|
} | undefined;
|
|
@@ -395,6 +455,9 @@ declare const VSlideXTransition: vue.DefineComponent<{
|
|
|
395
455
|
$children?: vue.VNodeChild | (() => vue.VNodeChild) | {
|
|
396
456
|
default?: (() => vue.VNodeChild) | undefined;
|
|
397
457
|
};
|
|
458
|
+
$slots?: {
|
|
459
|
+
default?: (() => vue.VNodeChild) | undefined;
|
|
460
|
+
} | undefined;
|
|
398
461
|
'v-slots'?: {
|
|
399
462
|
default?: false | (() => vue.VNodeChild) | undefined;
|
|
400
463
|
} | undefined;
|
|
@@ -412,6 +475,9 @@ declare const VSlideXTransition: vue.DefineComponent<{
|
|
|
412
475
|
$children?: vue.VNodeChild | (() => vue.VNodeChild) | {
|
|
413
476
|
default?: (() => vue.VNodeChild) | undefined;
|
|
414
477
|
};
|
|
478
|
+
$slots?: {
|
|
479
|
+
default?: (() => vue.VNodeChild) | undefined;
|
|
480
|
+
} | undefined;
|
|
415
481
|
'v-slots'?: {
|
|
416
482
|
default?: false | (() => vue.VNodeChild) | undefined;
|
|
417
483
|
} | undefined;
|
|
@@ -435,6 +501,9 @@ declare const VSlideXReverseTransition: vue.DefineComponent<{
|
|
|
435
501
|
$children?: vue.VNodeChild | (() => vue.VNodeChild) | {
|
|
436
502
|
default?: (() => vue.VNodeChild) | undefined;
|
|
437
503
|
};
|
|
504
|
+
$slots?: {
|
|
505
|
+
default?: (() => vue.VNodeChild) | undefined;
|
|
506
|
+
} | undefined;
|
|
438
507
|
'v-slots'?: {
|
|
439
508
|
default?: false | (() => vue.VNodeChild) | undefined;
|
|
440
509
|
} | undefined;
|
|
@@ -452,6 +521,9 @@ declare const VSlideXReverseTransition: vue.DefineComponent<{
|
|
|
452
521
|
$children?: vue.VNodeChild | (() => vue.VNodeChild) | {
|
|
453
522
|
default?: (() => vue.VNodeChild) | undefined;
|
|
454
523
|
};
|
|
524
|
+
$slots?: {
|
|
525
|
+
default?: (() => vue.VNodeChild) | undefined;
|
|
526
|
+
} | undefined;
|
|
455
527
|
'v-slots'?: {
|
|
456
528
|
default?: false | (() => vue.VNodeChild) | undefined;
|
|
457
529
|
} | undefined;
|
|
@@ -475,6 +547,9 @@ declare const VSlideYTransition: vue.DefineComponent<{
|
|
|
475
547
|
$children?: vue.VNodeChild | (() => vue.VNodeChild) | {
|
|
476
548
|
default?: (() => vue.VNodeChild) | undefined;
|
|
477
549
|
};
|
|
550
|
+
$slots?: {
|
|
551
|
+
default?: (() => vue.VNodeChild) | undefined;
|
|
552
|
+
} | undefined;
|
|
478
553
|
'v-slots'?: {
|
|
479
554
|
default?: false | (() => vue.VNodeChild) | undefined;
|
|
480
555
|
} | undefined;
|
|
@@ -492,6 +567,9 @@ declare const VSlideYTransition: vue.DefineComponent<{
|
|
|
492
567
|
$children?: vue.VNodeChild | (() => vue.VNodeChild) | {
|
|
493
568
|
default?: (() => vue.VNodeChild) | undefined;
|
|
494
569
|
};
|
|
570
|
+
$slots?: {
|
|
571
|
+
default?: (() => vue.VNodeChild) | undefined;
|
|
572
|
+
} | undefined;
|
|
495
573
|
'v-slots'?: {
|
|
496
574
|
default?: false | (() => vue.VNodeChild) | undefined;
|
|
497
575
|
} | undefined;
|
|
@@ -515,6 +593,9 @@ declare const VSlideYReverseTransition: vue.DefineComponent<{
|
|
|
515
593
|
$children?: vue.VNodeChild | (() => vue.VNodeChild) | {
|
|
516
594
|
default?: (() => vue.VNodeChild) | undefined;
|
|
517
595
|
};
|
|
596
|
+
$slots?: {
|
|
597
|
+
default?: (() => vue.VNodeChild) | undefined;
|
|
598
|
+
} | undefined;
|
|
518
599
|
'v-slots'?: {
|
|
519
600
|
default?: false | (() => vue.VNodeChild) | undefined;
|
|
520
601
|
} | undefined;
|
|
@@ -532,6 +613,9 @@ declare const VSlideYReverseTransition: vue.DefineComponent<{
|
|
|
532
613
|
$children?: vue.VNodeChild | (() => vue.VNodeChild) | {
|
|
533
614
|
default?: (() => vue.VNodeChild) | undefined;
|
|
534
615
|
};
|
|
616
|
+
$slots?: {
|
|
617
|
+
default?: (() => vue.VNodeChild) | undefined;
|
|
618
|
+
} | undefined;
|
|
535
619
|
'v-slots'?: {
|
|
536
620
|
default?: false | (() => vue.VNodeChild) | undefined;
|
|
537
621
|
} | undefined;
|
|
@@ -551,6 +635,9 @@ declare const VExpandTransition: vue.DefineComponent<{
|
|
|
551
635
|
$children?: vue.VNodeChild | (() => vue.VNodeChild) | {
|
|
552
636
|
default?: (() => vue.VNodeChild) | undefined;
|
|
553
637
|
};
|
|
638
|
+
$slots?: {
|
|
639
|
+
default?: (() => vue.VNodeChild) | undefined;
|
|
640
|
+
} | undefined;
|
|
554
641
|
'v-slots'?: {
|
|
555
642
|
default?: false | (() => vue.VNodeChild) | undefined;
|
|
556
643
|
} | undefined;
|
|
@@ -564,6 +651,9 @@ declare const VExpandTransition: vue.DefineComponent<{
|
|
|
564
651
|
$children?: vue.VNodeChild | (() => vue.VNodeChild) | {
|
|
565
652
|
default?: (() => vue.VNodeChild) | undefined;
|
|
566
653
|
};
|
|
654
|
+
$slots?: {
|
|
655
|
+
default?: (() => vue.VNodeChild) | undefined;
|
|
656
|
+
} | undefined;
|
|
567
657
|
'v-slots'?: {
|
|
568
658
|
default?: false | (() => vue.VNodeChild) | undefined;
|
|
569
659
|
} | undefined;
|
|
@@ -579,6 +669,9 @@ declare const VExpandXTransition: vue.DefineComponent<{
|
|
|
579
669
|
$children?: vue.VNodeChild | (() => vue.VNodeChild) | {
|
|
580
670
|
default?: (() => vue.VNodeChild) | undefined;
|
|
581
671
|
};
|
|
672
|
+
$slots?: {
|
|
673
|
+
default?: (() => vue.VNodeChild) | undefined;
|
|
674
|
+
} | undefined;
|
|
582
675
|
'v-slots'?: {
|
|
583
676
|
default?: false | (() => vue.VNodeChild) | undefined;
|
|
584
677
|
} | undefined;
|
|
@@ -592,6 +685,9 @@ declare const VExpandXTransition: vue.DefineComponent<{
|
|
|
592
685
|
$children?: vue.VNodeChild | (() => vue.VNodeChild) | {
|
|
593
686
|
default?: (() => vue.VNodeChild) | undefined;
|
|
594
687
|
};
|
|
688
|
+
$slots?: {
|
|
689
|
+
default?: (() => vue.VNodeChild) | undefined;
|
|
690
|
+
} | undefined;
|
|
595
691
|
'v-slots'?: {
|
|
596
692
|
default?: false | (() => vue.VNodeChild) | undefined;
|
|
597
693
|
} | undefined;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { useProxiedModel } from "../proxiedModel.mjs";
|
|
2
2
|
import { getCurrentInstance, getUid, propsFactory } from "../../util/index.mjs";
|
|
3
|
-
import { computed, inject, onBeforeUnmount, provide, ref } from 'vue';
|
|
3
|
+
import { computed, inject, onBeforeUnmount, provide, ref, toRaw } from 'vue';
|
|
4
4
|
import { listOpenStrategy, multipleOpenStrategy, singleOpenStrategy } from "./openStrategies.mjs";
|
|
5
5
|
import { classicSelectStrategy, independentSelectStrategy, independentSingleSelectStrategy, leafSelectStrategy, leafSingleSelectStrategy } from "./selectStrategies.mjs"; // Types
|
|
6
6
|
export const VNestedSymbol = Symbol.for('vuetify:nested');
|
|
@@ -169,7 +169,7 @@ export const useNestedItem = (id, isGroup) => {
|
|
|
169
169
|
isOpen: computed(() => parent.root.opened.value.has(computedId.value)),
|
|
170
170
|
parent: computed(() => parent.root.parents.value.get(computedId.value)),
|
|
171
171
|
select: (selected, e) => parent.root.select(computedId.value, selected, e),
|
|
172
|
-
isSelected: computed(() => parent.root.selected.value.get(computedId.value) === 'on'),
|
|
172
|
+
isSelected: computed(() => parent.root.selected.value.get(toRaw(computedId.value)) === 'on'),
|
|
173
173
|
isIndeterminate: computed(() => parent.root.selected.value.get(computedId.value) === 'indeterminate'),
|
|
174
174
|
isLeaf: computed(() => !parent.root.children.value.get(computedId.value)),
|
|
175
175
|
isGroupActivator: parent.isGroupActivator
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"nested.mjs","names":["useProxiedModel","getCurrentInstance","getUid","propsFactory","computed","inject","onBeforeUnmount","provide","ref","listOpenStrategy","multipleOpenStrategy","singleOpenStrategy","classicSelectStrategy","independentSelectStrategy","independentSingleSelectStrategy","leafSelectStrategy","leafSingleSelectStrategy","VNestedSymbol","Symbol","for","emptyNested","id","root","register","unregister","parents","Map","children","open","openOnSelect","select","opened","Set","selected","selectedValues","makeNestedProps","selectStrategy","String","Function","openStrategy","Object","Array","mandatory","Boolean","useNested","props","isUnmounted","v","values","value","in","out","getPath","path","parent","unshift","get","vm","nested","arr","key","entries","push","parentId","isGroup","set","delete","list","filter","child","event","emit","newOpened","newSelected","useNestedItem","uidSymbol","computedId","item","e","isOpen","has","isSelected","isIndeterminate","isLeaf","isGroupActivator","useNestedGroupActivator"],"sources":["../../../src/composables/nested/nested.ts"],"sourcesContent":["import { useProxiedModel } from '@/composables/proxiedModel'\nimport { getCurrentInstance, getUid, propsFactory } from '@/util'\nimport { computed, inject, onBeforeUnmount, provide, ref } from 'vue'\nimport { listOpenStrategy, multipleOpenStrategy, singleOpenStrategy } from './openStrategies'\nimport {\n classicSelectStrategy,\n independentSelectStrategy,\n independentSingleSelectStrategy,\n leafSelectStrategy,\n leafSingleSelectStrategy,\n} from './selectStrategies'\n\n// Types\nimport type { InjectionKey, PropType, Ref } from 'vue'\nimport type { SelectStrategyFn } from './selectStrategies'\nimport type { OpenStrategy } from './openStrategies'\n\nexport type SelectStrategy = 'single-leaf' | 'leaf' | 'independent' | 'single-independent' | 'classic' | SelectStrategyFn\nexport type OpenStrategyProp = 'single' | 'multiple' | 'list' | OpenStrategy\n\nexport interface NestedProps {\n selectStrategy: SelectStrategy | undefined\n openStrategy: OpenStrategyProp | undefined\n selected: unknown[] | undefined\n opened: unknown[] | undefined\n mandatory: boolean\n 'onUpdate:selected': ((val: unknown[]) => void) | undefined\n 'onUpdate:opened': ((val: unknown[]) => void) | undefined\n}\n\ntype NestedProvide = {\n id: Ref<unknown>\n isGroupActivator?: boolean\n root: {\n children: Ref<Map<unknown, unknown[]>>\n parents: Ref<Map<unknown, unknown>>\n opened: Ref<Set<unknown>>\n selected: Ref<Map<unknown, 'on' | 'off' | 'indeterminate'>>\n selectedValues: Ref<unknown[]>\n register: (id: unknown, parentId: unknown, isGroup?: boolean) => void\n unregister: (id: unknown) => void\n open: (id: unknown, value: boolean, event?: Event) => void\n select: (id: unknown, value: boolean, event?: Event) => void\n openOnSelect: (id: unknown, value: boolean, event?: Event) => void\n }\n}\n\nexport const VNestedSymbol: InjectionKey<NestedProvide> = Symbol.for('vuetify:nested')\n\nexport const emptyNested: NestedProvide = {\n id: ref(),\n root: {\n register: () => null,\n unregister: () => null,\n parents: ref(new Map()),\n children: ref(new Map()),\n open: () => null,\n openOnSelect: () => null,\n select: () => null,\n opened: ref(new Set()),\n selected: ref(new Map()),\n selectedValues: ref([]),\n },\n}\n\nexport const makeNestedProps = propsFactory({\n selectStrategy: [String, Function] as PropType<SelectStrategy>,\n openStrategy: [String, Object] as PropType<OpenStrategyProp>,\n opened: Array as PropType<unknown[]>,\n selected: Array as PropType<unknown[]>,\n mandatory: Boolean,\n}, 'nested')\n\nexport const useNested = (props: NestedProps) => {\n let isUnmounted = false\n const children = ref(new Map<unknown, unknown[]>())\n const parents = ref(new Map<unknown, unknown>())\n\n const opened = useProxiedModel(props, 'opened', props.opened, v => new Set(v), v => [...v.values()])\n\n const selectStrategy = computed(() => {\n if (typeof props.selectStrategy === 'object') return props.selectStrategy\n\n switch (props.selectStrategy) {\n case 'single-leaf': return leafSingleSelectStrategy(props.mandatory)\n case 'leaf': return leafSelectStrategy(props.mandatory)\n case 'independent': return independentSelectStrategy(props.mandatory)\n case 'single-independent': return independentSingleSelectStrategy(props.mandatory)\n case 'classic':\n default: return classicSelectStrategy(props.mandatory)\n }\n })\n\n const openStrategy = computed(() => {\n if (typeof props.openStrategy === 'object') return props.openStrategy\n\n switch (props.openStrategy) {\n case 'list': return listOpenStrategy\n case 'single': return singleOpenStrategy\n case 'multiple':\n default: return multipleOpenStrategy\n }\n })\n\n const selected = useProxiedModel(\n props,\n 'selected',\n props.selected,\n v => selectStrategy.value.in(v, children.value, parents.value),\n v => selectStrategy.value.out(v, children.value, parents.value),\n )\n\n onBeforeUnmount(() => {\n isUnmounted = true\n })\n\n function getPath (id: unknown) {\n const path: unknown[] = []\n let parent: unknown = id\n\n while (parent != null) {\n path.unshift(parent)\n parent = parents.value.get(parent)\n }\n\n return path\n }\n\n const vm = getCurrentInstance('nested')\n\n const nested: NestedProvide = {\n id: ref(),\n root: {\n opened,\n selected,\n selectedValues: computed(() => {\n const arr = []\n\n for (const [key, value] of selected.value.entries()) {\n if (value === 'on') arr.push(key)\n }\n\n return arr\n }),\n register: (id, parentId, isGroup) => {\n parentId && id !== parentId && parents.value.set(id, parentId)\n\n isGroup && children.value.set(id, [])\n\n if (parentId != null) {\n children.value.set(parentId, [...children.value.get(parentId) || [], id])\n }\n },\n unregister: id => {\n if (isUnmounted) return\n\n children.value.delete(id)\n const parent = parents.value.get(id)\n if (parent) {\n const list = children.value.get(parent) ?? []\n children.value.set(parent, list.filter(child => child !== id))\n }\n parents.value.delete(id)\n opened.value.delete(id)\n },\n open: (id, value, event) => {\n vm.emit('click:open', { id, value, path: getPath(id), event })\n\n const newOpened = openStrategy.value.open({\n id,\n value,\n opened: new Set(opened.value),\n children: children.value,\n parents: parents.value,\n event,\n })\n\n newOpened && (opened.value = newOpened)\n },\n openOnSelect: (id, value, event) => {\n const newOpened = openStrategy.value.select({\n id,\n value,\n selected: new Map(selected.value),\n opened: new Set(opened.value),\n children: children.value,\n parents: parents.value,\n event,\n })\n newOpened && (opened.value = newOpened)\n },\n select: (id, value, event) => {\n vm.emit('click:select', { id, value, path: getPath(id), event })\n\n const newSelected = selectStrategy.value.select({\n id,\n value,\n selected: new Map(selected.value),\n children: children.value,\n parents: parents.value,\n event,\n })\n newSelected && (selected.value = newSelected)\n\n nested.root.openOnSelect(id, value, event)\n },\n children,\n parents,\n },\n }\n\n provide(VNestedSymbol, nested)\n\n return nested.root\n}\n\nexport const useNestedItem = (id: Ref<unknown>, isGroup: boolean) => {\n const parent = inject(VNestedSymbol, emptyNested)\n\n const uidSymbol = Symbol(getUid())\n const computedId = computed(() => id.value ?? uidSymbol)\n\n const item = {\n ...parent,\n id: computedId,\n open: (open: boolean, e: Event) => parent.root.open(computedId.value, open, e),\n openOnSelect: (open: boolean, e?: Event) => parent.root.openOnSelect(computedId.value, open, e),\n isOpen: computed(() => parent.root.opened.value.has(computedId.value)),\n parent: computed(() => parent.root.parents.value.get(computedId.value)),\n select: (selected: boolean, e?: Event) => parent.root.select(computedId.value, selected, e),\n isSelected: computed(() => parent.root.selected.value.get(computedId.value) === 'on'),\n isIndeterminate: computed(() => parent.root.selected.value.get(computedId.value) === 'indeterminate'),\n isLeaf: computed(() => !parent.root.children.value.get(computedId.value)),\n isGroupActivator: parent.isGroupActivator,\n }\n\n !parent.isGroupActivator && parent.root.register(computedId.value, parent.id.value, isGroup)\n\n onBeforeUnmount(() => {\n !parent.isGroupActivator && parent.root.unregister(computedId.value)\n })\n\n isGroup && provide(VNestedSymbol, item)\n\n return item\n}\n\nexport const useNestedGroupActivator = () => {\n const parent = inject(VNestedSymbol, emptyNested)\n\n provide(VNestedSymbol, { ...parent, isGroupActivator: true })\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"nested.mjs","names":["useProxiedModel","getCurrentInstance","getUid","propsFactory","computed","inject","onBeforeUnmount","provide","ref","toRaw","listOpenStrategy","multipleOpenStrategy","singleOpenStrategy","classicSelectStrategy","independentSelectStrategy","independentSingleSelectStrategy","leafSelectStrategy","leafSingleSelectStrategy","VNestedSymbol","Symbol","for","emptyNested","id","root","register","unregister","parents","Map","children","open","openOnSelect","select","opened","Set","selected","selectedValues","makeNestedProps","selectStrategy","String","Function","openStrategy","Object","Array","mandatory","Boolean","useNested","props","isUnmounted","v","values","value","in","out","getPath","path","parent","unshift","get","vm","nested","arr","key","entries","push","parentId","isGroup","set","delete","list","filter","child","event","emit","newOpened","newSelected","useNestedItem","uidSymbol","computedId","item","e","isOpen","has","isSelected","isIndeterminate","isLeaf","isGroupActivator","useNestedGroupActivator"],"sources":["../../../src/composables/nested/nested.ts"],"sourcesContent":["import { useProxiedModel } from '@/composables/proxiedModel'\nimport { getCurrentInstance, getUid, propsFactory } from '@/util'\nimport { computed, inject, onBeforeUnmount, provide, ref, toRaw } from 'vue'\nimport { listOpenStrategy, multipleOpenStrategy, singleOpenStrategy } from './openStrategies'\nimport {\n classicSelectStrategy,\n independentSelectStrategy,\n independentSingleSelectStrategy,\n leafSelectStrategy,\n leafSingleSelectStrategy,\n} from './selectStrategies'\n\n// Types\nimport type { InjectionKey, PropType, Ref } from 'vue'\nimport type { SelectStrategyFn } from './selectStrategies'\nimport type { OpenStrategy } from './openStrategies'\n\nexport type SelectStrategy = 'single-leaf' | 'leaf' | 'independent' | 'single-independent' | 'classic' | SelectStrategyFn\nexport type OpenStrategyProp = 'single' | 'multiple' | 'list' | OpenStrategy\n\nexport interface NestedProps {\n selectStrategy: SelectStrategy | undefined\n openStrategy: OpenStrategyProp | undefined\n selected: unknown[] | undefined\n opened: unknown[] | undefined\n mandatory: boolean\n 'onUpdate:selected': ((val: unknown[]) => void) | undefined\n 'onUpdate:opened': ((val: unknown[]) => void) | undefined\n}\n\ntype NestedProvide = {\n id: Ref<unknown>\n isGroupActivator?: boolean\n root: {\n children: Ref<Map<unknown, unknown[]>>\n parents: Ref<Map<unknown, unknown>>\n opened: Ref<Set<unknown>>\n selected: Ref<Map<unknown, 'on' | 'off' | 'indeterminate'>>\n selectedValues: Ref<unknown[]>\n register: (id: unknown, parentId: unknown, isGroup?: boolean) => void\n unregister: (id: unknown) => void\n open: (id: unknown, value: boolean, event?: Event) => void\n select: (id: unknown, value: boolean, event?: Event) => void\n openOnSelect: (id: unknown, value: boolean, event?: Event) => void\n }\n}\n\nexport const VNestedSymbol: InjectionKey<NestedProvide> = Symbol.for('vuetify:nested')\n\nexport const emptyNested: NestedProvide = {\n id: ref(),\n root: {\n register: () => null,\n unregister: () => null,\n parents: ref(new Map()),\n children: ref(new Map()),\n open: () => null,\n openOnSelect: () => null,\n select: () => null,\n opened: ref(new Set()),\n selected: ref(new Map()),\n selectedValues: ref([]),\n },\n}\n\nexport const makeNestedProps = propsFactory({\n selectStrategy: [String, Function] as PropType<SelectStrategy>,\n openStrategy: [String, Object] as PropType<OpenStrategyProp>,\n opened: Array as PropType<unknown[]>,\n selected: Array as PropType<unknown[]>,\n mandatory: Boolean,\n}, 'nested')\n\nexport const useNested = (props: NestedProps) => {\n let isUnmounted = false\n const children = ref(new Map<unknown, unknown[]>())\n const parents = ref(new Map<unknown, unknown>())\n\n const opened = useProxiedModel(props, 'opened', props.opened, v => new Set(v), v => [...v.values()])\n\n const selectStrategy = computed(() => {\n if (typeof props.selectStrategy === 'object') return props.selectStrategy\n\n switch (props.selectStrategy) {\n case 'single-leaf': return leafSingleSelectStrategy(props.mandatory)\n case 'leaf': return leafSelectStrategy(props.mandatory)\n case 'independent': return independentSelectStrategy(props.mandatory)\n case 'single-independent': return independentSingleSelectStrategy(props.mandatory)\n case 'classic':\n default: return classicSelectStrategy(props.mandatory)\n }\n })\n\n const openStrategy = computed(() => {\n if (typeof props.openStrategy === 'object') return props.openStrategy\n\n switch (props.openStrategy) {\n case 'list': return listOpenStrategy\n case 'single': return singleOpenStrategy\n case 'multiple':\n default: return multipleOpenStrategy\n }\n })\n\n const selected = useProxiedModel(\n props,\n 'selected',\n props.selected,\n v => selectStrategy.value.in(v, children.value, parents.value),\n v => selectStrategy.value.out(v, children.value, parents.value),\n )\n\n onBeforeUnmount(() => {\n isUnmounted = true\n })\n\n function getPath (id: unknown) {\n const path: unknown[] = []\n let parent: unknown = id\n\n while (parent != null) {\n path.unshift(parent)\n parent = parents.value.get(parent)\n }\n\n return path\n }\n\n const vm = getCurrentInstance('nested')\n\n const nested: NestedProvide = {\n id: ref(),\n root: {\n opened,\n selected,\n selectedValues: computed(() => {\n const arr = []\n\n for (const [key, value] of selected.value.entries()) {\n if (value === 'on') arr.push(key)\n }\n\n return arr\n }),\n register: (id, parentId, isGroup) => {\n parentId && id !== parentId && parents.value.set(id, parentId)\n\n isGroup && children.value.set(id, [])\n\n if (parentId != null) {\n children.value.set(parentId, [...children.value.get(parentId) || [], id])\n }\n },\n unregister: id => {\n if (isUnmounted) return\n\n children.value.delete(id)\n const parent = parents.value.get(id)\n if (parent) {\n const list = children.value.get(parent) ?? []\n children.value.set(parent, list.filter(child => child !== id))\n }\n parents.value.delete(id)\n opened.value.delete(id)\n },\n open: (id, value, event) => {\n vm.emit('click:open', { id, value, path: getPath(id), event })\n\n const newOpened = openStrategy.value.open({\n id,\n value,\n opened: new Set(opened.value),\n children: children.value,\n parents: parents.value,\n event,\n })\n\n newOpened && (opened.value = newOpened)\n },\n openOnSelect: (id, value, event) => {\n const newOpened = openStrategy.value.select({\n id,\n value,\n selected: new Map(selected.value),\n opened: new Set(opened.value),\n children: children.value,\n parents: parents.value,\n event,\n })\n newOpened && (opened.value = newOpened)\n },\n select: (id, value, event) => {\n vm.emit('click:select', { id, value, path: getPath(id), event })\n\n const newSelected = selectStrategy.value.select({\n id,\n value,\n selected: new Map(selected.value),\n children: children.value,\n parents: parents.value,\n event,\n })\n newSelected && (selected.value = newSelected)\n\n nested.root.openOnSelect(id, value, event)\n },\n children,\n parents,\n },\n }\n\n provide(VNestedSymbol, nested)\n\n return nested.root\n}\n\nexport const useNestedItem = (id: Ref<unknown>, isGroup: boolean) => {\n const parent = inject(VNestedSymbol, emptyNested)\n\n const uidSymbol = Symbol(getUid())\n const computedId = computed(() => id.value ?? uidSymbol)\n\n const item = {\n ...parent,\n id: computedId,\n open: (open: boolean, e: Event) => parent.root.open(computedId.value, open, e),\n openOnSelect: (open: boolean, e?: Event) => parent.root.openOnSelect(computedId.value, open, e),\n isOpen: computed(() => parent.root.opened.value.has(computedId.value)),\n parent: computed(() => parent.root.parents.value.get(computedId.value)),\n select: (selected: boolean, e?: Event) => parent.root.select(computedId.value, selected, e),\n isSelected: computed(() => parent.root.selected.value.get(toRaw(computedId.value)) === 'on'),\n isIndeterminate: computed(() => parent.root.selected.value.get(computedId.value) === 'indeterminate'),\n isLeaf: computed(() => !parent.root.children.value.get(computedId.value)),\n isGroupActivator: parent.isGroupActivator,\n }\n\n !parent.isGroupActivator && parent.root.register(computedId.value, parent.id.value, isGroup)\n\n onBeforeUnmount(() => {\n !parent.isGroupActivator && parent.root.unregister(computedId.value)\n })\n\n isGroup && provide(VNestedSymbol, item)\n\n return item\n}\n\nexport const useNestedGroupActivator = () => {\n const parent = inject(VNestedSymbol, emptyNested)\n\n provide(VNestedSymbol, { ...parent, isGroupActivator: true })\n}\n"],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/* eslint-disable sonarjs/no-identical-functions */
|
|
2
|
-
|
|
2
|
+
import { toRaw } from 'vue';
|
|
3
3
|
export const independentSelectStrategy = mandatory => {
|
|
4
4
|
const strategy = {
|
|
5
5
|
select: _ref => {
|
|
@@ -8,6 +8,8 @@ export const independentSelectStrategy = mandatory => {
|
|
|
8
8
|
value,
|
|
9
9
|
selected
|
|
10
10
|
} = _ref;
|
|
11
|
+
id = toRaw(id);
|
|
12
|
+
|
|
11
13
|
// When mandatory and we're trying to deselect when id
|
|
12
14
|
// is the only currently selected item then do nothing
|
|
13
15
|
if (mandatory && !value) {
|
|
@@ -52,6 +54,7 @@ export const independentSingleSelectStrategy = mandatory => {
|
|
|
52
54
|
id,
|
|
53
55
|
...rest
|
|
54
56
|
} = _ref3;
|
|
57
|
+
id = toRaw(id);
|
|
55
58
|
const singleSelected = selected.has(id) ? new Map([[id, selected.get(id)]]) : new Map();
|
|
56
59
|
return parentStrategy.select({
|
|
57
60
|
...rest,
|
|
@@ -82,6 +85,7 @@ export const leafSelectStrategy = mandatory => {
|
|
|
82
85
|
children,
|
|
83
86
|
...rest
|
|
84
87
|
} = _ref4;
|
|
88
|
+
id = toRaw(id);
|
|
85
89
|
if (children.has(id)) return selected;
|
|
86
90
|
return parentStrategy.select({
|
|
87
91
|
id,
|
|
@@ -105,6 +109,7 @@ export const leafSingleSelectStrategy = mandatory => {
|
|
|
105
109
|
children,
|
|
106
110
|
...rest
|
|
107
111
|
} = _ref5;
|
|
112
|
+
id = toRaw(id);
|
|
108
113
|
if (children.has(id)) return selected;
|
|
109
114
|
return parentStrategy.select({
|
|
110
115
|
id,
|
|
@@ -128,6 +133,7 @@ export const classicSelectStrategy = mandatory => {
|
|
|
128
133
|
children,
|
|
129
134
|
parents
|
|
130
135
|
} = _ref6;
|
|
136
|
+
id = toRaw(id);
|
|
131
137
|
const original = new Map(selected);
|
|
132
138
|
const items = [id];
|
|
133
139
|
while (items.length) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"selectStrategies.mjs","names":["independentSelectStrategy","mandatory","strategy","select","id","value","selected","on","Array","from","entries","reduce","arr","key","length","set","in","v","children","parents","map","Map","out","push","independentSingleSelectStrategy","parentStrategy","rest","singleSelected","has","get","slice","leafSelectStrategy","leafSingleSelectStrategy","classicSelectStrategy","original","items","item","shift","parent","childrenIds","everySelected","every","cid","noneSelected"],"sources":["../../../src/composables/nested/selectStrategies.ts"],"sourcesContent":["/* eslint-disable sonarjs/no-identical-functions */\nexport type SelectStrategyFn = (data: {\n id: unknown\n value: boolean\n selected: Map<unknown, 'on' | 'off' | 'indeterminate'>\n children: Map<unknown, unknown[]>\n parents: Map<unknown, unknown>\n event?: Event\n}) => Map<unknown, 'on' | 'off' | 'indeterminate'>\n\nexport type SelectStrategyTransformInFn = (\n v: unknown[] | undefined,\n children: Map<unknown, unknown[]>,\n parents: Map<unknown, unknown>,\n) => Map<unknown, 'on' | 'off' | 'indeterminate'>\n\nexport type SelectStrategyTransformOutFn = (\n v: Map<unknown, 'on' | 'off' | 'indeterminate'>,\n children: Map<unknown, unknown[]>,\n parents: Map<unknown, unknown>,\n) => unknown[]\n\nexport type SelectStrategy = {\n select: SelectStrategyFn\n in: SelectStrategyTransformInFn\n out: SelectStrategyTransformOutFn\n}\n\nexport const independentSelectStrategy = (mandatory?: boolean): SelectStrategy => {\n const strategy: SelectStrategy = {\n select: ({ id, value, selected }) => {\n // When mandatory and we're trying to deselect when id\n // is the only currently selected item then do nothing\n if (mandatory && !value) {\n const on = Array.from(selected.entries()).reduce((arr, [key, value]) => value === 'on' ? [...arr, key] : arr, [] as unknown[])\n if (on.length === 1 && on[0] === id) return selected\n }\n\n selected.set(id, value ? 'on' : 'off')\n\n return selected\n },\n in: (v, children, parents) => {\n let map = new Map()\n\n for (const id of (v || [])) {\n map = strategy.select({\n id,\n value: true,\n selected: new Map(map),\n children,\n parents,\n })\n }\n\n return map\n },\n out: v => {\n const arr = []\n\n for (const [key, value] of v.entries()) {\n if (value === 'on') arr.push(key)\n }\n\n return arr\n },\n }\n\n return strategy\n}\n\nexport const independentSingleSelectStrategy = (mandatory?: boolean): SelectStrategy => {\n const parentStrategy = independentSelectStrategy(mandatory)\n\n const strategy: SelectStrategy = {\n select: ({ selected, id, ...rest }) => {\n const singleSelected = selected.has(id) ? new Map([[id, selected.get(id)!]]) : new Map()\n return parentStrategy.select({ ...rest, id, selected: singleSelected })\n },\n in: (v, children, parents) => {\n let map = new Map()\n\n if (v?.length) {\n map = parentStrategy.in(v.slice(0, 1), children, parents)\n }\n\n return map\n },\n out: (v, children, parents) => {\n return parentStrategy.out(v, children, parents)\n },\n }\n\n return strategy\n}\n\nexport const leafSelectStrategy = (mandatory?: boolean): SelectStrategy => {\n const parentStrategy = independentSelectStrategy(mandatory)\n\n const strategy: SelectStrategy = {\n select: ({ id, selected, children, ...rest }) => {\n if (children.has(id)) return selected\n\n return parentStrategy.select({ id, selected, children, ...rest })\n },\n in: parentStrategy.in,\n out: parentStrategy.out,\n }\n\n return strategy\n}\n\nexport const leafSingleSelectStrategy = (mandatory?: boolean): SelectStrategy => {\n const parentStrategy = independentSingleSelectStrategy(mandatory)\n\n const strategy: SelectStrategy = {\n select: ({ id, selected, children, ...rest }) => {\n if (children.has(id)) return selected\n\n return parentStrategy.select({ id, selected, children, ...rest })\n },\n in: parentStrategy.in,\n out: parentStrategy.out,\n }\n\n return strategy\n}\n\nexport const classicSelectStrategy = (mandatory?: boolean): SelectStrategy => {\n const strategy: SelectStrategy = {\n select: ({ id, value, selected, children, parents }) => {\n const original = new Map(selected)\n\n const items = [id]\n\n while (items.length) {\n const item = items.shift()!\n\n selected.set(item, value ? 'on' : 'off')\n\n if (children.has(item)) {\n items.push(...children.get(item)!)\n }\n }\n\n let parent = parents.get(id)\n\n while (parent) {\n const childrenIds = children.get(parent)!\n const everySelected = childrenIds.every(cid => selected.get(cid) === 'on')\n const noneSelected = childrenIds.every(cid => !selected.has(cid) || selected.get(cid) === 'off')\n\n selected.set(parent, everySelected ? 'on' : noneSelected ? 'off' : 'indeterminate')\n\n parent = parents.get(parent)\n }\n\n // If mandatory and planned deselect results in no selected\n // items then we can't do it, so return original state\n if (mandatory && !value) {\n const on = Array.from(selected.entries()).reduce((arr, [key, value]) => value === 'on' ? [...arr, key] : arr, [] as unknown[])\n if (on.length === 0) return original\n }\n\n return selected\n },\n in: (v, children, parents) => {\n let map = new Map()\n\n for (const id of (v || [])) {\n map = strategy.select({\n id,\n value: true,\n selected: new Map(map),\n children,\n parents,\n })\n }\n\n return map\n },\n out: (v, children) => {\n const arr = []\n\n for (const [key, value] of v.entries()) {\n if (value === 'on' && !children.has(key)) arr.push(key)\n }\n\n return arr\n },\n }\n\n return strategy\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"selectStrategies.mjs","names":["toRaw","independentSelectStrategy","mandatory","strategy","select","id","value","selected","on","Array","from","entries","reduce","arr","key","length","set","in","v","children","parents","map","Map","out","push","independentSingleSelectStrategy","parentStrategy","rest","singleSelected","has","get","slice","leafSelectStrategy","leafSingleSelectStrategy","classicSelectStrategy","original","items","item","shift","parent","childrenIds","everySelected","every","cid","noneSelected"],"sources":["../../../src/composables/nested/selectStrategies.ts"],"sourcesContent":["/* eslint-disable sonarjs/no-identical-functions */\nimport { toRaw } from 'vue'\n\nexport type SelectStrategyFn = (data: {\n id: unknown\n value: boolean\n selected: Map<unknown, 'on' | 'off' | 'indeterminate'>\n children: Map<unknown, unknown[]>\n parents: Map<unknown, unknown>\n event?: Event\n}) => Map<unknown, 'on' | 'off' | 'indeterminate'>\n\nexport type SelectStrategyTransformInFn = (\n v: unknown[] | undefined,\n children: Map<unknown, unknown[]>,\n parents: Map<unknown, unknown>,\n) => Map<unknown, 'on' | 'off' | 'indeterminate'>\n\nexport type SelectStrategyTransformOutFn = (\n v: Map<unknown, 'on' | 'off' | 'indeterminate'>,\n children: Map<unknown, unknown[]>,\n parents: Map<unknown, unknown>,\n) => unknown[]\n\nexport type SelectStrategy = {\n select: SelectStrategyFn\n in: SelectStrategyTransformInFn\n out: SelectStrategyTransformOutFn\n}\n\nexport const independentSelectStrategy = (mandatory?: boolean): SelectStrategy => {\n const strategy: SelectStrategy = {\n select: ({ id, value, selected }) => {\n id = toRaw(id)\n\n // When mandatory and we're trying to deselect when id\n // is the only currently selected item then do nothing\n if (mandatory && !value) {\n const on = Array.from(selected.entries()).reduce((arr, [key, value]) => value === 'on' ? [...arr, key] : arr, [] as unknown[])\n if (on.length === 1 && on[0] === id) return selected\n }\n\n selected.set(id, value ? 'on' : 'off')\n\n return selected\n },\n in: (v, children, parents) => {\n let map = new Map()\n\n for (const id of (v || [])) {\n map = strategy.select({\n id,\n value: true,\n selected: new Map(map),\n children,\n parents,\n })\n }\n\n return map\n },\n out: v => {\n const arr = []\n\n for (const [key, value] of v.entries()) {\n if (value === 'on') arr.push(key)\n }\n\n return arr\n },\n }\n\n return strategy\n}\n\nexport const independentSingleSelectStrategy = (mandatory?: boolean): SelectStrategy => {\n const parentStrategy = independentSelectStrategy(mandatory)\n\n const strategy: SelectStrategy = {\n select: ({ selected, id, ...rest }) => {\n id = toRaw(id)\n const singleSelected = selected.has(id) ? new Map([[id, selected.get(id)!]]) : new Map()\n return parentStrategy.select({ ...rest, id, selected: singleSelected })\n },\n in: (v, children, parents) => {\n let map = new Map()\n\n if (v?.length) {\n map = parentStrategy.in(v.slice(0, 1), children, parents)\n }\n\n return map\n },\n out: (v, children, parents) => {\n return parentStrategy.out(v, children, parents)\n },\n }\n\n return strategy\n}\n\nexport const leafSelectStrategy = (mandatory?: boolean): SelectStrategy => {\n const parentStrategy = independentSelectStrategy(mandatory)\n\n const strategy: SelectStrategy = {\n select: ({ id, selected, children, ...rest }) => {\n id = toRaw(id)\n if (children.has(id)) return selected\n\n return parentStrategy.select({ id, selected, children, ...rest })\n },\n in: parentStrategy.in,\n out: parentStrategy.out,\n }\n\n return strategy\n}\n\nexport const leafSingleSelectStrategy = (mandatory?: boolean): SelectStrategy => {\n const parentStrategy = independentSingleSelectStrategy(mandatory)\n\n const strategy: SelectStrategy = {\n select: ({ id, selected, children, ...rest }) => {\n id = toRaw(id)\n if (children.has(id)) return selected\n\n return parentStrategy.select({ id, selected, children, ...rest })\n },\n in: parentStrategy.in,\n out: parentStrategy.out,\n }\n\n return strategy\n}\n\nexport const classicSelectStrategy = (mandatory?: boolean): SelectStrategy => {\n const strategy: SelectStrategy = {\n select: ({ id, value, selected, children, parents }) => {\n id = toRaw(id)\n const original = new Map(selected)\n\n const items = [id]\n\n while (items.length) {\n const item = items.shift()!\n\n selected.set(item, value ? 'on' : 'off')\n\n if (children.has(item)) {\n items.push(...children.get(item)!)\n }\n }\n\n let parent = parents.get(id)\n\n while (parent) {\n const childrenIds = children.get(parent)!\n const everySelected = childrenIds.every(cid => selected.get(cid) === 'on')\n const noneSelected = childrenIds.every(cid => !selected.has(cid) || selected.get(cid) === 'off')\n\n selected.set(parent, everySelected ? 'on' : noneSelected ? 'off' : 'indeterminate')\n\n parent = parents.get(parent)\n }\n\n // If mandatory and planned deselect results in no selected\n // items then we can't do it, so return original state\n if (mandatory && !value) {\n const on = Array.from(selected.entries()).reduce((arr, [key, value]) => value === 'on' ? [...arr, key] : arr, [] as unknown[])\n if (on.length === 0) return original\n }\n\n return selected\n },\n in: (v, children, parents) => {\n let map = new Map()\n\n for (const id of (v || [])) {\n map = strategy.select({\n id,\n value: true,\n selected: new Map(map),\n children,\n parents,\n })\n }\n\n return map\n },\n out: (v, children) => {\n const arr = []\n\n for (const [key, value] of v.entries()) {\n if (value === 'on' && !children.has(key)) arr.push(key)\n }\n\n return arr\n },\n }\n\n return strategy\n}\n"],"mappings":"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"}
|
|
@@ -24,7 +24,7 @@ export function useProxiedModel(props, prop, defaultValue) {
|
|
|
24
24
|
});
|
|
25
25
|
const model = computed({
|
|
26
26
|
get() {
|
|
27
|
-
return transformIn(
|
|
27
|
+
return transformIn(isControlled.value ? props[prop] : internal.value);
|
|
28
28
|
},
|
|
29
29
|
set(internalValue) {
|
|
30
30
|
const newValue = transformOut(internalValue);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"proxiedModel.mjs","names":["computed","ref","toRaw","watch","getCurrentInstance","toKebabCase","useToggleScope","useProxiedModel","props","prop","defaultValue","transformIn","v","transformOut","vm","internal","undefined","kebabProp","checkKebab","isControlled","vnode","hasOwnProperty","value","val","model","get","set","internalValue","newValue","emit","Object","defineProperty"],"sources":["../../src/composables/proxiedModel.ts"],"sourcesContent":["// Utilities\nimport { computed, ref, toRaw, watch } from 'vue'\nimport { getCurrentInstance, toKebabCase } from '@/util'\nimport { useToggleScope } from '@/composables/toggleScope'\n\n// Types\nimport type { Ref } from 'vue'\n\ntype InnerVal<T> = T extends any[] ? Readonly<T> : T\n\n// Composables\nexport function useProxiedModel<\n Props extends object & { [key in Prop as `onUpdate:${Prop}`]: ((val: any) => void) | undefined },\n Prop extends Extract<keyof Props, string>,\n Inner = Props[Prop],\n> (\n props: Props,\n prop: Prop,\n defaultValue?: Props[Prop],\n transformIn: (value?: Props[Prop]) => Inner = (v: any) => v,\n transformOut: (value: Inner) => Props[Prop] = (v: any) => v,\n) {\n const vm = getCurrentInstance('useProxiedModel')\n const internal = ref(props[prop] !== undefined ? props[prop] : defaultValue) as Ref<Props[Prop]>\n const kebabProp = toKebabCase(prop)\n const checkKebab = kebabProp !== prop\n\n const isControlled = checkKebab\n ? computed(() => {\n void props[prop]\n return !!(\n (vm.vnode.props?.hasOwnProperty(prop) || vm.vnode.props?.hasOwnProperty(kebabProp)) &&\n (vm.vnode.props?.hasOwnProperty(`onUpdate:${prop}`) || vm.vnode.props?.hasOwnProperty(`onUpdate:${kebabProp}`))\n )\n })\n : computed(() => {\n void props[prop]\n return !!(vm.vnode.props?.hasOwnProperty(prop) && vm.vnode.props?.hasOwnProperty(`onUpdate:${prop}`))\n })\n\n useToggleScope(() => !isControlled.value, () => {\n watch(() => props[prop], val => {\n internal.value = val\n })\n })\n\n const model = computed({\n get (): any {\n return transformIn(
|
|
1
|
+
{"version":3,"file":"proxiedModel.mjs","names":["computed","ref","toRaw","watch","getCurrentInstance","toKebabCase","useToggleScope","useProxiedModel","props","prop","defaultValue","transformIn","v","transformOut","vm","internal","undefined","kebabProp","checkKebab","isControlled","vnode","hasOwnProperty","value","val","model","get","set","internalValue","newValue","emit","Object","defineProperty"],"sources":["../../src/composables/proxiedModel.ts"],"sourcesContent":["// Utilities\nimport { computed, ref, toRaw, watch } from 'vue'\nimport { getCurrentInstance, toKebabCase } from '@/util'\nimport { useToggleScope } from '@/composables/toggleScope'\n\n// Types\nimport type { Ref } from 'vue'\n\ntype InnerVal<T> = T extends any[] ? Readonly<T> : T\n\n// Composables\nexport function useProxiedModel<\n Props extends object & { [key in Prop as `onUpdate:${Prop}`]: ((val: any) => void) | undefined },\n Prop extends Extract<keyof Props, string>,\n Inner = Props[Prop],\n> (\n props: Props,\n prop: Prop,\n defaultValue?: Props[Prop],\n transformIn: (value?: Props[Prop]) => Inner = (v: any) => v,\n transformOut: (value: Inner) => Props[Prop] = (v: any) => v,\n) {\n const vm = getCurrentInstance('useProxiedModel')\n const internal = ref(props[prop] !== undefined ? props[prop] : defaultValue) as Ref<Props[Prop]>\n const kebabProp = toKebabCase(prop)\n const checkKebab = kebabProp !== prop\n\n const isControlled = checkKebab\n ? computed(() => {\n void props[prop]\n return !!(\n (vm.vnode.props?.hasOwnProperty(prop) || vm.vnode.props?.hasOwnProperty(kebabProp)) &&\n (vm.vnode.props?.hasOwnProperty(`onUpdate:${prop}`) || vm.vnode.props?.hasOwnProperty(`onUpdate:${kebabProp}`))\n )\n })\n : computed(() => {\n void props[prop]\n return !!(vm.vnode.props?.hasOwnProperty(prop) && vm.vnode.props?.hasOwnProperty(`onUpdate:${prop}`))\n })\n\n useToggleScope(() => !isControlled.value, () => {\n watch(() => props[prop], val => {\n internal.value = val\n })\n })\n\n const model = computed({\n get (): any {\n return transformIn(isControlled.value ? props[prop] : internal.value)\n },\n set (internalValue) {\n const newValue = transformOut(internalValue)\n const value = toRaw(isControlled.value ? props[prop] : internal.value)\n if (value === newValue || transformIn(value) === internalValue) {\n return\n }\n internal.value = newValue\n vm?.emit(`update:${prop}`, newValue)\n },\n }) as any as Ref<InnerVal<Inner>> & { readonly externalValue: Props[Prop] }\n\n Object.defineProperty(model, 'externalValue', {\n get: () => isControlled.value ? props[prop] : internal.value,\n })\n\n return model\n}\n"],"mappings":"AAAA;AACA,SAASA,QAAQ,EAAEC,GAAG,EAAEC,KAAK,EAAEC,KAAK,QAAQ,KAAK;AAAA,SACxCC,kBAAkB,EAAEC,WAAW;AAAA,SAC/BC,cAAc,6BAEvB;AAKA;AACA,OAAO,SAASC,eAAe,CAK7BC,KAAY,EACZC,IAAU,EACVC,YAA0B,EAG1B;EAAA,IAFAC,WAA2C,uEAAIC,CAAM,IAAKA,CAAC;EAAA,IAC3DC,YAA2C,uEAAID,CAAM,IAAKA,CAAC;EAE3D,MAAME,EAAE,GAAGV,kBAAkB,CAAC,iBAAiB,CAAC;EAChD,MAAMW,QAAQ,GAAGd,GAAG,CAACO,KAAK,CAACC,IAAI,CAAC,KAAKO,SAAS,GAAGR,KAAK,CAACC,IAAI,CAAC,GAAGC,YAAY,CAAqB;EAChG,MAAMO,SAAS,GAAGZ,WAAW,CAACI,IAAI,CAAC;EACnC,MAAMS,UAAU,GAAGD,SAAS,KAAKR,IAAI;EAErC,MAAMU,YAAY,GAAGD,UAAU,GAC3BlB,QAAQ,CAAC,MAAM;IACf,KAAKQ,KAAK,CAACC,IAAI,CAAC;IAChB,OAAO,CAAC,EACN,CAACK,EAAE,CAACM,KAAK,CAACZ,KAAK,EAAEa,cAAc,CAACZ,IAAI,CAAC,IAAIK,EAAE,CAACM,KAAK,CAACZ,KAAK,EAAEa,cAAc,CAACJ,SAAS,CAAC,MACjFH,EAAE,CAACM,KAAK,CAACZ,KAAK,EAAEa,cAAc,CAAE,YAAWZ,IAAK,EAAC,CAAC,IAAIK,EAAE,CAACM,KAAK,CAACZ,KAAK,EAAEa,cAAc,CAAE,YAAWJ,SAAU,EAAC,CAAC,CAAC,CAChH;EACH,CAAC,CAAC,GACAjB,QAAQ,CAAC,MAAM;IACf,KAAKQ,KAAK,CAACC,IAAI,CAAC;IAChB,OAAO,CAAC,EAAEK,EAAE,CAACM,KAAK,CAACZ,KAAK,EAAEa,cAAc,CAACZ,IAAI,CAAC,IAAIK,EAAE,CAACM,KAAK,CAACZ,KAAK,EAAEa,cAAc,CAAE,YAAWZ,IAAK,EAAC,CAAC,CAAC;EACvG,CAAC,CAAC;EAEJH,cAAc,CAAC,MAAM,CAACa,YAAY,CAACG,KAAK,EAAE,MAAM;IAC9CnB,KAAK,CAAC,MAAMK,KAAK,CAACC,IAAI,CAAC,EAAEc,GAAG,IAAI;MAC9BR,QAAQ,CAACO,KAAK,GAAGC,GAAG;IACtB,CAAC,CAAC;EACJ,CAAC,CAAC;EAEF,MAAMC,KAAK,GAAGxB,QAAQ,CAAC;IACrByB,GAAG,GAAS;MACV,OAAOd,WAAW,CAACQ,YAAY,CAACG,KAAK,GAAGd,KAAK,CAACC,IAAI,CAAC,GAAGM,QAAQ,CAACO,KAAK,CAAC;IACvE,CAAC;IACDI,GAAG,CAAEC,aAAa,EAAE;MAClB,MAAMC,QAAQ,GAAGf,YAAY,CAACc,aAAa,CAAC;MAC5C,MAAML,KAAK,GAAGpB,KAAK,CAACiB,YAAY,CAACG,KAAK,GAAGd,KAAK,CAACC,IAAI,CAAC,GAAGM,QAAQ,CAACO,KAAK,CAAC;MACtE,IAAIA,KAAK,KAAKM,QAAQ,IAAIjB,WAAW,CAACW,KAAK,CAAC,KAAKK,aAAa,EAAE;QAC9D;MACF;MACAZ,QAAQ,CAACO,KAAK,GAAGM,QAAQ;MACzBd,EAAE,EAAEe,IAAI,CAAE,UAASpB,IAAK,EAAC,EAAEmB,QAAQ,CAAC;IACtC;EACF,CAAC,CAA0E;EAE3EE,MAAM,CAACC,cAAc,CAACP,KAAK,EAAE,eAAe,EAAE;IAC5CC,GAAG,EAAE,MAAMN,YAAY,CAACG,KAAK,GAAGd,KAAK,CAACC,IAAI,CAAC,GAAGM,QAAQ,CAACO;EACzD,CAAC,CAAC;EAEF,OAAOE,KAAK;AACd"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resizeObserver.mjs","names":["onBeforeUnmount","readonly","ref","watch","IN_BROWSER","useResizeObserver","callback","resizeRef","contentRect","observer","ResizeObserver","entries","length","value","disconnect","newValue","oldValue","unobserve","undefined","observe","flush"],"sources":["../../src/composables/resizeObserver.ts"],"sourcesContent":["// Utilities\nimport { onBeforeUnmount, readonly, ref, watch } from 'vue'\nimport type { DeepReadonly, Ref } from 'vue'\n\n// Globals\nimport { IN_BROWSER } from '@/util/globals'\n\ninterface ResizeState {\n resizeRef: Ref<
|
|
1
|
+
{"version":3,"file":"resizeObserver.mjs","names":["onBeforeUnmount","readonly","ref","watch","IN_BROWSER","useResizeObserver","callback","resizeRef","contentRect","observer","ResizeObserver","entries","length","value","disconnect","newValue","oldValue","unobserve","undefined","observe","flush"],"sources":["../../src/composables/resizeObserver.ts"],"sourcesContent":["// Utilities\nimport { onBeforeUnmount, readonly, ref, watch } from 'vue'\nimport type { DeepReadonly, Ref } from 'vue'\n\n// Globals\nimport { IN_BROWSER } from '@/util/globals'\n\ninterface ResizeState {\n resizeRef: Ref<HTMLElement | undefined>\n contentRect: DeepReadonly<Ref<DOMRectReadOnly | undefined>>\n}\n\nexport function useResizeObserver (callback?: ResizeObserverCallback): ResizeState {\n const resizeRef = ref<HTMLElement>()\n const contentRect = ref<DOMRectReadOnly>()\n\n if (IN_BROWSER) {\n const observer = new ResizeObserver((entries: ResizeObserverEntry[]) => {\n callback?.(entries, observer)\n\n if (!entries.length) return\n\n contentRect.value = entries[0].contentRect\n })\n\n onBeforeUnmount(() => {\n observer.disconnect()\n })\n\n watch(resizeRef, (newValue, oldValue) => {\n if (oldValue) {\n observer.unobserve(oldValue)\n contentRect.value = undefined\n }\n\n if (newValue) observer.observe(newValue)\n }, {\n flush: 'post',\n })\n }\n\n return {\n resizeRef,\n contentRect: readonly(contentRect),\n }\n}\n"],"mappings":"AAAA;AACA,SAASA,eAAe,EAAEC,QAAQ,EAAEC,GAAG,EAAEC,KAAK,QAAQ,KAAK;AAG3D;AAAA,SACSC,UAAU;AAOnB,OAAO,SAASC,iBAAiB,CAAEC,QAAiC,EAAe;EACjF,MAAMC,SAAS,GAAGL,GAAG,EAAe;EACpC,MAAMM,WAAW,GAAGN,GAAG,EAAmB;EAE1C,IAAIE,UAAU,EAAE;IACd,MAAMK,QAAQ,GAAG,IAAIC,cAAc,CAAEC,OAA8B,IAAK;MACtEL,QAAQ,GAAGK,OAAO,EAAEF,QAAQ,CAAC;MAE7B,IAAI,CAACE,OAAO,CAACC,MAAM,EAAE;MAErBJ,WAAW,CAACK,KAAK,GAAGF,OAAO,CAAC,CAAC,CAAC,CAACH,WAAW;IAC5C,CAAC,CAAC;IAEFR,eAAe,CAAC,MAAM;MACpBS,QAAQ,CAACK,UAAU,EAAE;IACvB,CAAC,CAAC;IAEFX,KAAK,CAACI,SAAS,EAAE,CAACQ,QAAQ,EAAEC,QAAQ,KAAK;MACvC,IAAIA,QAAQ,EAAE;QACZP,QAAQ,CAACQ,SAAS,CAACD,QAAQ,CAAC;QAC5BR,WAAW,CAACK,KAAK,GAAGK,SAAS;MAC/B;MAEA,IAAIH,QAAQ,EAAEN,QAAQ,CAACU,OAAO,CAACJ,QAAQ,CAAC;IAC1C,CAAC,EAAE;MACDK,KAAK,EAAE;IACT,CAAC,CAAC;EACJ;EAEA,OAAO;IACLb,SAAS;IACTC,WAAW,EAAEP,QAAQ,CAACO,WAAW;EACnC,CAAC;AACH"}
|
|
@@ -184,22 +184,30 @@ export function createTheme(options) {
|
|
|
184
184
|
lines.push(...bgLines, ...fgLines);
|
|
185
185
|
return lines.map((str, i) => i === 0 ? str : ` ${str}`).join('');
|
|
186
186
|
});
|
|
187
|
+
function getHead() {
|
|
188
|
+
return {
|
|
189
|
+
style: [{
|
|
190
|
+
children: styles.value,
|
|
191
|
+
id: 'vuetify-theme-stylesheet',
|
|
192
|
+
nonce: parsedOptions.cspNonce || false
|
|
193
|
+
}]
|
|
194
|
+
};
|
|
195
|
+
}
|
|
187
196
|
function install(app) {
|
|
188
197
|
const head = app._context.provides.usehead;
|
|
189
198
|
if (head) {
|
|
190
|
-
head.
|
|
191
|
-
const
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
if (
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
}
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
watchEffect(() => head.updateDOM());
|
|
199
|
+
if (head.push) {
|
|
200
|
+
const entry = head.push(getHead);
|
|
201
|
+
watch(styles, () => {
|
|
202
|
+
entry.patch(getHead);
|
|
203
|
+
});
|
|
204
|
+
} else {
|
|
205
|
+
if (IN_BROWSER) {
|
|
206
|
+
head.addHeadObjs(computed(getHead));
|
|
207
|
+
watchEffect(() => head.updateDOM());
|
|
208
|
+
} else {
|
|
209
|
+
head.addHeadObjs(getHead());
|
|
210
|
+
}
|
|
203
211
|
}
|
|
204
212
|
} else {
|
|
205
213
|
let styleEl = IN_BROWSER ? document.getElementById('vuetify-theme-stylesheet') : null;
|