vuetify 3.3.15 → 3.3.16
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/json/attributes.json +427 -403
- package/dist/json/importMap.json +4 -4
- package/dist/json/tags.json +1 -0
- package/dist/json/web-types.json +908 -879
- package/dist/vuetify-labs.css +245 -240
- package/dist/vuetify-labs.d.ts +162 -144
- package/dist/vuetify-labs.esm.js +121 -136
- package/dist/vuetify-labs.esm.js.map +1 -1
- package/dist/vuetify-labs.js +121 -136
- package/dist/vuetify-labs.min.css +2 -2
- package/dist/vuetify.css +92 -88
- package/dist/vuetify.d.ts +99 -81
- package/dist/vuetify.esm.js +113 -130
- package/dist/vuetify.esm.js.map +1 -1
- package/dist/vuetify.js +113 -130
- package/dist/vuetify.js.map +1 -1
- package/dist/vuetify.min.css +2 -2
- package/dist/vuetify.min.js +223 -224
- package/dist/vuetify.min.js.map +1 -1
- package/lib/blueprints/index.d.mts +2 -0
- package/lib/blueprints/md1.d.mts +2 -0
- package/lib/blueprints/md2.d.mts +2 -0
- package/lib/blueprints/md3.d.mts +2 -0
- package/lib/components/VAutocomplete/VAutocomplete.mjs +16 -26
- package/lib/components/VAutocomplete/VAutocomplete.mjs.map +1 -1
- package/lib/components/VAutocomplete/index.d.mts +40 -38
- package/lib/components/VColorPicker/VColorPickerCanvas.css +1 -0
- package/lib/components/VColorPicker/VColorPickerCanvas.mjs +28 -34
- package/lib/components/VColorPicker/VColorPickerCanvas.mjs.map +1 -1
- package/lib/components/VColorPicker/VColorPickerCanvas.sass +1 -0
- package/lib/components/VCombobox/VCombobox.mjs +15 -25
- package/lib/components/VCombobox/VCombobox.mjs.map +1 -1
- package/lib/components/VCombobox/index.d.mts +40 -38
- package/lib/components/VField/VField.css +3 -2
- package/lib/components/VField/VField.sass +3 -2
- package/lib/components/VLabel/VLabel.css +1 -0
- package/lib/components/VLabel/VLabel.sass +1 -0
- package/lib/components/VLabel/_variables.scss +1 -1
- package/lib/components/VList/index.d.mts +21 -3
- package/lib/components/VSelect/VSelect.mjs +9 -23
- package/lib/components/VSelect/VSelect.mjs.map +1 -1
- package/lib/components/VSelect/index.d.mts +14 -11
- package/lib/components/VSelectionControl/VSelectionControl.css +1 -1
- package/lib/components/VSelectionControl/VSelectionControl.sass +1 -1
- package/lib/components/VTabs/VTab.css +1 -0
- package/lib/components/VTabs/VTab.mjs +2 -3
- package/lib/components/VTabs/VTab.mjs.map +1 -1
- package/lib/components/VTabs/VTab.sass +1 -0
- package/lib/components/VTabs/_variables.scss +1 -0
- package/lib/components/index.d.mts +96 -80
- package/lib/composables/filter.mjs +4 -4
- package/lib/composables/filter.mjs.map +1 -1
- package/lib/composables/list-items.mjs +26 -15
- package/lib/composables/list-items.mjs.map +1 -1
- package/lib/entry-bundler.mjs +1 -1
- package/lib/framework.mjs +1 -1
- package/lib/index.d.mts +3 -1
- package/lib/labs/VBottomSheet/VBottomSheet.css +1 -0
- package/lib/labs/VBottomSheet/VBottomSheet.sass +2 -0
- package/lib/labs/VBottomSheet/_variables.scss +1 -0
- package/lib/labs/VDataIterator/index.d.mts +30 -26
- package/lib/labs/VDataTable/index.d.mts +43 -39
- package/lib/labs/VDataTable/types.mjs.map +1 -1
- package/lib/labs/VDatePicker/VDatePicker.mjs +4 -2
- package/lib/labs/VDatePicker/VDatePicker.mjs.map +1 -1
- package/lib/labs/VDatePicker/VDatePickerControls.mjs +4 -4
- package/lib/labs/VDatePicker/VDatePickerControls.mjs.map +1 -1
- package/lib/labs/VDatePicker/VDatePickerYears.css +1 -1
- package/lib/labs/VDatePicker/VDatePickerYears.sass +1 -1
- package/lib/labs/VDatePicker/index.d.mts +24 -24
- package/lib/labs/VDateRangePicker/index.d.mts +8 -8
- package/lib/labs/components.d.mts +80 -76
- package/lib/labs/date/DateAdapter.mjs.map +1 -1
- package/lib/labs/date/adapters/vuetify.d.mts +4 -0
- package/lib/labs/date/adapters/vuetify.mjs +13 -0
- package/lib/labs/date/adapters/vuetify.mjs.map +1 -1
- package/lib/labs/date/index.d.mts +4 -0
- package/package.json +2 -2
package/dist/vuetify.esm.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
* Vuetify v3.3.
|
|
2
|
+
* Vuetify v3.3.16
|
|
3
3
|
* Forged by John Leider
|
|
4
4
|
* Released under the MIT License.
|
|
5
5
|
*/
|
|
@@ -7969,11 +7969,15 @@ const makeItemsProps = propsFactory({
|
|
|
7969
7969
|
type: [Boolean, String, Array, Function],
|
|
7970
7970
|
default: 'props'
|
|
7971
7971
|
},
|
|
7972
|
-
returnObject: Boolean
|
|
7972
|
+
returnObject: Boolean,
|
|
7973
|
+
valueComparator: {
|
|
7974
|
+
type: Function,
|
|
7975
|
+
default: deepEqual
|
|
7976
|
+
}
|
|
7973
7977
|
}, 'list-items');
|
|
7974
7978
|
function transformItem$1(props, item) {
|
|
7975
7979
|
const title = getPropertyFromItem(item, props.itemTitle, item);
|
|
7976
|
-
const value =
|
|
7980
|
+
const value = getPropertyFromItem(item, props.itemValue, title);
|
|
7977
7981
|
const children = getPropertyFromItem(item, props.itemChildren);
|
|
7978
7982
|
const itemProps = props.itemProps === true ? typeof item === 'object' && item != null && !Array.isArray(item) ? 'children' in item ? pick(item, ['children'])[1] : item : undefined : getPropertyFromItem(item, props.itemProps);
|
|
7979
7983
|
const _props = {
|
|
@@ -7998,25 +8002,32 @@ function transformItems$1(props, items) {
|
|
|
7998
8002
|
}
|
|
7999
8003
|
function useItems(props) {
|
|
8000
8004
|
const items = computed(() => transformItems$1(props, props.items));
|
|
8001
|
-
|
|
8002
|
-
}
|
|
8003
|
-
function useTransformItems(items, transform) {
|
|
8005
|
+
const hasNullItem = computed(() => items.value.some(item => item.value === null));
|
|
8004
8006
|
function transformIn(value) {
|
|
8005
|
-
|
|
8006
|
-
|
|
8007
|
-
|
|
8008
|
-
|
|
8009
|
-
|
|
8010
|
-
|
|
8011
|
-
|
|
8012
|
-
|
|
8007
|
+
if (!hasNullItem.value) {
|
|
8008
|
+
// When the model value is null, return an InternalItem
|
|
8009
|
+
// based on null only if null is one of the items
|
|
8010
|
+
value = value.filter(v => v !== null);
|
|
8011
|
+
}
|
|
8012
|
+
return value.map(v => {
|
|
8013
|
+
if (props.returnObject && typeof v === 'string') {
|
|
8014
|
+
// String model value means value is a custom input value from combobox
|
|
8015
|
+
// Don't look up existing items if the model value is a string
|
|
8016
|
+
return transformItem$1(props, v);
|
|
8017
|
+
}
|
|
8018
|
+
return items.value.find(item => props.valueComparator(v, item.value)) || transformItem$1(props, v);
|
|
8013
8019
|
});
|
|
8014
8020
|
}
|
|
8015
8021
|
function transformOut(value) {
|
|
8016
|
-
return value.map(_ref => {
|
|
8022
|
+
return props.returnObject ? value.map(_ref => {
|
|
8017
8023
|
let {
|
|
8018
|
-
|
|
8024
|
+
raw
|
|
8019
8025
|
} = _ref;
|
|
8026
|
+
return raw;
|
|
8027
|
+
}) : value.map(_ref2 => {
|
|
8028
|
+
let {
|
|
8029
|
+
value
|
|
8030
|
+
} = _ref2;
|
|
8020
8031
|
return value;
|
|
8021
8032
|
});
|
|
8022
8033
|
}
|
|
@@ -10847,10 +10858,6 @@ const makeSelectProps = propsFactory({
|
|
|
10847
10858
|
default: '$vuetify.noDataText'
|
|
10848
10859
|
},
|
|
10849
10860
|
openOnClear: Boolean,
|
|
10850
|
-
valueComparator: {
|
|
10851
|
-
type: Function,
|
|
10852
|
-
default: deepEqual
|
|
10853
|
-
},
|
|
10854
10861
|
itemColor: String,
|
|
10855
10862
|
...makeItemsProps({
|
|
10856
10863
|
itemChildren: false
|
|
@@ -10904,24 +10911,14 @@ const VSelect = genericComponent()({
|
|
|
10904
10911
|
return props.multiple ? transformed : transformed[0] ?? null;
|
|
10905
10912
|
});
|
|
10906
10913
|
const form = useForm();
|
|
10907
|
-
const
|
|
10908
|
-
return model.value.map(v => {
|
|
10909
|
-
return items.value.find(item => {
|
|
10910
|
-
const itemRawValue = getPropertyFromItem(item.raw, props.itemValue);
|
|
10911
|
-
const modelRawValue = getPropertyFromItem(v.raw, props.itemValue);
|
|
10912
|
-
if (itemRawValue === undefined || modelRawValue === undefined) return false;
|
|
10913
|
-
return props.returnObject ? props.valueComparator(itemRawValue, modelRawValue) : props.valueComparator(item.value, v.value);
|
|
10914
|
-
}) || v;
|
|
10915
|
-
});
|
|
10916
|
-
});
|
|
10917
|
-
const selected = computed(() => selections.value.map(selection => selection.props.value));
|
|
10914
|
+
const selectedValues = computed(() => model.value.map(selection => selection.value));
|
|
10918
10915
|
const isFocused = shallowRef(false);
|
|
10919
10916
|
const label = computed(() => menu.value ? props.closeText : props.openText);
|
|
10920
10917
|
let keyboardLookupPrefix = '';
|
|
10921
10918
|
let keyboardLookupLastTime;
|
|
10922
10919
|
const displayItems = computed(() => {
|
|
10923
10920
|
if (props.hideSelected) {
|
|
10924
|
-
return items.value.filter(item => !
|
|
10921
|
+
return items.value.filter(item => !model.value.some(s => s === item));
|
|
10925
10922
|
}
|
|
10926
10923
|
return items.value;
|
|
10927
10924
|
});
|
|
@@ -10979,7 +10976,7 @@ const VSelect = genericComponent()({
|
|
|
10979
10976
|
}
|
|
10980
10977
|
function select(item) {
|
|
10981
10978
|
if (props.multiple) {
|
|
10982
|
-
const index =
|
|
10979
|
+
const index = model.value.findIndex(selection => props.valueComparator(selection.value, item.value));
|
|
10983
10980
|
if (index === -1) {
|
|
10984
10981
|
model.value = [...model.value, item];
|
|
10985
10982
|
} else {
|
|
@@ -11016,8 +11013,8 @@ const VSelect = genericComponent()({
|
|
|
11016
11013
|
}
|
|
11017
11014
|
}
|
|
11018
11015
|
watch(menu, () => {
|
|
11019
|
-
if (!props.hideSelected && menu.value &&
|
|
11020
|
-
const index = displayItems.value.findIndex(item =>
|
|
11016
|
+
if (!props.hideSelected && menu.value && model.value.length) {
|
|
11017
|
+
const index = displayItems.value.findIndex(item => model.value.some(s => props.valueComparator(s.value, item.value)));
|
|
11021
11018
|
IN_BROWSER && window.requestAnimationFrame(() => {
|
|
11022
11019
|
index >= 0 && vVirtualScrollRef.value?.scrollToIndex(index);
|
|
11023
11020
|
});
|
|
@@ -11072,7 +11069,7 @@ const VSelect = genericComponent()({
|
|
|
11072
11069
|
}, props.menuProps), {
|
|
11073
11070
|
default: () => [hasList && createVNode(VList, {
|
|
11074
11071
|
"ref": listRef,
|
|
11075
|
-
"selected":
|
|
11072
|
+
"selected": selectedValues.value,
|
|
11076
11073
|
"selectStrategy": props.multiple ? 'independent' : 'single-independent',
|
|
11077
11074
|
"onMousedown": e => e.preventDefault(),
|
|
11078
11075
|
"onKeydown": onListKeydown,
|
|
@@ -11121,7 +11118,7 @@ const VSelect = genericComponent()({
|
|
|
11121
11118
|
}
|
|
11122
11119
|
}), slots['append-item']?.()]
|
|
11123
11120
|
})]
|
|
11124
|
-
}),
|
|
11121
|
+
}), model.value.map((item, index) => {
|
|
11125
11122
|
function onChipClose(e) {
|
|
11126
11123
|
e.stopPropagation();
|
|
11127
11124
|
e.preventDefault();
|
|
@@ -11164,7 +11161,7 @@ const VSelect = genericComponent()({
|
|
|
11164
11161
|
index
|
|
11165
11162
|
}) ?? createVNode("span", {
|
|
11166
11163
|
"class": "v-select__selection-text"
|
|
11167
|
-
}, [item.title, props.multiple && index <
|
|
11164
|
+
}, [item.title, props.multiple && index < model.value.length - 1 && createVNode("span", {
|
|
11168
11165
|
"class": "v-select__selection-comma"
|
|
11169
11166
|
}, [createTextVNode(",")])])]);
|
|
11170
11167
|
})]),
|
|
@@ -11216,15 +11213,15 @@ function filterItems(items, query, options) {
|
|
|
11216
11213
|
const customFiltersLength = Object.keys(options?.customKeyFilter ?? {}).length;
|
|
11217
11214
|
if (!items?.length) return array;
|
|
11218
11215
|
loop: for (let i = 0; i < items.length; i++) {
|
|
11219
|
-
const item = items[i];
|
|
11216
|
+
const [item, transformed = item] = wrapInArray(items[i]);
|
|
11220
11217
|
const customMatches = {};
|
|
11221
11218
|
const defaultMatches = {};
|
|
11222
11219
|
let match = -1;
|
|
11223
11220
|
if (query && !options?.noFilter) {
|
|
11224
11221
|
if (typeof item === 'object') {
|
|
11225
|
-
const filterKeys = keys || Object.keys(
|
|
11222
|
+
const filterKeys = keys || Object.keys(transformed);
|
|
11226
11223
|
for (const key of filterKeys) {
|
|
11227
|
-
const value = getPropertyFromItem(
|
|
11224
|
+
const value = getPropertyFromItem(transformed, key, transformed);
|
|
11228
11225
|
const keyFilter = options?.customKeyFilter?.[key];
|
|
11229
11226
|
match = keyFilter ? keyFilter(value, query, item) : filter(value, query, item);
|
|
11230
11227
|
if (match !== -1 && match !== false) {
|
|
@@ -11258,7 +11255,7 @@ function filterItems(items, query, options) {
|
|
|
11258
11255
|
function useFilter(props, items, query, options) {
|
|
11259
11256
|
const filteredItems = ref([]);
|
|
11260
11257
|
const filteredMatches = ref(new Map());
|
|
11261
|
-
const transformedItems = computed(() => options?.transform ? unref(items).map(options
|
|
11258
|
+
const transformedItems = computed(() => options?.transform ? unref(items).map(item => [item, options.transform(item)]) : unref(items));
|
|
11262
11259
|
watchEffect(() => {
|
|
11263
11260
|
const _query = typeof query === 'function' ? query() : unref(query);
|
|
11264
11261
|
const strQuery = typeof _query !== 'string' && typeof _query !== 'number' ? '' : String(_query);
|
|
@@ -11376,24 +11373,13 @@ const VAutocomplete = genericComponent()({
|
|
|
11376
11373
|
filteredItems,
|
|
11377
11374
|
getMatches
|
|
11378
11375
|
} = useFilter(props, items, () => isPristine.value ? '' : search.value);
|
|
11379
|
-
const selections = computed(() => {
|
|
11380
|
-
return model.value.map(v => {
|
|
11381
|
-
return items.value.find(item => {
|
|
11382
|
-
const itemRawValue = getPropertyFromItem(item.raw, props.itemValue);
|
|
11383
|
-
const modelRawValue = getPropertyFromItem(v.raw, props.itemValue);
|
|
11384
|
-
if (itemRawValue === undefined || modelRawValue === undefined) return false;
|
|
11385
|
-
return props.returnObject ? props.valueComparator(itemRawValue, modelRawValue) : props.valueComparator(item.value, v.value);
|
|
11386
|
-
}) || v;
|
|
11387
|
-
});
|
|
11388
|
-
});
|
|
11389
11376
|
const displayItems = computed(() => {
|
|
11390
11377
|
if (props.hideSelected) {
|
|
11391
|
-
return filteredItems.value.filter(filteredItem => !
|
|
11378
|
+
return filteredItems.value.filter(filteredItem => !model.value.some(s => s.value === filteredItem.value));
|
|
11392
11379
|
}
|
|
11393
11380
|
return filteredItems.value;
|
|
11394
11381
|
});
|
|
11395
|
-
const
|
|
11396
|
-
const selection = computed(() => selections.value[selectionIndex.value]);
|
|
11382
|
+
const selectedValues = computed(() => model.value.map(selection => selection.props.value));
|
|
11397
11383
|
const highlightFirst = computed(() => {
|
|
11398
11384
|
const selectFirst = props.autoSelectFirst === true || props.autoSelectFirst === 'exact' && search.value === displayItems.value[0]?.title;
|
|
11399
11385
|
return selectFirst && displayItems.value.length > 0 && !isPristine.value && !listHasFocus.value;
|
|
@@ -11425,7 +11411,7 @@ const VAutocomplete = genericComponent()({
|
|
|
11425
11411
|
function onKeydown(e) {
|
|
11426
11412
|
if (props.readonly || form?.isReadonly.value) return;
|
|
11427
11413
|
const selectionStart = vTextFieldRef.value.selectionStart;
|
|
11428
|
-
const length =
|
|
11414
|
+
const length = model.value.length;
|
|
11429
11415
|
if (selectionIndex.value > -1 || ['Enter', 'ArrowDown', 'ArrowUp'].includes(e.key)) {
|
|
11430
11416
|
e.preventDefault();
|
|
11431
11417
|
}
|
|
@@ -11450,13 +11436,14 @@ const VAutocomplete = genericComponent()({
|
|
|
11450
11436
|
return;
|
|
11451
11437
|
}
|
|
11452
11438
|
const originalSelectionIndex = selectionIndex.value;
|
|
11453
|
-
|
|
11439
|
+
const selectedItem = model.value[selectionIndex.value];
|
|
11440
|
+
if (selectedItem) select(selectedItem);
|
|
11454
11441
|
selectionIndex.value = originalSelectionIndex >= length - 1 ? length - 2 : originalSelectionIndex;
|
|
11455
11442
|
}
|
|
11456
11443
|
if (e.key === 'ArrowLeft') {
|
|
11457
11444
|
if (selectionIndex.value < 0 && selectionStart > 0) return;
|
|
11458
11445
|
const prev = selectionIndex.value > -1 ? selectionIndex.value - 1 : length - 1;
|
|
11459
|
-
if (
|
|
11446
|
+
if (model.value[prev]) {
|
|
11460
11447
|
selectionIndex.value = prev;
|
|
11461
11448
|
} else {
|
|
11462
11449
|
selectionIndex.value = -1;
|
|
@@ -11466,7 +11453,7 @@ const VAutocomplete = genericComponent()({
|
|
|
11466
11453
|
if (e.key === 'ArrowRight') {
|
|
11467
11454
|
if (selectionIndex.value < 0) return;
|
|
11468
11455
|
const next = selectionIndex.value + 1;
|
|
11469
|
-
if (
|
|
11456
|
+
if (model.value[next]) {
|
|
11470
11457
|
selectionIndex.value = next;
|
|
11471
11458
|
} else {
|
|
11472
11459
|
selectionIndex.value = -1;
|
|
@@ -11506,7 +11493,7 @@ const VAutocomplete = genericComponent()({
|
|
|
11506
11493
|
const isSelecting = shallowRef(false);
|
|
11507
11494
|
function select(item) {
|
|
11508
11495
|
if (props.multiple) {
|
|
11509
|
-
const index =
|
|
11496
|
+
const index = model.value.findIndex(selection => props.valueComparator(selection.value, item.value));
|
|
11510
11497
|
if (index === -1) {
|
|
11511
11498
|
model.value = [...model.value, item];
|
|
11512
11499
|
} else {
|
|
@@ -11527,11 +11514,11 @@ const VAutocomplete = genericComponent()({
|
|
|
11527
11514
|
if (val === oldVal) return;
|
|
11528
11515
|
if (val) {
|
|
11529
11516
|
isSelecting.value = true;
|
|
11530
|
-
search.value = props.multiple ? '' : String(
|
|
11517
|
+
search.value = props.multiple ? '' : String(model.value.at(-1)?.props.title ?? '');
|
|
11531
11518
|
isPristine.value = true;
|
|
11532
11519
|
nextTick(() => isSelecting.value = false);
|
|
11533
11520
|
} else {
|
|
11534
|
-
if (!props.multiple && !search.value) model.value = [];else if (highlightFirst.value && !listHasFocus.value && !
|
|
11521
|
+
if (!props.multiple && !search.value) model.value = [];else if (highlightFirst.value && !listHasFocus.value && !model.value.some(_ref2 => {
|
|
11535
11522
|
let {
|
|
11536
11523
|
value
|
|
11537
11524
|
} = _ref2;
|
|
@@ -11550,8 +11537,8 @@ const VAutocomplete = genericComponent()({
|
|
|
11550
11537
|
isPristine.value = !val;
|
|
11551
11538
|
});
|
|
11552
11539
|
watch(menu, () => {
|
|
11553
|
-
if (!props.hideSelected && menu.value &&
|
|
11554
|
-
const index = displayItems.value.findIndex(item =>
|
|
11540
|
+
if (!props.hideSelected && menu.value && model.value.length) {
|
|
11541
|
+
const index = displayItems.value.findIndex(item => model.value.some(s => item.value === s.value));
|
|
11555
11542
|
IN_BROWSER && window.requestAnimationFrame(() => {
|
|
11556
11543
|
index >= 0 && vVirtualScrollRef.value?.scrollToIndex(index);
|
|
11557
11544
|
});
|
|
@@ -11603,7 +11590,7 @@ const VAutocomplete = genericComponent()({
|
|
|
11603
11590
|
}, props.menuProps), {
|
|
11604
11591
|
default: () => [hasList && createVNode(VList, {
|
|
11605
11592
|
"ref": listRef,
|
|
11606
|
-
"selected":
|
|
11593
|
+
"selected": selectedValues.value,
|
|
11607
11594
|
"selectStrategy": props.multiple ? 'independent' : 'single-independent',
|
|
11608
11595
|
"onMousedown": e => e.preventDefault(),
|
|
11609
11596
|
"onKeydown": onListKeydown,
|
|
@@ -11657,7 +11644,7 @@ const VAutocomplete = genericComponent()({
|
|
|
11657
11644
|
}
|
|
11658
11645
|
}), slots['append-item']?.()]
|
|
11659
11646
|
})]
|
|
11660
|
-
}),
|
|
11647
|
+
}), model.value.map((item, index) => {
|
|
11661
11648
|
function onChipClose(e) {
|
|
11662
11649
|
e.stopPropagation();
|
|
11663
11650
|
e.preventDefault();
|
|
@@ -11701,7 +11688,7 @@ const VAutocomplete = genericComponent()({
|
|
|
11701
11688
|
index
|
|
11702
11689
|
}) ?? createVNode("span", {
|
|
11703
11690
|
"class": "v-autocomplete__selection-text"
|
|
11704
|
-
}, [item.title, props.multiple && index <
|
|
11691
|
+
}, [item.title, props.multiple && index < model.value.length - 1 && createVNode("span", {
|
|
11705
11692
|
"class": "v-autocomplete__selection-comma"
|
|
11706
11693
|
}, [createTextVNode(",")])])]);
|
|
11707
11694
|
})]),
|
|
@@ -13099,11 +13086,29 @@ const VColorPickerCanvas = defineComponent({
|
|
|
13099
13086
|
emit
|
|
13100
13087
|
} = _ref;
|
|
13101
13088
|
const isInteracting = shallowRef(false);
|
|
13102
|
-
const
|
|
13103
|
-
const
|
|
13089
|
+
const canvasRef = ref();
|
|
13090
|
+
const canvasWidth = shallowRef(parseFloat(props.width));
|
|
13091
|
+
const canvasHeight = shallowRef(parseFloat(props.height));
|
|
13092
|
+
const _dotPosition = ref({
|
|
13104
13093
|
x: 0,
|
|
13105
13094
|
y: 0
|
|
13106
13095
|
});
|
|
13096
|
+
const dotPosition = computed({
|
|
13097
|
+
get: () => _dotPosition.value,
|
|
13098
|
+
set(val) {
|
|
13099
|
+
if (!canvasRef.value) return;
|
|
13100
|
+
const {
|
|
13101
|
+
x,
|
|
13102
|
+
y
|
|
13103
|
+
} = val;
|
|
13104
|
+
emit('update:color', {
|
|
13105
|
+
h: props.color?.h ?? 0,
|
|
13106
|
+
s: clamp(x, 0, canvasWidth.value) / canvasWidth.value,
|
|
13107
|
+
v: 1 - clamp(y, 0, canvasHeight.value) / canvasHeight.value,
|
|
13108
|
+
a: props.color?.a ?? 1
|
|
13109
|
+
});
|
|
13110
|
+
}
|
|
13111
|
+
});
|
|
13107
13112
|
const dotStyles = computed(() => {
|
|
13108
13113
|
const {
|
|
13109
13114
|
x,
|
|
@@ -13116,9 +13121,6 @@ const VColorPickerCanvas = defineComponent({
|
|
|
13116
13121
|
transform: `translate(${convertToUnit(x - radius)}, ${convertToUnit(y - radius)})`
|
|
13117
13122
|
};
|
|
13118
13123
|
});
|
|
13119
|
-
const canvasRef = ref();
|
|
13120
|
-
const canvasWidth = shallowRef(parseFloat(props.width));
|
|
13121
|
-
const canvasHeight = shallowRef(parseFloat(props.height));
|
|
13122
13124
|
const {
|
|
13123
13125
|
resizeRef
|
|
13124
13126
|
} = useResizeObserver(entries => {
|
|
@@ -13142,15 +13144,13 @@ const VColorPickerCanvas = defineComponent({
|
|
|
13142
13144
|
y: clamp(y - top, 0, height)
|
|
13143
13145
|
};
|
|
13144
13146
|
}
|
|
13145
|
-
function handleClick(e) {
|
|
13146
|
-
if (props.disabled || !canvasRef.value) return;
|
|
13147
|
-
updateDotPosition(e.clientX, e.clientY, canvasRef.value.getBoundingClientRect());
|
|
13148
|
-
}
|
|
13149
13147
|
function handleMouseDown(e) {
|
|
13150
|
-
|
|
13151
|
-
|
|
13148
|
+
if (e.type === 'mousedown') {
|
|
13149
|
+
// Prevent text selection while dragging
|
|
13150
|
+
e.preventDefault();
|
|
13151
|
+
}
|
|
13152
13152
|
if (props.disabled) return;
|
|
13153
|
-
|
|
13153
|
+
handleMouseMove(e);
|
|
13154
13154
|
window.addEventListener('mousemove', handleMouseMove);
|
|
13155
13155
|
window.addEventListener('mouseup', handleMouseUp);
|
|
13156
13156
|
window.addEventListener('touchmove', handleMouseMove);
|
|
@@ -13168,23 +13168,6 @@ const VColorPickerCanvas = defineComponent({
|
|
|
13168
13168
|
window.removeEventListener('touchmove', handleMouseMove);
|
|
13169
13169
|
window.removeEventListener('touchend', handleMouseUp);
|
|
13170
13170
|
}
|
|
13171
|
-
watch(dotPosition, () => {
|
|
13172
|
-
if (isOutsideUpdate.value) {
|
|
13173
|
-
isOutsideUpdate.value = false;
|
|
13174
|
-
return;
|
|
13175
|
-
}
|
|
13176
|
-
if (!canvasRef.value) return;
|
|
13177
|
-
const {
|
|
13178
|
-
x,
|
|
13179
|
-
y
|
|
13180
|
-
} = dotPosition.value;
|
|
13181
|
-
emit('update:color', {
|
|
13182
|
-
h: props.color?.h ?? 0,
|
|
13183
|
-
s: clamp(x, 0, canvasWidth.value) / canvasWidth.value,
|
|
13184
|
-
v: 1 - clamp(y, 0, canvasHeight.value) / canvasHeight.value,
|
|
13185
|
-
a: props.color?.a ?? 1
|
|
13186
|
-
});
|
|
13187
|
-
});
|
|
13188
13171
|
function updateCanvas() {
|
|
13189
13172
|
if (!canvasRef.value) return;
|
|
13190
13173
|
const canvas = canvasRef.value;
|
|
@@ -13206,7 +13189,7 @@ const VColorPickerCanvas = defineComponent({
|
|
|
13206
13189
|
});
|
|
13207
13190
|
watch(() => [canvasWidth.value, canvasHeight.value], (newVal, oldVal) => {
|
|
13208
13191
|
updateCanvas();
|
|
13209
|
-
|
|
13192
|
+
_dotPosition.value = {
|
|
13210
13193
|
x: dotPosition.value.x * newVal[0] / oldVal[0],
|
|
13211
13194
|
y: dotPosition.value.y * newVal[1] / oldVal[1]
|
|
13212
13195
|
};
|
|
@@ -13218,8 +13201,7 @@ const VColorPickerCanvas = defineComponent({
|
|
|
13218
13201
|
isInteracting.value = false;
|
|
13219
13202
|
return;
|
|
13220
13203
|
}
|
|
13221
|
-
|
|
13222
|
-
dotPosition.value = props.color ? {
|
|
13204
|
+
_dotPosition.value = props.color ? {
|
|
13223
13205
|
x: props.color.s * canvasWidth.value,
|
|
13224
13206
|
y: (1 - props.color.v) * canvasHeight.value
|
|
13225
13207
|
} : {
|
|
@@ -13235,9 +13217,8 @@ const VColorPickerCanvas = defineComponent({
|
|
|
13235
13217
|
"ref": resizeRef,
|
|
13236
13218
|
"class": ['v-color-picker-canvas', props.class],
|
|
13237
13219
|
"style": props.style,
|
|
13238
|
-
"onClick": handleClick,
|
|
13239
13220
|
"onMousedown": handleMouseDown,
|
|
13240
|
-
"
|
|
13221
|
+
"onTouchstartPassive": handleMouseDown
|
|
13241
13222
|
}, [createVNode("canvas", {
|
|
13242
13223
|
"ref": canvasRef,
|
|
13243
13224
|
"width": canvasWidth.value,
|
|
@@ -14958,24 +14939,13 @@ const VCombobox = genericComponent()({
|
|
|
14958
14939
|
filteredItems,
|
|
14959
14940
|
getMatches
|
|
14960
14941
|
} = useFilter(props, items, () => isPristine.value ? '' : search.value);
|
|
14961
|
-
const selections = computed(() => {
|
|
14962
|
-
return model.value.map(v => {
|
|
14963
|
-
return items.value.find(item => {
|
|
14964
|
-
const itemRawValue = getPropertyFromItem(item.raw, props.itemValue);
|
|
14965
|
-
const modelRawValue = getPropertyFromItem(v.raw, props.itemValue);
|
|
14966
|
-
if (itemRawValue === undefined || modelRawValue === undefined) return false;
|
|
14967
|
-
return props.returnObject ? props.valueComparator(itemRawValue, modelRawValue) : props.valueComparator(item.value, v.value);
|
|
14968
|
-
}) || v;
|
|
14969
|
-
});
|
|
14970
|
-
});
|
|
14971
14942
|
const displayItems = computed(() => {
|
|
14972
14943
|
if (props.hideSelected) {
|
|
14973
|
-
return filteredItems.value.filter(filteredItem => !
|
|
14944
|
+
return filteredItems.value.filter(filteredItem => !model.value.some(s => s.value === filteredItem.value));
|
|
14974
14945
|
}
|
|
14975
14946
|
return filteredItems.value;
|
|
14976
14947
|
});
|
|
14977
|
-
const
|
|
14978
|
-
const selection = computed(() => selections.value[selectionIndex.value]);
|
|
14948
|
+
const selectedValues = computed(() => model.value.map(selection => selection.value));
|
|
14979
14949
|
const highlightFirst = computed(() => {
|
|
14980
14950
|
const selectFirst = props.autoSelectFirst === true || props.autoSelectFirst === 'exact' && search.value === displayItems.value[0]?.title;
|
|
14981
14951
|
return selectFirst && displayItems.value.length > 0 && !isPristine.value && !listHasFocus.value;
|
|
@@ -15007,7 +14977,7 @@ const VCombobox = genericComponent()({
|
|
|
15007
14977
|
function onKeydown(e) {
|
|
15008
14978
|
if (props.readonly || form?.isReadonly.value) return;
|
|
15009
14979
|
const selectionStart = vTextFieldRef.value.selectionStart;
|
|
15010
|
-
const length =
|
|
14980
|
+
const length = model.value.length;
|
|
15011
14981
|
if (selectionIndex.value > -1 || ['Enter', 'ArrowDown', 'ArrowUp'].includes(e.key)) {
|
|
15012
14982
|
e.preventDefault();
|
|
15013
14983
|
}
|
|
@@ -15035,13 +15005,14 @@ const VCombobox = genericComponent()({
|
|
|
15035
15005
|
return;
|
|
15036
15006
|
}
|
|
15037
15007
|
const originalSelectionIndex = selectionIndex.value;
|
|
15038
|
-
|
|
15008
|
+
const selectedItem = model.value[selectionIndex.value];
|
|
15009
|
+
if (selectedItem) select(selectedItem);
|
|
15039
15010
|
selectionIndex.value = originalSelectionIndex >= length - 1 ? length - 2 : originalSelectionIndex;
|
|
15040
15011
|
}
|
|
15041
15012
|
if (e.key === 'ArrowLeft') {
|
|
15042
15013
|
if (selectionIndex.value < 0 && selectionStart > 0) return;
|
|
15043
15014
|
const prev = selectionIndex.value > -1 ? selectionIndex.value - 1 : length - 1;
|
|
15044
|
-
if (
|
|
15015
|
+
if (model.value[prev]) {
|
|
15045
15016
|
selectionIndex.value = prev;
|
|
15046
15017
|
} else {
|
|
15047
15018
|
selectionIndex.value = -1;
|
|
@@ -15051,7 +15022,7 @@ const VCombobox = genericComponent()({
|
|
|
15051
15022
|
if (e.key === 'ArrowRight') {
|
|
15052
15023
|
if (selectionIndex.value < 0) return;
|
|
15053
15024
|
const next = selectionIndex.value + 1;
|
|
15054
|
-
if (
|
|
15025
|
+
if (model.value[next]) {
|
|
15055
15026
|
selectionIndex.value = next;
|
|
15056
15027
|
} else {
|
|
15057
15028
|
selectionIndex.value = -1;
|
|
@@ -15071,7 +15042,7 @@ const VCombobox = genericComponent()({
|
|
|
15071
15042
|
}
|
|
15072
15043
|
function select(item) {
|
|
15073
15044
|
if (props.multiple) {
|
|
15074
|
-
const index =
|
|
15045
|
+
const index = model.value.findIndex(selection => props.valueComparator(selection.value, item.value));
|
|
15075
15046
|
if (index === -1) {
|
|
15076
15047
|
model.value = [...model.value, item];
|
|
15077
15048
|
} else {
|
|
@@ -15110,7 +15081,7 @@ const VCombobox = genericComponent()({
|
|
|
15110
15081
|
if (val || val === oldVal) return;
|
|
15111
15082
|
selectionIndex.value = -1;
|
|
15112
15083
|
menu.value = false;
|
|
15113
|
-
if (highlightFirst.value && !listHasFocus.value && !
|
|
15084
|
+
if (highlightFirst.value && !listHasFocus.value && !model.value.some(_ref2 => {
|
|
15114
15085
|
let {
|
|
15115
15086
|
value
|
|
15116
15087
|
} = _ref2;
|
|
@@ -15123,8 +15094,8 @@ const VCombobox = genericComponent()({
|
|
|
15123
15094
|
}
|
|
15124
15095
|
});
|
|
15125
15096
|
watch(menu, () => {
|
|
15126
|
-
if (!props.hideSelected && menu.value &&
|
|
15127
|
-
const index = displayItems.value.findIndex(item =>
|
|
15097
|
+
if (!props.hideSelected && menu.value && model.value.length) {
|
|
15098
|
+
const index = displayItems.value.findIndex(item => model.value.some(s => props.valueComparator(s.value, item.value)));
|
|
15128
15099
|
IN_BROWSER && window.requestAnimationFrame(() => {
|
|
15129
15100
|
index >= 0 && vVirtualScrollRef.value?.scrollToIndex(index);
|
|
15130
15101
|
});
|
|
@@ -15175,7 +15146,7 @@ const VCombobox = genericComponent()({
|
|
|
15175
15146
|
}, props.menuProps), {
|
|
15176
15147
|
default: () => [hasList && createVNode(VList, {
|
|
15177
15148
|
"ref": listRef,
|
|
15178
|
-
"selected":
|
|
15149
|
+
"selected": selectedValues.value,
|
|
15179
15150
|
"selectStrategy": props.multiple ? 'independent' : 'single-independent',
|
|
15180
15151
|
"onMousedown": e => e.preventDefault(),
|
|
15181
15152
|
"onKeydown": onListKeydown,
|
|
@@ -15229,7 +15200,7 @@ const VCombobox = genericComponent()({
|
|
|
15229
15200
|
}
|
|
15230
15201
|
}), slots['append-item']?.()]
|
|
15231
15202
|
})]
|
|
15232
|
-
}),
|
|
15203
|
+
}), model.value.map((item, index) => {
|
|
15233
15204
|
function onChipClose(e) {
|
|
15234
15205
|
e.stopPropagation();
|
|
15235
15206
|
e.preventDefault();
|
|
@@ -15273,7 +15244,7 @@ const VCombobox = genericComponent()({
|
|
|
15273
15244
|
index
|
|
15274
15245
|
}) ?? createVNode("span", {
|
|
15275
15246
|
"class": "v-combobox__selection-text"
|
|
15276
|
-
}, [item.title, props.multiple && index <
|
|
15247
|
+
}, [item.title, props.multiple && index < model.value.length - 1 && createVNode("span", {
|
|
15277
15248
|
"class": "v-combobox__selection-comma"
|
|
15278
15249
|
}, [createTextVNode(",")])])]);
|
|
15279
15250
|
})]),
|
|
@@ -18810,11 +18781,10 @@ const VTab = genericComponent()({
|
|
|
18810
18781
|
"tabindex": isSelected.value ? 0 : -1,
|
|
18811
18782
|
"role": "tab",
|
|
18812
18783
|
"aria-selected": String(isSelected.value),
|
|
18813
|
-
"active": false
|
|
18784
|
+
"active": false
|
|
18785
|
+
}, btnProps, attrs, {
|
|
18814
18786
|
"block": props.fixed,
|
|
18815
18787
|
"maxWidth": props.fixed ? 300 : undefined,
|
|
18816
|
-
"rounded": 0
|
|
18817
|
-
}, btnProps, attrs, {
|
|
18818
18788
|
"onGroup:selected": updateSlider
|
|
18819
18789
|
}), {
|
|
18820
18790
|
default: () => [slots.default?.() ?? props.text, !props.hideSlider && createVNode("div", {
|
|
@@ -20166,6 +20136,7 @@ function isWithinRange(date, range) {
|
|
|
20166
20136
|
return isAfter(date, range[0]) && isBefore(date, range[1]);
|
|
20167
20137
|
}
|
|
20168
20138
|
function isValid(date) {
|
|
20139
|
+
if (!date || date == null) return false;
|
|
20169
20140
|
const d = new Date(date);
|
|
20170
20141
|
return d instanceof Date && !isNaN(d.getTime());
|
|
20171
20142
|
}
|
|
@@ -20197,6 +20168,12 @@ function setYear(date, year) {
|
|
|
20197
20168
|
d.setFullYear(year);
|
|
20198
20169
|
return d;
|
|
20199
20170
|
}
|
|
20171
|
+
function startOfDay(date) {
|
|
20172
|
+
return new Date(date.getFullYear(), date.getMonth(), date.getDate());
|
|
20173
|
+
}
|
|
20174
|
+
function endOfDay(date) {
|
|
20175
|
+
return new Date(date.getFullYear(), date.getMonth(), date.getDate(), 23, 59, 59, 999);
|
|
20176
|
+
}
|
|
20200
20177
|
class VuetifyDateAdapter {
|
|
20201
20178
|
constructor(options) {
|
|
20202
20179
|
this.locale = options.locale;
|
|
@@ -20261,6 +20238,12 @@ class VuetifyDateAdapter {
|
|
|
20261
20238
|
getMonth(date) {
|
|
20262
20239
|
return getMonth(date);
|
|
20263
20240
|
}
|
|
20241
|
+
startOfDay(date) {
|
|
20242
|
+
return startOfDay(date);
|
|
20243
|
+
}
|
|
20244
|
+
endOfDay(date) {
|
|
20245
|
+
return endOfDay(date);
|
|
20246
|
+
}
|
|
20264
20247
|
startOfYear(date) {
|
|
20265
20248
|
return startOfYear(date);
|
|
20266
20249
|
}
|
|
@@ -20408,7 +20391,7 @@ function createVuetify$1() {
|
|
|
20408
20391
|
date
|
|
20409
20392
|
};
|
|
20410
20393
|
}
|
|
20411
|
-
const version$1 = "3.3.
|
|
20394
|
+
const version$1 = "3.3.16";
|
|
20412
20395
|
createVuetify$1.version = version$1;
|
|
20413
20396
|
|
|
20414
20397
|
// Vue's inject() can only be used in setup
|
|
@@ -20433,7 +20416,7 @@ const createVuetify = function () {
|
|
|
20433
20416
|
...options
|
|
20434
20417
|
});
|
|
20435
20418
|
};
|
|
20436
|
-
const version = "3.3.
|
|
20419
|
+
const version = "3.3.16";
|
|
20437
20420
|
createVuetify.version = version;
|
|
20438
20421
|
|
|
20439
20422
|
export { components, createVuetify, directives, useDefaults, useDisplay, useLayout, useLocale, useRtl, useTheme, version };
|