vuetify 3.4.11 → 3.5.1
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 +306 -214
- package/dist/json/importMap.json +122 -122
- package/dist/json/tags.json +23 -0
- package/dist/json/web-types.json +969 -643
- package/dist/vuetify-labs.css +3064 -2986
- package/dist/vuetify-labs.d.ts +6203 -970
- package/dist/vuetify-labs.esm.js +15387 -15144
- package/dist/vuetify-labs.esm.js.map +1 -1
- package/dist/vuetify-labs.js +15386 -15142
- package/dist/vuetify-labs.min.css +2 -2
- package/dist/vuetify.css +599 -523
- package/dist/vuetify.d.ts +6239 -1006
- package/dist/vuetify.esm.js +15387 -15144
- package/dist/vuetify.esm.js.map +1 -1
- package/dist/vuetify.js +15386 -15142
- package/dist/vuetify.js.map +1 -1
- package/dist/vuetify.min.css +2 -2
- package/dist/vuetify.min.js +759 -727
- package/dist/vuetify.min.js.map +1 -1
- package/lib/blueprints/index.d.mts +11 -1
- package/lib/blueprints/md1.d.mts +11 -1
- package/lib/blueprints/md2.d.mts +11 -1
- package/lib/blueprints/md3.d.mts +11 -1
- package/lib/components/VAlert/VAlert.css +2 -2
- package/lib/components/VAlert/_variables.scss +2 -2
- package/lib/components/VAutocomplete/VAutocomplete.css +1 -1
- package/lib/components/VAutocomplete/VAutocomplete.mjs +6 -2
- package/lib/components/VAutocomplete/VAutocomplete.mjs.map +1 -1
- package/lib/components/VAutocomplete/VAutocomplete.sass +1 -1
- package/lib/components/VAutocomplete/index.d.mts +1698 -0
- package/lib/components/VBanner/index.d.mts +4 -4
- package/lib/components/VCard/VCard.css +6 -2
- package/lib/components/VCard/VCard.sass +5 -0
- package/lib/components/VCard/VCardItem.mjs +23 -10
- package/lib/components/VCard/VCardItem.mjs.map +1 -1
- package/lib/components/VCard/_variables.scss +2 -2
- package/lib/components/VCarousel/index.d.mts +30 -9
- package/lib/components/VChipGroup/VChipGroup.css +3 -3
- package/lib/components/VChipGroup/VChipGroup.mjs +21 -16
- package/lib/components/VChipGroup/VChipGroup.mjs.map +1 -1
- package/lib/components/VChipGroup/VChipGroup.sass +4 -3
- package/lib/components/VChipGroup/index.d.mts +118 -1
- package/lib/components/VCombobox/VCombobox.css +1 -1
- package/lib/components/VCombobox/VCombobox.mjs +9 -3
- package/lib/components/VCombobox/VCombobox.mjs.map +1 -1
- package/lib/components/VCombobox/VCombobox.sass +1 -1
- package/lib/components/VCombobox/index.d.mts +1704 -0
- package/lib/components/VDataIterator/index.d.mts +1 -0
- package/lib/components/VDataTable/VDataTable.css +2 -1
- package/lib/components/VDataTable/VDataTable.mjs +2 -1
- package/lib/components/VDataTable/VDataTable.mjs.map +1 -1
- package/lib/components/VDataTable/VDataTable.sass +2 -1
- package/lib/components/VDataTable/VDataTableHeaders.mjs +6 -2
- package/lib/components/VDataTable/VDataTableHeaders.mjs.map +1 -1
- package/lib/components/VDataTable/VDataTableVirtual.mjs +4 -3
- package/lib/components/VDataTable/VDataTableVirtual.mjs.map +1 -1
- package/lib/components/VDataTable/composables/headers.mjs +16 -12
- package/lib/components/VDataTable/composables/headers.mjs.map +1 -1
- package/lib/components/VDataTable/composables/sort.mjs +13 -3
- package/lib/components/VDataTable/composables/sort.mjs.map +1 -1
- package/lib/components/VDataTable/index.d.mts +86 -30
- package/lib/components/VDataTable/types.mjs.map +1 -1
- package/lib/components/VDatePicker/VDatePickerMonth.mjs +56 -11
- package/lib/components/VDatePicker/VDatePickerMonth.mjs.map +1 -1
- package/lib/components/VDatePicker/index.d.mts +34 -19
- package/lib/components/VFileInput/VFileInput.mjs +2 -2
- package/lib/components/VFileInput/VFileInput.mjs.map +1 -1
- package/lib/components/VImg/VImg.css +3 -0
- package/lib/components/VImg/VImg.mjs +14 -3
- package/lib/components/VImg/VImg.mjs.map +1 -1
- package/lib/components/VImg/VImg.sass +3 -0
- package/lib/components/VImg/_variables.scss +3 -0
- package/lib/components/VImg/index.d.mts +21 -0
- package/lib/components/VList/VList.mjs +5 -1
- package/lib/components/VList/VList.mjs.map +1 -1
- package/lib/components/VList/index.d.mts +12 -0
- package/lib/components/VSelect/VSelect.mjs +5 -2
- package/lib/components/VSelect/VSelect.mjs.map +1 -1
- package/lib/components/VSelect/index.d.mts +1689 -0
- package/lib/components/VSlideGroup/index.d.mts +7 -7
- package/lib/components/VSlider/VSliderTrack.css +1 -1
- package/lib/components/VSlider/VSliderTrack.sass +1 -1
- package/lib/components/VSlider/_variables.scss +1 -0
- package/lib/components/VSwitch/VSwitch.css +22 -2
- package/lib/components/VSwitch/VSwitch.mjs +26 -3
- package/lib/components/VSwitch/VSwitch.mjs.map +1 -1
- package/lib/components/VSwitch/VSwitch.sass +20 -2
- package/lib/components/VSwitch/index.d.mts +37 -6
- package/lib/components/VSystemBar/VSystemBar.css +2 -2
- package/lib/components/VSystemBar/_variables.scss +2 -2
- package/lib/components/VTabs/index.d.mts +14 -14
- package/lib/components/VTimeline/VTimeline.css +1 -1
- package/lib/components/VTimeline/_variables.scss +1 -1
- package/lib/components/VToolbar/VToolbar.css +2 -2
- package/lib/components/VToolbar/_variables.scss +2 -2
- package/lib/components/VWindow/index.d.mts +7 -7
- package/lib/components/index.d.mts +6196 -985
- package/lib/composables/goto.mjs +105 -0
- package/lib/composables/goto.mjs.map +1 -0
- package/lib/composables/index.mjs +1 -0
- package/lib/composables/index.mjs.map +1 -1
- package/lib/composables/locale.mjs +1 -0
- package/lib/composables/locale.mjs.map +1 -1
- package/lib/composables/theme.mjs +2 -0
- package/lib/composables/theme.mjs.map +1 -1
- package/lib/entry-bundler.mjs +1 -1
- package/lib/entry-bundler.mjs.map +1 -1
- package/lib/framework.mjs +6 -2
- package/lib/framework.mjs.map +1 -1
- package/lib/index.d.mts +60 -38
- package/lib/labs/VCalendar/VCalendar.css +4 -2
- package/lib/labs/VCalendar/VCalendar.sass +4 -2
- package/lib/labs/VCalendar/_variables.scss +5 -0
- package/lib/locale/index.d.mts +124 -22
- package/lib/locale/index.mjs +1 -0
- package/lib/locale/index.mjs.map +1 -1
- package/lib/locale/km.mjs +101 -0
- package/lib/locale/km.mjs.map +1 -0
- package/lib/styles/main.css +48 -0
- package/lib/styles/settings/_utilities.scss +6 -0
- package/package.json +2 -2
|
@@ -7,12 +7,13 @@ import { VBtn } from "../VBtn/index.mjs";
|
|
|
7
7
|
import { VDefaultsProvider } from "../VDefaultsProvider/index.mjs"; // Composables
|
|
8
8
|
import { makeCalendarProps, useCalendar } from "../../composables/calendar.mjs";
|
|
9
9
|
import { useDate } from "../../composables/date/date.mjs"; // Utilities
|
|
10
|
-
import { ref } from 'vue';
|
|
11
|
-
import { genericComponent, propsFactory } from "../../util/index.mjs";
|
|
10
|
+
import { computed, ref, shallowRef } from 'vue';
|
|
11
|
+
import { genericComponent, propsFactory } from "../../util/index.mjs"; // Types
|
|
12
12
|
export const makeVDatePickerMonthProps = propsFactory({
|
|
13
13
|
color: String,
|
|
14
14
|
hideWeekdays: Boolean,
|
|
15
|
-
multiple: Boolean,
|
|
15
|
+
multiple: [Boolean, Number, String],
|
|
16
|
+
range: Boolean,
|
|
16
17
|
showWeek: Boolean,
|
|
17
18
|
...makeCalendarProps()
|
|
18
19
|
}, 'VDatePickerMonth');
|
|
@@ -36,16 +37,57 @@ export const VDatePickerMonth = genericComponent()({
|
|
|
36
37
|
weekNumbers
|
|
37
38
|
} = useCalendar(props); // TODO: fix typing
|
|
38
39
|
const adapter = useDate();
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
40
|
+
const rangeStart = shallowRef();
|
|
41
|
+
const rangeStop = shallowRef();
|
|
42
|
+
const atMax = computed(() => {
|
|
43
|
+
const max = ['number', 'string'].includes(typeof props.multiple) ? Number(props.multiple) : Infinity;
|
|
44
|
+
return model.value.length >= max;
|
|
45
|
+
});
|
|
46
|
+
function onRangeClick(value) {
|
|
47
|
+
const _value = adapter.startOfDay(value);
|
|
48
|
+
if (!rangeStart.value) {
|
|
49
|
+
rangeStart.value = _value;
|
|
50
|
+
model.value = [rangeStart.value];
|
|
51
|
+
} else if (!rangeStop.value) {
|
|
52
|
+
if (adapter.isSameDay(value, rangeStart.value)) {
|
|
53
|
+
rangeStart.value = undefined;
|
|
54
|
+
model.value = [];
|
|
55
|
+
return;
|
|
56
|
+
} else if (adapter.isBefore(value, rangeStart.value)) {
|
|
57
|
+
rangeStop.value = rangeStart.value;
|
|
58
|
+
rangeStart.value = _value;
|
|
44
59
|
} else {
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
60
|
+
rangeStop.value = _value;
|
|
61
|
+
}
|
|
62
|
+
const diff = adapter.getDiff(rangeStop.value, rangeStart.value);
|
|
63
|
+
const datesInRange = [rangeStart.value];
|
|
64
|
+
for (let i = 1; i < diff; i++) {
|
|
65
|
+
const nextDate = adapter.addDays(rangeStart.value, i);
|
|
66
|
+
datesInRange.push(nextDate);
|
|
48
67
|
}
|
|
68
|
+
datesInRange.push(rangeStop.value);
|
|
69
|
+
model.value = datesInRange;
|
|
70
|
+
} else {
|
|
71
|
+
rangeStart.value = value;
|
|
72
|
+
rangeStop.value = undefined;
|
|
73
|
+
model.value = [rangeStart.value];
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
function onMultipleClick(value) {
|
|
77
|
+
const index = model.value.findIndex(selection => adapter.isSameDay(selection, value));
|
|
78
|
+
if (index === -1) {
|
|
79
|
+
model.value = [...model.value, value];
|
|
80
|
+
} else {
|
|
81
|
+
const value = [...model.value];
|
|
82
|
+
value.splice(index, 1);
|
|
83
|
+
model.value = value;
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
function onClick(value) {
|
|
87
|
+
if (props.multiple === 'range') {
|
|
88
|
+
onRangeClick(value);
|
|
89
|
+
} else if (props.multiple) {
|
|
90
|
+
onMultipleClick(value);
|
|
49
91
|
} else {
|
|
50
92
|
model.value = [value];
|
|
51
93
|
}
|
|
@@ -73,6 +115,9 @@ export const VDatePickerMonth = genericComponent()({
|
|
|
73
115
|
item,
|
|
74
116
|
i
|
|
75
117
|
};
|
|
118
|
+
if (atMax.value && !item.isSelected) {
|
|
119
|
+
item.isDisabled = true;
|
|
120
|
+
}
|
|
76
121
|
return _createVNode("div", {
|
|
77
122
|
"class": ['v-date-picker-month__day', {
|
|
78
123
|
'v-date-picker-month__day--adjacent': item.isAdjacent,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"VDatePickerMonth.mjs","names":["VBtn","VDefaultsProvider","makeCalendarProps","useCalendar","useDate","ref","genericComponent","propsFactory","makeVDatePickerMonthProps","color","String","hideWeekdays","Boolean","multiple","showWeek","VDatePickerMonth","name","props","emits","date","setup","_ref","emit","slots","daysRef","daysInMonth","model","weekNumbers","adapter","onClick","value","index","findIndex","selection","isSameDay","splice","_createVNode","_createTextVNode","map","week","getWeekdays","weekDay","item","i","slotProps","isAdjacent","isHidden","isSelected","isWeekEnd","isWeekStart","isDisabled","isoDate","undefined","showAdjacentMonths","isToday","disabled","icon","ripple","text","localized","variant","default","day"],"sources":["../../../src/components/VDatePicker/VDatePickerMonth.tsx"],"sourcesContent":["// Styles\nimport './VDatePickerMonth.sass'\n\n// Components\nimport { VBtn } from '@/components/VBtn'\nimport { VDefaultsProvider } from '@/components/VDefaultsProvider'\n\n// Composables\nimport { makeCalendarProps, useCalendar } from '@/composables/calendar'\nimport { useDate } from '@/composables/date/date'\n\n// Utilities\nimport { ref } from 'vue'\nimport { genericComponent, propsFactory } from '@/util'\n\nexport type VDatePickerMonthSlots = {\n day: {\n props: {\n onClick: () => void\n }\n item: any\n i: number\n }\n}\n\nexport const makeVDatePickerMonthProps = propsFactory({\n color: String,\n hideWeekdays: Boolean,\n multiple: Boolean,\n showWeek: Boolean,\n\n ...makeCalendarProps(),\n}, 'VDatePickerMonth')\n\nexport const VDatePickerMonth = genericComponent<VDatePickerMonthSlots>()({\n name: 'VDatePickerMonth',\n\n props: makeVDatePickerMonthProps(),\n\n emits: {\n 'update:modelValue': (date: any) => true,\n 'update:month': (date: any) => true,\n 'update:year': (date: any) => true,\n },\n\n setup (props, { emit, slots }) {\n const daysRef = ref()\n\n const {\n daysInMonth,\n model,\n weekNumbers,\n } = useCalendar(props as any) // TODO: fix typing\n const adapter = useDate()\n\n function onClick (value: unknown) {\n if (props.multiple) {\n const index = model.value.findIndex(selection => adapter.isSameDay(selection, value))\n\n if (index === -1) {\n model.value = [...model.value, value]\n } else {\n const value = [...model.value]\n value.splice(index, 1)\n model.value = value\n }\n } else {\n model.value = [value]\n }\n }\n\n return () => (\n <div class=\"v-date-picker-month\">\n { props.showWeek && (\n <div key=\"weeks\" class=\"v-date-picker-month__weeks\">\n { !props.hideWeekdays && (\n <div key=\"hide-week-days\" class=\"v-date-picker-month__day\"> </div>\n )}\n { weekNumbers.value.map(week => (\n <div\n class={[\n 'v-date-picker-month__day',\n 'v-date-picker-month__day--adjacent',\n ]}\n >{ week }</div>\n ))}\n </div>\n )}\n\n <div\n ref={ daysRef }\n class=\"v-date-picker-month__days\"\n >\n { !props.hideWeekdays && adapter.getWeekdays().map(weekDay => (\n <div\n class={[\n 'v-date-picker-month__day',\n 'v-date-picker-month__weekday',\n ]}\n >{ weekDay[0] }</div>\n ))}\n\n { daysInMonth.value.map((item, i) => {\n const slotProps = {\n props: {\n onClick: () => onClick(item.date),\n },\n item,\n i,\n } as const\n\n return (\n <div\n class={[\n 'v-date-picker-month__day',\n {\n 'v-date-picker-month__day--adjacent': item.isAdjacent,\n 'v-date-picker-month__day--hide-adjacent': item.isHidden,\n 'v-date-picker-month__day--selected': item.isSelected,\n 'v-date-picker-month__day--week-end': item.isWeekEnd,\n 'v-date-picker-month__day--week-start': item.isWeekStart,\n },\n ]}\n data-v-date={ !item.isDisabled ? item.isoDate : undefined }\n >\n\n { (props.showAdjacentMonths || !item.isAdjacent) && (\n <VDefaultsProvider\n defaults={{\n VBtn: {\n color: (item.isSelected || item.isToday) && !item.isDisabled\n ? props.color\n : undefined,\n disabled: item.isDisabled,\n icon: true,\n ripple: false,\n text: item.localized,\n variant: item.isDisabled\n ? 'text'\n : item.isToday && !item.isSelected ? 'outlined' : 'flat',\n onClick: () => onClick(item.date),\n },\n }}\n >\n { slots.day?.(slotProps) ?? (\n <VBtn { ...slotProps.props } />\n )}\n </VDefaultsProvider>\n )}\n </div>\n )\n })}\n </div>\n </div>\n )\n },\n})\n\nexport type VDatePickerMonth = InstanceType<typeof VDatePickerMonth>\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"VDatePickerMonth.mjs","names":["VBtn","VDefaultsProvider","makeCalendarProps","useCalendar","useDate","computed","ref","shallowRef","genericComponent","propsFactory","makeVDatePickerMonthProps","color","String","hideWeekdays","Boolean","multiple","Number","range","showWeek","VDatePickerMonth","name","props","emits","date","setup","_ref","emit","slots","daysRef","daysInMonth","model","weekNumbers","adapter","rangeStart","rangeStop","atMax","max","includes","Infinity","value","length","onRangeClick","_value","startOfDay","isSameDay","undefined","isBefore","diff","getDiff","datesInRange","i","nextDate","addDays","push","onMultipleClick","index","findIndex","selection","splice","onClick","_createVNode","_createTextVNode","map","week","getWeekdays","weekDay","item","slotProps","isSelected","isDisabled","isAdjacent","isHidden","isWeekEnd","isWeekStart","isoDate","showAdjacentMonths","isToday","disabled","icon","ripple","text","localized","variant","default","day"],"sources":["../../../src/components/VDatePicker/VDatePickerMonth.tsx"],"sourcesContent":["// Styles\nimport './VDatePickerMonth.sass'\n\n// Components\nimport { VBtn } from '@/components/VBtn'\nimport { VDefaultsProvider } from '@/components/VDefaultsProvider'\n\n// Composables\nimport { makeCalendarProps, useCalendar } from '@/composables/calendar'\nimport { useDate } from '@/composables/date/date'\n\n// Utilities\nimport { computed, ref, shallowRef } from 'vue'\nimport { genericComponent, propsFactory } from '@/util'\n\n// Types\nimport type { PropType } from 'vue'\n\nexport type VDatePickerMonthSlots = {\n day: {\n props: {\n onClick: () => void\n }\n item: any\n i: number\n }\n}\n\nexport const makeVDatePickerMonthProps = propsFactory({\n color: String,\n hideWeekdays: Boolean,\n multiple: [Boolean, Number, String] as PropType<boolean | 'range' | string | number>,\n range: Boolean,\n showWeek: Boolean,\n\n ...makeCalendarProps(),\n}, 'VDatePickerMonth')\n\nexport const VDatePickerMonth = genericComponent<VDatePickerMonthSlots>()({\n name: 'VDatePickerMonth',\n\n props: makeVDatePickerMonthProps(),\n\n emits: {\n 'update:modelValue': (date: any) => true,\n 'update:month': (date: any) => true,\n 'update:year': (date: any) => true,\n },\n\n setup (props, { emit, slots }) {\n const daysRef = ref()\n\n const { daysInMonth, model, weekNumbers } = useCalendar(props as any) // TODO: fix typing\n const adapter = useDate()\n\n const rangeStart = shallowRef()\n const rangeStop = shallowRef()\n\n const atMax = computed(() => {\n const max = ['number', 'string'].includes(typeof props.multiple) ? Number(props.multiple) : Infinity\n\n return model.value.length >= max\n })\n\n function onRangeClick (value: unknown) {\n const _value = adapter.startOfDay(value)\n\n if (!rangeStart.value) {\n rangeStart.value = _value\n model.value = [rangeStart.value]\n } else if (!rangeStop.value) {\n if (adapter.isSameDay(value, rangeStart.value)) {\n rangeStart.value = undefined\n model.value = []\n return\n } else if (adapter.isBefore(value, rangeStart.value)) {\n rangeStop.value = rangeStart.value\n rangeStart.value = _value\n } else {\n rangeStop.value = _value\n }\n\n const diff = adapter.getDiff(rangeStop.value, rangeStart.value)\n const datesInRange = [rangeStart.value]\n\n for (let i = 1; i < diff; i++) {\n const nextDate = adapter.addDays(rangeStart.value, i)\n datesInRange.push(nextDate)\n }\n\n datesInRange.push(rangeStop.value)\n\n model.value = datesInRange\n } else {\n rangeStart.value = value\n rangeStop.value = undefined\n model.value = [rangeStart.value]\n }\n }\n\n function onMultipleClick (value: unknown) {\n const index = model.value.findIndex(selection => adapter.isSameDay(selection, value))\n\n if (index === -1) {\n model.value = [...model.value, value]\n } else {\n const value = [...model.value]\n value.splice(index, 1)\n model.value = value\n }\n }\n\n function onClick (value: unknown) {\n if (props.multiple === 'range') {\n onRangeClick(value)\n } else if (props.multiple) {\n onMultipleClick(value)\n } else {\n model.value = [value]\n }\n }\n\n return () => (\n <div class=\"v-date-picker-month\">\n { props.showWeek && (\n <div key=\"weeks\" class=\"v-date-picker-month__weeks\">\n { !props.hideWeekdays && (\n <div key=\"hide-week-days\" class=\"v-date-picker-month__day\"> </div>\n )}\n { weekNumbers.value.map(week => (\n <div\n class={[\n 'v-date-picker-month__day',\n 'v-date-picker-month__day--adjacent',\n ]}\n >{ week }</div>\n ))}\n </div>\n )}\n\n <div\n ref={ daysRef }\n class=\"v-date-picker-month__days\"\n >\n { !props.hideWeekdays && adapter.getWeekdays().map(weekDay => (\n <div\n class={[\n 'v-date-picker-month__day',\n 'v-date-picker-month__weekday',\n ]}\n >{ weekDay[0] }</div>\n ))}\n\n { daysInMonth.value.map((item, i) => {\n const slotProps = {\n props: {\n onClick: () => onClick(item.date),\n },\n item,\n i,\n } as const\n\n if (atMax.value && !item.isSelected) {\n item.isDisabled = true\n }\n\n return (\n <div\n class={[\n 'v-date-picker-month__day',\n {\n 'v-date-picker-month__day--adjacent': item.isAdjacent,\n 'v-date-picker-month__day--hide-adjacent': item.isHidden,\n 'v-date-picker-month__day--selected': item.isSelected,\n 'v-date-picker-month__day--week-end': item.isWeekEnd,\n 'v-date-picker-month__day--week-start': item.isWeekStart,\n },\n ]}\n data-v-date={ !item.isDisabled ? item.isoDate : undefined }\n >\n\n { (props.showAdjacentMonths || !item.isAdjacent) && (\n <VDefaultsProvider\n defaults={{\n VBtn: {\n color: (item.isSelected || item.isToday) && !item.isDisabled\n ? props.color\n : undefined,\n disabled: item.isDisabled,\n icon: true,\n ripple: false,\n text: item.localized,\n variant: item.isDisabled\n ? 'text'\n : item.isToday && !item.isSelected ? 'outlined' : 'flat',\n onClick: () => onClick(item.date),\n },\n }}\n >\n { slots.day?.(slotProps) ?? (\n <VBtn { ...slotProps.props } />\n )}\n </VDefaultsProvider>\n )}\n </div>\n )\n })}\n </div>\n </div>\n )\n },\n})\n\nexport type VDatePickerMonth = InstanceType<typeof VDatePickerMonth>\n"],"mappings":"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"}
|
|
@@ -55,6 +55,7 @@ declare const VDatePicker: {
|
|
|
55
55
|
style: vue.StyleValue;
|
|
56
56
|
title: string;
|
|
57
57
|
disabled: boolean;
|
|
58
|
+
range: boolean;
|
|
58
59
|
tag: string;
|
|
59
60
|
landscape: boolean;
|
|
60
61
|
nextIcon: string;
|
|
@@ -104,6 +105,7 @@ declare const VDatePicker: {
|
|
|
104
105
|
style: vue.StyleValue;
|
|
105
106
|
title: string;
|
|
106
107
|
disabled: boolean;
|
|
108
|
+
range: boolean;
|
|
107
109
|
tag: string;
|
|
108
110
|
landscape: boolean;
|
|
109
111
|
nextIcon: string;
|
|
@@ -149,6 +151,7 @@ declare const VDatePicker: {
|
|
|
149
151
|
style: vue.StyleValue;
|
|
150
152
|
title: string;
|
|
151
153
|
disabled: boolean;
|
|
154
|
+
range: boolean;
|
|
152
155
|
tag: string;
|
|
153
156
|
landscape: boolean;
|
|
154
157
|
rounded: string | number | boolean;
|
|
@@ -189,6 +192,7 @@ declare const VDatePicker: {
|
|
|
189
192
|
style: vue.StyleValue;
|
|
190
193
|
title: string;
|
|
191
194
|
disabled: boolean;
|
|
195
|
+
range: boolean;
|
|
192
196
|
tag: string;
|
|
193
197
|
landscape: boolean;
|
|
194
198
|
nextIcon: string;
|
|
@@ -234,6 +238,7 @@ declare const VDatePicker: {
|
|
|
234
238
|
style: vue.StyleValue;
|
|
235
239
|
title: string;
|
|
236
240
|
disabled: boolean;
|
|
241
|
+
range: boolean;
|
|
237
242
|
tag: string;
|
|
238
243
|
landscape: boolean;
|
|
239
244
|
rounded: string | number | boolean;
|
|
@@ -255,6 +260,7 @@ declare const VDatePicker: {
|
|
|
255
260
|
style: vue.StyleValue;
|
|
256
261
|
title: string;
|
|
257
262
|
disabled: boolean;
|
|
263
|
+
range: boolean;
|
|
258
264
|
tag: string;
|
|
259
265
|
landscape: boolean;
|
|
260
266
|
nextIcon: string;
|
|
@@ -305,6 +311,7 @@ declare const VDatePicker: {
|
|
|
305
311
|
style: vue.StyleValue;
|
|
306
312
|
title: string;
|
|
307
313
|
disabled: boolean;
|
|
314
|
+
range: boolean;
|
|
308
315
|
tag: string;
|
|
309
316
|
landscape: boolean;
|
|
310
317
|
rounded: string | number | boolean;
|
|
@@ -407,7 +414,8 @@ declare const VDatePicker: {
|
|
|
407
414
|
default: () => number[];
|
|
408
415
|
};
|
|
409
416
|
hideWeekdays: BooleanConstructor;
|
|
410
|
-
multiple:
|
|
417
|
+
multiple: vue.PropType<string | number | boolean>;
|
|
418
|
+
range: BooleanConstructor;
|
|
411
419
|
showWeek: BooleanConstructor;
|
|
412
420
|
active: {
|
|
413
421
|
type: vue.PropType<string | string[]>;
|
|
@@ -500,7 +508,8 @@ declare const VDatePicker: {
|
|
|
500
508
|
default: () => number[];
|
|
501
509
|
};
|
|
502
510
|
hideWeekdays: BooleanConstructor;
|
|
503
|
-
multiple:
|
|
511
|
+
multiple: vue.PropType<string | number | boolean>;
|
|
512
|
+
range: BooleanConstructor;
|
|
504
513
|
showWeek: BooleanConstructor;
|
|
505
514
|
active: {
|
|
506
515
|
type: vue.PropType<string | string[]>;
|
|
@@ -886,7 +895,7 @@ type VDatePickerHeader = InstanceType<typeof VDatePickerHeader>;
|
|
|
886
895
|
declare const VDatePickerMonth: {
|
|
887
896
|
new (...args: any[]): vue.CreateComponentPublicInstance<{
|
|
888
897
|
disabled: boolean;
|
|
889
|
-
|
|
898
|
+
range: boolean;
|
|
890
899
|
showAdjacentMonths: boolean;
|
|
891
900
|
weekdays: number[];
|
|
892
901
|
hideWeekdays: boolean;
|
|
@@ -895,6 +904,7 @@ declare const VDatePickerMonth: {
|
|
|
895
904
|
max?: unknown;
|
|
896
905
|
min?: unknown;
|
|
897
906
|
color?: string | undefined;
|
|
907
|
+
multiple?: string | number | boolean | undefined;
|
|
898
908
|
month?: string | number | undefined;
|
|
899
909
|
year?: string | number | undefined;
|
|
900
910
|
modelValue?: unknown[] | undefined;
|
|
@@ -937,7 +947,7 @@ declare const VDatePickerMonth: {
|
|
|
937
947
|
'update:year': (date: any) => true;
|
|
938
948
|
}, vue.VNodeProps & vue.AllowedComponentProps & vue.ComponentCustomProps & {
|
|
939
949
|
disabled: boolean;
|
|
940
|
-
|
|
950
|
+
range: boolean;
|
|
941
951
|
showAdjacentMonths: boolean;
|
|
942
952
|
weekdays: number[];
|
|
943
953
|
hideWeekdays: boolean;
|
|
@@ -946,6 +956,7 @@ declare const VDatePickerMonth: {
|
|
|
946
956
|
max?: unknown;
|
|
947
957
|
min?: unknown;
|
|
948
958
|
color?: string | undefined;
|
|
959
|
+
multiple?: string | number | boolean | undefined;
|
|
949
960
|
month?: string | number | undefined;
|
|
950
961
|
year?: string | number | undefined;
|
|
951
962
|
modelValue?: unknown[] | undefined;
|
|
@@ -984,7 +995,7 @@ declare const VDatePickerMonth: {
|
|
|
984
995
|
"onUpdate:year"?: ((date: any) => any) | undefined;
|
|
985
996
|
}, {
|
|
986
997
|
disabled: boolean;
|
|
987
|
-
|
|
998
|
+
range: boolean;
|
|
988
999
|
showAdjacentMonths: boolean;
|
|
989
1000
|
weekdays: number[];
|
|
990
1001
|
hideWeekdays: boolean;
|
|
@@ -1008,7 +1019,7 @@ declare const VDatePickerMonth: {
|
|
|
1008
1019
|
Defaults: {};
|
|
1009
1020
|
}, {
|
|
1010
1021
|
disabled: boolean;
|
|
1011
|
-
|
|
1022
|
+
range: boolean;
|
|
1012
1023
|
showAdjacentMonths: boolean;
|
|
1013
1024
|
weekdays: number[];
|
|
1014
1025
|
hideWeekdays: boolean;
|
|
@@ -1017,6 +1028,7 @@ declare const VDatePickerMonth: {
|
|
|
1017
1028
|
max?: unknown;
|
|
1018
1029
|
min?: unknown;
|
|
1019
1030
|
color?: string | undefined;
|
|
1031
|
+
multiple?: string | number | boolean | undefined;
|
|
1020
1032
|
month?: string | number | undefined;
|
|
1021
1033
|
year?: string | number | undefined;
|
|
1022
1034
|
modelValue?: unknown[] | undefined;
|
|
@@ -1055,7 +1067,7 @@ declare const VDatePickerMonth: {
|
|
|
1055
1067
|
"onUpdate:year"?: ((date: any) => any) | undefined;
|
|
1056
1068
|
}, () => JSX.Element, {}, {}, {}, {
|
|
1057
1069
|
disabled: boolean;
|
|
1058
|
-
|
|
1070
|
+
range: boolean;
|
|
1059
1071
|
showAdjacentMonths: boolean;
|
|
1060
1072
|
weekdays: number[];
|
|
1061
1073
|
hideWeekdays: boolean;
|
|
@@ -1066,7 +1078,7 @@ declare const VDatePickerMonth: {
|
|
|
1066
1078
|
__isSuspense?: undefined;
|
|
1067
1079
|
} & vue.ComponentOptionsBase<{
|
|
1068
1080
|
disabled: boolean;
|
|
1069
|
-
|
|
1081
|
+
range: boolean;
|
|
1070
1082
|
showAdjacentMonths: boolean;
|
|
1071
1083
|
weekdays: number[];
|
|
1072
1084
|
hideWeekdays: boolean;
|
|
@@ -1075,6 +1087,7 @@ declare const VDatePickerMonth: {
|
|
|
1075
1087
|
max?: unknown;
|
|
1076
1088
|
min?: unknown;
|
|
1077
1089
|
color?: string | undefined;
|
|
1090
|
+
multiple?: string | number | boolean | undefined;
|
|
1078
1091
|
month?: string | number | undefined;
|
|
1079
1092
|
year?: string | number | undefined;
|
|
1080
1093
|
modelValue?: unknown[] | undefined;
|
|
@@ -1117,7 +1130,7 @@ declare const VDatePickerMonth: {
|
|
|
1117
1130
|
'update:year': (date: any) => true;
|
|
1118
1131
|
}, string, {
|
|
1119
1132
|
disabled: boolean;
|
|
1120
|
-
|
|
1133
|
+
range: boolean;
|
|
1121
1134
|
showAdjacentMonths: boolean;
|
|
1122
1135
|
weekdays: number[];
|
|
1123
1136
|
hideWeekdays: boolean;
|
|
@@ -1135,11 +1148,11 @@ declare const VDatePickerMonth: {
|
|
|
1135
1148
|
}>>> & vue.VNodeProps & vue.AllowedComponentProps & vue.ComponentCustomProps & FilterPropsOptions<{
|
|
1136
1149
|
allowedDates: (FunctionConstructor | ArrayConstructor)[];
|
|
1137
1150
|
disabled: BooleanConstructor;
|
|
1138
|
-
displayValue:
|
|
1139
|
-
modelValue:
|
|
1151
|
+
displayValue: PropType<unknown>;
|
|
1152
|
+
modelValue: PropType<unknown[] | undefined>;
|
|
1140
1153
|
month: (StringConstructor | NumberConstructor)[];
|
|
1141
|
-
max:
|
|
1142
|
-
min:
|
|
1154
|
+
max: PropType<unknown>;
|
|
1155
|
+
min: PropType<unknown>;
|
|
1143
1156
|
showAdjacentMonths: BooleanConstructor;
|
|
1144
1157
|
year: (StringConstructor | NumberConstructor)[];
|
|
1145
1158
|
weekdays: {
|
|
@@ -1161,16 +1174,17 @@ declare const VDatePickerMonth: {
|
|
|
1161
1174
|
};
|
|
1162
1175
|
color: StringConstructor;
|
|
1163
1176
|
hideWeekdays: BooleanConstructor;
|
|
1164
|
-
multiple:
|
|
1177
|
+
multiple: PropType<string | number | boolean>;
|
|
1178
|
+
range: BooleanConstructor;
|
|
1165
1179
|
showWeek: BooleanConstructor;
|
|
1166
1180
|
}, vue.ExtractPropTypes<{
|
|
1167
1181
|
allowedDates: (FunctionConstructor | ArrayConstructor)[];
|
|
1168
1182
|
disabled: BooleanConstructor;
|
|
1169
|
-
displayValue:
|
|
1170
|
-
modelValue:
|
|
1183
|
+
displayValue: PropType<unknown>;
|
|
1184
|
+
modelValue: PropType<unknown[] | undefined>;
|
|
1171
1185
|
month: (StringConstructor | NumberConstructor)[];
|
|
1172
|
-
max:
|
|
1173
|
-
min:
|
|
1186
|
+
max: PropType<unknown>;
|
|
1187
|
+
min: PropType<unknown>;
|
|
1174
1188
|
showAdjacentMonths: BooleanConstructor;
|
|
1175
1189
|
year: (StringConstructor | NumberConstructor)[];
|
|
1176
1190
|
weekdays: {
|
|
@@ -1192,7 +1206,8 @@ declare const VDatePickerMonth: {
|
|
|
1192
1206
|
};
|
|
1193
1207
|
color: StringConstructor;
|
|
1194
1208
|
hideWeekdays: BooleanConstructor;
|
|
1195
|
-
multiple:
|
|
1209
|
+
multiple: PropType<string | number | boolean>;
|
|
1210
|
+
range: BooleanConstructor;
|
|
1196
1211
|
showWeek: BooleanConstructor;
|
|
1197
1212
|
}>>;
|
|
1198
1213
|
type VDatePickerMonth = InstanceType<typeof VDatePickerMonth>;
|
|
@@ -27,10 +27,10 @@ export const makeVFileInputProps = propsFactory({
|
|
|
27
27
|
},
|
|
28
28
|
multiple: Boolean,
|
|
29
29
|
showSize: {
|
|
30
|
-
type: [Boolean, Number],
|
|
30
|
+
type: [Boolean, Number, String],
|
|
31
31
|
default: false,
|
|
32
32
|
validator: v => {
|
|
33
|
-
return typeof v === 'boolean' || [1000, 1024].includes(v);
|
|
33
|
+
return typeof v === 'boolean' || [1000, 1024].includes(Number(v));
|
|
34
34
|
}
|
|
35
35
|
},
|
|
36
36
|
...makeVInputProps({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"VFileInput.mjs","names":["VChip","VCounter","VField","filterFieldProps","makeVFieldProps","makeVInputProps","VInput","useFocus","forwardRefs","useLocale","useProxiedModel","computed","nextTick","ref","watch","callEvent","filterInputAttrs","genericComponent","humanReadableFileSize","propsFactory","useRender","wrapInArray","makeVFileInputProps","chips","Boolean","counter","counterSizeString","type","String","default","counterString","multiple","showSize","Number","validator","v","includes","prependIcon","modelValue","Array","val","every","clearable","VFileInput","name","inheritAttrs","props","emits","e","focused","files","setup","_ref","attrs","emit","slots","t","model","isFocused","focus","blur","base","undefined","totalBytes","value","reduce","bytes","_ref2","size","totalBytesReadable","fileNames","map","file","counterValue","fileCount","length","vInputRef","vFieldRef","inputRef","isActive","active","isPlainOrUnderlined","variant","onFocus","document","activeElement","onClickPrepend","onControlClick","onControlMousedown","click","onClear","stopPropagation","newValue","hasModelReset","isArray","hasCounter","hasDetails","details","rootAttrs","inputAttrs","_","inputProps","filterProps","fieldProps","_createVNode","_mergeProps","$event","class","style","_ref3","id","isDisabled","isDirty","isReadonly","isValid","_ref4","fieldClass","slotProps","_Fragment","preventDefault","target","selection","text","color","join"],"sources":["../../../src/components/VFileInput/VFileInput.tsx"],"sourcesContent":["// Styles\nimport './VFileInput.sass'\n\n// Components\nimport { VChip } from '@/components/VChip'\nimport { VCounter } from '@/components/VCounter'\nimport { VField } from '@/components/VField'\nimport { filterFieldProps, makeVFieldProps } from '@/components/VField/VField'\nimport { makeVInputProps, VInput } from '@/components/VInput/VInput'\n\n// Composables\nimport { useFocus } from '@/composables/focus'\nimport { forwardRefs } from '@/composables/forwardRefs'\nimport { useLocale } from '@/composables/locale'\nimport { useProxiedModel } from '@/composables/proxiedModel'\n\n// Utilities\nimport { computed, nextTick, ref, watch } from 'vue'\nimport {\n callEvent,\n filterInputAttrs,\n genericComponent,\n humanReadableFileSize,\n propsFactory,\n useRender,\n wrapInArray,\n} from '@/util'\n\n// Types\nimport type { PropType } from 'vue'\nimport type { VFieldSlots } from '@/components/VField/VField'\nimport type { VInputSlots } from '@/components/VInput/VInput'\n\nexport type VFileInputSlots = VInputSlots & VFieldSlots & {\n counter: never\n selection: {\n fileNames: string[]\n totalBytes: number\n totalBytesReadable: string\n }\n}\n\nexport const makeVFileInputProps = propsFactory({\n chips: Boolean,\n counter: Boolean,\n counterSizeString: {\n type: String,\n default: '$vuetify.fileInput.counterSize',\n },\n counterString: {\n type: String,\n default: '$vuetify.fileInput.counter',\n },\n multiple: Boolean,\n showSize: {\n type: [Boolean, Number] as PropType<boolean | 1000 | 1024>,\n default: false,\n validator: (v: boolean | number) => {\n return (\n typeof v === 'boolean' ||\n [1000, 1024].includes(v)\n )\n },\n },\n\n ...makeVInputProps({ prependIcon: '$file' }),\n\n modelValue: {\n type: Array as PropType<File[]>,\n default: () => ([]),\n validator: (val: any) => {\n return wrapInArray(val).every(v => v != null && typeof v === 'object')\n },\n },\n\n ...makeVFieldProps({ clearable: true }),\n}, 'VFileInput')\n\nexport const VFileInput = genericComponent<VFileInputSlots>()({\n name: 'VFileInput',\n\n inheritAttrs: false,\n\n props: makeVFileInputProps(),\n\n emits: {\n 'click:control': (e: MouseEvent) => true,\n 'mousedown:control': (e: MouseEvent) => true,\n 'update:focused': (focused: boolean) => true,\n 'update:modelValue': (files: File[]) => true,\n },\n\n setup (props, { attrs, emit, slots }) {\n const { t } = useLocale()\n const model = useProxiedModel(props, 'modelValue')\n const { isFocused, focus, blur } = useFocus(props)\n const base = computed(() => typeof props.showSize !== 'boolean' ? props.showSize : undefined)\n const totalBytes = computed(() => (model.value ?? []).reduce((bytes, { size = 0 }) => bytes + size, 0))\n const totalBytesReadable = computed(() => humanReadableFileSize(totalBytes.value, base.value))\n\n const fileNames = computed(() => (model.value ?? []).map(file => {\n const { name = '', size = 0 } = file\n\n return !props.showSize\n ? name\n : `${name} (${humanReadableFileSize(size, base.value)})`\n }))\n\n const counterValue = computed(() => {\n const fileCount = model.value?.length ?? 0\n if (props.showSize) return t(props.counterSizeString, fileCount, totalBytesReadable.value)\n else return t(props.counterString, fileCount)\n })\n const vInputRef = ref<VInput>()\n const vFieldRef = ref<VInput>()\n const inputRef = ref<HTMLInputElement>()\n const isActive = computed(() => (\n isFocused.value ||\n props.active\n ))\n const isPlainOrUnderlined = computed(() => ['plain', 'underlined'].includes(props.variant))\n function onFocus () {\n if (inputRef.value !== document.activeElement) {\n inputRef.value?.focus()\n }\n\n if (!isFocused.value) focus()\n }\n function onClickPrepend (e: MouseEvent) {\n onControlClick(e)\n }\n function onControlMousedown (e: MouseEvent) {\n emit('mousedown:control', e)\n }\n function onControlClick (e: MouseEvent) {\n inputRef.value?.click()\n\n emit('click:control', e)\n }\n function onClear (e: MouseEvent) {\n e.stopPropagation()\n\n onFocus()\n\n nextTick(() => {\n model.value = []\n\n callEvent(props['onClick:clear'], e)\n })\n }\n\n watch(model, newValue => {\n const hasModelReset = !Array.isArray(newValue) || !newValue.length\n\n if (hasModelReset && inputRef.value) {\n inputRef.value.value = ''\n }\n })\n\n useRender(() => {\n const hasCounter = !!(slots.counter || props.counter)\n const hasDetails = !!(hasCounter || slots.details)\n const [rootAttrs, inputAttrs] = filterInputAttrs(attrs)\n const { modelValue: _, ...inputProps } = VInput.filterProps(props)\n const fieldProps = filterFieldProps(props)\n\n return (\n <VInput\n ref={ vInputRef }\n v-model={ model.value }\n class={[\n 'v-file-input',\n {\n 'v-file-input--chips': !!props.chips,\n 'v-input--plain-underlined': isPlainOrUnderlined.value,\n },\n props.class,\n ]}\n style={ props.style }\n onClick:prepend={ onClickPrepend }\n { ...rootAttrs }\n { ...inputProps }\n centerAffix={ !isPlainOrUnderlined.value }\n focused={ isFocused.value }\n >\n {{\n ...slots,\n default: ({\n id,\n isDisabled,\n isDirty,\n isReadonly,\n isValid,\n }) => (\n <VField\n ref={ vFieldRef }\n prepend-icon={ props.prependIcon }\n onMousedown={ onControlMousedown }\n onClick={ onControlClick }\n onClick:clear={ onClear }\n onClick:prependInner={ props['onClick:prependInner'] }\n onClick:appendInner={ props['onClick:appendInner'] }\n { ...fieldProps }\n id={ id.value }\n active={ isActive.value || isDirty.value }\n dirty={ isDirty.value }\n disabled={ isDisabled.value }\n focused={ isFocused.value }\n error={ isValid.value === false }\n >\n {{\n ...slots,\n default: ({\n props: { class: fieldClass, ...slotProps },\n }) => (\n <>\n <input\n ref={ inputRef }\n type=\"file\"\n readonly={ isReadonly.value }\n disabled={ isDisabled.value }\n multiple={ props.multiple }\n name={ props.name }\n onClick={ e => {\n e.stopPropagation()\n\n if (isReadonly.value) e.preventDefault()\n\n onFocus()\n }}\n onChange={ e => {\n if (!e.target) return\n\n const target = e.target as HTMLInputElement\n model.value = [...target.files ?? []]\n }}\n onFocus={ onFocus }\n onBlur={ blur }\n { ...slotProps }\n { ...inputAttrs }\n />\n\n <div class={ fieldClass }>\n { !!model.value?.length && (\n slots.selection ? slots.selection({\n fileNames: fileNames.value,\n totalBytes: totalBytes.value,\n totalBytesReadable: totalBytesReadable.value,\n })\n : props.chips ? fileNames.value.map(text => (\n <VChip\n key={ text }\n size=\"small\"\n color={ props.color }\n >{ text }</VChip>\n ))\n : fileNames.value.join(', ')\n )}\n </div>\n </>\n ),\n }}\n </VField>\n ),\n details: hasDetails ? slotProps => (\n <>\n { slots.details?.(slotProps) }\n\n { hasCounter && (\n <>\n <span />\n\n <VCounter\n active={ !!model.value?.length }\n value={ counterValue.value }\n v-slots:default={ slots.counter }\n />\n </>\n )}\n </>\n ) : undefined,\n }}\n </VInput>\n )\n })\n\n return forwardRefs({}, vInputRef, vFieldRef, inputRef)\n },\n})\n\nexport type VFileInput = InstanceType<typeof VFileInput>\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"VFileInput.mjs","names":["VChip","VCounter","VField","filterFieldProps","makeVFieldProps","makeVInputProps","VInput","useFocus","forwardRefs","useLocale","useProxiedModel","computed","nextTick","ref","watch","callEvent","filterInputAttrs","genericComponent","humanReadableFileSize","propsFactory","useRender","wrapInArray","makeVFileInputProps","chips","Boolean","counter","counterSizeString","type","String","default","counterString","multiple","showSize","Number","validator","v","includes","prependIcon","modelValue","Array","val","every","clearable","VFileInput","name","inheritAttrs","props","emits","e","focused","files","setup","_ref","attrs","emit","slots","t","model","isFocused","focus","blur","base","undefined","totalBytes","value","reduce","bytes","_ref2","size","totalBytesReadable","fileNames","map","file","counterValue","fileCount","length","vInputRef","vFieldRef","inputRef","isActive","active","isPlainOrUnderlined","variant","onFocus","document","activeElement","onClickPrepend","onControlClick","onControlMousedown","click","onClear","stopPropagation","newValue","hasModelReset","isArray","hasCounter","hasDetails","details","rootAttrs","inputAttrs","_","inputProps","filterProps","fieldProps","_createVNode","_mergeProps","$event","class","style","_ref3","id","isDisabled","isDirty","isReadonly","isValid","_ref4","fieldClass","slotProps","_Fragment","preventDefault","target","selection","text","color","join"],"sources":["../../../src/components/VFileInput/VFileInput.tsx"],"sourcesContent":["// Styles\nimport './VFileInput.sass'\n\n// Components\nimport { VChip } from '@/components/VChip'\nimport { VCounter } from '@/components/VCounter'\nimport { VField } from '@/components/VField'\nimport { filterFieldProps, makeVFieldProps } from '@/components/VField/VField'\nimport { makeVInputProps, VInput } from '@/components/VInput/VInput'\n\n// Composables\nimport { useFocus } from '@/composables/focus'\nimport { forwardRefs } from '@/composables/forwardRefs'\nimport { useLocale } from '@/composables/locale'\nimport { useProxiedModel } from '@/composables/proxiedModel'\n\n// Utilities\nimport { computed, nextTick, ref, watch } from 'vue'\nimport {\n callEvent,\n filterInputAttrs,\n genericComponent,\n humanReadableFileSize,\n propsFactory,\n useRender,\n wrapInArray,\n} from '@/util'\n\n// Types\nimport type { PropType } from 'vue'\nimport type { VFieldSlots } from '@/components/VField/VField'\nimport type { VInputSlots } from '@/components/VInput/VInput'\n\nexport type VFileInputSlots = VInputSlots & VFieldSlots & {\n counter: never\n selection: {\n fileNames: string[]\n totalBytes: number\n totalBytesReadable: string\n }\n}\n\nexport const makeVFileInputProps = propsFactory({\n chips: Boolean,\n counter: Boolean,\n counterSizeString: {\n type: String,\n default: '$vuetify.fileInput.counterSize',\n },\n counterString: {\n type: String,\n default: '$vuetify.fileInput.counter',\n },\n multiple: Boolean,\n showSize: {\n type: [Boolean, Number, String] as PropType<boolean | 1000 | 1024>,\n default: false,\n validator: (v: boolean | number) => {\n return (\n typeof v === 'boolean' ||\n [1000, 1024].includes(Number(v))\n )\n },\n },\n\n ...makeVInputProps({ prependIcon: '$file' }),\n\n modelValue: {\n type: Array as PropType<File[]>,\n default: () => ([]),\n validator: (val: any) => {\n return wrapInArray(val).every(v => v != null && typeof v === 'object')\n },\n },\n\n ...makeVFieldProps({ clearable: true }),\n}, 'VFileInput')\n\nexport const VFileInput = genericComponent<VFileInputSlots>()({\n name: 'VFileInput',\n\n inheritAttrs: false,\n\n props: makeVFileInputProps(),\n\n emits: {\n 'click:control': (e: MouseEvent) => true,\n 'mousedown:control': (e: MouseEvent) => true,\n 'update:focused': (focused: boolean) => true,\n 'update:modelValue': (files: File[]) => true,\n },\n\n setup (props, { attrs, emit, slots }) {\n const { t } = useLocale()\n const model = useProxiedModel(props, 'modelValue')\n const { isFocused, focus, blur } = useFocus(props)\n const base = computed(() => typeof props.showSize !== 'boolean' ? props.showSize : undefined)\n const totalBytes = computed(() => (model.value ?? []).reduce((bytes, { size = 0 }) => bytes + size, 0))\n const totalBytesReadable = computed(() => humanReadableFileSize(totalBytes.value, base.value))\n\n const fileNames = computed(() => (model.value ?? []).map(file => {\n const { name = '', size = 0 } = file\n\n return !props.showSize\n ? name\n : `${name} (${humanReadableFileSize(size, base.value)})`\n }))\n\n const counterValue = computed(() => {\n const fileCount = model.value?.length ?? 0\n if (props.showSize) return t(props.counterSizeString, fileCount, totalBytesReadable.value)\n else return t(props.counterString, fileCount)\n })\n const vInputRef = ref<VInput>()\n const vFieldRef = ref<VInput>()\n const inputRef = ref<HTMLInputElement>()\n const isActive = computed(() => (\n isFocused.value ||\n props.active\n ))\n const isPlainOrUnderlined = computed(() => ['plain', 'underlined'].includes(props.variant))\n function onFocus () {\n if (inputRef.value !== document.activeElement) {\n inputRef.value?.focus()\n }\n\n if (!isFocused.value) focus()\n }\n function onClickPrepend (e: MouseEvent) {\n onControlClick(e)\n }\n function onControlMousedown (e: MouseEvent) {\n emit('mousedown:control', e)\n }\n function onControlClick (e: MouseEvent) {\n inputRef.value?.click()\n\n emit('click:control', e)\n }\n function onClear (e: MouseEvent) {\n e.stopPropagation()\n\n onFocus()\n\n nextTick(() => {\n model.value = []\n\n callEvent(props['onClick:clear'], e)\n })\n }\n\n watch(model, newValue => {\n const hasModelReset = !Array.isArray(newValue) || !newValue.length\n\n if (hasModelReset && inputRef.value) {\n inputRef.value.value = ''\n }\n })\n\n useRender(() => {\n const hasCounter = !!(slots.counter || props.counter)\n const hasDetails = !!(hasCounter || slots.details)\n const [rootAttrs, inputAttrs] = filterInputAttrs(attrs)\n const { modelValue: _, ...inputProps } = VInput.filterProps(props)\n const fieldProps = filterFieldProps(props)\n\n return (\n <VInput\n ref={ vInputRef }\n v-model={ model.value }\n class={[\n 'v-file-input',\n {\n 'v-file-input--chips': !!props.chips,\n 'v-input--plain-underlined': isPlainOrUnderlined.value,\n },\n props.class,\n ]}\n style={ props.style }\n onClick:prepend={ onClickPrepend }\n { ...rootAttrs }\n { ...inputProps }\n centerAffix={ !isPlainOrUnderlined.value }\n focused={ isFocused.value }\n >\n {{\n ...slots,\n default: ({\n id,\n isDisabled,\n isDirty,\n isReadonly,\n isValid,\n }) => (\n <VField\n ref={ vFieldRef }\n prepend-icon={ props.prependIcon }\n onMousedown={ onControlMousedown }\n onClick={ onControlClick }\n onClick:clear={ onClear }\n onClick:prependInner={ props['onClick:prependInner'] }\n onClick:appendInner={ props['onClick:appendInner'] }\n { ...fieldProps }\n id={ id.value }\n active={ isActive.value || isDirty.value }\n dirty={ isDirty.value }\n disabled={ isDisabled.value }\n focused={ isFocused.value }\n error={ isValid.value === false }\n >\n {{\n ...slots,\n default: ({\n props: { class: fieldClass, ...slotProps },\n }) => (\n <>\n <input\n ref={ inputRef }\n type=\"file\"\n readonly={ isReadonly.value }\n disabled={ isDisabled.value }\n multiple={ props.multiple }\n name={ props.name }\n onClick={ e => {\n e.stopPropagation()\n\n if (isReadonly.value) e.preventDefault()\n\n onFocus()\n }}\n onChange={ e => {\n if (!e.target) return\n\n const target = e.target as HTMLInputElement\n model.value = [...target.files ?? []]\n }}\n onFocus={ onFocus }\n onBlur={ blur }\n { ...slotProps }\n { ...inputAttrs }\n />\n\n <div class={ fieldClass }>\n { !!model.value?.length && (\n slots.selection ? slots.selection({\n fileNames: fileNames.value,\n totalBytes: totalBytes.value,\n totalBytesReadable: totalBytesReadable.value,\n })\n : props.chips ? fileNames.value.map(text => (\n <VChip\n key={ text }\n size=\"small\"\n color={ props.color }\n >{ text }</VChip>\n ))\n : fileNames.value.join(', ')\n )}\n </div>\n </>\n ),\n }}\n </VField>\n ),\n details: hasDetails ? slotProps => (\n <>\n { slots.details?.(slotProps) }\n\n { hasCounter && (\n <>\n <span />\n\n <VCounter\n active={ !!model.value?.length }\n value={ counterValue.value }\n v-slots:default={ slots.counter }\n />\n </>\n )}\n </>\n ) : undefined,\n }}\n </VInput>\n )\n })\n\n return forwardRefs({}, vInputRef, vFieldRef, inputRef)\n },\n})\n\nexport type VFileInput = InstanceType<typeof VFileInput>\n"],"mappings":"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"}
|
|
@@ -4,15 +4,18 @@ import "./VImg.css";
|
|
|
4
4
|
|
|
5
5
|
// Components
|
|
6
6
|
import { makeVResponsiveProps, VResponsive } from "../VResponsive/VResponsive.mjs"; // Composables
|
|
7
|
+
import { useBackgroundColor } from "../../composables/color.mjs";
|
|
7
8
|
import { makeComponentProps } from "../../composables/component.mjs";
|
|
9
|
+
import { makeRoundedProps, useRounded } from "../../composables/rounded.mjs";
|
|
8
10
|
import { makeTransitionProps, MaybeTransition } from "../../composables/transition.mjs"; // Directives
|
|
9
11
|
import intersect from "../../directives/intersect/index.mjs"; // Utilities
|
|
10
|
-
import { computed, nextTick, onBeforeMount, onBeforeUnmount, ref, shallowRef, vShow, watch, withDirectives } from 'vue';
|
|
12
|
+
import { computed, nextTick, onBeforeMount, onBeforeUnmount, ref, shallowRef, toRef, vShow, watch, withDirectives } from 'vue';
|
|
11
13
|
import { convertToUnit, genericComponent, getCurrentInstance, propsFactory, SUPPORTS_INTERSECTION, useRender } from "../../util/index.mjs"; // Types
|
|
12
14
|
// not intended for public use, this is passed in by vuetify-loader
|
|
13
15
|
export const makeVImgProps = propsFactory({
|
|
14
16
|
alt: String,
|
|
15
17
|
cover: Boolean,
|
|
18
|
+
color: String,
|
|
16
19
|
draggable: {
|
|
17
20
|
type: [Boolean, String],
|
|
18
21
|
default: undefined
|
|
@@ -41,6 +44,7 @@ export const makeVImgProps = propsFactory({
|
|
|
41
44
|
position: String,
|
|
42
45
|
...makeVResponsiveProps(),
|
|
43
46
|
...makeComponentProps(),
|
|
47
|
+
...makeRoundedProps(),
|
|
44
48
|
...makeTransitionProps()
|
|
45
49
|
}, 'VImg');
|
|
46
50
|
export const VImg = genericComponent()({
|
|
@@ -59,6 +63,13 @@ export const VImg = genericComponent()({
|
|
|
59
63
|
emit,
|
|
60
64
|
slots
|
|
61
65
|
} = _ref;
|
|
66
|
+
const {
|
|
67
|
+
backgroundColorClasses,
|
|
68
|
+
backgroundColorStyles
|
|
69
|
+
} = useBackgroundColor(toRef(props, 'color'));
|
|
70
|
+
const {
|
|
71
|
+
roundedClasses
|
|
72
|
+
} = useRounded(props);
|
|
62
73
|
const vm = getCurrentInstance('VImg');
|
|
63
74
|
const currentSrc = shallowRef(''); // Set from srcset
|
|
64
75
|
const image = ref();
|
|
@@ -259,10 +270,10 @@ export const VImg = genericComponent()({
|
|
|
259
270
|
return _withDirectives(_createVNode(VResponsive, _mergeProps({
|
|
260
271
|
"class": ['v-img', {
|
|
261
272
|
'v-img--booting': !isBooted.value
|
|
262
|
-
}, props.class],
|
|
273
|
+
}, backgroundColorClasses.value, roundedClasses.value, props.class],
|
|
263
274
|
"style": [{
|
|
264
275
|
width: convertToUnit(props.width === 'auto' ? naturalWidth.value : props.width)
|
|
265
|
-
}, props.style]
|
|
276
|
+
}, backgroundColorStyles.value, props.style]
|
|
266
277
|
}, responsiveProps, {
|
|
267
278
|
"aspectRatio": aspectRatio.value,
|
|
268
279
|
"aria-label": props.alt,
|