@vuetify/nightly 3.8.10-master.2025-06-18 → 3.8.11-master.2025-06-24

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 (47) hide show
  1. package/CHANGELOG.md +3 -3
  2. package/dist/json/attributes.json +3160 -3160
  3. package/dist/json/importMap-labs.json +28 -28
  4. package/dist/json/importMap.json +130 -130
  5. package/dist/json/web-types.json +5472 -5472
  6. package/dist/vuetify-labs.cjs +30 -30
  7. package/dist/vuetify-labs.css +3684 -3690
  8. package/dist/vuetify-labs.d.ts +51 -51
  9. package/dist/vuetify-labs.esm.js +30 -30
  10. package/dist/vuetify-labs.esm.js.map +1 -1
  11. package/dist/vuetify-labs.js +30 -30
  12. package/dist/vuetify-labs.min.css +2 -2
  13. package/dist/vuetify.cjs +30 -30
  14. package/dist/vuetify.cjs.map +1 -1
  15. package/dist/vuetify.css +4377 -4383
  16. package/dist/vuetify.d.ts +51 -51
  17. package/dist/vuetify.esm.js +30 -30
  18. package/dist/vuetify.esm.js.map +1 -1
  19. package/dist/vuetify.js +30 -30
  20. package/dist/vuetify.js.map +1 -1
  21. package/dist/vuetify.min.css +2 -2
  22. package/dist/vuetify.min.js +33 -33
  23. package/dist/vuetify.min.js.map +1 -1
  24. package/lib/components/VBtn/VBtn.sass +3 -1
  25. package/lib/components/VCarousel/VCarousel.css +0 -1
  26. package/lib/components/VCarousel/VCarousel.js +1 -0
  27. package/lib/components/VCarousel/VCarousel.js.map +1 -1
  28. package/lib/components/VCarousel/VCarousel.sass +0 -1
  29. package/lib/components/VDatePicker/VDatePickerMonth.css +3 -8
  30. package/lib/components/VDatePicker/VDatePickerMonth.js +8 -3
  31. package/lib/components/VDatePicker/VDatePickerMonth.js.map +1 -1
  32. package/lib/components/VDatePicker/VDatePickerMonth.sass +3 -8
  33. package/lib/components/VField/VField.js +2 -10
  34. package/lib/components/VField/VField.js.map +1 -1
  35. package/lib/components/VList/VList.js +1 -1
  36. package/lib/components/VList/VList.js.map +1 -1
  37. package/lib/components/VNumberInput/VNumberInput.js +4 -10
  38. package/lib/components/VNumberInput/VNumberInput.js.map +1 -1
  39. package/lib/components/VNumberInput/hold.js +4 -0
  40. package/lib/components/VNumberInput/hold.js.map +1 -1
  41. package/lib/composables/calendar.d.ts +1 -0
  42. package/lib/composables/calendar.js +7 -3
  43. package/lib/composables/calendar.js.map +1 -1
  44. package/lib/entry-bundler.js +1 -1
  45. package/lib/framework.d.ts +51 -51
  46. package/lib/framework.js +1 -1
  47. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"VNumberInput.js","names":["VBtn","VDefaultsProvider","VDivider","makeVTextFieldProps","VTextField","useHold","useForm","forwardRefs","useProxiedModel","computed","nextTick","onMounted","ref","shallowRef","toRef","watch","watchEffect","clamp","extractNumber","genericComponent","omit","propsFactory","useRender","makeVNumberInputProps","controlVariant","type","String","default","inset","Boolean","hideInput","modelValue","Number","min","MIN_SAFE_INTEGER","max","MAX_SAFE_INTEGER","step","precision","VNumberInput","name","props","emits","val","setup","_ref","slots","vTextFieldRef","holdStart","holdStop","toggleUpDown","form","controlsDisabled","isDisabled","value","isReadonly","isFocused","focused","correctPrecision","arguments","length","undefined","fixed","toFixed","toString","model","_inputText","isNaN","inputText","get","set","canIncrease","canDecrease","incrementIcon","decrementIcon","controlNodeSize","controlNodeDefaultHeight","incrementSlotProps","onClick","onControlClick","onPointerup","onControlMouseup","onPointerdown","onUpControlMousedown","onPointercancel","onControlPointerCancel","decrementSlotProps","onDownControlMousedown","formatInputValue","clampModel","inferPrecision","str","idx","indexOf","increment","inferredPrecision","Math","onBeforeinput","e","data","inputElement","target","existingTxt","selectionStart","selectionEnd","potentialNewInputVal","slice","potentialNewNumber","test","preventDefault","split","includes","onKeydown","key","ctrlKey","stopPropagation","el","currentTarget","releasePointerCapture","pointerId","setPointerCapture","actualText","trimDecimalZeros","onFocus","onBlur","_","textFieldProps","filterProps","incrementControlNode","_createVNode","disabled","flat","height","size","icon","decrementControlNode","decrement","controlNode","_createElementVNode","dividerNode","appendInnerControl","reverse","_Fragment","hasAppendInner","prependInnerControl","hasPrependInner","_mergeProps","$event","class","style","_len","args","Array","_key","_len2","_key2"],"sources":["../../../src/components/VNumberInput/VNumberInput.tsx"],"sourcesContent":["// Styles\nimport './VNumberInput.sass'\n\n// Components\nimport { VBtn } from '@/components/VBtn'\nimport { VDefaultsProvider } from '@/components/VDefaultsProvider'\nimport { VDivider } from '@/components/VDivider'\nimport { makeVTextFieldProps, VTextField } from '@/components/VTextField/VTextField'\n\n// Composables\nimport { useHold } from './hold'\nimport { useForm } from '@/composables/form'\nimport { forwardRefs } from '@/composables/forwardRefs'\nimport { useProxiedModel } from '@/composables/proxiedModel'\n\n// Utilities\nimport { computed, nextTick, onMounted, ref, shallowRef, toRef, watch, watchEffect } from 'vue'\nimport { clamp, extractNumber, genericComponent, omit, propsFactory, useRender } from '@/util'\n\n// Types\nimport type { PropType } from 'vue'\nimport type { VTextFieldSlots } from '@/components/VTextField/VTextField'\n\ntype ControlSlot = {\n props: Record<string, unknown>\n}\n\ntype VNumberInputSlots = Omit<VTextFieldSlots, 'default'> & {\n increment: ControlSlot\n decrement: ControlSlot\n}\n\ntype ControlVariant = 'default' | 'stacked' | 'split' | 'hidden'\n\nconst makeVNumberInputProps = propsFactory({\n controlVariant: {\n type: String as PropType<ControlVariant>,\n default: 'default',\n },\n inset: Boolean,\n hideInput: Boolean,\n modelValue: {\n type: Number as PropType<number | null>,\n default: null,\n },\n min: {\n type: Number,\n default: Number.MIN_SAFE_INTEGER,\n },\n max: {\n type: Number,\n default: Number.MAX_SAFE_INTEGER,\n },\n step: {\n type: Number,\n default: 1,\n },\n precision: {\n type: Number as PropType<number | null>,\n default: 0,\n },\n\n ...omit(makeVTextFieldProps(), ['modelValue', 'validationValue']),\n}, 'VNumberInput')\n\nexport const VNumberInput = genericComponent<VNumberInputSlots>()({\n name: 'VNumberInput',\n\n props: {\n ...makeVNumberInputProps(),\n },\n\n emits: {\n 'update:focused': (val: boolean) => true,\n 'update:modelValue': (val: number) => true,\n },\n\n setup (props, { slots }) {\n const vTextFieldRef = ref<VTextField>()\n\n const { holdStart, holdStop } = useHold({ toggleUpDown })\n const form = useForm(props)\n const controlsDisabled = computed(() => (\n form.isDisabled.value || form.isReadonly.value\n ))\n\n const isFocused = shallowRef(props.focused)\n\n function correctPrecision (val: number, precision = props.precision) {\n const fixed = precision == null\n ? String(val)\n : val.toFixed(precision)\n return isFocused.value\n ? Number(fixed).toString() // trim zeros\n : fixed\n }\n\n const model = useProxiedModel(props, 'modelValue', null,\n val => val ?? null,\n val => val == null\n ? val ?? null\n : clamp(Number(val), props.min, props.max)\n )\n\n const _inputText = shallowRef<string | null>(null)\n watchEffect(() => {\n if (isFocused.value && !controlsDisabled.value) {\n // ignore external changes\n } else if (model.value == null) {\n _inputText.value = null\n } else if (!isNaN(model.value)) {\n _inputText.value = correctPrecision(model.value)\n }\n })\n const inputText = computed<string | null>({\n get: () => _inputText.value,\n set (val) {\n if (val === null || val === '') {\n model.value = null\n _inputText.value = null\n } else if (!isNaN(Number(val)) && Number(val) <= props.max && Number(val) >= props.min) {\n model.value = Number(val)\n _inputText.value = val\n }\n },\n })\n\n const canIncrease = computed(() => {\n if (controlsDisabled.value) return false\n return (model.value ?? 0) as number + props.step <= props.max\n })\n const canDecrease = computed(() => {\n if (controlsDisabled.value) return false\n return (model.value ?? 0) as number - props.step >= props.min\n })\n\n const controlVariant = computed(() => {\n return props.hideInput ? 'stacked' : props.controlVariant\n })\n\n const incrementIcon = toRef(() => controlVariant.value === 'split' ? '$plus' : '$collapse')\n const decrementIcon = toRef(() => controlVariant.value === 'split' ? '$minus' : '$expand')\n const controlNodeSize = toRef(() => controlVariant.value === 'split' ? 'default' : 'small')\n const controlNodeDefaultHeight = toRef(() => controlVariant.value === 'stacked' ? 'auto' : '100%')\n\n const incrementSlotProps = {\n props: {\n onClick: onControlClick,\n onPointerup: onControlMouseup,\n onPointerdown: onUpControlMousedown,\n onPointercancel: onControlPointerCancel,\n },\n }\n const decrementSlotProps = {\n props: {\n onClick: onControlClick,\n onPointerup: onControlMouseup,\n onPointerdown: onDownControlMousedown,\n onPointercancel: onControlPointerCancel,\n },\n }\n\n watch(() => props.precision, () => formatInputValue())\n\n onMounted(() => {\n clampModel()\n })\n\n function inferPrecision (value: number | null) {\n if (value == null) return 0\n const str = value.toString()\n const idx = str.indexOf('.')\n return ~idx ? str.length - idx : 0\n }\n\n function toggleUpDown (increment = true) {\n if (controlsDisabled.value) return\n if (model.value == null) {\n inputText.value = correctPrecision(clamp(0, props.min, props.max))\n return\n }\n\n let inferredPrecision = Math.max(inferPrecision(model.value), inferPrecision(props.step))\n if (props.precision != null) inferredPrecision = Math.max(inferredPrecision, props.precision)\n if (increment) {\n if (canIncrease.value) inputText.value = correctPrecision(model.value + props.step, inferredPrecision)\n } else {\n if (canDecrease.value) inputText.value = correctPrecision(model.value - props.step, inferredPrecision)\n }\n }\n\n function onBeforeinput (e: InputEvent) {\n if (!e.data) return\n const inputElement = e.target as HTMLInputElement\n const { value: existingTxt, selectionStart, selectionEnd } = inputElement ?? {}\n\n const potentialNewInputVal =\n existingTxt\n ? existingTxt.slice(0, selectionStart as number | undefined) + e.data + existingTxt.slice(selectionEnd as number | undefined)\n : e.data\n\n const potentialNewNumber = extractNumber(potentialNewInputVal, props.precision)\n\n // Only numbers, \"-\", \".\" are allowed\n // AND \"-\", \".\" are allowed only once\n // AND \"-\" is only allowed at the start\n if (!/^-?(\\d+(\\.\\d*)?|(\\.\\d+)|\\d*|\\.)$/.test(potentialNewInputVal)) {\n e.preventDefault()\n inputElement!.value = potentialNewNumber\n }\n\n if (props.precision == null) return\n\n // Ignore decimal digits above precision limit\n if (potentialNewInputVal.split('.')[1]?.length > props.precision) {\n e.preventDefault()\n inputElement!.value = potentialNewNumber\n }\n // Ignore decimal separator when precision = 0\n if (props.precision === 0 && potentialNewInputVal.includes('.')) {\n e.preventDefault()\n inputElement!.value = potentialNewNumber\n }\n }\n\n async function onKeydown (e: KeyboardEvent) {\n if (\n ['Enter', 'ArrowLeft', 'ArrowRight', 'Backspace', 'Delete', 'Tab'].includes(e.key) ||\n e.ctrlKey\n ) return\n\n if (['ArrowDown', 'ArrowUp'].includes(e.key)) {\n e.preventDefault()\n clampModel()\n // _model is controlled, so need to wait until props['modelValue'] is updated\n await nextTick()\n if (e.key === 'ArrowDown') {\n toggleUpDown(false)\n } else {\n toggleUpDown()\n }\n }\n }\n\n function onControlClick (e: MouseEvent) {\n e.stopPropagation()\n }\n\n function onControlMouseup (e: PointerEvent) {\n const el = e.currentTarget as HTMLElement\n el?.releasePointerCapture(e.pointerId)\n e.preventDefault()\n e.stopPropagation()\n holdStop()\n }\n\n function onUpControlMousedown (e: PointerEvent) {\n const el = e.currentTarget as HTMLElement\n el?.setPointerCapture(e.pointerId)\n e.preventDefault()\n e.stopPropagation()\n holdStart('up')\n }\n\n function onDownControlMousedown (e: PointerEvent) {\n const el = e.currentTarget as HTMLElement\n el?.setPointerCapture(e.pointerId)\n e.preventDefault()\n e.stopPropagation()\n holdStart('down')\n }\n\n function onControlPointerCancel (e: PointerEvent) {\n const el = e.currentTarget as HTMLElement\n el?.releasePointerCapture(e.pointerId)\n holdStop()\n }\n\n function clampModel () {\n if (controlsDisabled.value) return\n if (!vTextFieldRef.value) return\n const actualText = vTextFieldRef.value.value\n if (actualText && !isNaN(Number(actualText))) {\n inputText.value = correctPrecision(clamp(Number(actualText), props.min, props.max))\n } else {\n inputText.value = null\n }\n }\n\n function formatInputValue () {\n if (controlsDisabled.value) return\n if (model.value === null || isNaN(model.value)) {\n inputText.value = null\n return\n }\n inputText.value = props.precision == null\n ? String(model.value)\n : model.value.toFixed(props.precision)\n }\n\n function trimDecimalZeros () {\n if (controlsDisabled.value) return\n if (model.value === null || isNaN(model.value)) {\n inputText.value = null\n return\n }\n inputText.value = model.value.toString()\n }\n\n function onFocus () {\n trimDecimalZeros()\n }\n\n function onBlur () {\n clampModel()\n }\n\n useRender(() => {\n const { modelValue: _, ...textFieldProps } = VTextField.filterProps(props)\n\n function incrementControlNode () {\n return !slots.increment ? (\n <VBtn\n aria-hidden=\"true\"\n data-testid=\"increment\"\n disabled={ !canIncrease.value }\n flat\n height={ controlNodeDefaultHeight.value }\n icon={ incrementIcon.value }\n key=\"increment-btn\"\n onClick={ onControlClick }\n onPointerdown={ onUpControlMousedown }\n onPointerup={ onControlMouseup }\n onPointercancel={ onControlPointerCancel }\n size={ controlNodeSize.value }\n tabindex=\"-1\"\n />\n ) : (\n <VDefaultsProvider\n key=\"increment-defaults\"\n defaults={{\n VBtn: {\n disabled: !canIncrease.value,\n flat: true,\n height: controlNodeDefaultHeight.value,\n size: controlNodeSize.value,\n icon: incrementIcon.value,\n },\n }}\n >\n { slots.increment(incrementSlotProps) }\n </VDefaultsProvider>\n )\n }\n\n function decrementControlNode () {\n return !slots.decrement ? (\n <VBtn\n aria-hidden=\"true\"\n data-testid=\"decrement\"\n disabled={ !canDecrease.value }\n flat\n height={ controlNodeDefaultHeight.value }\n icon={ decrementIcon.value }\n key=\"decrement-btn\"\n onClick={ onControlClick }\n onPointerdown={ onDownControlMousedown }\n onPointerup={ onControlMouseup }\n onPointercancel={ onControlPointerCancel }\n size={ controlNodeSize.value }\n tabindex=\"-1\"\n />\n ) : (\n <VDefaultsProvider\n key=\"decrement-defaults\"\n defaults={{\n VBtn: {\n disabled: !canDecrease.value,\n flat: true,\n height: controlNodeDefaultHeight.value,\n size: controlNodeSize.value,\n icon: decrementIcon.value,\n },\n }}\n >\n { slots.decrement(decrementSlotProps) }\n </VDefaultsProvider>\n )\n }\n\n function controlNode () {\n return (\n <div class=\"v-number-input__control\">\n { decrementControlNode() }\n\n <VDivider\n vertical={ controlVariant.value !== 'stacked' }\n />\n\n { incrementControlNode() }\n </div>\n )\n }\n\n function dividerNode () {\n return !props.hideInput && !props.inset ? <VDivider vertical /> : undefined\n }\n\n const appendInnerControl =\n controlVariant.value === 'split'\n ? (\n <div class=\"v-number-input__control\">\n <VDivider vertical />\n\n { incrementControlNode() }\n </div>\n ) : (props.reverse || controlVariant.value === 'hidden'\n ? undefined\n : <>{ dividerNode() }{ controlNode() }</>)\n\n const hasAppendInner = slots['append-inner'] || appendInnerControl\n\n const prependInnerControl =\n controlVariant.value === 'split'\n ? (\n <div class=\"v-number-input__control\">\n { decrementControlNode() }\n\n <VDivider vertical />\n </div>\n ) : (props.reverse && controlVariant.value !== 'hidden'\n ? <>{ controlNode() }{ dividerNode() }</>\n : undefined)\n\n const hasPrependInner = slots['prepend-inner'] || prependInnerControl\n\n return (\n <VTextField\n ref={ vTextFieldRef }\n { ...textFieldProps }\n v-model={ inputText.value }\n v-model:focused={ isFocused.value }\n validationValue={ model.value }\n onBeforeinput={ onBeforeinput }\n onFocus={ onFocus }\n onBlur={ onBlur }\n onKeydown={ onKeydown }\n class={[\n 'v-number-input',\n {\n 'v-number-input--default': controlVariant.value === 'default',\n 'v-number-input--hide-input': props.hideInput,\n 'v-number-input--inset': props.inset,\n 'v-number-input--reverse': props.reverse,\n 'v-number-input--split': controlVariant.value === 'split',\n 'v-number-input--stacked': controlVariant.value === 'stacked',\n },\n props.class,\n ]}\n style={ props.style }\n inputmode=\"decimal\"\n >\n {{\n ...slots,\n 'append-inner': hasAppendInner ? (...args) => (\n <>\n { slots['append-inner']?.(...args) }\n { appendInnerControl }\n </>\n ) : undefined,\n 'prepend-inner': hasPrependInner ? (...args) => (\n <>\n { prependInnerControl }\n { slots['prepend-inner']?.(...args) }\n </>\n ) : undefined,\n }}\n </VTextField>\n )\n })\n\n return forwardRefs({}, vTextFieldRef)\n },\n})\n\nexport type VNumberInput = InstanceType<typeof VNumberInput>\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"VNumberInput.js","names":["VBtn","VDefaultsProvider","VDivider","makeVTextFieldProps","VTextField","useHold","useForm","forwardRefs","useProxiedModel","computed","nextTick","onMounted","ref","shallowRef","toRef","watch","watchEffect","clamp","extractNumber","genericComponent","omit","propsFactory","useRender","makeVNumberInputProps","controlVariant","type","String","default","inset","Boolean","hideInput","modelValue","Number","min","MIN_SAFE_INTEGER","max","MAX_SAFE_INTEGER","step","precision","VNumberInput","name","props","emits","val","setup","_ref","slots","vTextFieldRef","holdStart","holdStop","toggleUpDown","form","controlsDisabled","isDisabled","value","isReadonly","isFocused","focused","correctPrecision","arguments","length","undefined","fixed","toFixed","toString","model","_inputText","isNaN","inputText","get","set","canIncrease","canDecrease","incrementIcon","decrementIcon","controlNodeSize","controlNodeDefaultHeight","incrementSlotProps","onClick","onControlClick","onPointerup","onControlMouseup","onPointerdown","onUpControlMousedown","onPointercancel","decrementSlotProps","onDownControlMousedown","formatInputValue","clampModel","inferPrecision","str","idx","indexOf","increment","inferredPrecision","Math","onBeforeinput","e","data","inputElement","target","existingTxt","selectionStart","selectionEnd","potentialNewInputVal","slice","potentialNewNumber","test","preventDefault","split","includes","onKeydown","key","ctrlKey","stopPropagation","el","currentTarget","releasePointerCapture","pointerId","setPointerCapture","actualText","trimDecimalZeros","onFocus","onBlur","_","textFieldProps","filterProps","incrementControlNode","_createVNode","disabled","flat","height","size","icon","decrementControlNode","decrement","controlNode","_createElementVNode","dividerNode","appendInnerControl","reverse","_Fragment","hasAppendInner","prependInnerControl","hasPrependInner","_mergeProps","$event","class","style","_len","args","Array","_key","_len2","_key2"],"sources":["../../../src/components/VNumberInput/VNumberInput.tsx"],"sourcesContent":["// Styles\nimport './VNumberInput.sass'\n\n// Components\nimport { VBtn } from '@/components/VBtn'\nimport { VDefaultsProvider } from '@/components/VDefaultsProvider'\nimport { VDivider } from '@/components/VDivider'\nimport { makeVTextFieldProps, VTextField } from '@/components/VTextField/VTextField'\n\n// Composables\nimport { useHold } from './hold'\nimport { useForm } from '@/composables/form'\nimport { forwardRefs } from '@/composables/forwardRefs'\nimport { useProxiedModel } from '@/composables/proxiedModel'\n\n// Utilities\nimport { computed, nextTick, onMounted, ref, shallowRef, toRef, watch, watchEffect } from 'vue'\nimport { clamp, extractNumber, genericComponent, omit, propsFactory, useRender } from '@/util'\n\n// Types\nimport type { PropType } from 'vue'\nimport type { VTextFieldSlots } from '@/components/VTextField/VTextField'\n\ntype ControlSlot = {\n props: Record<string, unknown>\n}\n\ntype VNumberInputSlots = Omit<VTextFieldSlots, 'default'> & {\n increment: ControlSlot\n decrement: ControlSlot\n}\n\ntype ControlVariant = 'default' | 'stacked' | 'split' | 'hidden'\n\nconst makeVNumberInputProps = propsFactory({\n controlVariant: {\n type: String as PropType<ControlVariant>,\n default: 'default',\n },\n inset: Boolean,\n hideInput: Boolean,\n modelValue: {\n type: Number as PropType<number | null>,\n default: null,\n },\n min: {\n type: Number,\n default: Number.MIN_SAFE_INTEGER,\n },\n max: {\n type: Number,\n default: Number.MAX_SAFE_INTEGER,\n },\n step: {\n type: Number,\n default: 1,\n },\n precision: {\n type: Number as PropType<number | null>,\n default: 0,\n },\n\n ...omit(makeVTextFieldProps(), ['modelValue', 'validationValue']),\n}, 'VNumberInput')\n\nexport const VNumberInput = genericComponent<VNumberInputSlots>()({\n name: 'VNumberInput',\n\n props: {\n ...makeVNumberInputProps(),\n },\n\n emits: {\n 'update:focused': (val: boolean) => true,\n 'update:modelValue': (val: number) => true,\n },\n\n setup (props, { slots }) {\n const vTextFieldRef = ref<VTextField>()\n\n const { holdStart, holdStop } = useHold({ toggleUpDown })\n const form = useForm(props)\n const controlsDisabled = computed(() => (\n form.isDisabled.value || form.isReadonly.value\n ))\n\n const isFocused = shallowRef(props.focused)\n\n function correctPrecision (val: number, precision = props.precision) {\n const fixed = precision == null\n ? String(val)\n : val.toFixed(precision)\n return isFocused.value\n ? Number(fixed).toString() // trim zeros\n : fixed\n }\n\n const model = useProxiedModel(props, 'modelValue', null,\n val => val ?? null,\n val => val == null\n ? val ?? null\n : clamp(Number(val), props.min, props.max)\n )\n\n const _inputText = shallowRef<string | null>(null)\n watchEffect(() => {\n if (isFocused.value && !controlsDisabled.value) {\n // ignore external changes\n } else if (model.value == null) {\n _inputText.value = null\n } else if (!isNaN(model.value)) {\n _inputText.value = correctPrecision(model.value)\n }\n })\n const inputText = computed<string | null>({\n get: () => _inputText.value,\n set (val) {\n if (val === null || val === '') {\n model.value = null\n _inputText.value = null\n } else if (!isNaN(Number(val)) && Number(val) <= props.max && Number(val) >= props.min) {\n model.value = Number(val)\n _inputText.value = val\n }\n },\n })\n\n const canIncrease = computed(() => {\n if (controlsDisabled.value) return false\n return (model.value ?? 0) as number + props.step <= props.max\n })\n const canDecrease = computed(() => {\n if (controlsDisabled.value) return false\n return (model.value ?? 0) as number - props.step >= props.min\n })\n\n const controlVariant = computed(() => {\n return props.hideInput ? 'stacked' : props.controlVariant\n })\n\n const incrementIcon = toRef(() => controlVariant.value === 'split' ? '$plus' : '$collapse')\n const decrementIcon = toRef(() => controlVariant.value === 'split' ? '$minus' : '$expand')\n const controlNodeSize = toRef(() => controlVariant.value === 'split' ? 'default' : 'small')\n const controlNodeDefaultHeight = toRef(() => controlVariant.value === 'stacked' ? 'auto' : '100%')\n\n const incrementSlotProps = {\n props: {\n onClick: onControlClick,\n onPointerup: onControlMouseup,\n onPointerdown: onUpControlMousedown,\n onPointercancel: onControlMouseup,\n },\n }\n const decrementSlotProps = {\n props: {\n onClick: onControlClick,\n onPointerup: onControlMouseup,\n onPointerdown: onDownControlMousedown,\n onPointercancel: onControlMouseup,\n },\n }\n\n watch(() => props.precision, () => formatInputValue())\n\n onMounted(() => {\n clampModel()\n })\n\n function inferPrecision (value: number | null) {\n if (value == null) return 0\n const str = value.toString()\n const idx = str.indexOf('.')\n return ~idx ? str.length - idx : 0\n }\n\n function toggleUpDown (increment = true) {\n if (controlsDisabled.value) return\n if (model.value == null) {\n inputText.value = correctPrecision(clamp(0, props.min, props.max))\n return\n }\n\n let inferredPrecision = Math.max(inferPrecision(model.value), inferPrecision(props.step))\n if (props.precision != null) inferredPrecision = Math.max(inferredPrecision, props.precision)\n if (increment) {\n if (canIncrease.value) inputText.value = correctPrecision(model.value + props.step, inferredPrecision)\n } else {\n if (canDecrease.value) inputText.value = correctPrecision(model.value - props.step, inferredPrecision)\n }\n }\n\n function onBeforeinput (e: InputEvent) {\n if (!e.data) return\n const inputElement = e.target as HTMLInputElement\n const { value: existingTxt, selectionStart, selectionEnd } = inputElement ?? {}\n\n const potentialNewInputVal =\n existingTxt\n ? existingTxt.slice(0, selectionStart as number | undefined) + e.data + existingTxt.slice(selectionEnd as number | undefined)\n : e.data\n\n const potentialNewNumber = extractNumber(potentialNewInputVal, props.precision)\n\n // Only numbers, \"-\", \".\" are allowed\n // AND \"-\", \".\" are allowed only once\n // AND \"-\" is only allowed at the start\n if (!/^-?(\\d+(\\.\\d*)?|(\\.\\d+)|\\d*|\\.)$/.test(potentialNewInputVal)) {\n e.preventDefault()\n inputElement!.value = potentialNewNumber\n }\n\n if (props.precision == null) return\n\n // Ignore decimal digits above precision limit\n if (potentialNewInputVal.split('.')[1]?.length > props.precision) {\n e.preventDefault()\n inputElement!.value = potentialNewNumber\n }\n // Ignore decimal separator when precision = 0\n if (props.precision === 0 && potentialNewInputVal.includes('.')) {\n e.preventDefault()\n inputElement!.value = potentialNewNumber\n }\n }\n\n async function onKeydown (e: KeyboardEvent) {\n if (\n ['Enter', 'ArrowLeft', 'ArrowRight', 'Backspace', 'Delete', 'Tab'].includes(e.key) ||\n e.ctrlKey\n ) return\n\n if (['ArrowDown', 'ArrowUp'].includes(e.key)) {\n e.preventDefault()\n clampModel()\n // _model is controlled, so need to wait until props['modelValue'] is updated\n await nextTick()\n if (e.key === 'ArrowDown') {\n toggleUpDown(false)\n } else {\n toggleUpDown()\n }\n }\n }\n\n function onControlClick (e: MouseEvent) {\n e.stopPropagation()\n }\n\n function onControlMouseup (e: PointerEvent) {\n const el = e.currentTarget as HTMLElement\n el?.releasePointerCapture(e.pointerId)\n e.preventDefault()\n holdStop()\n }\n\n function onUpControlMousedown (e: PointerEvent) {\n const el = e.currentTarget as HTMLElement\n el?.setPointerCapture(e.pointerId)\n e.preventDefault()\n e.stopPropagation()\n holdStart('up')\n }\n\n function onDownControlMousedown (e: PointerEvent) {\n const el = e.currentTarget as HTMLElement\n el?.setPointerCapture(e.pointerId)\n e.preventDefault()\n e.stopPropagation()\n holdStart('down')\n }\n\n function clampModel () {\n if (controlsDisabled.value) return\n if (!vTextFieldRef.value) return\n const actualText = vTextFieldRef.value.value\n if (actualText && !isNaN(Number(actualText))) {\n inputText.value = correctPrecision(clamp(Number(actualText), props.min, props.max))\n } else {\n inputText.value = null\n }\n }\n\n function formatInputValue () {\n if (controlsDisabled.value) return\n if (model.value === null || isNaN(model.value)) {\n inputText.value = null\n return\n }\n inputText.value = props.precision == null\n ? String(model.value)\n : model.value.toFixed(props.precision)\n }\n\n function trimDecimalZeros () {\n if (controlsDisabled.value) return\n if (model.value === null || isNaN(model.value)) {\n inputText.value = null\n return\n }\n inputText.value = model.value.toString()\n }\n\n function onFocus () {\n trimDecimalZeros()\n }\n\n function onBlur () {\n clampModel()\n }\n\n useRender(() => {\n const { modelValue: _, ...textFieldProps } = VTextField.filterProps(props)\n\n function incrementControlNode () {\n return !slots.increment ? (\n <VBtn\n aria-hidden=\"true\"\n data-testid=\"increment\"\n disabled={ !canIncrease.value }\n flat\n height={ controlNodeDefaultHeight.value }\n icon={ incrementIcon.value }\n key=\"increment-btn\"\n onClick={ onControlClick }\n onPointerdown={ onUpControlMousedown }\n onPointerup={ onControlMouseup }\n onPointercancel={ onControlMouseup }\n size={ controlNodeSize.value }\n tabindex=\"-1\"\n />\n ) : (\n <VDefaultsProvider\n key=\"increment-defaults\"\n defaults={{\n VBtn: {\n disabled: !canIncrease.value,\n flat: true,\n height: controlNodeDefaultHeight.value,\n size: controlNodeSize.value,\n icon: incrementIcon.value,\n },\n }}\n >\n { slots.increment(incrementSlotProps) }\n </VDefaultsProvider>\n )\n }\n\n function decrementControlNode () {\n return !slots.decrement ? (\n <VBtn\n aria-hidden=\"true\"\n data-testid=\"decrement\"\n disabled={ !canDecrease.value }\n flat\n height={ controlNodeDefaultHeight.value }\n icon={ decrementIcon.value }\n key=\"decrement-btn\"\n onClick={ onControlClick }\n onPointerdown={ onDownControlMousedown }\n onPointerup={ onControlMouseup }\n onPointercancel={ onControlMouseup }\n size={ controlNodeSize.value }\n tabindex=\"-1\"\n />\n ) : (\n <VDefaultsProvider\n key=\"decrement-defaults\"\n defaults={{\n VBtn: {\n disabled: !canDecrease.value,\n flat: true,\n height: controlNodeDefaultHeight.value,\n size: controlNodeSize.value,\n icon: decrementIcon.value,\n },\n }}\n >\n { slots.decrement(decrementSlotProps) }\n </VDefaultsProvider>\n )\n }\n\n function controlNode () {\n return (\n <div class=\"v-number-input__control\">\n { decrementControlNode() }\n\n <VDivider\n vertical={ controlVariant.value !== 'stacked' }\n />\n\n { incrementControlNode() }\n </div>\n )\n }\n\n function dividerNode () {\n return !props.hideInput && !props.inset ? <VDivider vertical /> : undefined\n }\n\n const appendInnerControl =\n controlVariant.value === 'split'\n ? (\n <div class=\"v-number-input__control\">\n <VDivider vertical />\n\n { incrementControlNode() }\n </div>\n ) : (props.reverse || controlVariant.value === 'hidden'\n ? undefined\n : <>{ dividerNode() }{ controlNode() }</>)\n\n const hasAppendInner = slots['append-inner'] || appendInnerControl\n\n const prependInnerControl =\n controlVariant.value === 'split'\n ? (\n <div class=\"v-number-input__control\">\n { decrementControlNode() }\n\n <VDivider vertical />\n </div>\n ) : (props.reverse && controlVariant.value !== 'hidden'\n ? <>{ controlNode() }{ dividerNode() }</>\n : undefined)\n\n const hasPrependInner = slots['prepend-inner'] || prependInnerControl\n\n return (\n <VTextField\n ref={ vTextFieldRef }\n { ...textFieldProps }\n v-model={ inputText.value }\n v-model:focused={ isFocused.value }\n validationValue={ model.value }\n onBeforeinput={ onBeforeinput }\n onFocus={ onFocus }\n onBlur={ onBlur }\n onKeydown={ onKeydown }\n class={[\n 'v-number-input',\n {\n 'v-number-input--default': controlVariant.value === 'default',\n 'v-number-input--hide-input': props.hideInput,\n 'v-number-input--inset': props.inset,\n 'v-number-input--reverse': props.reverse,\n 'v-number-input--split': controlVariant.value === 'split',\n 'v-number-input--stacked': controlVariant.value === 'stacked',\n },\n props.class,\n ]}\n style={ props.style }\n inputmode=\"decimal\"\n >\n {{\n ...slots,\n 'append-inner': hasAppendInner ? (...args) => (\n <>\n { slots['append-inner']?.(...args) }\n { appendInnerControl }\n </>\n ) : undefined,\n 'prepend-inner': hasPrependInner ? (...args) => (\n <>\n { prependInnerControl }\n { slots['prepend-inner']?.(...args) }\n </>\n ) : undefined,\n }}\n </VTextField>\n )\n })\n\n return forwardRefs({}, vTextFieldRef)\n },\n})\n\nexport type VNumberInput = InstanceType<typeof VNumberInput>\n"],"mappings":"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","ignoreList":[]}
@@ -12,6 +12,8 @@ export function useHold(_ref) {
12
12
  function holdStart(value) {
13
13
  holdStop();
14
14
  tick(value);
15
+ window.addEventListener('pointerup', holdStop);
16
+ document.addEventListener('blur', holdStop);
15
17
  timeout = window.setTimeout(() => {
16
18
  interval = window.setInterval(() => tick(value), HOLD_REPEAT);
17
19
  }, HOLD_DELAY);
@@ -19,6 +21,8 @@ export function useHold(_ref) {
19
21
  function holdStop() {
20
22
  window.clearTimeout(timeout);
21
23
  window.clearInterval(interval);
24
+ window.removeEventListener('pointerup', holdStop);
25
+ document.removeEventListener('blur', holdStop);
22
26
  }
23
27
  function tick(value) {
24
28
  toggleUpDown(value === 'up');
@@ -1 +1 @@
1
- {"version":3,"file":"hold.js","names":["onScopeDispose","HOLD_REPEAT","HOLD_DELAY","useHold","_ref","toggleUpDown","timeout","interval","holdStop","holdStart","value","tick","window","setTimeout","setInterval","clearTimeout","clearInterval"],"sources":["../../../src/components/VNumberInput/hold.ts"],"sourcesContent":["// Utilities\nimport { onScopeDispose } from 'vue'\n\nconst HOLD_REPEAT = 50\nconst HOLD_DELAY = 500\n\nexport function useHold ({ toggleUpDown }: { toggleUpDown: (increment: boolean) => void }) {\n let timeout = -1\n let interval = -1\n\n onScopeDispose(holdStop)\n\n function holdStart (value: 'up' | 'down') {\n holdStop()\n tick(value)\n timeout = window.setTimeout(() => {\n interval = window.setInterval(() => tick(value), HOLD_REPEAT)\n }, HOLD_DELAY)\n }\n\n function holdStop () {\n window.clearTimeout(timeout)\n window.clearInterval(interval)\n }\n\n function tick (value: 'up' | 'down') {\n toggleUpDown(value === 'up')\n }\n\n return { holdStart, holdStop }\n}\n"],"mappings":"AAAA;AACA,SAASA,cAAc,QAAQ,KAAK;AAEpC,MAAMC,WAAW,GAAG,EAAE;AACtB,MAAMC,UAAU,GAAG,GAAG;AAEtB,OAAO,SAASC,OAAOA,CAAAC,IAAA,EAAoE;EAAA,IAAlE;IAAEC;EAA6D,CAAC,GAAAD,IAAA;EACvF,IAAIE,OAAO,GAAG,CAAC,CAAC;EAChB,IAAIC,QAAQ,GAAG,CAAC,CAAC;EAEjBP,cAAc,CAACQ,QAAQ,CAAC;EAExB,SAASC,SAASA,CAAEC,KAAoB,EAAE;IACxCF,QAAQ,CAAC,CAAC;IACVG,IAAI,CAACD,KAAK,CAAC;IACXJ,OAAO,GAAGM,MAAM,CAACC,UAAU,CAAC,MAAM;MAChCN,QAAQ,GAAGK,MAAM,CAACE,WAAW,CAAC,MAAMH,IAAI,CAACD,KAAK,CAAC,EAAET,WAAW,CAAC;IAC/D,CAAC,EAAEC,UAAU,CAAC;EAChB;EAEA,SAASM,QAAQA,CAAA,EAAI;IACnBI,MAAM,CAACG,YAAY,CAACT,OAAO,CAAC;IAC5BM,MAAM,CAACI,aAAa,CAACT,QAAQ,CAAC;EAChC;EAEA,SAASI,IAAIA,CAAED,KAAoB,EAAE;IACnCL,YAAY,CAACK,KAAK,KAAK,IAAI,CAAC;EAC9B;EAEA,OAAO;IAAED,SAAS;IAAED;EAAS,CAAC;AAChC","ignoreList":[]}
1
+ {"version":3,"file":"hold.js","names":["onScopeDispose","HOLD_REPEAT","HOLD_DELAY","useHold","_ref","toggleUpDown","timeout","interval","holdStop","holdStart","value","tick","window","addEventListener","document","setTimeout","setInterval","clearTimeout","clearInterval","removeEventListener"],"sources":["../../../src/components/VNumberInput/hold.ts"],"sourcesContent":["// Utilities\nimport { onScopeDispose } from 'vue'\n\nconst HOLD_REPEAT = 50\nconst HOLD_DELAY = 500\n\nexport function useHold ({ toggleUpDown }: { toggleUpDown: (increment: boolean) => void }) {\n let timeout = -1\n let interval = -1\n\n onScopeDispose(holdStop)\n\n function holdStart (value: 'up' | 'down') {\n holdStop()\n tick(value)\n window.addEventListener('pointerup', holdStop)\n document.addEventListener('blur', holdStop)\n timeout = window.setTimeout(() => {\n interval = window.setInterval(() => tick(value), HOLD_REPEAT)\n }, HOLD_DELAY)\n }\n\n function holdStop () {\n window.clearTimeout(timeout)\n window.clearInterval(interval)\n window.removeEventListener('pointerup', holdStop)\n document.removeEventListener('blur', holdStop)\n }\n\n function tick (value: 'up' | 'down') {\n toggleUpDown(value === 'up')\n }\n\n return { holdStart, holdStop }\n}\n"],"mappings":"AAAA;AACA,SAASA,cAAc,QAAQ,KAAK;AAEpC,MAAMC,WAAW,GAAG,EAAE;AACtB,MAAMC,UAAU,GAAG,GAAG;AAEtB,OAAO,SAASC,OAAOA,CAAAC,IAAA,EAAoE;EAAA,IAAlE;IAAEC;EAA6D,CAAC,GAAAD,IAAA;EACvF,IAAIE,OAAO,GAAG,CAAC,CAAC;EAChB,IAAIC,QAAQ,GAAG,CAAC,CAAC;EAEjBP,cAAc,CAACQ,QAAQ,CAAC;EAExB,SAASC,SAASA,CAAEC,KAAoB,EAAE;IACxCF,QAAQ,CAAC,CAAC;IACVG,IAAI,CAACD,KAAK,CAAC;IACXE,MAAM,CAACC,gBAAgB,CAAC,WAAW,EAAEL,QAAQ,CAAC;IAC9CM,QAAQ,CAACD,gBAAgB,CAAC,MAAM,EAAEL,QAAQ,CAAC;IAC3CF,OAAO,GAAGM,MAAM,CAACG,UAAU,CAAC,MAAM;MAChCR,QAAQ,GAAGK,MAAM,CAACI,WAAW,CAAC,MAAML,IAAI,CAACD,KAAK,CAAC,EAAET,WAAW,CAAC;IAC/D,CAAC,EAAEC,UAAU,CAAC;EAChB;EAEA,SAASM,QAAQA,CAAA,EAAI;IACnBI,MAAM,CAACK,YAAY,CAACX,OAAO,CAAC;IAC5BM,MAAM,CAACM,aAAa,CAACX,QAAQ,CAAC;IAC9BK,MAAM,CAACO,mBAAmB,CAAC,WAAW,EAAEX,QAAQ,CAAC;IACjDM,QAAQ,CAACK,mBAAmB,CAAC,MAAM,EAAEX,QAAQ,CAAC;EAChD;EAEA,SAASG,IAAIA,CAAED,KAAoB,EAAE;IACnCL,YAAY,CAACK,KAAK,KAAK,IAAI,CAAC;EAC9B;EAEA,OAAO;IAAED,SAAS;IAAED;EAAS,CAAC;AAChC","ignoreList":[]}
@@ -132,5 +132,6 @@ export declare function useCalendar(props: CalendarProps): {
132
132
  };
133
133
  weeksInMonth: import("vue").ComputedRef<unknown[][]>;
134
134
  weekDays: import("vue").ComputedRef<number[]>;
135
+ weekdayLabels: import("vue").ComputedRef<string[]>;
135
136
  weekNumbers: import("vue").ComputedRef<(number | null)[]>;
136
137
  };
@@ -52,8 +52,11 @@ export function useCalendar(props) {
52
52
  }, v => adapter.getMonth(v));
53
53
  const weekDays = computed(() => {
54
54
  const firstDayOfWeek = adapter.toJsDate(adapter.startOfWeek(adapter.date(), props.firstDayOfWeek)).getDay();
55
- // Always generate all days, regardless of props.weekdays
56
- return [0, 1, 2, 3, 4, 5, 6].map(day => (day + firstDayOfWeek) % 7);
55
+ return props.weekdays.map(day => (day + firstDayOfWeek) % 7);
56
+ });
57
+ const weekdayLabels = computed(() => {
58
+ const labels = adapter.getWeekdays(props.firstDayOfWeek);
59
+ return weekDays.value.map(day => labels[day]);
57
60
  });
58
61
  const weeksInMonth = computed(() => {
59
62
  const weeks = adapter.getWeekArray(month.value, props.firstDayOfWeek);
@@ -134,7 +137,7 @@ export function useCalendar(props) {
134
137
  if (typeof props.allowedDates === 'function') {
135
138
  return !props.allowedDates(date);
136
139
  }
137
- return !props.weekdays.includes(adapter.toJsDate(date).getDay());
140
+ return false;
138
141
  }
139
142
  return {
140
143
  displayValue,
@@ -144,6 +147,7 @@ export function useCalendar(props) {
144
147
  model,
145
148
  weeksInMonth,
146
149
  weekDays,
150
+ weekdayLabels,
147
151
  weekNumbers
148
152
  };
149
153
  }
@@ -1 +1 @@
1
- {"version":3,"file":"calendar.js","names":["useDate","useProxiedModel","computed","propsFactory","wrapInArray","makeCalendarProps","allowedDates","Array","Function","disabled","type","Boolean","default","displayValue","modelValue","month","Number","String","max","min","showAdjacentMonths","year","weekdays","weeksInMonth","firstDayOfWeek","undefined","useCalendar","props","adapter","model","v","map","i","date","value","length","isArray","getYear","startOfYear","setYear","getMonth","startOfMonth","setMonth","weekDays","toJsDate","startOfWeek","getDay","day","weeks","getWeekArray","days","flat","daysInMonth","lastDay","week","push","addDays","genDays","today","filter","includes","index","isoDate","toISO","isAdjacent","isSameMonth","isStart","isSameDay","isEnd","endOfMonth","isSame","formatted","format","isDisabled","isHidden","isSelected","some","isToday","isWeekEnd","isWeekStart","localized","daysInWeek","weekNumbers","getWeek","isAfter","d"],"sources":["../../src/composables/calendar.ts"],"sourcesContent":["// Composables\nimport { useDate } from '@/composables/date/date'\nimport { useProxiedModel } from '@/composables/proxiedModel'\n\n// Utilities\nimport { computed } from 'vue'\nimport { propsFactory, wrapInArray } from '@/util'\n\n// Types\nimport type { PropType } from 'vue'\n\n// Types\nexport interface CalendarProps {\n allowedDates: unknown[] | ((date: unknown) => boolean) | undefined\n disabled: boolean\n displayValue?: unknown\n modelValue: unknown[] | undefined\n max: unknown\n min: unknown\n showAdjacentMonths: boolean\n month: number | string | undefined\n weekdays: number[]\n year: number | string | undefined\n weeksInMonth: 'dynamic' | 'static'\n firstDayOfWeek: number | string | undefined\n\n 'onUpdate:modelValue': ((value: unknown[]) => void) | undefined\n 'onUpdate:month': ((value: number) => void) | undefined\n 'onUpdate:year': ((value: number) => void) | undefined\n}\n\nexport type CalendarDay = {\n date: Date\n formatted: string\n isAdjacent: boolean\n isDisabled: boolean\n isEnd: boolean\n isHidden: boolean\n isSame: boolean\n isSelected: boolean\n isStart: boolean\n isToday: boolean\n isWeekEnd: boolean\n isWeekStart: boolean\n isoDate: string\n localized: string\n month: number\n year: number\n}\n\nexport type CalendarWeekdays = 0 | 1 | 2 | 3 | 4 | 5 | 6\n\n// Composables\nexport const makeCalendarProps = propsFactory({\n allowedDates: [Array, Function] as PropType<unknown[] | ((date: unknown) => boolean)>,\n disabled: {\n type: Boolean,\n default: null,\n },\n displayValue: null as any as PropType<unknown>,\n modelValue: Array as PropType<unknown[]>,\n month: [Number, String],\n max: null as any as PropType<unknown>,\n min: null as any as PropType<unknown>,\n showAdjacentMonths: Boolean,\n year: [Number, String],\n weekdays: {\n type: Array as PropType<CalendarWeekdays[]>,\n default: () => [0, 1, 2, 3, 4, 5, 6],\n },\n weeksInMonth: {\n type: String as PropType<'dynamic' | 'static'>,\n default: 'dynamic',\n },\n firstDayOfWeek: {\n type: [Number, String],\n default: undefined,\n },\n}, 'calendar')\n\nexport function useCalendar (props: CalendarProps) {\n const adapter = useDate()\n const model = useProxiedModel(\n props,\n 'modelValue',\n [],\n v => wrapInArray(v).map(i => adapter.date(i)),\n )\n const displayValue = computed(() => {\n if (props.displayValue) return adapter.date(props.displayValue)\n if (model.value.length > 0) return adapter.date(model.value[0])\n if (props.min) return adapter.date(props.min)\n if (Array.isArray(props.allowedDates)) return adapter.date(props.allowedDates[0])\n\n return adapter.date()\n })\n\n const year = useProxiedModel(\n props,\n 'year',\n undefined,\n v => {\n const value = v != null ? Number(v) : adapter.getYear(displayValue.value)\n\n return adapter.startOfYear(adapter.setYear(adapter.date(), value))\n },\n v => adapter.getYear(v)\n )\n\n const month = useProxiedModel(\n props,\n 'month',\n undefined,\n v => {\n const value = v != null ? Number(v) : adapter.getMonth(displayValue.value)\n const date = adapter.setYear(adapter.startOfMonth(adapter.date()), adapter.getYear(year.value))\n\n return adapter.setMonth(date, value)\n },\n v => adapter.getMonth(v)\n )\n\n const weekDays = computed(() => {\n const firstDayOfWeek = adapter.toJsDate(adapter.startOfWeek(adapter.date(), props.firstDayOfWeek)).getDay()\n // Always generate all days, regardless of props.weekdays\n return [0, 1, 2, 3, 4, 5, 6].map(day => (day + firstDayOfWeek) % 7)\n })\n\n const weeksInMonth = computed(() => {\n const weeks = adapter.getWeekArray(month.value, props.firstDayOfWeek)\n\n const days = weeks.flat()\n\n // Make sure there's always 6 weeks in month (6 * 7 days)\n // if weeksInMonth is 'static'\n const daysInMonth = 6 * 7\n if (props.weeksInMonth === 'static' && days.length < daysInMonth) {\n const lastDay = days[days.length - 1]\n\n let week = []\n for (let day = 1; day <= daysInMonth - days.length; day++) {\n week.push(adapter.addDays(lastDay, day))\n\n if (day % 7 === 0) {\n weeks.push(week)\n week = []\n }\n }\n }\n\n return weeks\n })\n\n function genDays (days: Date[], today: Date): CalendarDay[] {\n return days.filter(date => {\n return weekDays.value.includes(adapter.toJsDate(date).getDay())\n }).map((date, index) => {\n const isoDate = adapter.toISO(date)\n const isAdjacent = !adapter.isSameMonth(date, month.value)\n const isStart = adapter.isSameDay(date, adapter.startOfMonth(month.value))\n const isEnd = adapter.isSameDay(date, adapter.endOfMonth(month.value))\n const isSame = adapter.isSameDay(date, month.value)\n\n return {\n date,\n formatted: adapter.format(date, 'keyboardDate'),\n isAdjacent,\n isDisabled: isDisabled(date),\n isEnd,\n isHidden: isAdjacent && !props.showAdjacentMonths,\n isSame,\n isSelected: model.value.some(value => adapter.isSameDay(date, value)),\n isStart,\n isToday: adapter.isSameDay(date, today),\n isWeekEnd: index % 7 === 6,\n isWeekStart: index % 7 === 0,\n isoDate,\n localized: adapter.format(date, 'dayOfMonth'),\n month: adapter.getMonth(date),\n year: adapter.getYear(date),\n }\n })\n }\n\n const daysInWeek = computed(() => {\n const lastDay = adapter.startOfWeek(displayValue.value, props.firstDayOfWeek)\n const week: Date[] = []\n for (let day = 0; day <= 6; day++) {\n week.push(adapter.addDays(lastDay, day) as Date)\n }\n\n const today = adapter.date() as Date\n\n return genDays(week as Date[], today as Date)\n })\n\n const daysInMonth = computed(() => {\n const days = weeksInMonth.value.flat() as Date[]\n const today = adapter.date() as Date\n\n return genDays(days as Date[], today)\n })\n\n const weekNumbers = computed(() => {\n return weeksInMonth.value.map(week => {\n return week.length ? adapter.getWeek(week[0], props.firstDayOfWeek) : null\n })\n })\n\n function isDisabled (value: unknown) {\n if (props.disabled) return true\n\n const date = adapter.date(value)\n\n if (props.min && adapter.isAfter(adapter.date(props.min), date)) return true\n if (props.max && adapter.isAfter(date, adapter.date(props.max))) return true\n\n if (Array.isArray(props.allowedDates) && props.allowedDates.length > 0) {\n return !props.allowedDates.some(d => adapter.isSameDay(adapter.date(d), date))\n }\n\n if (typeof props.allowedDates === 'function') {\n return !props.allowedDates(date)\n }\n\n return !props.weekdays.includes(adapter.toJsDate(date).getDay())\n }\n\n return {\n displayValue,\n daysInMonth,\n daysInWeek,\n genDays,\n model,\n weeksInMonth,\n weekDays,\n weekNumbers,\n }\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"calendar.js","names":["useDate","useProxiedModel","computed","propsFactory","wrapInArray","makeCalendarProps","allowedDates","Array","Function","disabled","type","Boolean","default","displayValue","modelValue","month","Number","String","max","min","showAdjacentMonths","year","weekdays","weeksInMonth","firstDayOfWeek","undefined","useCalendar","props","adapter","model","v","map","i","date","value","length","isArray","getYear","startOfYear","setYear","getMonth","startOfMonth","setMonth","weekDays","toJsDate","startOfWeek","getDay","day","weekdayLabels","labels","getWeekdays","weeks","getWeekArray","days","flat","daysInMonth","lastDay","week","push","addDays","genDays","today","filter","includes","index","isoDate","toISO","isAdjacent","isSameMonth","isStart","isSameDay","isEnd","endOfMonth","isSame","formatted","format","isDisabled","isHidden","isSelected","some","isToday","isWeekEnd","isWeekStart","localized","daysInWeek","weekNumbers","getWeek","isAfter","d"],"sources":["../../src/composables/calendar.ts"],"sourcesContent":["// Composables\nimport { useDate } from '@/composables/date/date'\nimport { useProxiedModel } from '@/composables/proxiedModel'\n\n// Utilities\nimport { computed } from 'vue'\nimport { propsFactory, wrapInArray } from '@/util'\n\n// Types\nimport type { PropType } from 'vue'\n\n// Types\nexport interface CalendarProps {\n allowedDates: unknown[] | ((date: unknown) => boolean) | undefined\n disabled: boolean\n displayValue?: unknown\n modelValue: unknown[] | undefined\n max: unknown\n min: unknown\n showAdjacentMonths: boolean\n month: number | string | undefined\n weekdays: number[]\n year: number | string | undefined\n weeksInMonth: 'dynamic' | 'static'\n firstDayOfWeek: number | string | undefined\n\n 'onUpdate:modelValue': ((value: unknown[]) => void) | undefined\n 'onUpdate:month': ((value: number) => void) | undefined\n 'onUpdate:year': ((value: number) => void) | undefined\n}\n\nexport type CalendarDay = {\n date: Date\n formatted: string\n isAdjacent: boolean\n isDisabled: boolean\n isEnd: boolean\n isHidden: boolean\n isSame: boolean\n isSelected: boolean\n isStart: boolean\n isToday: boolean\n isWeekEnd: boolean\n isWeekStart: boolean\n isoDate: string\n localized: string\n month: number\n year: number\n}\n\nexport type CalendarWeekdays = 0 | 1 | 2 | 3 | 4 | 5 | 6\n\n// Composables\nexport const makeCalendarProps = propsFactory({\n allowedDates: [Array, Function] as PropType<unknown[] | ((date: unknown) => boolean)>,\n disabled: {\n type: Boolean,\n default: null,\n },\n displayValue: null as any as PropType<unknown>,\n modelValue: Array as PropType<unknown[]>,\n month: [Number, String],\n max: null as any as PropType<unknown>,\n min: null as any as PropType<unknown>,\n showAdjacentMonths: Boolean,\n year: [Number, String],\n weekdays: {\n type: Array as PropType<CalendarWeekdays[]>,\n default: () => [0, 1, 2, 3, 4, 5, 6],\n },\n weeksInMonth: {\n type: String as PropType<'dynamic' | 'static'>,\n default: 'dynamic',\n },\n firstDayOfWeek: {\n type: [Number, String],\n default: undefined,\n },\n}, 'calendar')\n\nexport function useCalendar (props: CalendarProps) {\n const adapter = useDate()\n const model = useProxiedModel(\n props,\n 'modelValue',\n [],\n v => wrapInArray(v).map(i => adapter.date(i)),\n )\n const displayValue = computed(() => {\n if (props.displayValue) return adapter.date(props.displayValue)\n if (model.value.length > 0) return adapter.date(model.value[0])\n if (props.min) return adapter.date(props.min)\n if (Array.isArray(props.allowedDates)) return adapter.date(props.allowedDates[0])\n\n return adapter.date()\n })\n\n const year = useProxiedModel(\n props,\n 'year',\n undefined,\n v => {\n const value = v != null ? Number(v) : adapter.getYear(displayValue.value)\n\n return adapter.startOfYear(adapter.setYear(adapter.date(), value))\n },\n v => adapter.getYear(v)\n )\n\n const month = useProxiedModel(\n props,\n 'month',\n undefined,\n v => {\n const value = v != null ? Number(v) : adapter.getMonth(displayValue.value)\n const date = adapter.setYear(adapter.startOfMonth(adapter.date()), adapter.getYear(year.value))\n\n return adapter.setMonth(date, value)\n },\n v => adapter.getMonth(v)\n )\n\n const weekDays = computed(() => {\n const firstDayOfWeek = adapter.toJsDate(adapter.startOfWeek(adapter.date(), props.firstDayOfWeek)).getDay()\n return props.weekdays.map(day => (day + firstDayOfWeek) % 7)\n })\n\n const weekdayLabels = computed(() => {\n const labels = adapter.getWeekdays(props.firstDayOfWeek)\n\n return weekDays.value.map(day => labels[day])\n })\n\n const weeksInMonth = computed(() => {\n const weeks = adapter.getWeekArray(month.value, props.firstDayOfWeek)\n\n const days = weeks.flat()\n\n // Make sure there's always 6 weeks in month (6 * 7 days)\n // if weeksInMonth is 'static'\n const daysInMonth = 6 * 7\n if (props.weeksInMonth === 'static' && days.length < daysInMonth) {\n const lastDay = days[days.length - 1]\n\n let week = []\n for (let day = 1; day <= daysInMonth - days.length; day++) {\n week.push(adapter.addDays(lastDay, day))\n\n if (day % 7 === 0) {\n weeks.push(week)\n week = []\n }\n }\n }\n\n return weeks\n })\n\n function genDays (days: Date[], today: Date): CalendarDay[] {\n return days.filter(date => {\n return weekDays.value.includes(adapter.toJsDate(date).getDay())\n }).map((date, index) => {\n const isoDate = adapter.toISO(date)\n const isAdjacent = !adapter.isSameMonth(date, month.value)\n const isStart = adapter.isSameDay(date, adapter.startOfMonth(month.value))\n const isEnd = adapter.isSameDay(date, adapter.endOfMonth(month.value))\n const isSame = adapter.isSameDay(date, month.value)\n\n return {\n date,\n formatted: adapter.format(date, 'keyboardDate'),\n isAdjacent,\n isDisabled: isDisabled(date),\n isEnd,\n isHidden: isAdjacent && !props.showAdjacentMonths,\n isSame,\n isSelected: model.value.some(value => adapter.isSameDay(date, value)),\n isStart,\n isToday: adapter.isSameDay(date, today),\n isWeekEnd: index % 7 === 6,\n isWeekStart: index % 7 === 0,\n isoDate,\n localized: adapter.format(date, 'dayOfMonth'),\n month: adapter.getMonth(date),\n year: adapter.getYear(date),\n }\n })\n }\n\n const daysInWeek = computed(() => {\n const lastDay = adapter.startOfWeek(displayValue.value, props.firstDayOfWeek)\n const week: Date[] = []\n for (let day = 0; day <= 6; day++) {\n week.push(adapter.addDays(lastDay, day) as Date)\n }\n\n const today = adapter.date() as Date\n\n return genDays(week as Date[], today as Date)\n })\n\n const daysInMonth = computed(() => {\n const days = weeksInMonth.value.flat() as Date[]\n const today = adapter.date() as Date\n\n return genDays(days as Date[], today)\n })\n\n const weekNumbers = computed(() => {\n return weeksInMonth.value.map(week => {\n return week.length ? adapter.getWeek(week[0], props.firstDayOfWeek) : null\n })\n })\n\n function isDisabled (value: unknown) {\n if (props.disabled) return true\n\n const date = adapter.date(value)\n\n if (props.min && adapter.isAfter(adapter.date(props.min), date)) return true\n if (props.max && adapter.isAfter(date, adapter.date(props.max))) return true\n\n if (Array.isArray(props.allowedDates) && props.allowedDates.length > 0) {\n return !props.allowedDates.some(d => adapter.isSameDay(adapter.date(d), date))\n }\n\n if (typeof props.allowedDates === 'function') {\n return !props.allowedDates(date)\n }\n\n return false\n }\n\n return {\n displayValue,\n daysInMonth,\n daysInWeek,\n genDays,\n model,\n weeksInMonth,\n weekDays,\n weekdayLabels,\n weekNumbers,\n }\n}\n"],"mappings":"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","ignoreList":[]}
@@ -16,7 +16,7 @@ export const createVuetify = function () {
16
16
  ...options
17
17
  });
18
18
  };
19
- export const version = "3.8.10-master.2025-06-18";
19
+ export const version = "3.8.11-master.2025-06-24";
20
20
  createVuetify.version = version;
21
21
  export { blueprints, components, directives };
22
22
  export * from "./composables/index.js";
@@ -2546,40 +2546,40 @@ declare module 'vue' {
2546
2546
  }
2547
2547
  export interface GlobalComponents {
2548
2548
  VApp: typeof import('vuetify/components')['VApp']
2549
- VAlert: typeof import('vuetify/components')['VAlert']
2550
- VAlertTitle: typeof import('vuetify/components')['VAlertTitle']
2551
- VAutocomplete: typeof import('vuetify/components')['VAutocomplete']
2552
- VAvatar: typeof import('vuetify/components')['VAvatar']
2553
- VBadge: typeof import('vuetify/components')['VBadge']
2554
- VBanner: typeof import('vuetify/components')['VBanner']
2555
- VBannerActions: typeof import('vuetify/components')['VBannerActions']
2556
- VBannerText: typeof import('vuetify/components')['VBannerText']
2557
2549
  VAppBar: typeof import('vuetify/components')['VAppBar']
2558
2550
  VAppBarNavIcon: typeof import('vuetify/components')['VAppBarNavIcon']
2559
2551
  VAppBarTitle: typeof import('vuetify/components')['VAppBarTitle']
2552
+ VAvatar: typeof import('vuetify/components')['VAvatar']
2553
+ VAutocomplete: typeof import('vuetify/components')['VAutocomplete']
2560
2554
  VBottomNavigation: typeof import('vuetify/components')['VBottomNavigation']
2555
+ VBanner: typeof import('vuetify/components')['VBanner']
2556
+ VBannerActions: typeof import('vuetify/components')['VBannerActions']
2557
+ VBannerText: typeof import('vuetify/components')['VBannerText']
2558
+ VBottomSheet: typeof import('vuetify/components')['VBottomSheet']
2559
+ VBadge: typeof import('vuetify/components')['VBadge']
2560
+ VBtnToggle: typeof import('vuetify/components')['VBtnToggle']
2561
2561
  VBreadcrumbs: typeof import('vuetify/components')['VBreadcrumbs']
2562
2562
  VBreadcrumbsItem: typeof import('vuetify/components')['VBreadcrumbsItem']
2563
2563
  VBreadcrumbsDivider: typeof import('vuetify/components')['VBreadcrumbsDivider']
2564
- VBottomSheet: typeof import('vuetify/components')['VBottomSheet']
2564
+ VBtn: typeof import('vuetify/components')['VBtn']
2565
2565
  VCard: typeof import('vuetify/components')['VCard']
2566
2566
  VCardActions: typeof import('vuetify/components')['VCardActions']
2567
2567
  VCardItem: typeof import('vuetify/components')['VCardItem']
2568
2568
  VCardSubtitle: typeof import('vuetify/components')['VCardSubtitle']
2569
2569
  VCardText: typeof import('vuetify/components')['VCardText']
2570
2570
  VCardTitle: typeof import('vuetify/components')['VCardTitle']
2571
+ VAlert: typeof import('vuetify/components')['VAlert']
2572
+ VAlertTitle: typeof import('vuetify/components')['VAlertTitle']
2571
2573
  VCheckbox: typeof import('vuetify/components')['VCheckbox']
2572
2574
  VCheckboxBtn: typeof import('vuetify/components')['VCheckboxBtn']
2573
- VCarousel: typeof import('vuetify/components')['VCarousel']
2574
- VCarouselItem: typeof import('vuetify/components')['VCarouselItem']
2575
2575
  VChip: typeof import('vuetify/components')['VChip']
2576
- VChipGroup: typeof import('vuetify/components')['VChipGroup']
2577
2576
  VBtnGroup: typeof import('vuetify/components')['VBtnGroup']
2578
- VBtn: typeof import('vuetify/components')['VBtn']
2579
- VColorPicker: typeof import('vuetify/components')['VColorPicker']
2580
- VCombobox: typeof import('vuetify/components')['VCombobox']
2581
- VBtnToggle: typeof import('vuetify/components')['VBtnToggle']
2577
+ VChipGroup: typeof import('vuetify/components')['VChipGroup']
2578
+ VCode: typeof import('vuetify/components')['VCode']
2582
2579
  VCounter: typeof import('vuetify/components')['VCounter']
2580
+ VCarousel: typeof import('vuetify/components')['VCarousel']
2581
+ VCarouselItem: typeof import('vuetify/components')['VCarouselItem']
2582
+ VCombobox: typeof import('vuetify/components')['VCombobox']
2583
2583
  VDataTable: typeof import('vuetify/components')['VDataTable']
2584
2584
  VDataTableHeaders: typeof import('vuetify/components')['VDataTableHeaders']
2585
2585
  VDataTableFooter: typeof import('vuetify/components')['VDataTableFooter']
@@ -2587,40 +2587,37 @@ declare module 'vue' {
2587
2587
  VDataTableRow: typeof import('vuetify/components')['VDataTableRow']
2588
2588
  VDataTableVirtual: typeof import('vuetify/components')['VDataTableVirtual']
2589
2589
  VDataTableServer: typeof import('vuetify/components')['VDataTableServer']
2590
- VCode: typeof import('vuetify/components')['VCode']
2590
+ VColorPicker: typeof import('vuetify/components')['VColorPicker']
2591
2591
  VDatePicker: typeof import('vuetify/components')['VDatePicker']
2592
2592
  VDatePickerControls: typeof import('vuetify/components')['VDatePickerControls']
2593
2593
  VDatePickerHeader: typeof import('vuetify/components')['VDatePickerHeader']
2594
2594
  VDatePickerMonth: typeof import('vuetify/components')['VDatePickerMonth']
2595
2595
  VDatePickerMonths: typeof import('vuetify/components')['VDatePickerMonths']
2596
2596
  VDatePickerYears: typeof import('vuetify/components')['VDatePickerYears']
2597
- VEmptyState: typeof import('vuetify/components')['VEmptyState']
2598
2597
  VDialog: typeof import('vuetify/components')['VDialog']
2598
+ VEmptyState: typeof import('vuetify/components')['VEmptyState']
2599
+ VDivider: typeof import('vuetify/components')['VDivider']
2600
+ VFooter: typeof import('vuetify/components')['VFooter']
2599
2601
  VExpansionPanels: typeof import('vuetify/components')['VExpansionPanels']
2600
2602
  VExpansionPanel: typeof import('vuetify/components')['VExpansionPanel']
2601
2603
  VExpansionPanelText: typeof import('vuetify/components')['VExpansionPanelText']
2602
2604
  VExpansionPanelTitle: typeof import('vuetify/components')['VExpansionPanelTitle']
2603
- VFooter: typeof import('vuetify/components')['VFooter']
2604
- VDivider: typeof import('vuetify/components')['VDivider']
2605
+ VFab: typeof import('vuetify/components')['VFab']
2605
2606
  VField: typeof import('vuetify/components')['VField']
2606
2607
  VFieldLabel: typeof import('vuetify/components')['VFieldLabel']
2607
- VFileInput: typeof import('vuetify/components')['VFileInput']
2608
- VFab: typeof import('vuetify/components')['VFab']
2609
2608
  VIcon: typeof import('vuetify/components')['VIcon']
2610
2609
  VComponentIcon: typeof import('vuetify/components')['VComponentIcon']
2611
2610
  VSvgIcon: typeof import('vuetify/components')['VSvgIcon']
2612
2611
  VLigatureIcon: typeof import('vuetify/components')['VLigatureIcon']
2613
2612
  VClassIcon: typeof import('vuetify/components')['VClassIcon']
2613
+ VFileInput: typeof import('vuetify/components')['VFileInput']
2614
2614
  VImg: typeof import('vuetify/components')['VImg']
2615
- VInfiniteScroll: typeof import('vuetify/components')['VInfiniteScroll']
2615
+ VInput: typeof import('vuetify/components')['VInput']
2616
2616
  VItemGroup: typeof import('vuetify/components')['VItemGroup']
2617
2617
  VItem: typeof import('vuetify/components')['VItem']
2618
2618
  VKbd: typeof import('vuetify/components')['VKbd']
2619
- VInput: typeof import('vuetify/components')['VInput']
2620
2619
  VLabel: typeof import('vuetify/components')['VLabel']
2621
- VMain: typeof import('vuetify/components')['VMain']
2622
- VMenu: typeof import('vuetify/components')['VMenu']
2623
- VMessages: typeof import('vuetify/components')['VMessages']
2620
+ VInfiniteScroll: typeof import('vuetify/components')['VInfiniteScroll']
2624
2621
  VList: typeof import('vuetify/components')['VList']
2625
2622
  VListGroup: typeof import('vuetify/components')['VListGroup']
2626
2623
  VListImg: typeof import('vuetify/components')['VListImg']
@@ -2630,18 +2627,24 @@ declare module 'vue' {
2630
2627
  VListItemSubtitle: typeof import('vuetify/components')['VListItemSubtitle']
2631
2628
  VListItemTitle: typeof import('vuetify/components')['VListItemTitle']
2632
2629
  VListSubheader: typeof import('vuetify/components')['VListSubheader']
2630
+ VMenu: typeof import('vuetify/components')['VMenu']
2631
+ VMain: typeof import('vuetify/components')['VMain']
2632
+ VMessages: typeof import('vuetify/components')['VMessages']
2633
+ VNumberInput: typeof import('vuetify/components')['VNumberInput']
2633
2634
  VNavigationDrawer: typeof import('vuetify/components')['VNavigationDrawer']
2634
- VOverlay: typeof import('vuetify/components')['VOverlay']
2635
+ VPagination: typeof import('vuetify/components')['VPagination']
2635
2636
  VProgressCircular: typeof import('vuetify/components')['VProgressCircular']
2636
- VNumberInput: typeof import('vuetify/components')['VNumberInput']
2637
2637
  VOtpInput: typeof import('vuetify/components')['VOtpInput']
2638
- VRadioGroup: typeof import('vuetify/components')['VRadioGroup']
2638
+ VOverlay: typeof import('vuetify/components')['VOverlay']
2639
2639
  VProgressLinear: typeof import('vuetify/components')['VProgressLinear']
2640
- VRating: typeof import('vuetify/components')['VRating']
2641
- VSelect: typeof import('vuetify/components')['VSelect']
2640
+ VRadioGroup: typeof import('vuetify/components')['VRadioGroup']
2642
2641
  VSelectionControl: typeof import('vuetify/components')['VSelectionControl']
2643
2642
  VSelectionControlGroup: typeof import('vuetify/components')['VSelectionControlGroup']
2643
+ VRating: typeof import('vuetify/components')['VRating']
2644
2644
  VSkeletonLoader: typeof import('vuetify/components')['VSkeletonLoader']
2645
+ VSlideGroup: typeof import('vuetify/components')['VSlideGroup']
2646
+ VSlideGroupItem: typeof import('vuetify/components')['VSlideGroupItem']
2647
+ VSelect: typeof import('vuetify/components')['VSelect']
2645
2648
  VSheet: typeof import('vuetify/components')['VSheet']
2646
2649
  VSnackbar: typeof import('vuetify/components')['VSnackbar']
2647
2650
  VStepper: typeof import('vuetify/components')['VStepper']
@@ -2651,48 +2654,47 @@ declare module 'vue' {
2651
2654
  VStepperWindow: typeof import('vuetify/components')['VStepperWindow']
2652
2655
  VStepperWindowItem: typeof import('vuetify/components')['VStepperWindowItem']
2653
2656
  VSlider: typeof import('vuetify/components')['VSlider']
2654
- VSlideGroup: typeof import('vuetify/components')['VSlideGroup']
2655
- VSlideGroupItem: typeof import('vuetify/components')['VSlideGroupItem']
2656
2657
  VSwitch: typeof import('vuetify/components')['VSwitch']
2657
2658
  VTab: typeof import('vuetify/components')['VTab']
2658
2659
  VTabs: typeof import('vuetify/components')['VTabs']
2659
2660
  VTabsWindow: typeof import('vuetify/components')['VTabsWindow']
2660
2661
  VTabsWindowItem: typeof import('vuetify/components')['VTabsWindowItem']
2661
2662
  VTable: typeof import('vuetify/components')['VTable']
2662
- VTextarea: typeof import('vuetify/components')['VTextarea']
2663
2663
  VSystemBar: typeof import('vuetify/components')['VSystemBar']
2664
- VTextField: typeof import('vuetify/components')['VTextField']
2665
2664
  VTimeline: typeof import('vuetify/components')['VTimeline']
2666
2665
  VTimelineItem: typeof import('vuetify/components')['VTimelineItem']
2666
+ VTooltip: typeof import('vuetify/components')['VTooltip']
2667
2667
  VToolbar: typeof import('vuetify/components')['VToolbar']
2668
2668
  VToolbarTitle: typeof import('vuetify/components')['VToolbarTitle']
2669
2669
  VToolbarItems: typeof import('vuetify/components')['VToolbarItems']
2670
- VTooltip: typeof import('vuetify/components')['VTooltip']
2671
2670
  VWindow: typeof import('vuetify/components')['VWindow']
2672
2671
  VWindowItem: typeof import('vuetify/components')['VWindowItem']
2673
2672
  VDataIterator: typeof import('vuetify/components')['VDataIterator']
2673
+ VDefaultsProvider: typeof import('vuetify/components')['VDefaultsProvider']
2674
2674
  VConfirmEdit: typeof import('vuetify/components')['VConfirmEdit']
2675
- VForm: typeof import('vuetify/components')['VForm']
2676
2675
  VContainer: typeof import('vuetify/components')['VContainer']
2677
2676
  VCol: typeof import('vuetify/components')['VCol']
2678
2677
  VRow: typeof import('vuetify/components')['VRow']
2679
2678
  VSpacer: typeof import('vuetify/components')['VSpacer']
2679
+ VForm: typeof import('vuetify/components')['VForm']
2680
2680
  VHover: typeof import('vuetify/components')['VHover']
2681
- VLazy: typeof import('vuetify/components')['VLazy']
2682
- VDefaultsProvider: typeof import('vuetify/components')['VDefaultsProvider']
2683
2681
  VLayout: typeof import('vuetify/components')['VLayout']
2684
2682
  VLayoutItem: typeof import('vuetify/components')['VLayoutItem']
2683
+ VLazy: typeof import('vuetify/components')['VLazy']
2685
2684
  VLocaleProvider: typeof import('vuetify/components')['VLocaleProvider']
2686
2685
  VNoSsr: typeof import('vuetify/components')['VNoSsr']
2687
2686
  VParallax: typeof import('vuetify/components')['VParallax']
2688
2687
  VRadio: typeof import('vuetify/components')['VRadio']
2689
2688
  VRangeSlider: typeof import('vuetify/components')['VRangeSlider']
2690
2689
  VResponsive: typeof import('vuetify/components')['VResponsive']
2690
+ VSnackbarQueue: typeof import('vuetify/components')['VSnackbarQueue']
2691
2691
  VSparkline: typeof import('vuetify/components')['VSparkline']
2692
2692
  VSpeedDial: typeof import('vuetify/components')['VSpeedDial']
2693
2693
  VThemeProvider: typeof import('vuetify/components')['VThemeProvider']
2694
2694
  VValidation: typeof import('vuetify/components')['VValidation']
2695
2695
  VVirtualScroll: typeof import('vuetify/components')['VVirtualScroll']
2696
+ VTextField: typeof import('vuetify/components')['VTextField']
2697
+ VTextarea: typeof import('vuetify/components')['VTextarea']
2696
2698
  VFabTransition: typeof import('vuetify/components')['VFabTransition']
2697
2699
  VDialogBottomTransition: typeof import('vuetify/components')['VDialogBottomTransition']
2698
2700
  VDialogTopTransition: typeof import('vuetify/components')['VDialogTopTransition']
@@ -2709,9 +2711,6 @@ declare module 'vue' {
2709
2711
  VExpandTransition: typeof import('vuetify/components')['VExpandTransition']
2710
2712
  VExpandXTransition: typeof import('vuetify/components')['VExpandXTransition']
2711
2713
  VDialogTransition: typeof import('vuetify/components')['VDialogTransition']
2712
- VPagination: typeof import('vuetify/components')['VPagination']
2713
- VSnackbarQueue: typeof import('vuetify/components')['VSnackbarQueue']
2714
- VIconBtn: typeof import('vuetify/labs/components')['VIconBtn']
2715
2714
  VColorInput: typeof import('vuetify/labs/components')['VColorInput']
2716
2715
  VCalendar: typeof import('vuetify/labs/components')['VCalendar']
2717
2716
  VCalendarDay: typeof import('vuetify/labs/components')['VCalendarDay']
@@ -2719,20 +2718,21 @@ declare module 'vue' {
2719
2718
  VCalendarInterval: typeof import('vuetify/labs/components')['VCalendarInterval']
2720
2719
  VCalendarIntervalEvent: typeof import('vuetify/labs/components')['VCalendarIntervalEvent']
2721
2720
  VCalendarMonthDay: typeof import('vuetify/labs/components')['VCalendarMonthDay']
2722
- VTimePicker: typeof import('vuetify/labs/components')['VTimePicker']
2723
- VTimePickerClock: typeof import('vuetify/labs/components')['VTimePickerClock']
2724
- VTimePickerControls: typeof import('vuetify/labs/components')['VTimePickerControls']
2721
+ VIconBtn: typeof import('vuetify/labs/components')['VIconBtn']
2722
+ VStepperVertical: typeof import('vuetify/labs/components')['VStepperVertical']
2723
+ VStepperVerticalItem: typeof import('vuetify/labs/components')['VStepperVerticalItem']
2724
+ VStepperVerticalActions: typeof import('vuetify/labs/components')['VStepperVerticalActions']
2725
2725
  VPicker: typeof import('vuetify/labs/components')['VPicker']
2726
2726
  VPickerTitle: typeof import('vuetify/labs/components')['VPickerTitle']
2727
- VFileUpload: typeof import('vuetify/labs/components')['VFileUpload']
2728
- VFileUploadItem: typeof import('vuetify/labs/components')['VFileUploadItem']
2729
2727
  VTreeview: typeof import('vuetify/labs/components')['VTreeview']
2730
2728
  VTreeviewItem: typeof import('vuetify/labs/components')['VTreeviewItem']
2731
2729
  VTreeviewGroup: typeof import('vuetify/labs/components')['VTreeviewGroup']
2730
+ VFileUpload: typeof import('vuetify/labs/components')['VFileUpload']
2731
+ VFileUploadItem: typeof import('vuetify/labs/components')['VFileUploadItem']
2732
+ VTimePicker: typeof import('vuetify/labs/components')['VTimePicker']
2733
+ VTimePickerClock: typeof import('vuetify/labs/components')['VTimePickerClock']
2734
+ VTimePickerControls: typeof import('vuetify/labs/components')['VTimePickerControls']
2732
2735
  VDateInput: typeof import('vuetify/labs/components')['VDateInput']
2733
2736
  VPullToRefresh: typeof import('vuetify/labs/components')['VPullToRefresh']
2734
- VStepperVertical: typeof import('vuetify/labs/components')['VStepperVertical']
2735
- VStepperVerticalItem: typeof import('vuetify/labs/components')['VStepperVerticalItem']
2736
- VStepperVerticalActions: typeof import('vuetify/labs/components')['VStepperVerticalActions']
2737
2737
  }
2738
2738
  }
package/lib/framework.js CHANGED
@@ -109,7 +109,7 @@ export function createVuetify() {
109
109
  };
110
110
  });
111
111
  }
112
- export const version = "3.8.10-master.2025-06-18";
112
+ export const version = "3.8.11-master.2025-06-24";
113
113
  createVuetify.version = version;
114
114
 
115
115
  // Vue's inject() can only be used in setup
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.10-master.2025-06-18",
4
+ "version": "3.8.11-master.2025-06-24",
5
5
  "author": {
6
6
  "name": "John Leider",
7
7
  "email": "john@vuetifyjs.com"