@vuetify/nightly 3.8.0-beta.0-dev.2025-03-25 → 3.8.0-beta.0-dev.2025-03-29

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.
Files changed (53) hide show
  1. package/CHANGELOG.md +80 -33
  2. package/dist/_component-variables-labs.sass +1 -0
  3. package/dist/json/attributes.json +4178 -4054
  4. package/dist/json/importMap-labs.json +12 -8
  5. package/dist/json/importMap.json +178 -178
  6. package/dist/json/tags.json +36 -0
  7. package/dist/json/web-types.json +7764 -7427
  8. package/dist/vuetify-labs.cjs +242 -16
  9. package/dist/vuetify-labs.css +2467 -2290
  10. package/dist/vuetify-labs.d.ts +546 -230
  11. package/dist/vuetify-labs.esm.js +242 -16
  12. package/dist/vuetify-labs.esm.js.map +1 -1
  13. package/dist/vuetify-labs.js +242 -16
  14. package/dist/vuetify-labs.min.css +2 -2
  15. package/dist/vuetify.cjs +31 -13
  16. package/dist/vuetify.cjs.map +1 -1
  17. package/dist/vuetify.css +4498 -4498
  18. package/dist/vuetify.d.ts +118 -143
  19. package/dist/vuetify.esm.js +31 -13
  20. package/dist/vuetify.esm.js.map +1 -1
  21. package/dist/vuetify.js +31 -13
  22. package/dist/vuetify.js.map +1 -1
  23. package/dist/vuetify.min.css +2 -2
  24. package/dist/vuetify.min.js +18 -17
  25. package/dist/vuetify.min.js.map +1 -1
  26. package/lib/components/VConfirmEdit/VConfirmEdit.d.ts +31 -6
  27. package/lib/components/VConfirmEdit/VConfirmEdit.js +17 -2
  28. package/lib/components/VConfirmEdit/VConfirmEdit.js.map +1 -1
  29. package/lib/components/VDatePicker/VDatePicker.d.ts +33 -78
  30. package/lib/components/VDatePicker/VDatePickerMonth.d.ts +33 -78
  31. package/lib/composables/calendar.d.ts +12 -35
  32. package/lib/composables/calendar.js +11 -8
  33. package/lib/composables/calendar.js.map +1 -1
  34. package/lib/entry-bundler.js +1 -1
  35. package/lib/framework.d.ts +58 -57
  36. package/lib/framework.js +1 -1
  37. package/lib/labs/VCalendar/VCalendar.d.ts +33 -78
  38. package/lib/labs/VDateInput/VDateInput.d.ts +68 -78
  39. package/lib/labs/VDateInput/VDateInput.js +44 -4
  40. package/lib/labs/VDateInput/VDateInput.js.map +1 -1
  41. package/lib/labs/VIconBtn/VIconBtn.css +178 -0
  42. package/lib/labs/VIconBtn/VIconBtn.d.ts +608 -0
  43. package/lib/labs/VIconBtn/VIconBtn.js +184 -0
  44. package/lib/labs/VIconBtn/VIconBtn.js.map +1 -0
  45. package/lib/labs/VIconBtn/VIconBtn.scss +110 -0
  46. package/lib/labs/VIconBtn/_variables.scss +36 -0
  47. package/lib/labs/VIconBtn/index.d.ts +1 -0
  48. package/lib/labs/VIconBtn/index.js +2 -0
  49. package/lib/labs/VIconBtn/index.js.map +1 -0
  50. package/lib/labs/components.d.ts +1 -0
  51. package/lib/labs/components.js +1 -0
  52. package/lib/labs/components.js.map +1 -1
  53. package/package.json +1 -1
@@ -5,11 +5,12 @@ import { makeVDatePickerProps, VDatePicker } from "../../components/VDatePicker/
5
5
  import { VMenu } from "../../components/VMenu/VMenu.js";
6
6
  import { makeVTextFieldProps, VTextField } from "../../components/VTextField/VTextField.js"; // Composables
7
7
  import { useDate } from "../../composables/date/index.js";
8
+ import { makeDisplayProps, useDisplay } from "../../composables/display.js";
8
9
  import { makeFocusProps, useFocus } from "../../composables/focus.js";
9
10
  import { forwardRefs } from "../../composables/forwardRefs.js";
10
11
  import { useLocale } from "../../composables/locale.js";
11
12
  import { useProxiedModel } from "../../composables/proxiedModel.js"; // Utilities
12
- import { computed, ref, shallowRef } from 'vue';
13
+ import { computed, ref, shallowRef, watch } from 'vue';
13
14
  import { genericComponent, omit, propsFactory, useRender, wrapInArray } from "../../util/index.js"; // Types
14
15
  // Types
15
16
  export const makeVDateInputProps = propsFactory({
@@ -18,6 +19,7 @@ export const makeVDateInputProps = propsFactory({
18
19
  type: String,
19
20
  default: 'bottom start'
20
21
  },
22
+ ...makeDisplayProps(),
21
23
  ...makeFocusProps(),
22
24
  ...makeVConfirmEditProps({
23
25
  hideActions: true
@@ -48,6 +50,9 @@ export const VDateInput = genericComponent()({
48
50
  t
49
51
  } = useLocale();
50
52
  const adapter = useDate();
53
+ const {
54
+ mobile
55
+ } = useDisplay();
51
56
  const {
52
57
  isFocused,
53
58
  focus,
@@ -55,7 +60,9 @@ export const VDateInput = genericComponent()({
55
60
  } = useFocus(props);
56
61
  const model = useProxiedModel(props, 'modelValue', props.multiple ? [] : null, val => Array.isArray(val) ? val.map(item => adapter.toJsDate(item)) : val ? adapter.toJsDate(val) : val, val => Array.isArray(val) ? val.map(item => adapter.date(item)) : val ? adapter.date(val) : val);
57
62
  const menu = shallowRef(false);
63
+ const isEditingInput = shallowRef(false);
58
64
  const vDateInputRef = ref();
65
+ const disabledActions = ref(['save']);
59
66
  function format(date) {
60
67
  if (typeof props.displayFormat === 'function') {
61
68
  return props.displayFormat(date);
@@ -76,7 +83,18 @@ export const VDateInput = genericComponent()({
76
83
  }
77
84
  return adapter.isValid(model.value) ? format(adapter.date(model.value)) : '';
78
85
  });
86
+ const inputmode = computed(() => {
87
+ if (!mobile.value) return undefined;
88
+ if (isEditingInput.value) return 'text';
89
+ return 'none';
90
+ });
79
91
  const isInteractive = computed(() => !props.disabled && !props.readonly);
92
+ const isReadonly = computed(() => !(mobile.value && isEditingInput.value) && props.readonly);
93
+ watch(menu, val => {
94
+ if (val) return;
95
+ isEditingInput.value = false;
96
+ disabledActions.value = ['save'];
97
+ });
80
98
  function onKeydown(e) {
81
99
  if (e.key !== 'Enter') return;
82
100
  if (!menu.value || !isFocused.value) {
@@ -89,11 +107,16 @@ export const VDateInput = genericComponent()({
89
107
  function onClick(e) {
90
108
  e.preventDefault();
91
109
  e.stopPropagation();
92
- menu.value = true;
110
+ if (menu.value && mobile.value) {
111
+ isEditingInput.value = true;
112
+ } else {
113
+ menu.value = true;
114
+ }
93
115
  }
94
116
  function onCancel() {
95
117
  emit('cancel');
96
118
  menu.value = false;
119
+ isEditingInput.value = false;
97
120
  }
98
121
  function onSave(value) {
99
122
  emit('save', value);
@@ -103,6 +126,19 @@ export const VDateInput = genericComponent()({
103
126
  if (value != null) return;
104
127
  model.value = null;
105
128
  }
129
+ function onUpdateMenuModel(isMenuOpen) {
130
+ if (isMenuOpen) return;
131
+ isEditingInput.value = false;
132
+ }
133
+ function onBlur() {
134
+ blur();
135
+
136
+ // When in mobile mode and editing is done (due to keyboard dismissal), close the menu
137
+ if (mobile.value && isEditingInput.value && !isFocused.value) {
138
+ menu.value = false;
139
+ isEditingInput.value = false;
140
+ }
141
+ }
106
142
  useRender(() => {
107
143
  const confirmEditProps = VConfirmEdit.filterProps(props);
108
144
  const datePickerProps = VDatePicker.filterProps(omit(props, ['active', 'location', 'rounded']));
@@ -113,10 +149,12 @@ export const VDateInput = genericComponent()({
113
149
  "class": props.class,
114
150
  "style": props.style,
115
151
  "modelValue": display.value,
152
+ "inputmode": inputmode.value,
153
+ "readonly": isReadonly.value,
116
154
  "onKeydown": isInteractive.value ? onKeydown : undefined,
117
155
  "focused": menu.value || isFocused.value,
118
156
  "onFocus": focus,
119
- "onBlur": blur,
157
+ "onBlur": onBlur,
120
158
  "onClick:control": isInteractive.value ? onClick : undefined,
121
159
  "onClick:prepend": isInteractive.value ? onClick : undefined,
122
160
  "onUpdate:modelValue": onUpdateDisplayModel
@@ -124,7 +162,7 @@ export const VDateInput = genericComponent()({
124
162
  ...slots,
125
163
  default: () => _createVNode(_Fragment, null, [_createVNode(VMenu, {
126
164
  "modelValue": menu.value,
127
- "onUpdate:modelValue": $event => menu.value = $event,
165
+ "onUpdate:modelValue": [$event => menu.value = $event, onUpdateMenuModel],
128
166
  "activator": "parent",
129
167
  "min-width": "0",
130
168
  "eager": isFocused.value,
@@ -135,6 +173,7 @@ export const VDateInput = genericComponent()({
135
173
  default: () => [_createVNode(VConfirmEdit, _mergeProps(confirmEditProps, {
136
174
  "modelValue": model.value,
137
175
  "onUpdate:modelValue": $event => model.value = $event,
176
+ "disabled": disabledActions.value,
138
177
  "onSave": onSave,
139
178
  "onCancel": onCancel
140
179
  }), {
@@ -157,6 +196,7 @@ export const VDateInput = genericComponent()({
157
196
  }
158
197
  emit('save', value);
159
198
  vDateInputRef.value?.blur();
199
+ disabledActions.value = [];
160
200
  }
161
201
  return _createVNode(VDatePicker, _mergeProps(datePickerProps, {
162
202
  "modelValue": props.hideActions ? model.value : proxyModel.value,
@@ -1 +1 @@
1
- {"version":3,"file":"VDateInput.js","names":["makeVConfirmEditProps","VConfirmEdit","makeVDatePickerProps","VDatePicker","VMenu","makeVTextFieldProps","VTextField","useDate","makeFocusProps","useFocus","forwardRefs","useLocale","useProxiedModel","computed","ref","shallowRef","genericComponent","omit","propsFactory","useRender","wrapInArray","makeVDateInputProps","displayFormat","Function","String","location","type","default","hideActions","placeholder","prependIcon","hideHeader","showAdjacentMonths","VDateInput","name","props","emits","save","value","cancel","val","setup","_ref","emit","slots","t","adapter","isFocused","focus","blur","model","multiple","Array","isArray","map","item","toJsDate","date","menu","vDateInputRef","format","display","length","start","end","isValid","isInteractive","disabled","readonly","onKeydown","e","key","target","onClick","preventDefault","stopPropagation","onCancel","onSave","onUpdateDisplayModel","confirmEditProps","filterProps","datePickerProps","textFieldProps","_createVNode","_mergeProps","class","style","undefined","_Fragment","$event","_ref2","actions","proxyModel","isPristine","onUpdateModel"],"sources":["../../../src/labs/VDateInput/VDateInput.tsx"],"sourcesContent":["// Components\nimport { makeVConfirmEditProps, VConfirmEdit } from '@/components/VConfirmEdit/VConfirmEdit'\nimport { makeVDatePickerProps, VDatePicker } from '@/components/VDatePicker/VDatePicker'\nimport { VMenu } from '@/components/VMenu/VMenu'\nimport { makeVTextFieldProps, VTextField } from '@/components/VTextField/VTextField'\n\n// Composables\nimport { useDate } from '@/composables/date'\nimport { makeFocusProps, useFocus } from '@/composables/focus'\nimport { forwardRefs } from '@/composables/forwardRefs'\nimport { useLocale } from '@/composables/locale'\nimport { useProxiedModel } from '@/composables/proxiedModel'\n\n// Utilities\nimport { computed, ref, shallowRef } from 'vue'\nimport { genericComponent, omit, propsFactory, useRender, wrapInArray } from '@/util'\n\n// Types\nimport type { PropType } from 'vue'\nimport type { StrategyProps } from '@/components/VOverlay/locationStrategies'\nimport type { VTextFieldSlots } from '@/components/VTextField/VTextField'\n\n// Types\nexport type VDateInputActionsSlot = {\n save: () => void\n cancel: () => void\n isPristine: boolean\n}\n\nexport type VDateInputSlots = Omit<VTextFieldSlots, 'default'> & {\n actions: VDateInputActionsSlot\n default: never\n}\n\nexport const makeVDateInputProps = propsFactory({\n displayFormat: [Function, String],\n location: {\n type: String as PropType<StrategyProps['location']>,\n default: 'bottom start',\n },\n\n ...makeFocusProps(),\n ...makeVConfirmEditProps({\n hideActions: true,\n }),\n ...makeVTextFieldProps({\n placeholder: 'mm/dd/yyyy',\n prependIcon: '$calendar',\n }),\n ...omit(makeVDatePickerProps({\n hideHeader: true,\n showAdjacentMonths: true,\n }), ['active', 'location', 'rounded']),\n}, 'VDateInput')\n\nexport const VDateInput = genericComponent<VDateInputSlots>()({\n name: 'VDateInput',\n\n props: makeVDateInputProps(),\n\n emits: {\n save: (value: string) => true,\n cancel: () => true,\n 'update:modelValue': (val: string) => true,\n },\n\n setup (props, { emit, slots }) {\n const { t } = useLocale()\n const adapter = useDate()\n const { isFocused, focus, blur } = useFocus(props)\n const model = useProxiedModel(\n props,\n 'modelValue',\n props.multiple ? [] : null,\n val => Array.isArray(val) ? val.map(item => adapter.toJsDate(item)) : val ? adapter.toJsDate(val) : val,\n val => Array.isArray(val) ? val.map(item => adapter.date(item)) : val ? adapter.date(val) : val\n )\n\n const menu = shallowRef(false)\n const vDateInputRef = ref()\n\n function format (date: unknown) {\n if (typeof props.displayFormat === 'function') {\n return props.displayFormat(date)\n }\n\n return adapter.format(date, props.displayFormat ?? 'keyboardDate')\n }\n\n const display = computed(() => {\n const value = wrapInArray(model.value)\n\n if (!value.length) return null\n\n if (props.multiple === true) {\n return t('$vuetify.datePicker.itemsSelected', value.length)\n }\n\n if (props.multiple === 'range') {\n const start = value[0]\n const end = value[value.length - 1]\n\n if (!adapter.isValid(start) || !adapter.isValid(end)) return ''\n\n return `${format(adapter.date(start))} - ${format(adapter.date(end))}`\n }\n\n return adapter.isValid(model.value) ? format(adapter.date(model.value)) : ''\n })\n\n const isInteractive = computed(() => !props.disabled && !props.readonly)\n\n function onKeydown (e: KeyboardEvent) {\n if (e.key !== 'Enter') return\n\n if (!menu.value || !isFocused.value) {\n menu.value = true\n\n return\n }\n\n const target = e.target as HTMLInputElement\n\n model.value = target.value === '' ? null : target.value\n }\n\n function onClick (e: MouseEvent) {\n e.preventDefault()\n e.stopPropagation()\n\n menu.value = true\n }\n\n function onCancel () {\n emit('cancel')\n menu.value = false\n }\n\n function onSave (value: string) {\n emit('save', value)\n menu.value = false\n }\n\n function onUpdateDisplayModel (value: string) {\n if (value != null) return\n\n model.value = null\n }\n\n useRender(() => {\n const confirmEditProps = VConfirmEdit.filterProps(props)\n const datePickerProps = VDatePicker.filterProps(omit(props, ['active', 'location', 'rounded']))\n const textFieldProps = VTextField.filterProps(props)\n\n return (\n <VTextField\n ref={ vDateInputRef }\n { ...textFieldProps }\n class={ props.class }\n style={ props.style }\n modelValue={ display.value }\n onKeydown={ isInteractive.value ? onKeydown : undefined }\n focused={ menu.value || isFocused.value }\n onFocus={ focus }\n onBlur={ blur }\n onClick:control={ isInteractive.value ? onClick : undefined }\n onClick:prepend={ isInteractive.value ? onClick : undefined }\n onUpdate:modelValue={ onUpdateDisplayModel }\n >\n {{\n ...slots,\n default: () => (\n <>\n <VMenu\n v-model={ menu.value }\n activator=\"parent\"\n min-width=\"0\"\n eager={ isFocused.value }\n location={ props.location }\n closeOnContentClick={ false }\n openOnClick={ false }\n >\n <VConfirmEdit\n { ...confirmEditProps }\n v-model={ model.value }\n onSave={ onSave }\n onCancel={ onCancel }\n >\n {{\n default: ({ actions, model: proxyModel, save, cancel, isPristine }) => {\n function onUpdateModel (value: string) {\n if (!props.hideActions) {\n proxyModel.value = value\n } else {\n model.value = value\n\n if (!props.multiple) {\n menu.value = false\n }\n }\n\n emit('save', value)\n vDateInputRef.value?.blur()\n }\n\n return (\n <VDatePicker\n { ...datePickerProps }\n modelValue={ props.hideActions ? model.value : proxyModel.value }\n onUpdate:modelValue={ value => onUpdateModel(value) }\n onMousedown={ (e: MouseEvent) => e.preventDefault() }\n >\n {{\n actions: !props.hideActions ? () => slots.actions?.({ save, cancel, isPristine }) ?? actions() : undefined,\n }}\n </VDatePicker>\n )\n },\n }}\n </VConfirmEdit>\n </VMenu>\n\n { slots.default?.() }\n </>\n ),\n }}\n </VTextField>\n )\n })\n\n return forwardRefs({}, vDateInputRef)\n },\n})\n\nexport type VDateInput = InstanceType<typeof VDateInput>\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"VDateInput.js","names":["makeVConfirmEditProps","VConfirmEdit","makeVDatePickerProps","VDatePicker","VMenu","makeVTextFieldProps","VTextField","useDate","makeDisplayProps","useDisplay","makeFocusProps","useFocus","forwardRefs","useLocale","useProxiedModel","computed","ref","shallowRef","watch","genericComponent","omit","propsFactory","useRender","wrapInArray","makeVDateInputProps","displayFormat","Function","String","location","type","default","hideActions","placeholder","prependIcon","hideHeader","showAdjacentMonths","VDateInput","name","props","emits","save","value","cancel","val","setup","_ref","emit","slots","t","adapter","mobile","isFocused","focus","blur","model","multiple","Array","isArray","map","item","toJsDate","date","menu","isEditingInput","vDateInputRef","disabledActions","format","display","length","start","end","isValid","inputmode","undefined","isInteractive","disabled","readonly","isReadonly","onKeydown","e","key","target","onClick","preventDefault","stopPropagation","onCancel","onSave","onUpdateDisplayModel","onUpdateMenuModel","isMenuOpen","onBlur","confirmEditProps","filterProps","datePickerProps","textFieldProps","_createVNode","_mergeProps","class","style","_Fragment","$event","_ref2","actions","proxyModel","isPristine","onUpdateModel"],"sources":["../../../src/labs/VDateInput/VDateInput.tsx"],"sourcesContent":["// Components\nimport { makeVConfirmEditProps, VConfirmEdit } from '@/components/VConfirmEdit/VConfirmEdit'\nimport { makeVDatePickerProps, VDatePicker } from '@/components/VDatePicker/VDatePicker'\nimport { VMenu } from '@/components/VMenu/VMenu'\nimport { makeVTextFieldProps, VTextField } from '@/components/VTextField/VTextField'\n\n// Composables\nimport { useDate } from '@/composables/date'\nimport { makeDisplayProps, useDisplay } from '@/composables/display'\nimport { makeFocusProps, useFocus } from '@/composables/focus'\nimport { forwardRefs } from '@/composables/forwardRefs'\nimport { useLocale } from '@/composables/locale'\nimport { useProxiedModel } from '@/composables/proxiedModel'\n\n// Utilities\nimport { computed, ref, shallowRef, watch } from 'vue'\nimport { genericComponent, omit, propsFactory, useRender, wrapInArray } from '@/util'\n\n// Types\nimport type { PropType } from 'vue'\nimport type { StrategyProps } from '@/components/VOverlay/locationStrategies'\nimport type { VTextFieldSlots } from '@/components/VTextField/VTextField'\n\n// Types\nexport type VDateInputActionsSlot = {\n save: () => void\n cancel: () => void\n isPristine: boolean\n}\n\nexport type VDateInputSlots = Omit<VTextFieldSlots, 'default'> & {\n actions: VDateInputActionsSlot\n default: never\n}\n\nexport const makeVDateInputProps = propsFactory({\n displayFormat: [Function, String],\n location: {\n type: String as PropType<StrategyProps['location']>,\n default: 'bottom start',\n },\n\n ...makeDisplayProps(),\n ...makeFocusProps(),\n ...makeVConfirmEditProps({\n hideActions: true,\n }),\n ...makeVTextFieldProps({\n placeholder: 'mm/dd/yyyy',\n prependIcon: '$calendar',\n }),\n ...omit(makeVDatePickerProps({\n hideHeader: true,\n showAdjacentMonths: true,\n }), ['active', 'location', 'rounded']),\n}, 'VDateInput')\n\nexport const VDateInput = genericComponent<VDateInputSlots>()({\n name: 'VDateInput',\n\n props: makeVDateInputProps(),\n\n emits: {\n save: (value: string) => true,\n cancel: () => true,\n 'update:modelValue': (val: string) => true,\n },\n\n setup (props, { emit, slots }) {\n const { t } = useLocale()\n const adapter = useDate()\n const { mobile } = useDisplay()\n const { isFocused, focus, blur } = useFocus(props)\n const model = useProxiedModel(\n props,\n 'modelValue',\n props.multiple ? [] : null,\n val => Array.isArray(val) ? val.map(item => adapter.toJsDate(item)) : val ? adapter.toJsDate(val) : val,\n val => Array.isArray(val) ? val.map(item => adapter.date(item)) : val ? adapter.date(val) : val\n )\n\n const menu = shallowRef(false)\n const isEditingInput = shallowRef(false)\n const vDateInputRef = ref()\n const disabledActions = ref<typeof VConfirmEdit['props']['disabled']>(['save'])\n\n function format (date: unknown) {\n if (typeof props.displayFormat === 'function') {\n return props.displayFormat(date)\n }\n\n return adapter.format(date, props.displayFormat ?? 'keyboardDate')\n }\n\n const display = computed(() => {\n const value = wrapInArray(model.value)\n\n if (!value.length) return null\n\n if (props.multiple === true) {\n return t('$vuetify.datePicker.itemsSelected', value.length)\n }\n\n if (props.multiple === 'range') {\n const start = value[0]\n const end = value[value.length - 1]\n\n if (!adapter.isValid(start) || !adapter.isValid(end)) return ''\n\n return `${format(adapter.date(start))} - ${format(adapter.date(end))}`\n }\n\n return adapter.isValid(model.value) ? format(adapter.date(model.value)) : ''\n })\n\n const inputmode = computed(() => {\n if (!mobile.value) return undefined\n if (isEditingInput.value) return 'text'\n\n return 'none'\n })\n\n const isInteractive = computed(() => !props.disabled && !props.readonly)\n const isReadonly = computed(() => !(mobile.value && isEditingInput.value) && props.readonly)\n\n watch(menu, val => {\n if (val) return\n\n isEditingInput.value = false\n disabledActions.value = ['save']\n })\n\n function onKeydown (e: KeyboardEvent) {\n if (e.key !== 'Enter') return\n\n if (!menu.value || !isFocused.value) {\n menu.value = true\n\n return\n }\n\n const target = e.target as HTMLInputElement\n\n model.value = target.value === '' ? null : target.value\n }\n\n function onClick (e: MouseEvent) {\n e.preventDefault()\n e.stopPropagation()\n\n if (menu.value && mobile.value) {\n isEditingInput.value = true\n } else {\n menu.value = true\n }\n }\n\n function onCancel () {\n emit('cancel')\n menu.value = false\n isEditingInput.value = false\n }\n\n function onSave (value: string) {\n emit('save', value)\n menu.value = false\n }\n\n function onUpdateDisplayModel (value: string) {\n if (value != null) return\n\n model.value = null\n }\n\n function onUpdateMenuModel (isMenuOpen: boolean) {\n if (isMenuOpen) return\n\n isEditingInput.value = false\n }\n\n function onBlur () {\n blur()\n\n // When in mobile mode and editing is done (due to keyboard dismissal), close the menu\n if (mobile.value && isEditingInput.value && !isFocused.value) {\n menu.value = false\n isEditingInput.value = false\n }\n }\n\n useRender(() => {\n const confirmEditProps = VConfirmEdit.filterProps(props)\n const datePickerProps = VDatePicker.filterProps(omit(props, ['active', 'location', 'rounded']))\n const textFieldProps = VTextField.filterProps(props)\n\n return (\n <VTextField\n ref={ vDateInputRef }\n { ...textFieldProps }\n class={ props.class }\n style={ props.style }\n modelValue={ display.value }\n inputmode={ inputmode.value }\n readonly={ isReadonly.value }\n onKeydown={ isInteractive.value ? onKeydown : undefined }\n focused={ menu.value || isFocused.value }\n onFocus={ focus }\n onBlur={ onBlur }\n onClick:control={ isInteractive.value ? onClick : undefined }\n onClick:prepend={ isInteractive.value ? onClick : undefined }\n onUpdate:modelValue={ onUpdateDisplayModel }\n >\n {{\n ...slots,\n default: () => (\n <>\n <VMenu\n v-model={ menu.value }\n activator=\"parent\"\n min-width=\"0\"\n eager={ isFocused.value }\n location={ props.location }\n closeOnContentClick={ false }\n openOnClick={ false }\n onUpdate:modelValue={ onUpdateMenuModel }\n >\n <VConfirmEdit\n { ...confirmEditProps }\n v-model={ model.value }\n disabled={ disabledActions.value }\n onSave={ onSave }\n onCancel={ onCancel }\n >\n {{\n default: ({ actions, model: proxyModel, save, cancel, isPristine }) => {\n function onUpdateModel (value: string) {\n if (!props.hideActions) {\n proxyModel.value = value\n } else {\n model.value = value\n\n if (!props.multiple) {\n menu.value = false\n }\n }\n\n emit('save', value)\n vDateInputRef.value?.blur()\n\n disabledActions.value = []\n }\n\n return (\n <VDatePicker\n { ...datePickerProps }\n modelValue={ props.hideActions ? model.value : proxyModel.value }\n onUpdate:modelValue={ value => onUpdateModel(value) }\n onMousedown={ (e: MouseEvent) => e.preventDefault() }\n >\n {{\n actions: !props.hideActions ? () => slots.actions?.({ save, cancel, isPristine }) ?? actions() : undefined,\n }}\n </VDatePicker>\n )\n },\n }}\n </VConfirmEdit>\n </VMenu>\n\n { slots.default?.() }\n </>\n ),\n }}\n </VTextField>\n )\n })\n\n return forwardRefs({}, vDateInputRef)\n },\n})\n\nexport type VDateInput = InstanceType<typeof VDateInput>\n"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,178 @@
1
+ .v-icon-btn {
2
+ border-color: rgba(var(--v-border-color), var(--v-border-opacity));
3
+ border-style: solid;
4
+ border-width: 0;
5
+ }
6
+ .v-icon-btn--border {
7
+ border-width: thin;
8
+ box-shadow: none;
9
+ }
10
+ .v-icon-btn {
11
+ border-radius: 50%;
12
+ }
13
+ .v-icon-btn:hover > .v-icon-btn__overlay {
14
+ opacity: calc(var(--v-hover-opacity) * var(--v-theme-overlay-multiplier));
15
+ }
16
+ .v-icon-btn:focus-visible > .v-icon-btn__overlay {
17
+ opacity: calc(var(--v-focus-opacity) * var(--v-theme-overlay-multiplier));
18
+ }
19
+ @supports not selector(:focus-visible) {
20
+ .v-icon-btn:focus > .v-icon-btn__overlay {
21
+ opacity: calc(var(--v-focus-opacity) * var(--v-theme-overlay-multiplier));
22
+ }
23
+ }
24
+ .v-icon-btn--active > .v-icon-btn__overlay, .v-icon-btn[aria-haspopup=menu][aria-expanded=true] > .v-icon-btn__overlay {
25
+ opacity: calc(var(--v-activated-opacity) * var(--v-theme-overlay-multiplier));
26
+ }
27
+ .v-icon-btn--active:hover > .v-icon-btn__overlay, .v-icon-btn[aria-haspopup=menu][aria-expanded=true]:hover > .v-icon-btn__overlay {
28
+ opacity: calc((var(--v-activated-opacity) + var(--v-hover-opacity)) * var(--v-theme-overlay-multiplier));
29
+ }
30
+ .v-icon-btn--active:focus-visible > .v-icon-btn__overlay, .v-icon-btn[aria-haspopup=menu][aria-expanded=true]:focus-visible > .v-icon-btn__overlay {
31
+ opacity: calc((var(--v-activated-opacity) + var(--v-focus-opacity)) * var(--v-theme-overlay-multiplier));
32
+ }
33
+ @supports not selector(:focus-visible) {
34
+ .v-icon-btn--active:focus > .v-icon-btn__overlay, .v-icon-btn[aria-haspopup=menu][aria-expanded=true]:focus > .v-icon-btn__overlay {
35
+ opacity: calc((var(--v-activated-opacity) + var(--v-focus-opacity)) * var(--v-theme-overlay-multiplier));
36
+ }
37
+ }
38
+ .v-icon-btn--variant-plain, .v-icon-btn--variant-outlined, .v-icon-btn--variant-text, .v-icon-btn--variant-tonal {
39
+ background: transparent;
40
+ color: inherit;
41
+ }
42
+ .v-icon-btn--variant-plain {
43
+ opacity: 0.62;
44
+ }
45
+ .v-icon-btn--variant-plain:focus, .v-icon-btn--variant-plain:hover {
46
+ opacity: 1;
47
+ }
48
+ .v-icon-btn--variant-plain .v-icon-btn__overlay {
49
+ display: none;
50
+ }
51
+ .v-icon-btn--variant-elevated, .v-icon-btn--variant-flat {
52
+ background: rgb(var(--v-theme-surface));
53
+ color: inherit;
54
+ }
55
+ .v-icon-btn--variant-elevated {
56
+ box-shadow: 0px 3px 1px -2px var(--v-shadow-key-umbra-opacity, rgba(0, 0, 0, 0.2)), 0px 2px 2px 0px var(--v-shadow-key-penumbra-opacity, rgba(0, 0, 0, 0.14)), 0px 1px 5px 0px var(--v-shadow-key-ambient-opacity, rgba(0, 0, 0, 0.12));
57
+ }
58
+ .v-icon-btn--variant-flat {
59
+ box-shadow: 0px 0px 0px 0px var(--v-shadow-key-umbra-opacity, rgba(0, 0, 0, 0.2)), 0px 0px 0px 0px var(--v-shadow-key-penumbra-opacity, rgba(0, 0, 0, 0.14)), 0px 0px 0px 0px var(--v-shadow-key-ambient-opacity, rgba(0, 0, 0, 0.12));
60
+ }
61
+ .v-icon-btn--variant-outlined {
62
+ border: thin solid currentColor;
63
+ }
64
+ .v-icon-btn--variant-text .v-icon-btn__overlay {
65
+ background: currentColor;
66
+ }
67
+ .v-icon-btn--variant-tonal .v-icon-btn__underlay {
68
+ background: currentColor;
69
+ opacity: var(--v-activated-opacity);
70
+ border-radius: inherit;
71
+ top: 0;
72
+ right: 0;
73
+ bottom: 0;
74
+ left: 0;
75
+ pointer-events: none;
76
+ }
77
+ .v-icon-btn .v-icon-btn__underlay {
78
+ position: absolute;
79
+ }
80
+ .v-icon-btn {
81
+ align-items: center;
82
+ cursor: pointer;
83
+ display: inline-flex;
84
+ flex: none;
85
+ font-size: 0.875rem;
86
+ font-weight: 500;
87
+ height: var(--v-icon-btn-height);
88
+ justify-content: center;
89
+ outline: none;
90
+ position: relative;
91
+ transition-property: width, height, transform;
92
+ transition: 0.2s cubic-bezier(0.4, 0, 0.2, 1);
93
+ vertical-align: middle;
94
+ width: var(--v-icon-btn-width);
95
+ }
96
+ @supports selector(:focus-visible) {
97
+ .v-icon-btn::after {
98
+ pointer-events: none;
99
+ border: 2px solid currentColor;
100
+ border-radius: inherit;
101
+ opacity: 0;
102
+ transition: opacity 0.2s ease-in-out;
103
+ }
104
+ .v-icon-btn::after {
105
+ content: "";
106
+ position: absolute;
107
+ top: 0;
108
+ left: 0;
109
+ width: 100%;
110
+ height: 100%;
111
+ }
112
+ .v-icon-btn:focus-visible::after {
113
+ opacity: calc(0.25 * var(--v-theme-overlay-multiplier));
114
+ }
115
+ }
116
+ .v-icon-btn--disabled, .v-icon-btn--loading, .v-icon-btn--readonly {
117
+ pointer-events: none;
118
+ }
119
+ .v-icon-btn--disabled {
120
+ opacity: 0.26;
121
+ }
122
+ .v-icon-btn--start {
123
+ margin-inline-end: 8px;
124
+ }
125
+ .v-icon-btn--end {
126
+ margin-inline-start: 8px;
127
+ }
128
+
129
+ .v-icon-btn__content {
130
+ align-items: center;
131
+ justify-content: center;
132
+ display: inline-flex;
133
+ transition: inherit;
134
+ transition-property: transform;
135
+ transform: rotate(var(--v-icon-btn-rotate, 0deg));
136
+ }
137
+ .v-icon-btn--loading .v-icon-btn__content {
138
+ opacity: 0;
139
+ }
140
+ .v-icon-btn__content .v-icon {
141
+ transition: 0.2s cubic-bezier(0.4, 0, 0.2, 1);
142
+ transition-property: opacity, font-size, width, height;
143
+ transform-origin: center;
144
+ }
145
+
146
+ .v-icon-btn__loader {
147
+ align-items: center;
148
+ display: flex;
149
+ height: 100%;
150
+ justify-content: center;
151
+ left: 0;
152
+ position: absolute;
153
+ top: 0;
154
+ width: 100%;
155
+ }
156
+
157
+ .v-icon-btn__overlay,
158
+ .v-icon-btn__underlay {
159
+ border-radius: inherit;
160
+ pointer-events: none;
161
+ }
162
+ .v-icon-btn__overlay,
163
+ .v-icon-btn__underlay {
164
+ position: absolute;
165
+ top: 0;
166
+ left: 0;
167
+ width: 100%;
168
+ height: 100%;
169
+ }
170
+
171
+ .v-icon-btn__overlay {
172
+ background-color: currentColor;
173
+ opacity: 0;
174
+ transition: opacity 0.2s ease-in-out;
175
+ }
176
+ .v-icon-btn--active:not(:hover) .v-icon-btn__overlay {
177
+ --v-activated-opacity: 0;
178
+ }