@vuetify/nightly 3.8.4-master.2025-05-12 → 3.8.5-dev.2025-05-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.
Files changed (101) hide show
  1. package/CHANGELOG.md +20 -12
  2. package/dist/_component-variables-labs.sass +1 -0
  3. package/dist/json/attributes.json +2152 -1792
  4. package/dist/json/importMap-labs.json +40 -36
  5. package/dist/json/importMap.json +106 -106
  6. package/dist/json/tags.json +95 -0
  7. package/dist/json/web-types.json +5016 -3760
  8. package/dist/vuetify-labs.cjs +429 -61
  9. package/dist/vuetify-labs.css +4205 -4149
  10. package/dist/vuetify-labs.d.ts +2274 -1142
  11. package/dist/vuetify-labs.esm.js +430 -62
  12. package/dist/vuetify-labs.esm.js.map +1 -1
  13. package/dist/vuetify-labs.js +429 -61
  14. package/dist/vuetify-labs.min.css +2 -2
  15. package/dist/vuetify.cjs +151 -41
  16. package/dist/vuetify.cjs.map +1 -1
  17. package/dist/vuetify.css +4725 -4672
  18. package/dist/vuetify.d.ts +544 -487
  19. package/dist/vuetify.esm.js +152 -42
  20. package/dist/vuetify.esm.js.map +1 -1
  21. package/dist/vuetify.js +151 -41
  22. package/dist/vuetify.js.map +1 -1
  23. package/dist/vuetify.min.css +2 -2
  24. package/dist/vuetify.min.js +1181 -1173
  25. package/dist/vuetify.min.js.map +1 -1
  26. package/lib/components/VAlert/VAlert.css +6 -1
  27. package/lib/components/VAlert/VAlert.d.ts +35 -0
  28. package/lib/components/VAlert/VAlert.js +14 -9
  29. package/lib/components/VAlert/VAlert.js.map +1 -1
  30. package/lib/components/VAlert/VAlert.sass +7 -1
  31. package/lib/components/VAutocomplete/VAutocomplete.d.ts +94 -94
  32. package/lib/components/VBottomSheet/VBottomSheet.css +1 -1
  33. package/lib/components/VBottomSheet/VBottomSheet.sass +1 -1
  34. package/lib/components/VBtn/VBtn.css +25 -0
  35. package/lib/components/VBtn/VBtn.sass +9 -0
  36. package/lib/components/VBtn/_variables.scss +1 -0
  37. package/lib/components/VBtnGroup/VBtnGroup.css +30 -7
  38. package/lib/components/VBtnGroup/VBtnGroup.d.ts +58 -32
  39. package/lib/components/VBtnGroup/VBtnGroup.js +7 -3
  40. package/lib/components/VBtnGroup/VBtnGroup.js.map +1 -1
  41. package/lib/components/VBtnGroup/VBtnGroup.sass +44 -17
  42. package/lib/components/VBtnToggle/VBtnToggle.d.ts +25 -0
  43. package/lib/components/VCheckbox/VCheckbox.d.ts +3 -3
  44. package/lib/components/VCombobox/VCombobox.d.ts +94 -94
  45. package/lib/components/VField/VField.d.ts +3 -3
  46. package/lib/components/VFileInput/VFileInput.d.ts +15 -15
  47. package/lib/components/VInput/VInput.d.ts +4 -4
  48. package/lib/components/VNumberInput/VNumberInput.d.ts +89 -89
  49. package/lib/components/VOverlay/VOverlay.css +1 -1
  50. package/lib/components/VOverlay/_variables.scss +1 -1
  51. package/lib/components/VRadioGroup/VRadioGroup.d.ts +3 -3
  52. package/lib/components/VRangeSlider/VRangeSlider.d.ts +3 -3
  53. package/lib/components/VSelect/VSelect.d.ts +94 -94
  54. package/lib/components/VSlider/VSlider.d.ts +3 -3
  55. package/lib/components/VSnackbarQueue/VSnackbarQueue.d.ts +3 -1
  56. package/lib/components/VSnackbarQueue/VSnackbarQueue.js.map +1 -1
  57. package/lib/components/VSwitch/VSwitch.d.ts +3 -3
  58. package/lib/components/VTextField/VTextField.d.ts +27 -27
  59. package/lib/components/VTextarea/VTextarea.d.ts +15 -15
  60. package/lib/composables/calendar.d.ts +1 -0
  61. package/lib/composables/calendar.js.map +1 -1
  62. package/lib/composables/dateFormat.d.ts +24 -0
  63. package/lib/composables/dateFormat.js +112 -0
  64. package/lib/composables/dateFormat.js.map +1 -0
  65. package/lib/composables/iconSizes.d.ts +28 -0
  66. package/lib/composables/iconSizes.js +23 -0
  67. package/lib/composables/iconSizes.js.map +1 -0
  68. package/lib/composables/theme.d.ts +6 -1
  69. package/lib/composables/theme.js +94 -26
  70. package/lib/composables/theme.js.map +1 -1
  71. package/lib/composables/virtual.js +6 -1
  72. package/lib/composables/virtual.js.map +1 -1
  73. package/lib/entry-bundler.js +1 -1
  74. package/lib/entry-bundler.js.map +1 -1
  75. package/lib/framework.d.ts +51 -43
  76. package/lib/framework.js +1 -1
  77. package/lib/framework.js.map +1 -1
  78. package/lib/iconsets/mdi.js +2 -1
  79. package/lib/iconsets/mdi.js.map +1 -1
  80. package/lib/labs/VColorInput/VColorInput.css +4 -0
  81. package/lib/labs/VColorInput/VColorInput.d.ts +1767 -0
  82. package/lib/labs/VColorInput/VColorInput.js +129 -0
  83. package/lib/labs/VColorInput/VColorInput.js.map +1 -0
  84. package/lib/labs/VColorInput/VColorInput.sass +7 -0
  85. package/lib/labs/VColorInput/_variables.scss +2 -0
  86. package/lib/labs/VColorInput/index.d.ts +1 -0
  87. package/lib/labs/VColorInput/index.js +2 -0
  88. package/lib/labs/VColorInput/index.js.map +1 -0
  89. package/lib/labs/VDateInput/VDateInput.d.ts +133 -108
  90. package/lib/labs/VDateInput/VDateInput.js +43 -10
  91. package/lib/labs/VDateInput/VDateInput.js.map +1 -1
  92. package/lib/labs/VIconBtn/VIconBtn.d.ts +29 -29
  93. package/lib/labs/VIconBtn/VIconBtn.js +7 -11
  94. package/lib/labs/VIconBtn/VIconBtn.js.map +1 -1
  95. package/lib/labs/components.d.ts +1 -0
  96. package/lib/labs/components.js +1 -0
  97. package/lib/labs/components.js.map +1 -1
  98. package/lib/util/globals.d.ts +1 -0
  99. package/lib/util/globals.js +1 -0
  100. package/lib/util/globals.js.map +1 -1
  101. package/package.json +2 -1
@@ -5,13 +5,14 @@ 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 { makeDateFormatProps, useDateFormat } from "../../composables/dateFormat.js";
8
9
  import { makeDisplayProps, useDisplay } from "../../composables/display.js";
9
10
  import { makeFocusProps, useFocus } from "../../composables/focus.js";
10
11
  import { forwardRefs } from "../../composables/forwardRefs.js";
11
12
  import { useLocale } from "../../composables/locale.js";
12
13
  import { useProxiedModel } from "../../composables/proxiedModel.js"; // Utilities
13
14
  import { computed, ref, shallowRef, watch } from 'vue';
14
- import { genericComponent, omit, propsFactory, useRender, wrapInArray } from "../../util/index.js"; // Types
15
+ import { createRange, genericComponent, omit, propsFactory, useRender, wrapInArray } from "../../util/index.js"; // Types
15
16
  // Types
16
17
  export const makeVDateInputProps = propsFactory({
17
18
  displayFormat: [Function, String],
@@ -19,10 +20,12 @@ export const makeVDateInputProps = propsFactory({
19
20
  type: String,
20
21
  default: 'bottom start'
21
22
  },
23
+ menu: Boolean,
22
24
  updateOn: {
23
25
  type: Array,
24
26
  default: () => ['blur', 'enter']
25
27
  },
28
+ ...makeDateFormatProps(),
26
29
  ...makeDisplayProps({
27
30
  mobile: null
28
31
  }),
@@ -31,7 +34,6 @@ export const makeVDateInputProps = propsFactory({
31
34
  hideActions: true
32
35
  }),
33
36
  ...makeVTextFieldProps({
34
- placeholder: 'mm/dd/yyyy',
35
37
  prependIcon: '$calendar'
36
38
  }),
37
39
  ...omit(makeVDatePickerProps({
@@ -45,7 +47,8 @@ export const VDateInput = genericComponent()({
45
47
  emits: {
46
48
  save: value => true,
47
49
  cancel: () => true,
48
- 'update:modelValue': val => true
50
+ 'update:modelValue': val => true,
51
+ 'update:menu': val => true
49
52
  },
50
53
  setup(props, _ref) {
51
54
  let {
@@ -53,9 +56,16 @@ export const VDateInput = genericComponent()({
53
56
  slots
54
57
  } = _ref;
55
58
  const {
56
- t
59
+ t,
60
+ current: currentLocale
57
61
  } = useLocale();
58
62
  const adapter = useDate();
63
+ const {
64
+ isValid,
65
+ parseDate,
66
+ formatDate,
67
+ parserFormat
68
+ } = useDateFormat(props, currentLocale);
59
69
  const {
60
70
  mobile
61
71
  } = useDisplay(props);
@@ -66,7 +76,7 @@ export const VDateInput = genericComponent()({
66
76
  } = useFocus(props);
67
77
  const emptyModelValue = () => props.multiple ? [] : null;
68
78
  const model = useProxiedModel(props, 'modelValue', emptyModelValue(), 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);
69
- const menu = shallowRef(false);
79
+ const menu = useProxiedModel(props, 'menu');
70
80
  const isEditingInput = shallowRef(false);
71
81
  const vTextFieldRef = ref();
72
82
  const disabledActions = ref(['save']);
@@ -74,7 +84,10 @@ export const VDateInput = genericComponent()({
74
84
  if (typeof props.displayFormat === 'function') {
75
85
  return props.displayFormat(date);
76
86
  }
77
- return adapter.format(date, props.displayFormat ?? 'keyboardDate');
87
+ if (props.displayFormat) {
88
+ return adapter.format(date, props.displayFormat ?? 'keyboardDate');
89
+ }
90
+ return formatDate(date);
78
91
  }
79
92
  const display = computed(() => {
80
93
  const value = wrapInArray(model.value);
@@ -109,7 +122,6 @@ export const VDateInput = genericComponent()({
109
122
  if (e.key !== 'Enter') return;
110
123
  if (!menu.value || !isFocused.value) {
111
124
  menu.value = true;
112
- return;
113
125
  }
114
126
  if (props.updateOn.includes('enter')) {
115
127
  onUserInput(e.target);
@@ -153,13 +165,32 @@ export const VDateInput = genericComponent()({
153
165
  let {
154
166
  value
155
167
  } = _ref2;
156
- if (value && !adapter.isValid(value)) return;
157
- model.value = !value ? emptyModelValue() : value;
168
+ if (!value.trim()) {
169
+ model.value = emptyModelValue();
170
+ } else if (!props.multiple) {
171
+ if (isValid(value)) {
172
+ model.value = parseDate(value);
173
+ }
174
+ } else {
175
+ const parts = value.trim().split(/\D+-\D+|[^\d\-/.]+/);
176
+ if (parts.every(isValid)) {
177
+ if (props.multiple === 'range') {
178
+ model.value = getRange(parts);
179
+ } else {
180
+ model.value = parts.map(parseDate);
181
+ }
182
+ }
183
+ }
184
+ }
185
+ function getRange(inputDates) {
186
+ const [start, stop] = inputDates.map(parseDate).toSorted((a, b) => adapter.isAfter(a, b) ? 1 : -1);
187
+ const diff = adapter.getDiff(stop ?? start, start, 'days');
188
+ return [start, ...createRange(diff, 1).map(i => adapter.addDays(start, i))];
158
189
  }
159
190
  useRender(() => {
160
191
  const confirmEditProps = VConfirmEdit.filterProps(props);
161
192
  const datePickerProps = VDatePicker.filterProps(omit(props, ['active', 'location', 'rounded']));
162
- const textFieldProps = VTextField.filterProps(props);
193
+ const textFieldProps = VTextField.filterProps(omit(props, ['placeholder']));
163
194
  return _createVNode(VTextField, _mergeProps({
164
195
  "ref": vTextFieldRef
165
196
  }, textFieldProps, {
@@ -167,11 +198,13 @@ export const VDateInput = genericComponent()({
167
198
  "style": props.style,
168
199
  "modelValue": display.value,
169
200
  "inputmode": inputmode.value,
201
+ "placeholder": props.placeholder ?? parserFormat.value,
170
202
  "readonly": isReadonly.value,
171
203
  "onKeydown": isInteractive.value ? onKeydown : undefined,
172
204
  "focused": menu.value || isFocused.value,
173
205
  "onFocus": focus,
174
206
  "onBlur": onBlur,
207
+ "validationValue": model.value,
175
208
  "onClick:control": isInteractive.value ? onClick : undefined,
176
209
  "onClick:prepend": isInteractive.value ? onClick : undefined,
177
210
  "onUpdate:modelValue": onUpdateDisplayModel
@@ -1 +1 @@
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","updateOn","Array","mobile","hideActions","placeholder","prependIcon","hideHeader","showAdjacentMonths","VDateInput","name","props","emits","save","value","cancel","val","setup","_ref","emit","slots","t","adapter","isFocused","focus","blur","emptyModelValue","multiple","model","isArray","map","item","toJsDate","date","menu","isEditingInput","vTextFieldRef","disabledActions","format","display","length","start","end","isValid","inputmode","undefined","isInteractive","disabled","readonly","isReadonly","onKeydown","e","key","includes","onUserInput","target","onClick","preventDefault","stopPropagation","onCancel","onSave","onUpdateDisplayModel","onBlur","_ref2","confirmEditProps","filterProps","datePickerProps","textFieldProps","_createVNode","_mergeProps","class","style","_Fragment","$event","_ref3","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 updateOn: {\n type: Array as PropType<('blur' | 'enter')[]>,\n default: () => ['blur', 'enter'],\n },\n\n ...makeDisplayProps({\n mobile: null,\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 { mobile } = useDisplay(props)\n const { isFocused, focus, blur } = useFocus(props)\n\n const emptyModelValue = () => props.multiple ? [] : null\n\n const model = useProxiedModel(\n props,\n 'modelValue',\n emptyModelValue(),\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 vTextFieldRef = ref<VTextField>()\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\n const isReadonly = computed(() => {\n if (!props.updateOn.length) return true\n\n return !(mobile.value && isEditingInput.value) && props.readonly\n })\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 return\n }\n\n if (props.updateOn.includes('enter')) {\n onUserInput(e.target as HTMLInputElement)\n }\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: unknown) {\n if (value != null) return\n\n model.value = emptyModelValue()\n }\n\n function onBlur (e: FocusEvent) {\n if (props.updateOn.includes('blur')) {\n onUserInput(e.target as HTMLInputElement)\n }\n\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 function onUserInput ({ value }: HTMLInputElement) {\n if (value && !adapter.isValid(value)) return\n\n model.value = !value ? emptyModelValue() : value\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={ vTextFieldRef }\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 >\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\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({}, vTextFieldRef)\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","makeDateFormatProps","useDateFormat","makeDisplayProps","useDisplay","makeFocusProps","useFocus","forwardRefs","useLocale","useProxiedModel","computed","ref","shallowRef","watch","createRange","genericComponent","omit","propsFactory","useRender","wrapInArray","makeVDateInputProps","displayFormat","Function","String","location","type","default","menu","Boolean","updateOn","Array","mobile","hideActions","prependIcon","hideHeader","showAdjacentMonths","VDateInput","name","props","emits","save","value","cancel","val","setup","_ref","emit","slots","t","current","currentLocale","adapter","isValid","parseDate","formatDate","parserFormat","isFocused","focus","blur","emptyModelValue","multiple","model","isArray","map","item","toJsDate","date","isEditingInput","vTextFieldRef","disabledActions","format","display","length","start","end","inputmode","undefined","isInteractive","disabled","readonly","isReadonly","onKeydown","e","key","includes","onUserInput","target","onClick","preventDefault","stopPropagation","onCancel","onSave","onUpdateDisplayModel","onBlur","_ref2","trim","parts","split","every","getRange","inputDates","stop","toSorted","a","b","isAfter","diff","getDiff","i","addDays","confirmEditProps","filterProps","datePickerProps","textFieldProps","_createVNode","_mergeProps","class","style","placeholder","_Fragment","$event","_ref3","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 { makeDateFormatProps, useDateFormat } from '@/composables/dateFormat'\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 { createRange, 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 menu: Boolean,\n updateOn: {\n type: Array as PropType<('blur' | 'enter')[]>,\n default: () => ['blur', 'enter'],\n },\n\n ...makeDateFormatProps(),\n ...makeDisplayProps({\n mobile: null,\n }),\n ...makeFocusProps(),\n ...makeVConfirmEditProps({\n hideActions: true,\n }),\n ...makeVTextFieldProps({\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 'update:menu': (val: boolean) => true,\n },\n\n setup (props, { emit, slots }) {\n const { t, current: currentLocale } = useLocale()\n const adapter = useDate()\n const { isValid, parseDate, formatDate, parserFormat } = useDateFormat(props, currentLocale)\n const { mobile } = useDisplay(props)\n const { isFocused, focus, blur } = useFocus(props)\n\n const emptyModelValue = () => props.multiple ? [] : null\n\n const model = useProxiedModel(\n props,\n 'modelValue',\n emptyModelValue(),\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 = useProxiedModel(props, 'menu')\n const isEditingInput = shallowRef(false)\n const vTextFieldRef = ref<VTextField>()\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 if (props.displayFormat) {\n return adapter.format(date, props.displayFormat ?? 'keyboardDate')\n }\n return formatDate(date)\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\n const isReadonly = computed(() => {\n if (!props.updateOn.length) return true\n\n return !(mobile.value && isEditingInput.value) && props.readonly\n })\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\n if (props.updateOn.includes('enter')) {\n onUserInput(e.target as HTMLInputElement)\n }\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: unknown) {\n if (value != null) return\n\n model.value = emptyModelValue()\n }\n\n function onBlur (e: FocusEvent) {\n if (props.updateOn.includes('blur')) {\n onUserInput(e.target as HTMLInputElement)\n }\n\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 function onUserInput ({ value }: HTMLInputElement) {\n if (!value.trim()) {\n model.value = emptyModelValue()\n } else if (!props.multiple) {\n if (isValid(value)) {\n model.value = parseDate(value)\n }\n } else {\n const parts = value.trim().split(/\\D+-\\D+|[^\\d\\-/.]+/)\n if (parts.every(isValid)) {\n if (props.multiple === 'range') {\n model.value = getRange(parts)\n } else {\n model.value = parts.map(parseDate)\n }\n }\n }\n }\n\n function getRange (inputDates: string[]) {\n const [start, stop] = inputDates.map(parseDate).toSorted((a, b) => adapter.isAfter(a, b) ? 1 : -1)\n const diff = adapter.getDiff(stop ?? start, start, 'days')\n return [start, ...createRange(diff, 1)\n .map(i => adapter.addDays(start, i))]\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(omit(props, ['placeholder']))\n\n return (\n <VTextField\n ref={ vTextFieldRef }\n { ...textFieldProps }\n class={ props.class }\n style={ props.style }\n modelValue={ display.value }\n inputmode={ inputmode.value }\n placeholder={ props.placeholder ?? parserFormat.value }\n readonly={ isReadonly.value }\n onKeydown={ isInteractive.value ? onKeydown : undefined }\n focused={ menu.value || isFocused.value }\n onFocus={ focus }\n onBlur={ onBlur }\n validationValue={ model.value }\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 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\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({}, vTextFieldRef)\n },\n})\n\nexport type VDateInput = InstanceType<typeof VDateInput>\n"],"mappings":"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","ignoreList":[]}
@@ -13,6 +13,8 @@ export declare const makeVIconBtnProps: <Defaults extends {
13
13
  tag?: unknown;
14
14
  rounded?: unknown;
15
15
  tile?: unknown;
16
+ iconSize?: unknown;
17
+ iconSizes?: unknown;
16
18
  elevation?: unknown;
17
19
  class?: unknown;
18
20
  style?: unknown;
@@ -28,8 +30,6 @@ export declare const makeVIconBtnProps: <Defaults extends {
28
30
  hideOverlay?: unknown;
29
31
  icon?: unknown;
30
32
  iconColor?: unknown;
31
- iconSize?: unknown;
32
- iconSizes?: unknown;
33
33
  loading?: unknown;
34
34
  opacity?: unknown;
35
35
  readonly?: unknown;
@@ -94,6 +94,20 @@ export declare const makeVIconBtnProps: <Defaults extends {
94
94
  type: PropType<unknown extends Defaults["tile"] ? boolean : boolean | Defaults["tile"]>;
95
95
  default: unknown extends Defaults["tile"] ? boolean : boolean | Defaults["tile"];
96
96
  };
97
+ iconSize: unknown extends Defaults["iconSize"] ? PropType<string | number> : {
98
+ type: PropType<unknown extends Defaults["iconSize"] ? string | number : string | number | Defaults["iconSize"]>;
99
+ default: unknown extends Defaults["iconSize"] ? string | number : NonNullable<string | number> | Defaults["iconSize"];
100
+ };
101
+ iconSizes: unknown extends Defaults["iconSizes"] ? {
102
+ type: PropType<[VIconBtnSizes, number][]>;
103
+ default: () => (string | number)[][];
104
+ } : Omit<{
105
+ type: PropType<[VIconBtnSizes, number][]>;
106
+ default: () => (string | number)[][];
107
+ }, "type" | "default"> & {
108
+ type: PropType<unknown extends Defaults["iconSizes"] ? [VIconBtnSizes, number][] : [VIconBtnSizes, number][] | Defaults["iconSizes"]>;
109
+ default: unknown extends Defaults["iconSizes"] ? [VIconBtnSizes, number][] : [VIconBtnSizes, number][] | Defaults["iconSizes"];
110
+ };
97
111
  elevation: unknown extends Defaults["elevation"] ? {
98
112
  type: (StringConstructor | NumberConstructor)[];
99
113
  validator(v: any): boolean;
@@ -178,20 +192,6 @@ export declare const makeVIconBtnProps: <Defaults extends {
178
192
  type: PropType<unknown extends Defaults["iconColor"] ? string : string | Defaults["iconColor"]>;
179
193
  default: unknown extends Defaults["iconColor"] ? string : string | Defaults["iconColor"];
180
194
  };
181
- iconSize: unknown extends Defaults["iconSize"] ? PropType<string | number> : {
182
- type: PropType<unknown extends Defaults["iconSize"] ? string | number : string | number | Defaults["iconSize"]>;
183
- default: unknown extends Defaults["iconSize"] ? string | number : NonNullable<string | number> | Defaults["iconSize"];
184
- };
185
- iconSizes: unknown extends Defaults["iconSizes"] ? {
186
- type: PropType<[VIconBtnSizes, number][]>;
187
- default: () => (string | number)[][];
188
- } : Omit<{
189
- type: PropType<[VIconBtnSizes, number][]>;
190
- default: () => (string | number)[][];
191
- }, "type" | "default"> & {
192
- type: PropType<unknown extends Defaults["iconSizes"] ? [VIconBtnSizes, number][] : [VIconBtnSizes, number][] | Defaults["iconSizes"]>;
193
- default: unknown extends Defaults["iconSizes"] ? [VIconBtnSizes, number][] : [VIconBtnSizes, number][] | Defaults["iconSizes"];
194
- };
195
195
  loading: unknown extends Defaults["loading"] ? BooleanConstructor : {
196
196
  type: PropType<unknown extends Defaults["loading"] ? boolean : boolean | Defaults["loading"]>;
197
197
  default: unknown extends Defaults["loading"] ? boolean : boolean | Defaults["loading"];
@@ -269,9 +269,9 @@ export declare const VIconBtn: {
269
269
  rounded?: string | number | boolean | undefined;
270
270
  activeColor?: string | undefined;
271
271
  iconColor?: string | undefined;
272
+ iconSize?: string | number | undefined;
272
273
  activeIcon?: IconValue | undefined;
273
274
  activeVariant?: "flat" | "text" | "elevated" | "tonal" | "outlined" | "plain" | undefined;
274
- iconSize?: string | number | undefined;
275
275
  } & {
276
276
  $children?: import("vue").VNodeChild | (() => import("vue").VNodeChild) | {
277
277
  default?: (() => import("vue").VNodeChild) | undefined;
@@ -343,9 +343,9 @@ export declare const VIconBtn: {
343
343
  rounded?: string | number | boolean | undefined;
344
344
  activeColor?: string | undefined;
345
345
  iconColor?: string | undefined;
346
+ iconSize?: string | number | undefined;
346
347
  activeIcon?: IconValue | undefined;
347
348
  activeVariant?: "flat" | "text" | "elevated" | "tonal" | "outlined" | "plain" | undefined;
348
- iconSize?: string | number | undefined;
349
349
  } & {
350
350
  $children?: import("vue").VNodeChild | (() => import("vue").VNodeChild) | {
351
351
  default?: (() => import("vue").VNodeChild) | undefined;
@@ -409,9 +409,9 @@ export declare const VIconBtn: {
409
409
  rounded?: string | number | boolean | undefined;
410
410
  activeColor?: string | undefined;
411
411
  iconColor?: string | undefined;
412
+ iconSize?: string | number | undefined;
412
413
  activeIcon?: IconValue | undefined;
413
414
  activeVariant?: "flat" | "text" | "elevated" | "tonal" | "outlined" | "plain" | undefined;
414
- iconSize?: string | number | undefined;
415
415
  } & {
416
416
  $children?: import("vue").VNodeChild | (() => import("vue").VNodeChild) | {
417
417
  default?: (() => import("vue").VNodeChild) | undefined;
@@ -470,6 +470,11 @@ export declare const VIconBtn: {
470
470
  default: undefined;
471
471
  };
472
472
  tile: BooleanConstructor;
473
+ iconSize: PropType<VIconBtnSizes | number | string>;
474
+ iconSizes: {
475
+ type: PropType<[VIconBtnSizes, number][]>;
476
+ default: () => (string | number)[][];
477
+ };
473
478
  elevation: {
474
479
  type: (StringConstructor | NumberConstructor)[];
475
480
  validator(v: any): boolean;
@@ -497,11 +502,6 @@ export declare const VIconBtn: {
497
502
  hideOverlay: BooleanConstructor;
498
503
  icon: PropType<IconValue>;
499
504
  iconColor: StringConstructor;
500
- iconSize: PropType<VIconBtnSizes | number | string>;
501
- iconSizes: {
502
- type: PropType<[VIconBtnSizes, number][]>;
503
- default: () => (string | number)[][];
504
- };
505
505
  loading: BooleanConstructor;
506
506
  opacity: (StringConstructor | NumberConstructor)[];
507
507
  readonly: BooleanConstructor;
@@ -541,6 +541,11 @@ export declare const VIconBtn: {
541
541
  default: undefined;
542
542
  };
543
543
  tile: BooleanConstructor;
544
+ iconSize: PropType<VIconBtnSizes | number | string>;
545
+ iconSizes: {
546
+ type: PropType<[VIconBtnSizes, number][]>;
547
+ default: () => (string | number)[][];
548
+ };
544
549
  elevation: {
545
550
  type: (StringConstructor | NumberConstructor)[];
546
551
  validator(v: any): boolean;
@@ -568,11 +573,6 @@ export declare const VIconBtn: {
568
573
  hideOverlay: BooleanConstructor;
569
574
  icon: PropType<IconValue>;
570
575
  iconColor: StringConstructor;
571
- iconSize: PropType<VIconBtnSizes | number | string>;
572
- iconSizes: {
573
- type: PropType<[VIconBtnSizes, number][]>;
574
- default: () => (string | number)[][];
575
- };
576
576
  loading: BooleanConstructor;
577
577
  opacity: (StringConstructor | NumberConstructor)[];
578
578
  readonly: BooleanConstructor;
@@ -9,6 +9,7 @@ import { VProgressCircular } from "../../components/VProgressCircular/index.js";
9
9
  import { makeBorderProps, useBorder } from "../../composables/border.js";
10
10
  import { makeComponentProps } from "../../composables/component.js";
11
11
  import { makeElevationProps, useElevation } from "../../composables/elevation.js";
12
+ import { makeIconSizeProps, useIconSizes } from "../../composables/iconSizes.js";
12
13
  import { useProxiedModel } from "../../composables/proxiedModel.js";
13
14
  import { makeRoundedProps, useRounded } from "../../composables/rounded.js";
14
15
  import { makeTagProps } from "../../composables/tag.js";
@@ -34,11 +35,6 @@ export const makeVIconBtnProps = propsFactory({
34
35
  hideOverlay: Boolean,
35
36
  icon: [String, Function, Object],
36
37
  iconColor: String,
37
- iconSize: [Number, String],
38
- iconSizes: {
39
- type: Array,
40
- default: () => [['x-small', 10], ['small', 16], ['default', 24], ['large', 28], ['x-large', 32]]
41
- },
42
38
  loading: Boolean,
43
39
  opacity: [Number, String],
44
40
  readonly: Boolean,
@@ -58,6 +54,7 @@ export const makeVIconBtnProps = propsFactory({
58
54
  ...makeBorderProps(),
59
55
  ...makeComponentProps(),
60
56
  ...makeElevationProps(),
57
+ ...makeIconSizeProps(),
61
58
  ...makeRoundedProps(),
62
59
  ...makeTagProps({
63
60
  tag: 'button'
@@ -112,7 +109,6 @@ export const VIconBtn = genericComponent()({
112
109
  })()
113
110
  }));
114
111
  const btnSizeMap = new Map(props.sizes);
115
- const iconSizeMap = new Map(props.iconSizes);
116
112
  function onClick() {
117
113
  if (props.disabled || props.readonly || isActive.value === undefined || props.tag === 'a' && attrs.href) return;
118
114
  isActive.value = !isActive.value;
@@ -124,12 +120,12 @@ export const VIconBtn = genericComponent()({
124
120
  const btnSize = hasNamedSize ? btnSizeMap.get(_btnSize) : _btnSize;
125
121
  const btnHeight = props.height ?? btnSize;
126
122
  const btnWidth = props.width ?? btnSize;
127
- const _iconSize = props.iconSize;
128
- const hasNamedIconSize = iconSizeMap.has(_iconSize);
129
- const iconSize = !_iconSize ? hasNamedSize ? iconSizeMap.get(_btnSize) : iconSizeMap.get('default') : hasNamedIconSize ? iconSizeMap.get(_iconSize) : _iconSize;
123
+ const {
124
+ iconSize
125
+ } = useIconSizes(props, () => new Map(props.iconSizes).get(_btnSize));
130
126
  const iconProps = {
131
127
  icon,
132
- size: iconSize,
128
+ size: iconSize.value,
133
129
  iconColor: props.iconColor,
134
130
  opacity: props.opacity
135
131
  };
@@ -172,7 +168,7 @@ export const VIconBtn = genericComponent()({
172
168
  "color": typeof props.loading === 'boolean' ? undefined : props.loading,
173
169
  "indeterminate": "disable-shrink",
174
170
  "width": "2",
175
- "size": iconSize
171
+ "size": iconSize.value
176
172
  }, null)])]
177
173
  });
178
174
  });
@@ -1 +1 @@
1
- {"version":3,"file":"VIconBtn.js","names":["VDefaultsProvider","VIcon","VProgressCircular","makeBorderProps","useBorder","makeComponentProps","makeElevationProps","useElevation","useProxiedModel","makeRoundedProps","useRounded","makeTagProps","makeThemeProps","provideTheme","genOverlays","makeVariantProps","useVariant","toDisplayString","convertToUnit","genericComponent","propsFactory","useRender","makeVIconBtnProps","active","type","Boolean","default","undefined","activeColor","String","activeIcon","Function","Object","activeVariant","baseVariant","disabled","height","Number","width","hideOverlay","icon","iconColor","iconSize","iconSizes","Array","loading","opacity","readonly","rotate","size","sizes","text","tag","variant","VIconBtn","name","props","emits","value","setup","_ref","attrs","slots","isActive","themeClasses","borderClasses","elevationClasses","roundedClasses","colorClasses","colorStyles","variantClasses","color","btnSizeMap","Map","iconSizeMap","onClick","href","_btnSize","hasNamedSize","has","btnSize","get","btnHeight","btnWidth","_iconSize","hasNamedIconSize","iconProps","_createVNode","class","style","_mergeProps","loader"],"sources":["../../../src/labs/VIconBtn/VIconBtn.tsx"],"sourcesContent":["// Styles\nimport './VIconBtn.scss'\n\n// Components\nimport { VDefaultsProvider } from '@/components/VDefaultsProvider'\nimport { VIcon } from '@/components/VIcon'\nimport { VProgressCircular } from '@/components/VProgressCircular'\n\n// Composables\nimport { makeBorderProps, useBorder } from '@/composables/border'\nimport { makeComponentProps } from '@/composables/component'\nimport { makeElevationProps, useElevation } from '@/composables/elevation'\nimport { useProxiedModel } from '@/composables/proxiedModel'\nimport { makeRoundedProps, useRounded } from '@/composables/rounded'\nimport { makeTagProps } from '@/composables/tag'\nimport { makeThemeProps, provideTheme } from '@/composables/theme'\nimport { genOverlays, makeVariantProps, useVariant } from '@/composables/variant'\n\n// Utilities\nimport { toDisplayString } from 'vue'\nimport { convertToUnit, genericComponent, propsFactory, useRender } from '@/util'\n\n// Types\nimport type { PropType } from 'vue'\nimport type { IconValue } from '@/composables/icons'\nimport type { Variant } from '@/composables/variant'\n\nexport type VIconBtnSlots = {\n default: never\n loader: never\n}\n\nexport type VIconBtnSizes = 'x-small' | 'small' | 'default' | 'large' | 'x-large'\n\nexport const makeVIconBtnProps = propsFactory({\n active: {\n type: Boolean,\n default: undefined,\n },\n activeColor: String,\n activeIcon: [String, Function, Object] as PropType<IconValue>,\n activeVariant: String as PropType<Variant>,\n baseVariant: {\n type: String as PropType<Variant>,\n default: 'tonal',\n },\n disabled: Boolean,\n height: [Number, String],\n width: [Number, String],\n hideOverlay: Boolean,\n icon: [String, Function, Object] as PropType<IconValue>,\n iconColor: String,\n iconSize: [Number, String] as PropType<VIconBtnSizes | number | string>,\n iconSizes: {\n type: Array as PropType<[VIconBtnSizes, number][]>,\n default: () => ([\n ['x-small', 10],\n ['small', 16],\n ['default', 24],\n ['large', 28],\n ['x-large', 32],\n ]),\n },\n loading: Boolean,\n opacity: [Number, String],\n readonly: Boolean,\n rotate: [Number, String],\n size: {\n type: [Number, String] as PropType<VIconBtnSizes | number | string>,\n default: 'default',\n },\n sizes: {\n type: Array as PropType<[VIconBtnSizes, number][]>,\n default: () => ([\n ['x-small', 16],\n ['small', 24],\n ['default', 40],\n ['large', 48],\n ['x-large', 56],\n ]),\n },\n text: {\n type: [String, Number, Boolean],\n default: undefined,\n },\n\n ...makeBorderProps(),\n ...makeComponentProps(),\n ...makeElevationProps(),\n ...makeRoundedProps(),\n ...makeTagProps({ tag: 'button' }),\n ...makeThemeProps(),\n ...makeVariantProps({ variant: 'flat' } as const),\n}, 'VIconBtn')\n\nexport const VIconBtn = genericComponent<VIconBtnSlots>()({\n name: 'VIconBtn',\n\n props: makeVIconBtnProps(),\n\n emits: {\n 'update:active': (value: boolean) => true,\n },\n\n setup (props, { attrs, slots }) {\n const isActive = useProxiedModel(props, 'active')\n\n const { themeClasses } = provideTheme(props)\n const { borderClasses } = useBorder(props)\n const { elevationClasses } = useElevation(props)\n const { roundedClasses } = useRounded(props)\n\n const { colorClasses, colorStyles, variantClasses } = useVariant(() => ({\n color: (() => {\n if (props.disabled) return undefined\n if (!isActive.value) return props.color\n // Use an inline fallback as opposed to setting a default color\n // because non-toggle buttons are default flat whereas toggle\n // buttons are default tonal and active flat. The exact use\n // case for this is a toggle button with no active color.\n return props.activeColor ?? props.color ?? 'surface-variant'\n })(),\n variant: (() => {\n if (isActive.value === undefined) return props.variant\n if (isActive.value) return props.activeVariant ?? props.variant\n return props.baseVariant ?? props.variant\n })(),\n }))\n\n const btnSizeMap = new Map(props.sizes)\n const iconSizeMap = new Map(props.iconSizes)\n\n function onClick () {\n if (\n props.disabled ||\n props.readonly ||\n isActive.value === undefined ||\n (props.tag === 'a' && attrs.href)\n ) return\n\n isActive.value = !isActive.value\n }\n\n useRender(() => {\n const icon = isActive.value ? props.activeIcon ?? props.icon : props.icon\n\n const _btnSize = props.size as VIconBtnSizes\n const hasNamedSize = btnSizeMap.has(_btnSize)\n const btnSize = hasNamedSize ? btnSizeMap.get(_btnSize) : _btnSize\n const btnHeight = props.height ?? btnSize\n const btnWidth = props.width ?? btnSize\n\n const _iconSize = props.iconSize as VIconBtnSizes\n const hasNamedIconSize = iconSizeMap.has(_iconSize)\n\n const iconSize = !_iconSize\n ? hasNamedSize ? iconSizeMap.get(_btnSize) : iconSizeMap.get('default')\n : hasNamedIconSize ? iconSizeMap.get(_iconSize) : _iconSize\n\n const iconProps = { icon, size: iconSize, iconColor: props.iconColor, opacity: props.opacity }\n\n return (\n <props.tag\n class={[\n {\n 'v-icon-btn': true,\n 'v-icon-btn--active': isActive.value,\n 'v-icon-btn--disabled': props.disabled,\n 'v-icon-btn--loading': props.loading,\n 'v-icon-btn--readonly': props.readonly,\n [`v-icon-btn--${props.size}`]: true,\n },\n themeClasses.value,\n colorClasses.value,\n borderClasses.value,\n elevationClasses.value,\n roundedClasses.value,\n variantClasses.value,\n props.class,\n ]}\n style={[\n {\n '--v-icon-btn-rotate': convertToUnit(props.rotate, 'deg'),\n '--v-icon-btn-height': convertToUnit(btnHeight),\n '--v-icon-btn-width': convertToUnit(btnWidth),\n },\n colorStyles.value,\n props.style,\n ]}\n tabindex={ props.disabled || props.readonly ? -1 : 0 }\n onClick={ onClick }\n >\n { genOverlays(!props.hideOverlay, 'v-icon-btn') }\n\n <div class=\"v-icon-btn__content\" data-no-activator=\"\">\n { (!slots.default && icon) ? (\n <VIcon\n key=\"content-icon\"\n { ...iconProps }\n />\n ) : (\n <VDefaultsProvider\n key=\"content-defaults\"\n disabled={ !icon }\n defaults={{ VIcon: { ...iconProps } }}\n v-slots={{\n default: () => slots.default?.() ?? toDisplayString(props.text),\n }}\n />\n )}\n </div>\n\n { !!props.loading && (\n <span key=\"loader\" class=\"v-icon-btn__loader\">\n { slots.loader?.() ?? (\n <VProgressCircular\n color={ typeof props.loading === 'boolean' ? undefined : props.loading }\n indeterminate=\"disable-shrink\"\n width=\"2\"\n size={ iconSize }\n />\n )}\n </span>\n )}\n </props.tag>\n )\n })\n\n return {}\n },\n})\n\nexport type VIconBtn = InstanceType<typeof VIconBtn>\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"VIconBtn.js","names":["VDefaultsProvider","VIcon","VProgressCircular","makeBorderProps","useBorder","makeComponentProps","makeElevationProps","useElevation","makeIconSizeProps","useIconSizes","useProxiedModel","makeRoundedProps","useRounded","makeTagProps","makeThemeProps","provideTheme","genOverlays","makeVariantProps","useVariant","toDisplayString","convertToUnit","genericComponent","propsFactory","useRender","makeVIconBtnProps","active","type","Boolean","default","undefined","activeColor","String","activeIcon","Function","Object","activeVariant","baseVariant","disabled","height","Number","width","hideOverlay","icon","iconColor","loading","opacity","readonly","rotate","size","sizes","Array","text","tag","variant","VIconBtn","name","props","emits","value","setup","_ref","attrs","slots","isActive","themeClasses","borderClasses","elevationClasses","roundedClasses","colorClasses","colorStyles","variantClasses","color","btnSizeMap","Map","onClick","href","_btnSize","hasNamedSize","has","btnSize","get","btnHeight","btnWidth","iconSize","iconSizes","iconProps","_createVNode","class","style","_mergeProps","loader"],"sources":["../../../src/labs/VIconBtn/VIconBtn.tsx"],"sourcesContent":["// Styles\nimport './VIconBtn.scss'\n\n// Components\nimport { VDefaultsProvider } from '@/components/VDefaultsProvider'\nimport { VIcon } from '@/components/VIcon'\nimport { VProgressCircular } from '@/components/VProgressCircular'\n\n// Composables\nimport { makeBorderProps, useBorder } from '@/composables/border'\nimport { makeComponentProps } from '@/composables/component'\nimport { makeElevationProps, useElevation } from '@/composables/elevation'\nimport { makeIconSizeProps, useIconSizes } from '@/composables/iconSizes'\nimport { useProxiedModel } from '@/composables/proxiedModel'\nimport { makeRoundedProps, useRounded } from '@/composables/rounded'\nimport { makeTagProps } from '@/composables/tag'\nimport { makeThemeProps, provideTheme } from '@/composables/theme'\nimport { genOverlays, makeVariantProps, useVariant } from '@/composables/variant'\n\n// Utilities\nimport { toDisplayString } from 'vue'\nimport { convertToUnit, genericComponent, propsFactory, useRender } from '@/util'\n\n// Types\nimport type { PropType } from 'vue'\nimport type { IconValue } from '@/composables/icons'\nimport type { Variant } from '@/composables/variant'\n\nexport type VIconBtnSlots = {\n default: never\n loader: never\n}\n\nexport type VIconBtnSizes = 'x-small' | 'small' | 'default' | 'large' | 'x-large'\n\nexport const makeVIconBtnProps = propsFactory({\n active: {\n type: Boolean,\n default: undefined,\n },\n activeColor: String,\n activeIcon: [String, Function, Object] as PropType<IconValue>,\n activeVariant: String as PropType<Variant>,\n baseVariant: {\n type: String as PropType<Variant>,\n default: 'tonal',\n },\n disabled: Boolean,\n height: [Number, String],\n width: [Number, String],\n hideOverlay: Boolean,\n icon: [String, Function, Object] as PropType<IconValue>,\n iconColor: String,\n loading: Boolean,\n opacity: [Number, String],\n readonly: Boolean,\n rotate: [Number, String],\n size: {\n type: [Number, String] as PropType<VIconBtnSizes | number | string>,\n default: 'default',\n },\n sizes: {\n type: Array as PropType<[VIconBtnSizes, number][]>,\n default: () => ([\n ['x-small', 16],\n ['small', 24],\n ['default', 40],\n ['large', 48],\n ['x-large', 56],\n ]),\n },\n text: {\n type: [String, Number, Boolean],\n default: undefined,\n },\n\n ...makeBorderProps(),\n ...makeComponentProps(),\n ...makeElevationProps(),\n ...makeIconSizeProps(),\n ...makeRoundedProps(),\n ...makeTagProps({ tag: 'button' }),\n ...makeThemeProps(),\n ...makeVariantProps({ variant: 'flat' } as const),\n}, 'VIconBtn')\n\nexport const VIconBtn = genericComponent<VIconBtnSlots>()({\n name: 'VIconBtn',\n\n props: makeVIconBtnProps(),\n\n emits: {\n 'update:active': (value: boolean) => true,\n },\n\n setup (props, { attrs, slots }) {\n const isActive = useProxiedModel(props, 'active')\n\n const { themeClasses } = provideTheme(props)\n const { borderClasses } = useBorder(props)\n const { elevationClasses } = useElevation(props)\n const { roundedClasses } = useRounded(props)\n\n const { colorClasses, colorStyles, variantClasses } = useVariant(() => ({\n color: (() => {\n if (props.disabled) return undefined\n if (!isActive.value) return props.color\n // Use an inline fallback as opposed to setting a default color\n // because non-toggle buttons are default flat whereas toggle\n // buttons are default tonal and active flat. The exact use\n // case for this is a toggle button with no active color.\n return props.activeColor ?? props.color ?? 'surface-variant'\n })(),\n variant: (() => {\n if (isActive.value === undefined) return props.variant\n if (isActive.value) return props.activeVariant ?? props.variant\n return props.baseVariant ?? props.variant\n })(),\n }))\n\n const btnSizeMap = new Map(props.sizes)\n\n function onClick () {\n if (\n props.disabled ||\n props.readonly ||\n isActive.value === undefined ||\n (props.tag === 'a' && attrs.href)\n ) return\n\n isActive.value = !isActive.value\n }\n\n useRender(() => {\n const icon = isActive.value ? props.activeIcon ?? props.icon : props.icon\n\n const _btnSize = props.size as VIconBtnSizes\n const hasNamedSize = btnSizeMap.has(_btnSize)\n const btnSize = hasNamedSize ? btnSizeMap.get(_btnSize) : _btnSize\n const btnHeight = props.height ?? btnSize\n const btnWidth = props.width ?? btnSize\n const { iconSize } = useIconSizes(props, () => new Map(props.iconSizes).get(_btnSize))\n\n const iconProps = {\n icon,\n size: iconSize.value,\n iconColor: props.iconColor,\n opacity: props.opacity,\n }\n\n return (\n <props.tag\n class={[\n {\n 'v-icon-btn': true,\n 'v-icon-btn--active': isActive.value,\n 'v-icon-btn--disabled': props.disabled,\n 'v-icon-btn--loading': props.loading,\n 'v-icon-btn--readonly': props.readonly,\n [`v-icon-btn--${props.size}`]: true,\n },\n themeClasses.value,\n colorClasses.value,\n borderClasses.value,\n elevationClasses.value,\n roundedClasses.value,\n variantClasses.value,\n props.class,\n ]}\n style={[\n {\n '--v-icon-btn-rotate': convertToUnit(props.rotate, 'deg'),\n '--v-icon-btn-height': convertToUnit(btnHeight),\n '--v-icon-btn-width': convertToUnit(btnWidth),\n },\n colorStyles.value,\n props.style,\n ]}\n tabindex={ props.disabled || props.readonly ? -1 : 0 }\n onClick={ onClick }\n >\n { genOverlays(!props.hideOverlay, 'v-icon-btn') }\n\n <div class=\"v-icon-btn__content\" data-no-activator=\"\">\n { (!slots.default && icon) ? (\n <VIcon\n key=\"content-icon\"\n { ...iconProps }\n />\n ) : (\n <VDefaultsProvider\n key=\"content-defaults\"\n disabled={ !icon }\n defaults={{ VIcon: { ...iconProps } }}\n v-slots={{\n default: () => slots.default?.() ?? toDisplayString(props.text),\n }}\n />\n )}\n </div>\n\n { !!props.loading && (\n <span key=\"loader\" class=\"v-icon-btn__loader\">\n { slots.loader?.() ?? (\n <VProgressCircular\n color={ typeof props.loading === 'boolean' ? undefined : props.loading }\n indeterminate=\"disable-shrink\"\n width=\"2\"\n size={ iconSize.value }\n />\n )}\n </span>\n )}\n </props.tag>\n )\n })\n\n return {}\n },\n})\n\nexport type VIconBtn = InstanceType<typeof VIconBtn>\n"],"mappings":"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","ignoreList":[]}
@@ -1,4 +1,5 @@
1
1
  export * from './VCalendar/index.js';
2
+ export * from './VColorInput/index.js';
2
3
  export * from './VDateInput/index.js';
3
4
  export * from './VFileUpload/index.js';
4
5
  export * from './VIconBtn/index.js';
@@ -1,4 +1,5 @@
1
1
  export * from "./VCalendar/index.js";
2
+ export * from "./VColorInput/index.js";
2
3
  export * from "./VDateInput/index.js";
3
4
  export * from "./VFileUpload/index.js";
4
5
  export * from "./VIconBtn/index.js";
@@ -1 +1 @@
1
- {"version":3,"file":"components.js","names":[],"sources":["../../src/labs/components.ts"],"sourcesContent":["export * from './VCalendar'\nexport * from './VDateInput'\nexport * from './VFileUpload'\nexport * from './VIconBtn'\nexport * from './VPicker'\nexport * from './VStepperVertical'\nexport * from './VPullToRefresh'\nexport * from './VTimePicker'\nexport * from './VTreeview'\n"],"mappings":"","ignoreList":[]}
1
+ {"version":3,"file":"components.js","names":[],"sources":["../../src/labs/components.ts"],"sourcesContent":["export * from './VCalendar'\nexport * from './VColorInput'\nexport * from './VDateInput'\nexport * from './VFileUpload'\nexport * from './VIconBtn'\nexport * from './VPicker'\nexport * from './VStepperVertical'\nexport * from './VPullToRefresh'\nexport * from './VTimePicker'\nexport * from './VTreeview'\n"],"mappings":"","ignoreList":[]}
@@ -2,3 +2,4 @@ export declare const IN_BROWSER: boolean;
2
2
  export declare const SUPPORTS_INTERSECTION: boolean;
3
3
  export declare const SUPPORTS_TOUCH: boolean;
4
4
  export declare const SUPPORTS_EYE_DROPPER: boolean;
5
+ export declare const SUPPORTS_MATCH_MEDIA: boolean;
@@ -2,4 +2,5 @@ export const IN_BROWSER = typeof window !== 'undefined';
2
2
  export const SUPPORTS_INTERSECTION = IN_BROWSER && 'IntersectionObserver' in window;
3
3
  export const SUPPORTS_TOUCH = IN_BROWSER && ('ontouchstart' in window || window.navigator.maxTouchPoints > 0);
4
4
  export const SUPPORTS_EYE_DROPPER = IN_BROWSER && 'EyeDropper' in window;
5
+ export const SUPPORTS_MATCH_MEDIA = IN_BROWSER && 'matchMedia' in window && typeof window.matchMedia === 'function';
5
6
  //# sourceMappingURL=globals.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"globals.js","names":["IN_BROWSER","window","SUPPORTS_INTERSECTION","SUPPORTS_TOUCH","navigator","maxTouchPoints","SUPPORTS_EYE_DROPPER"],"sources":["../../src/util/globals.ts"],"sourcesContent":["export const IN_BROWSER = typeof window !== 'undefined'\nexport const SUPPORTS_INTERSECTION = IN_BROWSER && 'IntersectionObserver' in window\nexport const SUPPORTS_TOUCH = IN_BROWSER && ('ontouchstart' in window || window.navigator.maxTouchPoints > 0)\nexport const SUPPORTS_EYE_DROPPER = IN_BROWSER && 'EyeDropper' in window\n"],"mappings":"AAAA,OAAO,MAAMA,UAAU,GAAG,OAAOC,MAAM,KAAK,WAAW;AACvD,OAAO,MAAMC,qBAAqB,GAAGF,UAAU,IAAI,sBAAsB,IAAIC,MAAM;AACnF,OAAO,MAAME,cAAc,GAAGH,UAAU,KAAK,cAAc,IAAIC,MAAM,IAAIA,MAAM,CAACG,SAAS,CAACC,cAAc,GAAG,CAAC,CAAC;AAC7G,OAAO,MAAMC,oBAAoB,GAAGN,UAAU,IAAI,YAAY,IAAIC,MAAM","ignoreList":[]}
1
+ {"version":3,"file":"globals.js","names":["IN_BROWSER","window","SUPPORTS_INTERSECTION","SUPPORTS_TOUCH","navigator","maxTouchPoints","SUPPORTS_EYE_DROPPER","SUPPORTS_MATCH_MEDIA","matchMedia"],"sources":["../../src/util/globals.ts"],"sourcesContent":["export const IN_BROWSER = typeof window !== 'undefined'\nexport const SUPPORTS_INTERSECTION = IN_BROWSER && 'IntersectionObserver' in window\nexport const SUPPORTS_TOUCH = IN_BROWSER && ('ontouchstart' in window || window.navigator.maxTouchPoints > 0)\nexport const SUPPORTS_EYE_DROPPER = IN_BROWSER && 'EyeDropper' in window\nexport const SUPPORTS_MATCH_MEDIA = IN_BROWSER && 'matchMedia' in window && typeof window.matchMedia === 'function'\n"],"mappings":"AAAA,OAAO,MAAMA,UAAU,GAAG,OAAOC,MAAM,KAAK,WAAW;AACvD,OAAO,MAAMC,qBAAqB,GAAGF,UAAU,IAAI,sBAAsB,IAAIC,MAAM;AACnF,OAAO,MAAME,cAAc,GAAGH,UAAU,KAAK,cAAc,IAAIC,MAAM,IAAIA,MAAM,CAACG,SAAS,CAACC,cAAc,GAAG,CAAC,CAAC;AAC7G,OAAO,MAAMC,oBAAoB,GAAGN,UAAU,IAAI,YAAY,IAAIC,MAAM;AACxE,OAAO,MAAMM,oBAAoB,GAAGP,UAAU,IAAI,YAAY,IAAIC,MAAM,IAAI,OAAOA,MAAM,CAACO,UAAU,KAAK,UAAU","ignoreList":[]}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@vuetify/nightly",
3
3
  "description": "Vue Material Component Framework",
4
- "version": "3.8.4-master.2025-05-12",
4
+ "version": "3.8.5-dev.2025-05-14",
5
5
  "author": {
6
6
  "name": "John Leider",
7
7
  "email": "john@vuetifyjs.com"
@@ -76,6 +76,7 @@
76
76
  "./labs/components": "./lib/labs/components.js",
77
77
  "./labs/*": "./lib/labs/*/index.js",
78
78
  "./util/colors": "./lib/util/colors.js",
79
+ "./util/transitions": "./lib/components/transitions/createTransition.js",
79
80
  "./dist/vuetify.js": {
80
81
  "types": "./dist/vuetify.d.ts",
81
82
  "import": "./dist/vuetify.esm.js",