vuetify 3.9.5 → 3.9.7

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 (107) hide show
  1. package/dist/json/attributes.json +3244 -3236
  2. package/dist/json/importMap-labs.json +28 -28
  3. package/dist/json/importMap.json +162 -162
  4. package/dist/json/tags.json +2 -0
  5. package/dist/json/web-types.json +6419 -6311
  6. package/dist/vuetify-labs.cjs +183 -127
  7. package/dist/vuetify-labs.css +3841 -3706
  8. package/dist/vuetify-labs.d.ts +173 -75
  9. package/dist/vuetify-labs.esm.js +183 -127
  10. package/dist/vuetify-labs.esm.js.map +1 -1
  11. package/dist/vuetify-labs.js +183 -127
  12. package/dist/vuetify-labs.min.css +2 -2
  13. package/dist/vuetify.cjs +78 -44
  14. package/dist/vuetify.cjs.map +1 -1
  15. package/dist/vuetify.css +2171 -2039
  16. package/dist/vuetify.d.ts +70 -70
  17. package/dist/vuetify.esm.js +78 -44
  18. package/dist/vuetify.esm.js.map +1 -1
  19. package/dist/vuetify.js +78 -44
  20. package/dist/vuetify.js.map +1 -1
  21. package/dist/vuetify.min.css +2 -2
  22. package/dist/vuetify.min.js +67 -60
  23. package/dist/vuetify.min.js.map +1 -1
  24. package/lib/components/VAlert/VAlert.css +12 -0
  25. package/lib/components/VAlert/VAlert.sass +13 -0
  26. package/lib/components/VAutocomplete/VAutocomplete.css +2 -1
  27. package/lib/components/VAutocomplete/VAutocomplete.sass +3 -2
  28. package/lib/components/VBtn/VBtn.css +10 -0
  29. package/lib/components/VBtn/VBtn.sass +9 -0
  30. package/lib/components/VCard/VCard.css +11 -0
  31. package/lib/components/VCard/VCard.sass +9 -0
  32. package/lib/components/VChip/VChip.css +6 -0
  33. package/lib/components/VChip/VChip.sass +5 -0
  34. package/lib/components/VChipGroup/VChipGroup.css +25 -0
  35. package/lib/components/VChipGroup/VChipGroup.sass +23 -0
  36. package/lib/components/VCombobox/VCombobox.css +2 -1
  37. package/lib/components/VCombobox/VCombobox.sass +3 -2
  38. package/lib/components/VDatePicker/VDatePicker.js +10 -4
  39. package/lib/components/VDatePicker/VDatePicker.js.map +1 -1
  40. package/lib/components/VDatePicker/VDatePickerYears.js +18 -8
  41. package/lib/components/VDatePicker/VDatePickerYears.js.map +1 -1
  42. package/lib/components/VFileInput/VFileInput.js +4 -2
  43. package/lib/components/VFileInput/VFileInput.js.map +1 -1
  44. package/lib/components/VList/VListItem.css +30 -0
  45. package/lib/components/VList/VListItem.d.ts +3 -3
  46. package/lib/components/VList/VListItem.sass +29 -0
  47. package/lib/components/VNumberInput/VNumberInput.js +6 -6
  48. package/lib/components/VNumberInput/VNumberInput.js.map +1 -1
  49. package/lib/components/VOtpInput/VOtpInput.js +9 -2
  50. package/lib/components/VOtpInput/VOtpInput.js.map +1 -1
  51. package/lib/components/VProgressLinear/VProgressLinear.css +3 -3
  52. package/lib/components/VProgressLinear/VProgressLinear.js +5 -6
  53. package/lib/components/VProgressLinear/VProgressLinear.js.map +1 -1
  54. package/lib/components/VProgressLinear/VProgressLinear.sass +3 -3
  55. package/lib/components/VSelect/VSelect.css +5 -1
  56. package/lib/components/VSelect/VSelect.sass +6 -2
  57. package/lib/components/VSlideGroup/VSlideGroup.js +5 -4
  58. package/lib/components/VSlideGroup/VSlideGroup.js.map +1 -1
  59. package/lib/components/VSnackbar/VSnackbar.css +5 -0
  60. package/lib/components/VSnackbar/VSnackbar.sass +3 -0
  61. package/lib/components/VSparkline/VBarline.js +2 -2
  62. package/lib/components/VSparkline/VBarline.js.map +1 -1
  63. package/lib/components/VSparkline/VTrendline.js +3 -0
  64. package/lib/components/VSparkline/VTrendline.js.map +1 -1
  65. package/lib/components/VTextField/VTextField.js +2 -2
  66. package/lib/components/VTextField/VTextField.js.map +1 -1
  67. package/lib/components/VTextarea/VTextarea.js +4 -2
  68. package/lib/components/VTextarea/VTextarea.js.map +1 -1
  69. package/lib/components/VTimeline/VTimeline.css +22 -0
  70. package/lib/components/VTimeline/VTimeline.sass +12 -0
  71. package/lib/components/VTreeview/VTreeviewItem.css +13 -8
  72. package/lib/components/VTreeview/VTreeviewItem.d.ts +9 -9
  73. package/lib/components/VTreeview/VTreeviewItem.sass +12 -8
  74. package/lib/composables/filter.js +3 -1
  75. package/lib/composables/filter.js.map +1 -1
  76. package/lib/composables/nested/nested.d.ts +1 -1
  77. package/lib/composables/nested/nested.js +5 -2
  78. package/lib/composables/nested/nested.js.map +1 -1
  79. package/lib/composables/rounded.js +3 -3
  80. package/lib/composables/rounded.js.map +1 -1
  81. package/lib/directives/touch/index.js +2 -2
  82. package/lib/directives/touch/index.js.map +1 -1
  83. package/lib/entry-bundler.js +1 -1
  84. package/lib/framework.d.ts +58 -58
  85. package/lib/framework.js +1 -1
  86. package/lib/labs/VDateInput/VDateInput.d.ts +78 -3
  87. package/lib/labs/VDateInput/VDateInput.js +3 -1
  88. package/lib/labs/VDateInput/VDateInput.js.map +1 -1
  89. package/lib/labs/VIconBtn/VIconBtn.js +1 -1
  90. package/lib/labs/VIconBtn/VIconBtn.js.map +1 -1
  91. package/lib/labs/VPie/VPie.css +3 -0
  92. package/lib/labs/VPie/VPie.js +71 -29
  93. package/lib/labs/VPie/VPie.js.map +1 -1
  94. package/lib/labs/VPie/VPie.sass +3 -0
  95. package/lib/labs/VPie/VPieSegment.d.ts +25 -2
  96. package/lib/labs/VPie/VPieSegment.js +11 -6
  97. package/lib/labs/VPie/VPieSegment.js.map +1 -1
  98. package/lib/labs/VPie/VPieTooltip.d.ts +10 -0
  99. package/lib/labs/VPie/VPieTooltip.js +4 -22
  100. package/lib/labs/VPie/VPieTooltip.js.map +1 -1
  101. package/lib/labs/VPie/types.d.ts +1 -0
  102. package/lib/labs/VPie/types.js.map +1 -1
  103. package/lib/labs/VVideo/VVideo.css +4 -4
  104. package/lib/labs/VVideo/VVideo.js +24 -33
  105. package/lib/labs/VVideo/VVideo.js.map +1 -1
  106. package/lib/labs/VVideo/VVideo.sass +4 -4
  107. package/package.json +2 -2
@@ -1 +1 @@
1
- {"version":3,"file":"VFileInput.js","names":["VChip","VCounter","VField","makeVFieldProps","makeVInputProps","VInput","useFileDrop","useFocus","forwardRefs","useLocale","useProxiedModel","computed","nextTick","ref","shallowRef","toRef","watch","callEvent","filterInputAttrs","genericComponent","humanReadableFileSize","propsFactory","useRender","wrapInArray","makeVFileInputProps","chips","Boolean","counter","counterSizeString","type","String","default","counterString","hideInput","multiple","showSize","Number","validator","v","includes","prependIcon","modelValue","Array","Object","props","val","every","clearable","VFileInput","name","inheritAttrs","emits","e","focused","files","setup","_ref","attrs","emit","slots","t","model","isArray","isFocused","focus","blur","base","undefined","totalBytes","value","reduce","bytes","_ref2","size","totalBytesReadable","fileNames","map","file","counterValue","fileCount","length","vInputRef","vFieldRef","inputRef","isActive","active","isPlainOrUnderlined","variant","isDragging","handleDrop","hasFilesOrFolders","onFocus","document","activeElement","onClickPrepend","click","onControlMousedown","onControlClick","onClear","stopPropagation","onDragover","preventDefault","stopImmediatePropagation","onDragleave","onDrop","dataTransfer","DataTransfer","items","add","dispatchEvent","Event","bubbles","newValue","hasModelReset","hasCounter","hasDetails","details","rootAttrs","inputAttrs","_","inputProps","filterProps","fieldProps","_createVNode","_mergeProps","class","style","_ref3","id","isDisabled","isDirty","isReadonly","isValid","dirty","_ref4","fieldClass","slotProps","_createElementVNode","_Fragment","target","_normalizeClass","selection","text","join","disabled"],"sources":["../../../src/components/VFileInput/VFileInput.tsx"],"sourcesContent":["// Styles\nimport './VFileInput.sass'\n\n// Components\nimport { VChip } from '@/components/VChip'\nimport { VCounter } from '@/components/VCounter'\nimport { VField } from '@/components/VField'\nimport { makeVFieldProps } from '@/components/VField/VField'\nimport { makeVInputProps, VInput } from '@/components/VInput/VInput'\n\n// Composables\nimport { useFileDrop } from '@/composables/fileDrop'\nimport { useFocus } from '@/composables/focus'\nimport { forwardRefs } from '@/composables/forwardRefs'\nimport { useLocale } from '@/composables/locale'\nimport { useProxiedModel } from '@/composables/proxiedModel'\n\n// Utilities\nimport { computed, nextTick, ref, shallowRef, toRef, watch } from 'vue'\nimport {\n callEvent,\n filterInputAttrs,\n genericComponent,\n humanReadableFileSize,\n propsFactory,\n useRender,\n wrapInArray,\n} from '@/util'\n\n// Types\nimport type { PropType } from 'vue'\nimport type { VFieldSlots } from '@/components/VField/VField'\nimport type { VInputSlots } from '@/components/VInput/VInput'\n\nexport type VFileInputSlots = VInputSlots & VFieldSlots & {\n counter: never\n selection: {\n fileNames: string[]\n totalBytes: number\n totalBytesReadable: string\n }\n}\n\nexport const makeVFileInputProps = propsFactory({\n chips: Boolean,\n counter: Boolean,\n counterSizeString: {\n type: String,\n default: '$vuetify.fileInput.counterSize',\n },\n counterString: {\n type: String,\n default: '$vuetify.fileInput.counter',\n },\n hideInput: Boolean,\n multiple: Boolean,\n showSize: {\n type: [Boolean, Number, String] as PropType<boolean | 1000 | 1024>,\n default: false,\n validator: (v: boolean | number) => {\n return (\n typeof v === 'boolean' ||\n [1000, 1024].includes(Number(v))\n )\n },\n },\n\n ...makeVInputProps({ prependIcon: '$file' }),\n\n modelValue: {\n type: [Array, Object] as PropType<File[] | File | null>,\n default: (props: any) => props.multiple ? [] : null,\n validator: (val: any) => {\n return wrapInArray(val).every(v => v != null && typeof v === 'object')\n },\n },\n\n ...makeVFieldProps({ clearable: true }),\n}, 'VFileInput')\n\nexport const VFileInput = genericComponent<VFileInputSlots>()({\n name: 'VFileInput',\n\n inheritAttrs: false,\n\n props: makeVFileInputProps(),\n\n emits: {\n 'click:control': (e: MouseEvent) => true,\n 'mousedown:control': (e: MouseEvent) => true,\n 'update:focused': (focused: boolean) => true,\n 'update:modelValue': (files: File | File[]) => true,\n },\n\n setup (props, { attrs, emit, slots }) {\n const { t } = useLocale()\n const model = useProxiedModel(\n props,\n 'modelValue',\n props.modelValue,\n val => wrapInArray(val),\n val => (!props.multiple && Array.isArray(val)) ? val[0] : val,\n )\n const { isFocused, focus, blur } = useFocus(props)\n const base = computed(() => typeof props.showSize !== 'boolean' ? props.showSize : undefined)\n const totalBytes = computed(() => (model.value ?? []).reduce((bytes, { size = 0 }) => bytes + size, 0))\n const totalBytesReadable = computed(() => humanReadableFileSize(totalBytes.value, base.value))\n\n const fileNames = computed(() => (model.value ?? []).map(file => {\n const { name = '', size = 0 } = file\n\n return !props.showSize\n ? name\n : `${name} (${humanReadableFileSize(size, base.value)})`\n }))\n\n const counterValue = computed(() => {\n const fileCount = model.value?.length ?? 0\n if (props.showSize) return t(props.counterSizeString, fileCount, totalBytesReadable.value)\n else return t(props.counterString, fileCount)\n })\n const vInputRef = ref<VInput>()\n const vFieldRef = ref<VInput>()\n const inputRef = ref<HTMLInputElement>()\n const isActive = toRef(() => isFocused.value || props.active)\n const isPlainOrUnderlined = computed(() => ['plain', 'underlined'].includes(props.variant))\n const isDragging = shallowRef(false)\n const { handleDrop, hasFilesOrFolders } = useFileDrop()\n\n function onFocus () {\n if (inputRef.value !== document.activeElement) {\n inputRef.value?.focus()\n }\n\n if (!isFocused.value) focus()\n }\n function onClickPrepend (e: MouseEvent) {\n inputRef.value?.click()\n }\n function onControlMousedown (e: MouseEvent) {\n emit('mousedown:control', e)\n }\n function onControlClick (e: MouseEvent) {\n inputRef.value?.click()\n\n emit('click:control', e)\n }\n function onClear (e: MouseEvent) {\n e.stopPropagation()\n\n onFocus()\n\n nextTick(() => {\n model.value = []\n\n callEvent(props['onClick:clear'], e)\n })\n }\n function onDragover (e: DragEvent) {\n e.preventDefault()\n e.stopImmediatePropagation()\n isDragging.value = true\n }\n function onDragleave (e: DragEvent) {\n e.preventDefault()\n isDragging.value = false\n }\n async function onDrop (e: DragEvent) {\n e.preventDefault()\n e.stopImmediatePropagation()\n isDragging.value = false\n\n if (!inputRef.value || !hasFilesOrFolders(e)) return\n\n const dataTransfer = new DataTransfer()\n for (const file of await handleDrop(e)) {\n dataTransfer.items.add(file)\n }\n\n inputRef.value.files = dataTransfer.files\n inputRef.value.dispatchEvent(new Event('change', { bubbles: true }))\n }\n\n watch(model, newValue => {\n const hasModelReset = !Array.isArray(newValue) || !newValue.length\n\n if (hasModelReset && inputRef.value) {\n inputRef.value.value = ''\n }\n })\n\n useRender(() => {\n const hasCounter = !!(slots.counter || props.counter)\n const hasDetails = !!(hasCounter || slots.details)\n const [rootAttrs, inputAttrs] = filterInputAttrs(attrs)\n const { modelValue: _, ...inputProps } = VInput.filterProps(props)\n const fieldProps = VField.filterProps(props)\n\n return (\n <VInput\n ref={ vInputRef }\n modelValue={ props.multiple ? model.value : model.value[0] }\n class={[\n 'v-file-input',\n {\n 'v-file-input--chips': !!props.chips,\n 'v-file-input--dragging': isDragging.value,\n 'v-file-input--hide': props.hideInput,\n 'v-input--plain-underlined': isPlainOrUnderlined.value,\n },\n props.class,\n ]}\n style={ props.style }\n onClick:prepend={ onClickPrepend }\n { ...rootAttrs }\n { ...inputProps }\n centerAffix={ !isPlainOrUnderlined.value }\n focused={ isFocused.value }\n >\n {{\n ...slots,\n default: ({\n id,\n isDisabled,\n isDirty,\n isReadonly,\n isValid,\n hasDetails,\n }) => (\n <VField\n ref={ vFieldRef }\n prependIcon={ props.prependIcon }\n onMousedown={ onControlMousedown }\n onClick={ onControlClick }\n onClick:clear={ onClear }\n onClick:prependInner={ props['onClick:prependInner'] }\n onClick:appendInner={ props['onClick:appendInner'] }\n { ...fieldProps }\n id={ id.value }\n active={ isActive.value || isDirty.value }\n dirty={ isDirty.value || props.dirty }\n disabled={ isDisabled.value }\n focused={ isFocused.value }\n details={ hasDetails.value }\n error={ isValid.value === false }\n onDragover={ onDragover }\n onDrop={ onDrop }\n >\n {{\n ...slots,\n default: ({\n props: { class: fieldClass, ...slotProps },\n }) => (\n <>\n <input\n ref={ inputRef }\n type=\"file\"\n readonly={ isReadonly.value }\n disabled={ isDisabled.value }\n multiple={ props.multiple }\n name={ props.name }\n onClick={ e => {\n e.stopPropagation()\n\n if (isReadonly.value) e.preventDefault()\n\n onFocus()\n }}\n onChange={ e => {\n if (!e.target) return\n\n const target = e.target as HTMLInputElement\n model.value = [...target.files ?? []]\n }}\n onDragleave={ onDragleave }\n onFocus={ onFocus }\n onBlur={ blur }\n { ...slotProps }\n { ...inputAttrs }\n />\n\n <div class={ fieldClass }>\n { !!model.value?.length && !props.hideInput && (\n slots.selection ? slots.selection({\n fileNames: fileNames.value,\n totalBytes: totalBytes.value,\n totalBytesReadable: totalBytesReadable.value,\n })\n : props.chips ? fileNames.value.map(text => (\n <VChip\n key={ text }\n size=\"small\"\n text={ text }\n />\n ))\n : fileNames.value.join(', ')\n )}\n </div>\n </>\n ),\n }}\n </VField>\n ),\n details: hasDetails ? slotProps => (\n <>\n { slots.details?.(slotProps) }\n\n { hasCounter && (\n <>\n <span />\n\n <VCounter\n active={ !!model.value?.length }\n value={ counterValue.value }\n disabled={ props.disabled }\n v-slots:default={ slots.counter }\n />\n </>\n )}\n </>\n ) : undefined,\n }}\n </VInput>\n )\n })\n\n return forwardRefs({}, vInputRef, vFieldRef, inputRef)\n },\n})\n\nexport type VFileInput = InstanceType<typeof VFileInput>\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"VFileInput.js","names":["VChip","VCounter","VField","makeVFieldProps","makeVInputProps","VInput","useFileDrop","useFocus","forwardRefs","useLocale","useProxiedModel","computed","nextTick","ref","shallowRef","toRef","watch","callEvent","filterInputAttrs","genericComponent","humanReadableFileSize","propsFactory","useRender","wrapInArray","makeVFileInputProps","chips","Boolean","counter","counterSizeString","type","String","default","counterString","hideInput","multiple","showSize","Number","validator","v","includes","prependIcon","modelValue","Array","Object","props","val","every","clearable","VFileInput","name","inheritAttrs","emits","e","focused","files","setup","_ref","attrs","emit","slots","t","model","isArray","isFocused","focus","blur","base","undefined","totalBytes","value","reduce","bytes","_ref2","size","totalBytesReadable","fileNames","map","file","counterValue","fileCount","length","vInputRef","vFieldRef","inputRef","isActive","active","isPlainOrUnderlined","variant","isDragging","handleDrop","hasFilesOrFolders","onFocus","document","activeElement","onClickPrepend","click","onControlMousedown","onControlClick","onClear","stopPropagation","onDragover","preventDefault","stopImmediatePropagation","onDragleave","onDrop","dataTransfer","DataTransfer","items","add","dispatchEvent","Event","bubbles","newValue","hasModelReset","hasCounter","hasDetails","details","rootAttrs","inputAttrs","_","inputProps","filterProps","fieldProps","_createVNode","_mergeProps","class","style","_ref3","id","isDisabled","isDirty","isReadonly","isValid","dirty","_ref4","fieldClass","slotProps","_createElementVNode","_Fragment","target","_normalizeClass","selection","text","join","disabled"],"sources":["../../../src/components/VFileInput/VFileInput.tsx"],"sourcesContent":["// Styles\nimport './VFileInput.sass'\n\n// Components\nimport { VChip } from '@/components/VChip'\nimport { VCounter } from '@/components/VCounter'\nimport { VField } from '@/components/VField'\nimport { makeVFieldProps } from '@/components/VField/VField'\nimport { makeVInputProps, VInput } from '@/components/VInput/VInput'\n\n// Composables\nimport { useFileDrop } from '@/composables/fileDrop'\nimport { useFocus } from '@/composables/focus'\nimport { forwardRefs } from '@/composables/forwardRefs'\nimport { useLocale } from '@/composables/locale'\nimport { useProxiedModel } from '@/composables/proxiedModel'\n\n// Utilities\nimport { computed, nextTick, ref, shallowRef, toRef, watch } from 'vue'\nimport {\n callEvent,\n filterInputAttrs,\n genericComponent,\n humanReadableFileSize,\n propsFactory,\n useRender,\n wrapInArray,\n} from '@/util'\n\n// Types\nimport type { PropType } from 'vue'\nimport type { VFieldSlots } from '@/components/VField/VField'\nimport type { VInputSlots } from '@/components/VInput/VInput'\n\nexport type VFileInputSlots = VInputSlots & VFieldSlots & {\n counter: never\n selection: {\n fileNames: string[]\n totalBytes: number\n totalBytesReadable: string\n }\n}\n\nexport const makeVFileInputProps = propsFactory({\n chips: Boolean,\n counter: Boolean,\n counterSizeString: {\n type: String,\n default: '$vuetify.fileInput.counterSize',\n },\n counterString: {\n type: String,\n default: '$vuetify.fileInput.counter',\n },\n hideInput: Boolean,\n multiple: Boolean,\n showSize: {\n type: [Boolean, Number, String] as PropType<boolean | 1000 | 1024>,\n default: false,\n validator: (v: boolean | number) => {\n return (\n typeof v === 'boolean' ||\n [1000, 1024].includes(Number(v))\n )\n },\n },\n\n ...makeVInputProps({ prependIcon: '$file' }),\n\n modelValue: {\n type: [Array, Object] as PropType<File[] | File | null>,\n default: (props: any) => props.multiple ? [] : null,\n validator: (val: any) => {\n return wrapInArray(val).every(v => v != null && typeof v === 'object')\n },\n },\n\n ...makeVFieldProps({ clearable: true }),\n}, 'VFileInput')\n\nexport const VFileInput = genericComponent<VFileInputSlots>()({\n name: 'VFileInput',\n\n inheritAttrs: false,\n\n props: makeVFileInputProps(),\n\n emits: {\n 'click:control': (e: MouseEvent) => true,\n 'mousedown:control': (e: MouseEvent) => true,\n 'update:focused': (focused: boolean) => true,\n 'update:modelValue': (files: File | File[]) => true,\n },\n\n setup (props, { attrs, emit, slots }) {\n const { t } = useLocale()\n const model = useProxiedModel(\n props,\n 'modelValue',\n props.modelValue,\n val => wrapInArray(val),\n val => (!props.multiple && Array.isArray(val)) ? val[0] : val,\n )\n const { isFocused, focus, blur } = useFocus(props)\n const base = computed(() => typeof props.showSize !== 'boolean' ? props.showSize : undefined)\n const totalBytes = computed(() => (model.value ?? []).reduce((bytes, { size = 0 }) => bytes + size, 0))\n const totalBytesReadable = computed(() => humanReadableFileSize(totalBytes.value, base.value))\n\n const fileNames = computed(() => (model.value ?? []).map(file => {\n const { name = '', size = 0 } = file\n\n return !props.showSize\n ? name\n : `${name} (${humanReadableFileSize(size, base.value)})`\n }))\n\n const counterValue = computed(() => {\n const fileCount = model.value?.length ?? 0\n if (props.showSize) return t(props.counterSizeString, fileCount, totalBytesReadable.value)\n else return t(props.counterString, fileCount)\n })\n const vInputRef = ref<VInput>()\n const vFieldRef = ref<VInput>()\n const inputRef = ref<HTMLInputElement>()\n const isActive = toRef(() => isFocused.value || props.active)\n const isPlainOrUnderlined = computed(() => ['plain', 'underlined'].includes(props.variant))\n const isDragging = shallowRef(false)\n const { handleDrop, hasFilesOrFolders } = useFileDrop()\n\n function onFocus () {\n if (inputRef.value !== document.activeElement) {\n inputRef.value?.focus()\n }\n\n if (!isFocused.value) focus()\n }\n function onClickPrepend (e: MouseEvent) {\n inputRef.value?.click()\n }\n function onControlMousedown (e: MouseEvent) {\n emit('mousedown:control', e)\n }\n function onControlClick (e: MouseEvent) {\n inputRef.value?.click()\n\n emit('click:control', e)\n }\n function onClear (e: MouseEvent) {\n e.stopPropagation()\n\n onFocus()\n\n nextTick(() => {\n model.value = []\n\n callEvent(props['onClick:clear'], e)\n })\n }\n function onDragover (e: DragEvent) {\n e.preventDefault()\n e.stopImmediatePropagation()\n isDragging.value = true\n }\n function onDragleave (e: DragEvent) {\n e.preventDefault()\n isDragging.value = false\n }\n async function onDrop (e: DragEvent) {\n e.preventDefault()\n e.stopImmediatePropagation()\n isDragging.value = false\n\n if (!inputRef.value || !hasFilesOrFolders(e)) return\n\n const dataTransfer = new DataTransfer()\n for (const file of await handleDrop(e)) {\n dataTransfer.items.add(file)\n }\n\n inputRef.value.files = dataTransfer.files\n inputRef.value.dispatchEvent(new Event('change', { bubbles: true }))\n }\n\n watch(model, newValue => {\n const hasModelReset = !Array.isArray(newValue) || !newValue.length\n\n if (hasModelReset && inputRef.value) {\n inputRef.value.value = ''\n }\n })\n\n useRender(() => {\n const hasCounter = !!(slots.counter || props.counter)\n const hasDetails = !!(hasCounter || slots.details)\n const [rootAttrs, inputAttrs] = filterInputAttrs(attrs)\n const { modelValue: _, ...inputProps } = VInput.filterProps(props)\n const fieldProps = {\n ...VField.filterProps(props),\n 'onClick:clear': onClear,\n }\n\n return (\n <VInput\n ref={ vInputRef }\n modelValue={ props.multiple ? model.value : model.value[0] }\n class={[\n 'v-file-input',\n {\n 'v-file-input--chips': !!props.chips,\n 'v-file-input--dragging': isDragging.value,\n 'v-file-input--hide': props.hideInput,\n 'v-input--plain-underlined': isPlainOrUnderlined.value,\n },\n props.class,\n ]}\n style={ props.style }\n onClick:prepend={ onClickPrepend }\n { ...rootAttrs }\n { ...inputProps }\n centerAffix={ !isPlainOrUnderlined.value }\n focused={ isFocused.value }\n >\n {{\n ...slots,\n default: ({\n id,\n isDisabled,\n isDirty,\n isReadonly,\n isValid,\n hasDetails,\n }) => (\n <VField\n ref={ vFieldRef }\n prependIcon={ props.prependIcon }\n onMousedown={ onControlMousedown }\n onClick={ onControlClick }\n onClick:prependInner={ props['onClick:prependInner'] }\n onClick:appendInner={ props['onClick:appendInner'] }\n { ...fieldProps }\n id={ id.value }\n active={ isActive.value || isDirty.value }\n dirty={ isDirty.value || props.dirty }\n disabled={ isDisabled.value }\n focused={ isFocused.value }\n details={ hasDetails.value }\n error={ isValid.value === false }\n onDragover={ onDragover }\n onDrop={ onDrop }\n >\n {{\n ...slots,\n default: ({\n props: { class: fieldClass, ...slotProps },\n }) => (\n <>\n <input\n ref={ inputRef }\n type=\"file\"\n readonly={ isReadonly.value }\n disabled={ isDisabled.value }\n multiple={ props.multiple }\n name={ props.name }\n onClick={ e => {\n e.stopPropagation()\n\n if (isReadonly.value) e.preventDefault()\n\n onFocus()\n }}\n onChange={ e => {\n if (!e.target) return\n\n const target = e.target as HTMLInputElement\n model.value = [...target.files ?? []]\n }}\n onDragleave={ onDragleave }\n onFocus={ onFocus }\n onBlur={ blur }\n { ...slotProps }\n { ...inputAttrs }\n />\n\n <div class={ fieldClass }>\n { !!model.value?.length && !props.hideInput && (\n slots.selection ? slots.selection({\n fileNames: fileNames.value,\n totalBytes: totalBytes.value,\n totalBytesReadable: totalBytesReadable.value,\n })\n : props.chips ? fileNames.value.map(text => (\n <VChip\n key={ text }\n size=\"small\"\n text={ text }\n />\n ))\n : fileNames.value.join(', ')\n )}\n </div>\n </>\n ),\n }}\n </VField>\n ),\n details: hasDetails ? slotProps => (\n <>\n { slots.details?.(slotProps) }\n\n { hasCounter && (\n <>\n <span />\n\n <VCounter\n active={ !!model.value?.length }\n value={ counterValue.value }\n disabled={ props.disabled }\n v-slots:default={ slots.counter }\n />\n </>\n )}\n </>\n ) : undefined,\n }}\n </VInput>\n )\n })\n\n return forwardRefs({}, vInputRef, vFieldRef, inputRef)\n },\n})\n\nexport type VFileInput = InstanceType<typeof VFileInput>\n"],"mappings":"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","ignoreList":[]}
@@ -465,4 +465,34 @@
465
465
  }
466
466
  .v-list-group__header:not(.v-treeview-item--activatable-group-activator).v-list-item--active:hover .v-list-item__overlay {
467
467
  opacity: calc(var(--v-hover-opacity) * var(--v-theme-overlay-multiplier));
468
+ }
469
+
470
+ @media (forced-colors: active) {
471
+ .v-list-item:not(.v-list-item--active) {
472
+ color: buttontext;
473
+ }
474
+ .v-list-item--variant-plain.v-list-item--active {
475
+ color: highlight !important;
476
+ }
477
+ .v-list-item:not(.v-list-item--variant-plain).v-list-item--active {
478
+ background-color: highlight !important;
479
+ color: highlighttext !important;
480
+ }
481
+ .v-list-item-title {
482
+ forced-color-adjust: preserve-parent-color;
483
+ }
484
+ .v-list-item--active .v-list-item__prepend > .v-badge .v-icon,
485
+ .v-list-item--active .v-list-item__prepend > .v-icon,
486
+ .v-list-item--active .v-list-item__append > .v-badge .v-icon,
487
+ .v-list-item--active .v-list-item__append > .v-icon {
488
+ forced-color-adjust: preserve-parent-color;
489
+ }
490
+ @supports selector(:focus-visible) {
491
+ .v-list-item::after {
492
+ color: buttontext;
493
+ }
494
+ .v-list-item:focus-visible::after {
495
+ opacity: 1;
496
+ }
497
+ }
468
498
  }
@@ -417,7 +417,7 @@ export declare const VListItem: {
417
417
  openOnSelect: (id: unknown, value: boolean, event?: Event) => void;
418
418
  getPath: (id: unknown) => unknown[];
419
419
  };
420
- id: import("vue").ComputedRef<{}>;
420
+ id: import("vue").ComputedRef<{} | null>;
421
421
  link: import("../../composables/router.js").UseLink;
422
422
  }, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
423
423
  click: (e: MouseEvent | KeyboardEvent) => true;
@@ -553,7 +553,7 @@ export declare const VListItem: {
553
553
  openOnSelect: (id: unknown, value: boolean, event?: Event) => void;
554
554
  getPath: (id: unknown) => unknown[];
555
555
  };
556
- id: import("vue").ComputedRef<{}>;
556
+ id: import("vue").ComputedRef<{} | null>;
557
557
  link: import("../../composables/router.js").UseLink;
558
558
  }, {}, {}, {}, {
559
559
  replace: boolean;
@@ -678,7 +678,7 @@ export declare const VListItem: {
678
678
  openOnSelect: (id: unknown, value: boolean, event?: Event) => void;
679
679
  getPath: (id: unknown) => unknown[];
680
680
  };
681
- id: import("vue").ComputedRef<{}>;
681
+ id: import("vue").ComputedRef<{} | null>;
682
682
  link: import("../../composables/router.js").UseLink;
683
683
  }, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
684
684
  click: (e: MouseEvent | KeyboardEvent) => true;
@@ -335,3 +335,32 @@
335
335
  &:hover
336
336
  .v-list-item__overlay
337
337
  opacity: calc(#{map.get(settings.$states, 'hover')} * var(--v-theme-overlay-multiplier))
338
+
339
+ @media (forced-colors: active)
340
+ .v-list-item
341
+ &:not(&--active)
342
+ color: buttontext
343
+
344
+ &--variant-plain.v-list-item--active
345
+ color: highlight !important
346
+
347
+ &:not(&--variant-plain).v-list-item--active
348
+ background-color: highlight !important
349
+ color: highlighttext !important
350
+
351
+ &-title
352
+ forced-color-adjust: preserve-parent-color
353
+
354
+ &--active
355
+ .v-list-item__prepend,
356
+ .v-list-item__append
357
+ > .v-badge .v-icon,
358
+ > .v-icon
359
+ forced-color-adjust: preserve-parent-color
360
+
361
+ @supports selector(:focus-visible)
362
+ &::after
363
+ color: buttontext
364
+
365
+ &:focus-visible::after
366
+ opacity: 1
@@ -286,7 +286,6 @@ export const VNumberInput = genericComponent()({
286
286
  "aria-hidden": "true",
287
287
  "data-testid": "increment",
288
288
  "disabled": !canIncrease.value,
289
- "flat": true,
290
289
  "height": controlNodeDefaultHeight.value,
291
290
  "icon": incrementIcon.value,
292
291
  "key": "increment-btn",
@@ -295,16 +294,17 @@ export const VNumberInput = genericComponent()({
295
294
  "onPointerup": onControlMouseup,
296
295
  "onPointercancel": onControlMouseup,
297
296
  "size": controlNodeSize.value,
297
+ "variant": "text",
298
298
  "tabindex": "-1"
299
299
  }, null) : _createVNode(VDefaultsProvider, {
300
300
  "key": "increment-defaults",
301
301
  "defaults": {
302
302
  VBtn: {
303
303
  disabled: !canIncrease.value,
304
- flat: true,
305
304
  height: controlNodeDefaultHeight.value,
306
305
  size: controlNodeSize.value,
307
- icon: incrementIcon.value
306
+ icon: incrementIcon.value,
307
+ variant: 'text'
308
308
  }
309
309
  }
310
310
  }, {
@@ -316,7 +316,6 @@ export const VNumberInput = genericComponent()({
316
316
  "aria-hidden": "true",
317
317
  "data-testid": "decrement",
318
318
  "disabled": !canDecrease.value,
319
- "flat": true,
320
319
  "height": controlNodeDefaultHeight.value,
321
320
  "icon": decrementIcon.value,
322
321
  "key": "decrement-btn",
@@ -325,16 +324,17 @@ export const VNumberInput = genericComponent()({
325
324
  "onPointerup": onControlMouseup,
326
325
  "onPointercancel": onControlMouseup,
327
326
  "size": controlNodeSize.value,
327
+ "variant": "text",
328
328
  "tabindex": "-1"
329
329
  }, null) : _createVNode(VDefaultsProvider, {
330
330
  "key": "decrement-defaults",
331
331
  "defaults": {
332
332
  VBtn: {
333
333
  disabled: !canDecrease.value,
334
- flat: true,
335
334
  height: controlNodeDefaultHeight.value,
336
335
  size: controlNodeSize.value,
337
- icon: decrementIcon.value
336
+ icon: decrementIcon.value,
337
+ variant: 'text'
338
338
  }
339
339
  }
340
340
  }, {
@@ -1 +1 @@
1
- {"version":3,"file":"VNumberInput.js","names":["VBtn","VDefaultsProvider","VDivider","makeVTextFieldProps","VTextField","useHold","useForm","forwardRefs","useLocale","useProxiedModel","computed","nextTick","onMounted","ref","shallowRef","toRef","watch","watchEffect","clamp","escapeForRegex","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","minFractionDigits","decimalSeparator","validator","v","length","VNumberInput","name","props","emits","val","setup","_ref","slots","vTextFieldRef","holdStart","holdStop","toggleUpDown","form","controlsDisabled","isDisabled","value","isReadonly","isFocused","focused","decimalSeparatorFromLocale","correctPrecision","arguments","undefined","trim","fixed","toFixed","toString","replace","baseDigits","fractionDigits","split","padEnd","RegExp","filter","join","model","_inputText","isNaN","inputText","get","set","parsedValue","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","cursorPosition","setSelectionRange","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 { useLocale } from '@/composables/locale'\nimport { useProxiedModel } from '@/composables/proxiedModel'\n\n// Utilities\nimport { computed, nextTick, onMounted, ref, shallowRef, toRef, watch, watchEffect } from 'vue'\nimport { clamp, escapeForRegex, 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 minFractionDigits: {\n type: Number as PropType<number | null>,\n default: null,\n },\n decimalSeparator: {\n type: String,\n validator: (v: any) => !v || v.length === 1,\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 const { decimalSeparator: decimalSeparatorFromLocale } = useLocale()\n const decimalSeparator = computed(() => props.decimalSeparator?.[0] || decimalSeparatorFromLocale.value)\n\n function correctPrecision (val: number, precision = props.precision, trim = true) {\n const fixed = precision == null\n ? String(val)\n : val.toFixed(precision)\n\n if (isFocused.value && trim) {\n return Number(fixed).toString() // trim zeros\n .replace('.', decimalSeparator.value)\n }\n\n if (props.minFractionDigits === null || (precision !== null && precision < props.minFractionDigits)) {\n return fixed.replace('.', decimalSeparator.value)\n }\n\n let [baseDigits, fractionDigits] = fixed.split('.')\n\n fractionDigits = (fractionDigits ?? '').padEnd(props.minFractionDigits, '0')\n .replace(new RegExp(`(?<=\\\\d{${props.minFractionDigits}})0+$`, 'g'), '')\n\n return [\n baseDigits,\n fractionDigits,\n ].filter(Boolean).join(decimalSeparator.value)\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 return\n }\n const parsedValue = Number(val.replace(decimalSeparator.value, '.'))\n if (!isNaN(parsedValue) && parsedValue <= props.max && parsedValue >= props.min) {\n model.value = parsedValue\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 watch(() => props.minFractionDigits, () => 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, decimalSeparator.value)\n\n // Allow only numbers, \"-\" and {decimal separator}\n // Allow \"-\" and {decimal separator} only once\n // Allow \"-\" only at the start\n if (!new RegExp(`^-?\\\\d*${escapeForRegex(decimalSeparator.value)}?\\\\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(decimalSeparator.value)[1]?.length > props.precision) {\n e.preventDefault()\n inputElement!.value = potentialNewNumber\n\n const cursorPosition = (selectionStart ?? 0) + e.data.length\n inputElement!.setSelectionRange(cursorPosition, cursorPosition)\n }\n // Ignore decimal separator when precision = 0\n if (props.precision === 0 && potentialNewInputVal.includes(decimalSeparator.value)) {\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 e.stopPropagation()\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 const parsedValue = Number(actualText.replace(decimalSeparator.value, '.'))\n if (actualText && !isNaN(parsedValue)) {\n inputText.value = correctPrecision(clamp(parsedValue, props.min, props.max))\n } else {\n inputText.value = null\n }\n }\n\n function formatInputValue () {\n if (controlsDisabled.value) return\n inputText.value = model.value !== null && !isNaN(model.value)\n ? correctPrecision(model.value, props.precision, false)\n : null\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 .replace('.', decimalSeparator.value)\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":[]}
1
+ {"version":3,"file":"VNumberInput.js","names":["VBtn","VDefaultsProvider","VDivider","makeVTextFieldProps","VTextField","useHold","useForm","forwardRefs","useLocale","useProxiedModel","computed","nextTick","onMounted","ref","shallowRef","toRef","watch","watchEffect","clamp","escapeForRegex","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","minFractionDigits","decimalSeparator","validator","v","length","VNumberInput","name","props","emits","val","setup","_ref","slots","vTextFieldRef","holdStart","holdStop","toggleUpDown","form","controlsDisabled","isDisabled","value","isReadonly","isFocused","focused","decimalSeparatorFromLocale","correctPrecision","arguments","undefined","trim","fixed","toFixed","toString","replace","baseDigits","fractionDigits","split","padEnd","RegExp","filter","join","model","_inputText","isNaN","inputText","get","set","parsedValue","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","cursorPosition","setSelectionRange","includes","onKeydown","key","ctrlKey","stopPropagation","el","currentTarget","releasePointerCapture","pointerId","setPointerCapture","actualText","trimDecimalZeros","onFocus","onBlur","_","textFieldProps","filterProps","incrementControlNode","_createVNode","disabled","height","size","icon","variant","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 { useLocale } from '@/composables/locale'\nimport { useProxiedModel } from '@/composables/proxiedModel'\n\n// Utilities\nimport { computed, nextTick, onMounted, ref, shallowRef, toRef, watch, watchEffect } from 'vue'\nimport { clamp, escapeForRegex, 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 minFractionDigits: {\n type: Number as PropType<number | null>,\n default: null,\n },\n decimalSeparator: {\n type: String,\n validator: (v: any) => !v || v.length === 1,\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 const { decimalSeparator: decimalSeparatorFromLocale } = useLocale()\n const decimalSeparator = computed(() => props.decimalSeparator?.[0] || decimalSeparatorFromLocale.value)\n\n function correctPrecision (val: number, precision = props.precision, trim = true) {\n const fixed = precision == null\n ? String(val)\n : val.toFixed(precision)\n\n if (isFocused.value && trim) {\n return Number(fixed).toString() // trim zeros\n .replace('.', decimalSeparator.value)\n }\n\n if (props.minFractionDigits === null || (precision !== null && precision < props.minFractionDigits)) {\n return fixed.replace('.', decimalSeparator.value)\n }\n\n let [baseDigits, fractionDigits] = fixed.split('.')\n\n fractionDigits = (fractionDigits ?? '').padEnd(props.minFractionDigits, '0')\n .replace(new RegExp(`(?<=\\\\d{${props.minFractionDigits}})0+$`, 'g'), '')\n\n return [\n baseDigits,\n fractionDigits,\n ].filter(Boolean).join(decimalSeparator.value)\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 return\n }\n const parsedValue = Number(val.replace(decimalSeparator.value, '.'))\n if (!isNaN(parsedValue) && parsedValue <= props.max && parsedValue >= props.min) {\n model.value = parsedValue\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 watch(() => props.minFractionDigits, () => 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, decimalSeparator.value)\n\n // Allow only numbers, \"-\" and {decimal separator}\n // Allow \"-\" and {decimal separator} only once\n // Allow \"-\" only at the start\n if (!new RegExp(`^-?\\\\d*${escapeForRegex(decimalSeparator.value)}?\\\\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(decimalSeparator.value)[1]?.length > props.precision) {\n e.preventDefault()\n inputElement!.value = potentialNewNumber\n\n const cursorPosition = (selectionStart ?? 0) + e.data.length\n inputElement!.setSelectionRange(cursorPosition, cursorPosition)\n }\n // Ignore decimal separator when precision = 0\n if (props.precision === 0 && potentialNewInputVal.includes(decimalSeparator.value)) {\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 e.stopPropagation()\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 const parsedValue = Number(actualText.replace(decimalSeparator.value, '.'))\n if (actualText && !isNaN(parsedValue)) {\n inputText.value = correctPrecision(clamp(parsedValue, props.min, props.max))\n } else {\n inputText.value = null\n }\n }\n\n function formatInputValue () {\n if (controlsDisabled.value) return\n inputText.value = model.value !== null && !isNaN(model.value)\n ? correctPrecision(model.value, props.precision, false)\n : null\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 .replace('.', decimalSeparator.value)\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 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 variant=\"text\"\n tabindex=\"-1\"\n />\n ) : (\n <VDefaultsProvider\n key=\"increment-defaults\"\n defaults={{\n VBtn: {\n disabled: !canIncrease.value,\n height: controlNodeDefaultHeight.value,\n size: controlNodeSize.value,\n icon: incrementIcon.value,\n variant: 'text',\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 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 variant=\"text\"\n tabindex=\"-1\"\n />\n ) : (\n <VDefaultsProvider\n key=\"decrement-defaults\"\n defaults={{\n VBtn: {\n disabled: !canDecrease.value,\n height: controlNodeDefaultHeight.value,\n size: controlNodeSize.value,\n icon: decrementIcon.value,\n variant: 'text',\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":[]}
@@ -75,6 +75,7 @@ export const VOtpInput = genericComponent()({
75
75
  const contentRef = ref();
76
76
  const inputRef = ref([]);
77
77
  const current = computed(() => inputRef.value[focusIndex.value]);
78
+ let _isComposing = false;
78
79
  useToggleScope(() => props.autofocus, () => {
79
80
  const intersectScope = effectScope();
80
81
  intersectScope.run(() => {
@@ -99,6 +100,7 @@ export const VOtpInput = genericComponent()({
99
100
  current.value.value = '';
100
101
  return;
101
102
  }
103
+ if (_isComposing) return;
102
104
  const array = model.value.slice();
103
105
  const value = current.value.value;
104
106
  array[focusIndex.value] = value;
@@ -111,6 +113,10 @@ export const VOtpInput = genericComponent()({
111
113
  model.value = array;
112
114
  if (target) focusChild(contentRef.value, target);
113
115
  }
116
+ function onCompositionend() {
117
+ _isComposing = false;
118
+ onInput();
119
+ }
114
120
  function onKeydown(e) {
115
121
  const array = model.value.slice();
116
122
  const index = focusIndex.value;
@@ -145,7 +151,7 @@ export const VOtpInput = genericComponent()({
145
151
  const finalIndex = clipboardText.length - 1 === -1 ? index : clipboardText.length - 1;
146
152
  if (isValidNumber(clipboardText)) return;
147
153
  model.value = clipboardText.split('');
148
- inputRef.value?.[finalIndex].focus();
154
+ focusIndex.value = finalIndex;
149
155
  }
150
156
  function reset() {
151
157
  model.value = [];
@@ -175,7 +181,6 @@ export const VOtpInput = genericComponent()({
175
181
  });
176
182
  watch(model, val => {
177
183
  if (val.length === length.value) {
178
- focusIndex.value = length.value - 1;
179
184
  emit('finish', val.join(''));
180
185
  }
181
186
  }, {
@@ -224,6 +229,8 @@ export const VOtpInput = genericComponent()({
224
229
  "onFocus": e => onFocus(e, i),
225
230
  "onBlur": onBlur,
226
231
  "onKeydown": onKeydown,
232
+ "onCompositionstart": () => _isComposing = true,
233
+ "onCompositionend": onCompositionend,
227
234
  "onPaste": event => onPaste(i, event)
228
235
  }, null);
229
236
  }
@@ -1 +1 @@
1
- {"version":3,"file":"VOtpInput.js","names":["makeVFieldProps","VField","VOverlay","VProgressCircular","provideDefaults","makeDimensionProps","useDimension","makeFocusProps","useFocus","useIntersectionObserver","useLocale","useProxiedModel","useToggleScope","computed","effectScope","nextTick","ref","toRef","watch","watchEffect","filterInputAttrs","focusChild","genericComponent","pick","propsFactory","useRender","makeVOtpInputProps","autofocus","Boolean","divider","String","focusAll","label","type","default","length","Number","modelValue","undefined","placeholder","variant","VOtpInput","name","props","emits","finish","val","setup","_ref","attrs","emit","slots","dimensionStyles","isFocused","focus","blur","model","split","join","t","fields","Array","value","fill","focusIndex","contentRef","inputRef","current","intersectScope","run","intersectionRef","isIntersecting","v","stop","onInput","isValidNumber","array","slice","target","onKeydown","e","index","includes","key","preventDefault","requestAnimationFrame","select","onPaste","stopPropagation","clipboardText","clipboardData","getData","trim","finalIndex","reset","onFocus","onBlur","test","color","bgColor","baseColor","disabled","error","scoped","deep","rootAttrs","inputAttrs","_createElementVNode","_mergeProps","class","style","_normalizeStyle","map","_","i","_Fragment","_createVNode","loader","_normalizeClass","event","loading","some","input"],"sources":["../../../src/components/VOtpInput/VOtpInput.tsx"],"sourcesContent":["// Styles\nimport './VOtpInput.sass'\n\n// Components\nimport { makeVFieldProps, VField } from '@/components/VField/VField'\nimport { VOverlay } from '@/components/VOverlay/VOverlay'\nimport { VProgressCircular } from '@/components/VProgressCircular/VProgressCircular'\n\n// Composables\nimport { provideDefaults } from '@/composables/defaults'\nimport { makeDimensionProps, useDimension } from '@/composables/dimensions'\nimport { makeFocusProps, useFocus } from '@/composables/focus'\nimport { useIntersectionObserver } from '@/composables/intersectionObserver'\nimport { useLocale } from '@/composables/locale'\nimport { useProxiedModel } from '@/composables/proxiedModel'\nimport { useToggleScope } from '@/composables/toggleScope'\n\n// Utilities\nimport { computed, effectScope, nextTick, ref, toRef, watch, watchEffect } from 'vue'\nimport { filterInputAttrs, focusChild, genericComponent, pick, propsFactory, useRender } from '@/util'\n\n// Types\nimport type { PropType } from 'vue'\n\n// Types\nexport type VOtpInputSlots = {\n default: never\n loader: never\n}\n\nexport const makeVOtpInputProps = propsFactory({\n autofocus: Boolean,\n divider: String,\n focusAll: Boolean,\n label: {\n type: String,\n default: '$vuetify.input.otp',\n },\n length: {\n type: [Number, String],\n default: 6,\n },\n modelValue: {\n type: [Number, String],\n default: undefined,\n },\n placeholder: String,\n type: {\n type: String as PropType<'text' | 'password' | 'number'>,\n default: 'number',\n },\n\n ...makeDimensionProps(),\n ...makeFocusProps(),\n ...pick(makeVFieldProps({\n variant: 'outlined' as const,\n }), [\n 'baseColor',\n 'bgColor',\n 'class',\n 'color',\n 'disabled',\n 'error',\n 'loading',\n 'rounded',\n 'style',\n 'theme',\n 'variant',\n ]),\n}, 'VOtpInput')\n\nexport const VOtpInput = genericComponent<VOtpInputSlots>()({\n name: 'VOtpInput',\n\n props: makeVOtpInputProps(),\n\n emits: {\n finish: (val: string) => true,\n 'update:focused': (val: boolean) => true,\n 'update:modelValue': (val: string) => true,\n },\n\n setup (props, { attrs, emit, slots }) {\n const { dimensionStyles } = useDimension(props)\n const { isFocused, focus, blur } = useFocus(props)\n const model = useProxiedModel(\n props,\n 'modelValue',\n '',\n val => val == null ? [] : String(val).split(''),\n val => val.join('')\n )\n const { t } = useLocale()\n\n const length = computed(() => Number(props.length))\n const fields = computed(() => Array(length.value).fill(0))\n const focusIndex = ref(-1)\n const contentRef = ref<HTMLElement>()\n const inputRef = ref<HTMLInputElement[]>([])\n const current = computed(() => inputRef.value[focusIndex.value])\n\n useToggleScope(() => props.autofocus, () => {\n const intersectScope = effectScope()\n intersectScope.run(() => {\n const { intersectionRef, isIntersecting } = useIntersectionObserver()\n watchEffect(() => {\n intersectionRef.value = inputRef.value[0]\n })\n watch(isIntersecting, v => {\n if (!v) return\n intersectionRef.value?.focus()\n intersectScope.stop()\n })\n })\n })\n\n function onInput () {\n // The maxlength attribute doesn't work for the number type input, so the text type is used.\n // The following logic simulates the behavior of a number input.\n if (isValidNumber(current.value.value)) {\n current.value.value = ''\n return\n }\n\n const array = model.value.slice()\n const value = current.value.value\n\n array[focusIndex.value] = value\n\n let target: any = null\n\n if (focusIndex.value > model.value.length) {\n target = model.value.length + 1\n } else if (focusIndex.value + 1 !== length.value) {\n target = 'next'\n }\n\n model.value = array\n\n if (target) focusChild(contentRef.value!, target)\n }\n\n function onKeydown (e: KeyboardEvent) {\n const array = model.value.slice()\n const index = focusIndex.value\n let target: 'next' | 'prev' | 'first' | 'last' | number | null = null\n\n if (![\n 'ArrowLeft',\n 'ArrowRight',\n 'Backspace',\n 'Delete',\n ].includes(e.key)) return\n\n e.preventDefault()\n\n if (e.key === 'ArrowLeft') {\n target = 'prev'\n } else if (e.key === 'ArrowRight') {\n target = 'next'\n } else if (['Backspace', 'Delete'].includes(e.key)) {\n array[focusIndex.value] = ''\n\n model.value = array\n\n if (focusIndex.value > 0 && e.key === 'Backspace') {\n target = 'prev'\n } else {\n requestAnimationFrame(() => {\n inputRef.value[index]?.select()\n })\n }\n }\n\n requestAnimationFrame(() => {\n if (target != null) {\n focusChild(contentRef.value!, target)\n }\n })\n }\n\n function onPaste (index: number, e: ClipboardEvent) {\n e.preventDefault()\n e.stopPropagation()\n\n const clipboardText = e?.clipboardData?.getData('Text').trim().slice(0, length.value) ?? ''\n const finalIndex = clipboardText.length - 1 === -1 ? index : clipboardText.length - 1\n\n if (isValidNumber(clipboardText)) return\n\n model.value = clipboardText.split('')\n\n inputRef.value?.[finalIndex].focus()\n }\n\n function reset () {\n model.value = []\n }\n\n function onFocus (e: FocusEvent, index: number) {\n focus()\n\n focusIndex.value = index\n }\n\n function onBlur () {\n blur()\n\n focusIndex.value = -1\n }\n\n function isValidNumber (value: string) {\n return props.type === 'number' && /[^0-9]/g.test(value)\n }\n\n provideDefaults({\n VField: {\n color: toRef(() => props.color),\n bgColor: toRef(() => props.color),\n baseColor: toRef(() => props.baseColor),\n disabled: toRef(() => props.disabled),\n error: toRef(() => props.error),\n variant: toRef(() => props.variant),\n },\n }, { scoped: true })\n\n watch(model, val => {\n if (val.length === length.value) {\n focusIndex.value = length.value - 1\n emit('finish', val.join(''))\n }\n }, { deep: true })\n\n watch(focusIndex, val => {\n if (val < 0) return\n\n nextTick(() => {\n inputRef.value[val]?.select()\n })\n })\n\n useRender(() => {\n const [rootAttrs, inputAttrs] = filterInputAttrs(attrs)\n\n return (\n <div\n class={[\n 'v-otp-input',\n {\n 'v-otp-input--divided': !!props.divider,\n },\n props.class,\n ]}\n style={[\n props.style,\n ]}\n { ...rootAttrs }\n >\n <div\n ref={ contentRef }\n class=\"v-otp-input__content\"\n style={[\n dimensionStyles.value,\n ]}\n >\n { fields.value.map((_, i) => (\n <>\n { props.divider && i !== 0 && (\n <span class=\"v-otp-input__divider\">{ props.divider }</span>\n )}\n\n <VField\n focused={ (isFocused.value && props.focusAll) || focusIndex.value === i }\n key={ i }\n >\n {{\n ...slots,\n loader: undefined,\n default: () => {\n return (\n <input\n ref={ val => inputRef.value[i] = val as HTMLInputElement }\n aria-label={ t(props.label, i + 1) }\n autofocus={ i === 0 && props.autofocus }\n autocomplete=\"one-time-code\"\n class={[\n 'v-otp-input__field',\n ]}\n disabled={ props.disabled }\n inputmode={ props.type === 'number' ? 'numeric' : 'text' }\n min={ props.type === 'number' ? 0 : undefined }\n maxlength={ i === 0 ? length.value : '1' }\n placeholder={ props.placeholder }\n type={ props.type === 'number' ? 'text' : props.type }\n value={ model.value[i] }\n onInput={ onInput }\n onFocus={ e => onFocus(e, i) }\n onBlur={ onBlur }\n onKeydown={ onKeydown }\n onPaste={ event => onPaste(i, event) }\n />\n )\n },\n }}\n </VField>\n </>\n ))}\n\n <input\n class=\"v-otp-input-input\"\n type=\"hidden\"\n { ...inputAttrs }\n value={ model.value.join('') }\n />\n\n <VOverlay\n contained\n contentClass=\"v-otp-input__loader\"\n modelValue={ !!props.loading }\n persistent\n >\n { slots.loader?.() ?? (\n <VProgressCircular\n color={ typeof props.loading === 'boolean' ? undefined : props.loading }\n indeterminate\n size=\"24\"\n width=\"2\"\n />\n )}\n </VOverlay>\n\n { slots.default?.() }\n </div>\n </div>\n )\n })\n\n return {\n blur: () => {\n inputRef.value?.some(input => input.blur())\n },\n focus: () => {\n inputRef.value?.[0].focus()\n },\n reset,\n isFocused,\n }\n },\n})\n\nexport type VOtpInput = InstanceType<typeof VOtpInput>\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"VOtpInput.js","names":["makeVFieldProps","VField","VOverlay","VProgressCircular","provideDefaults","makeDimensionProps","useDimension","makeFocusProps","useFocus","useIntersectionObserver","useLocale","useProxiedModel","useToggleScope","computed","effectScope","nextTick","ref","toRef","watch","watchEffect","filterInputAttrs","focusChild","genericComponent","pick","propsFactory","useRender","makeVOtpInputProps","autofocus","Boolean","divider","String","focusAll","label","type","default","length","Number","modelValue","undefined","placeholder","variant","VOtpInput","name","props","emits","finish","val","setup","_ref","attrs","emit","slots","dimensionStyles","isFocused","focus","blur","model","split","join","t","fields","Array","value","fill","focusIndex","contentRef","inputRef","current","_isComposing","intersectScope","run","intersectionRef","isIntersecting","v","stop","onInput","isValidNumber","array","slice","target","onCompositionend","onKeydown","e","index","includes","key","preventDefault","requestAnimationFrame","select","onPaste","stopPropagation","clipboardText","clipboardData","getData","trim","finalIndex","reset","onFocus","onBlur","test","color","bgColor","baseColor","disabled","error","scoped","deep","rootAttrs","inputAttrs","_createElementVNode","_mergeProps","class","style","_normalizeStyle","map","_","i","_Fragment","_createVNode","loader","_normalizeClass","onCompositionstart","event","loading","some","input"],"sources":["../../../src/components/VOtpInput/VOtpInput.tsx"],"sourcesContent":["// Styles\nimport './VOtpInput.sass'\n\n// Components\nimport { makeVFieldProps, VField } from '@/components/VField/VField'\nimport { VOverlay } from '@/components/VOverlay/VOverlay'\nimport { VProgressCircular } from '@/components/VProgressCircular/VProgressCircular'\n\n// Composables\nimport { provideDefaults } from '@/composables/defaults'\nimport { makeDimensionProps, useDimension } from '@/composables/dimensions'\nimport { makeFocusProps, useFocus } from '@/composables/focus'\nimport { useIntersectionObserver } from '@/composables/intersectionObserver'\nimport { useLocale } from '@/composables/locale'\nimport { useProxiedModel } from '@/composables/proxiedModel'\nimport { useToggleScope } from '@/composables/toggleScope'\n\n// Utilities\nimport { computed, effectScope, nextTick, ref, toRef, watch, watchEffect } from 'vue'\nimport { filterInputAttrs, focusChild, genericComponent, pick, propsFactory, useRender } from '@/util'\n\n// Types\nimport type { PropType } from 'vue'\n\n// Types\nexport type VOtpInputSlots = {\n default: never\n loader: never\n}\n\nexport const makeVOtpInputProps = propsFactory({\n autofocus: Boolean,\n divider: String,\n focusAll: Boolean,\n label: {\n type: String,\n default: '$vuetify.input.otp',\n },\n length: {\n type: [Number, String],\n default: 6,\n },\n modelValue: {\n type: [Number, String],\n default: undefined,\n },\n placeholder: String,\n type: {\n type: String as PropType<'text' | 'password' | 'number'>,\n default: 'number',\n },\n\n ...makeDimensionProps(),\n ...makeFocusProps(),\n ...pick(makeVFieldProps({\n variant: 'outlined' as const,\n }), [\n 'baseColor',\n 'bgColor',\n 'class',\n 'color',\n 'disabled',\n 'error',\n 'loading',\n 'rounded',\n 'style',\n 'theme',\n 'variant',\n ]),\n}, 'VOtpInput')\n\nexport const VOtpInput = genericComponent<VOtpInputSlots>()({\n name: 'VOtpInput',\n\n props: makeVOtpInputProps(),\n\n emits: {\n finish: (val: string) => true,\n 'update:focused': (val: boolean) => true,\n 'update:modelValue': (val: string) => true,\n },\n\n setup (props, { attrs, emit, slots }) {\n const { dimensionStyles } = useDimension(props)\n const { isFocused, focus, blur } = useFocus(props)\n const model = useProxiedModel(\n props,\n 'modelValue',\n '',\n val => val == null ? [] : String(val).split(''),\n val => val.join('')\n )\n const { t } = useLocale()\n\n const length = computed(() => Number(props.length))\n const fields = computed(() => Array(length.value).fill(0))\n const focusIndex = ref(-1)\n const contentRef = ref<HTMLElement>()\n const inputRef = ref<HTMLInputElement[]>([])\n const current = computed(() => inputRef.value[focusIndex.value])\n let _isComposing = false\n\n useToggleScope(() => props.autofocus, () => {\n const intersectScope = effectScope()\n intersectScope.run(() => {\n const { intersectionRef, isIntersecting } = useIntersectionObserver()\n watchEffect(() => {\n intersectionRef.value = inputRef.value[0]\n })\n watch(isIntersecting, v => {\n if (!v) return\n intersectionRef.value?.focus()\n intersectScope.stop()\n })\n })\n })\n\n function onInput () {\n // The maxlength attribute doesn't work for the number type input, so the text type is used.\n // The following logic simulates the behavior of a number input.\n if (isValidNumber(current.value.value)) {\n current.value.value = ''\n return\n }\n\n if (_isComposing) return\n\n const array = model.value.slice()\n const value = current.value.value\n\n array[focusIndex.value] = value\n\n let target: any = null\n\n if (focusIndex.value > model.value.length) {\n target = model.value.length + 1\n } else if (focusIndex.value + 1 !== length.value) {\n target = 'next'\n }\n\n model.value = array\n\n if (target) focusChild(contentRef.value!, target)\n }\n\n function onCompositionend () {\n _isComposing = false\n onInput()\n }\n\n function onKeydown (e: KeyboardEvent) {\n const array = model.value.slice()\n const index = focusIndex.value\n let target: 'next' | 'prev' | 'first' | 'last' | number | null = null\n\n if (![\n 'ArrowLeft',\n 'ArrowRight',\n 'Backspace',\n 'Delete',\n ].includes(e.key)) return\n\n e.preventDefault()\n\n if (e.key === 'ArrowLeft') {\n target = 'prev'\n } else if (e.key === 'ArrowRight') {\n target = 'next'\n } else if (['Backspace', 'Delete'].includes(e.key)) {\n array[focusIndex.value] = ''\n\n model.value = array\n\n if (focusIndex.value > 0 && e.key === 'Backspace') {\n target = 'prev'\n } else {\n requestAnimationFrame(() => {\n inputRef.value[index]?.select()\n })\n }\n }\n\n requestAnimationFrame(() => {\n if (target != null) {\n focusChild(contentRef.value!, target)\n }\n })\n }\n\n function onPaste (index: number, e: ClipboardEvent) {\n e.preventDefault()\n e.stopPropagation()\n\n const clipboardText = e?.clipboardData?.getData('Text').trim().slice(0, length.value) ?? ''\n const finalIndex = clipboardText.length - 1 === -1 ? index : clipboardText.length - 1\n\n if (isValidNumber(clipboardText)) return\n\n model.value = clipboardText.split('')\n\n focusIndex.value = finalIndex\n }\n\n function reset () {\n model.value = []\n }\n\n function onFocus (e: FocusEvent, index: number) {\n focus()\n\n focusIndex.value = index\n }\n\n function onBlur () {\n blur()\n\n focusIndex.value = -1\n }\n\n function isValidNumber (value: string) {\n return props.type === 'number' && /[^0-9]/g.test(value)\n }\n\n provideDefaults({\n VField: {\n color: toRef(() => props.color),\n bgColor: toRef(() => props.color),\n baseColor: toRef(() => props.baseColor),\n disabled: toRef(() => props.disabled),\n error: toRef(() => props.error),\n variant: toRef(() => props.variant),\n },\n }, { scoped: true })\n\n watch(model, val => {\n if (val.length === length.value) {\n emit('finish', val.join(''))\n }\n }, { deep: true })\n\n watch(focusIndex, val => {\n if (val < 0) return\n\n nextTick(() => {\n inputRef.value[val]?.select()\n })\n })\n\n useRender(() => {\n const [rootAttrs, inputAttrs] = filterInputAttrs(attrs)\n\n return (\n <div\n class={[\n 'v-otp-input',\n {\n 'v-otp-input--divided': !!props.divider,\n },\n props.class,\n ]}\n style={[\n props.style,\n ]}\n { ...rootAttrs }\n >\n <div\n ref={ contentRef }\n class=\"v-otp-input__content\"\n style={[\n dimensionStyles.value,\n ]}\n >\n { fields.value.map((_, i) => (\n <>\n { props.divider && i !== 0 && (\n <span class=\"v-otp-input__divider\">{ props.divider }</span>\n )}\n\n <VField\n focused={ (isFocused.value && props.focusAll) || focusIndex.value === i }\n key={ i }\n >\n {{\n ...slots,\n loader: undefined,\n default: () => {\n return (\n <input\n ref={ val => inputRef.value[i] = val as HTMLInputElement }\n aria-label={ t(props.label, i + 1) }\n autofocus={ i === 0 && props.autofocus }\n autocomplete=\"one-time-code\"\n class={[\n 'v-otp-input__field',\n ]}\n disabled={ props.disabled }\n inputmode={ props.type === 'number' ? 'numeric' : 'text' }\n min={ props.type === 'number' ? 0 : undefined }\n maxlength={ i === 0 ? length.value : '1' }\n placeholder={ props.placeholder }\n type={ props.type === 'number' ? 'text' : props.type }\n value={ model.value[i] }\n onInput={ onInput }\n onFocus={ e => onFocus(e, i) }\n onBlur={ onBlur }\n onKeydown={ onKeydown }\n onCompositionstart={ () => _isComposing = true }\n onCompositionend={ onCompositionend }\n onPaste={ event => onPaste(i, event) }\n />\n )\n },\n }}\n </VField>\n </>\n ))}\n\n <input\n class=\"v-otp-input-input\"\n type=\"hidden\"\n { ...inputAttrs }\n value={ model.value.join('') }\n />\n\n <VOverlay\n contained\n contentClass=\"v-otp-input__loader\"\n modelValue={ !!props.loading }\n persistent\n >\n { slots.loader?.() ?? (\n <VProgressCircular\n color={ typeof props.loading === 'boolean' ? undefined : props.loading }\n indeterminate\n size=\"24\"\n width=\"2\"\n />\n )}\n </VOverlay>\n\n { slots.default?.() }\n </div>\n </div>\n )\n })\n\n return {\n blur: () => {\n inputRef.value?.some(input => input.blur())\n },\n focus: () => {\n inputRef.value?.[0].focus()\n },\n reset,\n isFocused,\n }\n },\n})\n\nexport type VOtpInput = InstanceType<typeof VOtpInput>\n"],"mappings":"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","ignoreList":[]}
@@ -29,8 +29,8 @@
29
29
 
30
30
  @media (forced-colors: active) {
31
31
  .v-progress-linear__buffer {
32
- background-color: highlight;
33
- opacity: 0.3;
32
+ background-color: highlight !important;
33
+ opacity: 0.5 !important;
34
34
  }
35
35
  }
36
36
  .v-progress-linear__content {
@@ -55,7 +55,7 @@
55
55
  @media (forced-colors: active) {
56
56
  .v-progress-linear__determinate,
57
57
  .v-progress-linear__indeterminate {
58
- background-color: highlight;
58
+ background-color: highlight !important;
59
59
  }
60
60
  }
61
61