vuetify 3.3.6 → 3.3.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 (83) hide show
  1. package/dist/json/attributes.json +14 -10
  2. package/dist/json/importMap.json +76 -76
  3. package/dist/json/tags.json +1 -0
  4. package/dist/json/web-types.json +26 -24
  5. package/dist/vuetify-labs.css +127 -111
  6. package/dist/vuetify-labs.d.ts +178 -76
  7. package/dist/vuetify-labs.esm.js +486 -337
  8. package/dist/vuetify-labs.esm.js.map +1 -1
  9. package/dist/vuetify-labs.js +485 -336
  10. package/dist/vuetify-labs.min.css +2 -2
  11. package/dist/vuetify.css +36 -20
  12. package/dist/vuetify.d.ts +157 -93
  13. package/dist/vuetify.esm.js +469 -326
  14. package/dist/vuetify.esm.js.map +1 -1
  15. package/dist/vuetify.js +468 -325
  16. package/dist/vuetify.js.map +1 -1
  17. package/dist/vuetify.min.css +2 -2
  18. package/dist/vuetify.min.js +688 -669
  19. package/dist/vuetify.min.js.map +1 -1
  20. package/lib/components/VAutocomplete/VAutocomplete.mjs +48 -35
  21. package/lib/components/VAutocomplete/VAutocomplete.mjs.map +1 -1
  22. package/lib/components/VBtn/VBtn.mjs +1 -1
  23. package/lib/components/VBtn/VBtn.mjs.map +1 -1
  24. package/lib/components/VCheckbox/index.d.mts +28 -16
  25. package/lib/components/VCombobox/VCombobox.mjs +48 -35
  26. package/lib/components/VCombobox/VCombobox.mjs.map +1 -1
  27. package/lib/components/VField/VField.css +17 -6
  28. package/lib/components/VField/VField.sass +17 -6
  29. package/lib/components/VField/_variables.scss +2 -2
  30. package/lib/components/VIcon/VIcon.css +1 -0
  31. package/lib/components/VIcon/VIcon.sass +1 -0
  32. package/lib/components/VImg/VImg.css +4 -2
  33. package/lib/components/VImg/VImg.mjs +4 -2
  34. package/lib/components/VImg/VImg.mjs.map +1 -1
  35. package/lib/components/VImg/VImg.sass +3 -4
  36. package/lib/components/VOverlay/VOverlay.css +2 -0
  37. package/lib/components/VOverlay/VOverlay.sass +3 -1
  38. package/lib/components/VOverlay/scrollStrategies.mjs +3 -1
  39. package/lib/components/VOverlay/scrollStrategies.mjs.map +1 -1
  40. package/lib/components/VRadio/index.d.mts +14 -8
  41. package/lib/components/VRadioGroup/index.d.mts +14 -8
  42. package/lib/components/VResponsive/VResponsive.css +6 -11
  43. package/lib/components/VResponsive/VResponsive.sass +5 -10
  44. package/lib/components/VSelect/VSelect.mjs +43 -31
  45. package/lib/components/VSelect/VSelect.mjs.map +1 -1
  46. package/lib/components/VSelect/useScrolling.mjs +69 -0
  47. package/lib/components/VSelect/useScrolling.mjs.map +1 -0
  48. package/lib/components/VSelectionControl/VSelectionControl.mjs +2 -2
  49. package/lib/components/VSelectionControl/VSelectionControl.mjs.map +1 -1
  50. package/lib/components/VSelectionControl/index.d.mts +14 -8
  51. package/lib/components/VSelectionControlGroup/VSelectionControlGroup.mjs +4 -1
  52. package/lib/components/VSelectionControlGroup/VSelectionControlGroup.mjs.map +1 -1
  53. package/lib/components/VSelectionControlGroup/index.d.mts +14 -8
  54. package/lib/components/VSwitch/index.d.mts +14 -8
  55. package/lib/components/VTextField/VTextField.css +5 -0
  56. package/lib/components/VTextField/VTextField.mjs +6 -2
  57. package/lib/components/VTextField/VTextField.mjs.map +1 -1
  58. package/lib/components/VTextField/VTextField.sass +5 -0
  59. package/lib/components/VTextField/_variables.scss +1 -0
  60. package/lib/components/VVirtualScroll/VVirtualScroll.mjs +50 -24
  61. package/lib/components/VVirtualScroll/VVirtualScroll.mjs.map +1 -1
  62. package/lib/components/VVirtualScroll/VVirtualScrollItem.mjs +13 -23
  63. package/lib/components/VVirtualScroll/VVirtualScrollItem.mjs.map +1 -1
  64. package/lib/components/VVirtualScroll/index.d.mts +37 -15
  65. package/lib/components/index.d.mts +134 -70
  66. package/lib/composables/filter.mjs +9 -7
  67. package/lib/composables/filter.mjs.map +1 -1
  68. package/lib/composables/resizeObserver.mjs +6 -1
  69. package/lib/composables/resizeObserver.mjs.map +1 -1
  70. package/lib/composables/virtual.mjs +17 -17
  71. package/lib/composables/virtual.mjs.map +1 -1
  72. package/lib/entry-bundler.mjs +1 -1
  73. package/lib/framework.mjs +1 -1
  74. package/lib/index.d.mts +23 -23
  75. package/lib/labs/VDataTable/VDataTableVirtual.mjs +12 -10
  76. package/lib/labs/VDataTable/VDataTableVirtual.mjs.map +1 -1
  77. package/lib/labs/VDataTable/composables/headers.mjs +6 -2
  78. package/lib/labs/VDataTable/composables/headers.mjs.map +1 -1
  79. package/lib/labs/VDataTable/index.d.mts +44 -6
  80. package/lib/labs/components.d.mts +44 -6
  81. package/lib/util/getScrollParent.mjs +7 -1
  82. package/lib/util/getScrollParent.mjs.map +1 -1
  83. package/package.json +2 -2
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useScrolling.mjs","names":["shallowRef","watch","useScrolling","listRef","textFieldRef","isScrolling","scrollTimeout","onListScroll","e","cancelAnimationFrame","value","requestAnimationFrame","finishScrolling","Promise","resolve","stop","onListKeydown","key","focus","includes","el","$el","scrollTo","top","scrollHeight","behavior","children","querySelectorAll","getBoundingClientRect","child","bottom","reverse"],"sources":["../../../src/components/VSelect/useScrolling.ts"],"sourcesContent":["// Utilities\nimport { shallowRef, watch } from 'vue'\n\n// Types\nimport type { Ref } from 'vue'\nimport type { VList } from '@/components/VList'\nimport type { VTextField } from '@/components/VTextField'\n\nexport function useScrolling (listRef: Ref<VList | undefined>, textFieldRef: Ref<VTextField | undefined>) {\n const isScrolling = shallowRef(false)\n let scrollTimeout: number\n function onListScroll (e: Event) {\n cancelAnimationFrame(scrollTimeout)\n isScrolling.value = true\n scrollTimeout = requestAnimationFrame(() => {\n scrollTimeout = requestAnimationFrame(() => {\n isScrolling.value = false\n })\n })\n }\n async function finishScrolling () {\n await new Promise(resolve => requestAnimationFrame(resolve))\n await new Promise(resolve => requestAnimationFrame(resolve))\n await new Promise(resolve => requestAnimationFrame(resolve))\n await new Promise<void>(resolve => {\n if (isScrolling.value) {\n const stop = watch(isScrolling, () => {\n stop()\n resolve()\n })\n } else resolve()\n })\n }\n async function onListKeydown (e: KeyboardEvent) {\n if (e.key === 'Tab') {\n textFieldRef.value?.focus()\n }\n\n if (!['PageDown', 'PageUp', 'Home', 'End'].includes(e.key)) return\n const el: HTMLElement = listRef.value?.$el\n if (!el) return\n\n if (e.key === 'Home' || e.key === 'End') {\n el.scrollTo({\n top: e.key === 'Home' ? 0 : el.scrollHeight,\n behavior: 'smooth',\n })\n }\n\n await finishScrolling()\n\n const children = el.querySelectorAll(':scope > :not(.v-virtual-scroll__spacer)')\n\n if (e.key === 'PageDown' || e.key === 'Home') {\n const top = el.getBoundingClientRect().top\n for (const child of children) {\n if (child.getBoundingClientRect().top >= top) {\n (child as HTMLElement).focus()\n break\n }\n }\n } else {\n const bottom = el.getBoundingClientRect().bottom\n for (const child of [...children].reverse()) {\n if (child.getBoundingClientRect().bottom <= bottom) {\n (child as HTMLElement).focus()\n break\n }\n }\n }\n }\n\n return { onListScroll, onListKeydown }\n}\n"],"mappings":"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"}
@@ -147,12 +147,12 @@ export const VSelectionControl = genericComponent()({
147
147
  }, null), _createVNode("input", _mergeProps({
148
148
  "ref": input,
149
149
  "checked": model.value,
150
- "disabled": props.disabled,
150
+ "disabled": !!(props.readonly || props.disabled),
151
151
  "id": id.value,
152
152
  "onBlur": onBlur,
153
153
  "onFocus": onFocus,
154
154
  "onInput": onInput,
155
- "aria-disabled": props.readonly,
155
+ "aria-disabled": !!(props.readonly || props.disabled),
156
156
  "type": props.type,
157
157
  "value": trueValue.value,
158
158
  "name": props.name,
@@ -1 +1 @@
1
- {"version":3,"file":"VSelectionControl.mjs","names":["VIcon","VLabel","makeSelectionControlGroupProps","VSelectionControlGroupSymbol","useTextColor","makeComponentProps","useDensity","useProxiedModel","Ripple","computed","inject","nextTick","ref","shallowRef","filterInputAttrs","genericComponent","getUid","propsFactory","SUPPORTS_FOCUS_VISIBLE","useRender","wrapInArray","makeVSelectionControlProps","label","String","trueValue","falseValue","value","useSelectionControl","props","group","undefined","densityClasses","modelValue","isMultiple","multiple","Array","isArray","model","get","val","some","v","valueComparator","set","readonly","currentValue","newVal","filter","item","textColorClasses","textColorStyles","error","disabled","color","icon","trueIcon","falseIcon","VSelectionControl","name","directives","inheritAttrs","emits","setup","_ref","attrs","slots","uid","id","isFocused","isFocusVisible","input","onForceUpdate","checked","onFocus","e","target","matches","onBlur","onInput","forceUpdate","for","rootAttrs","inputAttrs","_createVNode","_mergeProps","inline","class","style","default","_withDirectives","type","_resolveDirective","ripple"],"sources":["../../../src/components/VSelectionControl/VSelectionControl.tsx"],"sourcesContent":["// Styles\nimport './VSelectionControl.sass'\n\n// Components\nimport { VIcon } from '@/components/VIcon'\nimport { VLabel } from '@/components/VLabel'\nimport { makeSelectionControlGroupProps, VSelectionControlGroupSymbol } from '@/components/VSelectionControlGroup/VSelectionControlGroup'\n\n// Composables\nimport { useTextColor } from '@/composables/color'\nimport { makeComponentProps } from '@/composables/component'\nimport { useDensity } from '@/composables/density'\nimport { useProxiedModel } from '@/composables/proxiedModel'\n\n// Directives\nimport { Ripple } from '@/directives/ripple'\n\n// Utilities\nimport { computed, inject, nextTick, ref, shallowRef } from 'vue'\nimport {\n filterInputAttrs,\n genericComponent,\n getUid,\n propsFactory,\n SUPPORTS_FOCUS_VISIBLE,\n useRender,\n wrapInArray,\n} from '@/util'\n\n// Types\nimport type { CSSProperties, ExtractPropTypes, Ref, WritableComputedRef } from 'vue'\nimport type { GenericProps } from '@/util'\n\nexport type SelectionControlSlot = {\n model: WritableComputedRef<any>\n textColorClasses: Ref<string[]>\n textColorStyles: Ref<CSSProperties>\n props: {\n onBlur: (e: Event) => void\n onFocus: (e: FocusEvent) => void\n id: string\n }\n}\n\nexport type VSelectionControlSlots = {\n default: never\n label: { label: string | undefined, props: Record<string, unknown> }\n input: SelectionControlSlot\n}\n\nexport const makeVSelectionControlProps = propsFactory({\n label: String,\n trueValue: null,\n falseValue: null,\n value: null,\n\n ...makeComponentProps(),\n ...makeSelectionControlGroupProps(),\n}, 'VSelectionControl')\n\nexport function useSelectionControl (\n props: ExtractPropTypes<ReturnType<typeof makeVSelectionControlProps>> & {\n 'onUpdate:modelValue': ((val: any) => void) | undefined\n }\n) {\n const group = inject(VSelectionControlGroupSymbol, undefined)\n const { densityClasses } = useDensity(props)\n const modelValue = useProxiedModel(props, 'modelValue')\n const trueValue = computed(() => (\n props.trueValue !== undefined ? props.trueValue\n : props.value !== undefined ? props.value\n : true\n ))\n const falseValue = computed(() => props.falseValue !== undefined ? props.falseValue : false)\n const isMultiple = computed(() => (\n !!props.multiple ||\n (props.multiple == null && Array.isArray(modelValue.value))\n ))\n const model = computed({\n get () {\n const val = group ? group.modelValue.value : modelValue.value\n\n return isMultiple.value\n ? val.some((v: any) => props.valueComparator(v, trueValue.value))\n : props.valueComparator(val, trueValue.value)\n },\n set (val: boolean) {\n if (props.readonly) return\n\n const currentValue = val ? trueValue.value : falseValue.value\n\n let newVal = currentValue\n\n if (isMultiple.value) {\n newVal = val\n ? [...wrapInArray(modelValue.value), currentValue]\n : wrapInArray(modelValue.value).filter((item: any) => !props.valueComparator(item, trueValue.value))\n }\n\n if (group) {\n group.modelValue.value = newVal\n } else {\n modelValue.value = newVal\n }\n },\n })\n const { textColorClasses, textColorStyles } = useTextColor(computed(() => {\n return (\n model.value &&\n !props.error &&\n !props.disabled\n ) ? props.color : undefined\n }))\n const icon = computed(() => model.value ? props.trueIcon : props.falseIcon)\n\n return {\n group,\n densityClasses,\n trueValue,\n falseValue,\n model,\n textColorClasses,\n textColorStyles,\n icon,\n }\n}\n\nexport const VSelectionControl = genericComponent<new <T>(\n props: {\n modelValue?: T\n 'onUpdate:modelValue'?: (val: T) => any\n },\n slots: VSelectionControlSlots,\n) => GenericProps<typeof props, typeof slots>>()({\n name: 'VSelectionControl',\n\n directives: { Ripple },\n\n inheritAttrs: false,\n\n props: makeVSelectionControlProps(),\n\n emits: {\n 'update:modelValue': (val: any) => true,\n },\n\n setup (props, { attrs, slots }) {\n const {\n group,\n densityClasses,\n icon,\n model,\n textColorClasses,\n textColorStyles,\n trueValue,\n } = useSelectionControl(props)\n const uid = getUid()\n const id = computed(() => props.id || `input-${uid}`)\n const isFocused = shallowRef(false)\n const isFocusVisible = shallowRef(false)\n const input = ref<HTMLInputElement>()\n\n group?.onForceUpdate(() => {\n if (input.value) {\n input.value.checked = model.value\n }\n })\n\n function onFocus (e: FocusEvent) {\n isFocused.value = true\n if (\n !SUPPORTS_FOCUS_VISIBLE ||\n (SUPPORTS_FOCUS_VISIBLE && (e.target as HTMLElement).matches(':focus-visible'))\n ) {\n isFocusVisible.value = true\n }\n }\n\n function onBlur () {\n isFocused.value = false\n isFocusVisible.value = false\n }\n\n function onInput (e: Event) {\n if (props.readonly && group) {\n nextTick(() => group.forceUpdate())\n }\n model.value = (e.target as HTMLInputElement).checked\n }\n\n useRender(() => {\n const label = slots.label\n ? slots.label({\n label: props.label,\n props: { for: id.value },\n })\n : props.label\n const [rootAttrs, inputAttrs] = filterInputAttrs(attrs)\n\n return (\n <div\n class={[\n 'v-selection-control',\n {\n 'v-selection-control--dirty': model.value,\n 'v-selection-control--disabled': props.disabled,\n 'v-selection-control--error': props.error,\n 'v-selection-control--focused': isFocused.value,\n 'v-selection-control--focus-visible': isFocusVisible.value,\n 'v-selection-control--inline': props.inline,\n },\n densityClasses.value,\n props.class,\n ]}\n { ...rootAttrs }\n style={ props.style }\n >\n <div\n class={[\n 'v-selection-control__wrapper',\n textColorClasses.value,\n ]}\n style={ textColorStyles.value }\n >\n { slots.default?.() }\n\n <div\n class={[\n 'v-selection-control__input',\n ]}\n v-ripple={ props.ripple && [\n !props.disabled && !props.readonly,\n null,\n ['center', 'circle'],\n ]}\n >\n { icon.value && <VIcon key=\"icon\" icon={ icon.value } /> }\n\n <input\n ref={ input }\n checked={ model.value }\n disabled={ props.disabled }\n id={ id.value }\n onBlur={ onBlur }\n onFocus={ onFocus }\n onInput={ onInput }\n aria-disabled={ props.readonly }\n type={ props.type }\n value={ trueValue.value }\n name={ props.name }\n aria-checked={ props.type === 'checkbox' ? model.value : undefined }\n { ...inputAttrs }\n />\n\n { slots.input?.({\n model,\n textColorClasses,\n textColorStyles,\n props: {\n onFocus,\n onBlur,\n id: id.value,\n },\n } as SelectionControlSlot)}\n </div>\n </div>\n\n { label && (\n <VLabel for={ id.value } clickable>\n { label }\n </VLabel>\n )}\n </div>\n )\n })\n\n return {\n isFocused,\n input,\n }\n },\n})\n\nexport type VSelectionControl = InstanceType<typeof VSelectionControl>\n"],"mappings":"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"}
1
+ {"version":3,"file":"VSelectionControl.mjs","names":["VIcon","VLabel","makeSelectionControlGroupProps","VSelectionControlGroupSymbol","useTextColor","makeComponentProps","useDensity","useProxiedModel","Ripple","computed","inject","nextTick","ref","shallowRef","filterInputAttrs","genericComponent","getUid","propsFactory","SUPPORTS_FOCUS_VISIBLE","useRender","wrapInArray","makeVSelectionControlProps","label","String","trueValue","falseValue","value","useSelectionControl","props","group","undefined","densityClasses","modelValue","isMultiple","multiple","Array","isArray","model","get","val","some","v","valueComparator","set","readonly","currentValue","newVal","filter","item","textColorClasses","textColorStyles","error","disabled","color","icon","trueIcon","falseIcon","VSelectionControl","name","directives","inheritAttrs","emits","setup","_ref","attrs","slots","uid","id","isFocused","isFocusVisible","input","onForceUpdate","checked","onFocus","e","target","matches","onBlur","onInput","forceUpdate","for","rootAttrs","inputAttrs","_createVNode","_mergeProps","inline","class","style","default","_withDirectives","type","_resolveDirective","ripple"],"sources":["../../../src/components/VSelectionControl/VSelectionControl.tsx"],"sourcesContent":["// Styles\nimport './VSelectionControl.sass'\n\n// Components\nimport { VIcon } from '@/components/VIcon'\nimport { VLabel } from '@/components/VLabel'\nimport { makeSelectionControlGroupProps, VSelectionControlGroupSymbol } from '@/components/VSelectionControlGroup/VSelectionControlGroup'\n\n// Composables\nimport { useTextColor } from '@/composables/color'\nimport { makeComponentProps } from '@/composables/component'\nimport { useDensity } from '@/composables/density'\nimport { useProxiedModel } from '@/composables/proxiedModel'\n\n// Directives\nimport { Ripple } from '@/directives/ripple'\n\n// Utilities\nimport { computed, inject, nextTick, ref, shallowRef } from 'vue'\nimport {\n filterInputAttrs,\n genericComponent,\n getUid,\n propsFactory,\n SUPPORTS_FOCUS_VISIBLE,\n useRender,\n wrapInArray,\n} from '@/util'\n\n// Types\nimport type { CSSProperties, ExtractPropTypes, Ref, WritableComputedRef } from 'vue'\nimport type { GenericProps } from '@/util'\n\nexport type SelectionControlSlot = {\n model: WritableComputedRef<any>\n textColorClasses: Ref<string[]>\n textColorStyles: Ref<CSSProperties>\n props: {\n onBlur: (e: Event) => void\n onFocus: (e: FocusEvent) => void\n id: string\n }\n}\n\nexport type VSelectionControlSlots = {\n default: never\n label: { label: string | undefined, props: Record<string, unknown> }\n input: SelectionControlSlot\n}\n\nexport const makeVSelectionControlProps = propsFactory({\n label: String,\n trueValue: null,\n falseValue: null,\n value: null,\n\n ...makeComponentProps(),\n ...makeSelectionControlGroupProps(),\n}, 'VSelectionControl')\n\nexport function useSelectionControl (\n props: ExtractPropTypes<ReturnType<typeof makeVSelectionControlProps>> & {\n 'onUpdate:modelValue': ((val: any) => void) | undefined\n }\n) {\n const group = inject(VSelectionControlGroupSymbol, undefined)\n const { densityClasses } = useDensity(props)\n const modelValue = useProxiedModel(props, 'modelValue')\n const trueValue = computed(() => (\n props.trueValue !== undefined ? props.trueValue\n : props.value !== undefined ? props.value\n : true\n ))\n const falseValue = computed(() => props.falseValue !== undefined ? props.falseValue : false)\n const isMultiple = computed(() => (\n !!props.multiple ||\n (props.multiple == null && Array.isArray(modelValue.value))\n ))\n const model = computed({\n get () {\n const val = group ? group.modelValue.value : modelValue.value\n\n return isMultiple.value\n ? val.some((v: any) => props.valueComparator(v, trueValue.value))\n : props.valueComparator(val, trueValue.value)\n },\n set (val: boolean) {\n if (props.readonly) return\n\n const currentValue = val ? trueValue.value : falseValue.value\n\n let newVal = currentValue\n\n if (isMultiple.value) {\n newVal = val\n ? [...wrapInArray(modelValue.value), currentValue]\n : wrapInArray(modelValue.value).filter((item: any) => !props.valueComparator(item, trueValue.value))\n }\n\n if (group) {\n group.modelValue.value = newVal\n } else {\n modelValue.value = newVal\n }\n },\n })\n const { textColorClasses, textColorStyles } = useTextColor(computed(() => {\n return (\n model.value &&\n !props.error &&\n !props.disabled\n ) ? props.color : undefined\n }))\n const icon = computed(() => model.value ? props.trueIcon : props.falseIcon)\n\n return {\n group,\n densityClasses,\n trueValue,\n falseValue,\n model,\n textColorClasses,\n textColorStyles,\n icon,\n }\n}\n\nexport const VSelectionControl = genericComponent<new <T>(\n props: {\n modelValue?: T\n 'onUpdate:modelValue'?: (val: T) => any\n },\n slots: VSelectionControlSlots,\n) => GenericProps<typeof props, typeof slots>>()({\n name: 'VSelectionControl',\n\n directives: { Ripple },\n\n inheritAttrs: false,\n\n props: makeVSelectionControlProps(),\n\n emits: {\n 'update:modelValue': (val: any) => true,\n },\n\n setup (props, { attrs, slots }) {\n const {\n group,\n densityClasses,\n icon,\n model,\n textColorClasses,\n textColorStyles,\n trueValue,\n } = useSelectionControl(props)\n const uid = getUid()\n const id = computed(() => props.id || `input-${uid}`)\n const isFocused = shallowRef(false)\n const isFocusVisible = shallowRef(false)\n const input = ref<HTMLInputElement>()\n\n group?.onForceUpdate(() => {\n if (input.value) {\n input.value.checked = model.value\n }\n })\n\n function onFocus (e: FocusEvent) {\n isFocused.value = true\n if (\n !SUPPORTS_FOCUS_VISIBLE ||\n (SUPPORTS_FOCUS_VISIBLE && (e.target as HTMLElement).matches(':focus-visible'))\n ) {\n isFocusVisible.value = true\n }\n }\n\n function onBlur () {\n isFocused.value = false\n isFocusVisible.value = false\n }\n\n function onInput (e: Event) {\n if (props.readonly && group) {\n nextTick(() => group.forceUpdate())\n }\n model.value = (e.target as HTMLInputElement).checked\n }\n\n useRender(() => {\n const label = slots.label\n ? slots.label({\n label: props.label,\n props: { for: id.value },\n })\n : props.label\n const [rootAttrs, inputAttrs] = filterInputAttrs(attrs)\n\n return (\n <div\n class={[\n 'v-selection-control',\n {\n 'v-selection-control--dirty': model.value,\n 'v-selection-control--disabled': props.disabled,\n 'v-selection-control--error': props.error,\n 'v-selection-control--focused': isFocused.value,\n 'v-selection-control--focus-visible': isFocusVisible.value,\n 'v-selection-control--inline': props.inline,\n },\n densityClasses.value,\n props.class,\n ]}\n { ...rootAttrs }\n style={ props.style }\n >\n <div\n class={[\n 'v-selection-control__wrapper',\n textColorClasses.value,\n ]}\n style={ textColorStyles.value }\n >\n { slots.default?.() }\n\n <div\n class={[\n 'v-selection-control__input',\n ]}\n v-ripple={ props.ripple && [\n !props.disabled && !props.readonly,\n null,\n ['center', 'circle'],\n ]}\n >\n { icon.value && <VIcon key=\"icon\" icon={ icon.value } /> }\n\n <input\n ref={ input }\n checked={ model.value }\n disabled={ !!(props.readonly || props.disabled) }\n id={ id.value }\n onBlur={ onBlur }\n onFocus={ onFocus }\n onInput={ onInput }\n aria-disabled={ !!(props.readonly || props.disabled) }\n type={ props.type }\n value={ trueValue.value }\n name={ props.name }\n aria-checked={ props.type === 'checkbox' ? model.value : undefined }\n { ...inputAttrs }\n />\n\n { slots.input?.({\n model,\n textColorClasses,\n textColorStyles,\n props: {\n onFocus,\n onBlur,\n id: id.value,\n },\n } as SelectionControlSlot)}\n </div>\n </div>\n\n { label && (\n <VLabel for={ id.value } clickable>\n { label }\n </VLabel>\n )}\n </div>\n )\n })\n\n return {\n isFocused,\n input,\n }\n },\n})\n\nexport type VSelectionControl = InstanceType<typeof VSelectionControl>\n"],"mappings":"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"}
@@ -63,7 +63,7 @@ declare const VSelectionControl: {
63
63
  inline?: boolean | undefined;
64
64
  error?: boolean | undefined;
65
65
  style?: vue.StyleValue | undefined;
66
- disabled?: boolean | undefined;
66
+ disabled?: boolean | null | undefined;
67
67
  multiple?: boolean | null | undefined;
68
68
  readonly?: boolean | undefined;
69
69
  density?: Density | undefined;
@@ -154,7 +154,7 @@ declare const VSelectionControl: {
154
154
  inline: boolean;
155
155
  error: boolean;
156
156
  style: vue.StyleValue;
157
- disabled: boolean;
157
+ disabled: boolean | null;
158
158
  multiple: boolean | null;
159
159
  readonly: boolean;
160
160
  density: Density;
@@ -185,7 +185,7 @@ declare const VSelectionControl: {
185
185
  inline: boolean;
186
186
  error: boolean;
187
187
  style: vue.StyleValue;
188
- disabled: boolean;
188
+ disabled: boolean | null;
189
189
  multiple: boolean | null;
190
190
  readonly: boolean;
191
191
  density: Density;
@@ -228,7 +228,7 @@ declare const VSelectionControl: {
228
228
  inline: boolean;
229
229
  error: boolean;
230
230
  style: vue.StyleValue;
231
- disabled: boolean;
231
+ disabled: boolean | null;
232
232
  multiple: boolean | null;
233
233
  readonly: boolean;
234
234
  density: Density;
@@ -261,7 +261,7 @@ declare const VSelectionControl: {
261
261
  inline: boolean;
262
262
  error: boolean;
263
263
  style: vue.StyleValue;
264
- disabled: boolean;
264
+ disabled: boolean | null;
265
265
  multiple: boolean | null;
266
266
  readonly: boolean;
267
267
  density: Density;
@@ -292,7 +292,7 @@ declare const VSelectionControl: {
292
292
  inline: boolean;
293
293
  error: boolean;
294
294
  style: vue.StyleValue;
295
- disabled: boolean;
295
+ disabled: boolean | null;
296
296
  multiple: boolean | null;
297
297
  readonly: boolean;
298
298
  density: Density;
@@ -330,7 +330,10 @@ declare const VSelectionControl: {
330
330
  default: null;
331
331
  };
332
332
  color: StringConstructor;
333
- disabled: BooleanConstructor;
333
+ disabled: {
334
+ type: vue.PropType<boolean | null>;
335
+ default: null;
336
+ };
334
337
  defaultsTarget: StringConstructor;
335
338
  error: BooleanConstructor;
336
339
  id: StringConstructor;
@@ -370,7 +373,10 @@ declare const VSelectionControl: {
370
373
  default: null;
371
374
  };
372
375
  color: StringConstructor;
373
- disabled: BooleanConstructor;
376
+ disabled: {
377
+ type: vue.PropType<boolean | null>;
378
+ default: null;
379
+ };
374
380
  defaultsTarget: StringConstructor;
375
381
  error: BooleanConstructor;
376
382
  id: StringConstructor;
@@ -14,7 +14,10 @@ import { deepEqual, genericComponent, getUid, propsFactory, useRender } from "..
14
14
  export const VSelectionControlGroupSymbol = Symbol.for('vuetify:selection-control-group');
15
15
  export const makeSelectionControlGroupProps = propsFactory({
16
16
  color: String,
17
- disabled: Boolean,
17
+ disabled: {
18
+ type: Boolean,
19
+ default: null
20
+ },
18
21
  defaultsTarget: String,
19
22
  error: Boolean,
20
23
  id: String,
@@ -1 +1 @@
1
- {"version":3,"file":"VSelectionControlGroup.mjs","names":["makeComponentProps","provideDefaults","makeDensityProps","IconValue","useProxiedModel","makeThemeProps","computed","onScopeDispose","provide","toRef","deepEqual","genericComponent","getUid","propsFactory","useRender","VSelectionControlGroupSymbol","Symbol","for","makeSelectionControlGroupProps","color","String","disabled","Boolean","defaultsTarget","error","id","inline","falseIcon","trueIcon","ripple","type","default","multiple","name","readonly","modelValue","valueComparator","Function","makeVSelectionControlGroupProps","VSelectionControlGroup","props","emits","val","setup","_ref","slots","uid","value","updateHandlers","Set","forceUpdate","forEach","fn","onForceUpdate","cb","add","delete","density","Array","isArray","_createVNode","class","style","undefined"],"sources":["../../../src/components/VSelectionControlGroup/VSelectionControlGroup.tsx"],"sourcesContent":["// Styles\nimport './VSelectionControlGroup.sass'\n\n// Composables\nimport { makeComponentProps } from '@/composables/component'\nimport { provideDefaults } from '@/composables/defaults'\nimport { makeDensityProps } from '@/composables/density'\nimport { IconValue } from '@/composables/icons'\nimport { useProxiedModel } from '@/composables/proxiedModel'\nimport { makeThemeProps } from '@/composables/theme'\n\n// Utilities\nimport { computed, onScopeDispose, provide, toRef } from 'vue'\nimport { deepEqual, genericComponent, getUid, propsFactory, useRender } from '@/util'\n\n// Types\nimport type { InjectionKey, PropType, Ref } from 'vue'\n\nexport interface VSelectionGroupContext {\n modelValue: Ref<any>\n forceUpdate: () => void\n onForceUpdate: (fn: () => void) => void\n}\n\nexport const VSelectionControlGroupSymbol: InjectionKey<VSelectionGroupContext> = Symbol.for('vuetify:selection-control-group')\n\nexport const makeSelectionControlGroupProps = propsFactory({\n color: String,\n disabled: Boolean,\n defaultsTarget: String,\n error: Boolean,\n id: String,\n inline: Boolean,\n falseIcon: IconValue,\n trueIcon: IconValue,\n ripple: {\n type: Boolean,\n default: true,\n },\n multiple: {\n type: Boolean as PropType<boolean | null>,\n default: null,\n },\n name: String,\n readonly: Boolean,\n modelValue: null,\n type: String,\n valueComparator: {\n type: Function as PropType<typeof deepEqual>,\n default: deepEqual,\n },\n\n ...makeComponentProps(),\n ...makeDensityProps(),\n ...makeThemeProps(),\n}, 'SelectionControlGroup')\n\nexport const makeVSelectionControlGroupProps = propsFactory({\n ...makeSelectionControlGroupProps({\n defaultsTarget: 'VSelectionControl',\n }),\n}, 'VSelectionControlGroup')\n\nexport const VSelectionControlGroup = genericComponent()({\n name: 'VSelectionControlGroup',\n\n props: makeVSelectionControlGroupProps(),\n\n emits: {\n 'update:modelValue': (val: any) => true,\n },\n\n setup (props, { slots }) {\n const modelValue = useProxiedModel(props, 'modelValue')\n const uid = getUid()\n const id = computed(() => props.id || `v-selection-control-group-${uid}`)\n const name = computed(() => props.name || id.value)\n\n const updateHandlers = new Set<() => void>()\n provide(VSelectionControlGroupSymbol, {\n modelValue,\n forceUpdate: () => {\n updateHandlers.forEach(fn => fn())\n },\n onForceUpdate: cb => {\n updateHandlers.add(cb)\n onScopeDispose(() => {\n updateHandlers.delete(cb)\n })\n },\n })\n\n provideDefaults({\n [props.defaultsTarget]: {\n color: toRef(props, 'color'),\n disabled: toRef(props, 'disabled'),\n density: toRef(props, 'density'),\n error: toRef(props, 'error'),\n inline: toRef(props, 'inline'),\n modelValue,\n multiple: computed(() => !!props.multiple || (props.multiple == null && Array.isArray(modelValue.value))),\n name,\n falseIcon: toRef(props, 'falseIcon'),\n trueIcon: toRef(props, 'trueIcon'),\n readonly: toRef(props, 'readonly'),\n ripple: toRef(props, 'ripple'),\n type: toRef(props, 'type'),\n valueComparator: toRef(props, 'valueComparator'),\n },\n })\n\n useRender(() => (\n <div\n class={[\n 'v-selection-control-group',\n { 'v-selection-control-group--inline': props.inline },\n props.class,\n ]}\n style={ props.style }\n role={ props.type === 'radio' ? 'radiogroup' : undefined }\n >\n { slots.default?.() }\n </div>\n ))\n\n return {}\n },\n})\n\nexport type VSelectionControlGroup = InstanceType<typeof VSelectionControlGroup>\n"],"mappings":"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"}
1
+ {"version":3,"file":"VSelectionControlGroup.mjs","names":["makeComponentProps","provideDefaults","makeDensityProps","IconValue","useProxiedModel","makeThemeProps","computed","onScopeDispose","provide","toRef","deepEqual","genericComponent","getUid","propsFactory","useRender","VSelectionControlGroupSymbol","Symbol","for","makeSelectionControlGroupProps","color","String","disabled","type","Boolean","default","defaultsTarget","error","id","inline","falseIcon","trueIcon","ripple","multiple","name","readonly","modelValue","valueComparator","Function","makeVSelectionControlGroupProps","VSelectionControlGroup","props","emits","val","setup","_ref","slots","uid","value","updateHandlers","Set","forceUpdate","forEach","fn","onForceUpdate","cb","add","delete","density","Array","isArray","_createVNode","class","style","undefined"],"sources":["../../../src/components/VSelectionControlGroup/VSelectionControlGroup.tsx"],"sourcesContent":["// Styles\nimport './VSelectionControlGroup.sass'\n\n// Composables\nimport { makeComponentProps } from '@/composables/component'\nimport { provideDefaults } from '@/composables/defaults'\nimport { makeDensityProps } from '@/composables/density'\nimport { IconValue } from '@/composables/icons'\nimport { useProxiedModel } from '@/composables/proxiedModel'\nimport { makeThemeProps } from '@/composables/theme'\n\n// Utilities\nimport { computed, onScopeDispose, provide, toRef } from 'vue'\nimport { deepEqual, genericComponent, getUid, propsFactory, useRender } from '@/util'\n\n// Types\nimport type { InjectionKey, PropType, Ref } from 'vue'\n\nexport interface VSelectionGroupContext {\n modelValue: Ref<any>\n forceUpdate: () => void\n onForceUpdate: (fn: () => void) => void\n}\n\nexport const VSelectionControlGroupSymbol: InjectionKey<VSelectionGroupContext> = Symbol.for('vuetify:selection-control-group')\n\nexport const makeSelectionControlGroupProps = propsFactory({\n color: String,\n disabled: {\n type: Boolean as PropType<boolean | null>,\n default: null,\n },\n defaultsTarget: String,\n error: Boolean,\n id: String,\n inline: Boolean,\n falseIcon: IconValue,\n trueIcon: IconValue,\n ripple: {\n type: Boolean,\n default: true,\n },\n multiple: {\n type: Boolean as PropType<boolean | null>,\n default: null,\n },\n name: String,\n readonly: Boolean,\n modelValue: null,\n type: String,\n valueComparator: {\n type: Function as PropType<typeof deepEqual>,\n default: deepEqual,\n },\n\n ...makeComponentProps(),\n ...makeDensityProps(),\n ...makeThemeProps(),\n}, 'SelectionControlGroup')\n\nexport const makeVSelectionControlGroupProps = propsFactory({\n ...makeSelectionControlGroupProps({\n defaultsTarget: 'VSelectionControl',\n }),\n}, 'VSelectionControlGroup')\n\nexport const VSelectionControlGroup = genericComponent()({\n name: 'VSelectionControlGroup',\n\n props: makeVSelectionControlGroupProps(),\n\n emits: {\n 'update:modelValue': (val: any) => true,\n },\n\n setup (props, { slots }) {\n const modelValue = useProxiedModel(props, 'modelValue')\n const uid = getUid()\n const id = computed(() => props.id || `v-selection-control-group-${uid}`)\n const name = computed(() => props.name || id.value)\n\n const updateHandlers = new Set<() => void>()\n provide(VSelectionControlGroupSymbol, {\n modelValue,\n forceUpdate: () => {\n updateHandlers.forEach(fn => fn())\n },\n onForceUpdate: cb => {\n updateHandlers.add(cb)\n onScopeDispose(() => {\n updateHandlers.delete(cb)\n })\n },\n })\n\n provideDefaults({\n [props.defaultsTarget]: {\n color: toRef(props, 'color'),\n disabled: toRef(props, 'disabled'),\n density: toRef(props, 'density'),\n error: toRef(props, 'error'),\n inline: toRef(props, 'inline'),\n modelValue,\n multiple: computed(() => !!props.multiple || (props.multiple == null && Array.isArray(modelValue.value))),\n name,\n falseIcon: toRef(props, 'falseIcon'),\n trueIcon: toRef(props, 'trueIcon'),\n readonly: toRef(props, 'readonly'),\n ripple: toRef(props, 'ripple'),\n type: toRef(props, 'type'),\n valueComparator: toRef(props, 'valueComparator'),\n },\n })\n\n useRender(() => (\n <div\n class={[\n 'v-selection-control-group',\n { 'v-selection-control-group--inline': props.inline },\n props.class,\n ]}\n style={ props.style }\n role={ props.type === 'radio' ? 'radiogroup' : undefined }\n >\n { slots.default?.() }\n </div>\n ))\n\n return {}\n },\n})\n\nexport type VSelectionControlGroup = InstanceType<typeof VSelectionControlGroup>\n"],"mappings":"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"}
@@ -20,7 +20,7 @@ declare const VSelectionControlGroup: {
20
20
  inline?: boolean | undefined;
21
21
  error?: boolean | undefined;
22
22
  style?: vue.StyleValue | undefined;
23
- disabled?: boolean | undefined;
23
+ disabled?: boolean | null | undefined;
24
24
  multiple?: boolean | null | undefined;
25
25
  readonly?: boolean | undefined;
26
26
  density?: Density | undefined;
@@ -106,7 +106,7 @@ declare const VSelectionControlGroup: {
106
106
  inline: boolean;
107
107
  error: boolean;
108
108
  style: vue.StyleValue;
109
- disabled: boolean;
109
+ disabled: boolean | null;
110
110
  multiple: boolean | null;
111
111
  readonly: boolean;
112
112
  density: Density;
@@ -140,7 +140,7 @@ declare const VSelectionControlGroup: {
140
140
  inline: boolean;
141
141
  error: boolean;
142
142
  style: vue.StyleValue;
143
- disabled: boolean;
143
+ disabled: boolean | null;
144
144
  multiple: boolean | null;
145
145
  readonly: boolean;
146
146
  density: Density;
@@ -175,7 +175,7 @@ declare const VSelectionControlGroup: {
175
175
  inline: boolean;
176
176
  error: boolean;
177
177
  style: vue.StyleValue;
178
- disabled: boolean;
178
+ disabled: boolean | null;
179
179
  multiple: boolean | null;
180
180
  readonly: boolean;
181
181
  density: Density;
@@ -211,7 +211,7 @@ declare const VSelectionControlGroup: {
211
211
  inline: boolean;
212
212
  error: boolean;
213
213
  style: vue.StyleValue;
214
- disabled: boolean;
214
+ disabled: boolean | null;
215
215
  multiple: boolean | null;
216
216
  readonly: boolean;
217
217
  density: Density;
@@ -245,7 +245,7 @@ declare const VSelectionControlGroup: {
245
245
  inline: boolean;
246
246
  error: boolean;
247
247
  style: vue.StyleValue;
248
- disabled: boolean;
248
+ disabled: boolean | null;
249
249
  multiple: boolean | null;
250
250
  readonly: boolean;
251
251
  density: Density;
@@ -269,7 +269,10 @@ declare const VSelectionControlGroup: {
269
269
  default: null;
270
270
  };
271
271
  color: StringConstructor;
272
- disabled: BooleanConstructor;
272
+ disabled: {
273
+ type: PropType<boolean | null>;
274
+ default: null;
275
+ };
273
276
  defaultsTarget: {
274
277
  type: PropType<string>;
275
278
  default: string;
@@ -308,7 +311,10 @@ declare const VSelectionControlGroup: {
308
311
  default: null;
309
312
  };
310
313
  color: StringConstructor;
311
- disabled: BooleanConstructor;
314
+ disabled: {
315
+ type: PropType<boolean | null>;
316
+ default: null;
317
+ };
312
318
  defaultsTarget: {
313
319
  type: PropType<string>;
314
320
  default: string;
@@ -63,7 +63,7 @@ declare const VSwitch: {
63
63
  inset?: boolean | undefined;
64
64
  loading?: string | boolean | undefined;
65
65
  style?: vue.StyleValue | undefined;
66
- disabled?: boolean | undefined;
66
+ disabled?: boolean | null | undefined;
67
67
  multiple?: boolean | null | undefined;
68
68
  readonly?: boolean | undefined;
69
69
  indeterminate?: boolean | undefined;
@@ -229,7 +229,7 @@ declare const VSwitch: {
229
229
  inset: boolean;
230
230
  loading: string | boolean;
231
231
  style: vue.StyleValue;
232
- disabled: boolean;
232
+ disabled: boolean | null;
233
233
  multiple: boolean | null;
234
234
  readonly: boolean;
235
235
  indeterminate: boolean;
@@ -322,7 +322,7 @@ declare const VSwitch: {
322
322
  inset: boolean;
323
323
  loading: string | boolean;
324
324
  style: vue.StyleValue;
325
- disabled: boolean;
325
+ disabled: boolean | null;
326
326
  multiple: boolean | null;
327
327
  readonly: boolean;
328
328
  indeterminate: boolean;
@@ -392,7 +392,7 @@ declare const VSwitch: {
392
392
  inset: boolean;
393
393
  loading: string | boolean;
394
394
  style: vue.StyleValue;
395
- disabled: boolean;
395
+ disabled: boolean | null;
396
396
  multiple: boolean | null;
397
397
  readonly: boolean;
398
398
  indeterminate: boolean;
@@ -485,7 +485,7 @@ declare const VSwitch: {
485
485
  inset: boolean;
486
486
  loading: string | boolean;
487
487
  style: vue.StyleValue;
488
- disabled: boolean;
488
+ disabled: boolean | null;
489
489
  multiple: boolean | null;
490
490
  readonly: boolean;
491
491
  indeterminate: boolean;
@@ -578,7 +578,7 @@ declare const VSwitch: {
578
578
  inset: boolean;
579
579
  loading: string | boolean;
580
580
  style: vue.StyleValue;
581
- disabled: boolean;
581
+ disabled: boolean | null;
582
582
  multiple: boolean | null;
583
583
  readonly: boolean;
584
584
  indeterminate: boolean;
@@ -633,7 +633,10 @@ declare const VSwitch: {
633
633
  default: null;
634
634
  };
635
635
  color: StringConstructor;
636
- disabled: BooleanConstructor;
636
+ disabled: {
637
+ type: vue.PropType<boolean | null>;
638
+ default: null;
639
+ };
637
640
  defaultsTarget: StringConstructor;
638
641
  error: BooleanConstructor;
639
642
  id: StringConstructor;
@@ -716,7 +719,10 @@ declare const VSwitch: {
716
719
  default: null;
717
720
  };
718
721
  color: StringConstructor;
719
- disabled: BooleanConstructor;
722
+ disabled: {
723
+ type: vue.PropType<boolean | null>;
724
+ default: null;
725
+ };
720
726
  defaultsTarget: StringConstructor;
721
727
  error: BooleanConstructor;
722
728
  id: StringConstructor;
@@ -47,9 +47,14 @@
47
47
  opacity: 0;
48
48
  transition: inherit;
49
49
  white-space: nowrap;
50
+ min-height: calc(max(var(--v-input-control-height, 56px), 1.5rem + var(--v-field-input-padding-top) + var(--v-field-input-padding-bottom)) + var(--v-input-chips-margin-bottom) + 2px);
50
51
  padding-top: calc(var(--v-field-padding-top, 4px) + var(--v-input-padding-top, 0));
51
52
  padding-bottom: var(--v-field-padding-bottom, 6px);
52
53
  }
54
+ .v-text-field__prefix__text, .v-text-field__suffix__text {
55
+ margin-top: var(--v-input-chips-margin-top);
56
+ margin-bottom: var(--v-input-chips-margin-bottom);
57
+ }
53
58
  .v-field--active .v-text-field__prefix, .v-field--active .v-text-field__suffix {
54
59
  opacity: 1;
55
60
  }
@@ -183,12 +183,16 @@ export const VTextField = genericComponent()({
183
183
  }]]);
184
184
  return _createVNode(_Fragment, null, [props.prefix && _createVNode("span", {
185
185
  "class": "v-text-field__prefix"
186
- }, [props.prefix]), _createVNode("div", {
186
+ }, [_createVNode("span", {
187
+ "class": "v-text-field__prefix__text"
188
+ }, [props.prefix])]), _createVNode("div", {
187
189
  "class": fieldClass,
188
190
  "data-no-activator": ""
189
191
  }, [slots.default ? _createVNode(_Fragment, null, [slots.default(), inputNode]) : cloneVNode(inputNode)]), props.suffix && _createVNode("span", {
190
192
  "class": "v-text-field__suffix"
191
- }, [props.suffix])]);
193
+ }, [_createVNode("span", {
194
+ "class": "v-text-field__suffix__text"
195
+ }, [props.suffix])])]);
192
196
  }
193
197
  });
194
198
  },
@@ -1 +1 @@
1
- {"version":3,"file":"VTextField.mjs","names":["VCounter","filterFieldProps","makeVFieldProps","VField","makeVInputProps","VInput","useFocus","forwardRefs","useProxiedModel","Intersect","cloneVNode","computed","nextTick","ref","callEvent","filterInputAttrs","genericComponent","propsFactory","useRender","activeTypes","makeVTextFieldProps","autofocus","Boolean","counter","Number","String","counterValue","Function","prefix","placeholder","persistentPlaceholder","persistentCounter","suffix","type","default","modelModifiers","Object","VTextField","name","directives","inheritAttrs","props","emits","e","focused","val","setup","_ref","attrs","emit","slots","model","isFocused","focus","blur","value","toString","length","max","maxlength","undefined","isPlainOrUnderlined","includes","variant","onIntersect","isIntersecting","entries","target","vInputRef","vFieldRef","inputRef","isActive","active","onFocus","document","activeElement","onControlMousedown","preventDefault","onControlClick","onClear","stopPropagation","onInput","el","trim","caretPosition","selectionStart","selectionEnd","hasCounter","hasDetails","details","rootAttrs","inputAttrs","modelValue","_","inputProps","filterProps","fieldProps","_createVNode","_mergeProps","$event","class","style","_ref2","id","isDisabled","isDirty","isReadonly","isValid","dirty","_ref3","fieldClass","slotProps","inputNode","_withDirectives","_resolveDirective","handler","once","_Fragment"],"sources":["../../../src/components/VTextField/VTextField.tsx"],"sourcesContent":["// Styles\nimport './VTextField.sass'\n\n// Components\nimport { VCounter } from '@/components/VCounter/VCounter'\nimport { filterFieldProps, makeVFieldProps, VField } from '@/components/VField/VField'\nimport { makeVInputProps, VInput } from '@/components/VInput/VInput'\n\n// Composables\nimport { useFocus } from '@/composables/focus'\nimport { forwardRefs } from '@/composables/forwardRefs'\nimport { useProxiedModel } from '@/composables/proxiedModel'\n\n// Directives\nimport Intersect from '@/directives/intersect'\n\n// Utilities\nimport { cloneVNode, computed, nextTick, ref } from 'vue'\nimport { callEvent, filterInputAttrs, genericComponent, propsFactory, useRender } from '@/util'\n\n// Types\nimport type { PropType } from 'vue'\nimport type { VCounterSlot } from '@/components/VCounter/VCounter'\nimport type { VFieldSlots } from '@/components/VField/VField'\nimport type { VInputSlots } from '@/components/VInput/VInput'\n\nconst activeTypes = ['color', 'file', 'time', 'date', 'datetime-local', 'week', 'month']\n\nexport const makeVTextFieldProps = propsFactory({\n autofocus: Boolean,\n counter: [Boolean, Number, String] as PropType<true | number | string>,\n counterValue: Function as PropType<(value: any) => number>,\n prefix: String,\n placeholder: String,\n persistentPlaceholder: Boolean,\n persistentCounter: Boolean,\n suffix: String,\n type: {\n type: String,\n default: 'text',\n },\n modelModifiers: Object as PropType<Record<string, boolean>>,\n\n ...makeVInputProps(),\n ...makeVFieldProps(),\n}, 'VTextField')\n\nexport type VTextFieldSlots = Omit<VInputSlots & VFieldSlots, 'default'> & {\n default: never\n counter: VCounterSlot\n}\n\nexport const VTextField = genericComponent<VTextFieldSlots>()({\n name: 'VTextField',\n\n directives: { Intersect },\n\n inheritAttrs: false,\n\n props: makeVTextFieldProps(),\n\n emits: {\n 'click:control': (e: MouseEvent) => true,\n 'mousedown:control': (e: MouseEvent) => true,\n 'update:focused': (focused: boolean) => true,\n 'update:modelValue': (val: string) => true,\n },\n\n setup (props, { attrs, emit, slots }) {\n const model = useProxiedModel(props, 'modelValue')\n const { isFocused, focus, blur } = useFocus(props)\n const counterValue = computed(() => {\n return typeof props.counterValue === 'function'\n ? props.counterValue(model.value)\n : (model.value ?? '').toString().length\n })\n const max = computed(() => {\n if (attrs.maxlength) return attrs.maxlength as unknown as undefined\n\n if (\n !props.counter ||\n (typeof props.counter !== 'number' &&\n typeof props.counter !== 'string')\n ) return undefined\n\n return props.counter\n })\n\n const isPlainOrUnderlined = computed(() => ['plain', 'underlined'].includes(props.variant))\n\n function onIntersect (\n isIntersecting: boolean,\n entries: IntersectionObserverEntry[]\n ) {\n if (!props.autofocus || !isIntersecting) return\n\n (entries[0].target as HTMLInputElement)?.focus?.()\n }\n\n const vInputRef = ref<VInput>()\n const vFieldRef = ref<VField>()\n const inputRef = ref<HTMLInputElement>()\n const isActive = computed(() => (\n activeTypes.includes(props.type) ||\n props.persistentPlaceholder ||\n isFocused.value ||\n props.active\n ))\n function onFocus () {\n if (inputRef.value !== document.activeElement) {\n inputRef.value?.focus()\n }\n\n if (!isFocused.value) focus()\n }\n function onControlMousedown (e: MouseEvent) {\n emit('mousedown:control', e)\n\n if (e.target === inputRef.value) return\n\n onFocus()\n e.preventDefault()\n }\n function onControlClick (e: MouseEvent) {\n onFocus()\n\n emit('click:control', e)\n }\n function onClear (e: MouseEvent) {\n e.stopPropagation()\n\n onFocus()\n\n nextTick(() => {\n model.value = null\n\n callEvent(props['onClick:clear'], e)\n })\n }\n function onInput (e: Event) {\n const el = e.target as HTMLInputElement\n model.value = el.value\n if (\n props.modelModifiers?.trim &&\n ['text', 'search', 'password', 'tel', 'url'].includes(props.type)\n ) {\n const caretPosition = [el.selectionStart, el.selectionEnd]\n nextTick(() => {\n el.selectionStart = caretPosition[0]\n el.selectionEnd = caretPosition[1]\n })\n }\n }\n\n useRender(() => {\n const hasCounter = !!(slots.counter || props.counter || props.counterValue)\n const hasDetails = !!(hasCounter || slots.details)\n const [rootAttrs, inputAttrs] = filterInputAttrs(attrs)\n const [{ modelValue: _, ...inputProps }] = VInput.filterProps(props)\n const [fieldProps] = filterFieldProps(props)\n\n return (\n <VInput\n ref={ vInputRef }\n v-model={ model.value }\n class={[\n 'v-text-field',\n {\n 'v-text-field--prefixed': props.prefix,\n 'v-text-field--suffixed': props.suffix,\n 'v-text-field--plain-underlined': ['plain', 'underlined'].includes(props.variant),\n },\n props.class,\n ]}\n style={ props.style }\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 }) => (\n <VField\n ref={ vFieldRef }\n onMousedown={ onControlMousedown }\n onClick={ onControlClick }\n onClick:clear={ onClear }\n onClick:prependInner={ props['onClick:prependInner'] }\n onClick:appendInner={ props['onClick:appendInner'] }\n role=\"textbox\"\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 error={ isValid.value === false }\n >\n {{\n ...slots,\n default: ({\n props: { class: fieldClass, ...slotProps },\n }) => {\n const inputNode = (\n <input\n ref={ inputRef }\n value={ model.value }\n onInput={ onInput }\n v-intersect={[{\n handler: onIntersect,\n }, null, ['once']]}\n autofocus={ props.autofocus }\n readonly={ isReadonly.value }\n disabled={ isDisabled.value }\n name={ props.name }\n placeholder={ props.placeholder }\n size={ 1 }\n type={ props.type }\n onFocus={ onFocus }\n onBlur={ blur }\n { ...slotProps }\n { ...inputAttrs }\n />\n )\n\n return (\n <>\n { props.prefix && (\n <span class=\"v-text-field__prefix\">\n { props.prefix }\n </span>\n )}\n\n <div\n class={ fieldClass }\n data-no-activator=\"\"\n >\n { slots.default ? (\n <>\n { slots.default() }\n { inputNode }\n </>\n ) : cloneVNode(inputNode)\n }\n </div>\n\n { props.suffix && (\n <span class=\"v-text-field__suffix\">\n { props.suffix }\n </span>\n )}\n </>\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={ props.persistentCounter || isFocused.value }\n value={ counterValue.value }\n max={ max.value }\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 VTextField = InstanceType<typeof VTextField>\n"],"mappings":";AAAA;AACA;;AAEA;AAAA,SACSA,QAAQ;AAAA,SACRC,gBAAgB,EAAEC,eAAe,EAAEC,MAAM;AAAA,SACzCC,eAAe,EAAEC,MAAM,gCAEhC;AAAA,SACSC,QAAQ;AAAA,SACRC,WAAW;AAAA,SACXC,eAAe,8CAExB;AAAA,OACOC,SAAS,8CAEhB;AACA,SAASC,UAAU,EAAEC,QAAQ,EAAEC,QAAQ,EAAEC,GAAG,QAAQ,KAAK;AAAA,SAChDC,SAAS,EAAEC,gBAAgB,EAAEC,gBAAgB,EAAEC,YAAY,EAAEC,SAAS,gCAE/E;AAMA,MAAMC,WAAW,GAAG,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM,EAAE,OAAO,CAAC;AAExF,OAAO,MAAMC,mBAAmB,GAAGH,YAAY,CAAC;EAC9CI,SAAS,EAAEC,OAAO;EAClBC,OAAO,EAAE,CAACD,OAAO,EAAEE,MAAM,EAAEC,MAAM,CAAqC;EACtEC,YAAY,EAAEC,QAA4C;EAC1DC,MAAM,EAAEH,MAAM;EACdI,WAAW,EAAEJ,MAAM;EACnBK,qBAAqB,EAAER,OAAO;EAC9BS,iBAAiB,EAAET,OAAO;EAC1BU,MAAM,EAAEP,MAAM;EACdQ,IAAI,EAAE;IACJA,IAAI,EAAER,MAAM;IACZS,OAAO,EAAE;EACX,CAAC;EACDC,cAAc,EAAEC,MAA2C;EAE3D,GAAGhC,eAAe,EAAE;EACpB,GAAGF,eAAe;AACpB,CAAC,EAAE,YAAY,CAAC;AAOhB,OAAO,MAAMmC,UAAU,GAAGrB,gBAAgB,EAAmB,CAAC;EAC5DsB,IAAI,EAAE,YAAY;EAElBC,UAAU,EAAE;IAAE9B;EAAU,CAAC;EAEzB+B,YAAY,EAAE,KAAK;EAEnBC,KAAK,EAAErB,mBAAmB,EAAE;EAE5BsB,KAAK,EAAE;IACL,eAAe,EAAGC,CAAa,IAAK,IAAI;IACxC,mBAAmB,EAAGA,CAAa,IAAK,IAAI;IAC5C,gBAAgB,EAAGC,OAAgB,IAAK,IAAI;IAC5C,mBAAmB,EAAGC,GAAW,IAAK;EACxC,CAAC;EAEDC,KAAKA,CAAEL,KAAK,EAAAM,IAAA,EAA0B;IAAA,IAAxB;MAAEC,KAAK;MAAEC,IAAI;MAAEC;IAAM,CAAC,GAAAH,IAAA;IAClC,MAAMI,KAAK,GAAG3C,eAAe,CAACiC,KAAK,EAAE,YAAY,CAAC;IAClD,MAAM;MAAEW,SAAS;MAAEC,KAAK;MAAEC;IAAK,CAAC,GAAGhD,QAAQ,CAACmC,KAAK,CAAC;IAClD,MAAMf,YAAY,GAAGf,QAAQ,CAAC,MAAM;MAClC,OAAO,OAAO8B,KAAK,CAACf,YAAY,KAAK,UAAU,GAC3Ce,KAAK,CAACf,YAAY,CAACyB,KAAK,CAACI,KAAK,CAAC,GAC/B,CAACJ,KAAK,CAACI,KAAK,IAAI,EAAE,EAAEC,QAAQ,EAAE,CAACC,MAAM;IAC3C,CAAC,CAAC;IACF,MAAMC,GAAG,GAAG/C,QAAQ,CAAC,MAAM;MACzB,IAAIqC,KAAK,CAACW,SAAS,EAAE,OAAOX,KAAK,CAACW,SAAS;MAE3C,IACE,CAAClB,KAAK,CAAClB,OAAO,IACb,OAAOkB,KAAK,CAAClB,OAAO,KAAK,QAAQ,IAClC,OAAOkB,KAAK,CAAClB,OAAO,KAAK,QAAS,EAClC,OAAOqC,SAAS;MAElB,OAAOnB,KAAK,CAAClB,OAAO;IACtB,CAAC,CAAC;IAEF,MAAMsC,mBAAmB,GAAGlD,QAAQ,CAAC,MAAM,CAAC,OAAO,EAAE,YAAY,CAAC,CAACmD,QAAQ,CAACrB,KAAK,CAACsB,OAAO,CAAC,CAAC;IAE3F,SAASC,WAAWA,CAClBC,cAAuB,EACvBC,OAAoC,EACpC;MACA,IAAI,CAACzB,KAAK,CAACpB,SAAS,IAAI,CAAC4C,cAAc,EAAE;MAExCC,OAAO,CAAC,CAAC,CAAC,CAACC,MAAM,EAAuBd,KAAK,IAAI;IACpD;IAEA,MAAMe,SAAS,GAAGvD,GAAG,EAAU;IAC/B,MAAMwD,SAAS,GAAGxD,GAAG,EAAU;IAC/B,MAAMyD,QAAQ,GAAGzD,GAAG,EAAoB;IACxC,MAAM0D,QAAQ,GAAG5D,QAAQ,CAAC,MACxBQ,WAAW,CAAC2C,QAAQ,CAACrB,KAAK,CAACR,IAAI,CAAC,IAChCQ,KAAK,CAACX,qBAAqB,IAC3BsB,SAAS,CAACG,KAAK,IACfd,KAAK,CAAC+B,MACP,CAAC;IACF,SAASC,OAAOA,CAAA,EAAI;MAClB,IAAIH,QAAQ,CAACf,KAAK,KAAKmB,QAAQ,CAACC,aAAa,EAAE;QAC7CL,QAAQ,CAACf,KAAK,EAAEF,KAAK,EAAE;MACzB;MAEA,IAAI,CAACD,SAAS,CAACG,KAAK,EAAEF,KAAK,EAAE;IAC/B;IACA,SAASuB,kBAAkBA,CAAEjC,CAAa,EAAE;MAC1CM,IAAI,CAAC,mBAAmB,EAAEN,CAAC,CAAC;MAE5B,IAAIA,CAAC,CAACwB,MAAM,KAAKG,QAAQ,CAACf,KAAK,EAAE;MAEjCkB,OAAO,EAAE;MACT9B,CAAC,CAACkC,cAAc,EAAE;IACpB;IACA,SAASC,cAAcA,CAAEnC,CAAa,EAAE;MACtC8B,OAAO,EAAE;MAETxB,IAAI,CAAC,eAAe,EAAEN,CAAC,CAAC;IAC1B;IACA,SAASoC,OAAOA,CAAEpC,CAAa,EAAE;MAC/BA,CAAC,CAACqC,eAAe,EAAE;MAEnBP,OAAO,EAAE;MAET7D,QAAQ,CAAC,MAAM;QACbuC,KAAK,CAACI,KAAK,GAAG,IAAI;QAElBzC,SAAS,CAAC2B,KAAK,CAAC,eAAe,CAAC,EAAEE,CAAC,CAAC;MACtC,CAAC,CAAC;IACJ;IACA,SAASsC,OAAOA,CAAEtC,CAAQ,EAAE;MAC1B,MAAMuC,EAAE,GAAGvC,CAAC,CAACwB,MAA0B;MACvChB,KAAK,CAACI,KAAK,GAAG2B,EAAE,CAAC3B,KAAK;MACtB,IACEd,KAAK,CAACN,cAAc,EAAEgD,IAAI,IAC1B,CAAC,MAAM,EAAE,QAAQ,EAAE,UAAU,EAAE,KAAK,EAAE,KAAK,CAAC,CAACrB,QAAQ,CAACrB,KAAK,CAACR,IAAI,CAAC,EACjE;QACA,MAAMmD,aAAa,GAAG,CAACF,EAAE,CAACG,cAAc,EAAEH,EAAE,CAACI,YAAY,CAAC;QAC1D1E,QAAQ,CAAC,MAAM;UACbsE,EAAE,CAACG,cAAc,GAAGD,aAAa,CAAC,CAAC,CAAC;UACpCF,EAAE,CAACI,YAAY,GAAGF,aAAa,CAAC,CAAC,CAAC;QACpC,CAAC,CAAC;MACJ;IACF;IAEAlE,SAAS,CAAC,MAAM;MACd,MAAMqE,UAAU,GAAG,CAAC,EAAErC,KAAK,CAAC3B,OAAO,IAAIkB,KAAK,CAAClB,OAAO,IAAIkB,KAAK,CAACf,YAAY,CAAC;MAC3E,MAAM8D,UAAU,GAAG,CAAC,EAAED,UAAU,IAAIrC,KAAK,CAACuC,OAAO,CAAC;MAClD,MAAM,CAACC,SAAS,EAAEC,UAAU,CAAC,GAAG5E,gBAAgB,CAACiC,KAAK,CAAC;MACvD,MAAM,CAAC;QAAE4C,UAAU,EAAEC,CAAC;QAAE,GAAGC;MAAW,CAAC,CAAC,GAAGzF,MAAM,CAAC0F,WAAW,CAACtD,KAAK,CAAC;MACpE,MAAM,CAACuD,UAAU,CAAC,GAAG/F,gBAAgB,CAACwC,KAAK,CAAC;MAE5C,OAAAwD,YAAA,CAAA5F,MAAA,EAAA6F,WAAA;QAAA,OAEU9B,SAAS;QAAA,cACLjB,KAAK,CAACI,KAAK;QAAA,uBAAA4C,MAAA,IAAXhD,KAAK,CAACI,KAAK,GAAA4C,MAAA;QAAA,SACd,CACL,cAAc,EACd;UACE,wBAAwB,EAAE1D,KAAK,CAACb,MAAM;UACtC,wBAAwB,EAAEa,KAAK,CAACT,MAAM;UACtC,gCAAgC,EAAE,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC8B,QAAQ,CAACrB,KAAK,CAACsB,OAAO;QAClF,CAAC,EACDtB,KAAK,CAAC2D,KAAK,CACZ;QAAA,SACO3D,KAAK,CAAC4D;MAAK,GACdX,SAAS,EACTI,UAAU;QAAA,eACD,CAACjC,mBAAmB,CAACN,KAAK;QAAA,WAC9BH,SAAS,CAACG;MAAK;QAGvB,GAAGL,KAAK;QACRhB,OAAO,EAAEoE,KAAA;UAAA,IAAC;YACRC,EAAE;YACFC,UAAU;YACVC,OAAO;YACPC,UAAU;YACVC;UACF,CAAC,GAAAL,KAAA;UAAA,OAAAL,YAAA,CAAA9F,MAAA,EAAA+F,WAAA;YAAA,OAES7B,SAAS;YAAA,eACDO,kBAAkB;YAAA,WACtBE,cAAc;YAAA,iBACRC,OAAO;YAAA,wBACAtC,KAAK,CAAC,sBAAsB,CAAC;YAAA,uBAC9BA,KAAK,CAAC,qBAAqB,CAAC;YAAA,QAC7C;UAAS,GACTuD,UAAU;YAAA,MACVO,EAAE,CAAChD,KAAK;YAAA,UACJgB,QAAQ,CAAChB,KAAK,IAAIkD,OAAO,CAAClD,KAAK;YAAA,SAChCkD,OAAO,CAAClD,KAAK,IAAId,KAAK,CAACmE,KAAK;YAAA,YACzBJ,UAAU,CAACjD,KAAK;YAAA,WACjBH,SAAS,CAACG,KAAK;YAAA,SACjBoD,OAAO,CAACpD,KAAK,KAAK;UAAK;YAG7B,GAAGL,KAAK;YACRhB,OAAO,EAAE2E,KAAA,IAEH;cAAA,IAFI;gBACRpE,KAAK,EAAE;kBAAE2D,KAAK,EAAEU,UAAU;kBAAE,GAAGC;gBAAU;cAC3C,CAAC,GAAAF,KAAA;cACC,MAAMG,SAAS,GAAAC,eAAA,CAAAhB,YAAA,UAAAC,WAAA;gBAAA,OAEL5B,QAAQ;gBAAA,SACNnB,KAAK,CAACI,KAAK;gBAAA,WACT0B,OAAO;gBAAA,aAILxC,KAAK,CAACpB,SAAS;gBAAA,YAChBqF,UAAU,CAACnD,KAAK;gBAAA,YAChBiD,UAAU,CAACjD,KAAK;gBAAA,QACpBd,KAAK,CAACH,IAAI;gBAAA,eACHG,KAAK,CAACZ,WAAW;gBAAA,QACxB,CAAC;gBAAA,QACDY,KAAK,CAACR,IAAI;gBAAA,WACPwC,OAAO;gBAAA,UACRnB;cAAI,GACRyD,SAAS,EACTpB,UAAU,YAAAuB,iBAAA,eAbD;gBACZC,OAAO,EAAEnD;cACX,CAAC,EAAE,IAAI;gBAAAoD,IAAA;cAAA,IAaV;cAED,OAAAnB,YAAA,CAAAoB,SAAA,SAEM5E,KAAK,CAACb,MAAM,IAAAqE,YAAA;gBAAA,SACA;cAAsB,IAC9BxD,KAAK,CAACb,MAAM,EAEjB,EAAAqE,YAAA;gBAAA,SAGSa,UAAU;gBAAA,qBACA;cAAE,IAElB5D,KAAK,CAAChB,OAAO,GAAA+D,YAAA,CAAAoB,SAAA,SAETnE,KAAK,CAAChB,OAAO,EAAE,EACf8E,SAAS,KAEXtG,UAAU,CAACsG,SAAS,CAAC,IAIzBvE,KAAK,CAACT,MAAM,IAAAiE,YAAA;gBAAA,SACA;cAAsB,IAC9BxD,KAAK,CAACT,MAAM,EAEjB;YAGP;UAAC;QAAA,CAGN;QACDyD,OAAO,EAAED,UAAU,GAAGuB,SAAS,IAAAd,YAAA,CAAAoB,SAAA,SAEzBnE,KAAK,CAACuC,OAAO,GAAGsB,SAAS,CAAC,EAE1BxB,UAAU,IAAAU,YAAA,CAAAoB,SAAA,SAAApB,YAAA,sBAAAA,YAAA,CAAAjG,QAAA;UAAA,UAKGyC,KAAK,CAACV,iBAAiB,IAAIqB,SAAS,CAACG,KAAK;UAAA,SAC3C7B,YAAY,CAAC6B,KAAK;UAAA,OACpBG,GAAG,CAACH;QAAK,GACGL,KAAK,CAAC3B,OAAO,GAGpC,EAEJ,GAAGqC;MAAS;IAIrB,CAAC,CAAC;IAEF,OAAOrD,WAAW,CAAC,CAAC,CAAC,EAAE6D,SAAS,EAAEC,SAAS,EAAEC,QAAQ,CAAC;EACxD;AACF,CAAC,CAAC"}
1
+ {"version":3,"file":"VTextField.mjs","names":["VCounter","filterFieldProps","makeVFieldProps","VField","makeVInputProps","VInput","useFocus","forwardRefs","useProxiedModel","Intersect","cloneVNode","computed","nextTick","ref","callEvent","filterInputAttrs","genericComponent","propsFactory","useRender","activeTypes","makeVTextFieldProps","autofocus","Boolean","counter","Number","String","counterValue","Function","prefix","placeholder","persistentPlaceholder","persistentCounter","suffix","type","default","modelModifiers","Object","VTextField","name","directives","inheritAttrs","props","emits","e","focused","val","setup","_ref","attrs","emit","slots","model","isFocused","focus","blur","value","toString","length","max","maxlength","undefined","isPlainOrUnderlined","includes","variant","onIntersect","isIntersecting","entries","target","vInputRef","vFieldRef","inputRef","isActive","active","onFocus","document","activeElement","onControlMousedown","preventDefault","onControlClick","onClear","stopPropagation","onInput","el","trim","caretPosition","selectionStart","selectionEnd","hasCounter","hasDetails","details","rootAttrs","inputAttrs","modelValue","_","inputProps","filterProps","fieldProps","_createVNode","_mergeProps","$event","class","style","_ref2","id","isDisabled","isDirty","isReadonly","isValid","dirty","_ref3","fieldClass","slotProps","inputNode","_withDirectives","_resolveDirective","handler","once","_Fragment"],"sources":["../../../src/components/VTextField/VTextField.tsx"],"sourcesContent":["// Styles\nimport './VTextField.sass'\n\n// Components\nimport { VCounter } from '@/components/VCounter/VCounter'\nimport { filterFieldProps, makeVFieldProps, VField } from '@/components/VField/VField'\nimport { makeVInputProps, VInput } from '@/components/VInput/VInput'\n\n// Composables\nimport { useFocus } from '@/composables/focus'\nimport { forwardRefs } from '@/composables/forwardRefs'\nimport { useProxiedModel } from '@/composables/proxiedModel'\n\n// Directives\nimport Intersect from '@/directives/intersect'\n\n// Utilities\nimport { cloneVNode, computed, nextTick, ref } from 'vue'\nimport { callEvent, filterInputAttrs, genericComponent, propsFactory, useRender } from '@/util'\n\n// Types\nimport type { PropType } from 'vue'\nimport type { VCounterSlot } from '@/components/VCounter/VCounter'\nimport type { VFieldSlots } from '@/components/VField/VField'\nimport type { VInputSlots } from '@/components/VInput/VInput'\n\nconst activeTypes = ['color', 'file', 'time', 'date', 'datetime-local', 'week', 'month']\n\nexport const makeVTextFieldProps = propsFactory({\n autofocus: Boolean,\n counter: [Boolean, Number, String] as PropType<true | number | string>,\n counterValue: Function as PropType<(value: any) => number>,\n prefix: String,\n placeholder: String,\n persistentPlaceholder: Boolean,\n persistentCounter: Boolean,\n suffix: String,\n type: {\n type: String,\n default: 'text',\n },\n modelModifiers: Object as PropType<Record<string, boolean>>,\n\n ...makeVInputProps(),\n ...makeVFieldProps(),\n}, 'VTextField')\n\nexport type VTextFieldSlots = Omit<VInputSlots & VFieldSlots, 'default'> & {\n default: never\n counter: VCounterSlot\n}\n\nexport const VTextField = genericComponent<VTextFieldSlots>()({\n name: 'VTextField',\n\n directives: { Intersect },\n\n inheritAttrs: false,\n\n props: makeVTextFieldProps(),\n\n emits: {\n 'click:control': (e: MouseEvent) => true,\n 'mousedown:control': (e: MouseEvent) => true,\n 'update:focused': (focused: boolean) => true,\n 'update:modelValue': (val: string) => true,\n },\n\n setup (props, { attrs, emit, slots }) {\n const model = useProxiedModel(props, 'modelValue')\n const { isFocused, focus, blur } = useFocus(props)\n const counterValue = computed(() => {\n return typeof props.counterValue === 'function'\n ? props.counterValue(model.value)\n : (model.value ?? '').toString().length\n })\n const max = computed(() => {\n if (attrs.maxlength) return attrs.maxlength as unknown as undefined\n\n if (\n !props.counter ||\n (typeof props.counter !== 'number' &&\n typeof props.counter !== 'string')\n ) return undefined\n\n return props.counter\n })\n\n const isPlainOrUnderlined = computed(() => ['plain', 'underlined'].includes(props.variant))\n\n function onIntersect (\n isIntersecting: boolean,\n entries: IntersectionObserverEntry[]\n ) {\n if (!props.autofocus || !isIntersecting) return\n\n (entries[0].target as HTMLInputElement)?.focus?.()\n }\n\n const vInputRef = ref<VInput>()\n const vFieldRef = ref<VField>()\n const inputRef = ref<HTMLInputElement>()\n const isActive = computed(() => (\n activeTypes.includes(props.type) ||\n props.persistentPlaceholder ||\n isFocused.value ||\n props.active\n ))\n function onFocus () {\n if (inputRef.value !== document.activeElement) {\n inputRef.value?.focus()\n }\n\n if (!isFocused.value) focus()\n }\n function onControlMousedown (e: MouseEvent) {\n emit('mousedown:control', e)\n\n if (e.target === inputRef.value) return\n\n onFocus()\n e.preventDefault()\n }\n function onControlClick (e: MouseEvent) {\n onFocus()\n\n emit('click:control', e)\n }\n function onClear (e: MouseEvent) {\n e.stopPropagation()\n\n onFocus()\n\n nextTick(() => {\n model.value = null\n\n callEvent(props['onClick:clear'], e)\n })\n }\n function onInput (e: Event) {\n const el = e.target as HTMLInputElement\n model.value = el.value\n if (\n props.modelModifiers?.trim &&\n ['text', 'search', 'password', 'tel', 'url'].includes(props.type)\n ) {\n const caretPosition = [el.selectionStart, el.selectionEnd]\n nextTick(() => {\n el.selectionStart = caretPosition[0]\n el.selectionEnd = caretPosition[1]\n })\n }\n }\n\n useRender(() => {\n const hasCounter = !!(slots.counter || props.counter || props.counterValue)\n const hasDetails = !!(hasCounter || slots.details)\n const [rootAttrs, inputAttrs] = filterInputAttrs(attrs)\n const [{ modelValue: _, ...inputProps }] = VInput.filterProps(props)\n const [fieldProps] = filterFieldProps(props)\n\n return (\n <VInput\n ref={ vInputRef }\n v-model={ model.value }\n class={[\n 'v-text-field',\n {\n 'v-text-field--prefixed': props.prefix,\n 'v-text-field--suffixed': props.suffix,\n 'v-text-field--plain-underlined': ['plain', 'underlined'].includes(props.variant),\n },\n props.class,\n ]}\n style={ props.style }\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 }) => (\n <VField\n ref={ vFieldRef }\n onMousedown={ onControlMousedown }\n onClick={ onControlClick }\n onClick:clear={ onClear }\n onClick:prependInner={ props['onClick:prependInner'] }\n onClick:appendInner={ props['onClick:appendInner'] }\n role=\"textbox\"\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 error={ isValid.value === false }\n >\n {{\n ...slots,\n default: ({\n props: { class: fieldClass, ...slotProps },\n }) => {\n const inputNode = (\n <input\n ref={ inputRef }\n value={ model.value }\n onInput={ onInput }\n v-intersect={[{\n handler: onIntersect,\n }, null, ['once']]}\n autofocus={ props.autofocus }\n readonly={ isReadonly.value }\n disabled={ isDisabled.value }\n name={ props.name }\n placeholder={ props.placeholder }\n size={ 1 }\n type={ props.type }\n onFocus={ onFocus }\n onBlur={ blur }\n { ...slotProps }\n { ...inputAttrs }\n />\n )\n\n return (\n <>\n { props.prefix && (\n <span class=\"v-text-field__prefix\">\n <span class=\"v-text-field__prefix__text\">\n { props.prefix }\n </span>\n </span>\n )}\n\n <div\n class={ fieldClass }\n data-no-activator=\"\"\n >\n { slots.default ? (\n <>\n { slots.default() }\n { inputNode }\n </>\n ) : cloneVNode(inputNode)\n }\n </div>\n\n { props.suffix && (\n <span class=\"v-text-field__suffix\">\n <span class=\"v-text-field__suffix__text\">\n { props.suffix }\n </span>\n </span>\n )}\n </>\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={ props.persistentCounter || isFocused.value }\n value={ counterValue.value }\n max={ max.value }\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 VTextField = InstanceType<typeof VTextField>\n"],"mappings":"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"}
@@ -56,9 +56,14 @@
56
56
  opacity: 0
57
57
  transition: inherit
58
58
  white-space: nowrap
59
+ min-height: $field-input-min-height
59
60
  padding-top: calc(var(--v-field-padding-top, 4px) + var(--v-input-padding-top, 0))
60
61
  padding-bottom: var(--v-field-padding-bottom, 6px)
61
62
 
63
+ &__text
64
+ margin-top: var(--v-input-chips-margin-top)
65
+ margin-bottom: var(--v-input-chips-margin-bottom)
66
+
62
67
  .v-field--active &
63
68
  opacity: 1
64
69
 
@@ -1,3 +1,4 @@
1
+ @forward '../VField/variables';
1
2
  @use '../../styles/settings';
2
3
 
3
4
  // VTextField