@vuetify/nightly 3.8.9-master.2025-06-12 → 3.8.9-master.2025-06-14
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/CHANGELOG.md +12 -3
- package/dist/json/attributes.json +3361 -3361
- package/dist/json/importMap-labs.json +30 -30
- package/dist/json/importMap.json +156 -156
- package/dist/json/web-types.json +6102 -6102
- package/dist/vuetify-labs.cjs +44 -22
- package/dist/vuetify-labs.css +3398 -3395
- package/dist/vuetify-labs.d.ts +59 -59
- package/dist/vuetify-labs.esm.js +44 -22
- package/dist/vuetify-labs.esm.js.map +1 -1
- package/dist/vuetify-labs.js +44 -22
- package/dist/vuetify-labs.min.css +2 -2
- package/dist/vuetify.cjs +41 -22
- package/dist/vuetify.cjs.map +1 -1
- package/dist/vuetify.css +4550 -4547
- package/dist/vuetify.d.ts +59 -59
- package/dist/vuetify.esm.js +41 -22
- package/dist/vuetify.esm.js.map +1 -1
- package/dist/vuetify.js +41 -22
- package/dist/vuetify.js.map +1 -1
- package/dist/vuetify.min.css +2 -2
- package/dist/vuetify.min.js +19 -17
- package/dist/vuetify.min.js.map +1 -1
- package/lib/components/VDataTable/VDataTable.css +6 -3
- package/lib/components/VDataTable/VDataTable.sass +4 -2
- package/lib/components/VDatePicker/VDatePicker.js +19 -13
- package/lib/components/VDatePicker/VDatePicker.js.map +1 -1
- package/lib/components/VDatePicker/VDatePickerYears.js +1 -3
- package/lib/components/VDatePicker/VDatePickerYears.js.map +1 -1
- package/lib/components/VField/VField.js +10 -2
- package/lib/components/VField/VField.js.map +1 -1
- package/lib/composables/hotkey.d.ts +9 -0
- package/lib/composables/hotkey.js +131 -0
- package/lib/composables/hotkey.js.map +1 -0
- package/lib/composables/transition.js +3 -3
- package/lib/composables/transition.js.map +1 -1
- package/lib/entry-bundler.js +1 -1
- package/lib/framework.d.ts +59 -59
- package/lib/framework.js +1 -1
- package/lib/labs/VFileUpload/VFileUploadItem.js +1 -0
- package/lib/labs/VFileUpload/VFileUploadItem.js.map +1 -1
- package/lib/labs/VTimePicker/VTimePickerClock.js +3 -1
- package/lib/labs/VTimePicker/VTimePickerClock.js.map +1 -1
- package/lib/util/helpers.d.ts +3 -0
- package/lib/util/helpers.js +7 -0
- package/lib/util/helpers.js.map +1 -1
- package/package.json +1 -1
@@ -0,0 +1,131 @@
|
|
1
|
+
// Utilities
|
2
|
+
import { onBeforeUnmount, toValue, watch } from 'vue';
|
3
|
+
import { IN_BROWSER } from "../util/index.js";
|
4
|
+
import { getCurrentInstance } from "../util/getCurrentInstance.js"; // Types
|
5
|
+
export function useHotkey(keys, callback) {
|
6
|
+
let options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
|
7
|
+
if (!IN_BROWSER) return function () {};
|
8
|
+
const {
|
9
|
+
event = 'keydown',
|
10
|
+
inputs = false,
|
11
|
+
preventDefault = true,
|
12
|
+
sequenceTimeout = 1000
|
13
|
+
} = options;
|
14
|
+
const isMac = navigator?.userAgent?.includes('Macintosh');
|
15
|
+
let timeout = 0;
|
16
|
+
let keyGroups;
|
17
|
+
let isSequence = false;
|
18
|
+
let groupIndex = 0;
|
19
|
+
function clearTimer() {
|
20
|
+
if (!timeout) return;
|
21
|
+
clearTimeout(timeout);
|
22
|
+
timeout = 0;
|
23
|
+
}
|
24
|
+
function isInputFocused() {
|
25
|
+
if (inputs) return false;
|
26
|
+
const activeElement = document.activeElement;
|
27
|
+
return activeElement && (activeElement.tagName === 'INPUT' || activeElement.tagName === 'TEXTAREA' || activeElement.isContentEditable || activeElement.contentEditable === 'true');
|
28
|
+
}
|
29
|
+
function resetSequence() {
|
30
|
+
groupIndex = 0;
|
31
|
+
clearTimer();
|
32
|
+
}
|
33
|
+
function handler(e) {
|
34
|
+
const group = keyGroups[groupIndex];
|
35
|
+
if (!group || isInputFocused()) return;
|
36
|
+
if (!matchesKeyGroup(e, group)) {
|
37
|
+
if (isSequence) resetSequence();
|
38
|
+
return;
|
39
|
+
}
|
40
|
+
if (preventDefault) e.preventDefault();
|
41
|
+
if (!isSequence) {
|
42
|
+
callback(e);
|
43
|
+
return;
|
44
|
+
}
|
45
|
+
clearTimer();
|
46
|
+
groupIndex++;
|
47
|
+
if (groupIndex === keyGroups.length) {
|
48
|
+
callback(e);
|
49
|
+
resetSequence();
|
50
|
+
return;
|
51
|
+
}
|
52
|
+
timeout = window.setTimeout(resetSequence, sequenceTimeout);
|
53
|
+
}
|
54
|
+
function cleanup() {
|
55
|
+
window.removeEventListener(event, handler);
|
56
|
+
clearTimer();
|
57
|
+
}
|
58
|
+
function splitKeySequence(str) {
|
59
|
+
const groups = [];
|
60
|
+
let current = '';
|
61
|
+
for (let i = 0; i < str.length; i++) {
|
62
|
+
const char = str[i];
|
63
|
+
if (char === '-') {
|
64
|
+
const next = str[i + 1];
|
65
|
+
// Treat '-' as a sequence delimiter only if the next character exists
|
66
|
+
// and is NOT one of '-', '+', or '_' (these indicate the '-' belongs to the key itself)
|
67
|
+
if (next && !['-', '+', '_'].includes(next)) {
|
68
|
+
groups.push(current);
|
69
|
+
current = '';
|
70
|
+
continue;
|
71
|
+
}
|
72
|
+
}
|
73
|
+
current += char;
|
74
|
+
}
|
75
|
+
groups.push(current);
|
76
|
+
return groups;
|
77
|
+
}
|
78
|
+
watch(() => toValue(keys), function (unrefKeys) {
|
79
|
+
cleanup();
|
80
|
+
if (unrefKeys) {
|
81
|
+
const groups = splitKeySequence(unrefKeys.toLowerCase());
|
82
|
+
isSequence = groups.length > 1;
|
83
|
+
keyGroups = groups;
|
84
|
+
resetSequence();
|
85
|
+
window.addEventListener(event, handler);
|
86
|
+
}
|
87
|
+
}, {
|
88
|
+
immediate: true
|
89
|
+
});
|
90
|
+
try {
|
91
|
+
getCurrentInstance('useHotkey');
|
92
|
+
onBeforeUnmount(cleanup);
|
93
|
+
} catch {
|
94
|
+
// Not in Vue setup context
|
95
|
+
}
|
96
|
+
function parseKeyGroup(group) {
|
97
|
+
const MODIFIERS = ['ctrl', 'shift', 'alt', 'meta', 'cmd'];
|
98
|
+
|
99
|
+
// Split on +, -, or _ but keep empty strings which indicate consecutive separators (e.g. alt--)
|
100
|
+
const parts = group.toLowerCase().split(/[+_-]/);
|
101
|
+
const modifiers = Object.fromEntries(MODIFIERS.map(m => [m, false]));
|
102
|
+
let actualKey;
|
103
|
+
for (const part of parts) {
|
104
|
+
if (!part) continue; // Skip empty tokens
|
105
|
+
if (MODIFIERS.includes(part)) {
|
106
|
+
modifiers[part] = true;
|
107
|
+
} else {
|
108
|
+
actualKey = part;
|
109
|
+
}
|
110
|
+
}
|
111
|
+
|
112
|
+
// Fallback for cases where actualKey is a literal '+' or '-' (e.g. alt--, alt++ , alt+-, alt-+)
|
113
|
+
if (!actualKey) {
|
114
|
+
const lastChar = group.slice(-1);
|
115
|
+
if (['+', '-', '_'].includes(lastChar)) actualKey = lastChar;
|
116
|
+
}
|
117
|
+
return {
|
118
|
+
modifiers,
|
119
|
+
actualKey
|
120
|
+
};
|
121
|
+
}
|
122
|
+
function matchesKeyGroup(e, group) {
|
123
|
+
const {
|
124
|
+
modifiers,
|
125
|
+
actualKey
|
126
|
+
} = parseKeyGroup(group);
|
127
|
+
return e.ctrlKey === (isMac && modifiers.cmd ? false : modifiers.ctrl) && e.metaKey === (isMac && modifiers.cmd ? true : modifiers.meta) && e.shiftKey === modifiers.shift && e.altKey === modifiers.alt && e.key.toLowerCase() === actualKey?.toLowerCase();
|
128
|
+
}
|
129
|
+
return cleanup;
|
130
|
+
}
|
131
|
+
//# sourceMappingURL=hotkey.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"hotkey.js","names":["onBeforeUnmount","toValue","watch","IN_BROWSER","getCurrentInstance","useHotkey","keys","callback","options","arguments","length","undefined","event","inputs","preventDefault","sequenceTimeout","isMac","navigator","userAgent","includes","timeout","keyGroups","isSequence","groupIndex","clearTimer","clearTimeout","isInputFocused","activeElement","document","tagName","isContentEditable","contentEditable","resetSequence","handler","e","group","matchesKeyGroup","window","setTimeout","cleanup","removeEventListener","splitKeySequence","str","groups","current","i","char","next","push","unrefKeys","toLowerCase","addEventListener","immediate","parseKeyGroup","MODIFIERS","parts","split","modifiers","Object","fromEntries","map","m","actualKey","part","lastChar","slice","ctrlKey","cmd","ctrl","metaKey","meta","shiftKey","shift","altKey","alt","key"],"sources":["../../src/composables/hotkey.ts"],"sourcesContent":["// Utilities\nimport { onBeforeUnmount, toValue, watch } from 'vue'\nimport { IN_BROWSER } from '@/util'\nimport { getCurrentInstance } from '@/util/getCurrentInstance'\n\n// Types\nimport type { MaybeRef } from '@/util'\n\ninterface HotkeyOptions {\n event?: 'keydown' | 'keyup'\n inputs?: boolean\n preventDefault?: boolean\n sequenceTimeout?: number\n}\n\nexport function useHotkey (\n keys: MaybeRef<string | undefined>,\n callback: (e: KeyboardEvent) => void,\n options: HotkeyOptions = {}\n) {\n if (!IN_BROWSER) return function () {}\n\n const {\n event = 'keydown',\n inputs = false,\n preventDefault = true,\n sequenceTimeout = 1000,\n } = options\n\n const isMac = navigator?.userAgent?.includes('Macintosh')\n let timeout = 0\n let keyGroups: string[]\n let isSequence = false\n let groupIndex = 0\n\n function clearTimer () {\n if (!timeout) return\n\n clearTimeout(timeout)\n timeout = 0\n }\n\n function isInputFocused () {\n if (inputs) return false\n\n const activeElement = document.activeElement as HTMLElement\n\n return activeElement && (\n activeElement.tagName === 'INPUT' ||\n activeElement.tagName === 'TEXTAREA' ||\n activeElement.isContentEditable ||\n activeElement.contentEditable === 'true'\n )\n }\n\n function resetSequence () {\n groupIndex = 0\n clearTimer()\n }\n\n function handler (e: KeyboardEvent) {\n const group = keyGroups[groupIndex]\n\n if (!group || isInputFocused()) return\n\n if (!matchesKeyGroup(e, group)) {\n if (isSequence) resetSequence()\n return\n }\n\n if (preventDefault) e.preventDefault()\n\n if (!isSequence) {\n callback(e)\n return\n }\n\n clearTimer()\n groupIndex++\n\n if (groupIndex === keyGroups.length) {\n callback(e)\n resetSequence()\n return\n }\n\n timeout = window.setTimeout(resetSequence, sequenceTimeout)\n }\n\n function cleanup () {\n window.removeEventListener(event, handler)\n clearTimer()\n }\n\n function splitKeySequence (str: string) {\n const groups: string[] = []\n let current = ''\n for (let i = 0; i < str.length; i++) {\n const char = str[i]\n if (char === '-') {\n const next = str[i + 1]\n // Treat '-' as a sequence delimiter only if the next character exists\n // and is NOT one of '-', '+', or '_' (these indicate the '-' belongs to the key itself)\n if (next && !['-', '+', '_'].includes(next)) {\n groups.push(current)\n current = ''\n continue\n }\n }\n current += char\n }\n groups.push(current)\n\n return groups\n }\n\n watch(() => toValue(keys), function (unrefKeys) {\n cleanup()\n\n if (unrefKeys) {\n const groups = splitKeySequence(unrefKeys.toLowerCase())\n isSequence = groups.length > 1\n keyGroups = groups\n resetSequence()\n window.addEventListener(event, handler)\n }\n }, { immediate: true })\n\n try {\n getCurrentInstance('useHotkey')\n onBeforeUnmount(cleanup)\n } catch {\n // Not in Vue setup context\n }\n\n function parseKeyGroup (group: string) {\n const MODIFIERS = ['ctrl', 'shift', 'alt', 'meta', 'cmd']\n\n // Split on +, -, or _ but keep empty strings which indicate consecutive separators (e.g. alt--)\n const parts = group.toLowerCase().split(/[+_-]/)\n\n const modifiers = Object.fromEntries(MODIFIERS.map(m => [m, false])) as Record<string, boolean>\n let actualKey: string | undefined\n\n for (const part of parts) {\n if (!part) continue // Skip empty tokens\n if (MODIFIERS.includes(part)) {\n modifiers[part] = true\n } else {\n actualKey = part\n }\n }\n\n // Fallback for cases where actualKey is a literal '+' or '-' (e.g. alt--, alt++ , alt+-, alt-+)\n if (!actualKey) {\n const lastChar = group.slice(-1)\n if (['+', '-', '_'].includes(lastChar)) actualKey = lastChar\n }\n\n return { modifiers, actualKey }\n }\n\n function matchesKeyGroup (e: KeyboardEvent, group: string) {\n const { modifiers, actualKey } = parseKeyGroup(group)\n\n return (\n e.ctrlKey === (isMac && modifiers.cmd ? false : modifiers.ctrl) &&\n e.metaKey === (isMac && modifiers.cmd ? true : modifiers.meta) &&\n e.shiftKey === modifiers.shift &&\n e.altKey === modifiers.alt &&\n e.key.toLowerCase() === actualKey?.toLowerCase()\n )\n }\n\n return cleanup\n}\n"],"mappings":"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","ignoreList":[]}
|
@@ -1,6 +1,6 @@
|
|
1
1
|
// Utilities
|
2
2
|
import { h, mergeProps, Transition, TransitionGroup } from 'vue';
|
3
|
-
import { isObject, propsFactory } from "../util/index.js"; // Types
|
3
|
+
import { isObject, onlyDefinedProps, propsFactory } from "../util/index.js"; // Types
|
4
4
|
export const makeTransitionProps = propsFactory({
|
5
5
|
transition: {
|
6
6
|
type: null,
|
@@ -24,10 +24,10 @@ export const MaybeTransition = (props, _ref) => {
|
|
24
24
|
} = isObject(transition) ? transition : {};
|
25
25
|
let transitionProps;
|
26
26
|
if (isObject(transition)) {
|
27
|
-
transitionProps = mergeProps(customProps,
|
27
|
+
transitionProps = mergeProps(customProps, onlyDefinedProps({
|
28
28
|
disabled,
|
29
29
|
group
|
30
|
-
})
|
30
|
+
}), rest);
|
31
31
|
} else {
|
32
32
|
transitionProps = mergeProps({
|
33
33
|
name: disabled || !transition ? '' : transition
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"transition.js","names":["h","mergeProps","Transition","TransitionGroup","isObject","propsFactory","makeTransitionProps","transition","type","default","validator","val","MaybeTransition","props","_ref","slots","disabled","group","rest","component","customProps","transitionProps","
|
1
|
+
{"version":3,"file":"transition.js","names":["h","mergeProps","Transition","TransitionGroup","isObject","onlyDefinedProps","propsFactory","makeTransitionProps","transition","type","default","validator","val","MaybeTransition","props","_ref","slots","disabled","group","rest","component","customProps","transitionProps","name"],"sources":["../../src/composables/transition.ts"],"sourcesContent":["// Utilities\nimport { h, mergeProps, Transition, TransitionGroup } from 'vue'\nimport { isObject, onlyDefinedProps, propsFactory } from '@/util'\n\n// Types\nimport type { Component, FunctionalComponent, Prop, TransitionProps } from 'vue'\n\nexport const makeTransitionProps = propsFactory({\n transition: {\n type: null,\n default: 'fade-transition',\n validator: val => val !== true,\n } as Prop<null | string | boolean | TransitionProps & { component?: Component }>,\n}, 'transition')\n\ninterface MaybeTransitionProps extends TransitionProps {\n transition?: null | string | boolean | TransitionProps & { component?: any }\n disabled?: boolean\n group?: boolean\n}\n\nexport const MaybeTransition: FunctionalComponent<MaybeTransitionProps> = (props, { slots }) => {\n const { transition, disabled, group, ...rest } = props\n\n const {\n component = group ? TransitionGroup : Transition,\n ...customProps\n } = isObject(transition) ? transition : {}\n\n let transitionProps\n if (isObject(transition)) {\n transitionProps = mergeProps(\n customProps,\n onlyDefinedProps({ disabled, group }),\n rest,\n )\n } else {\n transitionProps = mergeProps(\n { name: disabled || !transition ? '' : transition },\n rest,\n )\n }\n\n return h(\n component,\n transitionProps,\n slots\n )\n}\n"],"mappings":"AAAA;AACA,SAASA,CAAC,EAAEC,UAAU,EAAEC,UAAU,EAAEC,eAAe,QAAQ,KAAK;AAAA,SACvDC,QAAQ,EAAEC,gBAAgB,EAAEC,YAAY,4BAEjD;AAGA,OAAO,MAAMC,mBAAmB,GAAGD,YAAY,CAAC;EAC9CE,UAAU,EAAE;IACVC,IAAI,EAAE,IAAI;IACVC,OAAO,EAAE,iBAAiB;IAC1BC,SAAS,EAAEC,GAAG,IAAIA,GAAG,KAAK;EAC5B;AACF,CAAC,EAAE,YAAY,CAAC;AAQhB,OAAO,MAAMC,eAA0D,GAAGA,CAACC,KAAK,EAAAC,IAAA,KAAgB;EAAA,IAAd;IAAEC;EAAM,CAAC,GAAAD,IAAA;EACzF,MAAM;IAAEP,UAAU;IAAES,QAAQ;IAAEC,KAAK;IAAE,GAAGC;EAAK,CAAC,GAAGL,KAAK;EAEtD,MAAM;IACJM,SAAS,GAAGF,KAAK,GAAGf,eAAe,GAAGD,UAAU;IAChD,GAAGmB;EACL,CAAC,GAAGjB,QAAQ,CAACI,UAAU,CAAC,GAAGA,UAAU,GAAG,CAAC,CAAC;EAE1C,IAAIc,eAAe;EACnB,IAAIlB,QAAQ,CAACI,UAAU,CAAC,EAAE;IACxBc,eAAe,GAAGrB,UAAU,CAC1BoB,WAAW,EACXhB,gBAAgB,CAAC;MAAEY,QAAQ;MAAEC;IAAM,CAAC,CAAC,EACrCC,IACF,CAAC;EACH,CAAC,MAAM;IACLG,eAAe,GAAGrB,UAAU,CAC1B;MAAEsB,IAAI,EAAEN,QAAQ,IAAI,CAACT,UAAU,GAAG,EAAE,GAAGA;IAAW,CAAC,EACnDW,IACF,CAAC;EACH;EAEA,OAAOnB,CAAC,CACNoB,SAAS,EACTE,eAAe,EACfN,KACF,CAAC;AACH,CAAC","ignoreList":[]}
|
package/lib/entry-bundler.js
CHANGED
@@ -16,7 +16,7 @@ export const createVuetify = function () {
|
|
16
16
|
...options
|
17
17
|
});
|
18
18
|
};
|
19
|
-
export const version = "3.8.9-master.2025-06-
|
19
|
+
export const version = "3.8.9-master.2025-06-14";
|
20
20
|
createVuetify.version = version;
|
21
21
|
export { blueprints, components, directives };
|
22
22
|
export * from "./composables/index.js";
|
package/lib/framework.d.ts
CHANGED
@@ -2545,22 +2545,20 @@ declare module 'vue' {
|
|
2545
2545
|
$children?: VNodeChild
|
2546
2546
|
}
|
2547
2547
|
export interface GlobalComponents {
|
2548
|
-
VAutocomplete: typeof import('vuetify/components')['VAutocomplete']
|
2549
|
-
VApp: typeof import('vuetify/components')['VApp']
|
2550
2548
|
VAlert: typeof import('vuetify/components')['VAlert']
|
2551
2549
|
VAlertTitle: typeof import('vuetify/components')['VAlertTitle']
|
2552
|
-
|
2553
|
-
|
2554
|
-
|
2550
|
+
VAppBar: typeof import('vuetify/components')['VAppBar']
|
2551
|
+
VAppBarNavIcon: typeof import('vuetify/components')['VAppBarNavIcon']
|
2552
|
+
VAppBarTitle: typeof import('vuetify/components')['VAppBarTitle']
|
2553
|
+
VApp: typeof import('vuetify/components')['VApp']
|
2554
|
+
VAutocomplete: typeof import('vuetify/components')['VAutocomplete']
|
2555
2555
|
VBanner: typeof import('vuetify/components')['VBanner']
|
2556
2556
|
VBannerActions: typeof import('vuetify/components')['VBannerActions']
|
2557
2557
|
VBannerText: typeof import('vuetify/components')['VBannerText']
|
2558
2558
|
VBottomNavigation: typeof import('vuetify/components')['VBottomNavigation']
|
2559
|
-
|
2559
|
+
VBadge: typeof import('vuetify/components')['VBadge']
|
2560
2560
|
VBtnGroup: typeof import('vuetify/components')['VBtnGroup']
|
2561
|
-
|
2562
|
-
VAppBarNavIcon: typeof import('vuetify/components')['VAppBarNavIcon']
|
2563
|
-
VAppBarTitle: typeof import('vuetify/components')['VAppBarTitle']
|
2561
|
+
VAvatar: typeof import('vuetify/components')['VAvatar']
|
2564
2562
|
VCard: typeof import('vuetify/components')['VCard']
|
2565
2563
|
VCardActions: typeof import('vuetify/components')['VCardActions']
|
2566
2564
|
VCardItem: typeof import('vuetify/components')['VCardItem']
|
@@ -2568,16 +2566,20 @@ declare module 'vue' {
|
|
2568
2566
|
VCardText: typeof import('vuetify/components')['VCardText']
|
2569
2567
|
VCardTitle: typeof import('vuetify/components')['VCardTitle']
|
2570
2568
|
VBtnToggle: typeof import('vuetify/components')['VBtnToggle']
|
2571
|
-
|
2572
|
-
|
2573
|
-
|
2574
|
-
|
2569
|
+
VBottomSheet: typeof import('vuetify/components')['VBottomSheet']
|
2570
|
+
VBreadcrumbs: typeof import('vuetify/components')['VBreadcrumbs']
|
2571
|
+
VBreadcrumbsItem: typeof import('vuetify/components')['VBreadcrumbsItem']
|
2572
|
+
VBreadcrumbsDivider: typeof import('vuetify/components')['VBreadcrumbsDivider']
|
2575
2573
|
VCheckbox: typeof import('vuetify/components')['VCheckbox']
|
2576
2574
|
VCheckboxBtn: typeof import('vuetify/components')['VCheckboxBtn']
|
2575
|
+
VBtn: typeof import('vuetify/components')['VBtn']
|
2576
|
+
VCarousel: typeof import('vuetify/components')['VCarousel']
|
2577
|
+
VCarouselItem: typeof import('vuetify/components')['VCarouselItem']
|
2578
|
+
VChip: typeof import('vuetify/components')['VChip']
|
2579
|
+
VCode: typeof import('vuetify/components')['VCode']
|
2580
|
+
VCombobox: typeof import('vuetify/components')['VCombobox']
|
2577
2581
|
VCounter: typeof import('vuetify/components')['VCounter']
|
2578
2582
|
VColorPicker: typeof import('vuetify/components')['VColorPicker']
|
2579
|
-
VCombobox: typeof import('vuetify/components')['VCombobox']
|
2580
|
-
VCode: typeof import('vuetify/components')['VCode']
|
2581
2583
|
VDataTable: typeof import('vuetify/components')['VDataTable']
|
2582
2584
|
VDataTableHeaders: typeof import('vuetify/components')['VDataTableHeaders']
|
2583
2585
|
VDataTableFooter: typeof import('vuetify/components')['VDataTableFooter']
|
@@ -2585,38 +2587,40 @@ declare module 'vue' {
|
|
2585
2587
|
VDataTableRow: typeof import('vuetify/components')['VDataTableRow']
|
2586
2588
|
VDataTableVirtual: typeof import('vuetify/components')['VDataTableVirtual']
|
2587
2589
|
VDataTableServer: typeof import('vuetify/components')['VDataTableServer']
|
2590
|
+
VChipGroup: typeof import('vuetify/components')['VChipGroup']
|
2588
2591
|
VDatePicker: typeof import('vuetify/components')['VDatePicker']
|
2589
2592
|
VDatePickerControls: typeof import('vuetify/components')['VDatePickerControls']
|
2590
2593
|
VDatePickerHeader: typeof import('vuetify/components')['VDatePickerHeader']
|
2591
2594
|
VDatePickerMonth: typeof import('vuetify/components')['VDatePickerMonth']
|
2592
2595
|
VDatePickerMonths: typeof import('vuetify/components')['VDatePickerMonths']
|
2593
2596
|
VDatePickerYears: typeof import('vuetify/components')['VDatePickerYears']
|
2594
|
-
VDivider: typeof import('vuetify/components')['VDivider']
|
2595
2597
|
VDialog: typeof import('vuetify/components')['VDialog']
|
2596
|
-
VField: typeof import('vuetify/components')['VField']
|
2597
|
-
VFieldLabel: typeof import('vuetify/components')['VFieldLabel']
|
2598
|
-
VEmptyState: typeof import('vuetify/components')['VEmptyState']
|
2599
|
-
VFileInput: typeof import('vuetify/components')['VFileInput']
|
2600
2598
|
VExpansionPanels: typeof import('vuetify/components')['VExpansionPanels']
|
2601
2599
|
VExpansionPanel: typeof import('vuetify/components')['VExpansionPanel']
|
2602
2600
|
VExpansionPanelText: typeof import('vuetify/components')['VExpansionPanelText']
|
2603
2601
|
VExpansionPanelTitle: typeof import('vuetify/components')['VExpansionPanelTitle']
|
2602
|
+
VDivider: typeof import('vuetify/components')['VDivider']
|
2604
2603
|
VFooter: typeof import('vuetify/components')['VFooter']
|
2605
2604
|
VFab: typeof import('vuetify/components')['VFab']
|
2606
|
-
|
2607
|
-
|
2605
|
+
VField: typeof import('vuetify/components')['VField']
|
2606
|
+
VFieldLabel: typeof import('vuetify/components')['VFieldLabel']
|
2607
|
+
VEmptyState: typeof import('vuetify/components')['VEmptyState']
|
2608
|
+
VFileInput: typeof import('vuetify/components')['VFileInput']
|
2608
2609
|
VIcon: typeof import('vuetify/components')['VIcon']
|
2609
2610
|
VComponentIcon: typeof import('vuetify/components')['VComponentIcon']
|
2610
2611
|
VSvgIcon: typeof import('vuetify/components')['VSvgIcon']
|
2611
2612
|
VLigatureIcon: typeof import('vuetify/components')['VLigatureIcon']
|
2612
2613
|
VClassIcon: typeof import('vuetify/components')['VClassIcon']
|
2613
|
-
|
2614
|
+
VImg: typeof import('vuetify/components')['VImg']
|
2615
|
+
VInfiniteScroll: typeof import('vuetify/components')['VInfiniteScroll']
|
2614
2616
|
VItemGroup: typeof import('vuetify/components')['VItemGroup']
|
2615
2617
|
VItem: typeof import('vuetify/components')['VItem']
|
2616
2618
|
VInput: typeof import('vuetify/components')['VInput']
|
2619
|
+
VMenu: typeof import('vuetify/components')['VMenu']
|
2620
|
+
VKbd: typeof import('vuetify/components')['VKbd']
|
2617
2621
|
VLabel: typeof import('vuetify/components')['VLabel']
|
2618
|
-
VMain: typeof import('vuetify/components')['VMain']
|
2619
2622
|
VNavigationDrawer: typeof import('vuetify/components')['VNavigationDrawer']
|
2623
|
+
VMessages: typeof import('vuetify/components')['VMessages']
|
2620
2624
|
VList: typeof import('vuetify/components')['VList']
|
2621
2625
|
VListGroup: typeof import('vuetify/components')['VListGroup']
|
2622
2626
|
VListImg: typeof import('vuetify/components')['VListImg']
|
@@ -2626,24 +2630,21 @@ declare module 'vue' {
|
|
2626
2630
|
VListItemSubtitle: typeof import('vuetify/components')['VListItemSubtitle']
|
2627
2631
|
VListItemTitle: typeof import('vuetify/components')['VListItemTitle']
|
2628
2632
|
VListSubheader: typeof import('vuetify/components')['VListSubheader']
|
2629
|
-
VMenu: typeof import('vuetify/components')['VMenu']
|
2630
|
-
VMessages: typeof import('vuetify/components')['VMessages']
|
2631
2633
|
VNumberInput: typeof import('vuetify/components')['VNumberInput']
|
2632
|
-
VOverlay: typeof import('vuetify/components')['VOverlay']
|
2633
2634
|
VOtpInput: typeof import('vuetify/components')['VOtpInput']
|
2635
|
+
VOverlay: typeof import('vuetify/components')['VOverlay']
|
2636
|
+
VProgressCircular: typeof import('vuetify/components')['VProgressCircular']
|
2637
|
+
VRadioGroup: typeof import('vuetify/components')['VRadioGroup']
|
2634
2638
|
VProgressLinear: typeof import('vuetify/components')['VProgressLinear']
|
2635
2639
|
VPagination: typeof import('vuetify/components')['VPagination']
|
2636
|
-
|
2637
|
-
VProgressCircular: typeof import('vuetify/components')['VProgressCircular']
|
2638
|
-
VRating: typeof import('vuetify/components')['VRating']
|
2640
|
+
VSelect: typeof import('vuetify/components')['VSelect']
|
2639
2641
|
VSelectionControl: typeof import('vuetify/components')['VSelectionControl']
|
2640
2642
|
VSelectionControlGroup: typeof import('vuetify/components')['VSelectionControlGroup']
|
2643
|
+
VRating: typeof import('vuetify/components')['VRating']
|
2644
|
+
VSheet: typeof import('vuetify/components')['VSheet']
|
2645
|
+
VSkeletonLoader: typeof import('vuetify/components')['VSkeletonLoader']
|
2641
2646
|
VSlideGroup: typeof import('vuetify/components')['VSlideGroup']
|
2642
2647
|
VSlideGroupItem: typeof import('vuetify/components')['VSlideGroupItem']
|
2643
|
-
VSkeletonLoader: typeof import('vuetify/components')['VSkeletonLoader']
|
2644
|
-
VSheet: typeof import('vuetify/components')['VSheet']
|
2645
|
-
VSelect: typeof import('vuetify/components')['VSelect']
|
2646
|
-
VSlider: typeof import('vuetify/components')['VSlider']
|
2647
2648
|
VStepper: typeof import('vuetify/components')['VStepper']
|
2648
2649
|
VStepperActions: typeof import('vuetify/components')['VStepperActions']
|
2649
2650
|
VStepperHeader: typeof import('vuetify/components')['VStepperHeader']
|
@@ -2651,49 +2652,49 @@ declare module 'vue' {
|
|
2651
2652
|
VStepperWindow: typeof import('vuetify/components')['VStepperWindow']
|
2652
2653
|
VStepperWindowItem: typeof import('vuetify/components')['VStepperWindowItem']
|
2653
2654
|
VSnackbar: typeof import('vuetify/components')['VSnackbar']
|
2654
|
-
|
2655
|
+
VSlider: typeof import('vuetify/components')['VSlider']
|
2655
2656
|
VSystemBar: typeof import('vuetify/components')['VSystemBar']
|
2656
|
-
|
2657
|
-
VTimelineItem: typeof import('vuetify/components')['VTimelineItem']
|
2657
|
+
VSwitch: typeof import('vuetify/components')['VSwitch']
|
2658
2658
|
VTextarea: typeof import('vuetify/components')['VTextarea']
|
2659
|
+
VTable: typeof import('vuetify/components')['VTable']
|
2660
|
+
VTextField: typeof import('vuetify/components')['VTextField']
|
2659
2661
|
VTab: typeof import('vuetify/components')['VTab']
|
2660
2662
|
VTabs: typeof import('vuetify/components')['VTabs']
|
2661
2663
|
VTabsWindow: typeof import('vuetify/components')['VTabsWindow']
|
2662
2664
|
VTabsWindowItem: typeof import('vuetify/components')['VTabsWindowItem']
|
2663
|
-
VTable: typeof import('vuetify/components')['VTable']
|
2664
|
-
VTextField: typeof import('vuetify/components')['VTextField']
|
2665
|
-
VToolbar: typeof import('vuetify/components')['VToolbar']
|
2666
|
-
VToolbarTitle: typeof import('vuetify/components')['VToolbarTitle']
|
2667
|
-
VToolbarItems: typeof import('vuetify/components')['VToolbarItems']
|
2668
2665
|
VTooltip: typeof import('vuetify/components')['VTooltip']
|
2669
2666
|
VWindow: typeof import('vuetify/components')['VWindow']
|
2670
2667
|
VWindowItem: typeof import('vuetify/components')['VWindowItem']
|
2671
|
-
|
2672
|
-
|
2673
|
-
|
2668
|
+
VTimeline: typeof import('vuetify/components')['VTimeline']
|
2669
|
+
VTimelineItem: typeof import('vuetify/components')['VTimelineItem']
|
2670
|
+
VToolbar: typeof import('vuetify/components')['VToolbar']
|
2671
|
+
VToolbarTitle: typeof import('vuetify/components')['VToolbarTitle']
|
2672
|
+
VToolbarItems: typeof import('vuetify/components')['VToolbarItems']
|
2673
|
+
VMain: typeof import('vuetify/components')['VMain']
|
2674
2674
|
VConfirmEdit: typeof import('vuetify/components')['VConfirmEdit']
|
2675
2675
|
VDataIterator: typeof import('vuetify/components')['VDataIterator']
|
2676
2676
|
VDefaultsProvider: typeof import('vuetify/components')['VDefaultsProvider']
|
2677
|
+
VForm: typeof import('vuetify/components')['VForm']
|
2677
2678
|
VContainer: typeof import('vuetify/components')['VContainer']
|
2678
2679
|
VCol: typeof import('vuetify/components')['VCol']
|
2679
2680
|
VRow: typeof import('vuetify/components')['VRow']
|
2680
2681
|
VSpacer: typeof import('vuetify/components')['VSpacer']
|
2681
|
-
VForm: typeof import('vuetify/components')['VForm']
|
2682
2682
|
VHover: typeof import('vuetify/components')['VHover']
|
2683
|
-
VLocaleProvider: typeof import('vuetify/components')['VLocaleProvider']
|
2684
2683
|
VLayout: typeof import('vuetify/components')['VLayout']
|
2685
2684
|
VLayoutItem: typeof import('vuetify/components')['VLayoutItem']
|
2686
2685
|
VLazy: typeof import('vuetify/components')['VLazy']
|
2686
|
+
VLocaleProvider: typeof import('vuetify/components')['VLocaleProvider']
|
2687
2687
|
VNoSsr: typeof import('vuetify/components')['VNoSsr']
|
2688
|
-
VParallax: typeof import('vuetify/components')['VParallax']
|
2689
2688
|
VRadio: typeof import('vuetify/components')['VRadio']
|
2689
|
+
VParallax: typeof import('vuetify/components')['VParallax']
|
2690
2690
|
VRangeSlider: typeof import('vuetify/components')['VRangeSlider']
|
2691
|
+
VResponsive: typeof import('vuetify/components')['VResponsive']
|
2691
2692
|
VSnackbarQueue: typeof import('vuetify/components')['VSnackbarQueue']
|
2692
2693
|
VSparkline: typeof import('vuetify/components')['VSparkline']
|
2693
2694
|
VSpeedDial: typeof import('vuetify/components')['VSpeedDial']
|
2694
|
-
VThemeProvider: typeof import('vuetify/components')['VThemeProvider']
|
2695
|
-
VVirtualScroll: typeof import('vuetify/components')['VVirtualScroll']
|
2696
2695
|
VValidation: typeof import('vuetify/components')['VValidation']
|
2696
|
+
VVirtualScroll: typeof import('vuetify/components')['VVirtualScroll']
|
2697
|
+
VThemeProvider: typeof import('vuetify/components')['VThemeProvider']
|
2697
2698
|
VFabTransition: typeof import('vuetify/components')['VFabTransition']
|
2698
2699
|
VDialogBottomTransition: typeof import('vuetify/components')['VDialogBottomTransition']
|
2699
2700
|
VDialogTopTransition: typeof import('vuetify/components')['VDialogTopTransition']
|
@@ -2710,29 +2711,28 @@ declare module 'vue' {
|
|
2710
2711
|
VExpandTransition: typeof import('vuetify/components')['VExpandTransition']
|
2711
2712
|
VExpandXTransition: typeof import('vuetify/components')['VExpandXTransition']
|
2712
2713
|
VDialogTransition: typeof import('vuetify/components')['VDialogTransition']
|
2713
|
-
VResponsive: typeof import('vuetify/components')['VResponsive']
|
2714
2714
|
VCalendar: typeof import('vuetify/labs/components')['VCalendar']
|
2715
2715
|
VCalendarDay: typeof import('vuetify/labs/components')['VCalendarDay']
|
2716
2716
|
VCalendarHeader: typeof import('vuetify/labs/components')['VCalendarHeader']
|
2717
2717
|
VCalendarInterval: typeof import('vuetify/labs/components')['VCalendarInterval']
|
2718
2718
|
VCalendarIntervalEvent: typeof import('vuetify/labs/components')['VCalendarIntervalEvent']
|
2719
2719
|
VCalendarMonthDay: typeof import('vuetify/labs/components')['VCalendarMonthDay']
|
2720
|
-
VIconBtn: typeof import('vuetify/labs/components')['VIconBtn']
|
2721
|
-
VColorInput: typeof import('vuetify/labs/components')['VColorInput']
|
2722
2720
|
VFileUpload: typeof import('vuetify/labs/components')['VFileUpload']
|
2723
2721
|
VFileUploadItem: typeof import('vuetify/labs/components')['VFileUploadItem']
|
2724
|
-
|
2725
|
-
VTreeviewItem: typeof import('vuetify/labs/components')['VTreeviewItem']
|
2726
|
-
VTreeviewGroup: typeof import('vuetify/labs/components')['VTreeviewGroup']
|
2727
|
-
VStepperVertical: typeof import('vuetify/labs/components')['VStepperVertical']
|
2728
|
-
VStepperVerticalItem: typeof import('vuetify/labs/components')['VStepperVerticalItem']
|
2729
|
-
VStepperVerticalActions: typeof import('vuetify/labs/components')['VStepperVerticalActions']
|
2722
|
+
VIconBtn: typeof import('vuetify/labs/components')['VIconBtn']
|
2730
2723
|
VTimePicker: typeof import('vuetify/labs/components')['VTimePicker']
|
2731
2724
|
VTimePickerClock: typeof import('vuetify/labs/components')['VTimePickerClock']
|
2732
2725
|
VTimePickerControls: typeof import('vuetify/labs/components')['VTimePickerControls']
|
2733
2726
|
VPicker: typeof import('vuetify/labs/components')['VPicker']
|
2734
2727
|
VPickerTitle: typeof import('vuetify/labs/components')['VPickerTitle']
|
2728
|
+
VStepperVertical: typeof import('vuetify/labs/components')['VStepperVertical']
|
2729
|
+
VStepperVerticalItem: typeof import('vuetify/labs/components')['VStepperVerticalItem']
|
2730
|
+
VStepperVerticalActions: typeof import('vuetify/labs/components')['VStepperVerticalActions']
|
2735
2731
|
VDateInput: typeof import('vuetify/labs/components')['VDateInput']
|
2736
2732
|
VPullToRefresh: typeof import('vuetify/labs/components')['VPullToRefresh']
|
2733
|
+
VColorInput: typeof import('vuetify/labs/components')['VColorInput']
|
2734
|
+
VTreeview: typeof import('vuetify/labs/components')['VTreeview']
|
2735
|
+
VTreeviewItem: typeof import('vuetify/labs/components')['VTreeviewItem']
|
2736
|
+
VTreeviewGroup: typeof import('vuetify/labs/components')['VTreeviewGroup']
|
2737
2737
|
}
|
2738
2738
|
}
|
package/lib/framework.js
CHANGED
@@ -52,6 +52,7 @@ export const VFileUploadItem = genericComponent()({
|
|
52
52
|
"class": "v-file-upload-item"
|
53
53
|
}), {
|
54
54
|
...slots,
|
55
|
+
title: () => props?.title ?? props.file?.name,
|
55
56
|
prepend: slotProps => _createElementVNode(_Fragment, null, [!slots.prepend ? _createVNode(VAvatar, {
|
56
57
|
"icon": props.fileIcon,
|
57
58
|
"image": preview.value,
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"VFileUploadItem.js","names":["VAvatar","VBtn","VDefaultsProvider","makeVListItemProps","VListItem","computed","ref","watchEffect","genericComponent","humanReadableFileSize","propsFactory","useRender","makeVFileUploadItemProps","clearable","Boolean","file","type","Object","default","fileIcon","String","showSize","border","rounded","lines","VFileUploadItem","name","props","emits","click:remove","click","e","setup","_ref","emit","slots","preview","base","undefined","onClickRemove","value","startsWith","URL","createObjectURL","listItemProps","filterProps","_createVNode","_mergeProps","title","size","prepend","slotProps","_createElementVNode","_Fragment","image","icon","append","clear","density","variant","onClick"],"sources":["../../../src/labs/VFileUpload/VFileUploadItem.tsx"],"sourcesContent":["// Components\nimport { VAvatar } from '@/components/VAvatar/VAvatar'\nimport { VBtn } from '@/components/VBtn/VBtn'\nimport { VDefaultsProvider } from '@/components/VDefaultsProvider/VDefaultsProvider'\nimport { makeVListItemProps, VListItem } from '@/components/VList/VListItem'\n\n// Utilities\nimport { computed, ref, watchEffect } from 'vue'\nimport { genericComponent, humanReadableFileSize, propsFactory, useRender } from '@/util'\n\n// Types\nimport type { PropType } from 'vue'\nimport type { VListItemSlots } from '@/components/VList/VListItem'\n\nexport type VFileUploadItemSlots = {\n clear: {\n props: { onClick: () => void }\n }\n} & VListItemSlots\n\nexport const makeVFileUploadItemProps = propsFactory({\n clearable: Boolean,\n file: {\n type: Object as PropType<File>,\n default: null,\n },\n fileIcon: {\n type: String,\n // TODO: setup up a proper aliased icon\n default: 'mdi-file-document',\n },\n showSize: Boolean,\n\n ...makeVListItemProps({\n border: true,\n rounded: true,\n lines: 'two' as const,\n }),\n}, 'VFileUploadItem')\n\nexport const VFileUploadItem = genericComponent<VFileUploadItemSlots>()({\n name: 'VFileUploadItem',\n\n props: makeVFileUploadItemProps(),\n\n emits: {\n 'click:remove': () => true,\n click: (e: MouseEvent | KeyboardEvent) => true,\n },\n\n setup (props, { emit, slots }) {\n const preview = ref()\n const base = computed(() => typeof props.showSize !== 'boolean' ? props.showSize : undefined)\n\n function onClickRemove () {\n emit('click:remove')\n }\n\n watchEffect(() => {\n preview.value = props.file?.type.startsWith('image') ? URL.createObjectURL(props.file) : undefined\n })\n\n useRender(() => {\n const listItemProps = VListItem.filterProps(props)\n\n return (\n <VListItem\n { ...listItemProps }\n title={ props.title ?? props.file?.name }\n subtitle={ props.showSize ? humanReadableFileSize(props.file?.size, base.value) : props.file?.type }\n class=\"v-file-upload-item\"\n >\n {{\n ...slots,\n prepend: slotProps => (\n <>\n { !slots.prepend ? (\n <VAvatar\n icon={ props.fileIcon }\n image={ preview.value }\n rounded\n />\n ) : (\n <VDefaultsProvider\n defaults={{\n VAvatar: {\n image: preview.value,\n icon: !preview.value ? props.fileIcon : undefined,\n rounded: true,\n },\n }}\n >\n { slots.prepend?.(slotProps) ?? (\n <VAvatar />\n )}\n </VDefaultsProvider>\n )}\n </>\n ),\n append: slotProps => (\n <>\n { props.clearable && (\n <>\n { !slots.clear ? (\n <VBtn\n icon=\"$clear\"\n density=\"comfortable\"\n variant=\"text\"\n onClick={ onClickRemove }\n />\n ) : (\n <VDefaultsProvider\n defaults={{\n VBtn: {\n icon: '$clear',\n density: 'comfortable',\n variant: 'text',\n },\n }}\n >\n { slots.clear?.({\n ...slotProps,\n props: { onClick: onClickRemove },\n }) ?? (<VBtn />)}\n </VDefaultsProvider>\n )}\n </>\n )}\n\n { slots.append?.(slotProps) }\n </>\n ),\n }}\n </VListItem>\n )\n })\n },\n})\n\nexport type VFileUploadItem = InstanceType<typeof VFileUploadItem>\n"],"mappings":";AAAA;AAAA,SACSA,OAAO;AAAA,SACPC,IAAI;AAAA,SACJC,iBAAiB;AAAA,SACjBC,kBAAkB,EAAEC,SAAS,+CAEtC;AACA,SAASC,QAAQ,EAAEC,GAAG,EAAEC,WAAW,QAAQ,KAAK;AAAA,SACvCC,gBAAgB,EAAEC,qBAAqB,EAAEC,YAAY,EAAEC,SAAS,+BAEzE;AAUA,OAAO,MAAMC,wBAAwB,GAAGF,YAAY,CAAC;EACnDG,SAAS,EAAEC,OAAO;EAClBC,IAAI,EAAE;IACJC,IAAI,EAAEC,MAAwB;IAC9BC,OAAO,EAAE;EACX,CAAC;EACDC,QAAQ,EAAE;IACRH,IAAI,EAAEI,MAAM;IACZ;IACAF,OAAO,EAAE;EACX,CAAC;EACDG,QAAQ,EAAEP,OAAO;EAEjB,GAAGX,kBAAkB,CAAC;IACpBmB,MAAM,EAAE,IAAI;IACZC,OAAO,EAAE,IAAI;IACbC,KAAK,EAAE;EACT,CAAC;AACH,CAAC,EAAE,iBAAiB,CAAC;AAErB,OAAO,MAAMC,eAAe,GAAGjB,gBAAgB,CAAuB,CAAC,CAAC;EACtEkB,IAAI,EAAE,iBAAiB;EAEvBC,KAAK,EAAEf,wBAAwB,CAAC,CAAC;EAEjCgB,KAAK,EAAE;IACL,cAAc,EAAEC,CAAA,KAAM,IAAI;IAC1BC,KAAK,EAAGC,CAA6B,IAAK;EAC5C,CAAC;EAEDC,KAAKA,CAAEL,KAAK,EAAAM,IAAA,EAAmB;IAAA,IAAjB;MAAEC,IAAI;MAAEC;IAAM,CAAC,GAAAF,IAAA;IAC3B,MAAMG,OAAO,GAAG9B,GAAG,CAAC,CAAC;IACrB,MAAM+B,IAAI,GAAGhC,QAAQ,CAAC,MAAM,OAAOsB,KAAK,CAACN,QAAQ,KAAK,SAAS,GAAGM,KAAK,CAACN,QAAQ,GAAGiB,SAAS,CAAC;IAE7F,SAASC,aAAaA,CAAA,EAAI;MACxBL,IAAI,CAAC,cAAc,CAAC;IACtB;IAEA3B,WAAW,CAAC,MAAM;MAChB6B,OAAO,CAACI,KAAK,GAAGb,KAAK,CAACZ,IAAI,EAAEC,IAAI,CAACyB,UAAU,CAAC,OAAO,CAAC,GAAGC,GAAG,CAACC,eAAe,CAAChB,KAAK,CAACZ,IAAI,CAAC,GAAGuB,SAAS;IACpG,CAAC,CAAC;IAEF3B,SAAS,CAAC,MAAM;MACd,MAAMiC,aAAa,GAAGxC,SAAS,CAACyC,WAAW,CAAClB,KAAK,CAAC;MAElD,OAAAmB,YAAA,CAAA1C,SAAA,EAAA2C,WAAA,CAESH,aAAa;QAAA,SACVjB,KAAK,CAACqB,KAAK,IAAIrB,KAAK,CAACZ,IAAI,EAAEW,IAAI;QAAA,YAC5BC,KAAK,CAACN,QAAQ,GAAGZ,qBAAqB,CAACkB,KAAK,CAACZ,IAAI,EAAEkC,IAAI,EAAEZ,IAAI,CAACG,KAAK,CAAC,GAAGb,KAAK,CAACZ,IAAI,EAAEC,IAAI;QAAA;MAAA;QAIhG,GAAGmB,KAAK;
|
1
|
+
{"version":3,"file":"VFileUploadItem.js","names":["VAvatar","VBtn","VDefaultsProvider","makeVListItemProps","VListItem","computed","ref","watchEffect","genericComponent","humanReadableFileSize","propsFactory","useRender","makeVFileUploadItemProps","clearable","Boolean","file","type","Object","default","fileIcon","String","showSize","border","rounded","lines","VFileUploadItem","name","props","emits","click:remove","click","e","setup","_ref","emit","slots","preview","base","undefined","onClickRemove","value","startsWith","URL","createObjectURL","listItemProps","filterProps","_createVNode","_mergeProps","title","size","prepend","slotProps","_createElementVNode","_Fragment","image","icon","append","clear","density","variant","onClick"],"sources":["../../../src/labs/VFileUpload/VFileUploadItem.tsx"],"sourcesContent":["// Components\nimport { VAvatar } from '@/components/VAvatar/VAvatar'\nimport { VBtn } from '@/components/VBtn/VBtn'\nimport { VDefaultsProvider } from '@/components/VDefaultsProvider/VDefaultsProvider'\nimport { makeVListItemProps, VListItem } from '@/components/VList/VListItem'\n\n// Utilities\nimport { computed, ref, watchEffect } from 'vue'\nimport { genericComponent, humanReadableFileSize, propsFactory, useRender } from '@/util'\n\n// Types\nimport type { PropType } from 'vue'\nimport type { VListItemSlots } from '@/components/VList/VListItem'\n\nexport type VFileUploadItemSlots = {\n clear: {\n props: { onClick: () => void }\n }\n} & VListItemSlots\n\nexport const makeVFileUploadItemProps = propsFactory({\n clearable: Boolean,\n file: {\n type: Object as PropType<File>,\n default: null,\n },\n fileIcon: {\n type: String,\n // TODO: setup up a proper aliased icon\n default: 'mdi-file-document',\n },\n showSize: Boolean,\n\n ...makeVListItemProps({\n border: true,\n rounded: true,\n lines: 'two' as const,\n }),\n}, 'VFileUploadItem')\n\nexport const VFileUploadItem = genericComponent<VFileUploadItemSlots>()({\n name: 'VFileUploadItem',\n\n props: makeVFileUploadItemProps(),\n\n emits: {\n 'click:remove': () => true,\n click: (e: MouseEvent | KeyboardEvent) => true,\n },\n\n setup (props, { emit, slots }) {\n const preview = ref()\n const base = computed(() => typeof props.showSize !== 'boolean' ? props.showSize : undefined)\n\n function onClickRemove () {\n emit('click:remove')\n }\n\n watchEffect(() => {\n preview.value = props.file?.type.startsWith('image') ? URL.createObjectURL(props.file) : undefined\n })\n\n useRender(() => {\n const listItemProps = VListItem.filterProps(props)\n\n return (\n <VListItem\n { ...listItemProps }\n title={ props.title ?? props.file?.name }\n subtitle={ props.showSize ? humanReadableFileSize(props.file?.size, base.value) : props.file?.type }\n class=\"v-file-upload-item\"\n >\n {{\n ...slots,\n title: () => props?.title ?? props.file?.name,\n prepend: slotProps => (\n <>\n { !slots.prepend ? (\n <VAvatar\n icon={ props.fileIcon }\n image={ preview.value }\n rounded\n />\n ) : (\n <VDefaultsProvider\n defaults={{\n VAvatar: {\n image: preview.value,\n icon: !preview.value ? props.fileIcon : undefined,\n rounded: true,\n },\n }}\n >\n { slots.prepend?.(slotProps) ?? (\n <VAvatar />\n )}\n </VDefaultsProvider>\n )}\n </>\n ),\n append: slotProps => (\n <>\n { props.clearable && (\n <>\n { !slots.clear ? (\n <VBtn\n icon=\"$clear\"\n density=\"comfortable\"\n variant=\"text\"\n onClick={ onClickRemove }\n />\n ) : (\n <VDefaultsProvider\n defaults={{\n VBtn: {\n icon: '$clear',\n density: 'comfortable',\n variant: 'text',\n },\n }}\n >\n { slots.clear?.({\n ...slotProps,\n props: { onClick: onClickRemove },\n }) ?? (<VBtn />)}\n </VDefaultsProvider>\n )}\n </>\n )}\n\n { slots.append?.(slotProps) }\n </>\n ),\n }}\n </VListItem>\n )\n })\n },\n})\n\nexport type VFileUploadItem = InstanceType<typeof VFileUploadItem>\n"],"mappings":"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","ignoreList":[]}
|
@@ -5,7 +5,7 @@ import "./VTimePickerClock.css";
|
|
5
5
|
// Composables
|
6
6
|
import { useBackgroundColor, useTextColor } from "../../composables/color.js"; // Utilities
|
7
7
|
import { computed, ref, watch } from 'vue';
|
8
|
-
import { genericComponent, propsFactory, useRender } from "../../util/index.js"; // Types
|
8
|
+
import { debounce, genericComponent, propsFactory, useRender } from "../../util/index.js"; // Types
|
9
9
|
export const makeVTimePickerClockProps = propsFactory({
|
10
10
|
allowedValues: Function,
|
11
11
|
ampm: Boolean,
|
@@ -56,6 +56,7 @@ export const VTimePickerClock = genericComponent()({
|
|
56
56
|
const isDragging = ref(false);
|
57
57
|
const valueOnMouseDown = ref(null);
|
58
58
|
const valueOnMouseUp = ref(null);
|
59
|
+
const emitChangeDebounced = debounce(value => emit('change', value), 750);
|
59
60
|
const {
|
60
61
|
textColorClasses,
|
61
62
|
textColorStyles
|
@@ -101,6 +102,7 @@ export const VTimePickerClock = genericComponent()({
|
|
101
102
|
if (value !== props.displayedValue) {
|
102
103
|
update(value);
|
103
104
|
}
|
105
|
+
emitChangeDebounced(value);
|
104
106
|
}
|
105
107
|
function isInner(value) {
|
106
108
|
return props.double && value - props.min >= roundCount.value;
|