vuetify 3.3.13 → 3.3.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/dist/json/attributes.json +70 -66
- package/dist/json/importMap-labs.json +4 -4
- package/dist/json/importMap.json +12 -12
- package/dist/json/tags.json +5 -4
- package/dist/json/web-types.json +180 -140
- package/dist/vuetify-labs.css +363 -304
- package/dist/vuetify-labs.d.ts +384 -236
- package/dist/vuetify-labs.esm.js +410 -297
- package/dist/vuetify-labs.esm.js.map +1 -1
- package/dist/vuetify-labs.js +409 -296
- package/dist/vuetify-labs.min.css +2 -2
- package/dist/vuetify.css +291 -232
- package/dist/vuetify.d.ts +232 -76
- package/dist/vuetify.esm.js +210 -160
- package/dist/vuetify.esm.js.map +1 -1
- package/dist/vuetify.js +209 -159
- package/dist/vuetify.js.map +1 -1
- package/dist/vuetify.min.css +2 -2
- package/dist/vuetify.min.js +838 -827
- package/dist/vuetify.min.js.map +1 -1
- package/lib/components/VAppBar/VAppBar.mjs.map +1 -1
- package/lib/components/VAppBar/index.d.mts +6 -6
- package/lib/components/VAutocomplete/VAutocomplete.mjs +12 -2
- package/lib/components/VAutocomplete/VAutocomplete.mjs.map +1 -1
- package/lib/components/VBadge/VBadge.css +1 -1
- package/lib/components/VBadge/_variables.scss +1 -1
- package/lib/components/VCheckbox/VCheckbox.mjs +2 -2
- package/lib/components/VCheckbox/VCheckbox.mjs.map +1 -1
- package/lib/components/VCheckbox/VCheckboxBtn.mjs +14 -11
- package/lib/components/VCheckbox/VCheckboxBtn.mjs.map +1 -1
- package/lib/components/VColorPicker/VColorPickerEdit.css +4 -2
- package/lib/components/VColorPicker/VColorPickerPreview.css +11 -6
- package/lib/components/VCombobox/VCombobox.mjs +11 -1
- package/lib/components/VCombobox/VCombobox.mjs.map +1 -1
- package/lib/components/VField/VField.css +22 -7
- package/lib/components/VField/VField.sass +8 -1
- package/lib/components/VField/_variables.scss +1 -0
- package/lib/components/VGrid/VGrid.css +153 -142
- package/lib/components/VProgressLinear/VProgressLinear.css +3 -2
- package/lib/components/VRadioGroup/VRadioGroup.mjs +2 -2
- package/lib/components/VRadioGroup/VRadioGroup.mjs.map +1 -1
- package/lib/components/VRangeSlider/index.d.mts +114 -33
- package/lib/components/VSelect/VSelect.mjs +12 -2
- package/lib/components/VSelect/VSelect.mjs.map +1 -1
- package/lib/components/VSelectionControl/VSelectionControl.mjs +2 -1
- package/lib/components/VSelectionControl/VSelectionControl.mjs.map +1 -1
- package/lib/components/VSlider/VSlider.mjs.map +1 -1
- package/lib/components/VSlider/VSliderThumb.css +8 -4
- package/lib/components/VSlider/VSliderTrack.css +22 -12
- package/lib/components/VSlider/index.d.mts +114 -33
- package/lib/components/VSwitch/VSwitch.mjs +9 -9
- package/lib/components/VSwitch/VSwitch.mjs.map +1 -1
- package/lib/components/VTimeline/VTimeline.css +19 -10
- package/lib/components/VTimeline/VTimeline.sass +5 -0
- package/lib/components/VToolbar/VToolbar.css +4 -2
- package/lib/components/index.d.mts +228 -72
- package/lib/composables/color.mjs +6 -1
- package/lib/composables/color.mjs.map +1 -1
- package/lib/composables/defaults.mjs +9 -9
- package/lib/composables/defaults.mjs.map +1 -1
- package/lib/composables/theme.mjs +2 -5
- package/lib/composables/theme.mjs.map +1 -1
- package/lib/entry-bundler.mjs +1 -1
- package/lib/framework.mjs +1 -1
- package/lib/index.d.mts +4 -4
- package/lib/labs/VDateInput/index.d.mts +2 -2
- package/lib/labs/VDatePicker/VDateCard.mjs +3 -0
- package/lib/labs/VDatePicker/VDateCard.mjs.map +1 -1
- package/lib/labs/VDatePicker/VDatePicker.mjs +51 -21
- package/lib/labs/VDatePicker/VDatePicker.mjs.map +1 -1
- package/lib/labs/VDatePicker/VDatePickerControls.css +1 -1
- package/lib/labs/VDatePicker/VDatePickerControls.mjs +53 -35
- package/lib/labs/VDatePicker/VDatePickerControls.mjs.map +1 -1
- package/lib/labs/VDatePicker/VDatePickerMonth.mjs +37 -28
- package/lib/labs/VDatePicker/VDatePickerMonth.mjs.map +1 -1
- package/lib/labs/VDatePicker/VDatePickerYears.mjs +19 -17
- package/lib/labs/VDatePicker/VDatePickerYears.mjs.map +1 -1
- package/lib/labs/VDatePicker/index.d.mts +148 -156
- package/lib/labs/VDateRangePicker/VDateRangeCard.mjs +3 -0
- package/lib/labs/VDateRangePicker/VDateRangeCard.mjs.map +1 -1
- package/lib/labs/VDateRangePicker/index.d.mts +59 -52
- package/lib/labs/VSkeletonLoader/VSkeletonLoader.mjs.map +1 -1
- package/lib/labs/VSkeletonLoader/index.d.mts +8 -8
- package/lib/labs/components.d.mts +156 -164
- package/lib/locale/no.mjs +1 -1
- package/lib/locale/no.mjs.map +1 -1
- package/lib/styles/tools/_rtl.sass +4 -2
- package/lib/util/colorUtils.mjs +6 -0
- package/lib/util/colorUtils.mjs.map +1 -1
- package/lib/util/helpers.mjs +10 -4
- package/lib/util/helpers.mjs.map +1 -1
- package/lib/util/injectSelf.mjs +2 -1
- package/lib/util/injectSelf.mjs.map +1 -1
- package/package.json +2 -2
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
//
|
|
2
|
-
import { useToggleScope } from "./toggleScope.mjs"; // Utilities
|
|
1
|
+
// Utilities
|
|
3
2
|
import { computed, inject, provide, ref, shallowRef, unref, watchEffect } from 'vue';
|
|
4
3
|
import { getCurrentInstance, injectSelf, mergeDeep, toKebabCase } from "../util/index.mjs"; // Types
|
|
5
4
|
export const DefaultsSymbol = Symbol.for('vuetify:defaults');
|
|
@@ -20,6 +19,7 @@ export function provideDefaults(defaults, options) {
|
|
|
20
19
|
const scoped = unref(options?.scoped);
|
|
21
20
|
const reset = unref(options?.reset);
|
|
22
21
|
const root = unref(options?.root);
|
|
22
|
+
if (providedDefaults.value == null && !(scoped || reset || root)) return injectedDefaults.value;
|
|
23
23
|
let properties = mergeDeep(providedDefaults.value, {
|
|
24
24
|
prev: injectedDefaults.value
|
|
25
25
|
});
|
|
@@ -75,16 +75,16 @@ export function internalUseDefaults() {
|
|
|
75
75
|
let [key] = _ref;
|
|
76
76
|
return key.startsWith(key[0].toUpperCase());
|
|
77
77
|
});
|
|
78
|
-
|
|
78
|
+
_subcomponentDefaults.value = subComponents.length ? Object.fromEntries(subComponents) : undefined;
|
|
79
|
+
} else {
|
|
80
|
+
_subcomponentDefaults.value = undefined;
|
|
79
81
|
}
|
|
80
82
|
});
|
|
81
83
|
function provideSubDefaults() {
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
provideDefaults(mergeDeep(injectSelf(DefaultsSymbol)?.value ?? {}, _subcomponentDefaults.value));
|
|
87
|
-
});
|
|
84
|
+
const injected = injectSelf(DefaultsSymbol, vm);
|
|
85
|
+
provide(DefaultsSymbol, computed(() => {
|
|
86
|
+
return _subcomponentDefaults.value ? mergeDeep(injected?.value ?? {}, _subcomponentDefaults.value) : injected?.value;
|
|
87
|
+
}));
|
|
88
88
|
}
|
|
89
89
|
return {
|
|
90
90
|
props: _props,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"defaults.mjs","names":["
|
|
1
|
+
{"version":3,"file":"defaults.mjs","names":["computed","inject","provide","ref","shallowRef","unref","watchEffect","getCurrentInstance","injectSelf","mergeDeep","toKebabCase","DefaultsSymbol","Symbol","for","createDefaults","options","injectDefaults","defaults","Error","provideDefaults","injectedDefaults","providedDefaults","newDefaults","disabled","value","scoped","reset","root","properties","prev","len","Number","Infinity","i","propIsDefined","vnode","prop","props","internalUseDefaults","arguments","length","undefined","name","vm","type","__name","componentDefaults","_as","_props","Proxy","get","target","propValue","Reflect","filter","v","global","_subcomponentDefaults","subComponents","Object","entries","_ref","key","startsWith","toUpperCase","fromEntries","provideSubDefaults","injected","useDefaults"],"sources":["../../src/composables/defaults.ts"],"sourcesContent":["// Utilities\nimport { computed, inject, provide, ref, shallowRef, unref, watchEffect } from 'vue'\nimport { getCurrentInstance, injectSelf, mergeDeep, toKebabCase } from '@/util'\n\n// Types\nimport type { ComputedRef, InjectionKey, Ref, VNode } from 'vue'\nimport type { MaybeRef } from '@/util'\n\nexport type DefaultsInstance = undefined | {\n [key: string]: undefined | Record<string, unknown>\n global?: Record<string, unknown>\n}\n\nexport type DefaultsOptions = Partial<DefaultsInstance>\n\nexport const DefaultsSymbol: InjectionKey<Ref<DefaultsInstance>> = Symbol.for('vuetify:defaults')\n\nexport function createDefaults (options?: DefaultsInstance): Ref<DefaultsInstance> {\n return ref(options)\n}\n\nexport function injectDefaults () {\n const defaults = inject(DefaultsSymbol)\n\n if (!defaults) throw new Error('[Vuetify] Could not find defaults instance')\n\n return defaults\n}\n\nexport function provideDefaults (\n defaults?: MaybeRef<DefaultsInstance | undefined>,\n options?: {\n disabled?: MaybeRef<boolean | undefined>\n reset?: MaybeRef<number | string | undefined>\n root?: MaybeRef<boolean | string | undefined>\n scoped?: MaybeRef<boolean | undefined>\n }\n) {\n const injectedDefaults = injectDefaults()\n const providedDefaults = ref(defaults)\n\n const newDefaults = computed(() => {\n const disabled = unref(options?.disabled)\n\n if (disabled) return injectedDefaults.value\n\n const scoped = unref(options?.scoped)\n const reset = unref(options?.reset)\n const root = unref(options?.root)\n\n if (providedDefaults.value == null && !(scoped || reset || root)) return injectedDefaults.value\n\n let properties = mergeDeep(providedDefaults.value, { prev: injectedDefaults.value })\n\n if (scoped) return properties\n\n if (reset || root) {\n const len = Number(reset || Infinity)\n\n for (let i = 0; i <= len; i++) {\n if (!properties || !('prev' in properties)) {\n break\n }\n\n properties = properties.prev\n }\n\n if (properties && typeof root === 'string' && root in properties) {\n properties = mergeDeep(mergeDeep(properties, { prev: properties }), properties[root])\n }\n\n return properties\n }\n\n return properties.prev\n ? mergeDeep(properties.prev, properties)\n : properties\n }) as ComputedRef<DefaultsInstance>\n\n provide(DefaultsSymbol, newDefaults)\n\n return newDefaults\n}\n\nfunction propIsDefined (vnode: VNode, prop: string) {\n return typeof vnode.props?.[prop] !== 'undefined' ||\n typeof vnode.props?.[toKebabCase(prop)] !== 'undefined'\n}\n\nexport function internalUseDefaults (\n props: Record<string, any> = {},\n name?: string,\n defaults = injectDefaults()\n) {\n const vm = getCurrentInstance('useDefaults')\n\n name = name ?? vm.type.name ?? vm.type.__name\n if (!name) {\n throw new Error('[Vuetify] Could not determine component name')\n }\n\n const componentDefaults = computed(() => defaults.value?.[props._as ?? name])\n const _props = new Proxy(props, {\n get (target, prop) {\n const propValue = Reflect.get(target, prop)\n if (prop === 'class' || prop === 'style') {\n return [componentDefaults.value?.[prop], propValue].filter(v => v != null)\n } else if (typeof prop === 'string' && !propIsDefined(vm.vnode, prop)) {\n return componentDefaults.value?.[prop] ?? defaults.value?.global?.[prop] ?? propValue\n }\n return propValue\n },\n })\n\n const _subcomponentDefaults = shallowRef()\n watchEffect(() => {\n if (componentDefaults.value) {\n const subComponents = Object.entries(componentDefaults.value).filter(([key]) => key.startsWith(key[0].toUpperCase()))\n _subcomponentDefaults.value = subComponents.length ? Object.fromEntries(subComponents) : undefined\n } else {\n _subcomponentDefaults.value = undefined\n }\n })\n\n function provideSubDefaults () {\n const injected = injectSelf(DefaultsSymbol, vm)\n provide(DefaultsSymbol, computed(() => {\n return _subcomponentDefaults.value ? mergeDeep(\n injected?.value ?? {},\n _subcomponentDefaults.value\n ) : injected?.value\n }))\n }\n\n return { props: _props, provideSubDefaults }\n}\n\nexport function useDefaults<T extends Record<string, any>> (props: T, name?: string): T\nexport function useDefaults (props?: undefined, name?: string): Record<string, any>\nexport function useDefaults (\n props: Record<string, any> = {},\n name?: string,\n) {\n const { props: _props, provideSubDefaults } = internalUseDefaults(props, name)\n provideSubDefaults()\n return _props\n}\n"],"mappings":"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"}
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
// Utilities
|
|
2
2
|
import { computed, inject, provide, ref, watch, watchEffect } from 'vue';
|
|
3
|
-
import { createRange, darken, getCurrentInstance, getLuma, IN_BROWSER, lighten, mergeDeep, parseColor, propsFactory, RGBtoHex } from "../util/index.mjs";
|
|
4
|
-
import { APCAcontrast } from "../util/color/APCA.mjs"; // Types
|
|
3
|
+
import { createRange, darken, getCurrentInstance, getForeground, getLuma, IN_BROWSER, lighten, mergeDeep, parseColor, propsFactory, RGBtoHex } from "../util/index.mjs"; // Types
|
|
5
4
|
export const ThemeSymbol = Symbol.for('vuetify:theme');
|
|
6
5
|
export const makeThemeProps = propsFactory({
|
|
7
6
|
theme: String
|
|
@@ -133,8 +132,6 @@ export function createTheme(options) {
|
|
|
133
132
|
if (/^on-[a-z]/.test(color) || theme.colors[`on-${color}`]) continue;
|
|
134
133
|
const onColor = `on-${color}`;
|
|
135
134
|
const colorVal = parseColor(theme.colors[color]);
|
|
136
|
-
const blackContrast = Math.abs(APCAcontrast(parseColor(0), colorVal));
|
|
137
|
-
const whiteContrast = Math.abs(APCAcontrast(parseColor(0xffffff), colorVal));
|
|
138
135
|
|
|
139
136
|
// TODO: warn about poor color selections
|
|
140
137
|
// const contrastAsText = Math.abs(APCAcontrast(colorVal, colorToInt(theme.colors.background)))
|
|
@@ -146,7 +143,7 @@ export function createTheme(options) {
|
|
|
146
143
|
// }
|
|
147
144
|
|
|
148
145
|
// Prefer white text if both have an acceptable contrast ratio
|
|
149
|
-
theme.colors[onColor] =
|
|
146
|
+
theme.colors[onColor] = getForeground(colorVal);
|
|
150
147
|
}
|
|
151
148
|
}
|
|
152
149
|
return acc;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"theme.mjs","names":["computed","inject","provide","ref","watch","watchEffect","createRange","darken","getCurrentInstance","getLuma","IN_BROWSER","lighten","mergeDeep","parseColor","propsFactory","RGBtoHex","APCAcontrast","ThemeSymbol","Symbol","for","makeThemeProps","theme","String","defaultThemeOptions","defaultTheme","variations","colors","themes","light","dark","background","surface","primary","secondary","error","info","success","warning","variables","parseThemeOptions","options","arguments","length","undefined","isDisabled","key","Object","entries","createTheme","parsedOptions","name","computedThemes","acc","original","value","color","variation","fn","amount","keys","test","onColor","colorVal","blackContrast","Math","abs","whiteContrast","min","current","styles","lines","createCssClass","genCssVariables","themeName","bgLines","fgLines","Set","values","flatMap","push","map","str","i","join","getHead","style","children","id","nonce","cspNonce","install","app","head","_context","provides","usehead","entry","patch","addHeadObjs","updateDOM","styleEl","document","getElementById","updateStyles","immediate","el","createElement","type","setAttribute","appendChild","innerHTML","themeClasses","global","provideTheme","props","Error","newTheme","useTheme","selector","content","line","lightOverlay","darkOverlay","rgb","r","g","b","startsWith"],"sources":["../../src/composables/theme.ts"],"sourcesContent":["// Utilities\nimport {\n computed,\n inject,\n provide,\n ref,\n watch,\n watchEffect,\n} from 'vue'\nimport {\n createRange,\n darken,\n getCurrentInstance,\n getLuma,\n IN_BROWSER,\n lighten,\n mergeDeep,\n parseColor,\n propsFactory,\n RGBtoHex,\n} from '@/util'\nimport { APCAcontrast } from '@/util/color/APCA'\n\n// Types\nimport type { HeadClient } from '@vueuse/head'\nimport type { App, DeepReadonly, InjectionKey, Ref } from 'vue'\n\ntype DeepPartial<T> = T extends object ? { [P in keyof T]?: DeepPartial<T[P]> } : T\n\nexport type ThemeOptions = false | {\n cspNonce?: string\n defaultTheme?: string\n variations?: false | VariationsOptions\n themes?: Record<string, ThemeDefinition>\n}\nexport type ThemeDefinition = DeepPartial<InternalThemeDefinition>\n\ninterface InternalThemeOptions {\n cspNonce?: string\n isDisabled: boolean\n defaultTheme: string\n variations: false | VariationsOptions\n themes: Record<string, InternalThemeDefinition>\n}\n\ninterface VariationsOptions {\n colors: string[]\n lighten: number\n darken: number\n}\n\ninterface InternalThemeDefinition {\n dark: boolean\n colors: Colors\n variables: Record<string, string | number>\n}\n\nexport interface Colors extends BaseColors, OnColors {\n [key: string]: string\n}\n\ninterface BaseColors {\n background: string\n surface: string\n primary: string\n secondary: string\n success: string\n warning: string\n error: string\n info: string\n}\n\ninterface OnColors {\n 'on-background': string\n 'on-surface': string\n 'on-primary': string\n 'on-secondary': string\n 'on-success': string\n 'on-warning': string\n 'on-error': string\n 'on-info': string\n}\n\nexport interface ThemeInstance {\n readonly isDisabled: boolean\n readonly themes: Ref<Record<string, InternalThemeDefinition>>\n\n readonly name: Readonly<Ref<string>>\n readonly current: DeepReadonly<Ref<InternalThemeDefinition>>\n readonly computedThemes: DeepReadonly<Ref<Record<string, InternalThemeDefinition>>>\n\n readonly themeClasses: Readonly<Ref<string | undefined>>\n readonly styles: Readonly<Ref<string>>\n\n readonly global: {\n readonly name: Ref<string>\n readonly current: DeepReadonly<Ref<InternalThemeDefinition>>\n }\n}\n\nexport const ThemeSymbol: InjectionKey<ThemeInstance> = Symbol.for('vuetify:theme')\n\nexport const makeThemeProps = propsFactory({\n theme: String,\n}, 'theme')\n\nconst defaultThemeOptions: Exclude<ThemeOptions, false> = {\n defaultTheme: 'light',\n variations: { colors: [], lighten: 0, darken: 0 },\n themes: {\n light: {\n dark: false,\n colors: {\n background: '#FFFFFF',\n surface: '#FFFFFF',\n 'surface-variant': '#424242',\n 'on-surface-variant': '#EEEEEE',\n primary: '#6200EE',\n 'primary-darken-1': '#3700B3',\n secondary: '#03DAC6',\n 'secondary-darken-1': '#018786',\n error: '#B00020',\n info: '#2196F3',\n success: '#4CAF50',\n warning: '#FB8C00',\n },\n variables: {\n 'border-color': '#000000',\n 'border-opacity': 0.12,\n 'high-emphasis-opacity': 0.87,\n 'medium-emphasis-opacity': 0.60,\n 'disabled-opacity': 0.38,\n 'idle-opacity': 0.04,\n 'hover-opacity': 0.04,\n 'focus-opacity': 0.12,\n 'selected-opacity': 0.08,\n 'activated-opacity': 0.12,\n 'pressed-opacity': 0.12,\n 'dragged-opacity': 0.08,\n 'theme-kbd': '#212529',\n 'theme-on-kbd': '#FFFFFF',\n 'theme-code': '#F5F5F5',\n 'theme-on-code': '#000000',\n },\n },\n dark: {\n dark: true,\n colors: {\n background: '#121212',\n surface: '#212121',\n 'surface-variant': '#BDBDBD',\n 'on-surface-variant': '#424242',\n primary: '#BB86FC',\n 'primary-darken-1': '#3700B3',\n secondary: '#03DAC5',\n 'secondary-darken-1': '#03DAC5',\n error: '#CF6679',\n info: '#2196F3',\n success: '#4CAF50',\n warning: '#FB8C00',\n },\n variables: {\n 'border-color': '#FFFFFF',\n 'border-opacity': 0.12,\n 'high-emphasis-opacity': 1,\n 'medium-emphasis-opacity': 0.70,\n 'disabled-opacity': 0.50,\n 'idle-opacity': 0.10,\n 'hover-opacity': 0.04,\n 'focus-opacity': 0.12,\n 'selected-opacity': 0.08,\n 'activated-opacity': 0.12,\n 'pressed-opacity': 0.16,\n 'dragged-opacity': 0.08,\n 'theme-kbd': '#212529',\n 'theme-on-kbd': '#FFFFFF',\n 'theme-code': '#343434',\n 'theme-on-code': '#CCCCCC',\n },\n },\n },\n}\n\nfunction parseThemeOptions (options: ThemeOptions = defaultThemeOptions): InternalThemeOptions {\n if (!options) return { ...defaultThemeOptions, isDisabled: true } as InternalThemeOptions\n\n const themes: Record<string, InternalThemeDefinition> = {}\n for (const [key, theme] of Object.entries(options.themes ?? {})) {\n const defaultTheme = theme.dark || key === 'dark'\n ? defaultThemeOptions.themes?.dark\n : defaultThemeOptions.themes?.light\n themes[key] = mergeDeep(defaultTheme, theme) as InternalThemeDefinition\n }\n\n return mergeDeep(\n defaultThemeOptions,\n { ...options, themes },\n ) as InternalThemeOptions\n}\n\n// Composables\nexport function createTheme (options?: ThemeOptions): ThemeInstance & { install: (app: App) => void } {\n const parsedOptions = parseThemeOptions(options)\n const name = ref(parsedOptions.defaultTheme)\n const themes = ref(parsedOptions.themes)\n\n const computedThemes = computed(() => {\n const acc: Record<string, InternalThemeDefinition> = {}\n for (const [name, original] of Object.entries(themes.value)) {\n const theme: InternalThemeDefinition = acc[name] = {\n ...original,\n colors: {\n ...original.colors,\n },\n }\n\n if (parsedOptions.variations) {\n for (const name of parsedOptions.variations.colors) {\n const color = theme.colors[name]\n\n if (!color) continue\n\n for (const variation of (['lighten', 'darken'] as const)) {\n const fn = variation === 'lighten' ? lighten : darken\n for (const amount of createRange(parsedOptions.variations[variation], 1)) {\n theme.colors[`${name}-${variation}-${amount}`] = RGBtoHex(fn(parseColor(color), amount))\n }\n }\n }\n }\n\n for (const color of Object.keys(theme.colors)) {\n if (/^on-[a-z]/.test(color) || theme.colors[`on-${color}`]) continue\n\n const onColor = `on-${color}` as keyof OnColors\n const colorVal = parseColor(theme.colors[color]!)\n\n const blackContrast = Math.abs(APCAcontrast(parseColor(0), colorVal))\n const whiteContrast = Math.abs(APCAcontrast(parseColor(0xffffff), colorVal))\n\n // TODO: warn about poor color selections\n // const contrastAsText = Math.abs(APCAcontrast(colorVal, colorToInt(theme.colors.background)))\n // const minContrast = Math.max(blackContrast, whiteContrast)\n // if (minContrast < 60) {\n // consoleInfo(`${key} theme color ${color} has poor contrast (${minContrast.toFixed()}%)`)\n // } else if (contrastAsText < 60 && !['background', 'surface'].includes(color)) {\n // consoleInfo(`${key} theme color ${color} has poor contrast as text (${contrastAsText.toFixed()}%)`)\n // }\n\n // Prefer white text if both have an acceptable contrast ratio\n theme.colors[onColor] = whiteContrast > Math.min(blackContrast, 50) ? '#fff' : '#000'\n }\n }\n\n return acc\n })\n const current = computed(() => computedThemes.value[name.value])\n\n const styles = computed(() => {\n const lines: string[] = []\n\n if (current.value.dark) {\n createCssClass(lines, ':root', ['color-scheme: dark'])\n }\n\n createCssClass(lines, ':root', genCssVariables(current.value))\n\n for (const [themeName, theme] of Object.entries(computedThemes.value)) {\n createCssClass(lines, `.v-theme--${themeName}`, [\n `color-scheme: ${theme.dark ? 'dark' : 'normal'}`,\n ...genCssVariables(theme),\n ])\n }\n\n const bgLines: string[] = []\n const fgLines: string[] = []\n\n const colors = new Set(Object.values(computedThemes.value).flatMap(theme => Object.keys(theme.colors)))\n for (const key of colors) {\n if (/^on-[a-z]/.test(key)) {\n createCssClass(fgLines, `.${key}`, [`color: rgb(var(--v-theme-${key})) !important`])\n } else {\n createCssClass(bgLines, `.bg-${key}`, [\n `--v-theme-overlay-multiplier: var(--v-theme-${key}-overlay-multiplier)`,\n `background-color: rgb(var(--v-theme-${key})) !important`,\n `color: rgb(var(--v-theme-on-${key})) !important`,\n ])\n createCssClass(fgLines, `.text-${key}`, [`color: rgb(var(--v-theme-${key})) !important`])\n createCssClass(fgLines, `.border-${key}`, [`--v-border-color: var(--v-theme-${key})`])\n }\n }\n\n lines.push(...bgLines, ...fgLines)\n\n return lines.map((str, i) => i === 0 ? str : ` ${str}`).join('')\n })\n\n function getHead () {\n return {\n style: [{\n children: styles.value,\n id: 'vuetify-theme-stylesheet',\n nonce: parsedOptions.cspNonce || false as never,\n }],\n }\n }\n\n function install (app: App) {\n if (parsedOptions.isDisabled) return\n\n const head = app._context.provides.usehead as HeadClient | undefined\n if (head) {\n if (head.push) {\n const entry = head.push(getHead)\n if (IN_BROWSER) {\n watch(styles, () => { entry.patch(getHead) })\n }\n } else {\n if (IN_BROWSER) {\n head.addHeadObjs(computed(getHead))\n watchEffect(() => head.updateDOM())\n } else {\n head.addHeadObjs(getHead())\n }\n }\n } else {\n let styleEl = IN_BROWSER\n ? document.getElementById('vuetify-theme-stylesheet')\n : null\n\n if (IN_BROWSER) {\n watch(styles, updateStyles, { immediate: true })\n } else {\n updateStyles()\n }\n\n function updateStyles () {\n if (typeof document !== 'undefined' && !styleEl) {\n const el = document.createElement('style')\n el.type = 'text/css'\n el.id = 'vuetify-theme-stylesheet'\n if (parsedOptions.cspNonce) el.setAttribute('nonce', parsedOptions.cspNonce)\n\n styleEl = el\n document.head.appendChild(styleEl)\n }\n\n if (styleEl) styleEl.innerHTML = styles.value\n }\n }\n }\n\n const themeClasses = computed(() => parsedOptions.isDisabled ? undefined : `v-theme--${name.value}`)\n\n return {\n install,\n isDisabled: parsedOptions.isDisabled,\n name,\n themes,\n current,\n computedThemes,\n themeClasses,\n styles,\n global: {\n name,\n current,\n },\n }\n}\n\nexport function provideTheme (props: { theme?: string }) {\n getCurrentInstance('provideTheme')\n\n const theme = inject(ThemeSymbol, null)\n\n if (!theme) throw new Error('Could not find Vuetify theme injection')\n\n const name = computed<string>(() => {\n return props.theme ?? theme?.name.value\n })\n\n const themeClasses = computed(() => theme.isDisabled ? undefined : `v-theme--${name.value}`)\n\n const newTheme: ThemeInstance = {\n ...theme,\n name,\n themeClasses,\n }\n\n provide(ThemeSymbol, newTheme)\n\n return newTheme\n}\n\nexport function useTheme () {\n getCurrentInstance('useTheme')\n\n const theme = inject(ThemeSymbol, null)\n\n if (!theme) throw new Error('Could not find Vuetify theme injection')\n\n return theme\n}\n\nfunction createCssClass (lines: string[], selector: string, content: string[]) {\n lines.push(\n `${selector} {\\n`,\n ...content.map(line => ` ${line};\\n`),\n '}\\n',\n )\n}\n\nfunction genCssVariables (theme: InternalThemeDefinition) {\n const lightOverlay = theme.dark ? 2 : 1\n const darkOverlay = theme.dark ? 1 : 2\n\n const variables: string[] = []\n for (const [key, value] of Object.entries(theme.colors)) {\n const rgb = parseColor(value)\n variables.push(`--v-theme-${key}: ${rgb.r},${rgb.g},${rgb.b}`)\n if (!key.startsWith('on-')) {\n variables.push(`--v-theme-${key}-overlay-multiplier: ${getLuma(value) > 0.18 ? lightOverlay : darkOverlay}`)\n }\n }\n\n for (const [key, value] of Object.entries(theme.variables)) {\n const color = typeof value === 'string' && value.startsWith('#') ? parseColor(value) : undefined\n const rgb = color ? `${color.r}, ${color.g}, ${color.b}` : undefined\n variables.push(`--v-${key}: ${rgb ?? value}`)\n }\n\n return variables\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"theme.mjs","names":["computed","inject","provide","ref","watch","watchEffect","createRange","darken","getCurrentInstance","getForeground","getLuma","IN_BROWSER","lighten","mergeDeep","parseColor","propsFactory","RGBtoHex","ThemeSymbol","Symbol","for","makeThemeProps","theme","String","defaultThemeOptions","defaultTheme","variations","colors","themes","light","dark","background","surface","primary","secondary","error","info","success","warning","variables","parseThemeOptions","options","arguments","length","undefined","isDisabled","key","Object","entries","createTheme","parsedOptions","name","computedThemes","acc","original","value","color","variation","fn","amount","keys","test","onColor","colorVal","current","styles","lines","createCssClass","genCssVariables","themeName","bgLines","fgLines","Set","values","flatMap","push","map","str","i","join","getHead","style","children","id","nonce","cspNonce","install","app","head","_context","provides","usehead","entry","patch","addHeadObjs","updateDOM","styleEl","document","getElementById","updateStyles","immediate","el","createElement","type","setAttribute","appendChild","innerHTML","themeClasses","global","provideTheme","props","Error","newTheme","useTheme","selector","content","line","lightOverlay","darkOverlay","rgb","r","g","b","startsWith"],"sources":["../../src/composables/theme.ts"],"sourcesContent":["// Utilities\nimport {\n computed,\n inject,\n provide,\n ref,\n watch,\n watchEffect,\n} from 'vue'\nimport {\n createRange,\n darken,\n getCurrentInstance,\n getForeground,\n getLuma,\n IN_BROWSER,\n lighten,\n mergeDeep,\n parseColor,\n propsFactory,\n RGBtoHex,\n} from '@/util'\n\n// Types\nimport type { HeadClient } from '@vueuse/head'\nimport type { App, DeepReadonly, InjectionKey, Ref } from 'vue'\n\ntype DeepPartial<T> = T extends object ? { [P in keyof T]?: DeepPartial<T[P]> } : T\n\nexport type ThemeOptions = false | {\n cspNonce?: string\n defaultTheme?: string\n variations?: false | VariationsOptions\n themes?: Record<string, ThemeDefinition>\n}\nexport type ThemeDefinition = DeepPartial<InternalThemeDefinition>\n\ninterface InternalThemeOptions {\n cspNonce?: string\n isDisabled: boolean\n defaultTheme: string\n variations: false | VariationsOptions\n themes: Record<string, InternalThemeDefinition>\n}\n\ninterface VariationsOptions {\n colors: string[]\n lighten: number\n darken: number\n}\n\ninterface InternalThemeDefinition {\n dark: boolean\n colors: Colors\n variables: Record<string, string | number>\n}\n\nexport interface Colors extends BaseColors, OnColors {\n [key: string]: string\n}\n\ninterface BaseColors {\n background: string\n surface: string\n primary: string\n secondary: string\n success: string\n warning: string\n error: string\n info: string\n}\n\ninterface OnColors {\n 'on-background': string\n 'on-surface': string\n 'on-primary': string\n 'on-secondary': string\n 'on-success': string\n 'on-warning': string\n 'on-error': string\n 'on-info': string\n}\n\nexport interface ThemeInstance {\n readonly isDisabled: boolean\n readonly themes: Ref<Record<string, InternalThemeDefinition>>\n\n readonly name: Readonly<Ref<string>>\n readonly current: DeepReadonly<Ref<InternalThemeDefinition>>\n readonly computedThemes: DeepReadonly<Ref<Record<string, InternalThemeDefinition>>>\n\n readonly themeClasses: Readonly<Ref<string | undefined>>\n readonly styles: Readonly<Ref<string>>\n\n readonly global: {\n readonly name: Ref<string>\n readonly current: DeepReadonly<Ref<InternalThemeDefinition>>\n }\n}\n\nexport const ThemeSymbol: InjectionKey<ThemeInstance> = Symbol.for('vuetify:theme')\n\nexport const makeThemeProps = propsFactory({\n theme: String,\n}, 'theme')\n\nconst defaultThemeOptions: Exclude<ThemeOptions, false> = {\n defaultTheme: 'light',\n variations: { colors: [], lighten: 0, darken: 0 },\n themes: {\n light: {\n dark: false,\n colors: {\n background: '#FFFFFF',\n surface: '#FFFFFF',\n 'surface-variant': '#424242',\n 'on-surface-variant': '#EEEEEE',\n primary: '#6200EE',\n 'primary-darken-1': '#3700B3',\n secondary: '#03DAC6',\n 'secondary-darken-1': '#018786',\n error: '#B00020',\n info: '#2196F3',\n success: '#4CAF50',\n warning: '#FB8C00',\n },\n variables: {\n 'border-color': '#000000',\n 'border-opacity': 0.12,\n 'high-emphasis-opacity': 0.87,\n 'medium-emphasis-opacity': 0.60,\n 'disabled-opacity': 0.38,\n 'idle-opacity': 0.04,\n 'hover-opacity': 0.04,\n 'focus-opacity': 0.12,\n 'selected-opacity': 0.08,\n 'activated-opacity': 0.12,\n 'pressed-opacity': 0.12,\n 'dragged-opacity': 0.08,\n 'theme-kbd': '#212529',\n 'theme-on-kbd': '#FFFFFF',\n 'theme-code': '#F5F5F5',\n 'theme-on-code': '#000000',\n },\n },\n dark: {\n dark: true,\n colors: {\n background: '#121212',\n surface: '#212121',\n 'surface-variant': '#BDBDBD',\n 'on-surface-variant': '#424242',\n primary: '#BB86FC',\n 'primary-darken-1': '#3700B3',\n secondary: '#03DAC5',\n 'secondary-darken-1': '#03DAC5',\n error: '#CF6679',\n info: '#2196F3',\n success: '#4CAF50',\n warning: '#FB8C00',\n },\n variables: {\n 'border-color': '#FFFFFF',\n 'border-opacity': 0.12,\n 'high-emphasis-opacity': 1,\n 'medium-emphasis-opacity': 0.70,\n 'disabled-opacity': 0.50,\n 'idle-opacity': 0.10,\n 'hover-opacity': 0.04,\n 'focus-opacity': 0.12,\n 'selected-opacity': 0.08,\n 'activated-opacity': 0.12,\n 'pressed-opacity': 0.16,\n 'dragged-opacity': 0.08,\n 'theme-kbd': '#212529',\n 'theme-on-kbd': '#FFFFFF',\n 'theme-code': '#343434',\n 'theme-on-code': '#CCCCCC',\n },\n },\n },\n}\n\nfunction parseThemeOptions (options: ThemeOptions = defaultThemeOptions): InternalThemeOptions {\n if (!options) return { ...defaultThemeOptions, isDisabled: true } as InternalThemeOptions\n\n const themes: Record<string, InternalThemeDefinition> = {}\n for (const [key, theme] of Object.entries(options.themes ?? {})) {\n const defaultTheme = theme.dark || key === 'dark'\n ? defaultThemeOptions.themes?.dark\n : defaultThemeOptions.themes?.light\n themes[key] = mergeDeep(defaultTheme, theme) as InternalThemeDefinition\n }\n\n return mergeDeep(\n defaultThemeOptions,\n { ...options, themes },\n ) as InternalThemeOptions\n}\n\n// Composables\nexport function createTheme (options?: ThemeOptions): ThemeInstance & { install: (app: App) => void } {\n const parsedOptions = parseThemeOptions(options)\n const name = ref(parsedOptions.defaultTheme)\n const themes = ref(parsedOptions.themes)\n\n const computedThemes = computed(() => {\n const acc: Record<string, InternalThemeDefinition> = {}\n for (const [name, original] of Object.entries(themes.value)) {\n const theme: InternalThemeDefinition = acc[name] = {\n ...original,\n colors: {\n ...original.colors,\n },\n }\n\n if (parsedOptions.variations) {\n for (const name of parsedOptions.variations.colors) {\n const color = theme.colors[name]\n\n if (!color) continue\n\n for (const variation of (['lighten', 'darken'] as const)) {\n const fn = variation === 'lighten' ? lighten : darken\n for (const amount of createRange(parsedOptions.variations[variation], 1)) {\n theme.colors[`${name}-${variation}-${amount}`] = RGBtoHex(fn(parseColor(color), amount))\n }\n }\n }\n }\n\n for (const color of Object.keys(theme.colors)) {\n if (/^on-[a-z]/.test(color) || theme.colors[`on-${color}`]) continue\n\n const onColor = `on-${color}` as keyof OnColors\n const colorVal = parseColor(theme.colors[color]!)\n\n // TODO: warn about poor color selections\n // const contrastAsText = Math.abs(APCAcontrast(colorVal, colorToInt(theme.colors.background)))\n // const minContrast = Math.max(blackContrast, whiteContrast)\n // if (minContrast < 60) {\n // consoleInfo(`${key} theme color ${color} has poor contrast (${minContrast.toFixed()}%)`)\n // } else if (contrastAsText < 60 && !['background', 'surface'].includes(color)) {\n // consoleInfo(`${key} theme color ${color} has poor contrast as text (${contrastAsText.toFixed()}%)`)\n // }\n\n // Prefer white text if both have an acceptable contrast ratio\n theme.colors[onColor] = getForeground(colorVal)\n }\n }\n\n return acc\n })\n const current = computed(() => computedThemes.value[name.value])\n\n const styles = computed(() => {\n const lines: string[] = []\n\n if (current.value.dark) {\n createCssClass(lines, ':root', ['color-scheme: dark'])\n }\n\n createCssClass(lines, ':root', genCssVariables(current.value))\n\n for (const [themeName, theme] of Object.entries(computedThemes.value)) {\n createCssClass(lines, `.v-theme--${themeName}`, [\n `color-scheme: ${theme.dark ? 'dark' : 'normal'}`,\n ...genCssVariables(theme),\n ])\n }\n\n const bgLines: string[] = []\n const fgLines: string[] = []\n\n const colors = new Set(Object.values(computedThemes.value).flatMap(theme => Object.keys(theme.colors)))\n for (const key of colors) {\n if (/^on-[a-z]/.test(key)) {\n createCssClass(fgLines, `.${key}`, [`color: rgb(var(--v-theme-${key})) !important`])\n } else {\n createCssClass(bgLines, `.bg-${key}`, [\n `--v-theme-overlay-multiplier: var(--v-theme-${key}-overlay-multiplier)`,\n `background-color: rgb(var(--v-theme-${key})) !important`,\n `color: rgb(var(--v-theme-on-${key})) !important`,\n ])\n createCssClass(fgLines, `.text-${key}`, [`color: rgb(var(--v-theme-${key})) !important`])\n createCssClass(fgLines, `.border-${key}`, [`--v-border-color: var(--v-theme-${key})`])\n }\n }\n\n lines.push(...bgLines, ...fgLines)\n\n return lines.map((str, i) => i === 0 ? str : ` ${str}`).join('')\n })\n\n function getHead () {\n return {\n style: [{\n children: styles.value,\n id: 'vuetify-theme-stylesheet',\n nonce: parsedOptions.cspNonce || false as never,\n }],\n }\n }\n\n function install (app: App) {\n if (parsedOptions.isDisabled) return\n\n const head = app._context.provides.usehead as HeadClient | undefined\n if (head) {\n if (head.push) {\n const entry = head.push(getHead)\n if (IN_BROWSER) {\n watch(styles, () => { entry.patch(getHead) })\n }\n } else {\n if (IN_BROWSER) {\n head.addHeadObjs(computed(getHead))\n watchEffect(() => head.updateDOM())\n } else {\n head.addHeadObjs(getHead())\n }\n }\n } else {\n let styleEl = IN_BROWSER\n ? document.getElementById('vuetify-theme-stylesheet')\n : null\n\n if (IN_BROWSER) {\n watch(styles, updateStyles, { immediate: true })\n } else {\n updateStyles()\n }\n\n function updateStyles () {\n if (typeof document !== 'undefined' && !styleEl) {\n const el = document.createElement('style')\n el.type = 'text/css'\n el.id = 'vuetify-theme-stylesheet'\n if (parsedOptions.cspNonce) el.setAttribute('nonce', parsedOptions.cspNonce)\n\n styleEl = el\n document.head.appendChild(styleEl)\n }\n\n if (styleEl) styleEl.innerHTML = styles.value\n }\n }\n }\n\n const themeClasses = computed(() => parsedOptions.isDisabled ? undefined : `v-theme--${name.value}`)\n\n return {\n install,\n isDisabled: parsedOptions.isDisabled,\n name,\n themes,\n current,\n computedThemes,\n themeClasses,\n styles,\n global: {\n name,\n current,\n },\n }\n}\n\nexport function provideTheme (props: { theme?: string }) {\n getCurrentInstance('provideTheme')\n\n const theme = inject(ThemeSymbol, null)\n\n if (!theme) throw new Error('Could not find Vuetify theme injection')\n\n const name = computed<string>(() => {\n return props.theme ?? theme?.name.value\n })\n\n const themeClasses = computed(() => theme.isDisabled ? undefined : `v-theme--${name.value}`)\n\n const newTheme: ThemeInstance = {\n ...theme,\n name,\n themeClasses,\n }\n\n provide(ThemeSymbol, newTheme)\n\n return newTheme\n}\n\nexport function useTheme () {\n getCurrentInstance('useTheme')\n\n const theme = inject(ThemeSymbol, null)\n\n if (!theme) throw new Error('Could not find Vuetify theme injection')\n\n return theme\n}\n\nfunction createCssClass (lines: string[], selector: string, content: string[]) {\n lines.push(\n `${selector} {\\n`,\n ...content.map(line => ` ${line};\\n`),\n '}\\n',\n )\n}\n\nfunction genCssVariables (theme: InternalThemeDefinition) {\n const lightOverlay = theme.dark ? 2 : 1\n const darkOverlay = theme.dark ? 1 : 2\n\n const variables: string[] = []\n for (const [key, value] of Object.entries(theme.colors)) {\n const rgb = parseColor(value)\n variables.push(`--v-theme-${key}: ${rgb.r},${rgb.g},${rgb.b}`)\n if (!key.startsWith('on-')) {\n variables.push(`--v-theme-${key}-overlay-multiplier: ${getLuma(value) > 0.18 ? lightOverlay : darkOverlay}`)\n }\n }\n\n for (const [key, value] of Object.entries(theme.variables)) {\n const color = typeof value === 'string' && value.startsWith('#') ? parseColor(value) : undefined\n const rgb = color ? `${color.r}, ${color.g}, ${color.b}` : undefined\n variables.push(`--v-${key}: ${rgb ?? value}`)\n }\n\n return variables\n}\n"],"mappings":"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"}
|
package/lib/entry-bundler.mjs
CHANGED
package/lib/framework.mjs
CHANGED
package/lib/index.d.mts
CHANGED
|
@@ -380,14 +380,14 @@ declare module '@vue/runtime-core' {
|
|
|
380
380
|
VBtn: typeof import('vuetify/components')['VBtn']
|
|
381
381
|
VBtnGroup: typeof import('vuetify/components')['VBtnGroup']
|
|
382
382
|
VBtnToggle: typeof import('vuetify/components')['VBtnToggle']
|
|
383
|
-
VCarousel: typeof import('vuetify/components')['VCarousel']
|
|
384
|
-
VCarouselItem: typeof import('vuetify/components')['VCarouselItem']
|
|
385
383
|
VCard: typeof import('vuetify/components')['VCard']
|
|
386
384
|
VCardActions: typeof import('vuetify/components')['VCardActions']
|
|
387
385
|
VCardItem: typeof import('vuetify/components')['VCardItem']
|
|
388
386
|
VCardSubtitle: typeof import('vuetify/components')['VCardSubtitle']
|
|
389
387
|
VCardText: typeof import('vuetify/components')['VCardText']
|
|
390
388
|
VCardTitle: typeof import('vuetify/components')['VCardTitle']
|
|
389
|
+
VCarousel: typeof import('vuetify/components')['VCarousel']
|
|
390
|
+
VCarouselItem: typeof import('vuetify/components')['VCarouselItem']
|
|
391
391
|
VCheckbox: typeof import('vuetify/components')['VCheckbox']
|
|
392
392
|
VCheckboxBtn: typeof import('vuetify/components')['VCheckboxBtn']
|
|
393
393
|
VChip: typeof import('vuetify/components')['VChip']
|
|
@@ -396,8 +396,8 @@ declare module '@vue/runtime-core' {
|
|
|
396
396
|
VColorPicker: typeof import('vuetify/components')['VColorPicker']
|
|
397
397
|
VCombobox: typeof import('vuetify/components')['VCombobox']
|
|
398
398
|
VCounter: typeof import('vuetify/components')['VCounter']
|
|
399
|
-
VDivider: typeof import('vuetify/components')['VDivider']
|
|
400
399
|
VDialog: typeof import('vuetify/components')['VDialog']
|
|
400
|
+
VDivider: typeof import('vuetify/components')['VDivider']
|
|
401
401
|
VExpansionPanels: typeof import('vuetify/components')['VExpansionPanels']
|
|
402
402
|
VExpansionPanel: typeof import('vuetify/components')['VExpansionPanel']
|
|
403
403
|
VExpansionPanelText: typeof import('vuetify/components')['VExpansionPanelText']
|
|
@@ -508,7 +508,6 @@ declare module '@vue/runtime-core' {
|
|
|
508
508
|
VDatePickerMonth: typeof import('vuetify/labs/components')['VDatePickerMonth']
|
|
509
509
|
VDatePickerYears: typeof import('vuetify/labs/components')['VDatePickerYears']
|
|
510
510
|
VInfiniteScroll: typeof import('vuetify/labs/components')['VInfiniteScroll']
|
|
511
|
-
VOtpInput: typeof import('vuetify/labs/components')['VOtpInput']
|
|
512
511
|
VPicker: typeof import('vuetify/labs/components')['VPicker']
|
|
513
512
|
VPickerTitle: typeof import('vuetify/labs/components')['VPickerTitle']
|
|
514
513
|
VSkeletonLoader: typeof import('vuetify/labs/components')['VSkeletonLoader']
|
|
@@ -518,6 +517,7 @@ declare module '@vue/runtime-core' {
|
|
|
518
517
|
VStepperItem: typeof import('vuetify/labs/components')['VStepperItem']
|
|
519
518
|
VStepperWindow: typeof import('vuetify/labs/components')['VStepperWindow']
|
|
520
519
|
VStepperWindowItem: typeof import('vuetify/labs/components')['VStepperWindowItem']
|
|
520
|
+
VOtpInput: typeof import('vuetify/labs/components')['VOtpInput']
|
|
521
521
|
VDataIterator: typeof import('vuetify/labs/components')['VDataIterator']
|
|
522
522
|
}
|
|
523
523
|
}
|
|
@@ -260,7 +260,7 @@ declare const VDateInput: {
|
|
|
260
260
|
}>;
|
|
261
261
|
$root: vue.ComponentPublicInstance<{}, {}, {}, {}, {}, {}, {}, {}, false, vue.ComponentOptionsBase<any, any, any, any, any, any, any, any, any, {}, {}, string, {}>, {}, {}> | null;
|
|
262
262
|
$parent: vue.ComponentPublicInstance<{}, {}, {}, {}, {}, {}, {}, {}, false, vue.ComponentOptionsBase<any, any, any, any, any, any, any, any, any, {}, {}, string, {}>, {}, {}> | null;
|
|
263
|
-
$emit: ((event: "update:modelValue", date: readonly any[]) => void) & ((event: "update:focused", focused: boolean) => void) & ((event: "update:inputMode", inputMode: "calendar" | "keyboard") => void) & ((event: "update:
|
|
263
|
+
$emit: ((event: "update:modelValue", date: readonly any[]) => void) & ((event: "update:focused", focused: boolean) => void) & ((event: "update:inputMode", inputMode: "calendar" | "keyboard") => void) & ((event: "update:viewMode", viewMode: "month" | "year") => void) & ((event: "update:displayDate", date: any) => void);
|
|
264
264
|
$el: any;
|
|
265
265
|
$options: vue.ComponentOptionsBase<{
|
|
266
266
|
flat: boolean;
|
|
@@ -1141,7 +1141,7 @@ declare const VDateRangeInput: {
|
|
|
1141
1141
|
}>;
|
|
1142
1142
|
$root: vue.ComponentPublicInstance<{}, {}, {}, {}, {}, {}, {}, {}, false, vue.ComponentOptionsBase<any, any, any, any, any, any, any, any, any, {}, {}, string, {}>, {}, {}> | null;
|
|
1143
1143
|
$parent: vue.ComponentPublicInstance<{}, {}, {}, {}, {}, {}, {}, {}, false, vue.ComponentOptionsBase<any, any, any, any, any, any, any, any, any, {}, {}, string, {}>, {}, {}> | null;
|
|
1144
|
-
$emit: ((event: "update:modelValue", date: readonly any[]) => void) & ((event: "update:focused", focused: boolean) => void) & ((event: "update:inputMode", inputMode: "calendar" | "keyboard") => void) & ((event: "update:
|
|
1144
|
+
$emit: ((event: "update:modelValue", date: readonly any[]) => void) & ((event: "update:focused", focused: boolean) => void) & ((event: "update:inputMode", inputMode: "calendar" | "keyboard") => void) & ((event: "update:viewMode", viewMode: "month" | "year") => void) & ((event: "update:displayDate", date: any) => void);
|
|
1145
1145
|
$el: any;
|
|
1146
1146
|
$options: vue.ComponentOptionsBase<{
|
|
1147
1147
|
inputMode: "calendar" | "keyboard";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"VDateCard.mjs","names":["makeVDatePickerControlsProps","VDatePickerControls","makeVDatePickerMonthProps","VDatePickerMonth","makeVDatePickerYearsProps","VDatePickerYears","VFadeTransition","VBtn","VCard","createDatePicker","useLocale","useProxiedModel","makeTransitionProps","MaybeTransition","genericComponent","propsFactory","useRender","makeVDateCardProps","cancelText","type","String","default","okText","inputMode","hideActions","Boolean","transition","component","leaveAbsolute","VDateCard","name","props","emits","save","cancel","value","mode","setup","_ref","emit","slots","model","t","onDisplayUpdate","val","onViewModeUpdate","onSave","onCancel","cardProps","filterProps","datePickerControlsProps","datePickerMonthProps","datePickerYearsProps","hasActions","actions","_createVNode","_mergeProps","_Fragment","viewMode","$event","undefined"],"sources":["../../../src/labs/VDatePicker/VDateCard.tsx"],"sourcesContent":["// Styles\nimport './VDateCard.sass'\n\n// Components\nimport { makeVDatePickerControlsProps, VDatePickerControls } from './VDatePickerControls'\nimport { makeVDatePickerMonthProps, VDatePickerMonth } from './VDatePickerMonth'\nimport { makeVDatePickerYearsProps, VDatePickerYears } from './VDatePickerYears'\nimport { VFadeTransition } from '@/components/transitions'\nimport { VBtn } from '@/components/VBtn'\nimport { VCard } from '@/components/VCard/VCard'\n\n// Composables\nimport { createDatePicker } from './composables'\nimport { useLocale } from '@/composables/locale'\nimport { useProxiedModel } from '@/composables/proxiedModel'\nimport { makeTransitionProps, MaybeTransition } from '@/composables/transition'\n\n// Utilities\nimport { genericComponent, propsFactory, useRender } from '@/util'\n\n// Types\nimport type { PropType } from 'vue'\nimport type { VCardSlots } from '@/components/VCard/VCard'\n\nexport const makeVDateCardProps = propsFactory({\n cancelText: {\n type: String,\n default: '$vuetify.datePicker.cancel',\n },\n okText: {\n type: String,\n default: '$vuetify.datePicker.ok',\n },\n inputMode: {\n type: String as PropType<'keyboard' | 'calendar'>,\n default: 'calendar',\n },\n hideActions: Boolean,\n\n ...makeVDatePickerControlsProps(),\n ...makeVDatePickerMonthProps(),\n ...makeVDatePickerYearsProps(),\n ...makeTransitionProps({ transition: { component: VFadeTransition, leaveAbsolute: true } }),\n}, 'VDateCard')\n\nexport const VDateCard = genericComponent<VCardSlots>()({\n name: 'VDateCard',\n\n props: makeVDateCardProps(),\n\n emits: {\n save: () => true,\n cancel: () => true,\n 'update:displayDate': (value: any) => true,\n 'update:inputMode': (value: any) => true,\n 'update:modelValue': (value: any) => true,\n 'update:viewMode': (mode: 'month' | 'year') => true,\n },\n\n setup (props, { emit, slots }) {\n const model = useProxiedModel(props, 'modelValue')\n const { t } = useLocale()\n\n createDatePicker(props)\n\n function onDisplayUpdate (val: any) {\n emit('update:displayDate', val)\n }\n\n function onViewModeUpdate (val: any) {\n emit('update:viewMode', val)\n }\n\n function onSave () {\n emit('update:modelValue', model.value)\n emit('save')\n }\n\n function onCancel () {\n emit('cancel')\n }\n\n useRender(() => {\n const [cardProps] = VCard.filterProps(props)\n const [datePickerControlsProps] = VDatePickerControls.filterProps(props)\n const [datePickerMonthProps] = VDatePickerMonth.filterProps(props)\n const [datePickerYearsProps] = VDatePickerYears.filterProps(props)\n const hasActions = !props.hideActions || !!slots.actions\n\n return (\n <VCard\n { ...cardProps }\n class=\"v-date-card\"\n >\n {{\n ...slots,\n default: () => (\n <>\n <VDatePickerControls\n { ...datePickerControlsProps }\n onUpdate:displayDate={ onDisplayUpdate }\n onUpdate:viewMode={ onViewModeUpdate }\n />\n\n <MaybeTransition transition={ props.transition }>\n { props.viewMode === 'month' ? (\n <VDatePickerMonth\n { ...datePickerMonthProps }\n v-model={ model.value }\n onUpdate:displayDate={ onDisplayUpdate }\n />\n ) : (\n <VDatePickerYears\n { ...datePickerYearsProps }\n onUpdate:displayDate={ onDisplayUpdate }\n onUpdate:viewMode={ onViewModeUpdate }\n />\n )}\n </MaybeTransition>\n </>\n ),\n actions: !hasActions ? undefined : () => (\n <>\n { slots.actions?.() ?? (\n <>\n <VBtn onClick={ onCancel } text={ t(props.cancelText) } />\n <VBtn onClick={ onSave } text={ t(props.okText) } />\n </>\n )}\n </>\n ),\n }}\n </VCard>\n )\n })\n\n return {}\n },\n})\n\nexport type VDateCard = InstanceType<typeof VDateCard>\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"VDateCard.mjs","names":["makeVDatePickerControlsProps","VDatePickerControls","makeVDatePickerMonthProps","VDatePickerMonth","makeVDatePickerYearsProps","VDatePickerYears","VFadeTransition","VBtn","VCard","createDatePicker","useLocale","useProxiedModel","makeTransitionProps","MaybeTransition","genericComponent","propsFactory","useRender","makeVDateCardProps","cancelText","type","String","default","okText","inputMode","hideActions","Boolean","transition","component","leaveAbsolute","VDateCard","name","props","emits","save","cancel","value","mode","setup","_ref","emit","slots","model","t","onDisplayUpdate","val","onViewModeUpdate","onSave","onCancel","cardProps","filterProps","datePickerControlsProps","datePickerMonthProps","datePickerYearsProps","hasActions","actions","_createVNode","_mergeProps","_Fragment","viewMode","$event","undefined"],"sources":["../../../src/labs/VDatePicker/VDateCard.tsx"],"sourcesContent":["// @ts-nocheck\n/* eslint-disable */\n\n// Styles\nimport './VDateCard.sass'\n\n// Components\nimport { makeVDatePickerControlsProps, VDatePickerControls } from './VDatePickerControls'\nimport { makeVDatePickerMonthProps, VDatePickerMonth } from './VDatePickerMonth'\nimport { makeVDatePickerYearsProps, VDatePickerYears } from './VDatePickerYears'\nimport { VFadeTransition } from '@/components/transitions'\nimport { VBtn } from '@/components/VBtn'\nimport { VCard } from '@/components/VCard/VCard'\n\n// Composables\nimport { createDatePicker } from './composables'\nimport { useLocale } from '@/composables/locale'\nimport { useProxiedModel } from '@/composables/proxiedModel'\nimport { makeTransitionProps, MaybeTransition } from '@/composables/transition'\n\n// Utilities\nimport { genericComponent, propsFactory, useRender } from '@/util'\n\n// Types\nimport type { PropType } from 'vue'\nimport type { VCardSlots } from '@/components/VCard/VCard'\n\nexport const makeVDateCardProps = propsFactory({\n cancelText: {\n type: String,\n default: '$vuetify.datePicker.cancel',\n },\n okText: {\n type: String,\n default: '$vuetify.datePicker.ok',\n },\n inputMode: {\n type: String as PropType<'keyboard' | 'calendar'>,\n default: 'calendar',\n },\n hideActions: Boolean,\n\n ...makeVDatePickerControlsProps(),\n ...makeVDatePickerMonthProps(),\n ...makeVDatePickerYearsProps(),\n ...makeTransitionProps({ transition: { component: VFadeTransition, leaveAbsolute: true } }),\n}, 'VDateCard')\n\nexport const VDateCard = genericComponent<VCardSlots>()({\n name: 'VDateCard',\n\n props: makeVDateCardProps(),\n\n emits: {\n save: () => true,\n cancel: () => true,\n 'update:displayDate': (value: any) => true,\n 'update:inputMode': (value: any) => true,\n 'update:modelValue': (value: any) => true,\n 'update:viewMode': (mode: 'month' | 'year') => true,\n },\n\n setup (props, { emit, slots }) {\n const model = useProxiedModel(props, 'modelValue')\n const { t } = useLocale()\n\n createDatePicker(props)\n\n function onDisplayUpdate (val: any) {\n emit('update:displayDate', val)\n }\n\n function onViewModeUpdate (val: any) {\n emit('update:viewMode', val)\n }\n\n function onSave () {\n emit('update:modelValue', model.value)\n emit('save')\n }\n\n function onCancel () {\n emit('cancel')\n }\n\n useRender(() => {\n const [cardProps] = VCard.filterProps(props)\n const [datePickerControlsProps] = VDatePickerControls.filterProps(props)\n const [datePickerMonthProps] = VDatePickerMonth.filterProps(props)\n const [datePickerYearsProps] = VDatePickerYears.filterProps(props)\n const hasActions = !props.hideActions || !!slots.actions\n\n return (\n <VCard\n { ...cardProps }\n class=\"v-date-card\"\n >\n {{\n ...slots,\n default: () => (\n <>\n <VDatePickerControls\n { ...datePickerControlsProps }\n onUpdate:displayDate={ onDisplayUpdate }\n onUpdate:viewMode={ onViewModeUpdate }\n />\n\n <MaybeTransition transition={ props.transition }>\n { props.viewMode === 'month' ? (\n <VDatePickerMonth\n { ...datePickerMonthProps }\n v-model={ model.value }\n onUpdate:displayDate={ onDisplayUpdate }\n />\n ) : (\n <VDatePickerYears\n { ...datePickerYearsProps }\n onUpdate:displayDate={ onDisplayUpdate }\n onUpdate:viewMode={ onViewModeUpdate }\n />\n )}\n </MaybeTransition>\n </>\n ),\n actions: !hasActions ? undefined : () => (\n <>\n { slots.actions?.() ?? (\n <>\n <VBtn onClick={ onCancel } text={ t(props.cancelText) } />\n <VBtn onClick={ onSave } text={ t(props.okText) } />\n </>\n )}\n </>\n ),\n }}\n </VCard>\n )\n })\n\n return {}\n },\n})\n\nexport type VDateCard = InstanceType<typeof VDateCard>\n"],"mappings":"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"}
|
|
@@ -86,21 +86,24 @@ export const VDatePicker = genericComponent()({
|
|
|
86
86
|
const header = computed(() => model.value.length ? adapter.format(model.value[0], 'normalDateWithWeekday') : t(props.header));
|
|
87
87
|
const headerIcon = computed(() => inputMode.value === 'calendar' ? props.keyboardIcon : props.calendarIcon);
|
|
88
88
|
const headerTransition = computed(() => `date-picker-header${isReversing.value ? '-reverse' : ''}-transition`);
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
if (
|
|
95
|
-
const
|
|
96
|
-
|
|
97
|
-
if (props.hideActions) {
|
|
98
|
-
model.value = newModel;
|
|
99
|
-
} else {
|
|
100
|
-
temporaryModel.value = newModel;
|
|
101
|
-
}
|
|
89
|
+
const minDate = computed(() => props.min && adapter.isValid(props.min) ? adapter.date(props.min) : null);
|
|
90
|
+
const maxDate = computed(() => props.max && adapter.isValid(props.max) ? adapter.date(props.max) : null);
|
|
91
|
+
const disabled = computed(() => {
|
|
92
|
+
if (!minDate.value && !maxDate.value) return false;
|
|
93
|
+
const targets = [];
|
|
94
|
+
if (minDate.value) {
|
|
95
|
+
const date = adapter.addDays(adapter.startOfMonth(displayDate.value), -1);
|
|
96
|
+
adapter.isAfter(minDate.value, date) && targets.push('prev');
|
|
102
97
|
}
|
|
103
|
-
|
|
98
|
+
if (maxDate.value) {
|
|
99
|
+
const date = adapter.addDays(adapter.endOfMonth(displayDate.value), 1);
|
|
100
|
+
adapter.isAfter(date, maxDate.value) && targets.push('next');
|
|
101
|
+
}
|
|
102
|
+
if (minDate.value?.getFullYear() === maxDate.value?.getFullYear()) {
|
|
103
|
+
targets.push('mode');
|
|
104
|
+
}
|
|
105
|
+
return targets;
|
|
106
|
+
});
|
|
104
107
|
watch(model, val => {
|
|
105
108
|
if (!isEqual(val, temporaryModel.value)) {
|
|
106
109
|
temporaryModel.value = val;
|
|
@@ -115,6 +118,21 @@ export const VDatePicker = genericComponent()({
|
|
|
115
118
|
isReversing.value = adapter.isBefore(val[0], oldVal[0]);
|
|
116
119
|
}
|
|
117
120
|
});
|
|
121
|
+
function updateFromInput(input, index) {
|
|
122
|
+
const {
|
|
123
|
+
isValid,
|
|
124
|
+
date
|
|
125
|
+
} = adapter;
|
|
126
|
+
if (isValid(input)) {
|
|
127
|
+
const newModel = model.value.slice();
|
|
128
|
+
newModel[index] = date(input);
|
|
129
|
+
if (props.hideActions) {
|
|
130
|
+
model.value = newModel;
|
|
131
|
+
} else {
|
|
132
|
+
temporaryModel.value = newModel;
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
}
|
|
118
136
|
function onClickCancel() {
|
|
119
137
|
emit('click:cancel');
|
|
120
138
|
}
|
|
@@ -125,6 +143,15 @@ export const VDatePicker = genericComponent()({
|
|
|
125
143
|
function onClickAppend() {
|
|
126
144
|
inputMode.value = inputMode.value === 'calendar' ? 'keyboard' : 'calendar';
|
|
127
145
|
}
|
|
146
|
+
function onClickNext() {
|
|
147
|
+
displayDate.value = adapter.addMonths(displayDate.value, 1);
|
|
148
|
+
}
|
|
149
|
+
function onClickPrev() {
|
|
150
|
+
displayDate.value = adapter.addMonths(displayDate.value, -1);
|
|
151
|
+
}
|
|
152
|
+
function onClickMode() {
|
|
153
|
+
viewMode.value = viewMode.value === 'month' ? 'year' : 'month';
|
|
154
|
+
}
|
|
128
155
|
const headerSlotProps = computed(() => ({
|
|
129
156
|
header: header.value,
|
|
130
157
|
appendIcon: headerIcon.value,
|
|
@@ -146,10 +173,11 @@ export const VDatePicker = genericComponent()({
|
|
|
146
173
|
"key": "header"
|
|
147
174
|
}, headerSlotProps.value), null),
|
|
148
175
|
default: () => inputMode.value === 'calendar' ? _createVNode(_Fragment, null, [_createVNode(VDatePickerControls, _mergeProps(datePickerControlsProps, {
|
|
149
|
-
"
|
|
150
|
-
"
|
|
151
|
-
"
|
|
152
|
-
"
|
|
176
|
+
"disabled": disabled.value,
|
|
177
|
+
"displayDate": adapter.format(displayDate.value, 'monthAndYear'),
|
|
178
|
+
"onClick:next": onClickNext,
|
|
179
|
+
"onClick:prev": onClickPrev,
|
|
180
|
+
"onClick:mode": onClickMode
|
|
153
181
|
}), null), _createVNode(VFadeTransition, {
|
|
154
182
|
"hideOnLeave": true
|
|
155
183
|
}, {
|
|
@@ -159,14 +187,16 @@ export const VDatePicker = genericComponent()({
|
|
|
159
187
|
"modelValue": temporaryModel.value,
|
|
160
188
|
"onUpdate:modelValue": $event => temporaryModel.value = $event,
|
|
161
189
|
"displayDate": displayDate.value,
|
|
162
|
-
"
|
|
190
|
+
"min": minDate.value,
|
|
191
|
+
"max": maxDate.value
|
|
163
192
|
}), null) : _createVNode(VDatePickerYears, _mergeProps({
|
|
164
193
|
"key": "date-picker-years"
|
|
165
194
|
}, datePickerYearsProps, {
|
|
166
195
|
"displayDate": displayDate.value,
|
|
167
196
|
"onUpdate:displayDate": $event => displayDate.value = $event,
|
|
168
|
-
"
|
|
169
|
-
"
|
|
197
|
+
"min": minDate.value,
|
|
198
|
+
"max": maxDate.value,
|
|
199
|
+
"onClick:mode": onClickMode
|
|
170
200
|
}), null)]
|
|
171
201
|
})]) : _createVNode("div", {
|
|
172
202
|
"class": "v-date-picker__input"
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"VDatePicker.mjs","names":["makeVDatePickerControlsProps","VDatePickerControls","VDatePickerHeader","makeVDatePickerMonthProps","VDatePickerMonth","makeVDatePickerYearsProps","VDatePickerYears","VFadeTransition","VBtn","VTextField","dateEmits","makeDateProps","makeVPickerProps","VPicker","createDatePicker","useLocale","useDate","computed","ref","shallowRef","watch","genericComponent","propsFactory","useRender","makeVDatePickerProps","calendarIcon","type","String","default","keyboardIcon","cancelText","okText","inputText","inputPlaceholder","header","hideActions","Boolean","title","VDatePicker","name","props","emits","click:cancel","click:save","setup","_ref","emit","slots","adapter","t","model","displayDate","viewMode","inputMode","isEqual","isReversing","inputModel","value","map","date","format","temporaryModel","length","headerIcon","headerTransition","updateFromInput","input","index","isValid","newModel","slice","val","oldVal","isBefore","onClickCancel","onClickSave","onClickAppend","headerSlotProps","appendIcon","transition","pickerProps","filterProps","datePickerControlsProps","datePickerMonthProps","datePickerYearsProps","_createVNode","_mergeProps","class","style","showWeek","_Fragment","$event","v","actions","color","undefined"],"sources":["../../../src/labs/VDatePicker/VDatePicker.tsx"],"sourcesContent":["// Styles\nimport './VDatePicker.sass'\n\n// Components\nimport { makeVDatePickerControlsProps, VDatePickerControls } from './VDatePickerControls'\nimport { VDatePickerHeader } from './VDatePickerHeader'\nimport { makeVDatePickerMonthProps, VDatePickerMonth } from './VDatePickerMonth'\nimport { makeVDatePickerYearsProps, VDatePickerYears } from './VDatePickerYears'\nimport { VFadeTransition } from '@/components/transitions'\nimport { VBtn } from '@/components/VBtn'\nimport { VTextField } from '@/components/VTextField'\nimport { dateEmits, makeDateProps } from '@/labs/VDateInput/composables'\nimport { makeVPickerProps, VPicker } from '@/labs/VPicker/VPicker'\n\n// Composables\nimport { createDatePicker } from './composables'\nimport { useLocale } from '@/composables/locale'\nimport { useDate } from '@/labs/date'\n\n// Utilities\nimport { computed, ref, shallowRef, watch } from 'vue'\nimport { genericComponent, propsFactory, useRender } from '@/util'\n\n// Types\nexport type VDatePickerSlots = {\n header: {\n header: string\n appendIcon: string\n 'onClick:append': () => void\n }\n}\n\nexport const makeVDatePickerProps = propsFactory({\n calendarIcon: {\n type: String,\n default: '$calendar',\n },\n keyboardIcon: {\n type: String,\n default: '$edit',\n },\n cancelText: {\n type: String,\n default: '$vuetify.datePicker.cancel',\n },\n okText: {\n type: String,\n default: '$vuetify.datePicker.ok',\n },\n inputText: {\n type: String,\n default: '$vuetify.datePicker.input.placeholder',\n },\n inputPlaceholder: {\n type: String,\n default: 'dd/mm/yyyy',\n },\n header: {\n type: String,\n default: '$vuetify.datePicker.header',\n },\n hideActions: Boolean,\n\n ...makeDateProps(),\n ...makeVDatePickerControlsProps(),\n ...makeVDatePickerMonthProps(),\n ...makeVDatePickerYearsProps(),\n ...makeVPickerProps({ title: '$vuetify.datePicker.title' }),\n}, 'VDatePicker')\n\nexport const VDatePicker = genericComponent<VDatePickerSlots>()({\n name: 'VDatePicker',\n\n props: makeVDatePickerProps(),\n\n emits: {\n 'click:cancel': () => true,\n 'click:save': () => true,\n ...dateEmits,\n },\n\n setup (props, { emit, slots }) {\n const adapter = useDate()\n const { t } = useLocale()\n\n const { model, displayDate, viewMode, inputMode, isEqual } = createDatePicker(props)\n\n const isReversing = shallowRef(false)\n\n const inputModel = ref(model.value.map(date => adapter.format(date, 'keyboardDate')))\n const temporaryModel = ref(model.value)\n const title = computed(() => t(props.title))\n const header = computed(() => model.value.length ? adapter.format(model.value[0], 'normalDateWithWeekday') : t(props.header))\n const headerIcon = computed(() => inputMode.value === 'calendar' ? props.keyboardIcon : props.calendarIcon)\n const headerTransition = computed(() => `date-picker-header${isReversing.value ? '-reverse' : ''}-transition`)\n\n function updateFromInput (input: string, index: number) {\n const { isValid, date } = adapter\n\n if (isValid(input)) {\n const newModel = model.value.slice()\n newModel[index] = date(input)\n\n if (props.hideActions) {\n model.value = newModel\n } else {\n temporaryModel.value = newModel\n }\n }\n }\n\n watch(model, val => {\n if (!isEqual(val, temporaryModel.value)) {\n temporaryModel.value = val\n }\n\n inputModel.value = val.map(date => adapter.format(date, 'keyboardDate'))\n })\n\n watch(temporaryModel, (val, oldVal) => {\n if (props.hideActions && !isEqual(val, model.value)) {\n model.value = val\n }\n\n if (val[0] && oldVal[0]) {\n isReversing.value = adapter.isBefore(val[0], oldVal[0])\n }\n })\n\n function onClickCancel () {\n emit('click:cancel')\n }\n\n function onClickSave () {\n emit('click:save')\n\n model.value = temporaryModel.value\n }\n\n function onClickAppend () {\n inputMode.value = inputMode.value === 'calendar' ? 'keyboard' : 'calendar'\n }\n\n const headerSlotProps = computed(() => ({\n header: header.value,\n appendIcon: headerIcon.value,\n transition: headerTransition.value,\n 'onClick:append': onClickAppend,\n }))\n\n useRender(() => {\n const [pickerProps] = VPicker.filterProps(props)\n const [datePickerControlsProps] = VDatePickerControls.filterProps(props)\n const [datePickerMonthProps] = VDatePickerMonth.filterProps(props)\n const [datePickerYearsProps] = VDatePickerYears.filterProps(props)\n\n return (\n <VPicker\n { ...pickerProps }\n class={[\n 'v-date-picker',\n props.class,\n ]}\n style={ props.style }\n title={ title.value }\n width={ props.showWeek ? 408 : 360 }\n v-slots={{\n header: () => slots.header?.(headerSlotProps.value) ?? (\n <VDatePickerHeader\n key=\"header\"\n { ...headerSlotProps.value }\n />\n ),\n default: () => inputMode.value === 'calendar' ? (\n <>\n <VDatePickerControls\n { ...datePickerControlsProps }\n v-model:displayDate={ displayDate.value }\n v-model:viewMode={ viewMode.value }\n />\n\n <VFadeTransition hideOnLeave>\n { viewMode.value === 'month' ? (\n <VDatePickerMonth\n key=\"date-picker-month\"\n { ...datePickerMonthProps }\n v-model={ temporaryModel.value }\n v-model:displayDate={ displayDate.value }\n />\n ) : (\n <VDatePickerYears\n key=\"date-picker-years\"\n { ...datePickerYearsProps }\n v-model:displayDate={ displayDate.value }\n v-model:viewMode={ viewMode.value }\n />\n )}\n </VFadeTransition>\n </>\n ) : (\n <div class=\"v-date-picker__input\">\n <VTextField\n modelValue={ inputModel.value[0] }\n onUpdate:modelValue={ v => updateFromInput(v, 0) }\n label={ t(props.inputText) }\n placeholder={ props.inputPlaceholder }\n />\n </div>\n ),\n actions: () => !props.hideActions ? (\n <div>\n <VBtn\n variant=\"text\"\n color={ props.color }\n onClick={ onClickCancel }\n text={ t(props.cancelText) }\n />\n\n <VBtn\n variant=\"text\"\n color={ props.color }\n onClick={ onClickSave }\n text={ t(props.okText) }\n />\n </div>\n ) : undefined,\n }}\n />\n )\n })\n\n return {}\n },\n})\n\nexport type VDatePicker = InstanceType<typeof VDatePicker>\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"VDatePicker.mjs","names":["makeVDatePickerControlsProps","VDatePickerControls","VDatePickerHeader","makeVDatePickerMonthProps","VDatePickerMonth","makeVDatePickerYearsProps","VDatePickerYears","VFadeTransition","VBtn","VTextField","dateEmits","makeDateProps","makeVPickerProps","VPicker","createDatePicker","useLocale","useDate","computed","ref","shallowRef","watch","genericComponent","propsFactory","useRender","makeVDatePickerProps","calendarIcon","type","String","default","keyboardIcon","cancelText","okText","inputText","inputPlaceholder","header","hideActions","Boolean","title","VDatePicker","name","props","emits","click:cancel","click:save","setup","_ref","emit","slots","adapter","t","model","displayDate","viewMode","inputMode","isEqual","isReversing","inputModel","value","map","date","format","temporaryModel","length","headerIcon","headerTransition","minDate","min","isValid","maxDate","max","disabled","targets","addDays","startOfMonth","isAfter","push","endOfMonth","getFullYear","val","oldVal","isBefore","updateFromInput","input","index","newModel","slice","onClickCancel","onClickSave","onClickAppend","onClickNext","addMonths","onClickPrev","onClickMode","headerSlotProps","appendIcon","transition","pickerProps","filterProps","datePickerControlsProps","datePickerMonthProps","datePickerYearsProps","_createVNode","_mergeProps","class","style","showWeek","_Fragment","$event","v","actions","color","undefined"],"sources":["../../../src/labs/VDatePicker/VDatePicker.tsx"],"sourcesContent":["// Styles\nimport './VDatePicker.sass'\n\n// Components\nimport { makeVDatePickerControlsProps, VDatePickerControls } from './VDatePickerControls'\nimport { VDatePickerHeader } from './VDatePickerHeader'\nimport { makeVDatePickerMonthProps, VDatePickerMonth } from './VDatePickerMonth'\nimport { makeVDatePickerYearsProps, VDatePickerYears } from './VDatePickerYears'\nimport { VFadeTransition } from '@/components/transitions'\nimport { VBtn } from '@/components/VBtn'\nimport { VTextField } from '@/components/VTextField'\nimport { dateEmits, makeDateProps } from '@/labs/VDateInput/composables'\nimport { makeVPickerProps, VPicker } from '@/labs/VPicker/VPicker'\n\n// Composables\nimport { createDatePicker } from './composables'\nimport { useLocale } from '@/composables/locale'\nimport { useDate } from '@/labs/date'\n\n// Utilities\nimport { computed, ref, shallowRef, watch } from 'vue'\nimport { genericComponent, propsFactory, useRender } from '@/util'\n\n// Types\nexport type VDatePickerSlots = {\n header: {\n header: string\n appendIcon: string\n 'onClick:append': () => void\n }\n}\n\nexport const makeVDatePickerProps = propsFactory({\n calendarIcon: {\n type: String,\n default: '$calendar',\n },\n keyboardIcon: {\n type: String,\n default: '$edit',\n },\n cancelText: {\n type: String,\n default: '$vuetify.datePicker.cancel',\n },\n okText: {\n type: String,\n default: '$vuetify.datePicker.ok',\n },\n inputText: {\n type: String,\n default: '$vuetify.datePicker.input.placeholder',\n },\n inputPlaceholder: {\n type: String,\n default: 'dd/mm/yyyy',\n },\n header: {\n type: String,\n default: '$vuetify.datePicker.header',\n },\n hideActions: Boolean,\n\n ...makeDateProps(),\n ...makeVDatePickerControlsProps(),\n ...makeVDatePickerMonthProps(),\n ...makeVDatePickerYearsProps(),\n ...makeVPickerProps({ title: '$vuetify.datePicker.title' }),\n}, 'VDatePicker')\n\nexport const VDatePicker = genericComponent<VDatePickerSlots>()({\n name: 'VDatePicker',\n\n props: makeVDatePickerProps(),\n\n emits: {\n 'click:cancel': () => true,\n 'click:save': () => true,\n ...dateEmits,\n },\n\n setup (props, { emit, slots }) {\n const adapter = useDate()\n const { t } = useLocale()\n\n const { model, displayDate, viewMode, inputMode, isEqual } = createDatePicker(props)\n\n const isReversing = shallowRef(false)\n\n const inputModel = ref(model.value.map(date => adapter.format(date, 'keyboardDate')))\n const temporaryModel = ref(model.value)\n const title = computed(() => t(props.title))\n const header = computed(() => model.value.length ? adapter.format(model.value[0], 'normalDateWithWeekday') : t(props.header))\n const headerIcon = computed(() => inputMode.value === 'calendar' ? props.keyboardIcon : props.calendarIcon)\n const headerTransition = computed(() => `date-picker-header${isReversing.value ? '-reverse' : ''}-transition`)\n const minDate = computed(() => props.min && adapter.isValid(props.min) ? adapter.date(props.min) : null)\n const maxDate = computed(() => props.max && adapter.isValid(props.max) ? adapter.date(props.max) : null)\n\n const disabled = computed(() => {\n if (!minDate.value && !maxDate.value) return false\n\n const targets = []\n\n if (minDate.value) {\n const date = adapter.addDays(adapter.startOfMonth(displayDate.value), -1)\n\n adapter.isAfter(minDate.value, date) && targets.push('prev')\n }\n\n if (maxDate.value) {\n const date = adapter.addDays(adapter.endOfMonth(displayDate.value), 1)\n\n adapter.isAfter(date, maxDate.value) && targets.push('next')\n }\n\n if (minDate.value?.getFullYear() === maxDate.value?.getFullYear()) {\n targets.push('mode')\n }\n\n return targets\n })\n\n watch(model, val => {\n if (!isEqual(val, temporaryModel.value)) {\n temporaryModel.value = val\n }\n\n inputModel.value = val.map(date => adapter.format(date, 'keyboardDate'))\n })\n\n watch(temporaryModel, (val, oldVal) => {\n if (props.hideActions && !isEqual(val, model.value)) {\n model.value = val\n }\n\n if (val[0] && oldVal[0]) {\n isReversing.value = adapter.isBefore(val[0], oldVal[0])\n }\n })\n\n function updateFromInput (input: string, index: number) {\n const { isValid, date } = adapter\n\n if (isValid(input)) {\n const newModel = model.value.slice()\n newModel[index] = date(input)\n\n if (props.hideActions) {\n model.value = newModel\n } else {\n temporaryModel.value = newModel\n }\n }\n }\n\n function onClickCancel () {\n emit('click:cancel')\n }\n\n function onClickSave () {\n emit('click:save')\n\n model.value = temporaryModel.value\n }\n\n function onClickAppend () {\n inputMode.value = inputMode.value === 'calendar' ? 'keyboard' : 'calendar'\n }\n\n function onClickNext () {\n displayDate.value = adapter.addMonths(displayDate.value, 1)\n }\n\n function onClickPrev () {\n displayDate.value = adapter.addMonths(displayDate.value, -1)\n }\n\n function onClickMode () {\n viewMode.value = viewMode.value === 'month' ? 'year' : 'month'\n }\n\n const headerSlotProps = computed(() => ({\n header: header.value,\n appendIcon: headerIcon.value,\n transition: headerTransition.value,\n 'onClick:append': onClickAppend,\n }))\n\n useRender(() => {\n const [pickerProps] = VPicker.filterProps(props)\n const [datePickerControlsProps] = VDatePickerControls.filterProps(props)\n const [datePickerMonthProps] = VDatePickerMonth.filterProps(props)\n const [datePickerYearsProps] = VDatePickerYears.filterProps(props)\n\n return (\n <VPicker\n { ...pickerProps }\n class={[\n 'v-date-picker',\n props.class,\n ]}\n style={ props.style }\n title={ title.value }\n width={ props.showWeek ? 408 : 360 }\n v-slots={{\n header: () => slots.header?.(headerSlotProps.value) ?? (\n <VDatePickerHeader\n key=\"header\"\n { ...headerSlotProps.value }\n />\n ),\n default: () => inputMode.value === 'calendar' ? (\n <>\n <VDatePickerControls\n { ...datePickerControlsProps }\n disabled={ disabled.value }\n displayDate={ adapter.format(displayDate.value, 'monthAndYear') }\n onClick:next={ onClickNext }\n onClick:prev={ onClickPrev }\n onClick:mode={ onClickMode }\n />\n\n <VFadeTransition hideOnLeave>\n { viewMode.value === 'month' ? (\n <VDatePickerMonth\n key=\"date-picker-month\"\n { ...datePickerMonthProps }\n v-model={ temporaryModel.value }\n displayDate={ displayDate.value }\n min={ minDate.value }\n max={ maxDate.value }\n />\n ) : (\n <VDatePickerYears\n key=\"date-picker-years\"\n { ...datePickerYearsProps }\n v-model:displayDate={ displayDate.value }\n min={ minDate.value }\n max={ maxDate.value }\n onClick:mode={ onClickMode }\n />\n )}\n </VFadeTransition>\n </>\n ) : (\n <div class=\"v-date-picker__input\">\n <VTextField\n modelValue={ inputModel.value[0] }\n onUpdate:modelValue={ v => updateFromInput(v, 0) }\n label={ t(props.inputText) }\n placeholder={ props.inputPlaceholder }\n />\n </div>\n ),\n actions: () => !props.hideActions ? (\n <div>\n <VBtn\n variant=\"text\"\n color={ props.color }\n onClick={ onClickCancel }\n text={ t(props.cancelText) }\n />\n\n <VBtn\n variant=\"text\"\n color={ props.color }\n onClick={ onClickSave }\n text={ t(props.okText) }\n />\n </div>\n ) : undefined,\n }}\n />\n )\n })\n\n return {}\n },\n})\n\nexport type VDatePicker = InstanceType<typeof VDatePicker>\n"],"mappings":"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"}
|
|
@@ -19,6 +19,6 @@
|
|
|
19
19
|
.v-date-picker-controls__month {
|
|
20
20
|
display: flex;
|
|
21
21
|
}
|
|
22
|
-
.v-date-picker-controls__month
|
|
22
|
+
.v-locale--is-rtl.v-date-picker-controls__month, .v-locale--is-rtl .v-date-picker-controls__month {
|
|
23
23
|
flex-direction: row-reverse;
|
|
24
24
|
}
|