vuetify 3.8.7 → 3.8.9
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/LICENSE.md +1 -1
- package/dist/json/attributes.json +1535 -1511
- package/dist/json/importMap-labs.json +20 -20
- package/dist/json/importMap.json +138 -138
- package/dist/json/tags.json +6 -0
- package/dist/json/web-types.json +2800 -2746
- package/dist/vuetify-labs.cjs +292 -154
- package/dist/vuetify-labs.css +6716 -6710
- package/dist/vuetify-labs.d.ts +96 -50
- package/dist/vuetify-labs.esm.js +293 -155
- package/dist/vuetify-labs.esm.js.map +1 -1
- package/dist/vuetify-labs.js +292 -154
- package/dist/vuetify-labs.min.css +2 -2
- package/dist/vuetify.cjs +272 -124
- package/dist/vuetify.cjs.map +1 -1
- package/dist/vuetify.css +3854 -3848
- package/dist/vuetify.d.ts +81 -50
- package/dist/vuetify.esm.js +273 -125
- package/dist/vuetify.esm.js.map +1 -1
- package/dist/vuetify.js +272 -124
- package/dist/vuetify.js.map +1 -1
- package/dist/vuetify.min.css +2 -2
- package/dist/vuetify.min.js +489 -470
- package/dist/vuetify.min.js.map +1 -1
- package/lib/components/VAutocomplete/VAutocomplete.css +6 -6
- package/lib/components/VAutocomplete/VAutocomplete.sass +3 -9
- package/lib/components/VCarousel/VCarousel.js +3 -3
- package/lib/components/VCarousel/VCarousel.js.map +1 -1
- package/lib/components/VChip/VChip.js +1 -0
- package/lib/components/VChip/VChip.js.map +1 -1
- package/lib/components/VColorPicker/VColorPickerPreview.js +3 -3
- package/lib/components/VColorPicker/VColorPickerPreview.js.map +1 -1
- package/lib/components/VColorPicker/VColorPickerSwatches.js +3 -3
- package/lib/components/VColorPicker/VColorPickerSwatches.js.map +1 -1
- package/lib/components/VCombobox/VCombobox.css +6 -6
- package/lib/components/VCombobox/VCombobox.sass +3 -9
- package/lib/components/VDataTable/VDataTableColumn.js +4 -3
- package/lib/components/VDataTable/VDataTableColumn.js.map +1 -1
- package/lib/components/VDataTable/VDataTableFooter.js +3 -1
- package/lib/components/VDataTable/VDataTableFooter.js.map +1 -1
- package/lib/components/VDataTable/VDataTableGroupHeaderRow.js +3 -3
- package/lib/components/VDataTable/VDataTableGroupHeaderRow.js.map +1 -1
- package/lib/components/VDataTable/VDataTableHeaders.js +8 -1
- package/lib/components/VDataTable/VDataTableHeaders.js.map +1 -1
- package/lib/components/VDataTable/VDataTableVirtual.js +7 -7
- package/lib/components/VDataTable/VDataTableVirtual.js.map +1 -1
- package/lib/components/VDatePicker/VDatePicker.d.ts +20 -0
- package/lib/components/VDatePicker/VDatePicker.js +39 -2
- package/lib/components/VDatePicker/VDatePicker.js.map +1 -1
- package/lib/components/VDatePicker/VDatePickerControls.js +4 -4
- package/lib/components/VDatePicker/VDatePickerControls.js.map +1 -1
- package/lib/components/VDatePicker/VDatePickerMonth.js +5 -12
- package/lib/components/VDatePicker/VDatePickerMonth.js.map +1 -1
- package/lib/components/VDatePicker/VDatePickerMonths.d.ts +10 -0
- package/lib/components/VDatePicker/VDatePickerMonths.js +15 -5
- package/lib/components/VDatePicker/VDatePickerMonths.js.map +1 -1
- package/lib/components/VDatePicker/VDatePickerYears.d.ts +10 -0
- package/lib/components/VDatePicker/VDatePickerYears.js +17 -5
- package/lib/components/VDatePicker/VDatePickerYears.js.map +1 -1
- package/lib/components/VEmptyState/VEmptyState.js +3 -3
- package/lib/components/VEmptyState/VEmptyState.js.map +1 -1
- package/lib/components/VFileInput/VFileInput.js +8 -3
- package/lib/components/VFileInput/VFileInput.js.map +1 -1
- package/lib/components/VImg/VImg.js +7 -7
- package/lib/components/VImg/VImg.js.map +1 -1
- package/lib/components/VInfiniteScroll/VInfiniteScroll.js +3 -3
- package/lib/components/VInfiniteScroll/VInfiniteScroll.js.map +1 -1
- package/lib/components/VNumberInput/VNumberInput.d.ts +5 -0
- package/lib/components/VNumberInput/VNumberInput.js +18 -21
- package/lib/components/VNumberInput/VNumberInput.js.map +1 -1
- package/lib/components/VOtpInput/VOtpInput.js +7 -4
- package/lib/components/VOtpInput/VOtpInput.js.map +1 -1
- package/lib/components/VProgressCircular/VProgressCircular.js +2 -2
- package/lib/components/VProgressCircular/VProgressCircular.js.map +1 -1
- package/lib/components/VProgressLinear/VProgressLinear.js +3 -3
- package/lib/components/VProgressLinear/VProgressLinear.js.map +1 -1
- package/lib/components/VSelect/VSelect.css +6 -0
- package/lib/components/VSelect/VSelect.js +6 -5
- package/lib/components/VSelect/VSelect.js.map +1 -1
- package/lib/components/VSelect/VSelect.sass +3 -0
- package/lib/components/VSelect/_mixins.scss +14 -0
- package/lib/components/VSelectionControl/VSelectionControl.js +2 -2
- package/lib/components/VSelectionControl/VSelectionControl.js.map +1 -1
- package/lib/components/VSlider/VSliderThumb.js +16 -10
- package/lib/components/VSlider/VSliderThumb.js.map +1 -1
- package/lib/components/VSlider/VSliderTrack.js +6 -6
- package/lib/components/VSlider/VSliderTrack.js.map +1 -1
- package/lib/components/VSlider/slider.js +4 -1
- package/lib/components/VSlider/slider.js.map +1 -1
- package/lib/components/VTable/VTable.js +3 -3
- package/lib/components/VTable/VTable.js.map +1 -1
- package/lib/components/VTextField/VTextField.js +5 -4
- package/lib/components/VTextField/VTextField.js.map +1 -1
- package/lib/components/VToolbar/VToolbar.js +5 -5
- package/lib/components/VToolbar/VToolbar.js.map +1 -1
- package/lib/components/VVirtualScroll/VVirtualScroll.js +7 -7
- package/lib/components/VVirtualScroll/VVirtualScroll.js.map +1 -1
- package/lib/components/VWindow/VWindow.js +3 -3
- package/lib/components/VWindow/VWindow.js.map +1 -1
- package/lib/composables/date/adapters/vuetify.js +1 -1
- package/lib/composables/date/adapters/vuetify.js.map +1 -1
- package/lib/composables/date/date.d.ts +1 -0
- package/lib/composables/date/date.js +12 -0
- package/lib/composables/date/date.js.map +1 -1
- package/lib/composables/fileDrop.d.ts +4 -0
- package/lib/composables/fileDrop.js +50 -0
- package/lib/composables/fileDrop.js.map +1 -0
- package/lib/composables/icons.d.ts +6 -0
- package/lib/composables/icons.js.map +1 -1
- package/lib/entry-bundler.js +1 -1
- package/lib/framework.d.ts +56 -50
- package/lib/framework.js +1 -1
- package/lib/iconsets/fa.js +3 -1
- package/lib/iconsets/fa.js.map +1 -1
- package/lib/iconsets/fa4.js +3 -1
- package/lib/iconsets/fa4.js.map +1 -1
- package/lib/iconsets/md.js +3 -1
- package/lib/iconsets/md.js.map +1 -1
- package/lib/iconsets/mdi-svg.js +3 -1
- package/lib/iconsets/mdi-svg.js.map +1 -1
- package/lib/labs/VColorInput/VColorInput.js +3 -8
- package/lib/labs/VColorInput/VColorInput.js.map +1 -1
- package/lib/labs/VDateInput/VDateInput.d.ts +25 -0
- package/lib/labs/VDateInput/VDateInput.js +9 -16
- package/lib/labs/VDateInput/VDateInput.js.map +1 -1
- package/lib/labs/VFileUpload/VFileUpload.js +7 -3
- package/lib/labs/VFileUpload/VFileUpload.js.map +1 -1
- package/lib/labs/VPullToRefresh/VPullToRefresh.js +7 -7
- package/lib/labs/VPullToRefresh/VPullToRefresh.js.map +1 -1
- package/lib/util/helpers.d.ts +1 -0
- package/lib/util/helpers.js +8 -1
- package/lib/util/helpers.js.map +1 -1
- package/package.json +3 -3
package/dist/vuetify.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
* Vuetify v3.8.
|
|
2
|
+
* Vuetify v3.8.9
|
|
3
3
|
* Forged by John Leider
|
|
4
4
|
* Released under the MIT License.
|
|
5
5
|
*/
|
|
@@ -529,6 +529,13 @@
|
|
|
529
529
|
}
|
|
530
530
|
return cleanText;
|
|
531
531
|
}
|
|
532
|
+
function camelizeProps(props) {
|
|
533
|
+
const out = {};
|
|
534
|
+
for (const prop in props) {
|
|
535
|
+
out[vue.camelize(prop)] = props[prop];
|
|
536
|
+
}
|
|
537
|
+
return out;
|
|
538
|
+
}
|
|
532
539
|
|
|
533
540
|
// Utilities
|
|
534
541
|
const block = ['top', 'bottom'];
|
|
@@ -4039,9 +4046,9 @@
|
|
|
4039
4046
|
if (!normalisedSrc.value.src || state.value === 'idle') return null;
|
|
4040
4047
|
const img = vue.createElementVNode("img", {
|
|
4041
4048
|
"class": vue.normalizeClass(['v-img__img', containClasses.value]),
|
|
4042
|
-
"style":
|
|
4049
|
+
"style": {
|
|
4043
4050
|
objectPosition: props.position
|
|
4044
|
-
}
|
|
4051
|
+
},
|
|
4045
4052
|
"crossorigin": props.crossorigin,
|
|
4046
4053
|
"src": normalisedSrc.value.src,
|
|
4047
4054
|
"srcset": normalisedSrc.value.srcset,
|
|
@@ -4068,9 +4075,9 @@
|
|
|
4068
4075
|
}, {
|
|
4069
4076
|
default: () => [normalisedSrc.value.lazySrc && state.value !== 'loaded' && vue.createElementVNode("img", {
|
|
4070
4077
|
"class": vue.normalizeClass(['v-img__img', 'v-img__img--preload', containClasses.value]),
|
|
4071
|
-
"style":
|
|
4078
|
+
"style": {
|
|
4072
4079
|
objectPosition: props.position
|
|
4073
|
-
}
|
|
4080
|
+
},
|
|
4074
4081
|
"crossorigin": props.crossorigin,
|
|
4075
4082
|
"src": normalisedSrc.value.lazySrc,
|
|
4076
4083
|
"alt": props.alt,
|
|
@@ -4104,9 +4111,9 @@
|
|
|
4104
4111
|
if (!props.gradient) return null;
|
|
4105
4112
|
return vue.createElementVNode("div", {
|
|
4106
4113
|
"class": "v-img__gradient",
|
|
4107
|
-
"style":
|
|
4114
|
+
"style": {
|
|
4108
4115
|
backgroundImage: `linear-gradient(${props.gradient})`
|
|
4109
|
-
}
|
|
4116
|
+
}
|
|
4110
4117
|
}, null);
|
|
4111
4118
|
};
|
|
4112
4119
|
const isBooted = vue.shallowRef(false);
|
|
@@ -4317,9 +4324,9 @@
|
|
|
4317
4324
|
}, {
|
|
4318
4325
|
default: () => [vue.createElementVNode("div", {
|
|
4319
4326
|
"class": "v-toolbar__content",
|
|
4320
|
-
"style":
|
|
4327
|
+
"style": {
|
|
4321
4328
|
height: convertToUnit(contentHeight.value)
|
|
4322
|
-
}
|
|
4329
|
+
}
|
|
4323
4330
|
}, [slots.prepend && vue.createElementVNode("div", {
|
|
4324
4331
|
"class": "v-toolbar__prepend"
|
|
4325
4332
|
}, [slots.prepend?.()]), hasTitle && vue.createVNode(VToolbarTitle, {
|
|
@@ -4340,9 +4347,9 @@
|
|
|
4340
4347
|
default: () => [vue.createVNode(VExpandTransition, null, {
|
|
4341
4348
|
default: () => [isExtended.value && vue.createElementVNode("div", {
|
|
4342
4349
|
"class": "v-toolbar__extension",
|
|
4343
|
-
"style":
|
|
4350
|
+
"style": {
|
|
4344
4351
|
height: convertToUnit(extensionHeight.value)
|
|
4345
|
-
}
|
|
4352
|
+
}
|
|
4346
4353
|
}, [extension])]
|
|
4347
4354
|
})]
|
|
4348
4355
|
})]
|
|
@@ -5206,9 +5213,9 @@
|
|
|
5206
5213
|
"aria-valuenow": props.indeterminate ? undefined : normalizedValue.value
|
|
5207
5214
|
}, {
|
|
5208
5215
|
default: () => [vue.createElementVNode("svg", {
|
|
5209
|
-
"style":
|
|
5216
|
+
"style": {
|
|
5210
5217
|
transform: `rotate(calc(-90deg + ${Number(props.rotate)}deg))`
|
|
5211
|
-
}
|
|
5218
|
+
},
|
|
5212
5219
|
"xmlns": "http://www.w3.org/2000/svg",
|
|
5213
5220
|
"viewBox": `0 0 ${diameter.value} ${diameter.value}`
|
|
5214
5221
|
}, [vue.createElementVNode("circle", {
|
|
@@ -5429,7 +5436,7 @@
|
|
|
5429
5436
|
default: () => [props.stream && vue.createElementVNode("div", {
|
|
5430
5437
|
"key": "stream",
|
|
5431
5438
|
"class": vue.normalizeClass(['v-progress-linear__stream', textColorClasses.value]),
|
|
5432
|
-
"style":
|
|
5439
|
+
"style": {
|
|
5433
5440
|
...textColorStyles.value,
|
|
5434
5441
|
[isReversed.value ? 'left' : 'right']: convertToUnit(-height.value),
|
|
5435
5442
|
borderTop: `${convertToUnit(height.value / 2)} dotted`,
|
|
@@ -5437,7 +5444,7 @@
|
|
|
5437
5444
|
top: `calc(50% - ${convertToUnit(height.value / 4)})`,
|
|
5438
5445
|
width: convertToUnit(100 - normalizedBuffer.value, '%'),
|
|
5439
5446
|
'--v-progress-linear-stream-to': convertToUnit(height.value * (isReversed.value ? 1 : -1))
|
|
5440
|
-
}
|
|
5447
|
+
}
|
|
5441
5448
|
}, null), vue.createElementVNode("div", {
|
|
5442
5449
|
"class": vue.normalizeClass(['v-progress-linear__background', !isForcedColorsModeActive ? backgroundColorClasses.value : undefined]),
|
|
5443
5450
|
"style": vue.normalizeStyle([backgroundColorStyles.value, {
|
|
@@ -6745,7 +6752,7 @@
|
|
|
6745
6752
|
backgroundColorClasses,
|
|
6746
6753
|
backgroundColorStyles
|
|
6747
6754
|
}), vue.withDirectives(vue.createElementVNode("div", {
|
|
6748
|
-
"class": ['v-selection-control__input']
|
|
6755
|
+
"class": vue.normalizeClass(['v-selection-control__input'])
|
|
6749
6756
|
}, [slots.input?.({
|
|
6750
6757
|
model,
|
|
6751
6758
|
textColorClasses,
|
|
@@ -8378,6 +8385,7 @@
|
|
|
8378
8385
|
const isClickable = vue.computed(() => !props.disabled && props.link !== false && (!!group || props.link || link.isClickable.value));
|
|
8379
8386
|
const closeProps = vue.toRef(() => ({
|
|
8380
8387
|
'aria-label': t(props.closeLabel),
|
|
8388
|
+
disabled: props.disabled,
|
|
8381
8389
|
onClick(e) {
|
|
8382
8390
|
e.preventDefault();
|
|
8383
8391
|
e.stopPropagation();
|
|
@@ -12387,10 +12395,12 @@
|
|
|
12387
12395
|
const inputRef = vue.ref();
|
|
12388
12396
|
const isActive = vue.computed(() => activeTypes.includes(props.type) || props.persistentPlaceholder || isFocused.value || props.active);
|
|
12389
12397
|
function onFocus() {
|
|
12390
|
-
if (inputRef.value !== document.activeElement) {
|
|
12391
|
-
inputRef.value?.focus();
|
|
12392
|
-
}
|
|
12393
12398
|
if (!isFocused.value) focus();
|
|
12399
|
+
vue.nextTick(() => {
|
|
12400
|
+
if (inputRef.value !== document.activeElement) {
|
|
12401
|
+
inputRef.value?.focus();
|
|
12402
|
+
}
|
|
12403
|
+
});
|
|
12394
12404
|
}
|
|
12395
12405
|
function onControlMousedown(e) {
|
|
12396
12406
|
emit('mousedown:control', e);
|
|
@@ -12399,7 +12409,6 @@
|
|
|
12399
12409
|
e.preventDefault();
|
|
12400
12410
|
}
|
|
12401
12411
|
function onControlClick(e) {
|
|
12402
|
-
onFocus();
|
|
12403
12412
|
emit('click:control', e);
|
|
12404
12413
|
}
|
|
12405
12414
|
function onClear(e, reset) {
|
|
@@ -12892,14 +12901,14 @@
|
|
|
12892
12901
|
return props.renderless ? vue.createElementVNode(vue.Fragment, null, [vue.createElementVNode("div", {
|
|
12893
12902
|
"ref": markerRef,
|
|
12894
12903
|
"class": "v-virtual-scroll__spacer",
|
|
12895
|
-
"style":
|
|
12904
|
+
"style": {
|
|
12896
12905
|
paddingTop: convertToUnit(paddingTop.value)
|
|
12897
|
-
}
|
|
12906
|
+
}
|
|
12898
12907
|
}, null), children, vue.createElementVNode("div", {
|
|
12899
12908
|
"class": "v-virtual-scroll__spacer",
|
|
12900
|
-
"style":
|
|
12909
|
+
"style": {
|
|
12901
12910
|
paddingBottom: convertToUnit(paddingBottom.value)
|
|
12902
|
-
}
|
|
12911
|
+
}
|
|
12903
12912
|
}, null)]) : vue.createElementVNode("div", {
|
|
12904
12913
|
"ref": containerRef,
|
|
12905
12914
|
"class": vue.normalizeClass(['v-virtual-scroll', props.class]),
|
|
@@ -12909,10 +12918,10 @@
|
|
|
12909
12918
|
}, [vue.createElementVNode("div", {
|
|
12910
12919
|
"ref": markerRef,
|
|
12911
12920
|
"class": "v-virtual-scroll__container",
|
|
12912
|
-
"style":
|
|
12921
|
+
"style": {
|
|
12913
12922
|
paddingTop: convertToUnit(paddingTop.value),
|
|
12914
12923
|
paddingBottom: convertToUnit(paddingBottom.value)
|
|
12915
|
-
}
|
|
12924
|
+
}
|
|
12916
12925
|
}, [children])]);
|
|
12917
12926
|
});
|
|
12918
12927
|
return {
|
|
@@ -13325,6 +13334,7 @@
|
|
|
13325
13334
|
index,
|
|
13326
13335
|
itemRef
|
|
13327
13336
|
} = _ref2;
|
|
13337
|
+
const camelizedProps = camelizeProps(item.props);
|
|
13328
13338
|
const itemProps = vue.mergeProps(item.props, {
|
|
13329
13339
|
ref: itemRef,
|
|
13330
13340
|
key: item.value,
|
|
@@ -13346,10 +13356,10 @@
|
|
|
13346
13356
|
"modelValue": isSelected,
|
|
13347
13357
|
"ripple": false,
|
|
13348
13358
|
"tabindex": "-1"
|
|
13349
|
-
}, null) : undefined,
|
|
13350
|
-
"image":
|
|
13351
|
-
}, null),
|
|
13352
|
-
"icon":
|
|
13359
|
+
}, null) : undefined, camelizedProps.prependAvatar && vue.createVNode(VAvatar, {
|
|
13360
|
+
"image": camelizedProps.prependAvatar
|
|
13361
|
+
}, null), camelizedProps.prependIcon && vue.createVNode(VIcon, {
|
|
13362
|
+
"icon": camelizedProps.prependIcon
|
|
13353
13363
|
}, null)]);
|
|
13354
13364
|
}
|
|
13355
13365
|
});
|
|
@@ -15346,9 +15356,9 @@
|
|
|
15346
15356
|
}, {
|
|
15347
15357
|
default: () => [vue.createElementVNode("div", {
|
|
15348
15358
|
"class": "v-window__container",
|
|
15349
|
-
"style":
|
|
15359
|
+
"style": {
|
|
15350
15360
|
height: transitionHeight.value
|
|
15351
|
-
}
|
|
15361
|
+
}
|
|
15352
15362
|
}, [slots.default?.({
|
|
15353
15363
|
group
|
|
15354
15364
|
}), props.showArrows !== false && vue.createElementVNode("div", {
|
|
@@ -15443,10 +15453,10 @@
|
|
|
15443
15453
|
} = _ref2;
|
|
15444
15454
|
return vue.createElementVNode(vue.Fragment, null, [!props.hideDelimiters && vue.createElementVNode("div", {
|
|
15445
15455
|
"class": "v-carousel__controls",
|
|
15446
|
-
"style":
|
|
15456
|
+
"style": {
|
|
15447
15457
|
left: props.verticalDelimiters === 'left' && props.verticalDelimiters ? 0 : 'auto',
|
|
15448
15458
|
right: props.verticalDelimiters === 'right' ? 0 : 'auto'
|
|
15449
|
-
}
|
|
15459
|
+
}
|
|
15450
15460
|
}, [group.items.value.length > 0 && vue.createVNode(VDefaultsProvider, {
|
|
15451
15461
|
"defaults": {
|
|
15452
15462
|
VBtn: {
|
|
@@ -16166,7 +16176,10 @@
|
|
|
16166
16176
|
if (step.value <= 0) return value;
|
|
16167
16177
|
const clamped = clamp(value, min.value, max.value);
|
|
16168
16178
|
const offset = min.value % step.value;
|
|
16169
|
-
|
|
16179
|
+
let newValue = Math.round((clamped - offset) / step.value) * step.value + offset;
|
|
16180
|
+
if (clamped > newValue && newValue + step.value > max.value) {
|
|
16181
|
+
newValue = max.value;
|
|
16182
|
+
}
|
|
16170
16183
|
return parseFloat(Math.min(newValue, max.value).toFixed(decimals.value));
|
|
16171
16184
|
}
|
|
16172
16185
|
return {
|
|
@@ -16422,6 +16435,8 @@
|
|
|
16422
16435
|
} = useRtl();
|
|
16423
16436
|
if (!slider) throw new Error('[Vuetify] v-slider-thumb must be used inside v-slider or v-range-slider');
|
|
16424
16437
|
const {
|
|
16438
|
+
min,
|
|
16439
|
+
max,
|
|
16425
16440
|
thumbColor,
|
|
16426
16441
|
step,
|
|
16427
16442
|
disabled,
|
|
@@ -16462,16 +16477,20 @@
|
|
|
16462
16477
|
if (!relevantKeys.includes(e.key)) return;
|
|
16463
16478
|
e.preventDefault();
|
|
16464
16479
|
const _step = step.value || 0.1;
|
|
16465
|
-
const steps = (
|
|
16480
|
+
const steps = (max.value - min.value) / _step;
|
|
16466
16481
|
if ([left, right, down, up].includes(e.key)) {
|
|
16467
16482
|
const increase = vertical.value ? [isRtl.value ? left : right, isReversed.value ? down : up] : indexFromEnd.value !== isRtl.value ? [left, up] : [right, up];
|
|
16468
16483
|
const direction = increase.includes(e.key) ? 1 : -1;
|
|
16469
16484
|
const multiplier = e.shiftKey ? 2 : e.ctrlKey ? 1 : 0;
|
|
16470
|
-
|
|
16485
|
+
if (direction === -1 && value === max.value && !multiplier && !Number.isInteger(steps)) {
|
|
16486
|
+
value = value - steps % 1 * _step;
|
|
16487
|
+
} else {
|
|
16488
|
+
value = value + direction * _step * multipliers.value[multiplier];
|
|
16489
|
+
}
|
|
16471
16490
|
} else if (e.key === home) {
|
|
16472
|
-
value =
|
|
16491
|
+
value = min.value;
|
|
16473
16492
|
} else if (e.key === end) {
|
|
16474
|
-
value =
|
|
16493
|
+
value = max.value;
|
|
16475
16494
|
} else {
|
|
16476
16495
|
const direction = e.key === pagedown ? 1 : -1;
|
|
16477
16496
|
value = value - direction * _step * (steps > 100 ? steps / 10 : 10);
|
|
@@ -16496,17 +16515,17 @@
|
|
|
16496
16515
|
"role": "slider",
|
|
16497
16516
|
"tabindex": disabled.value ? -1 : 0,
|
|
16498
16517
|
"aria-label": props.name,
|
|
16499
|
-
"aria-valuemin":
|
|
16500
|
-
"aria-valuemax":
|
|
16518
|
+
"aria-valuemin": min.value,
|
|
16519
|
+
"aria-valuemax": max.value,
|
|
16501
16520
|
"aria-valuenow": props.modelValue,
|
|
16502
16521
|
"aria-readonly": !!readonly.value,
|
|
16503
16522
|
"aria-orientation": direction.value,
|
|
16504
16523
|
"onKeydown": !readonly.value ? onKeydown : undefined
|
|
16505
16524
|
}, [vue.createElementVNode("div", {
|
|
16506
16525
|
"class": vue.normalizeClass(['v-slider-thumb__surface', textColorClasses.value, elevationClasses.value]),
|
|
16507
|
-
"style":
|
|
16526
|
+
"style": {
|
|
16508
16527
|
...textColorStyles.value
|
|
16509
|
-
}
|
|
16528
|
+
}
|
|
16510
16529
|
}, null), vue.withDirectives(vue.createElementVNode("div", {
|
|
16511
16530
|
"class": vue.normalizeClass(['v-slider-thumb__ripple', textColorClasses.value]),
|
|
16512
16531
|
"style": vue.normalizeStyle(textColorStyles.value)
|
|
@@ -16519,7 +16538,7 @@
|
|
|
16519
16538
|
default: () => [vue.withDirectives(vue.createElementVNode("div", {
|
|
16520
16539
|
"class": "v-slider-thumb__label-container"
|
|
16521
16540
|
}, [vue.createElementVNode("div", {
|
|
16522
|
-
"class": ['v-slider-thumb__label']
|
|
16541
|
+
"class": vue.normalizeClass(['v-slider-thumb__label', textColorClasses.value])
|
|
16523
16542
|
}, [vue.createElementVNode("div", null, [slots['thumb-label']?.({
|
|
16524
16543
|
modelValue: props.modelValue
|
|
16525
16544
|
}) ?? props.modelValue.toFixed(step.value ? decimals.value : 1)])])]), [[vue.vShow, thumbLabel.value && props.focused || thumbLabel.value === 'always']])]
|
|
@@ -16604,9 +16623,9 @@
|
|
|
16604
16623
|
'v-slider-track__tick--first': tick.value === min.value,
|
|
16605
16624
|
'v-slider-track__tick--last': tick.value === max.value
|
|
16606
16625
|
}]),
|
|
16607
|
-
"style":
|
|
16626
|
+
"style": {
|
|
16608
16627
|
[startDir.value]: directionValue
|
|
16609
|
-
}
|
|
16628
|
+
}
|
|
16610
16629
|
}, [(tick.label || slots['tick-label']) && vue.createElementVNode("div", {
|
|
16611
16630
|
"class": "v-slider-track__tick-label"
|
|
16612
16631
|
}, [slots['tick-label']?.({
|
|
@@ -16626,16 +16645,16 @@
|
|
|
16626
16645
|
"class": vue.normalizeClass(['v-slider-track__background', trackColorClasses.value, {
|
|
16627
16646
|
'v-slider-track__background--opacity': !!color.value || !trackFillColor.value
|
|
16628
16647
|
}]),
|
|
16629
|
-
"style":
|
|
16648
|
+
"style": {
|
|
16630
16649
|
...backgroundStyles.value,
|
|
16631
16650
|
...trackColorStyles.value
|
|
16632
|
-
}
|
|
16651
|
+
}
|
|
16633
16652
|
}, null), vue.createElementVNode("div", {
|
|
16634
16653
|
"class": vue.normalizeClass(['v-slider-track__fill', trackFillColorClasses.value]),
|
|
16635
|
-
"style":
|
|
16654
|
+
"style": {
|
|
16636
16655
|
...trackFillStyles.value,
|
|
16637
16656
|
...trackFillColorStyles.value
|
|
16638
|
-
}
|
|
16657
|
+
}
|
|
16639
16658
|
}, null), showTicks.value && vue.createElementVNode("div", {
|
|
16640
16659
|
"class": vue.normalizeClass(['v-slider-track__ticks', {
|
|
16641
16660
|
'v-slider-track__ticks--always-show': showTicks.value === 'always'
|
|
@@ -16837,9 +16856,9 @@
|
|
|
16837
16856
|
}, null)]), vue.createElementVNode("div", {
|
|
16838
16857
|
"class": "v-color-picker-preview__dot"
|
|
16839
16858
|
}, [vue.createElementVNode("div", {
|
|
16840
|
-
"style":
|
|
16859
|
+
"style": {
|
|
16841
16860
|
background: HSVtoCSS(props.color ?? nullColor)
|
|
16842
|
-
}
|
|
16861
|
+
}
|
|
16843
16862
|
}, null)]), vue.createElementVNode("div", {
|
|
16844
16863
|
"class": "v-color-picker-preview__sliders"
|
|
16845
16864
|
}, [vue.createVNode(VSlider, {
|
|
@@ -17240,9 +17259,9 @@
|
|
|
17240
17259
|
"class": "v-color-picker-swatches__color",
|
|
17241
17260
|
"onClick": () => hsva && emit('update:color', hsva)
|
|
17242
17261
|
}, [vue.createElementVNode("div", {
|
|
17243
|
-
"style":
|
|
17262
|
+
"style": {
|
|
17244
17263
|
background
|
|
17245
|
-
}
|
|
17264
|
+
}
|
|
17246
17265
|
}, [props.color && deepEqual(props.color, hsva) ? vue.createVNode(VIcon, {
|
|
17247
17266
|
"size": "x-small",
|
|
17248
17267
|
"icon": "$success",
|
|
@@ -17788,7 +17807,7 @@
|
|
|
17788
17807
|
const yearStart = new Date(year, 0, 1);
|
|
17789
17808
|
const size = firstWeekSize(year);
|
|
17790
17809
|
const d1w1 = size >= minWeekSize ? addDays(yearStart, size - 7) : addDays(yearStart, size);
|
|
17791
|
-
return 1 + getDiff(date, d1w1, 'weeks');
|
|
17810
|
+
return 1 + getDiff(endOfDay(date), startOfDay(d1w1), 'weeks');
|
|
17792
17811
|
}
|
|
17793
17812
|
function getDate(date) {
|
|
17794
17813
|
return date.getDate();
|
|
@@ -18091,6 +18110,18 @@
|
|
|
18091
18110
|
instance: createInstance(_options, locale)
|
|
18092
18111
|
};
|
|
18093
18112
|
}
|
|
18113
|
+
function createDateRange(adapter, start, stop) {
|
|
18114
|
+
const diff = adapter.getDiff(adapter.endOfDay(stop ?? start), adapter.startOfDay(start), 'days');
|
|
18115
|
+
const datesInRange = [start];
|
|
18116
|
+
for (let i = 1; i < diff; i++) {
|
|
18117
|
+
const nextDate = adapter.addDays(start, i);
|
|
18118
|
+
datesInRange.push(nextDate);
|
|
18119
|
+
}
|
|
18120
|
+
if (stop) {
|
|
18121
|
+
datesInRange.push(adapter.endOfDay(stop));
|
|
18122
|
+
}
|
|
18123
|
+
return datesInRange;
|
|
18124
|
+
}
|
|
18094
18125
|
function createInstance(options, locale) {
|
|
18095
18126
|
const instance = vue.reactive(typeof options.adapter === 'function'
|
|
18096
18127
|
// eslint-disable-next-line new-cap
|
|
@@ -20190,7 +20221,9 @@
|
|
|
20190
20221
|
"class": "v-data-table-footer"
|
|
20191
20222
|
}, [slots.prepend?.(), vue.createElementVNode("div", {
|
|
20192
20223
|
"class": "v-data-table-footer__items-per-page"
|
|
20193
|
-
}, [vue.createElementVNode("span",
|
|
20224
|
+
}, [vue.createElementVNode("span", {
|
|
20225
|
+
"aria-label": t(props.itemsPerPageText)
|
|
20226
|
+
}, [t(props.itemsPerPageText)]), vue.createVNode(VSelect, {
|
|
20194
20227
|
"items": itemsPerPageOptions.value,
|
|
20195
20228
|
"modelValue": itemsPerPage.value,
|
|
20196
20229
|
"onUpdate:modelValue": v => setItemsPerPage(Number(v)),
|
|
@@ -20242,18 +20275,19 @@
|
|
|
20242
20275
|
} = _ref;
|
|
20243
20276
|
const Tag = props.tag ?? 'td';
|
|
20244
20277
|
return vue.createVNode(Tag, {
|
|
20278
|
+
"tabindex": "0",
|
|
20245
20279
|
"class": vue.normalizeClass(['v-data-table__td', {
|
|
20246
20280
|
'v-data-table-column--fixed': props.fixed,
|
|
20247
20281
|
'v-data-table-column--last-fixed': props.lastFixed,
|
|
20248
20282
|
'v-data-table-column--no-padding': props.noPadding,
|
|
20249
20283
|
'v-data-table-column--nowrap': props.nowrap
|
|
20250
20284
|
}, `v-data-table-column--align-${props.align}`]),
|
|
20251
|
-
"style":
|
|
20285
|
+
"style": {
|
|
20252
20286
|
height: convertToUnit(props.height),
|
|
20253
20287
|
width: convertToUnit(props.width),
|
|
20254
20288
|
maxWidth: convertToUnit(props.maxWidth),
|
|
20255
20289
|
left: convertToUnit(props.fixedOffset || null)
|
|
20256
|
-
}
|
|
20290
|
+
}
|
|
20257
20291
|
}, {
|
|
20258
20292
|
default: () => [slots.default?.()]
|
|
20259
20293
|
});
|
|
@@ -20586,6 +20620,11 @@
|
|
|
20586
20620
|
top: props.sticky || props.fixedHeader ? `calc(var(--v-table-header-height) * ${y})` : undefined
|
|
20587
20621
|
};
|
|
20588
20622
|
}
|
|
20623
|
+
function handleEnterKeyPress(event, column) {
|
|
20624
|
+
if (event.key === 'Enter' && !props.disableSort) {
|
|
20625
|
+
toggleSort(column);
|
|
20626
|
+
}
|
|
20627
|
+
}
|
|
20589
20628
|
function getSortIcon(column) {
|
|
20590
20629
|
const item = sortBy.value.find(item => item.key === column.key);
|
|
20591
20630
|
if (!item) return props.sortAscIcon;
|
|
@@ -20642,7 +20681,9 @@
|
|
|
20642
20681
|
"nowrap": column.nowrap,
|
|
20643
20682
|
"lastFixed": column.lastFixed,
|
|
20644
20683
|
"noPadding": noPadding
|
|
20645
|
-
}, headerProps
|
|
20684
|
+
}, headerProps, {
|
|
20685
|
+
"onKeydown": event => column.sortable && handleEnterKeyPress(event, column)
|
|
20686
|
+
}), {
|
|
20646
20687
|
default: () => {
|
|
20647
20688
|
const columnSlotName = `header.${column.key}`;
|
|
20648
20689
|
const columnSlotProps = {
|
|
@@ -20778,9 +20819,9 @@
|
|
|
20778
20819
|
});
|
|
20779
20820
|
return () => vue.createElementVNode("tr", {
|
|
20780
20821
|
"class": "v-data-table-group-header-row",
|
|
20781
|
-
"style":
|
|
20822
|
+
"style": {
|
|
20782
20823
|
'--v-data-table-group-header-row-depth': props.item.depth
|
|
20783
|
-
}
|
|
20824
|
+
}
|
|
20784
20825
|
}, [columns.value.map(column => {
|
|
20785
20826
|
if (column.key === 'data-table-group') {
|
|
20786
20827
|
const icon = isGroupOpen(props.item) ? '$expand' : '$next';
|
|
@@ -21128,9 +21169,9 @@
|
|
|
21128
21169
|
}, {
|
|
21129
21170
|
default: () => [slots.top?.(), slots.default ? vue.createElementVNode("div", {
|
|
21130
21171
|
"class": "v-table__wrapper",
|
|
21131
|
-
"style":
|
|
21172
|
+
"style": {
|
|
21132
21173
|
height: convertToUnit(props.height)
|
|
21133
|
-
}
|
|
21174
|
+
}
|
|
21134
21175
|
}, [vue.createElementVNode("table", null, [slots.default()])]) : slots.wrapper?.(), slots.bottom?.()]
|
|
21135
21176
|
}));
|
|
21136
21177
|
return {};
|
|
@@ -21565,19 +21606,19 @@
|
|
|
21565
21606
|
"onScrollPassive": handleScroll,
|
|
21566
21607
|
"onScrollend": handleScrollend,
|
|
21567
21608
|
"class": "v-table__wrapper",
|
|
21568
|
-
"style":
|
|
21609
|
+
"style": {
|
|
21569
21610
|
height: convertToUnit(props.height)
|
|
21570
|
-
}
|
|
21611
|
+
}
|
|
21571
21612
|
}, [vue.createElementVNode("table", null, [slots.colgroup?.(slotProps.value), !props.hideDefaultHeader && vue.createElementVNode("thead", {
|
|
21572
21613
|
"key": "thead"
|
|
21573
21614
|
}, [vue.createVNode(VDataTableHeaders, dataTableHeadersProps, slots)]), slots.thead?.(slotProps.value), !props.hideDefaultBody && vue.createElementVNode("tbody", {
|
|
21574
21615
|
"key": "tbody"
|
|
21575
21616
|
}, [vue.createElementVNode("tr", {
|
|
21576
21617
|
"ref": markerRef,
|
|
21577
|
-
"style":
|
|
21618
|
+
"style": {
|
|
21578
21619
|
height: convertToUnit(paddingTop.value),
|
|
21579
21620
|
border: 0
|
|
21580
|
-
}
|
|
21621
|
+
}
|
|
21581
21622
|
}, [vue.createElementVNode("td", {
|
|
21582
21623
|
"colspan": columns.value.length,
|
|
21583
21624
|
"style": {
|
|
@@ -21608,10 +21649,10 @@
|
|
|
21608
21649
|
}
|
|
21609
21650
|
})
|
|
21610
21651
|
}), slots['body.append']?.(slotProps.value), vue.createElementVNode("tr", {
|
|
21611
|
-
"style":
|
|
21652
|
+
"style": {
|
|
21612
21653
|
height: convertToUnit(paddingBottom.value),
|
|
21613
21654
|
border: 0
|
|
21614
|
-
}
|
|
21655
|
+
}
|
|
21615
21656
|
}, [vue.createElementVNode("td", {
|
|
21616
21657
|
"colspan": columns.value.length,
|
|
21617
21658
|
"style": {
|
|
@@ -22149,10 +22190,10 @@
|
|
|
22149
22190
|
useRender(() => {
|
|
22150
22191
|
// TODO: add slot support and scope defaults
|
|
22151
22192
|
return vue.createElementVNode("div", {
|
|
22152
|
-
"class": ['v-date-picker-controls'],
|
|
22153
|
-
"style":
|
|
22193
|
+
"class": vue.normalizeClass(['v-date-picker-controls']),
|
|
22194
|
+
"style": {
|
|
22154
22195
|
'--v-date-picker-controls-height': convertToUnit(props.controlHeight)
|
|
22155
|
-
}
|
|
22196
|
+
}
|
|
22156
22197
|
}, [vue.createVNode(VBtn, {
|
|
22157
22198
|
"class": "v-date-picker-controls__month-btn",
|
|
22158
22199
|
"data-testid": "month-btn",
|
|
@@ -22495,14 +22536,7 @@
|
|
|
22495
22536
|
} else {
|
|
22496
22537
|
rangeStop.value = adapter.endOfDay(_value);
|
|
22497
22538
|
}
|
|
22498
|
-
|
|
22499
|
-
const datesInRange = [rangeStart.value];
|
|
22500
|
-
for (let i = 1; i < diff; i++) {
|
|
22501
|
-
const nextDate = adapter.addDays(rangeStart.value, i);
|
|
22502
|
-
datesInRange.push(nextDate);
|
|
22503
|
-
}
|
|
22504
|
-
datesInRange.push(rangeStop.value);
|
|
22505
|
-
model.value = datesInRange;
|
|
22539
|
+
model.value = createDateRange(adapter, rangeStart.value, rangeStop.value);
|
|
22506
22540
|
} else {
|
|
22507
22541
|
rangeStart.value = value;
|
|
22508
22542
|
rangeStop.value = undefined;
|
|
@@ -22537,7 +22571,7 @@
|
|
|
22537
22571
|
"key": "hide-week-days",
|
|
22538
22572
|
"class": "v-date-picker-month__day"
|
|
22539
22573
|
}, [vue.createTextVNode("\xA0")]), weekNumbers.value.map(week => vue.createElementVNode("div", {
|
|
22540
|
-
"class": ['v-date-picker-month__day', 'v-date-picker-month__day--adjacent']
|
|
22574
|
+
"class": vue.normalizeClass(['v-date-picker-month__day', 'v-date-picker-month__day--adjacent'])
|
|
22541
22575
|
}, [week]))]), vue.createVNode(MaybeTransition, {
|
|
22542
22576
|
"name": transition.value
|
|
22543
22577
|
}, {
|
|
@@ -22546,7 +22580,7 @@
|
|
|
22546
22580
|
"key": daysInMonth.value[0].date?.toString(),
|
|
22547
22581
|
"class": "v-date-picker-month__days"
|
|
22548
22582
|
}, [!props.hideWeekdays && adapter.getWeekdays(props.firstDayOfWeek).map(weekDay => vue.createElementVNode("div", {
|
|
22549
|
-
"class": ['v-date-picker-month__day', 'v-date-picker-month__weekday']
|
|
22583
|
+
"class": vue.normalizeClass(['v-date-picker-month__day', 'v-date-picker-month__weekday'])
|
|
22550
22584
|
}, [weekDay])), daysInMonth.value.map((item, i) => {
|
|
22551
22585
|
const slotProps = {
|
|
22552
22586
|
props: {
|
|
@@ -22588,7 +22622,8 @@
|
|
|
22588
22622
|
min: null,
|
|
22589
22623
|
max: null,
|
|
22590
22624
|
modelValue: Number,
|
|
22591
|
-
year: Number
|
|
22625
|
+
year: Number,
|
|
22626
|
+
allowedMonths: [Array, Function]
|
|
22592
22627
|
}, 'VDatePickerMonths');
|
|
22593
22628
|
const VDatePickerMonths = genericComponent()({
|
|
22594
22629
|
name: 'VDatePickerMonths',
|
|
@@ -22610,7 +22645,7 @@
|
|
|
22610
22645
|
}
|
|
22611
22646
|
return createRange(12).map(i => {
|
|
22612
22647
|
const text = adapter.format(date, 'monthShort');
|
|
22613
|
-
const isDisabled = !!(props.min && adapter.isAfter(adapter.startOfMonth(adapter.date(props.min)), date) || props.max && adapter.isAfter(date, adapter.startOfMonth(adapter.date(props.max))));
|
|
22648
|
+
const isDisabled = !!(!isMonthAllowed(i) || props.min && adapter.isAfter(adapter.startOfMonth(adapter.date(props.min)), date) || props.max && adapter.isAfter(date, adapter.startOfMonth(adapter.date(props.max))));
|
|
22614
22649
|
date = adapter.getNextMonth(date);
|
|
22615
22650
|
return {
|
|
22616
22651
|
isDisabled,
|
|
@@ -22622,11 +22657,20 @@
|
|
|
22622
22657
|
vue.watchEffect(() => {
|
|
22623
22658
|
model.value = model.value ?? adapter.getMonth(adapter.date());
|
|
22624
22659
|
});
|
|
22660
|
+
function isMonthAllowed(month) {
|
|
22661
|
+
if (Array.isArray(props.allowedMonths) && props.allowedMonths.length) {
|
|
22662
|
+
return props.allowedMonths.includes(month);
|
|
22663
|
+
}
|
|
22664
|
+
if (typeof props.allowedMonths === 'function') {
|
|
22665
|
+
return props.allowedMonths(month);
|
|
22666
|
+
}
|
|
22667
|
+
return true;
|
|
22668
|
+
}
|
|
22625
22669
|
useRender(() => vue.createElementVNode("div", {
|
|
22626
22670
|
"class": "v-date-picker-months",
|
|
22627
|
-
"style":
|
|
22671
|
+
"style": {
|
|
22628
22672
|
height: convertToUnit(props.height)
|
|
22629
|
-
}
|
|
22673
|
+
}
|
|
22630
22674
|
}, [vue.createElementVNode("div", {
|
|
22631
22675
|
"class": "v-date-picker-months__content"
|
|
22632
22676
|
}, [months.value.map((month, i) => {
|
|
@@ -22667,7 +22711,8 @@
|
|
|
22667
22711
|
height: [String, Number],
|
|
22668
22712
|
min: null,
|
|
22669
22713
|
max: null,
|
|
22670
|
-
modelValue: Number
|
|
22714
|
+
modelValue: Number,
|
|
22715
|
+
allowedYears: [Array, Function]
|
|
22671
22716
|
}, 'VDatePickerYears');
|
|
22672
22717
|
const VDatePickerYears = genericComponent()({
|
|
22673
22718
|
name: 'VDatePickerYears',
|
|
@@ -22699,7 +22744,8 @@
|
|
|
22699
22744
|
date = adapter.setYear(date, adapter.getYear(date) + 1);
|
|
22700
22745
|
return {
|
|
22701
22746
|
text,
|
|
22702
|
-
value: i
|
|
22747
|
+
value: i,
|
|
22748
|
+
isDisabled: !isYearAllowed(i)
|
|
22703
22749
|
};
|
|
22704
22750
|
});
|
|
22705
22751
|
});
|
|
@@ -22713,11 +22759,20 @@
|
|
|
22713
22759
|
block: 'center'
|
|
22714
22760
|
});
|
|
22715
22761
|
});
|
|
22762
|
+
function isYearAllowed(year) {
|
|
22763
|
+
if (Array.isArray(props.allowedYears) && props.allowedYears.length) {
|
|
22764
|
+
return props.allowedYears.includes(year);
|
|
22765
|
+
}
|
|
22766
|
+
if (typeof props.allowedYears === 'function') {
|
|
22767
|
+
return props.allowedYears(year);
|
|
22768
|
+
}
|
|
22769
|
+
return true;
|
|
22770
|
+
}
|
|
22716
22771
|
useRender(() => vue.createElementVNode("div", {
|
|
22717
22772
|
"class": "v-date-picker-years",
|
|
22718
|
-
"style":
|
|
22773
|
+
"style": {
|
|
22719
22774
|
height: convertToUnit(props.height)
|
|
22720
|
-
}
|
|
22775
|
+
}
|
|
22721
22776
|
}, [vue.createElementVNode("div", {
|
|
22722
22777
|
"class": "v-date-picker-years__content"
|
|
22723
22778
|
}, [years.value.map((year, i) => {
|
|
@@ -22727,6 +22782,7 @@
|
|
|
22727
22782
|
color: model.value === year.value ? props.color : undefined,
|
|
22728
22783
|
rounded: true,
|
|
22729
22784
|
text: year.text,
|
|
22785
|
+
disabled: year.isDisabled,
|
|
22730
22786
|
variant: model.value === year.value ? 'flat' : 'text',
|
|
22731
22787
|
onClick: () => {
|
|
22732
22788
|
if (model.value === year.value) {
|
|
@@ -22876,6 +22932,41 @@
|
|
|
22876
22932
|
}
|
|
22877
22933
|
return targets;
|
|
22878
22934
|
});
|
|
22935
|
+
function isAllowedInRange(start, end) {
|
|
22936
|
+
const allowedDates = props.allowedDates;
|
|
22937
|
+
if (typeof allowedDates !== 'function') return true;
|
|
22938
|
+
const days = adapter.getDiff(end, start, 'days');
|
|
22939
|
+
for (let i = 0; i < days; i++) {
|
|
22940
|
+
if (allowedDates(adapter.addDays(start, i))) return true;
|
|
22941
|
+
}
|
|
22942
|
+
return false;
|
|
22943
|
+
}
|
|
22944
|
+
function allowedYears(year) {
|
|
22945
|
+
if (typeof props.allowedDates === 'function') {
|
|
22946
|
+
const startOfYear = adapter.parseISO(`${year}-01-01`);
|
|
22947
|
+
return isAllowedInRange(startOfYear, adapter.endOfYear(startOfYear));
|
|
22948
|
+
}
|
|
22949
|
+
if (Array.isArray(props.allowedDates) && props.allowedDates.length) {
|
|
22950
|
+
for (const date of props.allowedDates) {
|
|
22951
|
+
if (adapter.getYear(adapter.date(date)) === year) return true;
|
|
22952
|
+
}
|
|
22953
|
+
return false;
|
|
22954
|
+
}
|
|
22955
|
+
return true;
|
|
22956
|
+
}
|
|
22957
|
+
function allowedMonths(month) {
|
|
22958
|
+
if (typeof props.allowedDates === 'function') {
|
|
22959
|
+
const startOfMonth = adapter.parseISO(`${year.value}-${month + 1}-01`);
|
|
22960
|
+
return isAllowedInRange(startOfMonth, adapter.endOfMonth(startOfMonth));
|
|
22961
|
+
}
|
|
22962
|
+
if (Array.isArray(props.allowedDates) && props.allowedDates.length) {
|
|
22963
|
+
for (const date of props.allowedDates) {
|
|
22964
|
+
if (adapter.getYear(adapter.date(date)) === year.value && adapter.getMonth(adapter.date(date)) === month) return true;
|
|
22965
|
+
}
|
|
22966
|
+
return false;
|
|
22967
|
+
}
|
|
22968
|
+
return true;
|
|
22969
|
+
}
|
|
22879
22970
|
|
|
22880
22971
|
// function onClickAppend () {
|
|
22881
22972
|
// inputMode.value = inputMode.value === 'calendar' ? 'keyboard' : 'calendar'
|
|
@@ -22991,14 +23082,16 @@
|
|
|
22991
23082
|
"onUpdate:modelValue": [$event => month.value = $event, onUpdateMonth],
|
|
22992
23083
|
"min": minDate.value,
|
|
22993
23084
|
"max": maxDate.value,
|
|
22994
|
-
"year": year.value
|
|
23085
|
+
"year": year.value,
|
|
23086
|
+
"allowedMonths": allowedMonths
|
|
22995
23087
|
}), null) : viewMode.value === 'year' ? vue.createVNode(VDatePickerYears, vue.mergeProps({
|
|
22996
23088
|
"key": "date-picker-years"
|
|
22997
23089
|
}, datePickerYearsProps, {
|
|
22998
23090
|
"modelValue": year.value,
|
|
22999
23091
|
"onUpdate:modelValue": [$event => year.value = $event, onUpdateYear],
|
|
23000
23092
|
"min": minDate.value,
|
|
23001
|
-
"max": maxDate.value
|
|
23093
|
+
"max": maxDate.value,
|
|
23094
|
+
"allowedYears": allowedYears
|
|
23002
23095
|
}), null) : vue.createVNode(VDatePickerMonth, vue.mergeProps({
|
|
23003
23096
|
"key": "date-picker-month"
|
|
23004
23097
|
}, datePickerMonthProps, {
|
|
@@ -23123,9 +23216,9 @@
|
|
|
23123
23216
|
}, [slots.title?.() ?? props.title]), hasText && vue.createElementVNode("div", {
|
|
23124
23217
|
"key": "text",
|
|
23125
23218
|
"class": "v-empty-state__text",
|
|
23126
|
-
"style":
|
|
23219
|
+
"style": {
|
|
23127
23220
|
maxWidth: convertToUnit(props.textWidth)
|
|
23128
|
-
}
|
|
23221
|
+
}
|
|
23129
23222
|
}, [slots.text?.() ?? props.text]), slots.default && vue.createElementVNode("div", {
|
|
23130
23223
|
"key": "content",
|
|
23131
23224
|
"class": "v-empty-state__content"
|
|
@@ -23530,6 +23623,56 @@
|
|
|
23530
23623
|
|
|
23531
23624
|
// Types
|
|
23532
23625
|
|
|
23626
|
+
function useFileDrop() {
|
|
23627
|
+
function hasFilesOrFolders(e) {
|
|
23628
|
+
const entries = [...(e.dataTransfer?.items ?? [])].filter(x => x.kind === 'file').map(x => x.webkitGetAsEntry()).filter(Boolean);
|
|
23629
|
+
return entries.length > 0 || [...(e.dataTransfer?.files ?? [])].length > 0;
|
|
23630
|
+
}
|
|
23631
|
+
async function handleDrop(e) {
|
|
23632
|
+
const result = [];
|
|
23633
|
+
const entries = [...(e.dataTransfer?.items ?? [])].filter(x => x.kind === 'file').map(x => x.webkitGetAsEntry()).filter(Boolean);
|
|
23634
|
+
if (entries.length) {
|
|
23635
|
+
for (const entry of entries) {
|
|
23636
|
+
const files = await traverseFileTree(entry, appendIfDirectory('.', entry));
|
|
23637
|
+
result.push(...files.map(x => x.file));
|
|
23638
|
+
}
|
|
23639
|
+
} else {
|
|
23640
|
+
result.push(...[...(e.dataTransfer?.files ?? [])]);
|
|
23641
|
+
}
|
|
23642
|
+
return result;
|
|
23643
|
+
}
|
|
23644
|
+
return {
|
|
23645
|
+
handleDrop,
|
|
23646
|
+
hasFilesOrFolders
|
|
23647
|
+
};
|
|
23648
|
+
}
|
|
23649
|
+
function traverseFileTree(item) {
|
|
23650
|
+
let path = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';
|
|
23651
|
+
return new Promise((resolve, reject) => {
|
|
23652
|
+
if (item.isFile) {
|
|
23653
|
+
const fileEntry = item;
|
|
23654
|
+
fileEntry.file(file => resolve([{
|
|
23655
|
+
file,
|
|
23656
|
+
path
|
|
23657
|
+
}]), reject);
|
|
23658
|
+
} else if (item.isDirectory) {
|
|
23659
|
+
const directoryReader = item.createReader();
|
|
23660
|
+
directoryReader.readEntries(async entries => {
|
|
23661
|
+
const files = [];
|
|
23662
|
+
for (const entry of entries) {
|
|
23663
|
+
files.push(...(await traverseFileTree(entry, appendIfDirectory(path, entry))));
|
|
23664
|
+
}
|
|
23665
|
+
resolve(files);
|
|
23666
|
+
});
|
|
23667
|
+
}
|
|
23668
|
+
});
|
|
23669
|
+
}
|
|
23670
|
+
function appendIfDirectory(path, item) {
|
|
23671
|
+
return item.isDirectory ? `${path}/${item.name}` : path;
|
|
23672
|
+
}
|
|
23673
|
+
|
|
23674
|
+
// Types
|
|
23675
|
+
|
|
23533
23676
|
const makeVFileInputProps = propsFactory({
|
|
23534
23677
|
chips: Boolean,
|
|
23535
23678
|
counter: Boolean,
|
|
@@ -23614,6 +23757,10 @@
|
|
|
23614
23757
|
const isActive = vue.toRef(() => isFocused.value || props.active);
|
|
23615
23758
|
const isPlainOrUnderlined = vue.computed(() => ['plain', 'underlined'].includes(props.variant));
|
|
23616
23759
|
const isDragging = vue.shallowRef(false);
|
|
23760
|
+
const {
|
|
23761
|
+
handleDrop,
|
|
23762
|
+
hasFilesOrFolders
|
|
23763
|
+
} = useFileDrop();
|
|
23617
23764
|
function onFocus() {
|
|
23618
23765
|
if (inputRef.value !== document.activeElement) {
|
|
23619
23766
|
inputRef.value?.focus();
|
|
@@ -23647,13 +23794,13 @@
|
|
|
23647
23794
|
e.preventDefault();
|
|
23648
23795
|
isDragging.value = false;
|
|
23649
23796
|
}
|
|
23650
|
-
function onDrop(e) {
|
|
23797
|
+
async function onDrop(e) {
|
|
23651
23798
|
e.preventDefault();
|
|
23652
23799
|
e.stopImmediatePropagation();
|
|
23653
23800
|
isDragging.value = false;
|
|
23654
|
-
if (!
|
|
23801
|
+
if (!inputRef.value || !hasFilesOrFolders(e)) return;
|
|
23655
23802
|
const dataTransfer = new DataTransfer();
|
|
23656
|
-
for (const file of e
|
|
23803
|
+
for (const file of await handleDrop(e)) {
|
|
23657
23804
|
dataTransfer.items.add(file);
|
|
23658
23805
|
}
|
|
23659
23806
|
inputRef.value.files = dataTransfer.files;
|
|
@@ -23990,9 +24137,9 @@
|
|
|
23990
24137
|
});
|
|
23991
24138
|
useRender(() => vue.createElementVNode("div", {
|
|
23992
24139
|
"class": "v-infinite-scroll-intersect",
|
|
23993
|
-
"style":
|
|
24140
|
+
"style": {
|
|
23994
24141
|
'--v-infinite-margin-size': props.rootMargin
|
|
23995
|
-
}
|
|
24142
|
+
},
|
|
23996
24143
|
"ref": intersectionRef
|
|
23997
24144
|
}, [vue.createTextVNode("\xA0")]));
|
|
23998
24145
|
return {};
|
|
@@ -25084,6 +25231,7 @@
|
|
|
25084
25231
|
...makeVNumberInputProps()
|
|
25085
25232
|
},
|
|
25086
25233
|
emits: {
|
|
25234
|
+
'update:focused': val => true,
|
|
25087
25235
|
'update:modelValue': val => true
|
|
25088
25236
|
},
|
|
25089
25237
|
setup(props, _ref) {
|
|
@@ -25099,11 +25247,7 @@
|
|
|
25099
25247
|
});
|
|
25100
25248
|
const form = useForm(props);
|
|
25101
25249
|
const controlsDisabled = vue.computed(() => form.isDisabled.value || form.isReadonly.value);
|
|
25102
|
-
const
|
|
25103
|
-
isFocused,
|
|
25104
|
-
focus,
|
|
25105
|
-
blur
|
|
25106
|
-
} = useFocus(props);
|
|
25250
|
+
const isFocused = vue.shallowRef(props.focused);
|
|
25107
25251
|
function correctPrecision(val) {
|
|
25108
25252
|
let precision = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : props.precision;
|
|
25109
25253
|
const fixed = precision == null ? String(val) : val.toFixed(precision);
|
|
@@ -25148,22 +25292,18 @@
|
|
|
25148
25292
|
const controlNodeDefaultHeight = vue.toRef(() => controlVariant.value === 'stacked' ? 'auto' : '100%');
|
|
25149
25293
|
const incrementSlotProps = {
|
|
25150
25294
|
props: {
|
|
25151
|
-
style: {
|
|
25152
|
-
touchAction: 'none'
|
|
25153
|
-
},
|
|
25154
25295
|
onClick: onControlClick,
|
|
25155
25296
|
onPointerup: onControlMouseup,
|
|
25156
|
-
onPointerdown: onUpControlMousedown
|
|
25297
|
+
onPointerdown: onUpControlMousedown,
|
|
25298
|
+
onPointercancel: onControlPointerCancel
|
|
25157
25299
|
}
|
|
25158
25300
|
};
|
|
25159
25301
|
const decrementSlotProps = {
|
|
25160
25302
|
props: {
|
|
25161
|
-
style: {
|
|
25162
|
-
touchAction: 'none'
|
|
25163
|
-
},
|
|
25164
25303
|
onClick: onControlClick,
|
|
25165
25304
|
onPointerup: onControlMouseup,
|
|
25166
|
-
onPointerdown: onDownControlMousedown
|
|
25305
|
+
onPointerdown: onDownControlMousedown,
|
|
25306
|
+
onPointercancel: onControlPointerCancel
|
|
25167
25307
|
}
|
|
25168
25308
|
};
|
|
25169
25309
|
vue.watch(() => props.precision, () => formatInputValue());
|
|
@@ -25260,6 +25400,11 @@
|
|
|
25260
25400
|
e.stopPropagation();
|
|
25261
25401
|
holdStart('down');
|
|
25262
25402
|
}
|
|
25403
|
+
function onControlPointerCancel(e) {
|
|
25404
|
+
const el = e.currentTarget;
|
|
25405
|
+
el?.releasePointerCapture(e.pointerId);
|
|
25406
|
+
holdStop();
|
|
25407
|
+
}
|
|
25263
25408
|
function clampModel() {
|
|
25264
25409
|
if (controlsDisabled.value) return;
|
|
25265
25410
|
if (!vTextFieldRef.value) return;
|
|
@@ -25287,11 +25432,9 @@
|
|
|
25287
25432
|
inputText.value = model.value.toString();
|
|
25288
25433
|
}
|
|
25289
25434
|
function onFocus() {
|
|
25290
|
-
focus();
|
|
25291
25435
|
trimDecimalZeros();
|
|
25292
25436
|
}
|
|
25293
25437
|
function onBlur() {
|
|
25294
|
-
blur();
|
|
25295
25438
|
clampModel();
|
|
25296
25439
|
}
|
|
25297
25440
|
useRender(() => {
|
|
@@ -25311,8 +25454,8 @@
|
|
|
25311
25454
|
"onClick": onControlClick,
|
|
25312
25455
|
"onPointerdown": onUpControlMousedown,
|
|
25313
25456
|
"onPointerup": onControlMouseup,
|
|
25457
|
+
"onPointercancel": onControlPointerCancel,
|
|
25314
25458
|
"size": controlNodeSize.value,
|
|
25315
|
-
"style": "touch-action: none",
|
|
25316
25459
|
"tabindex": "-1"
|
|
25317
25460
|
}, null) : vue.createVNode(VDefaultsProvider, {
|
|
25318
25461
|
"key": "increment-defaults",
|
|
@@ -25341,8 +25484,8 @@
|
|
|
25341
25484
|
"onClick": onControlClick,
|
|
25342
25485
|
"onPointerdown": onDownControlMousedown,
|
|
25343
25486
|
"onPointerup": onControlMouseup,
|
|
25487
|
+
"onPointercancel": onControlPointerCancel,
|
|
25344
25488
|
"size": controlNodeSize.value,
|
|
25345
|
-
"style": "touch-action: none",
|
|
25346
25489
|
"tabindex": "-1"
|
|
25347
25490
|
}, null) : vue.createVNode(VDefaultsProvider, {
|
|
25348
25491
|
"key": "decrement-defaults",
|
|
@@ -25384,9 +25527,12 @@
|
|
|
25384
25527
|
}, null)]) : props.reverse && controlVariant.value !== 'hidden' ? vue.createElementVNode(vue.Fragment, null, [controlNode(), dividerNode()]) : undefined;
|
|
25385
25528
|
const hasPrependInner = slots['prepend-inner'] || prependInnerControl;
|
|
25386
25529
|
return vue.createVNode(VTextField, vue.mergeProps({
|
|
25387
|
-
"ref": vTextFieldRef
|
|
25530
|
+
"ref": vTextFieldRef
|
|
25531
|
+
}, textFieldProps, {
|
|
25388
25532
|
"modelValue": inputText.value,
|
|
25389
25533
|
"onUpdate:modelValue": $event => inputText.value = $event,
|
|
25534
|
+
"focused": isFocused.value,
|
|
25535
|
+
"onUpdate:focused": $event => isFocused.value = $event,
|
|
25390
25536
|
"validationValue": model.value,
|
|
25391
25537
|
"onBeforeinput": onBeforeinput,
|
|
25392
25538
|
"onFocus": onFocus,
|
|
@@ -25399,8 +25545,7 @@
|
|
|
25399
25545
|
'v-number-input--reverse': props.reverse,
|
|
25400
25546
|
'v-number-input--split': controlVariant.value === 'split',
|
|
25401
25547
|
'v-number-input--stacked': controlVariant.value === 'stacked'
|
|
25402
|
-
}, props.class]
|
|
25403
|
-
}, textFieldProps, {
|
|
25548
|
+
}, props.class],
|
|
25404
25549
|
"style": props.style,
|
|
25405
25550
|
"inputmode": "decimal"
|
|
25406
25551
|
}), {
|
|
@@ -25535,7 +25680,7 @@
|
|
|
25535
25680
|
function onPaste(index, e) {
|
|
25536
25681
|
e.preventDefault();
|
|
25537
25682
|
e.stopPropagation();
|
|
25538
|
-
const clipboardText = e?.clipboardData?.getData('Text').slice(0, length.value) ?? '';
|
|
25683
|
+
const clipboardText = e?.clipboardData?.getData('Text').trim().slice(0, length.value) ?? '';
|
|
25539
25684
|
if (isValidNumber(clipboardText)) return;
|
|
25540
25685
|
model.value = clipboardText.split('');
|
|
25541
25686
|
inputRef.value?.[index].blur();
|
|
@@ -25567,7 +25712,10 @@
|
|
|
25567
25712
|
scoped: true
|
|
25568
25713
|
});
|
|
25569
25714
|
vue.watch(model, val => {
|
|
25570
|
-
if (val.length === length.value)
|
|
25715
|
+
if (val.length === length.value) {
|
|
25716
|
+
focusIndex.value = length.value - 1;
|
|
25717
|
+
emit('finish', val.join(''));
|
|
25718
|
+
}
|
|
25571
25719
|
}, {
|
|
25572
25720
|
deep: true
|
|
25573
25721
|
});
|
|
@@ -25602,7 +25750,7 @@
|
|
|
25602
25750
|
"aria-label": t(props.label, i + 1),
|
|
25603
25751
|
"autofocus": i === 0 && props.autofocus,
|
|
25604
25752
|
"autocomplete": "one-time-code",
|
|
25605
|
-
"class": ['v-otp-input__field'],
|
|
25753
|
+
"class": vue.normalizeClass(['v-otp-input__field']),
|
|
25606
25754
|
"disabled": props.disabled,
|
|
25607
25755
|
"inputmode": props.type === 'number' ? 'numeric' : 'text',
|
|
25608
25756
|
"min": props.type === 'number' ? 0 : undefined,
|
|
@@ -29320,7 +29468,7 @@
|
|
|
29320
29468
|
};
|
|
29321
29469
|
});
|
|
29322
29470
|
}
|
|
29323
|
-
const version$1 = "3.8.
|
|
29471
|
+
const version$1 = "3.8.9";
|
|
29324
29472
|
createVuetify$1.version = version$1;
|
|
29325
29473
|
|
|
29326
29474
|
// Vue's inject() can only be used in setup
|
|
@@ -29345,7 +29493,7 @@
|
|
|
29345
29493
|
...options
|
|
29346
29494
|
});
|
|
29347
29495
|
};
|
|
29348
|
-
const version = "3.8.
|
|
29496
|
+
const version = "3.8.9";
|
|
29349
29497
|
createVuetify.version = version;
|
|
29350
29498
|
|
|
29351
29499
|
exports.blueprints = index;
|