vuetify 3.6.0 → 3.6.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/_component-variables-labs.sass +0 -2
- package/dist/_component-variables.sass +2 -0
- package/dist/json/attributes.json +1 -1
- package/dist/json/importMap-labs.json +16 -36
- package/dist/json/importMap.json +142 -122
- package/dist/json/web-types.json +16 -15
- package/dist/vuetify-labs.css +2508 -2508
- package/dist/vuetify-labs.d.ts +5127 -5085
- package/dist/vuetify-labs.esm.js +10054 -10050
- package/dist/vuetify-labs.esm.js.map +1 -1
- package/dist/vuetify-labs.js +10054 -10050
- package/dist/vuetify-labs.min.css +2 -2
- package/dist/vuetify.css +1021 -844
- package/dist/vuetify.d.ts +3125 -785
- package/dist/vuetify.esm.js +1722 -892
- package/dist/vuetify.esm.js.map +1 -1
- package/dist/vuetify.js +1722 -892
- package/dist/vuetify.js.map +1 -1
- package/dist/vuetify.min.css +2 -2
- package/dist/vuetify.min.js +614 -560
- package/dist/vuetify.min.js.map +1 -1
- package/lib/components/VAutocomplete/index.d.mts +18 -18
- package/lib/components/VBottomSheet/index.d.mts +15 -9
- package/lib/components/VCombobox/index.d.mts +18 -18
- package/lib/{labs → components}/VConfirmEdit/VConfirmEdit.mjs +1 -1
- package/lib/components/VConfirmEdit/VConfirmEdit.mjs.map +1 -0
- package/lib/components/VConfirmEdit/__test__/VConfirmEdit.spec.cy.mjs.map +1 -0
- package/lib/components/VConfirmEdit/index.mjs.map +1 -0
- package/lib/components/VDataTable/VDataTableHeaders.mjs +2 -0
- package/lib/components/VDataTable/VDataTableHeaders.mjs.map +1 -1
- package/lib/components/VDatePicker/VDatePicker.mjs +2 -2
- package/lib/components/VDatePicker/VDatePicker.mjs.map +1 -1
- package/lib/components/VDialog/index.d.mts +33 -27
- package/lib/{labs → components}/VEmptyState/VEmptyState.mjs +4 -4
- package/lib/components/VEmptyState/VEmptyState.mjs.map +1 -0
- package/lib/components/VEmptyState/index.mjs.map +1 -0
- package/lib/{labs → components}/VFab/VFab.mjs +1 -1
- package/lib/components/VFab/VFab.mjs.map +1 -0
- package/lib/components/VFab/index.mjs.map +1 -0
- package/lib/components/VFileInput/VFileInput.mjs.map +1 -1
- package/lib/components/VFileInput/index.d.mts +6 -6
- package/lib/components/VHover/VHover.mjs +1 -1
- package/lib/components/VHover/VHover.mjs.map +1 -1
- package/lib/components/VHover/index.d.mts +24 -24
- package/lib/components/VMenu/index.d.mts +33 -27
- package/lib/components/VOverlay/VOverlay.mjs +5 -2
- package/lib/components/VOverlay/VOverlay.mjs.map +1 -1
- package/lib/components/VOverlay/index.d.mts +15 -9
- package/lib/components/VSelect/index.d.mts +18 -18
- package/lib/components/VSnackbar/VSnackbar.mjs.map +1 -1
- package/lib/components/VSnackbar/index.d.mts +47 -41
- package/lib/components/VSparkline/VBarline.mjs.map +1 -0
- package/lib/components/VSparkline/VSparkline.mjs +44 -320
- package/lib/components/VSparkline/VSparkline.mjs.map +1 -1
- package/lib/components/VSparkline/VTrendline.mjs.map +1 -0
- package/lib/components/VSparkline/index.mjs +1 -3
- package/lib/components/VSparkline/index.mjs.map +1 -1
- package/lib/components/VSparkline/util/line.mjs.map +1 -0
- package/lib/components/VSparkline/util/path.mjs.map +1 -0
- package/lib/components/VSpeedDial/VSpeedDial.mjs +68 -85
- package/lib/components/VSpeedDial/VSpeedDial.mjs.map +1 -1
- package/lib/components/VSpeedDial/VSpeedDial.sass +20 -72
- package/lib/{labs → components}/VSpeedDial/index.d.mts +15 -9
- package/lib/components/VSpeedDial/index.mjs +1 -3
- package/lib/components/VSpeedDial/index.mjs.map +1 -1
- package/lib/components/VTooltip/index.d.mts +33 -27
- package/lib/components/index.d.mts +3088 -753
- package/lib/components/index.mjs +6 -2
- package/lib/components/index.mjs.map +1 -1
- package/lib/composables/date/adapters/vuetify.mjs +1 -0
- package/lib/composables/date/adapters/vuetify.mjs.map +1 -1
- package/lib/composables/directiveComponent.mjs +1 -3
- package/lib/composables/directiveComponent.mjs.map +1 -1
- package/lib/entry-bundler.mjs +1 -1
- package/lib/framework.mjs +1 -1
- package/lib/index.d.mts +49 -49
- package/lib/labs/VDateInput/VDateInput.mjs +2 -2
- package/lib/labs/VDateInput/VDateInput.mjs.map +1 -1
- package/lib/labs/VDateInput/index.d.mts +14 -14
- package/lib/labs/VSnackbarQueue/index.d.mts +47 -41
- package/lib/labs/components.d.mts +1672 -3983
- package/lib/labs/components.mjs +0 -5
- package/lib/labs/components.mjs.map +1 -1
- package/package.json +2 -2
- package/lib/components/VSparkline/helpers/core.mjs +0 -49
- package/lib/components/VSparkline/helpers/core.mjs.map +0 -1
- package/lib/components/VSparkline/helpers/math.mjs +0 -34
- package/lib/components/VSparkline/helpers/math.mjs.map +0 -1
- package/lib/components/VSparkline/helpers/path.mjs +0 -27
- package/lib/components/VSparkline/helpers/path.mjs.map +0 -1
- package/lib/components/VSpeedDial/_variables.scss +0 -5
- package/lib/labs/VConfirmEdit/VConfirmEdit.mjs.map +0 -1
- package/lib/labs/VConfirmEdit/__test__/VConfirmEdit.spec.cy.mjs.map +0 -1
- package/lib/labs/VConfirmEdit/index.mjs.map +0 -1
- package/lib/labs/VEmptyState/VEmptyState.mjs.map +0 -1
- package/lib/labs/VEmptyState/index.mjs.map +0 -1
- package/lib/labs/VFab/VFab.mjs.map +0 -1
- package/lib/labs/VFab/index.mjs.map +0 -1
- package/lib/labs/VSparkline/VBarline.mjs.map +0 -1
- package/lib/labs/VSparkline/VSparkline.mjs +0 -49
- package/lib/labs/VSparkline/VSparkline.mjs.map +0 -1
- package/lib/labs/VSparkline/VTrendline.mjs.map +0 -1
- package/lib/labs/VSparkline/index.mjs +0 -2
- package/lib/labs/VSparkline/index.mjs.map +0 -1
- package/lib/labs/VSparkline/util/line.mjs.map +0 -1
- package/lib/labs/VSparkline/util/path.mjs.map +0 -1
- package/lib/labs/VSpeedDial/VSpeedDial.mjs +0 -76
- package/lib/labs/VSpeedDial/VSpeedDial.mjs.map +0 -1
- package/lib/labs/VSpeedDial/VSpeedDial.sass +0 -27
- package/lib/labs/VSpeedDial/index.mjs +0 -2
- package/lib/labs/VSpeedDial/index.mjs.map +0 -1
- /package/lib/{labs → components}/VConfirmEdit/__test__/VConfirmEdit.spec.cy.mjs +0 -0
- /package/lib/{labs → components}/VConfirmEdit/index.d.mts +0 -0
- /package/lib/{labs → components}/VConfirmEdit/index.mjs +0 -0
- /package/lib/{labs → components}/VEmptyState/VEmptyState.css +0 -0
- /package/lib/{labs → components}/VEmptyState/VEmptyState.sass +0 -0
- /package/lib/{labs → components}/VEmptyState/_variables.scss +0 -0
- /package/lib/{labs → components}/VEmptyState/index.d.mts +0 -0
- /package/lib/{labs → components}/VEmptyState/index.mjs +0 -0
- /package/lib/{labs → components}/VFab/VFab.css +0 -0
- /package/lib/{labs → components}/VFab/VFab.sass +0 -0
- /package/lib/{labs → components}/VFab/_mixins.scss +0 -0
- /package/lib/{labs → components}/VFab/_variables.scss +0 -0
- /package/lib/{labs → components}/VFab/index.d.mts +0 -0
- /package/lib/{labs → components}/VFab/index.mjs +0 -0
- /package/lib/{labs → components}/VSparkline/VBarline.mjs +0 -0
- /package/lib/{labs → components}/VSparkline/VTrendline.mjs +0 -0
- /package/lib/{labs → components}/VSparkline/index.d.mts +0 -0
- /package/lib/{labs → components}/VSparkline/util/line.mjs +0 -0
- /package/lib/{labs → components}/VSparkline/util/path.mjs +0 -0
- /package/lib/{labs → components}/VSpeedDial/VSpeedDial.css +0 -0
package/dist/vuetify.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
* Vuetify v3.6.
|
|
2
|
+
* Vuetify v3.6.2
|
|
3
3
|
* Forged by John Leider
|
|
4
4
|
* Released under the MIT License.
|
|
5
5
|
*/
|
|
@@ -10918,7 +10918,10 @@
|
|
|
10918
10918
|
disabled: Boolean,
|
|
10919
10919
|
opacity: [Number, String],
|
|
10920
10920
|
noClickAnimation: Boolean,
|
|
10921
|
-
modelValue:
|
|
10921
|
+
modelValue: {
|
|
10922
|
+
type: Boolean,
|
|
10923
|
+
default: null
|
|
10924
|
+
},
|
|
10922
10925
|
persistent: Boolean,
|
|
10923
10926
|
scrim: {
|
|
10924
10927
|
type: [Boolean, String],
|
|
@@ -10961,7 +10964,7 @@
|
|
|
10961
10964
|
} = _ref;
|
|
10962
10965
|
const model = useProxiedModel(props, 'modelValue');
|
|
10963
10966
|
const isActive = vue.computed({
|
|
10964
|
-
get: () => model.value,
|
|
10967
|
+
get: () => Boolean(model.value),
|
|
10965
10968
|
set: v => {
|
|
10966
10969
|
if (!(v && props.disabled)) model.value = v;
|
|
10967
10970
|
}
|
|
@@ -17276,764 +17279,255 @@
|
|
|
17276
17279
|
}
|
|
17277
17280
|
});
|
|
17278
17281
|
|
|
17279
|
-
//
|
|
17282
|
+
// Utilities
|
|
17280
17283
|
|
|
17281
17284
|
// Types
|
|
17282
17285
|
|
|
17283
|
-
const
|
|
17284
|
-
|
|
17285
|
-
|
|
17286
|
-
|
|
17287
|
-
|
|
17288
|
-
|
|
17286
|
+
const firstDay = {
|
|
17287
|
+
'001': 1,
|
|
17288
|
+
AD: 1,
|
|
17289
|
+
AE: 6,
|
|
17290
|
+
AF: 6,
|
|
17291
|
+
AG: 0,
|
|
17292
|
+
AI: 1,
|
|
17293
|
+
AL: 1,
|
|
17294
|
+
AM: 1,
|
|
17295
|
+
AN: 1,
|
|
17296
|
+
AR: 1,
|
|
17297
|
+
AS: 0,
|
|
17298
|
+
AT: 1,
|
|
17299
|
+
AU: 1,
|
|
17300
|
+
AX: 1,
|
|
17301
|
+
AZ: 1,
|
|
17302
|
+
BA: 1,
|
|
17303
|
+
BD: 0,
|
|
17304
|
+
BE: 1,
|
|
17305
|
+
BG: 1,
|
|
17306
|
+
BH: 6,
|
|
17307
|
+
BM: 1,
|
|
17308
|
+
BN: 1,
|
|
17309
|
+
BR: 0,
|
|
17310
|
+
BS: 0,
|
|
17311
|
+
BT: 0,
|
|
17312
|
+
BW: 0,
|
|
17313
|
+
BY: 1,
|
|
17314
|
+
BZ: 0,
|
|
17315
|
+
CA: 0,
|
|
17316
|
+
CH: 1,
|
|
17317
|
+
CL: 1,
|
|
17318
|
+
CM: 1,
|
|
17319
|
+
CN: 1,
|
|
17320
|
+
CO: 0,
|
|
17321
|
+
CR: 1,
|
|
17322
|
+
CY: 1,
|
|
17323
|
+
CZ: 1,
|
|
17324
|
+
DE: 1,
|
|
17325
|
+
DJ: 6,
|
|
17326
|
+
DK: 1,
|
|
17327
|
+
DM: 0,
|
|
17328
|
+
DO: 0,
|
|
17329
|
+
DZ: 6,
|
|
17330
|
+
EC: 1,
|
|
17331
|
+
EE: 1,
|
|
17332
|
+
EG: 6,
|
|
17333
|
+
ES: 1,
|
|
17334
|
+
ET: 0,
|
|
17335
|
+
FI: 1,
|
|
17336
|
+
FJ: 1,
|
|
17337
|
+
FO: 1,
|
|
17338
|
+
FR: 1,
|
|
17339
|
+
GB: 1,
|
|
17340
|
+
'GB-alt-variant': 0,
|
|
17341
|
+
GE: 1,
|
|
17342
|
+
GF: 1,
|
|
17343
|
+
GP: 1,
|
|
17344
|
+
GR: 1,
|
|
17345
|
+
GT: 0,
|
|
17346
|
+
GU: 0,
|
|
17347
|
+
HK: 0,
|
|
17348
|
+
HN: 0,
|
|
17349
|
+
HR: 1,
|
|
17350
|
+
HU: 1,
|
|
17351
|
+
ID: 0,
|
|
17352
|
+
IE: 1,
|
|
17353
|
+
IL: 0,
|
|
17354
|
+
IN: 0,
|
|
17355
|
+
IQ: 6,
|
|
17356
|
+
IR: 6,
|
|
17357
|
+
IS: 1,
|
|
17358
|
+
IT: 1,
|
|
17359
|
+
JM: 0,
|
|
17360
|
+
JO: 6,
|
|
17361
|
+
JP: 0,
|
|
17362
|
+
KE: 0,
|
|
17363
|
+
KG: 1,
|
|
17364
|
+
KH: 0,
|
|
17365
|
+
KR: 0,
|
|
17366
|
+
KW: 6,
|
|
17367
|
+
KZ: 1,
|
|
17368
|
+
LA: 0,
|
|
17369
|
+
LB: 1,
|
|
17370
|
+
LI: 1,
|
|
17371
|
+
LK: 1,
|
|
17372
|
+
LT: 1,
|
|
17373
|
+
LU: 1,
|
|
17374
|
+
LV: 1,
|
|
17375
|
+
LY: 6,
|
|
17376
|
+
MC: 1,
|
|
17377
|
+
MD: 1,
|
|
17378
|
+
ME: 1,
|
|
17379
|
+
MH: 0,
|
|
17380
|
+
MK: 1,
|
|
17381
|
+
MM: 0,
|
|
17382
|
+
MN: 1,
|
|
17383
|
+
MO: 0,
|
|
17384
|
+
MQ: 1,
|
|
17385
|
+
MT: 0,
|
|
17386
|
+
MV: 5,
|
|
17387
|
+
MX: 0,
|
|
17388
|
+
MY: 1,
|
|
17389
|
+
MZ: 0,
|
|
17390
|
+
NI: 0,
|
|
17391
|
+
NL: 1,
|
|
17392
|
+
NO: 1,
|
|
17393
|
+
NP: 0,
|
|
17394
|
+
NZ: 1,
|
|
17395
|
+
OM: 6,
|
|
17396
|
+
PA: 0,
|
|
17397
|
+
PE: 0,
|
|
17398
|
+
PH: 0,
|
|
17399
|
+
PK: 0,
|
|
17400
|
+
PL: 1,
|
|
17401
|
+
PR: 0,
|
|
17402
|
+
PT: 0,
|
|
17403
|
+
PY: 0,
|
|
17404
|
+
QA: 6,
|
|
17405
|
+
RE: 1,
|
|
17406
|
+
RO: 1,
|
|
17407
|
+
RS: 1,
|
|
17408
|
+
RU: 1,
|
|
17409
|
+
SA: 0,
|
|
17410
|
+
SD: 6,
|
|
17411
|
+
SE: 1,
|
|
17412
|
+
SG: 0,
|
|
17413
|
+
SI: 1,
|
|
17414
|
+
SK: 1,
|
|
17415
|
+
SM: 1,
|
|
17416
|
+
SV: 0,
|
|
17417
|
+
SY: 6,
|
|
17418
|
+
TH: 0,
|
|
17419
|
+
TJ: 1,
|
|
17420
|
+
TM: 1,
|
|
17421
|
+
TR: 1,
|
|
17422
|
+
TT: 0,
|
|
17423
|
+
TW: 0,
|
|
17424
|
+
UA: 1,
|
|
17425
|
+
UM: 0,
|
|
17426
|
+
US: 0,
|
|
17427
|
+
UY: 1,
|
|
17428
|
+
UZ: 1,
|
|
17429
|
+
VA: 1,
|
|
17430
|
+
VE: 0,
|
|
17431
|
+
VI: 0,
|
|
17432
|
+
VN: 1,
|
|
17433
|
+
WS: 0,
|
|
17434
|
+
XK: 1,
|
|
17435
|
+
YE: 0,
|
|
17436
|
+
ZA: 0,
|
|
17437
|
+
ZW: 0
|
|
17438
|
+
};
|
|
17439
|
+
function getWeekArray(date, locale) {
|
|
17440
|
+
const weeks = [];
|
|
17441
|
+
let currentWeek = [];
|
|
17442
|
+
const firstDayOfMonth = startOfMonth(date);
|
|
17443
|
+
const lastDayOfMonth = endOfMonth(date);
|
|
17444
|
+
const firstDayWeekIndex = (firstDayOfMonth.getDay() - firstDay[locale.slice(-2).toUpperCase()] + 7) % 7;
|
|
17445
|
+
const lastDayWeekIndex = (lastDayOfMonth.getDay() - firstDay[locale.slice(-2).toUpperCase()] + 7) % 7;
|
|
17446
|
+
for (let i = 0; i < firstDayWeekIndex; i++) {
|
|
17447
|
+
const adjacentDay = new Date(firstDayOfMonth);
|
|
17448
|
+
adjacentDay.setDate(adjacentDay.getDate() - (firstDayWeekIndex - i));
|
|
17449
|
+
currentWeek.push(adjacentDay);
|
|
17289
17450
|
}
|
|
17290
|
-
|
|
17291
|
-
|
|
17292
|
-
|
|
17293
|
-
|
|
17294
|
-
|
|
17295
|
-
|
|
17296
|
-
|
|
17297
|
-
|
|
17298
|
-
|
|
17299
|
-
|
|
17300
|
-
const newExpanded = new Set(expanded.value);
|
|
17301
|
-
if (!value) {
|
|
17302
|
-
newExpanded.delete(item.value);
|
|
17303
|
-
} else {
|
|
17304
|
-
newExpanded.add(item.value);
|
|
17451
|
+
for (let i = 1; i <= lastDayOfMonth.getDate(); i++) {
|
|
17452
|
+
const day = new Date(date.getFullYear(), date.getMonth(), i);
|
|
17453
|
+
|
|
17454
|
+
// Add the day to the current week
|
|
17455
|
+
currentWeek.push(day);
|
|
17456
|
+
|
|
17457
|
+
// If the current week has 7 days, add it to the weeks array and start a new week
|
|
17458
|
+
if (currentWeek.length === 7) {
|
|
17459
|
+
weeks.push(currentWeek);
|
|
17460
|
+
currentWeek = [];
|
|
17305
17461
|
}
|
|
17306
|
-
expanded.value = newExpanded;
|
|
17307
17462
|
}
|
|
17308
|
-
|
|
17309
|
-
|
|
17463
|
+
for (let i = 1; i < 7 - lastDayWeekIndex; i++) {
|
|
17464
|
+
const adjacentDay = new Date(lastDayOfMonth);
|
|
17465
|
+
adjacentDay.setDate(adjacentDay.getDate() + i);
|
|
17466
|
+
currentWeek.push(adjacentDay);
|
|
17310
17467
|
}
|
|
17311
|
-
|
|
17312
|
-
|
|
17468
|
+
if (currentWeek.length > 0) {
|
|
17469
|
+
weeks.push(currentWeek);
|
|
17313
17470
|
}
|
|
17314
|
-
|
|
17315
|
-
expand,
|
|
17316
|
-
expanded,
|
|
17317
|
-
expandOnClick,
|
|
17318
|
-
isExpanded,
|
|
17319
|
-
toggleExpand
|
|
17320
|
-
};
|
|
17321
|
-
vue.provide(VDataTableExpandedKey, data);
|
|
17322
|
-
return data;
|
|
17471
|
+
return weeks;
|
|
17323
17472
|
}
|
|
17324
|
-
function
|
|
17325
|
-
const
|
|
17326
|
-
|
|
17327
|
-
|
|
17473
|
+
function startOfWeek(date, locale) {
|
|
17474
|
+
const d = new Date(date);
|
|
17475
|
+
while (d.getDay() !== (firstDay[locale.slice(-2).toUpperCase()] ?? 0)) {
|
|
17476
|
+
d.setDate(d.getDate() - 1);
|
|
17477
|
+
}
|
|
17478
|
+
return d;
|
|
17328
17479
|
}
|
|
17329
|
-
|
|
17330
|
-
|
|
17331
|
-
|
|
17332
|
-
|
|
17333
|
-
|
|
17334
|
-
const makeDataTableGroupProps = propsFactory({
|
|
17335
|
-
groupBy: {
|
|
17336
|
-
type: Array,
|
|
17337
|
-
default: () => []
|
|
17480
|
+
function endOfWeek(date, locale) {
|
|
17481
|
+
const d = new Date(date);
|
|
17482
|
+
const lastDay = ((firstDay[locale.slice(-2).toUpperCase()] ?? 0) + 6) % 7;
|
|
17483
|
+
while (d.getDay() !== lastDay) {
|
|
17484
|
+
d.setDate(d.getDate() + 1);
|
|
17338
17485
|
}
|
|
17339
|
-
|
|
17340
|
-
const VDataTableGroupSymbol = Symbol.for('vuetify:data-table-group');
|
|
17341
|
-
function createGroupBy(props) {
|
|
17342
|
-
const groupBy = useProxiedModel(props, 'groupBy');
|
|
17343
|
-
return {
|
|
17344
|
-
groupBy
|
|
17345
|
-
};
|
|
17486
|
+
return d;
|
|
17346
17487
|
}
|
|
17347
|
-
function
|
|
17348
|
-
|
|
17349
|
-
groupBy,
|
|
17350
|
-
sortBy
|
|
17351
|
-
} = options;
|
|
17352
|
-
const opened = vue.ref(new Set());
|
|
17353
|
-
const sortByWithGroups = vue.computed(() => {
|
|
17354
|
-
return groupBy.value.map(val => ({
|
|
17355
|
-
...val,
|
|
17356
|
-
order: val.order ?? false
|
|
17357
|
-
})).concat(sortBy.value);
|
|
17358
|
-
});
|
|
17359
|
-
function isGroupOpen(group) {
|
|
17360
|
-
return opened.value.has(group.id);
|
|
17361
|
-
}
|
|
17362
|
-
function toggleGroup(group) {
|
|
17363
|
-
const newOpened = new Set(opened.value);
|
|
17364
|
-
if (!isGroupOpen(group)) newOpened.add(group.id);else newOpened.delete(group.id);
|
|
17365
|
-
opened.value = newOpened;
|
|
17366
|
-
}
|
|
17367
|
-
function extractRows(items) {
|
|
17368
|
-
function dive(group) {
|
|
17369
|
-
const arr = [];
|
|
17370
|
-
for (const item of group.items) {
|
|
17371
|
-
if ('type' in item && item.type === 'group') {
|
|
17372
|
-
arr.push(...dive(item));
|
|
17373
|
-
} else {
|
|
17374
|
-
arr.push(item);
|
|
17375
|
-
}
|
|
17376
|
-
}
|
|
17377
|
-
return arr;
|
|
17378
|
-
}
|
|
17379
|
-
return dive({
|
|
17380
|
-
type: 'group',
|
|
17381
|
-
items,
|
|
17382
|
-
id: 'dummy',
|
|
17383
|
-
key: 'dummy',
|
|
17384
|
-
value: 'dummy',
|
|
17385
|
-
depth: 0
|
|
17386
|
-
});
|
|
17387
|
-
}
|
|
17388
|
-
|
|
17389
|
-
// onBeforeMount(() => {
|
|
17390
|
-
// for (const key of groupedItems.value.keys()) {
|
|
17391
|
-
// opened.value.add(key)
|
|
17392
|
-
// }
|
|
17393
|
-
// })
|
|
17394
|
-
|
|
17395
|
-
const data = {
|
|
17396
|
-
sortByWithGroups,
|
|
17397
|
-
toggleGroup,
|
|
17398
|
-
opened,
|
|
17399
|
-
groupBy,
|
|
17400
|
-
extractRows,
|
|
17401
|
-
isGroupOpen
|
|
17402
|
-
};
|
|
17403
|
-
vue.provide(VDataTableGroupSymbol, data);
|
|
17404
|
-
return data;
|
|
17405
|
-
}
|
|
17406
|
-
function useGroupBy() {
|
|
17407
|
-
const data = vue.inject(VDataTableGroupSymbol);
|
|
17408
|
-
if (!data) throw new Error('Missing group!');
|
|
17409
|
-
return data;
|
|
17488
|
+
function startOfMonth(date) {
|
|
17489
|
+
return new Date(date.getFullYear(), date.getMonth(), 1);
|
|
17410
17490
|
}
|
|
17411
|
-
function
|
|
17412
|
-
|
|
17413
|
-
const groups = new Map();
|
|
17414
|
-
for (const item of items) {
|
|
17415
|
-
const value = getObjectValueByPath(item.raw, groupBy);
|
|
17416
|
-
if (!groups.has(value)) {
|
|
17417
|
-
groups.set(value, []);
|
|
17418
|
-
}
|
|
17419
|
-
groups.get(value).push(item);
|
|
17420
|
-
}
|
|
17421
|
-
return groups;
|
|
17491
|
+
function endOfMonth(date) {
|
|
17492
|
+
return new Date(date.getFullYear(), date.getMonth() + 1, 0);
|
|
17422
17493
|
}
|
|
17423
|
-
function
|
|
17424
|
-
|
|
17425
|
-
|
|
17426
|
-
|
|
17427
|
-
|
|
17428
|
-
const groups = [];
|
|
17429
|
-
const rest = groupBy.slice(1);
|
|
17430
|
-
groupedItems.forEach((items, value) => {
|
|
17431
|
-
const key = groupBy[0];
|
|
17432
|
-
const id = `${prefix}_${key}_${value}`;
|
|
17433
|
-
groups.push({
|
|
17434
|
-
depth,
|
|
17435
|
-
id,
|
|
17436
|
-
key,
|
|
17437
|
-
value,
|
|
17438
|
-
items: rest.length ? groupItems(items, rest, depth + 1, id) : items,
|
|
17439
|
-
type: 'group'
|
|
17440
|
-
});
|
|
17441
|
-
});
|
|
17442
|
-
return groups;
|
|
17494
|
+
function parseLocalDate(value) {
|
|
17495
|
+
const parts = value.split('-').map(Number);
|
|
17496
|
+
|
|
17497
|
+
// new Date() uses local time zone when passing individual date component values
|
|
17498
|
+
return new Date(parts[0], parts[1] - 1, parts[2]);
|
|
17443
17499
|
}
|
|
17444
|
-
|
|
17445
|
-
|
|
17446
|
-
|
|
17447
|
-
|
|
17448
|
-
|
|
17449
|
-
|
|
17450
|
-
|
|
17451
|
-
|
|
17452
|
-
if (opened.has(item.id) || item.value == null) {
|
|
17453
|
-
flatItems.push(...flattenItems(item.items, opened));
|
|
17454
|
-
}
|
|
17500
|
+
const _YYYMMDD = /^([12]\d{3}-([1-9]|0[1-9]|1[0-2])-([1-9]|0[1-9]|[12]\d|3[01]))$/;
|
|
17501
|
+
function date(value) {
|
|
17502
|
+
if (value == null) return new Date();
|
|
17503
|
+
if (value instanceof Date) return value;
|
|
17504
|
+
if (typeof value === 'string') {
|
|
17505
|
+
let parsed;
|
|
17506
|
+
if (_YYYMMDD.test(value)) {
|
|
17507
|
+
return parseLocalDate(value);
|
|
17455
17508
|
} else {
|
|
17456
|
-
|
|
17509
|
+
parsed = Date.parse(value);
|
|
17457
17510
|
}
|
|
17511
|
+
if (!isNaN(parsed)) return new Date(parsed);
|
|
17458
17512
|
}
|
|
17459
|
-
return
|
|
17460
|
-
}
|
|
17461
|
-
function useGroupedItems(items, groupBy, opened) {
|
|
17462
|
-
const flatItems = vue.computed(() => {
|
|
17463
|
-
if (!groupBy.value.length) return items.value;
|
|
17464
|
-
const groupedItems = groupItems(items.value, groupBy.value.map(item => item.key));
|
|
17465
|
-
return flattenItems(groupedItems, opened.value);
|
|
17466
|
-
});
|
|
17467
|
-
return {
|
|
17468
|
-
flatItems
|
|
17469
|
-
};
|
|
17513
|
+
return null;
|
|
17470
17514
|
}
|
|
17471
|
-
|
|
17472
|
-
|
|
17473
|
-
|
|
17474
|
-
|
|
17475
|
-
|
|
17476
|
-
|
|
17477
|
-
|
|
17478
|
-
|
|
17479
|
-
|
|
17480
|
-
sortBy,
|
|
17481
|
-
groupBy,
|
|
17482
|
-
search
|
|
17483
|
-
} = _ref;
|
|
17484
|
-
const vm = getCurrentInstance('VDataTable');
|
|
17485
|
-
const options = vue.computed(() => ({
|
|
17486
|
-
page: page.value,
|
|
17487
|
-
itemsPerPage: itemsPerPage.value,
|
|
17488
|
-
sortBy: sortBy.value,
|
|
17489
|
-
groupBy: groupBy.value,
|
|
17490
|
-
search: search.value
|
|
17491
|
-
}));
|
|
17492
|
-
let oldOptions = null;
|
|
17493
|
-
vue.watch(options, () => {
|
|
17494
|
-
if (deepEqual(oldOptions, options.value)) return;
|
|
17495
|
-
|
|
17496
|
-
// Reset page when searching
|
|
17497
|
-
if (oldOptions && oldOptions.search !== options.value.search) {
|
|
17498
|
-
page.value = 1;
|
|
17499
|
-
}
|
|
17500
|
-
vm.emit('update:options', options.value);
|
|
17501
|
-
oldOptions = options.value;
|
|
17502
|
-
}, {
|
|
17503
|
-
deep: true,
|
|
17504
|
-
immediate: true
|
|
17515
|
+
const sundayJanuarySecond2000 = new Date(2000, 0, 2);
|
|
17516
|
+
function getWeekdays(locale) {
|
|
17517
|
+
const daysFromSunday = firstDay[locale.slice(-2).toUpperCase()];
|
|
17518
|
+
return createRange(7).map(i => {
|
|
17519
|
+
const weekday = new Date(sundayJanuarySecond2000);
|
|
17520
|
+
weekday.setDate(sundayJanuarySecond2000.getDate() + daysFromSunday + i);
|
|
17521
|
+
return new Intl.DateTimeFormat(locale, {
|
|
17522
|
+
weekday: 'narrow'
|
|
17523
|
+
}).format(weekday);
|
|
17505
17524
|
});
|
|
17506
17525
|
}
|
|
17507
|
-
|
|
17508
|
-
|
|
17509
|
-
|
|
17510
|
-
|
|
17511
|
-
|
|
17512
|
-
const makeDataTablePaginateProps = propsFactory({
|
|
17513
|
-
page: {
|
|
17514
|
-
type: [Number, String],
|
|
17515
|
-
default: 1
|
|
17516
|
-
},
|
|
17517
|
-
itemsPerPage: {
|
|
17518
|
-
type: [Number, String],
|
|
17519
|
-
default: 10
|
|
17520
|
-
}
|
|
17521
|
-
}, 'DataTable-paginate');
|
|
17522
|
-
const VDataTablePaginationSymbol = Symbol.for('vuetify:data-table-pagination');
|
|
17523
|
-
function createPagination(props) {
|
|
17524
|
-
const page = useProxiedModel(props, 'page', undefined, value => +(value ?? 1));
|
|
17525
|
-
const itemsPerPage = useProxiedModel(props, 'itemsPerPage', undefined, value => +(value ?? 10));
|
|
17526
|
-
return {
|
|
17527
|
-
page,
|
|
17528
|
-
itemsPerPage
|
|
17529
|
-
};
|
|
17530
|
-
}
|
|
17531
|
-
function providePagination(options) {
|
|
17532
|
-
const {
|
|
17533
|
-
page,
|
|
17534
|
-
itemsPerPage,
|
|
17535
|
-
itemsLength
|
|
17536
|
-
} = options;
|
|
17537
|
-
const startIndex = vue.computed(() => {
|
|
17538
|
-
if (itemsPerPage.value === -1) return 0;
|
|
17539
|
-
return itemsPerPage.value * (page.value - 1);
|
|
17540
|
-
});
|
|
17541
|
-
const stopIndex = vue.computed(() => {
|
|
17542
|
-
if (itemsPerPage.value === -1) return itemsLength.value;
|
|
17543
|
-
return Math.min(itemsLength.value, startIndex.value + itemsPerPage.value);
|
|
17544
|
-
});
|
|
17545
|
-
const pageCount = vue.computed(() => {
|
|
17546
|
-
if (itemsPerPage.value === -1 || itemsLength.value === 0) return 1;
|
|
17547
|
-
return Math.ceil(itemsLength.value / itemsPerPage.value);
|
|
17548
|
-
});
|
|
17549
|
-
vue.watchEffect(() => {
|
|
17550
|
-
if (page.value > pageCount.value) {
|
|
17551
|
-
page.value = pageCount.value;
|
|
17552
|
-
}
|
|
17553
|
-
});
|
|
17554
|
-
function setItemsPerPage(value) {
|
|
17555
|
-
itemsPerPage.value = value;
|
|
17556
|
-
page.value = 1;
|
|
17557
|
-
}
|
|
17558
|
-
function nextPage() {
|
|
17559
|
-
page.value = clamp(page.value + 1, 1, pageCount.value);
|
|
17560
|
-
}
|
|
17561
|
-
function prevPage() {
|
|
17562
|
-
page.value = clamp(page.value - 1, 1, pageCount.value);
|
|
17563
|
-
}
|
|
17564
|
-
function setPage(value) {
|
|
17565
|
-
page.value = clamp(value, 1, pageCount.value);
|
|
17566
|
-
}
|
|
17567
|
-
const data = {
|
|
17568
|
-
page,
|
|
17569
|
-
itemsPerPage,
|
|
17570
|
-
startIndex,
|
|
17571
|
-
stopIndex,
|
|
17572
|
-
pageCount,
|
|
17573
|
-
itemsLength,
|
|
17574
|
-
nextPage,
|
|
17575
|
-
prevPage,
|
|
17576
|
-
setPage,
|
|
17577
|
-
setItemsPerPage
|
|
17578
|
-
};
|
|
17579
|
-
vue.provide(VDataTablePaginationSymbol, data);
|
|
17580
|
-
return data;
|
|
17581
|
-
}
|
|
17582
|
-
function usePagination() {
|
|
17583
|
-
const data = vue.inject(VDataTablePaginationSymbol);
|
|
17584
|
-
if (!data) throw new Error('Missing pagination!');
|
|
17585
|
-
return data;
|
|
17586
|
-
}
|
|
17587
|
-
function usePaginatedItems(options) {
|
|
17588
|
-
const vm = getCurrentInstance('usePaginatedItems');
|
|
17589
|
-
const {
|
|
17590
|
-
items,
|
|
17591
|
-
startIndex,
|
|
17592
|
-
stopIndex,
|
|
17593
|
-
itemsPerPage
|
|
17594
|
-
} = options;
|
|
17595
|
-
const paginatedItems = vue.computed(() => {
|
|
17596
|
-
if (itemsPerPage.value <= 0) return items.value;
|
|
17597
|
-
return items.value.slice(startIndex.value, stopIndex.value);
|
|
17598
|
-
});
|
|
17599
|
-
vue.watch(paginatedItems, val => {
|
|
17600
|
-
vm.emit('update:currentItems', val);
|
|
17601
|
-
});
|
|
17602
|
-
return {
|
|
17603
|
-
paginatedItems
|
|
17604
|
-
};
|
|
17605
|
-
}
|
|
17606
|
-
|
|
17607
|
-
// Composables
|
|
17608
|
-
|
|
17609
|
-
// Types
|
|
17610
|
-
|
|
17611
|
-
const singleSelectStrategy = {
|
|
17612
|
-
showSelectAll: false,
|
|
17613
|
-
allSelected: () => [],
|
|
17614
|
-
select: _ref => {
|
|
17615
|
-
let {
|
|
17616
|
-
items,
|
|
17617
|
-
value
|
|
17618
|
-
} = _ref;
|
|
17619
|
-
return new Set(value ? [vue.toRaw(items[0]?.value)] : []);
|
|
17620
|
-
},
|
|
17621
|
-
selectAll: _ref2 => {
|
|
17622
|
-
let {
|
|
17623
|
-
selected
|
|
17624
|
-
} = _ref2;
|
|
17625
|
-
return selected;
|
|
17626
|
-
}
|
|
17627
|
-
};
|
|
17628
|
-
const pageSelectStrategy = {
|
|
17629
|
-
showSelectAll: true,
|
|
17630
|
-
allSelected: _ref3 => {
|
|
17631
|
-
let {
|
|
17632
|
-
currentPage
|
|
17633
|
-
} = _ref3;
|
|
17634
|
-
return currentPage;
|
|
17635
|
-
},
|
|
17636
|
-
select: _ref4 => {
|
|
17637
|
-
let {
|
|
17638
|
-
items,
|
|
17639
|
-
value,
|
|
17640
|
-
selected
|
|
17641
|
-
} = _ref4;
|
|
17642
|
-
for (const item of items) {
|
|
17643
|
-
if (value) selected.add(vue.toRaw(item.value));else selected.delete(vue.toRaw(item.value));
|
|
17644
|
-
}
|
|
17645
|
-
return selected;
|
|
17646
|
-
},
|
|
17647
|
-
selectAll: _ref5 => {
|
|
17648
|
-
let {
|
|
17649
|
-
value,
|
|
17650
|
-
currentPage,
|
|
17651
|
-
selected
|
|
17652
|
-
} = _ref5;
|
|
17653
|
-
return pageSelectStrategy.select({
|
|
17654
|
-
items: currentPage,
|
|
17655
|
-
value,
|
|
17656
|
-
selected
|
|
17657
|
-
});
|
|
17658
|
-
}
|
|
17659
|
-
};
|
|
17660
|
-
const allSelectStrategy = {
|
|
17661
|
-
showSelectAll: true,
|
|
17662
|
-
allSelected: _ref6 => {
|
|
17663
|
-
let {
|
|
17664
|
-
allItems
|
|
17665
|
-
} = _ref6;
|
|
17666
|
-
return allItems;
|
|
17667
|
-
},
|
|
17668
|
-
select: _ref7 => {
|
|
17669
|
-
let {
|
|
17670
|
-
items,
|
|
17671
|
-
value,
|
|
17672
|
-
selected
|
|
17673
|
-
} = _ref7;
|
|
17674
|
-
for (const item of items) {
|
|
17675
|
-
if (value) selected.add(vue.toRaw(item.value));else selected.delete(vue.toRaw(item.value));
|
|
17676
|
-
}
|
|
17677
|
-
return selected;
|
|
17678
|
-
},
|
|
17679
|
-
selectAll: _ref8 => {
|
|
17680
|
-
let {
|
|
17681
|
-
value,
|
|
17682
|
-
allItems,
|
|
17683
|
-
selected
|
|
17684
|
-
} = _ref8;
|
|
17685
|
-
return allSelectStrategy.select({
|
|
17686
|
-
items: allItems,
|
|
17687
|
-
value,
|
|
17688
|
-
selected
|
|
17689
|
-
});
|
|
17690
|
-
}
|
|
17691
|
-
};
|
|
17692
|
-
const makeDataTableSelectProps = propsFactory({
|
|
17693
|
-
showSelect: Boolean,
|
|
17694
|
-
selectStrategy: {
|
|
17695
|
-
type: [String, Object],
|
|
17696
|
-
default: 'page'
|
|
17697
|
-
},
|
|
17698
|
-
modelValue: {
|
|
17699
|
-
type: Array,
|
|
17700
|
-
default: () => []
|
|
17701
|
-
},
|
|
17702
|
-
valueComparator: {
|
|
17703
|
-
type: Function,
|
|
17704
|
-
default: deepEqual
|
|
17705
|
-
}
|
|
17706
|
-
}, 'DataTable-select');
|
|
17707
|
-
const VDataTableSelectionSymbol = Symbol.for('vuetify:data-table-selection');
|
|
17708
|
-
function provideSelection(props, _ref9) {
|
|
17709
|
-
let {
|
|
17710
|
-
allItems,
|
|
17711
|
-
currentPage
|
|
17712
|
-
} = _ref9;
|
|
17713
|
-
const selected = useProxiedModel(props, 'modelValue', props.modelValue, v => {
|
|
17714
|
-
return new Set(wrapInArray(v).map(v => {
|
|
17715
|
-
return allItems.value.find(item => props.valueComparator(v, item.value))?.value ?? v;
|
|
17716
|
-
}));
|
|
17717
|
-
}, v => {
|
|
17718
|
-
return [...v.values()];
|
|
17719
|
-
});
|
|
17720
|
-
const allSelectable = vue.computed(() => allItems.value.filter(item => item.selectable));
|
|
17721
|
-
const currentPageSelectable = vue.computed(() => currentPage.value.filter(item => item.selectable));
|
|
17722
|
-
const selectStrategy = vue.computed(() => {
|
|
17723
|
-
if (typeof props.selectStrategy === 'object') return props.selectStrategy;
|
|
17724
|
-
switch (props.selectStrategy) {
|
|
17725
|
-
case 'single':
|
|
17726
|
-
return singleSelectStrategy;
|
|
17727
|
-
case 'all':
|
|
17728
|
-
return allSelectStrategy;
|
|
17729
|
-
case 'page':
|
|
17730
|
-
default:
|
|
17731
|
-
return pageSelectStrategy;
|
|
17732
|
-
}
|
|
17733
|
-
});
|
|
17734
|
-
function isSelected(items) {
|
|
17735
|
-
return wrapInArray(items).every(item => selected.value.has(vue.toRaw(item.value)));
|
|
17736
|
-
}
|
|
17737
|
-
function isSomeSelected(items) {
|
|
17738
|
-
return wrapInArray(items).some(item => selected.value.has(vue.toRaw(item.value)));
|
|
17739
|
-
}
|
|
17740
|
-
function select(items, value) {
|
|
17741
|
-
const newSelected = selectStrategy.value.select({
|
|
17742
|
-
items,
|
|
17743
|
-
value,
|
|
17744
|
-
selected: new Set(selected.value)
|
|
17745
|
-
});
|
|
17746
|
-
selected.value = newSelected;
|
|
17747
|
-
}
|
|
17748
|
-
function toggleSelect(item) {
|
|
17749
|
-
const newItem = vue.toRef(item);
|
|
17750
|
-
select([newItem.value], !isSelected([newItem.value]));
|
|
17751
|
-
}
|
|
17752
|
-
function selectAll(value) {
|
|
17753
|
-
const newSelected = selectStrategy.value.selectAll({
|
|
17754
|
-
value,
|
|
17755
|
-
allItems: allSelectable.value,
|
|
17756
|
-
currentPage: currentPageSelectable.value,
|
|
17757
|
-
selected: new Set(selected.value)
|
|
17758
|
-
});
|
|
17759
|
-
selected.value = newSelected;
|
|
17760
|
-
}
|
|
17761
|
-
const someSelected = vue.computed(() => selected.value.size > 0);
|
|
17762
|
-
const allSelected = vue.computed(() => {
|
|
17763
|
-
const items = selectStrategy.value.allSelected({
|
|
17764
|
-
allItems: allSelectable.value,
|
|
17765
|
-
currentPage: currentPageSelectable.value
|
|
17766
|
-
});
|
|
17767
|
-
return !!items.length && isSelected(items);
|
|
17768
|
-
});
|
|
17769
|
-
const data = {
|
|
17770
|
-
toggleSelect,
|
|
17771
|
-
select,
|
|
17772
|
-
selectAll,
|
|
17773
|
-
isSelected,
|
|
17774
|
-
isSomeSelected,
|
|
17775
|
-
someSelected,
|
|
17776
|
-
allSelected,
|
|
17777
|
-
showSelectAll: selectStrategy.value.showSelectAll
|
|
17778
|
-
};
|
|
17779
|
-
vue.provide(VDataTableSelectionSymbol, data);
|
|
17780
|
-
return data;
|
|
17781
|
-
}
|
|
17782
|
-
function useSelection() {
|
|
17783
|
-
const data = vue.inject(VDataTableSelectionSymbol);
|
|
17784
|
-
if (!data) throw new Error('Missing selection!');
|
|
17785
|
-
return data;
|
|
17786
|
-
}
|
|
17787
|
-
|
|
17788
|
-
// Utilities
|
|
17789
|
-
|
|
17790
|
-
// Types
|
|
17791
|
-
|
|
17792
|
-
const firstDay = {
|
|
17793
|
-
'001': 1,
|
|
17794
|
-
AD: 1,
|
|
17795
|
-
AE: 6,
|
|
17796
|
-
AF: 6,
|
|
17797
|
-
AG: 0,
|
|
17798
|
-
AI: 1,
|
|
17799
|
-
AL: 1,
|
|
17800
|
-
AM: 1,
|
|
17801
|
-
AN: 1,
|
|
17802
|
-
AR: 1,
|
|
17803
|
-
AS: 0,
|
|
17804
|
-
AT: 1,
|
|
17805
|
-
AU: 1,
|
|
17806
|
-
AX: 1,
|
|
17807
|
-
AZ: 1,
|
|
17808
|
-
BA: 1,
|
|
17809
|
-
BD: 0,
|
|
17810
|
-
BE: 1,
|
|
17811
|
-
BG: 1,
|
|
17812
|
-
BH: 6,
|
|
17813
|
-
BM: 1,
|
|
17814
|
-
BN: 1,
|
|
17815
|
-
BR: 0,
|
|
17816
|
-
BS: 0,
|
|
17817
|
-
BT: 0,
|
|
17818
|
-
BW: 0,
|
|
17819
|
-
BY: 1,
|
|
17820
|
-
BZ: 0,
|
|
17821
|
-
CA: 0,
|
|
17822
|
-
CH: 1,
|
|
17823
|
-
CL: 1,
|
|
17824
|
-
CM: 1,
|
|
17825
|
-
CN: 1,
|
|
17826
|
-
CO: 0,
|
|
17827
|
-
CR: 1,
|
|
17828
|
-
CY: 1,
|
|
17829
|
-
CZ: 1,
|
|
17830
|
-
DE: 1,
|
|
17831
|
-
DJ: 6,
|
|
17832
|
-
DK: 1,
|
|
17833
|
-
DM: 0,
|
|
17834
|
-
DO: 0,
|
|
17835
|
-
DZ: 6,
|
|
17836
|
-
EC: 1,
|
|
17837
|
-
EE: 1,
|
|
17838
|
-
EG: 6,
|
|
17839
|
-
ES: 1,
|
|
17840
|
-
ET: 0,
|
|
17841
|
-
FI: 1,
|
|
17842
|
-
FJ: 1,
|
|
17843
|
-
FO: 1,
|
|
17844
|
-
FR: 1,
|
|
17845
|
-
GB: 1,
|
|
17846
|
-
'GB-alt-variant': 0,
|
|
17847
|
-
GE: 1,
|
|
17848
|
-
GF: 1,
|
|
17849
|
-
GP: 1,
|
|
17850
|
-
GR: 1,
|
|
17851
|
-
GT: 0,
|
|
17852
|
-
GU: 0,
|
|
17853
|
-
HK: 0,
|
|
17854
|
-
HN: 0,
|
|
17855
|
-
HR: 1,
|
|
17856
|
-
HU: 1,
|
|
17857
|
-
ID: 0,
|
|
17858
|
-
IE: 1,
|
|
17859
|
-
IL: 0,
|
|
17860
|
-
IN: 0,
|
|
17861
|
-
IQ: 6,
|
|
17862
|
-
IR: 6,
|
|
17863
|
-
IS: 1,
|
|
17864
|
-
IT: 1,
|
|
17865
|
-
JM: 0,
|
|
17866
|
-
JO: 6,
|
|
17867
|
-
JP: 0,
|
|
17868
|
-
KE: 0,
|
|
17869
|
-
KG: 1,
|
|
17870
|
-
KH: 0,
|
|
17871
|
-
KR: 0,
|
|
17872
|
-
KW: 6,
|
|
17873
|
-
KZ: 1,
|
|
17874
|
-
LA: 0,
|
|
17875
|
-
LB: 1,
|
|
17876
|
-
LI: 1,
|
|
17877
|
-
LK: 1,
|
|
17878
|
-
LT: 1,
|
|
17879
|
-
LU: 1,
|
|
17880
|
-
LV: 1,
|
|
17881
|
-
LY: 6,
|
|
17882
|
-
MC: 1,
|
|
17883
|
-
MD: 1,
|
|
17884
|
-
ME: 1,
|
|
17885
|
-
MH: 0,
|
|
17886
|
-
MK: 1,
|
|
17887
|
-
MM: 0,
|
|
17888
|
-
MN: 1,
|
|
17889
|
-
MO: 0,
|
|
17890
|
-
MQ: 1,
|
|
17891
|
-
MT: 0,
|
|
17892
|
-
MV: 5,
|
|
17893
|
-
MX: 0,
|
|
17894
|
-
MY: 1,
|
|
17895
|
-
MZ: 0,
|
|
17896
|
-
NI: 0,
|
|
17897
|
-
NL: 1,
|
|
17898
|
-
NO: 1,
|
|
17899
|
-
NP: 0,
|
|
17900
|
-
NZ: 1,
|
|
17901
|
-
OM: 6,
|
|
17902
|
-
PA: 0,
|
|
17903
|
-
PE: 0,
|
|
17904
|
-
PH: 0,
|
|
17905
|
-
PK: 0,
|
|
17906
|
-
PL: 1,
|
|
17907
|
-
PR: 0,
|
|
17908
|
-
PT: 0,
|
|
17909
|
-
PY: 0,
|
|
17910
|
-
QA: 6,
|
|
17911
|
-
RE: 1,
|
|
17912
|
-
RO: 1,
|
|
17913
|
-
RS: 1,
|
|
17914
|
-
RU: 1,
|
|
17915
|
-
SA: 0,
|
|
17916
|
-
SD: 6,
|
|
17917
|
-
SE: 1,
|
|
17918
|
-
SG: 0,
|
|
17919
|
-
SI: 1,
|
|
17920
|
-
SK: 1,
|
|
17921
|
-
SM: 1,
|
|
17922
|
-
SV: 0,
|
|
17923
|
-
SY: 6,
|
|
17924
|
-
TH: 0,
|
|
17925
|
-
TJ: 1,
|
|
17926
|
-
TM: 1,
|
|
17927
|
-
TR: 1,
|
|
17928
|
-
TT: 0,
|
|
17929
|
-
TW: 0,
|
|
17930
|
-
UA: 1,
|
|
17931
|
-
UM: 0,
|
|
17932
|
-
US: 0,
|
|
17933
|
-
UY: 1,
|
|
17934
|
-
UZ: 1,
|
|
17935
|
-
VA: 1,
|
|
17936
|
-
VE: 0,
|
|
17937
|
-
VI: 0,
|
|
17938
|
-
VN: 1,
|
|
17939
|
-
WS: 0,
|
|
17940
|
-
XK: 1,
|
|
17941
|
-
YE: 0,
|
|
17942
|
-
ZA: 0,
|
|
17943
|
-
ZW: 0
|
|
17944
|
-
};
|
|
17945
|
-
function getWeekArray(date, locale) {
|
|
17946
|
-
const weeks = [];
|
|
17947
|
-
let currentWeek = [];
|
|
17948
|
-
const firstDayOfMonth = startOfMonth(date);
|
|
17949
|
-
const lastDayOfMonth = endOfMonth(date);
|
|
17950
|
-
const firstDayWeekIndex = (firstDayOfMonth.getDay() - firstDay[locale.slice(-2).toUpperCase()] + 7) % 7;
|
|
17951
|
-
const lastDayWeekIndex = (lastDayOfMonth.getDay() - firstDay[locale.slice(-2).toUpperCase()] + 7) % 7;
|
|
17952
|
-
for (let i = 0; i < firstDayWeekIndex; i++) {
|
|
17953
|
-
const adjacentDay = new Date(firstDayOfMonth);
|
|
17954
|
-
adjacentDay.setDate(adjacentDay.getDate() - (firstDayWeekIndex - i));
|
|
17955
|
-
currentWeek.push(adjacentDay);
|
|
17956
|
-
}
|
|
17957
|
-
for (let i = 1; i <= lastDayOfMonth.getDate(); i++) {
|
|
17958
|
-
const day = new Date(date.getFullYear(), date.getMonth(), i);
|
|
17959
|
-
|
|
17960
|
-
// Add the day to the current week
|
|
17961
|
-
currentWeek.push(day);
|
|
17962
|
-
|
|
17963
|
-
// If the current week has 7 days, add it to the weeks array and start a new week
|
|
17964
|
-
if (currentWeek.length === 7) {
|
|
17965
|
-
weeks.push(currentWeek);
|
|
17966
|
-
currentWeek = [];
|
|
17967
|
-
}
|
|
17968
|
-
}
|
|
17969
|
-
for (let i = 1; i < 7 - lastDayWeekIndex; i++) {
|
|
17970
|
-
const adjacentDay = new Date(lastDayOfMonth);
|
|
17971
|
-
adjacentDay.setDate(adjacentDay.getDate() + i);
|
|
17972
|
-
currentWeek.push(adjacentDay);
|
|
17973
|
-
}
|
|
17974
|
-
if (currentWeek.length > 0) {
|
|
17975
|
-
weeks.push(currentWeek);
|
|
17976
|
-
}
|
|
17977
|
-
return weeks;
|
|
17978
|
-
}
|
|
17979
|
-
function startOfWeek(date, locale) {
|
|
17980
|
-
const d = new Date(date);
|
|
17981
|
-
while (d.getDay() !== (firstDay[locale.slice(-2).toUpperCase()] ?? 0)) {
|
|
17982
|
-
d.setDate(d.getDate() - 1);
|
|
17983
|
-
}
|
|
17984
|
-
return d;
|
|
17985
|
-
}
|
|
17986
|
-
function endOfWeek(date, locale) {
|
|
17987
|
-
const d = new Date(date);
|
|
17988
|
-
const lastDay = ((firstDay[locale.slice(-2).toUpperCase()] ?? 0) + 6) % 7;
|
|
17989
|
-
while (d.getDay() !== lastDay) {
|
|
17990
|
-
d.setDate(d.getDate() + 1);
|
|
17991
|
-
}
|
|
17992
|
-
return d;
|
|
17993
|
-
}
|
|
17994
|
-
function startOfMonth(date) {
|
|
17995
|
-
return new Date(date.getFullYear(), date.getMonth(), 1);
|
|
17996
|
-
}
|
|
17997
|
-
function endOfMonth(date) {
|
|
17998
|
-
return new Date(date.getFullYear(), date.getMonth() + 1, 0);
|
|
17999
|
-
}
|
|
18000
|
-
function parseLocalDate(value) {
|
|
18001
|
-
const parts = value.split('-').map(Number);
|
|
18002
|
-
|
|
18003
|
-
// new Date() uses local time zone when passing individual date component values
|
|
18004
|
-
return new Date(parts[0], parts[1] - 1, parts[2]);
|
|
18005
|
-
}
|
|
18006
|
-
const _YYYMMDD = /^([12]\d{3}-([1-9]|0[1-9]|1[0-2])-([1-9]|0[1-9]|[12]\d|3[01]))$/;
|
|
18007
|
-
function date(value) {
|
|
18008
|
-
if (value == null) return new Date();
|
|
18009
|
-
if (value instanceof Date) return value;
|
|
18010
|
-
if (typeof value === 'string') {
|
|
18011
|
-
let parsed;
|
|
18012
|
-
if (_YYYMMDD.test(value)) {
|
|
18013
|
-
return parseLocalDate(value);
|
|
18014
|
-
} else {
|
|
18015
|
-
parsed = Date.parse(value);
|
|
18016
|
-
}
|
|
18017
|
-
if (!isNaN(parsed)) return new Date(parsed);
|
|
18018
|
-
}
|
|
18019
|
-
return null;
|
|
18020
|
-
}
|
|
18021
|
-
const sundayJanuarySecond2000 = new Date(2000, 0, 2);
|
|
18022
|
-
function getWeekdays(locale) {
|
|
18023
|
-
const daysFromSunday = firstDay[locale.slice(-2).toUpperCase()];
|
|
18024
|
-
return createRange(7).map(i => {
|
|
18025
|
-
const weekday = new Date(sundayJanuarySecond2000);
|
|
18026
|
-
weekday.setDate(sundayJanuarySecond2000.getDate() + daysFromSunday + i);
|
|
18027
|
-
return new Intl.DateTimeFormat(locale, {
|
|
18028
|
-
weekday: 'narrow'
|
|
18029
|
-
}).format(weekday);
|
|
18030
|
-
});
|
|
18031
|
-
}
|
|
18032
|
-
function format(value, formatString, locale, formats) {
|
|
18033
|
-
const newDate = date(value) ?? new Date();
|
|
18034
|
-
const customFormat = formats?.[formatString];
|
|
18035
|
-
if (typeof customFormat === 'function') {
|
|
18036
|
-
return customFormat(newDate, formatString, locale);
|
|
17526
|
+
function format(value, formatString, locale, formats) {
|
|
17527
|
+
const newDate = date(value) ?? new Date();
|
|
17528
|
+
const customFormat = formats?.[formatString];
|
|
17529
|
+
if (typeof customFormat === 'function') {
|
|
17530
|
+
return customFormat(newDate, formatString, locale);
|
|
18037
17531
|
}
|
|
18038
17532
|
let options = {};
|
|
18039
17533
|
switch (formatString) {
|
|
@@ -18270,6 +17764,7 @@
|
|
|
18270
17764
|
}
|
|
18271
17765
|
function addMonths(date, amount) {
|
|
18272
17766
|
const d = new Date(date);
|
|
17767
|
+
d.setDate(1);
|
|
18273
17768
|
d.setMonth(d.getMonth() + amount);
|
|
18274
17769
|
return d;
|
|
18275
17770
|
}
|
|
@@ -18438,178 +17933,759 @@
|
|
|
18438
17933
|
isEqual(date, comparing) {
|
|
18439
17934
|
return isEqual(date, comparing);
|
|
18440
17935
|
}
|
|
18441
|
-
isValid(date) {
|
|
18442
|
-
return isValid(date);
|
|
17936
|
+
isValid(date) {
|
|
17937
|
+
return isValid(date);
|
|
17938
|
+
}
|
|
17939
|
+
isWithinRange(date, range) {
|
|
17940
|
+
return isWithinRange(date, range);
|
|
17941
|
+
}
|
|
17942
|
+
isAfter(date, comparing) {
|
|
17943
|
+
return isAfter(date, comparing);
|
|
17944
|
+
}
|
|
17945
|
+
isAfterDay(date, comparing) {
|
|
17946
|
+
return isAfterDay(date, comparing);
|
|
17947
|
+
}
|
|
17948
|
+
isBefore(date, comparing) {
|
|
17949
|
+
return !isAfter(date, comparing) && !isEqual(date, comparing);
|
|
17950
|
+
}
|
|
17951
|
+
isSameDay(date, comparing) {
|
|
17952
|
+
return isSameDay(date, comparing);
|
|
17953
|
+
}
|
|
17954
|
+
isSameMonth(date, comparing) {
|
|
17955
|
+
return isSameMonth(date, comparing);
|
|
17956
|
+
}
|
|
17957
|
+
isSameYear(date, comparing) {
|
|
17958
|
+
return isSameYear(date, comparing);
|
|
17959
|
+
}
|
|
17960
|
+
setMinutes(date, count) {
|
|
17961
|
+
return setMinutes(date, count);
|
|
17962
|
+
}
|
|
17963
|
+
setHours(date, count) {
|
|
17964
|
+
return setHours(date, count);
|
|
17965
|
+
}
|
|
17966
|
+
setMonth(date, count) {
|
|
17967
|
+
return setMonth(date, count);
|
|
17968
|
+
}
|
|
17969
|
+
setDate(date, day) {
|
|
17970
|
+
return setDate(date, day);
|
|
17971
|
+
}
|
|
17972
|
+
setYear(date, year) {
|
|
17973
|
+
return setYear(date, year);
|
|
17974
|
+
}
|
|
17975
|
+
getDiff(date, comparing, unit) {
|
|
17976
|
+
return getDiff(date, comparing, unit);
|
|
17977
|
+
}
|
|
17978
|
+
getWeekdays() {
|
|
17979
|
+
return getWeekdays(this.locale);
|
|
17980
|
+
}
|
|
17981
|
+
getYear(date) {
|
|
17982
|
+
return getYear(date);
|
|
17983
|
+
}
|
|
17984
|
+
getMonth(date) {
|
|
17985
|
+
return getMonth(date);
|
|
17986
|
+
}
|
|
17987
|
+
getDate(date) {
|
|
17988
|
+
return getDate(date);
|
|
17989
|
+
}
|
|
17990
|
+
getNextMonth(date) {
|
|
17991
|
+
return getNextMonth(date);
|
|
17992
|
+
}
|
|
17993
|
+
getPreviousMonth(date) {
|
|
17994
|
+
return getPreviousMonth(date);
|
|
17995
|
+
}
|
|
17996
|
+
getHours(date) {
|
|
17997
|
+
return getHours(date);
|
|
17998
|
+
}
|
|
17999
|
+
getMinutes(date) {
|
|
18000
|
+
return getMinutes(date);
|
|
18001
|
+
}
|
|
18002
|
+
startOfDay(date) {
|
|
18003
|
+
return startOfDay(date);
|
|
18004
|
+
}
|
|
18005
|
+
endOfDay(date) {
|
|
18006
|
+
return endOfDay(date);
|
|
18007
|
+
}
|
|
18008
|
+
startOfYear(date) {
|
|
18009
|
+
return startOfYear(date);
|
|
18010
|
+
}
|
|
18011
|
+
endOfYear(date) {
|
|
18012
|
+
return endOfYear(date);
|
|
18013
|
+
}
|
|
18014
|
+
}
|
|
18015
|
+
|
|
18016
|
+
// Composables
|
|
18017
|
+
const DateOptionsSymbol = Symbol.for('vuetify:date-options');
|
|
18018
|
+
const DateAdapterSymbol = Symbol.for('vuetify:date-adapter');
|
|
18019
|
+
function createDate(options, locale) {
|
|
18020
|
+
const _options = mergeDeep({
|
|
18021
|
+
adapter: VuetifyDateAdapter,
|
|
18022
|
+
locale: {
|
|
18023
|
+
af: 'af-ZA',
|
|
18024
|
+
// ar: '', # not the same value for all variants
|
|
18025
|
+
bg: 'bg-BG',
|
|
18026
|
+
ca: 'ca-ES',
|
|
18027
|
+
ckb: '',
|
|
18028
|
+
cs: 'cs-CZ',
|
|
18029
|
+
de: 'de-DE',
|
|
18030
|
+
el: 'el-GR',
|
|
18031
|
+
en: 'en-US',
|
|
18032
|
+
// es: '', # not the same value for all variants
|
|
18033
|
+
et: 'et-EE',
|
|
18034
|
+
fa: 'fa-IR',
|
|
18035
|
+
fi: 'fi-FI',
|
|
18036
|
+
// fr: '', #not the same value for all variants
|
|
18037
|
+
hr: 'hr-HR',
|
|
18038
|
+
hu: 'hu-HU',
|
|
18039
|
+
he: 'he-IL',
|
|
18040
|
+
id: 'id-ID',
|
|
18041
|
+
it: 'it-IT',
|
|
18042
|
+
ja: 'ja-JP',
|
|
18043
|
+
ko: 'ko-KR',
|
|
18044
|
+
lv: 'lv-LV',
|
|
18045
|
+
lt: 'lt-LT',
|
|
18046
|
+
nl: 'nl-NL',
|
|
18047
|
+
no: 'no-NO',
|
|
18048
|
+
pl: 'pl-PL',
|
|
18049
|
+
pt: 'pt-PT',
|
|
18050
|
+
ro: 'ro-RO',
|
|
18051
|
+
ru: 'ru-RU',
|
|
18052
|
+
sk: 'sk-SK',
|
|
18053
|
+
sl: 'sl-SI',
|
|
18054
|
+
srCyrl: 'sr-SP',
|
|
18055
|
+
srLatn: 'sr-SP',
|
|
18056
|
+
sv: 'sv-SE',
|
|
18057
|
+
th: 'th-TH',
|
|
18058
|
+
tr: 'tr-TR',
|
|
18059
|
+
az: 'az-AZ',
|
|
18060
|
+
uk: 'uk-UA',
|
|
18061
|
+
vi: 'vi-VN',
|
|
18062
|
+
zhHans: 'zh-CN',
|
|
18063
|
+
zhHant: 'zh-TW'
|
|
18064
|
+
}
|
|
18065
|
+
}, options);
|
|
18066
|
+
return {
|
|
18067
|
+
options: _options,
|
|
18068
|
+
instance: createInstance(_options, locale)
|
|
18069
|
+
};
|
|
18070
|
+
}
|
|
18071
|
+
function createInstance(options, locale) {
|
|
18072
|
+
const instance = vue.reactive(typeof options.adapter === 'function'
|
|
18073
|
+
// eslint-disable-next-line new-cap
|
|
18074
|
+
? new options.adapter({
|
|
18075
|
+
locale: options.locale[locale.current.value] ?? locale.current.value,
|
|
18076
|
+
formats: options.formats
|
|
18077
|
+
}) : options.adapter);
|
|
18078
|
+
vue.watch(locale.current, value => {
|
|
18079
|
+
instance.locale = options.locale[value] ?? value ?? instance.locale;
|
|
18080
|
+
});
|
|
18081
|
+
return instance;
|
|
18082
|
+
}
|
|
18083
|
+
function useDate() {
|
|
18084
|
+
const options = vue.inject(DateOptionsSymbol);
|
|
18085
|
+
if (!options) throw new Error('[Vuetify] Could not find injected date options');
|
|
18086
|
+
const locale = useLocale();
|
|
18087
|
+
return createInstance(options, locale);
|
|
18088
|
+
}
|
|
18089
|
+
|
|
18090
|
+
// https://stackoverflow.com/questions/274861/how-do-i-calculate-the-week-number-given-a-date/275024#275024
|
|
18091
|
+
function getWeek(adapter, value) {
|
|
18092
|
+
const date = adapter.toJsDate(value);
|
|
18093
|
+
let year = date.getFullYear();
|
|
18094
|
+
let d1w1 = new Date(year, 0, 1);
|
|
18095
|
+
if (date < d1w1) {
|
|
18096
|
+
year = year - 1;
|
|
18097
|
+
d1w1 = new Date(year, 0, 1);
|
|
18098
|
+
} else {
|
|
18099
|
+
const tv = new Date(year + 1, 0, 1);
|
|
18100
|
+
if (date >= tv) {
|
|
18101
|
+
year = year + 1;
|
|
18102
|
+
d1w1 = tv;
|
|
18103
|
+
}
|
|
18104
|
+
}
|
|
18105
|
+
const diffTime = Math.abs(date.getTime() - d1w1.getTime());
|
|
18106
|
+
const diffDays = Math.ceil(diffTime / (1000 * 60 * 60 * 24));
|
|
18107
|
+
return Math.floor(diffDays / 7) + 1;
|
|
18108
|
+
}
|
|
18109
|
+
|
|
18110
|
+
// Types
|
|
18111
|
+
|
|
18112
|
+
const makeVConfirmEditProps = propsFactory({
|
|
18113
|
+
modelValue: null,
|
|
18114
|
+
color: String,
|
|
18115
|
+
cancelText: {
|
|
18116
|
+
type: String,
|
|
18117
|
+
default: '$vuetify.confirmEdit.cancel'
|
|
18118
|
+
},
|
|
18119
|
+
okText: {
|
|
18120
|
+
type: String,
|
|
18121
|
+
default: '$vuetify.confirmEdit.ok'
|
|
18443
18122
|
}
|
|
18444
|
-
|
|
18445
|
-
|
|
18123
|
+
}, 'VConfirmEdit');
|
|
18124
|
+
const VConfirmEdit = genericComponent()({
|
|
18125
|
+
name: 'VConfirmEdit',
|
|
18126
|
+
props: makeVConfirmEditProps(),
|
|
18127
|
+
emits: {
|
|
18128
|
+
cancel: () => true,
|
|
18129
|
+
save: value => true,
|
|
18130
|
+
'update:modelValue': value => true
|
|
18131
|
+
},
|
|
18132
|
+
setup(props, _ref) {
|
|
18133
|
+
let {
|
|
18134
|
+
emit,
|
|
18135
|
+
slots
|
|
18136
|
+
} = _ref;
|
|
18137
|
+
const model = useProxiedModel(props, 'modelValue');
|
|
18138
|
+
const internalModel = vue.ref();
|
|
18139
|
+
vue.watchEffect(() => {
|
|
18140
|
+
internalModel.value = structuredClone(vue.toRaw(model.value));
|
|
18141
|
+
});
|
|
18142
|
+
const {
|
|
18143
|
+
t
|
|
18144
|
+
} = useLocale();
|
|
18145
|
+
const isPristine = vue.computed(() => {
|
|
18146
|
+
return deepEqual(model.value, internalModel.value);
|
|
18147
|
+
});
|
|
18148
|
+
function save() {
|
|
18149
|
+
model.value = internalModel.value;
|
|
18150
|
+
emit('save', internalModel.value);
|
|
18151
|
+
}
|
|
18152
|
+
function cancel() {
|
|
18153
|
+
internalModel.value = structuredClone(vue.toRaw(model.value));
|
|
18154
|
+
emit('cancel');
|
|
18155
|
+
}
|
|
18156
|
+
let actionsUsed = false;
|
|
18157
|
+
useRender(() => {
|
|
18158
|
+
const actions = vue.createVNode(vue.Fragment, null, [vue.createVNode(VBtn, {
|
|
18159
|
+
"disabled": isPristine.value,
|
|
18160
|
+
"variant": "text",
|
|
18161
|
+
"color": props.color,
|
|
18162
|
+
"onClick": cancel,
|
|
18163
|
+
"text": t(props.cancelText)
|
|
18164
|
+
}, null), vue.createVNode(VBtn, {
|
|
18165
|
+
"disabled": isPristine.value,
|
|
18166
|
+
"variant": "text",
|
|
18167
|
+
"color": props.color,
|
|
18168
|
+
"onClick": save,
|
|
18169
|
+
"text": t(props.okText)
|
|
18170
|
+
}, null)]);
|
|
18171
|
+
return vue.createVNode(vue.Fragment, null, [slots.default?.({
|
|
18172
|
+
model: internalModel,
|
|
18173
|
+
get actions() {
|
|
18174
|
+
actionsUsed = true;
|
|
18175
|
+
return actions;
|
|
18176
|
+
}
|
|
18177
|
+
}), !actionsUsed && actions]);
|
|
18178
|
+
});
|
|
18446
18179
|
}
|
|
18447
|
-
|
|
18448
|
-
|
|
18180
|
+
});
|
|
18181
|
+
|
|
18182
|
+
// Composables
|
|
18183
|
+
|
|
18184
|
+
// Types
|
|
18185
|
+
|
|
18186
|
+
const makeDataTableExpandProps = propsFactory({
|
|
18187
|
+
expandOnClick: Boolean,
|
|
18188
|
+
showExpand: Boolean,
|
|
18189
|
+
expanded: {
|
|
18190
|
+
type: Array,
|
|
18191
|
+
default: () => []
|
|
18449
18192
|
}
|
|
18450
|
-
|
|
18451
|
-
|
|
18193
|
+
}, 'DataTable-expand');
|
|
18194
|
+
const VDataTableExpandedKey = Symbol.for('vuetify:datatable:expanded');
|
|
18195
|
+
function provideExpanded(props) {
|
|
18196
|
+
const expandOnClick = vue.toRef(props, 'expandOnClick');
|
|
18197
|
+
const expanded = useProxiedModel(props, 'expanded', props.expanded, v => {
|
|
18198
|
+
return new Set(v);
|
|
18199
|
+
}, v => {
|
|
18200
|
+
return [...v.values()];
|
|
18201
|
+
});
|
|
18202
|
+
function expand(item, value) {
|
|
18203
|
+
const newExpanded = new Set(expanded.value);
|
|
18204
|
+
if (!value) {
|
|
18205
|
+
newExpanded.delete(item.value);
|
|
18206
|
+
} else {
|
|
18207
|
+
newExpanded.add(item.value);
|
|
18208
|
+
}
|
|
18209
|
+
expanded.value = newExpanded;
|
|
18452
18210
|
}
|
|
18453
|
-
|
|
18454
|
-
return
|
|
18211
|
+
function isExpanded(item) {
|
|
18212
|
+
return expanded.value.has(item.value);
|
|
18455
18213
|
}
|
|
18456
|
-
|
|
18457
|
-
|
|
18214
|
+
function toggleExpand(item) {
|
|
18215
|
+
expand(item, !isExpanded(item));
|
|
18458
18216
|
}
|
|
18459
|
-
|
|
18460
|
-
|
|
18217
|
+
const data = {
|
|
18218
|
+
expand,
|
|
18219
|
+
expanded,
|
|
18220
|
+
expandOnClick,
|
|
18221
|
+
isExpanded,
|
|
18222
|
+
toggleExpand
|
|
18223
|
+
};
|
|
18224
|
+
vue.provide(VDataTableExpandedKey, data);
|
|
18225
|
+
return data;
|
|
18226
|
+
}
|
|
18227
|
+
function useExpanded() {
|
|
18228
|
+
const data = vue.inject(VDataTableExpandedKey);
|
|
18229
|
+
if (!data) throw new Error('foo');
|
|
18230
|
+
return data;
|
|
18231
|
+
}
|
|
18232
|
+
|
|
18233
|
+
// Composables
|
|
18234
|
+
|
|
18235
|
+
// Types
|
|
18236
|
+
|
|
18237
|
+
const makeDataTableGroupProps = propsFactory({
|
|
18238
|
+
groupBy: {
|
|
18239
|
+
type: Array,
|
|
18240
|
+
default: () => []
|
|
18461
18241
|
}
|
|
18462
|
-
|
|
18463
|
-
|
|
18242
|
+
}, 'DataTable-group');
|
|
18243
|
+
const VDataTableGroupSymbol = Symbol.for('vuetify:data-table-group');
|
|
18244
|
+
function createGroupBy(props) {
|
|
18245
|
+
const groupBy = useProxiedModel(props, 'groupBy');
|
|
18246
|
+
return {
|
|
18247
|
+
groupBy
|
|
18248
|
+
};
|
|
18249
|
+
}
|
|
18250
|
+
function provideGroupBy(options) {
|
|
18251
|
+
const {
|
|
18252
|
+
groupBy,
|
|
18253
|
+
sortBy
|
|
18254
|
+
} = options;
|
|
18255
|
+
const opened = vue.ref(new Set());
|
|
18256
|
+
const sortByWithGroups = vue.computed(() => {
|
|
18257
|
+
return groupBy.value.map(val => ({
|
|
18258
|
+
...val,
|
|
18259
|
+
order: val.order ?? false
|
|
18260
|
+
})).concat(sortBy.value);
|
|
18261
|
+
});
|
|
18262
|
+
function isGroupOpen(group) {
|
|
18263
|
+
return opened.value.has(group.id);
|
|
18464
18264
|
}
|
|
18465
|
-
|
|
18466
|
-
|
|
18265
|
+
function toggleGroup(group) {
|
|
18266
|
+
const newOpened = new Set(opened.value);
|
|
18267
|
+
if (!isGroupOpen(group)) newOpened.add(group.id);else newOpened.delete(group.id);
|
|
18268
|
+
opened.value = newOpened;
|
|
18467
18269
|
}
|
|
18468
|
-
|
|
18469
|
-
|
|
18270
|
+
function extractRows(items) {
|
|
18271
|
+
function dive(group) {
|
|
18272
|
+
const arr = [];
|
|
18273
|
+
for (const item of group.items) {
|
|
18274
|
+
if ('type' in item && item.type === 'group') {
|
|
18275
|
+
arr.push(...dive(item));
|
|
18276
|
+
} else {
|
|
18277
|
+
arr.push(item);
|
|
18278
|
+
}
|
|
18279
|
+
}
|
|
18280
|
+
return arr;
|
|
18281
|
+
}
|
|
18282
|
+
return dive({
|
|
18283
|
+
type: 'group',
|
|
18284
|
+
items,
|
|
18285
|
+
id: 'dummy',
|
|
18286
|
+
key: 'dummy',
|
|
18287
|
+
value: 'dummy',
|
|
18288
|
+
depth: 0
|
|
18289
|
+
});
|
|
18470
18290
|
}
|
|
18471
|
-
|
|
18472
|
-
|
|
18291
|
+
|
|
18292
|
+
// onBeforeMount(() => {
|
|
18293
|
+
// for (const key of groupedItems.value.keys()) {
|
|
18294
|
+
// opened.value.add(key)
|
|
18295
|
+
// }
|
|
18296
|
+
// })
|
|
18297
|
+
|
|
18298
|
+
const data = {
|
|
18299
|
+
sortByWithGroups,
|
|
18300
|
+
toggleGroup,
|
|
18301
|
+
opened,
|
|
18302
|
+
groupBy,
|
|
18303
|
+
extractRows,
|
|
18304
|
+
isGroupOpen
|
|
18305
|
+
};
|
|
18306
|
+
vue.provide(VDataTableGroupSymbol, data);
|
|
18307
|
+
return data;
|
|
18308
|
+
}
|
|
18309
|
+
function useGroupBy() {
|
|
18310
|
+
const data = vue.inject(VDataTableGroupSymbol);
|
|
18311
|
+
if (!data) throw new Error('Missing group!');
|
|
18312
|
+
return data;
|
|
18313
|
+
}
|
|
18314
|
+
function groupItemsByProperty(items, groupBy) {
|
|
18315
|
+
if (!items.length) return [];
|
|
18316
|
+
const groups = new Map();
|
|
18317
|
+
for (const item of items) {
|
|
18318
|
+
const value = getObjectValueByPath(item.raw, groupBy);
|
|
18319
|
+
if (!groups.has(value)) {
|
|
18320
|
+
groups.set(value, []);
|
|
18321
|
+
}
|
|
18322
|
+
groups.get(value).push(item);
|
|
18473
18323
|
}
|
|
18474
|
-
|
|
18475
|
-
|
|
18324
|
+
return groups;
|
|
18325
|
+
}
|
|
18326
|
+
function groupItems(items, groupBy) {
|
|
18327
|
+
let depth = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0;
|
|
18328
|
+
let prefix = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 'root';
|
|
18329
|
+
if (!groupBy.length) return [];
|
|
18330
|
+
const groupedItems = groupItemsByProperty(items, groupBy[0]);
|
|
18331
|
+
const groups = [];
|
|
18332
|
+
const rest = groupBy.slice(1);
|
|
18333
|
+
groupedItems.forEach((items, value) => {
|
|
18334
|
+
const key = groupBy[0];
|
|
18335
|
+
const id = `${prefix}_${key}_${value}`;
|
|
18336
|
+
groups.push({
|
|
18337
|
+
depth,
|
|
18338
|
+
id,
|
|
18339
|
+
key,
|
|
18340
|
+
value,
|
|
18341
|
+
items: rest.length ? groupItems(items, rest, depth + 1, id) : items,
|
|
18342
|
+
type: 'group'
|
|
18343
|
+
});
|
|
18344
|
+
});
|
|
18345
|
+
return groups;
|
|
18346
|
+
}
|
|
18347
|
+
function flattenItems(items, opened) {
|
|
18348
|
+
const flatItems = [];
|
|
18349
|
+
for (const item of items) {
|
|
18350
|
+
// TODO: make this better
|
|
18351
|
+
if ('type' in item && item.type === 'group') {
|
|
18352
|
+
if (item.value != null) {
|
|
18353
|
+
flatItems.push(item);
|
|
18354
|
+
}
|
|
18355
|
+
if (opened.has(item.id) || item.value == null) {
|
|
18356
|
+
flatItems.push(...flattenItems(item.items, opened));
|
|
18357
|
+
}
|
|
18358
|
+
} else {
|
|
18359
|
+
flatItems.push(item);
|
|
18360
|
+
}
|
|
18476
18361
|
}
|
|
18477
|
-
|
|
18478
|
-
|
|
18362
|
+
return flatItems;
|
|
18363
|
+
}
|
|
18364
|
+
function useGroupedItems(items, groupBy, opened) {
|
|
18365
|
+
const flatItems = vue.computed(() => {
|
|
18366
|
+
if (!groupBy.value.length) return items.value;
|
|
18367
|
+
const groupedItems = groupItems(items.value, groupBy.value.map(item => item.key));
|
|
18368
|
+
return flattenItems(groupedItems, opened.value);
|
|
18369
|
+
});
|
|
18370
|
+
return {
|
|
18371
|
+
flatItems
|
|
18372
|
+
};
|
|
18373
|
+
}
|
|
18374
|
+
|
|
18375
|
+
// Utilities
|
|
18376
|
+
|
|
18377
|
+
// Types
|
|
18378
|
+
|
|
18379
|
+
function useOptions(_ref) {
|
|
18380
|
+
let {
|
|
18381
|
+
page,
|
|
18382
|
+
itemsPerPage,
|
|
18383
|
+
sortBy,
|
|
18384
|
+
groupBy,
|
|
18385
|
+
search
|
|
18386
|
+
} = _ref;
|
|
18387
|
+
const vm = getCurrentInstance('VDataTable');
|
|
18388
|
+
const options = vue.computed(() => ({
|
|
18389
|
+
page: page.value,
|
|
18390
|
+
itemsPerPage: itemsPerPage.value,
|
|
18391
|
+
sortBy: sortBy.value,
|
|
18392
|
+
groupBy: groupBy.value,
|
|
18393
|
+
search: search.value
|
|
18394
|
+
}));
|
|
18395
|
+
let oldOptions = null;
|
|
18396
|
+
vue.watch(options, () => {
|
|
18397
|
+
if (deepEqual(oldOptions, options.value)) return;
|
|
18398
|
+
|
|
18399
|
+
// Reset page when searching
|
|
18400
|
+
if (oldOptions && oldOptions.search !== options.value.search) {
|
|
18401
|
+
page.value = 1;
|
|
18402
|
+
}
|
|
18403
|
+
vm.emit('update:options', options.value);
|
|
18404
|
+
oldOptions = options.value;
|
|
18405
|
+
}, {
|
|
18406
|
+
deep: true,
|
|
18407
|
+
immediate: true
|
|
18408
|
+
});
|
|
18409
|
+
}
|
|
18410
|
+
|
|
18411
|
+
// Composables
|
|
18412
|
+
|
|
18413
|
+
// Types
|
|
18414
|
+
|
|
18415
|
+
const makeDataTablePaginateProps = propsFactory({
|
|
18416
|
+
page: {
|
|
18417
|
+
type: [Number, String],
|
|
18418
|
+
default: 1
|
|
18419
|
+
},
|
|
18420
|
+
itemsPerPage: {
|
|
18421
|
+
type: [Number, String],
|
|
18422
|
+
default: 10
|
|
18479
18423
|
}
|
|
18480
|
-
|
|
18481
|
-
|
|
18424
|
+
}, 'DataTable-paginate');
|
|
18425
|
+
const VDataTablePaginationSymbol = Symbol.for('vuetify:data-table-pagination');
|
|
18426
|
+
function createPagination(props) {
|
|
18427
|
+
const page = useProxiedModel(props, 'page', undefined, value => +(value ?? 1));
|
|
18428
|
+
const itemsPerPage = useProxiedModel(props, 'itemsPerPage', undefined, value => +(value ?? 10));
|
|
18429
|
+
return {
|
|
18430
|
+
page,
|
|
18431
|
+
itemsPerPage
|
|
18432
|
+
};
|
|
18433
|
+
}
|
|
18434
|
+
function providePagination(options) {
|
|
18435
|
+
const {
|
|
18436
|
+
page,
|
|
18437
|
+
itemsPerPage,
|
|
18438
|
+
itemsLength
|
|
18439
|
+
} = options;
|
|
18440
|
+
const startIndex = vue.computed(() => {
|
|
18441
|
+
if (itemsPerPage.value === -1) return 0;
|
|
18442
|
+
return itemsPerPage.value * (page.value - 1);
|
|
18443
|
+
});
|
|
18444
|
+
const stopIndex = vue.computed(() => {
|
|
18445
|
+
if (itemsPerPage.value === -1) return itemsLength.value;
|
|
18446
|
+
return Math.min(itemsLength.value, startIndex.value + itemsPerPage.value);
|
|
18447
|
+
});
|
|
18448
|
+
const pageCount = vue.computed(() => {
|
|
18449
|
+
if (itemsPerPage.value === -1 || itemsLength.value === 0) return 1;
|
|
18450
|
+
return Math.ceil(itemsLength.value / itemsPerPage.value);
|
|
18451
|
+
});
|
|
18452
|
+
vue.watchEffect(() => {
|
|
18453
|
+
if (page.value > pageCount.value) {
|
|
18454
|
+
page.value = pageCount.value;
|
|
18455
|
+
}
|
|
18456
|
+
});
|
|
18457
|
+
function setItemsPerPage(value) {
|
|
18458
|
+
itemsPerPage.value = value;
|
|
18459
|
+
page.value = 1;
|
|
18482
18460
|
}
|
|
18483
|
-
|
|
18484
|
-
|
|
18461
|
+
function nextPage() {
|
|
18462
|
+
page.value = clamp(page.value + 1, 1, pageCount.value);
|
|
18485
18463
|
}
|
|
18486
|
-
|
|
18487
|
-
|
|
18464
|
+
function prevPage() {
|
|
18465
|
+
page.value = clamp(page.value - 1, 1, pageCount.value);
|
|
18488
18466
|
}
|
|
18489
|
-
|
|
18490
|
-
|
|
18467
|
+
function setPage(value) {
|
|
18468
|
+
page.value = clamp(value, 1, pageCount.value);
|
|
18491
18469
|
}
|
|
18492
|
-
|
|
18493
|
-
|
|
18470
|
+
const data = {
|
|
18471
|
+
page,
|
|
18472
|
+
itemsPerPage,
|
|
18473
|
+
startIndex,
|
|
18474
|
+
stopIndex,
|
|
18475
|
+
pageCount,
|
|
18476
|
+
itemsLength,
|
|
18477
|
+
nextPage,
|
|
18478
|
+
prevPage,
|
|
18479
|
+
setPage,
|
|
18480
|
+
setItemsPerPage
|
|
18481
|
+
};
|
|
18482
|
+
vue.provide(VDataTablePaginationSymbol, data);
|
|
18483
|
+
return data;
|
|
18484
|
+
}
|
|
18485
|
+
function usePagination() {
|
|
18486
|
+
const data = vue.inject(VDataTablePaginationSymbol);
|
|
18487
|
+
if (!data) throw new Error('Missing pagination!');
|
|
18488
|
+
return data;
|
|
18489
|
+
}
|
|
18490
|
+
function usePaginatedItems(options) {
|
|
18491
|
+
const vm = getCurrentInstance('usePaginatedItems');
|
|
18492
|
+
const {
|
|
18493
|
+
items,
|
|
18494
|
+
startIndex,
|
|
18495
|
+
stopIndex,
|
|
18496
|
+
itemsPerPage
|
|
18497
|
+
} = options;
|
|
18498
|
+
const paginatedItems = vue.computed(() => {
|
|
18499
|
+
if (itemsPerPage.value <= 0) return items.value;
|
|
18500
|
+
return items.value.slice(startIndex.value, stopIndex.value);
|
|
18501
|
+
});
|
|
18502
|
+
vue.watch(paginatedItems, val => {
|
|
18503
|
+
vm.emit('update:currentItems', val);
|
|
18504
|
+
});
|
|
18505
|
+
return {
|
|
18506
|
+
paginatedItems
|
|
18507
|
+
};
|
|
18508
|
+
}
|
|
18509
|
+
|
|
18510
|
+
// Composables
|
|
18511
|
+
|
|
18512
|
+
// Types
|
|
18513
|
+
|
|
18514
|
+
const singleSelectStrategy = {
|
|
18515
|
+
showSelectAll: false,
|
|
18516
|
+
allSelected: () => [],
|
|
18517
|
+
select: _ref => {
|
|
18518
|
+
let {
|
|
18519
|
+
items,
|
|
18520
|
+
value
|
|
18521
|
+
} = _ref;
|
|
18522
|
+
return new Set(value ? [vue.toRaw(items[0]?.value)] : []);
|
|
18523
|
+
},
|
|
18524
|
+
selectAll: _ref2 => {
|
|
18525
|
+
let {
|
|
18526
|
+
selected
|
|
18527
|
+
} = _ref2;
|
|
18528
|
+
return selected;
|
|
18494
18529
|
}
|
|
18495
|
-
|
|
18496
|
-
|
|
18530
|
+
};
|
|
18531
|
+
const pageSelectStrategy = {
|
|
18532
|
+
showSelectAll: true,
|
|
18533
|
+
allSelected: _ref3 => {
|
|
18534
|
+
let {
|
|
18535
|
+
currentPage
|
|
18536
|
+
} = _ref3;
|
|
18537
|
+
return currentPage;
|
|
18538
|
+
},
|
|
18539
|
+
select: _ref4 => {
|
|
18540
|
+
let {
|
|
18541
|
+
items,
|
|
18542
|
+
value,
|
|
18543
|
+
selected
|
|
18544
|
+
} = _ref4;
|
|
18545
|
+
for (const item of items) {
|
|
18546
|
+
if (value) selected.add(vue.toRaw(item.value));else selected.delete(vue.toRaw(item.value));
|
|
18547
|
+
}
|
|
18548
|
+
return selected;
|
|
18549
|
+
},
|
|
18550
|
+
selectAll: _ref5 => {
|
|
18551
|
+
let {
|
|
18552
|
+
value,
|
|
18553
|
+
currentPage,
|
|
18554
|
+
selected
|
|
18555
|
+
} = _ref5;
|
|
18556
|
+
return pageSelectStrategy.select({
|
|
18557
|
+
items: currentPage,
|
|
18558
|
+
value,
|
|
18559
|
+
selected
|
|
18560
|
+
});
|
|
18497
18561
|
}
|
|
18498
|
-
|
|
18499
|
-
|
|
18562
|
+
};
|
|
18563
|
+
const allSelectStrategy = {
|
|
18564
|
+
showSelectAll: true,
|
|
18565
|
+
allSelected: _ref6 => {
|
|
18566
|
+
let {
|
|
18567
|
+
allItems
|
|
18568
|
+
} = _ref6;
|
|
18569
|
+
return allItems;
|
|
18570
|
+
},
|
|
18571
|
+
select: _ref7 => {
|
|
18572
|
+
let {
|
|
18573
|
+
items,
|
|
18574
|
+
value,
|
|
18575
|
+
selected
|
|
18576
|
+
} = _ref7;
|
|
18577
|
+
for (const item of items) {
|
|
18578
|
+
if (value) selected.add(vue.toRaw(item.value));else selected.delete(vue.toRaw(item.value));
|
|
18579
|
+
}
|
|
18580
|
+
return selected;
|
|
18581
|
+
},
|
|
18582
|
+
selectAll: _ref8 => {
|
|
18583
|
+
let {
|
|
18584
|
+
value,
|
|
18585
|
+
allItems,
|
|
18586
|
+
selected
|
|
18587
|
+
} = _ref8;
|
|
18588
|
+
return allSelectStrategy.select({
|
|
18589
|
+
items: allItems,
|
|
18590
|
+
value,
|
|
18591
|
+
selected
|
|
18592
|
+
});
|
|
18500
18593
|
}
|
|
18501
|
-
|
|
18502
|
-
|
|
18594
|
+
};
|
|
18595
|
+
const makeDataTableSelectProps = propsFactory({
|
|
18596
|
+
showSelect: Boolean,
|
|
18597
|
+
selectStrategy: {
|
|
18598
|
+
type: [String, Object],
|
|
18599
|
+
default: 'page'
|
|
18600
|
+
},
|
|
18601
|
+
modelValue: {
|
|
18602
|
+
type: Array,
|
|
18603
|
+
default: () => []
|
|
18604
|
+
},
|
|
18605
|
+
valueComparator: {
|
|
18606
|
+
type: Function,
|
|
18607
|
+
default: deepEqual
|
|
18503
18608
|
}
|
|
18504
|
-
|
|
18505
|
-
|
|
18609
|
+
}, 'DataTable-select');
|
|
18610
|
+
const VDataTableSelectionSymbol = Symbol.for('vuetify:data-table-selection');
|
|
18611
|
+
function provideSelection(props, _ref9) {
|
|
18612
|
+
let {
|
|
18613
|
+
allItems,
|
|
18614
|
+
currentPage
|
|
18615
|
+
} = _ref9;
|
|
18616
|
+
const selected = useProxiedModel(props, 'modelValue', props.modelValue, v => {
|
|
18617
|
+
return new Set(wrapInArray(v).map(v => {
|
|
18618
|
+
return allItems.value.find(item => props.valueComparator(v, item.value))?.value ?? v;
|
|
18619
|
+
}));
|
|
18620
|
+
}, v => {
|
|
18621
|
+
return [...v.values()];
|
|
18622
|
+
});
|
|
18623
|
+
const allSelectable = vue.computed(() => allItems.value.filter(item => item.selectable));
|
|
18624
|
+
const currentPageSelectable = vue.computed(() => currentPage.value.filter(item => item.selectable));
|
|
18625
|
+
const selectStrategy = vue.computed(() => {
|
|
18626
|
+
if (typeof props.selectStrategy === 'object') return props.selectStrategy;
|
|
18627
|
+
switch (props.selectStrategy) {
|
|
18628
|
+
case 'single':
|
|
18629
|
+
return singleSelectStrategy;
|
|
18630
|
+
case 'all':
|
|
18631
|
+
return allSelectStrategy;
|
|
18632
|
+
case 'page':
|
|
18633
|
+
default:
|
|
18634
|
+
return pageSelectStrategy;
|
|
18635
|
+
}
|
|
18636
|
+
});
|
|
18637
|
+
function isSelected(items) {
|
|
18638
|
+
return wrapInArray(items).every(item => selected.value.has(vue.toRaw(item.value)));
|
|
18506
18639
|
}
|
|
18507
|
-
|
|
18508
|
-
return
|
|
18640
|
+
function isSomeSelected(items) {
|
|
18641
|
+
return wrapInArray(items).some(item => selected.value.has(vue.toRaw(item.value)));
|
|
18509
18642
|
}
|
|
18510
|
-
|
|
18511
|
-
|
|
18643
|
+
function select(items, value) {
|
|
18644
|
+
const newSelected = selectStrategy.value.select({
|
|
18645
|
+
items,
|
|
18646
|
+
value,
|
|
18647
|
+
selected: new Set(selected.value)
|
|
18648
|
+
});
|
|
18649
|
+
selected.value = newSelected;
|
|
18512
18650
|
}
|
|
18513
|
-
|
|
18514
|
-
|
|
18651
|
+
function toggleSelect(item) {
|
|
18652
|
+
const newItem = vue.toRef(item);
|
|
18653
|
+
select([newItem.value], !isSelected([newItem.value]));
|
|
18515
18654
|
}
|
|
18516
|
-
|
|
18517
|
-
|
|
18655
|
+
function selectAll(value) {
|
|
18656
|
+
const newSelected = selectStrategy.value.selectAll({
|
|
18657
|
+
value,
|
|
18658
|
+
allItems: allSelectable.value,
|
|
18659
|
+
currentPage: currentPageSelectable.value,
|
|
18660
|
+
selected: new Set(selected.value)
|
|
18661
|
+
});
|
|
18662
|
+
selected.value = newSelected;
|
|
18518
18663
|
}
|
|
18519
|
-
|
|
18520
|
-
|
|
18521
|
-
|
|
18522
|
-
|
|
18523
|
-
|
|
18524
|
-
|
|
18525
|
-
|
|
18526
|
-
adapter: VuetifyDateAdapter,
|
|
18527
|
-
locale: {
|
|
18528
|
-
af: 'af-ZA',
|
|
18529
|
-
// ar: '', # not the same value for all variants
|
|
18530
|
-
bg: 'bg-BG',
|
|
18531
|
-
ca: 'ca-ES',
|
|
18532
|
-
ckb: '',
|
|
18533
|
-
cs: 'cs-CZ',
|
|
18534
|
-
de: 'de-DE',
|
|
18535
|
-
el: 'el-GR',
|
|
18536
|
-
en: 'en-US',
|
|
18537
|
-
// es: '', # not the same value for all variants
|
|
18538
|
-
et: 'et-EE',
|
|
18539
|
-
fa: 'fa-IR',
|
|
18540
|
-
fi: 'fi-FI',
|
|
18541
|
-
// fr: '', #not the same value for all variants
|
|
18542
|
-
hr: 'hr-HR',
|
|
18543
|
-
hu: 'hu-HU',
|
|
18544
|
-
he: 'he-IL',
|
|
18545
|
-
id: 'id-ID',
|
|
18546
|
-
it: 'it-IT',
|
|
18547
|
-
ja: 'ja-JP',
|
|
18548
|
-
ko: 'ko-KR',
|
|
18549
|
-
lv: 'lv-LV',
|
|
18550
|
-
lt: 'lt-LT',
|
|
18551
|
-
nl: 'nl-NL',
|
|
18552
|
-
no: 'no-NO',
|
|
18553
|
-
pl: 'pl-PL',
|
|
18554
|
-
pt: 'pt-PT',
|
|
18555
|
-
ro: 'ro-RO',
|
|
18556
|
-
ru: 'ru-RU',
|
|
18557
|
-
sk: 'sk-SK',
|
|
18558
|
-
sl: 'sl-SI',
|
|
18559
|
-
srCyrl: 'sr-SP',
|
|
18560
|
-
srLatn: 'sr-SP',
|
|
18561
|
-
sv: 'sv-SE',
|
|
18562
|
-
th: 'th-TH',
|
|
18563
|
-
tr: 'tr-TR',
|
|
18564
|
-
az: 'az-AZ',
|
|
18565
|
-
uk: 'uk-UA',
|
|
18566
|
-
vi: 'vi-VN',
|
|
18567
|
-
zhHans: 'zh-CN',
|
|
18568
|
-
zhHant: 'zh-TW'
|
|
18569
|
-
}
|
|
18570
|
-
}, options);
|
|
18571
|
-
return {
|
|
18572
|
-
options: _options,
|
|
18573
|
-
instance: createInstance(_options, locale)
|
|
18574
|
-
};
|
|
18575
|
-
}
|
|
18576
|
-
function createInstance(options, locale) {
|
|
18577
|
-
const instance = vue.reactive(typeof options.adapter === 'function'
|
|
18578
|
-
// eslint-disable-next-line new-cap
|
|
18579
|
-
? new options.adapter({
|
|
18580
|
-
locale: options.locale[locale.current.value] ?? locale.current.value,
|
|
18581
|
-
formats: options.formats
|
|
18582
|
-
}) : options.adapter);
|
|
18583
|
-
vue.watch(locale.current, value => {
|
|
18584
|
-
instance.locale = options.locale[value] ?? value ?? instance.locale;
|
|
18664
|
+
const someSelected = vue.computed(() => selected.value.size > 0);
|
|
18665
|
+
const allSelected = vue.computed(() => {
|
|
18666
|
+
const items = selectStrategy.value.allSelected({
|
|
18667
|
+
allItems: allSelectable.value,
|
|
18668
|
+
currentPage: currentPageSelectable.value
|
|
18669
|
+
});
|
|
18670
|
+
return !!items.length && isSelected(items);
|
|
18585
18671
|
});
|
|
18586
|
-
|
|
18587
|
-
|
|
18588
|
-
|
|
18589
|
-
|
|
18590
|
-
|
|
18591
|
-
|
|
18592
|
-
|
|
18672
|
+
const data = {
|
|
18673
|
+
toggleSelect,
|
|
18674
|
+
select,
|
|
18675
|
+
selectAll,
|
|
18676
|
+
isSelected,
|
|
18677
|
+
isSomeSelected,
|
|
18678
|
+
someSelected,
|
|
18679
|
+
allSelected,
|
|
18680
|
+
showSelectAll: selectStrategy.value.showSelectAll
|
|
18681
|
+
};
|
|
18682
|
+
vue.provide(VDataTableSelectionSymbol, data);
|
|
18683
|
+
return data;
|
|
18593
18684
|
}
|
|
18594
|
-
|
|
18595
|
-
|
|
18596
|
-
|
|
18597
|
-
|
|
18598
|
-
let year = date.getFullYear();
|
|
18599
|
-
let d1w1 = new Date(year, 0, 1);
|
|
18600
|
-
if (date < d1w1) {
|
|
18601
|
-
year = year - 1;
|
|
18602
|
-
d1w1 = new Date(year, 0, 1);
|
|
18603
|
-
} else {
|
|
18604
|
-
const tv = new Date(year + 1, 0, 1);
|
|
18605
|
-
if (date >= tv) {
|
|
18606
|
-
year = year + 1;
|
|
18607
|
-
d1w1 = tv;
|
|
18608
|
-
}
|
|
18609
|
-
}
|
|
18610
|
-
const diffTime = Math.abs(date.getTime() - d1w1.getTime());
|
|
18611
|
-
const diffDays = Math.ceil(diffTime / (1000 * 60 * 60 * 24));
|
|
18612
|
-
return Math.floor(diffDays / 7) + 1;
|
|
18685
|
+
function useSelection() {
|
|
18686
|
+
const data = vue.inject(VDataTableSelectionSymbol);
|
|
18687
|
+
if (!data) throw new Error('Missing selection!');
|
|
18688
|
+
return data;
|
|
18613
18689
|
}
|
|
18614
18690
|
|
|
18615
18691
|
// Composables
|
|
@@ -19898,6 +19974,8 @@
|
|
|
19898
19974
|
return columns.value.filter(column => column?.sortable);
|
|
19899
19975
|
});
|
|
19900
19976
|
const appendIcon = vue.computed(() => {
|
|
19977
|
+
const showSelectColumn = columns.value.find(column => column.key === 'data-table-select');
|
|
19978
|
+
if (showSelectColumn == null) return;
|
|
19901
19979
|
return allSelected.value ? '$checkboxOn' : someSelected.value ? '$checkboxIndeterminate' : '$checkboxOff';
|
|
19902
19980
|
});
|
|
19903
19981
|
return vue.createVNode(VDataTableColumn, vue.mergeProps({
|
|
@@ -22023,9 +22101,9 @@
|
|
|
22023
22101
|
});
|
|
22024
22102
|
const text = vue.computed(() => {
|
|
22025
22103
|
let date = adapter.date();
|
|
22026
|
-
date = adapter.setYear(date, year.value);
|
|
22027
|
-
date = adapter.setMonth(date, month.value);
|
|
22028
22104
|
date = adapter.setDate(date, 1);
|
|
22105
|
+
date = adapter.setMonth(date, month.value);
|
|
22106
|
+
date = adapter.setYear(date, year.value);
|
|
22029
22107
|
return adapter.format(date, 'monthAndYear');
|
|
22030
22108
|
});
|
|
22031
22109
|
// const headerIcon = computed(() => props.inputMode === 'calendar' ? props.keyboardIcon : props.calendarIcon)
|
|
@@ -22195,6 +22273,141 @@
|
|
|
22195
22273
|
}
|
|
22196
22274
|
});
|
|
22197
22275
|
|
|
22276
|
+
// Types
|
|
22277
|
+
|
|
22278
|
+
// Types
|
|
22279
|
+
|
|
22280
|
+
const makeVEmptyStateProps = propsFactory({
|
|
22281
|
+
actionText: String,
|
|
22282
|
+
bgColor: String,
|
|
22283
|
+
color: String,
|
|
22284
|
+
icon: IconValue,
|
|
22285
|
+
image: String,
|
|
22286
|
+
justify: {
|
|
22287
|
+
type: String,
|
|
22288
|
+
default: 'center'
|
|
22289
|
+
},
|
|
22290
|
+
headline: String,
|
|
22291
|
+
title: String,
|
|
22292
|
+
text: String,
|
|
22293
|
+
textWidth: {
|
|
22294
|
+
type: [Number, String],
|
|
22295
|
+
default: 500
|
|
22296
|
+
},
|
|
22297
|
+
href: String,
|
|
22298
|
+
to: String,
|
|
22299
|
+
...makeComponentProps(),
|
|
22300
|
+
...makeDimensionProps(),
|
|
22301
|
+
...makeSizeProps({
|
|
22302
|
+
size: undefined
|
|
22303
|
+
}),
|
|
22304
|
+
...makeThemeProps()
|
|
22305
|
+
}, 'VEmptyState');
|
|
22306
|
+
const VEmptyState = genericComponent()({
|
|
22307
|
+
name: 'VEmptyState',
|
|
22308
|
+
props: makeVEmptyStateProps(),
|
|
22309
|
+
emits: {
|
|
22310
|
+
'click:action': e => true
|
|
22311
|
+
},
|
|
22312
|
+
setup(props, _ref) {
|
|
22313
|
+
let {
|
|
22314
|
+
emit,
|
|
22315
|
+
slots
|
|
22316
|
+
} = _ref;
|
|
22317
|
+
const {
|
|
22318
|
+
themeClasses
|
|
22319
|
+
} = provideTheme(props);
|
|
22320
|
+
const {
|
|
22321
|
+
backgroundColorClasses,
|
|
22322
|
+
backgroundColorStyles
|
|
22323
|
+
} = useBackgroundColor(vue.toRef(props, 'bgColor'));
|
|
22324
|
+
const {
|
|
22325
|
+
dimensionStyles
|
|
22326
|
+
} = useDimension(props);
|
|
22327
|
+
const {
|
|
22328
|
+
displayClasses
|
|
22329
|
+
} = useDisplay();
|
|
22330
|
+
function onClickAction(e) {
|
|
22331
|
+
emit('click:action', e);
|
|
22332
|
+
}
|
|
22333
|
+
useRender(() => {
|
|
22334
|
+
const hasActions = !!(slots.actions || props.actionText);
|
|
22335
|
+
const hasHeadline = !!(slots.headline || props.headline);
|
|
22336
|
+
const hasTitle = !!(slots.title || props.title);
|
|
22337
|
+
const hasText = !!(slots.text || props.text);
|
|
22338
|
+
const hasMedia = !!(slots.media || props.image || props.icon);
|
|
22339
|
+
const size = props.size || (props.image ? 200 : 96);
|
|
22340
|
+
return vue.createVNode("div", {
|
|
22341
|
+
"class": ['v-empty-state', {
|
|
22342
|
+
[`v-empty-state--${props.justify}`]: true
|
|
22343
|
+
}, themeClasses.value, backgroundColorClasses.value, displayClasses.value, props.class],
|
|
22344
|
+
"style": [backgroundColorStyles.value, dimensionStyles.value, props.style]
|
|
22345
|
+
}, [hasMedia && vue.createVNode("div", {
|
|
22346
|
+
"key": "media",
|
|
22347
|
+
"class": "v-empty-state__media"
|
|
22348
|
+
}, [!slots.media ? vue.createVNode(vue.Fragment, null, [props.image ? vue.createVNode(VImg, {
|
|
22349
|
+
"key": "image",
|
|
22350
|
+
"src": props.image,
|
|
22351
|
+
"height": size
|
|
22352
|
+
}, null) : props.icon ? vue.createVNode(VIcon, {
|
|
22353
|
+
"key": "icon",
|
|
22354
|
+
"color": props.color,
|
|
22355
|
+
"size": size,
|
|
22356
|
+
"icon": props.icon
|
|
22357
|
+
}, null) : undefined]) : vue.createVNode(VDefaultsProvider, {
|
|
22358
|
+
"key": "media-defaults",
|
|
22359
|
+
"defaults": {
|
|
22360
|
+
VImg: {
|
|
22361
|
+
src: props.image,
|
|
22362
|
+
height: size
|
|
22363
|
+
},
|
|
22364
|
+
VIcon: {
|
|
22365
|
+
size,
|
|
22366
|
+
icon: props.icon
|
|
22367
|
+
}
|
|
22368
|
+
}
|
|
22369
|
+
}, {
|
|
22370
|
+
default: () => [slots.media()]
|
|
22371
|
+
})]), hasHeadline && vue.createVNode("div", {
|
|
22372
|
+
"key": "headline",
|
|
22373
|
+
"class": "v-empty-state__headline"
|
|
22374
|
+
}, [slots.headline?.() ?? props.headline]), hasTitle && vue.createVNode("div", {
|
|
22375
|
+
"key": "title",
|
|
22376
|
+
"class": "v-empty-state__title"
|
|
22377
|
+
}, [slots.title?.() ?? props.title]), hasText && vue.createVNode("div", {
|
|
22378
|
+
"key": "text",
|
|
22379
|
+
"class": "v-empty-state__text",
|
|
22380
|
+
"style": {
|
|
22381
|
+
maxWidth: convertToUnit(props.textWidth)
|
|
22382
|
+
}
|
|
22383
|
+
}, [slots.text?.() ?? props.text]), slots.default && vue.createVNode("div", {
|
|
22384
|
+
"key": "content",
|
|
22385
|
+
"class": "v-empty-state__content"
|
|
22386
|
+
}, [slots.default()]), hasActions && vue.createVNode("div", {
|
|
22387
|
+
"key": "actions",
|
|
22388
|
+
"class": "v-empty-state__actions"
|
|
22389
|
+
}, [vue.createVNode(VDefaultsProvider, {
|
|
22390
|
+
"defaults": {
|
|
22391
|
+
VBtn: {
|
|
22392
|
+
class: 'v-empty-state__action-btn',
|
|
22393
|
+
color: props.color,
|
|
22394
|
+
text: props.actionText
|
|
22395
|
+
}
|
|
22396
|
+
}
|
|
22397
|
+
}, {
|
|
22398
|
+
default: () => [slots.actions?.({
|
|
22399
|
+
props: {
|
|
22400
|
+
onClick: onClickAction
|
|
22401
|
+
}
|
|
22402
|
+
}) ?? vue.createVNode(VBtn, {
|
|
22403
|
+
"onClick": onClickAction
|
|
22404
|
+
}, null)]
|
|
22405
|
+
})])]);
|
|
22406
|
+
});
|
|
22407
|
+
return {};
|
|
22408
|
+
}
|
|
22409
|
+
});
|
|
22410
|
+
|
|
22198
22411
|
const makeVExpansionPanelTextProps = propsFactory({
|
|
22199
22412
|
...makeComponentProps(),
|
|
22200
22413
|
...makeLazyProps()
|
|
@@ -22428,6 +22641,107 @@
|
|
|
22428
22641
|
}
|
|
22429
22642
|
});
|
|
22430
22643
|
|
|
22644
|
+
const makeVFabProps = propsFactory({
|
|
22645
|
+
app: Boolean,
|
|
22646
|
+
appear: Boolean,
|
|
22647
|
+
extended: Boolean,
|
|
22648
|
+
layout: Boolean,
|
|
22649
|
+
location: {
|
|
22650
|
+
type: String,
|
|
22651
|
+
default: 'bottom end'
|
|
22652
|
+
},
|
|
22653
|
+
offset: Boolean,
|
|
22654
|
+
modelValue: {
|
|
22655
|
+
type: Boolean,
|
|
22656
|
+
default: true
|
|
22657
|
+
},
|
|
22658
|
+
...omit(makeVBtnProps({
|
|
22659
|
+
active: true
|
|
22660
|
+
}), ['location']),
|
|
22661
|
+
...makeLayoutItemProps(),
|
|
22662
|
+
...makeTransitionProps({
|
|
22663
|
+
transition: 'fab-transition'
|
|
22664
|
+
})
|
|
22665
|
+
}, 'VFab');
|
|
22666
|
+
const VFab = genericComponent()({
|
|
22667
|
+
name: 'VFab',
|
|
22668
|
+
props: makeVFabProps(),
|
|
22669
|
+
emits: {
|
|
22670
|
+
'update:modelValue': value => true
|
|
22671
|
+
},
|
|
22672
|
+
setup(props, _ref) {
|
|
22673
|
+
let {
|
|
22674
|
+
slots
|
|
22675
|
+
} = _ref;
|
|
22676
|
+
const model = useProxiedModel(props, 'modelValue');
|
|
22677
|
+
const height = vue.shallowRef(56);
|
|
22678
|
+
const layoutItemStyles = vue.ref();
|
|
22679
|
+
const {
|
|
22680
|
+
resizeRef
|
|
22681
|
+
} = useResizeObserver(entries => {
|
|
22682
|
+
if (!entries.length) return;
|
|
22683
|
+
height.value = entries[0].target.clientHeight;
|
|
22684
|
+
});
|
|
22685
|
+
const hasPosition = vue.computed(() => props.app || props.absolute);
|
|
22686
|
+
const position = vue.computed(() => {
|
|
22687
|
+
if (!hasPosition.value) return false;
|
|
22688
|
+
return props.location.split(' ').shift();
|
|
22689
|
+
});
|
|
22690
|
+
const orientation = vue.computed(() => {
|
|
22691
|
+
if (!hasPosition.value) return false;
|
|
22692
|
+
return props.location.split(' ')[1] ?? 'end';
|
|
22693
|
+
});
|
|
22694
|
+
useToggleScope(() => props.app, () => {
|
|
22695
|
+
const layout = useLayoutItem({
|
|
22696
|
+
id: props.name,
|
|
22697
|
+
order: vue.computed(() => parseInt(props.order, 10)),
|
|
22698
|
+
position,
|
|
22699
|
+
layoutSize: vue.computed(() => props.layout ? height.value + 24 : 0),
|
|
22700
|
+
elementSize: vue.computed(() => height.value + 24),
|
|
22701
|
+
active: vue.computed(() => props.app && model.value),
|
|
22702
|
+
absolute: vue.toRef(props, 'absolute')
|
|
22703
|
+
});
|
|
22704
|
+
vue.watchEffect(() => {
|
|
22705
|
+
layoutItemStyles.value = layout.layoutItemStyles.value;
|
|
22706
|
+
});
|
|
22707
|
+
});
|
|
22708
|
+
const vFabRef = vue.ref();
|
|
22709
|
+
useRender(() => {
|
|
22710
|
+
const btnProps = VBtn.filterProps(props);
|
|
22711
|
+
return vue.createVNode("div", {
|
|
22712
|
+
"ref": vFabRef,
|
|
22713
|
+
"class": ['v-fab', {
|
|
22714
|
+
'v-fab--absolute': props.absolute,
|
|
22715
|
+
'v-fab--app': !!props.app,
|
|
22716
|
+
'v-fab--extended': props.extended,
|
|
22717
|
+
'v-fab--offset': props.offset,
|
|
22718
|
+
[`v-fab--${position.value}`]: hasPosition.value,
|
|
22719
|
+
[`v-fab--${orientation.value}`]: hasPosition.value
|
|
22720
|
+
}, props.class],
|
|
22721
|
+
"style": [props.app ? {
|
|
22722
|
+
...layoutItemStyles.value
|
|
22723
|
+
} : {
|
|
22724
|
+
height: 'inherit',
|
|
22725
|
+
width: undefined
|
|
22726
|
+
}, props.style]
|
|
22727
|
+
}, [vue.createVNode("div", {
|
|
22728
|
+
"class": "v-fab__container"
|
|
22729
|
+
}, [vue.createVNode(MaybeTransition, {
|
|
22730
|
+
"appear": props.appear,
|
|
22731
|
+
"transition": props.transition
|
|
22732
|
+
}, {
|
|
22733
|
+
default: () => [vue.withDirectives(vue.createVNode(VBtn, vue.mergeProps({
|
|
22734
|
+
"ref": resizeRef
|
|
22735
|
+
}, btnProps, {
|
|
22736
|
+
"active": undefined,
|
|
22737
|
+
"location": undefined
|
|
22738
|
+
}), slots), [[vue.vShow, props.active]])]
|
|
22739
|
+
})])]);
|
|
22740
|
+
});
|
|
22741
|
+
return {};
|
|
22742
|
+
}
|
|
22743
|
+
});
|
|
22744
|
+
|
|
22431
22745
|
// Types
|
|
22432
22746
|
|
|
22433
22747
|
const makeVFileInputProps = propsFactory({
|
|
@@ -22775,7 +23089,7 @@
|
|
|
22775
23089
|
disabled: Boolean,
|
|
22776
23090
|
modelValue: {
|
|
22777
23091
|
type: Boolean,
|
|
22778
|
-
default:
|
|
23092
|
+
default: null
|
|
22779
23093
|
},
|
|
22780
23094
|
...makeDelayProps()
|
|
22781
23095
|
}, 'VHover');
|
|
@@ -25088,6 +25402,519 @@
|
|
|
25088
25402
|
}
|
|
25089
25403
|
});
|
|
25090
25404
|
|
|
25405
|
+
// Utilities
|
|
25406
|
+
|
|
25407
|
+
// Types
|
|
25408
|
+
|
|
25409
|
+
const makeLineProps = propsFactory({
|
|
25410
|
+
autoDraw: Boolean,
|
|
25411
|
+
autoDrawDuration: [Number, String],
|
|
25412
|
+
autoDrawEasing: {
|
|
25413
|
+
type: String,
|
|
25414
|
+
default: 'ease'
|
|
25415
|
+
},
|
|
25416
|
+
color: String,
|
|
25417
|
+
gradient: {
|
|
25418
|
+
type: Array,
|
|
25419
|
+
default: () => []
|
|
25420
|
+
},
|
|
25421
|
+
gradientDirection: {
|
|
25422
|
+
type: String,
|
|
25423
|
+
validator: val => ['top', 'bottom', 'left', 'right'].includes(val),
|
|
25424
|
+
default: 'top'
|
|
25425
|
+
},
|
|
25426
|
+
height: {
|
|
25427
|
+
type: [String, Number],
|
|
25428
|
+
default: 75
|
|
25429
|
+
},
|
|
25430
|
+
labels: {
|
|
25431
|
+
type: Array,
|
|
25432
|
+
default: () => []
|
|
25433
|
+
},
|
|
25434
|
+
labelSize: {
|
|
25435
|
+
type: [Number, String],
|
|
25436
|
+
default: 7
|
|
25437
|
+
},
|
|
25438
|
+
lineWidth: {
|
|
25439
|
+
type: [String, Number],
|
|
25440
|
+
default: 4
|
|
25441
|
+
},
|
|
25442
|
+
id: String,
|
|
25443
|
+
itemValue: {
|
|
25444
|
+
type: String,
|
|
25445
|
+
default: 'value'
|
|
25446
|
+
},
|
|
25447
|
+
modelValue: {
|
|
25448
|
+
type: Array,
|
|
25449
|
+
default: () => []
|
|
25450
|
+
},
|
|
25451
|
+
min: [String, Number],
|
|
25452
|
+
max: [String, Number],
|
|
25453
|
+
padding: {
|
|
25454
|
+
type: [String, Number],
|
|
25455
|
+
default: 8
|
|
25456
|
+
},
|
|
25457
|
+
showLabels: Boolean,
|
|
25458
|
+
smooth: Boolean,
|
|
25459
|
+
width: {
|
|
25460
|
+
type: [Number, String],
|
|
25461
|
+
default: 300
|
|
25462
|
+
}
|
|
25463
|
+
}, 'Line');
|
|
25464
|
+
|
|
25465
|
+
// Types
|
|
25466
|
+
|
|
25467
|
+
const makeVBarlineProps = propsFactory({
|
|
25468
|
+
autoLineWidth: Boolean,
|
|
25469
|
+
...makeLineProps()
|
|
25470
|
+
}, 'VBarline');
|
|
25471
|
+
const VBarline = genericComponent()({
|
|
25472
|
+
name: 'VBarline',
|
|
25473
|
+
props: makeVBarlineProps(),
|
|
25474
|
+
setup(props, _ref) {
|
|
25475
|
+
let {
|
|
25476
|
+
slots
|
|
25477
|
+
} = _ref;
|
|
25478
|
+
const uid = getUid();
|
|
25479
|
+
const id = vue.computed(() => props.id || `barline-${uid}`);
|
|
25480
|
+
const autoDrawDuration = vue.computed(() => Number(props.autoDrawDuration) || 500);
|
|
25481
|
+
const hasLabels = vue.computed(() => {
|
|
25482
|
+
return Boolean(props.showLabels || props.labels.length > 0 || !!slots?.label);
|
|
25483
|
+
});
|
|
25484
|
+
const lineWidth = vue.computed(() => parseFloat(props.lineWidth) || 4);
|
|
25485
|
+
const totalWidth = vue.computed(() => Math.max(props.modelValue.length * lineWidth.value, Number(props.width)));
|
|
25486
|
+
const boundary = vue.computed(() => {
|
|
25487
|
+
return {
|
|
25488
|
+
minX: 0,
|
|
25489
|
+
maxX: totalWidth.value,
|
|
25490
|
+
minY: 0,
|
|
25491
|
+
maxY: parseInt(props.height, 10)
|
|
25492
|
+
};
|
|
25493
|
+
});
|
|
25494
|
+
const items = vue.computed(() => props.modelValue.map(item => getPropertyFromItem(item, props.itemValue, item)));
|
|
25495
|
+
function genBars(values, boundary) {
|
|
25496
|
+
const {
|
|
25497
|
+
minX,
|
|
25498
|
+
maxX,
|
|
25499
|
+
minY,
|
|
25500
|
+
maxY
|
|
25501
|
+
} = boundary;
|
|
25502
|
+
const totalValues = values.length;
|
|
25503
|
+
let maxValue = props.max != null ? Number(props.max) : Math.max(...values);
|
|
25504
|
+
let minValue = props.min != null ? Number(props.min) : Math.min(...values);
|
|
25505
|
+
if (minValue > 0 && props.min == null) minValue = 0;
|
|
25506
|
+
if (maxValue < 0 && props.max == null) maxValue = 0;
|
|
25507
|
+
const gridX = maxX / totalValues;
|
|
25508
|
+
const gridY = (maxY - minY) / (maxValue - minValue || 1);
|
|
25509
|
+
const horizonY = maxY - Math.abs(minValue * gridY);
|
|
25510
|
+
return values.map((value, index) => {
|
|
25511
|
+
const height = Math.abs(gridY * value);
|
|
25512
|
+
return {
|
|
25513
|
+
x: minX + index * gridX,
|
|
25514
|
+
y: horizonY - height + +(value < 0) * height,
|
|
25515
|
+
height,
|
|
25516
|
+
value
|
|
25517
|
+
};
|
|
25518
|
+
});
|
|
25519
|
+
}
|
|
25520
|
+
const parsedLabels = vue.computed(() => {
|
|
25521
|
+
const labels = [];
|
|
25522
|
+
const points = genBars(items.value, boundary.value);
|
|
25523
|
+
const len = points.length;
|
|
25524
|
+
for (let i = 0; labels.length < len; i++) {
|
|
25525
|
+
const item = points[i];
|
|
25526
|
+
let value = props.labels[i];
|
|
25527
|
+
if (!value) {
|
|
25528
|
+
value = typeof item === 'object' ? item.value : item;
|
|
25529
|
+
}
|
|
25530
|
+
labels.push({
|
|
25531
|
+
x: item.x,
|
|
25532
|
+
value: String(value)
|
|
25533
|
+
});
|
|
25534
|
+
}
|
|
25535
|
+
return labels;
|
|
25536
|
+
});
|
|
25537
|
+
const bars = vue.computed(() => genBars(items.value, boundary.value));
|
|
25538
|
+
const offsetX = vue.computed(() => (Math.abs(bars.value[0].x - bars.value[1].x) - lineWidth.value) / 2);
|
|
25539
|
+
useRender(() => {
|
|
25540
|
+
const gradientData = !props.gradient.slice().length ? [''] : props.gradient.slice().reverse();
|
|
25541
|
+
return vue.createVNode("svg", {
|
|
25542
|
+
"display": "block"
|
|
25543
|
+
}, [vue.createVNode("defs", null, [vue.createVNode("linearGradient", {
|
|
25544
|
+
"id": id.value,
|
|
25545
|
+
"gradientUnits": "userSpaceOnUse",
|
|
25546
|
+
"x1": props.gradientDirection === 'left' ? '100%' : '0',
|
|
25547
|
+
"y1": props.gradientDirection === 'top' ? '100%' : '0',
|
|
25548
|
+
"x2": props.gradientDirection === 'right' ? '100%' : '0',
|
|
25549
|
+
"y2": props.gradientDirection === 'bottom' ? '100%' : '0'
|
|
25550
|
+
}, [gradientData.map((color, index) => vue.createVNode("stop", {
|
|
25551
|
+
"offset": index / Math.max(gradientData.length - 1, 1),
|
|
25552
|
+
"stop-color": color || 'currentColor'
|
|
25553
|
+
}, null))])]), vue.createVNode("clipPath", {
|
|
25554
|
+
"id": `${id.value}-clip`
|
|
25555
|
+
}, [bars.value.map(item => vue.createVNode("rect", {
|
|
25556
|
+
"x": item.x + offsetX.value,
|
|
25557
|
+
"y": item.y,
|
|
25558
|
+
"width": lineWidth.value,
|
|
25559
|
+
"height": item.height,
|
|
25560
|
+
"rx": typeof props.smooth === 'number' ? props.smooth : props.smooth ? 2 : 0,
|
|
25561
|
+
"ry": typeof props.smooth === 'number' ? props.smooth : props.smooth ? 2 : 0
|
|
25562
|
+
}, [props.autoDraw && vue.createVNode(vue.Fragment, null, [vue.createVNode("animate", {
|
|
25563
|
+
"attributeName": "y",
|
|
25564
|
+
"from": item.y + item.height,
|
|
25565
|
+
"to": item.y,
|
|
25566
|
+
"dur": `${autoDrawDuration.value}ms`,
|
|
25567
|
+
"fill": "freeze"
|
|
25568
|
+
}, null), vue.createVNode("animate", {
|
|
25569
|
+
"attributeName": "height",
|
|
25570
|
+
"from": "0",
|
|
25571
|
+
"to": item.height,
|
|
25572
|
+
"dur": `${autoDrawDuration.value}ms`,
|
|
25573
|
+
"fill": "freeze"
|
|
25574
|
+
}, null)])]))]), hasLabels.value && vue.createVNode("g", {
|
|
25575
|
+
"key": "labels",
|
|
25576
|
+
"style": {
|
|
25577
|
+
textAnchor: 'middle',
|
|
25578
|
+
dominantBaseline: 'mathematical',
|
|
25579
|
+
fill: 'currentColor'
|
|
25580
|
+
}
|
|
25581
|
+
}, [parsedLabels.value.map((item, i) => vue.createVNode("text", {
|
|
25582
|
+
"x": item.x + offsetX.value + lineWidth.value / 2,
|
|
25583
|
+
"y": parseInt(props.height, 10) - 2 + (parseInt(props.labelSize, 10) || 7 * 0.75),
|
|
25584
|
+
"font-size": Number(props.labelSize) || 7
|
|
25585
|
+
}, [slots.label?.({
|
|
25586
|
+
index: i,
|
|
25587
|
+
value: item.value
|
|
25588
|
+
}) ?? item.value]))]), vue.createVNode("g", {
|
|
25589
|
+
"clip-path": `url(#${id.value}-clip)`,
|
|
25590
|
+
"fill": `url(#${id.value})`
|
|
25591
|
+
}, [vue.createVNode("rect", {
|
|
25592
|
+
"x": 0,
|
|
25593
|
+
"y": 0,
|
|
25594
|
+
"width": Math.max(props.modelValue.length * lineWidth.value, Number(props.width)),
|
|
25595
|
+
"height": props.height
|
|
25596
|
+
}, null)])]);
|
|
25597
|
+
});
|
|
25598
|
+
}
|
|
25599
|
+
});
|
|
25600
|
+
|
|
25601
|
+
// @ts-nocheck
|
|
25602
|
+
/* eslint-disable */
|
|
25603
|
+
|
|
25604
|
+
// import { checkCollinear, getDistance, moveTo } from './math'
|
|
25605
|
+
|
|
25606
|
+
/**
|
|
25607
|
+
* From https://github.com/unsplash/react-trend/blob/master/src/helpers/DOM.helpers.js#L18
|
|
25608
|
+
*/
|
|
25609
|
+
function genPath(points, radius) {
|
|
25610
|
+
let fill = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
|
|
25611
|
+
let height = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 75;
|
|
25612
|
+
if (points.length === 0) return '';
|
|
25613
|
+
const start = points.shift();
|
|
25614
|
+
const end = points[points.length - 1];
|
|
25615
|
+
return (fill ? `M${start.x} ${height - start.x + 2} L${start.x} ${start.y}` : `M${start.x} ${start.y}`) + points.map((point, index) => {
|
|
25616
|
+
const next = points[index + 1];
|
|
25617
|
+
const prev = points[index - 1] || start;
|
|
25618
|
+
const isCollinear = next && checkCollinear(next, point, prev);
|
|
25619
|
+
if (!next || isCollinear) {
|
|
25620
|
+
return `L${point.x} ${point.y}`;
|
|
25621
|
+
}
|
|
25622
|
+
const threshold = Math.min(getDistance(prev, point), getDistance(next, point));
|
|
25623
|
+
const isTooCloseForRadius = threshold / 2 < radius;
|
|
25624
|
+
const radiusForPoint = isTooCloseForRadius ? threshold / 2 : radius;
|
|
25625
|
+
const before = moveTo(prev, point, radiusForPoint);
|
|
25626
|
+
const after = moveTo(next, point, radiusForPoint);
|
|
25627
|
+
return `L${before.x} ${before.y}S${point.x} ${point.y} ${after.x} ${after.y}`;
|
|
25628
|
+
}).join('') + (fill ? `L${end.x} ${height - start.x + 2} Z` : '');
|
|
25629
|
+
}
|
|
25630
|
+
function int(value) {
|
|
25631
|
+
return parseInt(value, 10);
|
|
25632
|
+
}
|
|
25633
|
+
|
|
25634
|
+
/**
|
|
25635
|
+
* https://en.wikipedia.org/wiki/Collinearity
|
|
25636
|
+
* x=(x1+x2)/2
|
|
25637
|
+
* y=(y1+y2)/2
|
|
25638
|
+
*/
|
|
25639
|
+
function checkCollinear(p0, p1, p2) {
|
|
25640
|
+
return int(p0.x + p2.x) === int(2 * p1.x) && int(p0.y + p2.y) === int(2 * p1.y);
|
|
25641
|
+
}
|
|
25642
|
+
function getDistance(p1, p2) {
|
|
25643
|
+
return Math.sqrt(Math.pow(p2.x - p1.x, 2) + Math.pow(p2.y - p1.y, 2));
|
|
25644
|
+
}
|
|
25645
|
+
function moveTo(to, from, radius) {
|
|
25646
|
+
const vector = {
|
|
25647
|
+
x: to.x - from.x,
|
|
25648
|
+
y: to.y - from.y
|
|
25649
|
+
};
|
|
25650
|
+
const length = Math.sqrt(vector.x * vector.x + vector.y * vector.y);
|
|
25651
|
+
const unitVector = {
|
|
25652
|
+
x: vector.x / length,
|
|
25653
|
+
y: vector.y / length
|
|
25654
|
+
};
|
|
25655
|
+
return {
|
|
25656
|
+
x: from.x + unitVector.x * radius,
|
|
25657
|
+
y: from.y + unitVector.y * radius
|
|
25658
|
+
};
|
|
25659
|
+
}
|
|
25660
|
+
|
|
25661
|
+
// Types
|
|
25662
|
+
|
|
25663
|
+
const makeVTrendlineProps = propsFactory({
|
|
25664
|
+
fill: Boolean,
|
|
25665
|
+
...makeLineProps()
|
|
25666
|
+
}, 'VTrendline');
|
|
25667
|
+
const VTrendline = genericComponent()({
|
|
25668
|
+
name: 'VTrendline',
|
|
25669
|
+
props: makeVTrendlineProps(),
|
|
25670
|
+
setup(props, _ref) {
|
|
25671
|
+
let {
|
|
25672
|
+
slots
|
|
25673
|
+
} = _ref;
|
|
25674
|
+
const uid = getUid();
|
|
25675
|
+
const id = vue.computed(() => props.id || `trendline-${uid}`);
|
|
25676
|
+
const autoDrawDuration = vue.computed(() => Number(props.autoDrawDuration) || (props.fill ? 500 : 2000));
|
|
25677
|
+
const lastLength = vue.ref(0);
|
|
25678
|
+
const path = vue.ref(null);
|
|
25679
|
+
function genPoints(values, boundary) {
|
|
25680
|
+
const {
|
|
25681
|
+
minX,
|
|
25682
|
+
maxX,
|
|
25683
|
+
minY,
|
|
25684
|
+
maxY
|
|
25685
|
+
} = boundary;
|
|
25686
|
+
const totalValues = values.length;
|
|
25687
|
+
const maxValue = props.max != null ? Number(props.max) : Math.max(...values);
|
|
25688
|
+
const minValue = props.min != null ? Number(props.min) : Math.min(...values);
|
|
25689
|
+
const gridX = (maxX - minX) / (totalValues - 1);
|
|
25690
|
+
const gridY = (maxY - minY) / (maxValue - minValue || 1);
|
|
25691
|
+
return values.map((value, index) => {
|
|
25692
|
+
return {
|
|
25693
|
+
x: minX + index * gridX,
|
|
25694
|
+
y: maxY - (value - minValue) * gridY,
|
|
25695
|
+
value
|
|
25696
|
+
};
|
|
25697
|
+
});
|
|
25698
|
+
}
|
|
25699
|
+
const hasLabels = vue.computed(() => {
|
|
25700
|
+
return Boolean(props.showLabels || props.labels.length > 0 || !!slots?.label);
|
|
25701
|
+
});
|
|
25702
|
+
const lineWidth = vue.computed(() => {
|
|
25703
|
+
return parseFloat(props.lineWidth) || 4;
|
|
25704
|
+
});
|
|
25705
|
+
const totalWidth = vue.computed(() => Number(props.width));
|
|
25706
|
+
const boundary = vue.computed(() => {
|
|
25707
|
+
const padding = Number(props.padding);
|
|
25708
|
+
return {
|
|
25709
|
+
minX: padding,
|
|
25710
|
+
maxX: totalWidth.value - padding,
|
|
25711
|
+
minY: padding,
|
|
25712
|
+
maxY: parseInt(props.height, 10) - padding
|
|
25713
|
+
};
|
|
25714
|
+
});
|
|
25715
|
+
const items = vue.computed(() => props.modelValue.map(item => getPropertyFromItem(item, props.itemValue, item)));
|
|
25716
|
+
const parsedLabels = vue.computed(() => {
|
|
25717
|
+
const labels = [];
|
|
25718
|
+
const points = genPoints(items.value, boundary.value);
|
|
25719
|
+
const len = points.length;
|
|
25720
|
+
for (let i = 0; labels.length < len; i++) {
|
|
25721
|
+
const item = points[i];
|
|
25722
|
+
let value = props.labels[i];
|
|
25723
|
+
if (!value) {
|
|
25724
|
+
value = typeof item === 'object' ? item.value : item;
|
|
25725
|
+
}
|
|
25726
|
+
labels.push({
|
|
25727
|
+
x: item.x,
|
|
25728
|
+
value: String(value)
|
|
25729
|
+
});
|
|
25730
|
+
}
|
|
25731
|
+
return labels;
|
|
25732
|
+
});
|
|
25733
|
+
vue.watch(() => props.modelValue, async () => {
|
|
25734
|
+
await vue.nextTick();
|
|
25735
|
+
if (!props.autoDraw || !path.value) return;
|
|
25736
|
+
const pathRef = path.value;
|
|
25737
|
+
const length = pathRef.getTotalLength();
|
|
25738
|
+
if (!props.fill) {
|
|
25739
|
+
// Initial setup to "hide" the line by using the stroke dash array
|
|
25740
|
+
pathRef.style.strokeDasharray = `${length}`;
|
|
25741
|
+
pathRef.style.strokeDashoffset = `${length}`;
|
|
25742
|
+
|
|
25743
|
+
// Force reflow to ensure the transition starts from this state
|
|
25744
|
+
pathRef.getBoundingClientRect();
|
|
25745
|
+
|
|
25746
|
+
// Animate the stroke dash offset to "draw" the line
|
|
25747
|
+
pathRef.style.transition = `stroke-dashoffset ${autoDrawDuration.value}ms ${props.autoDrawEasing}`;
|
|
25748
|
+
pathRef.style.strokeDashoffset = '0';
|
|
25749
|
+
} else {
|
|
25750
|
+
// Your existing logic for filled paths remains the same
|
|
25751
|
+
pathRef.style.transformOrigin = 'bottom center';
|
|
25752
|
+
pathRef.style.transition = 'none';
|
|
25753
|
+
pathRef.style.transform = `scaleY(0)`;
|
|
25754
|
+
pathRef.getBoundingClientRect();
|
|
25755
|
+
pathRef.style.transition = `transform ${autoDrawDuration.value}ms ${props.autoDrawEasing}`;
|
|
25756
|
+
pathRef.style.transform = `scaleY(1)`;
|
|
25757
|
+
}
|
|
25758
|
+
lastLength.value = length;
|
|
25759
|
+
}, {
|
|
25760
|
+
immediate: true
|
|
25761
|
+
});
|
|
25762
|
+
function genPath$1(fill) {
|
|
25763
|
+
return genPath(genPoints(items.value, boundary.value), props.smooth ? 8 : Number(props.smooth), fill, parseInt(props.height, 10));
|
|
25764
|
+
}
|
|
25765
|
+
useRender(() => {
|
|
25766
|
+
const gradientData = !props.gradient.slice().length ? [''] : props.gradient.slice().reverse();
|
|
25767
|
+
return vue.createVNode("svg", {
|
|
25768
|
+
"display": "block",
|
|
25769
|
+
"stroke-width": parseFloat(props.lineWidth) ?? 4
|
|
25770
|
+
}, [vue.createVNode("defs", null, [vue.createVNode("linearGradient", {
|
|
25771
|
+
"id": id.value,
|
|
25772
|
+
"gradientUnits": "userSpaceOnUse",
|
|
25773
|
+
"x1": props.gradientDirection === 'left' ? '100%' : '0',
|
|
25774
|
+
"y1": props.gradientDirection === 'top' ? '100%' : '0',
|
|
25775
|
+
"x2": props.gradientDirection === 'right' ? '100%' : '0',
|
|
25776
|
+
"y2": props.gradientDirection === 'bottom' ? '100%' : '0'
|
|
25777
|
+
}, [gradientData.map((color, index) => vue.createVNode("stop", {
|
|
25778
|
+
"offset": index / Math.max(gradientData.length - 1, 1),
|
|
25779
|
+
"stop-color": color || 'currentColor'
|
|
25780
|
+
}, null))])]), hasLabels.value && vue.createVNode("g", {
|
|
25781
|
+
"key": "labels",
|
|
25782
|
+
"style": {
|
|
25783
|
+
textAnchor: 'middle',
|
|
25784
|
+
dominantBaseline: 'mathematical',
|
|
25785
|
+
fill: 'currentColor'
|
|
25786
|
+
}
|
|
25787
|
+
}, [parsedLabels.value.map((item, i) => vue.createVNode("text", {
|
|
25788
|
+
"x": item.x + lineWidth.value / 2 + lineWidth.value / 2,
|
|
25789
|
+
"y": parseInt(props.height, 10) - 4 + (parseInt(props.labelSize, 10) || 7 * 0.75),
|
|
25790
|
+
"font-size": Number(props.labelSize) || 7
|
|
25791
|
+
}, [slots.label?.({
|
|
25792
|
+
index: i,
|
|
25793
|
+
value: item.value
|
|
25794
|
+
}) ?? item.value]))]), vue.createVNode("path", {
|
|
25795
|
+
"ref": path,
|
|
25796
|
+
"d": genPath$1(props.fill),
|
|
25797
|
+
"fill": props.fill ? `url(#${id.value})` : 'none',
|
|
25798
|
+
"stroke": props.fill ? 'none' : `url(#${id.value})`
|
|
25799
|
+
}, null), props.fill && vue.createVNode("path", {
|
|
25800
|
+
"d": genPath$1(false),
|
|
25801
|
+
"fill": "none",
|
|
25802
|
+
"stroke": props.color ?? props.gradient?.[0]
|
|
25803
|
+
}, null)]);
|
|
25804
|
+
});
|
|
25805
|
+
}
|
|
25806
|
+
});
|
|
25807
|
+
|
|
25808
|
+
// Types
|
|
25809
|
+
|
|
25810
|
+
// Types
|
|
25811
|
+
|
|
25812
|
+
const makeVSparklineProps = propsFactory({
|
|
25813
|
+
type: {
|
|
25814
|
+
type: String,
|
|
25815
|
+
default: 'trend'
|
|
25816
|
+
},
|
|
25817
|
+
...makeVBarlineProps(),
|
|
25818
|
+
...makeVTrendlineProps()
|
|
25819
|
+
}, 'VSparkline');
|
|
25820
|
+
const VSparkline = genericComponent()({
|
|
25821
|
+
name: 'VSparkline',
|
|
25822
|
+
props: makeVSparklineProps(),
|
|
25823
|
+
setup(props, _ref) {
|
|
25824
|
+
let {
|
|
25825
|
+
slots
|
|
25826
|
+
} = _ref;
|
|
25827
|
+
const {
|
|
25828
|
+
textColorClasses,
|
|
25829
|
+
textColorStyles
|
|
25830
|
+
} = useTextColor(vue.toRef(props, 'color'));
|
|
25831
|
+
const hasLabels = vue.computed(() => {
|
|
25832
|
+
return Boolean(props.showLabels || props.labels.length > 0 || !!slots?.label);
|
|
25833
|
+
});
|
|
25834
|
+
const totalHeight = vue.computed(() => {
|
|
25835
|
+
let height = parseInt(props.height, 10);
|
|
25836
|
+
if (hasLabels.value) height += parseInt(props.labelSize, 10) * 1.5;
|
|
25837
|
+
return height;
|
|
25838
|
+
});
|
|
25839
|
+
useRender(() => {
|
|
25840
|
+
const Tag = props.type === 'trend' ? VTrendline : VBarline;
|
|
25841
|
+
const lineProps = props.type === 'trend' ? VTrendline.filterProps(props) : VBarline.filterProps(props);
|
|
25842
|
+
return vue.createVNode(Tag, vue.mergeProps({
|
|
25843
|
+
"key": props.type,
|
|
25844
|
+
"class": textColorClasses.value,
|
|
25845
|
+
"style": textColorStyles.value,
|
|
25846
|
+
"viewBox": `0 0 ${props.width} ${parseInt(totalHeight.value, 10)}`
|
|
25847
|
+
}, lineProps), slots);
|
|
25848
|
+
});
|
|
25849
|
+
}
|
|
25850
|
+
});
|
|
25851
|
+
|
|
25852
|
+
// Types
|
|
25853
|
+
|
|
25854
|
+
const makeVSpeedDialProps = propsFactory({
|
|
25855
|
+
...makeComponentProps(),
|
|
25856
|
+
...makeVMenuProps({
|
|
25857
|
+
offset: 8,
|
|
25858
|
+
minWidth: 0,
|
|
25859
|
+
openDelay: 0,
|
|
25860
|
+
closeDelay: 100,
|
|
25861
|
+
location: 'top center',
|
|
25862
|
+
transition: 'scale-transition'
|
|
25863
|
+
})
|
|
25864
|
+
}, 'VSpeedDial');
|
|
25865
|
+
const VSpeedDial = genericComponent()({
|
|
25866
|
+
name: 'VSpeedDial',
|
|
25867
|
+
props: makeVSpeedDialProps(),
|
|
25868
|
+
emits: {
|
|
25869
|
+
'update:modelValue': value => true
|
|
25870
|
+
},
|
|
25871
|
+
setup(props, _ref) {
|
|
25872
|
+
let {
|
|
25873
|
+
slots
|
|
25874
|
+
} = _ref;
|
|
25875
|
+
const model = useProxiedModel(props, 'modelValue');
|
|
25876
|
+
const menuRef = vue.ref();
|
|
25877
|
+
const location = vue.computed(() => {
|
|
25878
|
+
const [y, x = 'center'] = props.location.split(' ');
|
|
25879
|
+
return `${y} ${x}`;
|
|
25880
|
+
});
|
|
25881
|
+
const locationClasses = vue.computed(() => ({
|
|
25882
|
+
[`v-speed-dial__content--${location.value.replace(' ', '-')}`]: true
|
|
25883
|
+
}));
|
|
25884
|
+
useRender(() => {
|
|
25885
|
+
const menuProps = VMenu.filterProps(props);
|
|
25886
|
+
return vue.createVNode(VMenu, vue.mergeProps(menuProps, {
|
|
25887
|
+
"modelValue": model.value,
|
|
25888
|
+
"onUpdate:modelValue": $event => model.value = $event,
|
|
25889
|
+
"class": props.class,
|
|
25890
|
+
"style": props.style,
|
|
25891
|
+
"contentClass": ['v-speed-dial__content', locationClasses.value],
|
|
25892
|
+
"location": location.value,
|
|
25893
|
+
"ref": menuRef,
|
|
25894
|
+
"transition": "fade-transition"
|
|
25895
|
+
}), {
|
|
25896
|
+
...slots,
|
|
25897
|
+
default: slotProps => vue.createVNode(VDefaultsProvider, {
|
|
25898
|
+
"defaults": {
|
|
25899
|
+
VBtn: {
|
|
25900
|
+
size: 'small'
|
|
25901
|
+
}
|
|
25902
|
+
}
|
|
25903
|
+
}, {
|
|
25904
|
+
default: () => [vue.createVNode(MaybeTransition, {
|
|
25905
|
+
"appear": true,
|
|
25906
|
+
"group": true,
|
|
25907
|
+
"transition": props.transition
|
|
25908
|
+
}, {
|
|
25909
|
+
default: () => [slots.default?.(slotProps)]
|
|
25910
|
+
})]
|
|
25911
|
+
})
|
|
25912
|
+
});
|
|
25913
|
+
});
|
|
25914
|
+
return {};
|
|
25915
|
+
}
|
|
25916
|
+
});
|
|
25917
|
+
|
|
25091
25918
|
// Types
|
|
25092
25919
|
|
|
25093
25920
|
const makeVStepperActionsProps = propsFactory({
|
|
@@ -26666,6 +27493,7 @@
|
|
|
26666
27493
|
VColorPicker: VColorPicker,
|
|
26667
27494
|
VCombobox: VCombobox,
|
|
26668
27495
|
VComponentIcon: VComponentIcon,
|
|
27496
|
+
VConfirmEdit: VConfirmEdit,
|
|
26669
27497
|
VContainer: VContainer,
|
|
26670
27498
|
VCounter: VCounter,
|
|
26671
27499
|
VDataIterator: VDataIterator,
|
|
@@ -26688,12 +27516,14 @@
|
|
|
26688
27516
|
VDialogTopTransition: VDialogTopTransition,
|
|
26689
27517
|
VDialogTransition: VDialogTransition,
|
|
26690
27518
|
VDivider: VDivider,
|
|
27519
|
+
VEmptyState: VEmptyState,
|
|
26691
27520
|
VExpandTransition: VExpandTransition,
|
|
26692
27521
|
VExpandXTransition: VExpandXTransition,
|
|
26693
27522
|
VExpansionPanel: VExpansionPanel,
|
|
26694
27523
|
VExpansionPanelText: VExpansionPanelText,
|
|
26695
27524
|
VExpansionPanelTitle: VExpansionPanelTitle,
|
|
26696
27525
|
VExpansionPanels: VExpansionPanels,
|
|
27526
|
+
VFab: VFab,
|
|
26697
27527
|
VFabTransition: VFabTransition,
|
|
26698
27528
|
VFadeTransition: VFadeTransition,
|
|
26699
27529
|
VField: VField,
|
|
@@ -26760,6 +27590,8 @@
|
|
|
26760
27590
|
VSlider: VSlider,
|
|
26761
27591
|
VSnackbar: VSnackbar,
|
|
26762
27592
|
VSpacer: VSpacer,
|
|
27593
|
+
VSparkline: VSparkline,
|
|
27594
|
+
VSpeedDial: VSpeedDial,
|
|
26763
27595
|
VStepper: VStepper,
|
|
26764
27596
|
VStepperActions: VStepperActions,
|
|
26765
27597
|
VStepperHeader: VStepperHeader,
|
|
@@ -26936,9 +27768,7 @@
|
|
|
26936
27768
|
// If vnode.ctx is the same as the instance, then we're bound to a plain element
|
|
26937
27769
|
// and need to find the nearest parent component instance to inherit provides from
|
|
26938
27770
|
const provides = (vnode.ctx === binding.instance.$ ? findComponentParent(vnode, binding.instance.$)?.provides : vnode.ctx?.provides) ?? binding.instance.$.provides;
|
|
26939
|
-
const node = vue.h(component, vue.mergeProps(_props, value),
|
|
26940
|
-
default: () => children
|
|
26941
|
-
});
|
|
27771
|
+
const node = vue.h(component, vue.mergeProps(_props, value), children);
|
|
26942
27772
|
node.appContext = Object.assign(Object.create(null), binding.instance.$.appContext, {
|
|
26943
27773
|
provides
|
|
26944
27774
|
});
|
|
@@ -27097,7 +27927,7 @@
|
|
|
27097
27927
|
goTo
|
|
27098
27928
|
};
|
|
27099
27929
|
}
|
|
27100
|
-
const version$1 = "3.6.
|
|
27930
|
+
const version$1 = "3.6.2";
|
|
27101
27931
|
createVuetify$1.version = version$1;
|
|
27102
27932
|
|
|
27103
27933
|
// Vue's inject() can only be used in setup
|
|
@@ -27122,7 +27952,7 @@
|
|
|
27122
27952
|
...options
|
|
27123
27953
|
});
|
|
27124
27954
|
};
|
|
27125
|
-
const version = "3.6.
|
|
27955
|
+
const version = "3.6.2";
|
|
27126
27956
|
createVuetify.version = version;
|
|
27127
27957
|
|
|
27128
27958
|
exports.blueprints = index;
|