@vuetify/nightly 3.7.7-master.2025-01-20 → 3.7.7-master.2025-01-21

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 (36) hide show
  1. package/CHANGELOG.md +22 -3
  2. package/dist/json/attributes.json +3278 -3278
  3. package/dist/json/importMap-labs.json +22 -22
  4. package/dist/json/importMap.json +188 -188
  5. package/dist/json/web-types.json +6023 -6023
  6. package/dist/vuetify-labs.css +3202 -3196
  7. package/dist/vuetify-labs.esm.js +19 -15
  8. package/dist/vuetify-labs.esm.js.map +1 -1
  9. package/dist/vuetify-labs.js +19 -15
  10. package/dist/vuetify-labs.min.css +2 -2
  11. package/dist/vuetify.css +4101 -4101
  12. package/dist/vuetify.d.ts +67 -67
  13. package/dist/vuetify.esm.js +14 -12
  14. package/dist/vuetify.esm.js.map +1 -1
  15. package/dist/vuetify.js +14 -12
  16. package/dist/vuetify.js.map +1 -1
  17. package/dist/vuetify.min.css +2 -2
  18. package/dist/vuetify.min.js +6 -6
  19. package/dist/vuetify.min.js.map +1 -1
  20. package/lib/components/VField/VField.mjs +0 -8
  21. package/lib/components/VField/VField.mjs.map +1 -1
  22. package/lib/components/VInput/InputIcon.mjs +10 -2
  23. package/lib/components/VInput/InputIcon.mjs.map +1 -1
  24. package/lib/entry-bundler.mjs +1 -1
  25. package/lib/framework.mjs +1 -1
  26. package/lib/index.d.mts +67 -67
  27. package/lib/labs/VTreeview/VTreeviewChildren.mjs +3 -1
  28. package/lib/labs/VTreeview/VTreeviewChildren.mjs.map +1 -1
  29. package/lib/labs/VTreeview/VTreeviewItem.css +6 -0
  30. package/lib/labs/VTreeview/VTreeviewItem.mjs +2 -2
  31. package/lib/labs/VTreeview/VTreeviewItem.mjs.map +1 -1
  32. package/lib/labs/VTreeview/VTreeviewItem.sass +6 -0
  33. package/lib/labs/VTreeview/_variables.scss +1 -0
  34. package/lib/util/helpers.mjs +3 -0
  35. package/lib/util/helpers.mjs.map +1 -1
  36. package/package.json +1 -1
@@ -165,12 +165,6 @@ export const VField = genericComponent()({
165
165
  e.preventDefault();
166
166
  }
167
167
  }
168
- function onKeydownClear(e) {
169
- if (e.key !== 'Enter' && e.key !== ' ') return;
170
- e.preventDefault();
171
- e.stopPropagation();
172
- props['onClick:clear']?.(new MouseEvent('click'));
173
- }
174
168
  useRender(() => {
175
169
  const isOutlined = props.variant === 'outlined';
176
170
  const hasPrepend = !!(slots['prepend-inner'] || props.prependInnerIcon);
@@ -262,14 +256,12 @@ export const VField = genericComponent()({
262
256
  default: () => [slots.clear ? slots.clear({
263
257
  ...slotProps.value,
264
258
  props: {
265
- onKeydown: onKeydownClear,
266
259
  onFocus: focus,
267
260
  onBlur: blur,
268
261
  onClick: props['onClick:clear']
269
262
  }
270
263
  }) : _createVNode(InputIcon, {
271
264
  "name": "clear",
272
- "onKeydown": onKeydownClear,
273
265
  "onFocus": focus,
274
266
  "onBlur": blur
275
267
  }, null)]
@@ -1 +1 @@
1
- {"version":3,"file":"VField.mjs","names":["VFieldLabel","VExpandXTransition","VDefaultsProvider","useInputIcon","useBackgroundColor","useTextColor","makeComponentProps","makeFocusProps","useFocus","IconValue","LoaderSlot","makeLoaderProps","useLoader","useRtl","makeRoundedProps","useRounded","makeThemeProps","provideTheme","computed","ref","toRef","watch","animate","convertToUnit","EventProp","genericComponent","getUid","isOn","nullifyTransforms","pick","propsFactory","standardEasing","useRender","allowedVariants","makeVFieldProps","appendInnerIcon","bgColor","String","clearable","Boolean","clearIcon","type","default","active","centerAffix","undefined","color","baseColor","dirty","disabled","error","flat","label","persistentClear","prependInnerIcon","reverse","singleLine","variant","validator","v","includes","VField","name","inheritAttrs","props","id","emits","focused","value","setup","_ref","attrs","emit","slots","themeClasses","loaderClasses","focusClasses","isFocused","focus","blur","InputIcon","roundedClasses","rtlClasses","isActive","hasLabel","uid","messagesId","labelRef","floatingLabelRef","controlRef","isPlainOrUnderlined","backgroundColorClasses","backgroundColorStyles","textColorClasses","textColorStyles","val","el","$el","targetEl","requestAnimationFrame","rect","targetRect","getBoundingClientRect","x","y","height","targetWidth","width","Math","abs","maxWidth","style","getComputedStyle","targetStyle","duration","parseFloat","transitionDuration","scale","getPropertyValue","visibility","transform","easing","direction","finished","then","removeProperty","flush","slotProps","onClick","e","target","document","activeElement","preventDefault","onKeydownClear","key","stopPropagation","MouseEvent","isOutlined","hasPrepend","hasClear","clear","hasAppend","for","_createVNode","_mergeProps","class","loading","loader","_withDirectives","VIcon","icon","onKeydown","onFocus","onBlur","_vShow","_Fragment","filterFieldProps","keys","Object","filter","k"],"sources":["../../../src/components/VField/VField.tsx"],"sourcesContent":["// Styles\nimport './VField.sass'\n\n// Components\nimport { VFieldLabel } from './VFieldLabel'\nimport { VExpandXTransition } from '@/components/transitions'\nimport { VDefaultsProvider } from '@/components/VDefaultsProvider'\nimport { useInputIcon } from '@/components/VInput/InputIcon'\n\n// Composables\nimport { useBackgroundColor, useTextColor } from '@/composables/color'\nimport { makeComponentProps } from '@/composables/component'\nimport { makeFocusProps, useFocus } from '@/composables/focus'\nimport { IconValue } from '@/composables/icons'\nimport { LoaderSlot, makeLoaderProps, useLoader } from '@/composables/loader'\nimport { useRtl } from '@/composables/locale'\nimport { makeRoundedProps, useRounded } from '@/composables/rounded'\nimport { makeThemeProps, provideTheme } from '@/composables/theme'\n\n// Utilities\nimport { computed, ref, toRef, watch } from 'vue'\nimport {\n animate,\n convertToUnit,\n EventProp,\n genericComponent,\n getUid,\n isOn,\n nullifyTransforms,\n pick,\n propsFactory,\n standardEasing,\n useRender,\n} from '@/util'\n\n// Types\nimport type { PropType, Ref } from 'vue'\nimport type { LoaderSlotProps } from '@/composables/loader'\nimport type { GenericProps } from '@/util'\n\nconst allowedVariants = ['underlined', 'outlined', 'filled', 'solo', 'solo-inverted', 'solo-filled', 'plain'] as const\ntype Variant = typeof allowedVariants[number]\n\nexport interface DefaultInputSlot {\n isActive: Ref<boolean>\n isFocused: Ref<boolean>\n controlRef: Ref<HTMLElement | undefined>\n focus: () => void\n blur: () => void\n}\n\nexport interface VFieldSlot extends DefaultInputSlot {\n props: Record<string, unknown>\n}\n\nexport const makeVFieldProps = propsFactory({\n appendInnerIcon: IconValue,\n bgColor: String,\n clearable: Boolean,\n clearIcon: {\n type: IconValue,\n default: '$clear',\n },\n active: Boolean,\n centerAffix: {\n type: Boolean,\n default: undefined,\n },\n color: String,\n baseColor: String,\n dirty: Boolean,\n disabled: {\n type: Boolean,\n default: null,\n },\n error: Boolean,\n flat: Boolean,\n label: String,\n persistentClear: Boolean,\n prependInnerIcon: IconValue,\n reverse: Boolean,\n singleLine: Boolean,\n variant: {\n type: String as PropType<Variant>,\n default: 'filled',\n validator: (v: any) => allowedVariants.includes(v),\n },\n\n 'onClick:clear': EventProp<[MouseEvent]>(),\n 'onClick:appendInner': EventProp<[MouseEvent]>(),\n 'onClick:prependInner': EventProp<[MouseEvent]>(),\n\n ...makeComponentProps(),\n ...makeLoaderProps(),\n ...makeRoundedProps(),\n ...makeThemeProps(),\n}, 'VField')\n\nexport type VFieldSlots = {\n clear: DefaultInputSlot & { props: Record<string, any> }\n 'prepend-inner': DefaultInputSlot\n 'append-inner': DefaultInputSlot\n label: DefaultInputSlot & { label: string | undefined, props: Record<string, any> }\n loader: LoaderSlotProps\n default: VFieldSlot\n}\n\nexport const VField = genericComponent<new <T>(\n props: {\n modelValue?: T\n 'onUpdate:modelValue'?: (value: T) => void\n },\n slots: VFieldSlots\n) => GenericProps<typeof props, typeof slots>>()({\n name: 'VField',\n\n inheritAttrs: false,\n\n props: {\n id: String,\n\n ...makeFocusProps(),\n ...makeVFieldProps(),\n },\n\n emits: {\n 'update:focused': (focused: boolean) => true,\n 'update:modelValue': (value: any) => true,\n },\n\n setup (props, { attrs, emit, slots }) {\n const { themeClasses } = provideTheme(props)\n const { loaderClasses } = useLoader(props)\n const { focusClasses, isFocused, focus, blur } = useFocus(props)\n const { InputIcon } = useInputIcon(props)\n const { roundedClasses } = useRounded(props)\n const { rtlClasses } = useRtl()\n\n const isActive = computed(() => props.dirty || props.active)\n const hasLabel = computed(() => !props.singleLine && !!(props.label || slots.label))\n\n const uid = getUid()\n const id = computed(() => props.id || `input-${uid}`)\n const messagesId = computed(() => `${id.value}-messages`)\n\n const labelRef = ref<VFieldLabel>()\n const floatingLabelRef = ref<VFieldLabel>()\n const controlRef = ref<HTMLElement>()\n const isPlainOrUnderlined = computed(() => ['plain', 'underlined'].includes(props.variant))\n\n const { backgroundColorClasses, backgroundColorStyles } = useBackgroundColor(toRef(props, 'bgColor'))\n const { textColorClasses, textColorStyles } = useTextColor(computed(() => {\n return props.error || props.disabled ? undefined\n : isActive.value && isFocused.value ? props.color\n : props.baseColor\n }))\n\n watch(isActive, val => {\n if (hasLabel.value) {\n const el: HTMLElement = labelRef.value!.$el\n const targetEl: HTMLElement = floatingLabelRef.value!.$el\n\n requestAnimationFrame(() => {\n const rect = nullifyTransforms(el)\n const targetRect = targetEl.getBoundingClientRect()\n\n const x = targetRect.x - rect.x\n const y = targetRect.y - rect.y - (rect.height / 2 - targetRect.height / 2)\n\n const targetWidth = targetRect.width / 0.75\n const width = Math.abs(targetWidth - rect.width) > 1\n ? { maxWidth: convertToUnit(targetWidth) }\n : undefined\n\n const style = getComputedStyle(el)\n const targetStyle = getComputedStyle(targetEl)\n const duration = parseFloat(style.transitionDuration) * 1000 || 150\n const scale = parseFloat(targetStyle.getPropertyValue('--v-field-label-scale'))\n const color = targetStyle.getPropertyValue('color')\n\n el.style.visibility = 'visible'\n targetEl.style.visibility = 'hidden'\n\n animate(el, {\n transform: `translate(${x}px, ${y}px) scale(${scale})`,\n color,\n ...width,\n }, {\n duration,\n easing: standardEasing,\n direction: val ? 'normal' : 'reverse',\n }).finished.then(() => {\n el.style.removeProperty('visibility')\n targetEl.style.removeProperty('visibility')\n })\n })\n }\n }, { flush: 'post' })\n\n const slotProps = computed<DefaultInputSlot>(() => ({\n isActive,\n isFocused,\n controlRef,\n blur,\n focus,\n }))\n\n function onClick (e: MouseEvent) {\n if (e.target !== document.activeElement) {\n e.preventDefault()\n }\n }\n\n function onKeydownClear (e: KeyboardEvent) {\n if (e.key !== 'Enter' && e.key !== ' ') return\n\n e.preventDefault()\n e.stopPropagation()\n\n props['onClick:clear']?.(new MouseEvent('click'))\n }\n\n useRender(() => {\n const isOutlined = props.variant === 'outlined'\n const hasPrepend = !!(slots['prepend-inner'] || props.prependInnerIcon)\n const hasClear = !!(props.clearable || slots.clear) && !props.disabled\n const hasAppend = !!(slots['append-inner'] || props.appendInnerIcon || hasClear)\n const label = () => (\n slots.label\n ? slots.label({\n ...slotProps.value,\n label: props.label,\n props: { for: id.value },\n })\n : props.label\n )\n\n return (\n <div\n class={[\n 'v-field',\n {\n 'v-field--active': isActive.value,\n 'v-field--appended': hasAppend,\n 'v-field--center-affix': props.centerAffix ?? !isPlainOrUnderlined.value,\n 'v-field--disabled': props.disabled,\n 'v-field--dirty': props.dirty,\n 'v-field--error': props.error,\n 'v-field--flat': props.flat,\n 'v-field--has-background': !!props.bgColor,\n 'v-field--persistent-clear': props.persistentClear,\n 'v-field--prepended': hasPrepend,\n 'v-field--reverse': props.reverse,\n 'v-field--single-line': props.singleLine,\n 'v-field--no-label': !label(),\n [`v-field--variant-${props.variant}`]: true,\n },\n themeClasses.value,\n backgroundColorClasses.value,\n focusClasses.value,\n loaderClasses.value,\n roundedClasses.value,\n rtlClasses.value,\n props.class,\n ]}\n style={[\n backgroundColorStyles.value,\n props.style,\n ]}\n onClick={ onClick }\n { ...attrs }\n >\n <div class=\"v-field__overlay\" />\n\n <LoaderSlot\n name=\"v-field\"\n active={ !!props.loading }\n color={ props.error ? 'error' : (typeof props.loading === 'string' ? props.loading : props.color) }\n v-slots={{ default: slots.loader }}\n />\n\n { hasPrepend && (\n <div key=\"prepend\" class=\"v-field__prepend-inner\">\n { props.prependInnerIcon && (\n <InputIcon key=\"prepend-icon\" name=\"prependInner\" />\n )}\n\n { slots['prepend-inner']?.(slotProps.value) }\n </div>\n )}\n\n <div class=\"v-field__field\" data-no-activator=\"\">\n {['filled', 'solo', 'solo-inverted', 'solo-filled'].includes(props.variant) && hasLabel.value && (\n <VFieldLabel\n key=\"floating-label\"\n ref={ floatingLabelRef }\n class={[textColorClasses.value]}\n floating\n for={ id.value }\n style={ textColorStyles.value }\n >\n { label() }\n </VFieldLabel>\n )}\n\n { hasLabel.value && (\n <VFieldLabel key=\"label\" ref={ labelRef } for={ id.value }>\n { label() }\n </VFieldLabel>\n )}\n\n { slots.default?.({\n ...slotProps.value,\n props: {\n id: id.value,\n class: 'v-field__input',\n 'aria-describedby': messagesId.value,\n },\n focus,\n blur,\n } as VFieldSlot)}\n </div>\n\n { hasClear && (\n <VExpandXTransition key=\"clear\">\n <div\n class=\"v-field__clearable\"\n v-show={ props.dirty }\n onMousedown={ (e: MouseEvent) => {\n e.preventDefault()\n e.stopPropagation()\n }}\n >\n <VDefaultsProvider\n defaults={{\n VIcon: {\n icon: props.clearIcon,\n },\n }}\n >\n { slots.clear\n ? slots.clear({\n ...slotProps.value,\n props: {\n onKeydown: onKeydownClear,\n onFocus: focus,\n onBlur: blur,\n onClick: props['onClick:clear'],\n },\n })\n : (\n <InputIcon\n name=\"clear\"\n onKeydown={ onKeydownClear }\n onFocus={ focus }\n onBlur={ blur }\n />\n )}\n </VDefaultsProvider>\n </div>\n </VExpandXTransition>\n )}\n\n { hasAppend && (\n <div key=\"append\" class=\"v-field__append-inner\">\n { slots['append-inner']?.(slotProps.value) }\n\n { props.appendInnerIcon && (\n <InputIcon key=\"append-icon\" name=\"appendInner\" />\n )}\n </div>\n )}\n\n <div\n class={[\n 'v-field__outline',\n textColorClasses.value,\n ]}\n style={ textColorStyles.value }\n >\n { isOutlined && (\n <>\n <div class=\"v-field__outline__start\" />\n\n { hasLabel.value && (\n <div class=\"v-field__outline__notch\">\n <VFieldLabel ref={ floatingLabelRef } floating for={ id.value }>\n { label() }\n </VFieldLabel>\n </div>\n )}\n\n <div class=\"v-field__outline__end\" />\n </>\n )}\n\n { isPlainOrUnderlined.value && hasLabel.value && (\n <VFieldLabel ref={ floatingLabelRef } floating for={ id.value }>\n { label() }\n </VFieldLabel>\n )}\n </div>\n </div>\n )\n })\n\n return {\n controlRef,\n }\n },\n})\n\nexport type VField = InstanceType<typeof VField>\n\n// TODO: this is kinda slow, might be better to implicitly inherit props instead\nexport function filterFieldProps (attrs: Record<string, unknown>) {\n const keys = Object.keys(VField.props).filter(k => !isOn(k) && k !== 'class' && k !== 'style')\n return pick(attrs, keys)\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"VField.mjs","names":["VFieldLabel","VExpandXTransition","VDefaultsProvider","useInputIcon","useBackgroundColor","useTextColor","makeComponentProps","makeFocusProps","useFocus","IconValue","LoaderSlot","makeLoaderProps","useLoader","useRtl","makeRoundedProps","useRounded","makeThemeProps","provideTheme","computed","ref","toRef","watch","animate","convertToUnit","EventProp","genericComponent","getUid","isOn","nullifyTransforms","pick","propsFactory","standardEasing","useRender","allowedVariants","makeVFieldProps","appendInnerIcon","bgColor","String","clearable","Boolean","clearIcon","type","default","active","centerAffix","undefined","color","baseColor","dirty","disabled","error","flat","label","persistentClear","prependInnerIcon","reverse","singleLine","variant","validator","v","includes","VField","name","inheritAttrs","props","id","emits","focused","value","setup","_ref","attrs","emit","slots","themeClasses","loaderClasses","focusClasses","isFocused","focus","blur","InputIcon","roundedClasses","rtlClasses","isActive","hasLabel","uid","messagesId","labelRef","floatingLabelRef","controlRef","isPlainOrUnderlined","backgroundColorClasses","backgroundColorStyles","textColorClasses","textColorStyles","val","el","$el","targetEl","requestAnimationFrame","rect","targetRect","getBoundingClientRect","x","y","height","targetWidth","width","Math","abs","maxWidth","style","getComputedStyle","targetStyle","duration","parseFloat","transitionDuration","scale","getPropertyValue","visibility","transform","easing","direction","finished","then","removeProperty","flush","slotProps","onClick","e","target","document","activeElement","preventDefault","isOutlined","hasPrepend","hasClear","clear","hasAppend","for","_createVNode","_mergeProps","class","loading","loader","_withDirectives","stopPropagation","VIcon","icon","onFocus","onBlur","_vShow","_Fragment","filterFieldProps","keys","Object","filter","k"],"sources":["../../../src/components/VField/VField.tsx"],"sourcesContent":["// Styles\nimport './VField.sass'\n\n// Components\nimport { VFieldLabel } from './VFieldLabel'\nimport { VExpandXTransition } from '@/components/transitions'\nimport { VDefaultsProvider } from '@/components/VDefaultsProvider'\nimport { useInputIcon } from '@/components/VInput/InputIcon'\n\n// Composables\nimport { useBackgroundColor, useTextColor } from '@/composables/color'\nimport { makeComponentProps } from '@/composables/component'\nimport { makeFocusProps, useFocus } from '@/composables/focus'\nimport { IconValue } from '@/composables/icons'\nimport { LoaderSlot, makeLoaderProps, useLoader } from '@/composables/loader'\nimport { useRtl } from '@/composables/locale'\nimport { makeRoundedProps, useRounded } from '@/composables/rounded'\nimport { makeThemeProps, provideTheme } from '@/composables/theme'\n\n// Utilities\nimport { computed, ref, toRef, watch } from 'vue'\nimport {\n animate,\n convertToUnit,\n EventProp,\n genericComponent,\n getUid,\n isOn,\n nullifyTransforms,\n pick,\n propsFactory,\n standardEasing,\n useRender,\n} from '@/util'\n\n// Types\nimport type { PropType, Ref } from 'vue'\nimport type { LoaderSlotProps } from '@/composables/loader'\nimport type { GenericProps } from '@/util'\n\nconst allowedVariants = ['underlined', 'outlined', 'filled', 'solo', 'solo-inverted', 'solo-filled', 'plain'] as const\ntype Variant = typeof allowedVariants[number]\n\nexport interface DefaultInputSlot {\n isActive: Ref<boolean>\n isFocused: Ref<boolean>\n controlRef: Ref<HTMLElement | undefined>\n focus: () => void\n blur: () => void\n}\n\nexport interface VFieldSlot extends DefaultInputSlot {\n props: Record<string, unknown>\n}\n\nexport const makeVFieldProps = propsFactory({\n appendInnerIcon: IconValue,\n bgColor: String,\n clearable: Boolean,\n clearIcon: {\n type: IconValue,\n default: '$clear',\n },\n active: Boolean,\n centerAffix: {\n type: Boolean,\n default: undefined,\n },\n color: String,\n baseColor: String,\n dirty: Boolean,\n disabled: {\n type: Boolean,\n default: null,\n },\n error: Boolean,\n flat: Boolean,\n label: String,\n persistentClear: Boolean,\n prependInnerIcon: IconValue,\n reverse: Boolean,\n singleLine: Boolean,\n variant: {\n type: String as PropType<Variant>,\n default: 'filled',\n validator: (v: any) => allowedVariants.includes(v),\n },\n\n 'onClick:clear': EventProp<[MouseEvent]>(),\n 'onClick:appendInner': EventProp<[MouseEvent]>(),\n 'onClick:prependInner': EventProp<[MouseEvent]>(),\n\n ...makeComponentProps(),\n ...makeLoaderProps(),\n ...makeRoundedProps(),\n ...makeThemeProps(),\n}, 'VField')\n\nexport type VFieldSlots = {\n clear: DefaultInputSlot & { props: Record<string, any> }\n 'prepend-inner': DefaultInputSlot\n 'append-inner': DefaultInputSlot\n label: DefaultInputSlot & { label: string | undefined, props: Record<string, any> }\n loader: LoaderSlotProps\n default: VFieldSlot\n}\n\nexport const VField = genericComponent<new <T>(\n props: {\n modelValue?: T\n 'onUpdate:modelValue'?: (value: T) => void\n },\n slots: VFieldSlots\n) => GenericProps<typeof props, typeof slots>>()({\n name: 'VField',\n\n inheritAttrs: false,\n\n props: {\n id: String,\n\n ...makeFocusProps(),\n ...makeVFieldProps(),\n },\n\n emits: {\n 'update:focused': (focused: boolean) => true,\n 'update:modelValue': (value: any) => true,\n },\n\n setup (props, { attrs, emit, slots }) {\n const { themeClasses } = provideTheme(props)\n const { loaderClasses } = useLoader(props)\n const { focusClasses, isFocused, focus, blur } = useFocus(props)\n const { InputIcon } = useInputIcon(props)\n const { roundedClasses } = useRounded(props)\n const { rtlClasses } = useRtl()\n\n const isActive = computed(() => props.dirty || props.active)\n const hasLabel = computed(() => !props.singleLine && !!(props.label || slots.label))\n\n const uid = getUid()\n const id = computed(() => props.id || `input-${uid}`)\n const messagesId = computed(() => `${id.value}-messages`)\n\n const labelRef = ref<VFieldLabel>()\n const floatingLabelRef = ref<VFieldLabel>()\n const controlRef = ref<HTMLElement>()\n const isPlainOrUnderlined = computed(() => ['plain', 'underlined'].includes(props.variant))\n\n const { backgroundColorClasses, backgroundColorStyles } = useBackgroundColor(toRef(props, 'bgColor'))\n const { textColorClasses, textColorStyles } = useTextColor(computed(() => {\n return props.error || props.disabled ? undefined\n : isActive.value && isFocused.value ? props.color\n : props.baseColor\n }))\n\n watch(isActive, val => {\n if (hasLabel.value) {\n const el: HTMLElement = labelRef.value!.$el\n const targetEl: HTMLElement = floatingLabelRef.value!.$el\n\n requestAnimationFrame(() => {\n const rect = nullifyTransforms(el)\n const targetRect = targetEl.getBoundingClientRect()\n\n const x = targetRect.x - rect.x\n const y = targetRect.y - rect.y - (rect.height / 2 - targetRect.height / 2)\n\n const targetWidth = targetRect.width / 0.75\n const width = Math.abs(targetWidth - rect.width) > 1\n ? { maxWidth: convertToUnit(targetWidth) }\n : undefined\n\n const style = getComputedStyle(el)\n const targetStyle = getComputedStyle(targetEl)\n const duration = parseFloat(style.transitionDuration) * 1000 || 150\n const scale = parseFloat(targetStyle.getPropertyValue('--v-field-label-scale'))\n const color = targetStyle.getPropertyValue('color')\n\n el.style.visibility = 'visible'\n targetEl.style.visibility = 'hidden'\n\n animate(el, {\n transform: `translate(${x}px, ${y}px) scale(${scale})`,\n color,\n ...width,\n }, {\n duration,\n easing: standardEasing,\n direction: val ? 'normal' : 'reverse',\n }).finished.then(() => {\n el.style.removeProperty('visibility')\n targetEl.style.removeProperty('visibility')\n })\n })\n }\n }, { flush: 'post' })\n\n const slotProps = computed<DefaultInputSlot>(() => ({\n isActive,\n isFocused,\n controlRef,\n blur,\n focus,\n }))\n\n function onClick (e: MouseEvent) {\n if (e.target !== document.activeElement) {\n e.preventDefault()\n }\n }\n\n useRender(() => {\n const isOutlined = props.variant === 'outlined'\n const hasPrepend = !!(slots['prepend-inner'] || props.prependInnerIcon)\n const hasClear = !!(props.clearable || slots.clear) && !props.disabled\n const hasAppend = !!(slots['append-inner'] || props.appendInnerIcon || hasClear)\n const label = () => (\n slots.label\n ? slots.label({\n ...slotProps.value,\n label: props.label,\n props: { for: id.value },\n })\n : props.label\n )\n\n return (\n <div\n class={[\n 'v-field',\n {\n 'v-field--active': isActive.value,\n 'v-field--appended': hasAppend,\n 'v-field--center-affix': props.centerAffix ?? !isPlainOrUnderlined.value,\n 'v-field--disabled': props.disabled,\n 'v-field--dirty': props.dirty,\n 'v-field--error': props.error,\n 'v-field--flat': props.flat,\n 'v-field--has-background': !!props.bgColor,\n 'v-field--persistent-clear': props.persistentClear,\n 'v-field--prepended': hasPrepend,\n 'v-field--reverse': props.reverse,\n 'v-field--single-line': props.singleLine,\n 'v-field--no-label': !label(),\n [`v-field--variant-${props.variant}`]: true,\n },\n themeClasses.value,\n backgroundColorClasses.value,\n focusClasses.value,\n loaderClasses.value,\n roundedClasses.value,\n rtlClasses.value,\n props.class,\n ]}\n style={[\n backgroundColorStyles.value,\n props.style,\n ]}\n onClick={ onClick }\n { ...attrs }\n >\n <div class=\"v-field__overlay\" />\n\n <LoaderSlot\n name=\"v-field\"\n active={ !!props.loading }\n color={ props.error ? 'error' : (typeof props.loading === 'string' ? props.loading : props.color) }\n v-slots={{ default: slots.loader }}\n />\n\n { hasPrepend && (\n <div key=\"prepend\" class=\"v-field__prepend-inner\">\n { props.prependInnerIcon && (\n <InputIcon\n key=\"prepend-icon\"\n name=\"prependInner\"\n />\n )}\n\n { slots['prepend-inner']?.(slotProps.value) }\n </div>\n )}\n\n <div class=\"v-field__field\" data-no-activator=\"\">\n {['filled', 'solo', 'solo-inverted', 'solo-filled'].includes(props.variant) && hasLabel.value && (\n <VFieldLabel\n key=\"floating-label\"\n ref={ floatingLabelRef }\n class={[textColorClasses.value]}\n floating\n for={ id.value }\n style={ textColorStyles.value }\n >\n { label() }\n </VFieldLabel>\n )}\n\n { hasLabel.value && (\n <VFieldLabel key=\"label\" ref={ labelRef } for={ id.value }>\n { label() }\n </VFieldLabel>\n )}\n\n { slots.default?.({\n ...slotProps.value,\n props: {\n id: id.value,\n class: 'v-field__input',\n 'aria-describedby': messagesId.value,\n },\n focus,\n blur,\n } as VFieldSlot)}\n </div>\n\n { hasClear && (\n <VExpandXTransition key=\"clear\">\n <div\n class=\"v-field__clearable\"\n v-show={ props.dirty }\n onMousedown={ (e: MouseEvent) => {\n e.preventDefault()\n e.stopPropagation()\n }}\n >\n <VDefaultsProvider\n defaults={{\n VIcon: {\n icon: props.clearIcon,\n },\n }}\n >\n { slots.clear\n ? slots.clear({\n ...slotProps.value,\n props: {\n onFocus: focus,\n onBlur: blur,\n onClick: props['onClick:clear'],\n },\n })\n : (\n <InputIcon\n name=\"clear\"\n onFocus={ focus }\n onBlur={ blur }\n />\n )}\n </VDefaultsProvider>\n </div>\n </VExpandXTransition>\n )}\n\n { hasAppend && (\n <div key=\"append\" class=\"v-field__append-inner\">\n { slots['append-inner']?.(slotProps.value) }\n\n { props.appendInnerIcon && (\n <InputIcon\n key=\"append-icon\"\n name=\"appendInner\"\n />\n )}\n </div>\n )}\n\n <div\n class={[\n 'v-field__outline',\n textColorClasses.value,\n ]}\n style={ textColorStyles.value }\n >\n { isOutlined && (\n <>\n <div class=\"v-field__outline__start\" />\n\n { hasLabel.value && (\n <div class=\"v-field__outline__notch\">\n <VFieldLabel ref={ floatingLabelRef } floating for={ id.value }>\n { label() }\n </VFieldLabel>\n </div>\n )}\n\n <div class=\"v-field__outline__end\" />\n </>\n )}\n\n { isPlainOrUnderlined.value && hasLabel.value && (\n <VFieldLabel ref={ floatingLabelRef } floating for={ id.value }>\n { label() }\n </VFieldLabel>\n )}\n </div>\n </div>\n )\n })\n\n return {\n controlRef,\n }\n },\n})\n\nexport type VField = InstanceType<typeof VField>\n\n// TODO: this is kinda slow, might be better to implicitly inherit props instead\nexport function filterFieldProps (attrs: Record<string, unknown>) {\n const keys = Object.keys(VField.props).filter(k => !isOn(k) && k !== 'class' && k !== 'style')\n return pick(attrs, keys)\n}\n"],"mappings":"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","ignoreList":[]}
@@ -1,7 +1,8 @@
1
1
  import { createVNode as _createVNode } from "vue";
2
2
  // Components
3
3
  import { VIcon } from "../VIcon/index.mjs"; // Composables
4
- import { useLocale } from "../../composables/locale.mjs"; // Types
4
+ import { useLocale } from "../../composables/locale.mjs"; // Utilities
5
+ import { callEvent } from "../../util/index.mjs"; // Types
5
6
  export function useInputIcon(props) {
6
7
  const {
7
8
  t
@@ -18,11 +19,18 @@ export function useInputIcon(props) {
18
19
  clear: 'clear'
19
20
  }[name];
20
21
  const listener = props[`onClick:${name}`];
22
+ function onKeydown(e) {
23
+ if (e.key !== 'Enter' && e.key !== ' ') return;
24
+ e.preventDefault();
25
+ e.stopPropagation();
26
+ callEvent(listener, new PointerEvent('click', e));
27
+ }
21
28
  const label = listener && localeKey ? t(`$vuetify.input.${localeKey}`, props.label ?? '') : undefined;
22
29
  return _createVNode(VIcon, {
23
30
  "icon": props[`${name}Icon`],
24
31
  "aria-label": label,
25
- "onClick": listener
32
+ "onClick": listener,
33
+ "onKeydown": onKeydown
26
34
  }, null);
27
35
  }
28
36
  return {
@@ -1 +1 @@
1
- {"version":3,"file":"InputIcon.mjs","names":["VIcon","useLocale","useInputIcon","props","t","InputIcon","_ref","name","localeKey","prepend","prependInner","append","appendInner","clear","listener","label","undefined","_createVNode"],"sources":["../../../src/components/VInput/InputIcon.tsx"],"sourcesContent":["// Components\nimport { VIcon } from '@/components/VIcon'\n\n// Composables\nimport { useLocale } from '@/composables/locale'\n\n// Types\nimport type { IconValue } from '@/composables/icons'\n\ntype names = 'clear' | 'prepend' | 'append' | 'appendInner' | 'prependInner'\n\ntype EventProp<T = (...args: any[]) => any> = T | T[]\ntype InputIconProps<T extends names> = {\n label: string | undefined\n} & {\n [K in `${T}Icon`]: IconValue | undefined\n} & {\n [K in `onClick:${T}`]: EventProp | undefined\n}\n\ntype Listeners<T extends {}, U = keyof T> = U extends `onClick:${infer V extends names}` ? V : never\n\nexport function useInputIcon<T extends {}, K extends names = Listeners<T>> (props: T & InputIconProps<K>) {\n const { t } = useLocale()\n\n function InputIcon ({ name }: { name: Extract<names, K> }) {\n const localeKey = {\n prepend: 'prependAction',\n prependInner: 'prependAction',\n append: 'appendAction',\n appendInner: 'appendAction',\n clear: 'clear',\n }[name]\n const listener = props[`onClick:${name}`]\n const label = listener && localeKey\n ? t(`$vuetify.input.${localeKey}`, props.label ?? '')\n : undefined\n\n return (\n <VIcon\n icon={ props[`${name}Icon`] }\n aria-label={ label }\n onClick={ listener }\n />\n )\n }\n\n return { InputIcon }\n}\n"],"mappings":";AAAA;AAAA,SACSA,KAAK,8BAEd;AAAA,SACSC,SAAS,wCAElB;AAgBA,OAAO,SAASC,YAAYA,CAAgDC,KAA4B,EAAE;EACxG,MAAM;IAAEC;EAAE,CAAC,GAAGH,SAAS,CAAC,CAAC;EAEzB,SAASI,SAASA,CAAAC,IAAA,EAAyC;IAAA,IAAvC;MAAEC;IAAkC,CAAC,GAAAD,IAAA;IACvD,MAAME,SAAS,GAAG;MAChBC,OAAO,EAAE,eAAe;MACxBC,YAAY,EAAE,eAAe;MAC7BC,MAAM,EAAE,cAAc;MACtBC,WAAW,EAAE,cAAc;MAC3BC,KAAK,EAAE;IACT,CAAC,CAACN,IAAI,CAAC;IACP,MAAMO,QAAQ,GAAGX,KAAK,CAAC,WAAWI,IAAI,EAAE,CAAC;IACzC,MAAMQ,KAAK,GAAGD,QAAQ,IAAIN,SAAS,GAC/BJ,CAAC,CAAC,kBAAkBI,SAAS,EAAE,EAAEL,KAAK,CAACY,KAAK,IAAI,EAAE,CAAC,GACnDC,SAAS;IAEb,OAAAC,YAAA,CAAAjB,KAAA;MAAA,QAEWG,KAAK,CAAC,GAAGI,IAAI,MAAM,CAAC;MAAA,cACdQ,KAAK;MAAA,WACRD;IAAQ;EAGxB;EAEA,OAAO;IAAET;EAAU,CAAC;AACtB","ignoreList":[]}
1
+ {"version":3,"file":"InputIcon.mjs","names":["VIcon","useLocale","callEvent","useInputIcon","props","t","InputIcon","_ref","name","localeKey","prepend","prependInner","append","appendInner","clear","listener","onKeydown","e","key","preventDefault","stopPropagation","PointerEvent","label","undefined","_createVNode"],"sources":["../../../src/components/VInput/InputIcon.tsx"],"sourcesContent":["// Components\nimport { VIcon } from '@/components/VIcon'\n\n// Composables\nimport { useLocale } from '@/composables/locale'\n\n// Utilities\nimport { callEvent } from '@/util'\n\n// Types\nimport type { IconValue } from '@/composables/icons'\nimport type { EventProp } from '@/util'\n\ntype names = 'clear' | 'prepend' | 'append' | 'appendInner' | 'prependInner'\n\ntype InputIconProps<T extends names> = {\n label: string | undefined\n} & {\n [K in `${T}Icon`]: IconValue | undefined\n} & {\n [K in `onClick:${T}`]: EventProp | undefined\n}\n\ntype Listeners<T extends {}, U = keyof T> = U extends `onClick:${infer V extends names}` ? V : never\n\nexport function useInputIcon<T extends {}, K extends names = Listeners<T>> (props: T & InputIconProps<K>) {\n const { t } = useLocale()\n\n function InputIcon ({ name }: { name: Extract<names, K> }) {\n const localeKey = {\n prepend: 'prependAction',\n prependInner: 'prependAction',\n append: 'appendAction',\n appendInner: 'appendAction',\n clear: 'clear',\n }[name]\n const listener = props[`onClick:${name}`] as EventProp | undefined\n\n function onKeydown (e: KeyboardEvent) {\n if (e.key !== 'Enter' && e.key !== ' ') return\n\n e.preventDefault()\n e.stopPropagation()\n callEvent(listener, new PointerEvent('click', e))\n }\n\n const label = listener && localeKey\n ? t(`$vuetify.input.${localeKey}`, props.label ?? '')\n : undefined\n\n return (\n <VIcon\n icon={ props[`${name}Icon`] }\n aria-label={ label }\n onClick={ listener }\n onKeydown={ onKeydown }\n />\n )\n }\n\n return { InputIcon }\n}\n"],"mappings":";AAAA;AAAA,SACSA,KAAK,8BAEd;AAAA,SACSC,SAAS,wCAElB;AAAA,SACSC,SAAS,gCAElB;AAgBA,OAAO,SAASC,YAAYA,CAAgDC,KAA4B,EAAE;EACxG,MAAM;IAAEC;EAAE,CAAC,GAAGJ,SAAS,CAAC,CAAC;EAEzB,SAASK,SAASA,CAAAC,IAAA,EAAyC;IAAA,IAAvC;MAAEC;IAAkC,CAAC,GAAAD,IAAA;IACvD,MAAME,SAAS,GAAG;MAChBC,OAAO,EAAE,eAAe;MACxBC,YAAY,EAAE,eAAe;MAC7BC,MAAM,EAAE,cAAc;MACtBC,WAAW,EAAE,cAAc;MAC3BC,KAAK,EAAE;IACT,CAAC,CAACN,IAAI,CAAC;IACP,MAAMO,QAAQ,GAAGX,KAAK,CAAC,WAAWI,IAAI,EAAE,CAA0B;IAElE,SAASQ,SAASA,CAAEC,CAAgB,EAAE;MACpC,IAAIA,CAAC,CAACC,GAAG,KAAK,OAAO,IAAID,CAAC,CAACC,GAAG,KAAK,GAAG,EAAE;MAExCD,CAAC,CAACE,cAAc,CAAC,CAAC;MAClBF,CAAC,CAACG,eAAe,CAAC,CAAC;MACnBlB,SAAS,CAACa,QAAQ,EAAE,IAAIM,YAAY,CAAC,OAAO,EAAEJ,CAAC,CAAC,CAAC;IACnD;IAEA,MAAMK,KAAK,GAAGP,QAAQ,IAAIN,SAAS,GAC/BJ,CAAC,CAAC,kBAAkBI,SAAS,EAAE,EAAEL,KAAK,CAACkB,KAAK,IAAI,EAAE,CAAC,GACnDC,SAAS;IAEb,OAAAC,YAAA,CAAAxB,KAAA;MAAA,QAEWI,KAAK,CAAC,GAAGI,IAAI,MAAM,CAAC;MAAA,cACdc,KAAK;MAAA,WACRP,QAAQ;MAAA,aACNC;IAAS;EAG3B;EAEA,OAAO;IAAEV;EAAU,CAAC;AACtB","ignoreList":[]}
@@ -16,7 +16,7 @@ export const createVuetify = function () {
16
16
  ...options
17
17
  });
18
18
  };
19
- export const version = "3.7.7-master.2025-01-20";
19
+ export const version = "3.7.7-master.2025-01-21";
20
20
  createVuetify.version = version;
21
21
  export { blueprints, components, directives };
22
22
  export * from "./composables/index.mjs";
package/lib/framework.mjs CHANGED
@@ -97,7 +97,7 @@ export function createVuetify() {
97
97
  goTo
98
98
  };
99
99
  }
100
- export const version = "3.7.7-master.2025-01-20";
100
+ export const version = "3.7.7-master.2025-01-21";
101
101
  createVuetify.version = version;
102
102
 
103
103
  // Vue's inject() can only be used in setup
package/lib/index.d.mts CHANGED
@@ -490,38 +490,36 @@ declare module 'vue' {
490
490
  VAppBarNavIcon: typeof import('vuetify/components')['VAppBarNavIcon']
491
491
  VAppBarTitle: typeof import('vuetify/components')['VAppBarTitle']
492
492
  VApp: typeof import('vuetify/components')['VApp']
493
- VAvatar: typeof import('vuetify/components')['VAvatar']
494
493
  VAlert: typeof import('vuetify/components')['VAlert']
495
494
  VAlertTitle: typeof import('vuetify/components')['VAlertTitle']
496
- VBottomNavigation: typeof import('vuetify/components')['VBottomNavigation']
497
- VAutocomplete: typeof import('vuetify/components')['VAutocomplete']
498
495
  VBadge: typeof import('vuetify/components')['VBadge']
499
- VBreadcrumbs: typeof import('vuetify/components')['VBreadcrumbs']
500
- VBreadcrumbsItem: typeof import('vuetify/components')['VBreadcrumbsItem']
501
- VBreadcrumbsDivider: typeof import('vuetify/components')['VBreadcrumbsDivider']
502
- VBtn: typeof import('vuetify/components')['VBtn']
496
+ VAutocomplete: typeof import('vuetify/components')['VAutocomplete']
497
+ VAvatar: typeof import('vuetify/components')['VAvatar']
503
498
  VBanner: typeof import('vuetify/components')['VBanner']
504
499
  VBannerActions: typeof import('vuetify/components')['VBannerActions']
505
500
  VBannerText: typeof import('vuetify/components')['VBannerText']
506
- VCheckbox: typeof import('vuetify/components')['VCheckbox']
507
- VCheckboxBtn: typeof import('vuetify/components')['VCheckboxBtn']
501
+ VBtn: typeof import('vuetify/components')['VBtn']
508
502
  VBottomSheet: typeof import('vuetify/components')['VBottomSheet']
503
+ VBottomNavigation: typeof import('vuetify/components')['VBottomNavigation']
509
504
  VBtnGroup: typeof import('vuetify/components')['VBtnGroup']
510
- VBtnToggle: typeof import('vuetify/components')['VBtnToggle']
511
- VChip: typeof import('vuetify/components')['VChip']
512
- VCarousel: typeof import('vuetify/components')['VCarousel']
513
- VCarouselItem: typeof import('vuetify/components')['VCarouselItem']
514
- VChipGroup: typeof import('vuetify/components')['VChipGroup']
505
+ VBreadcrumbs: typeof import('vuetify/components')['VBreadcrumbs']
506
+ VBreadcrumbsItem: typeof import('vuetify/components')['VBreadcrumbsItem']
507
+ VBreadcrumbsDivider: typeof import('vuetify/components')['VBreadcrumbsDivider']
515
508
  VCard: typeof import('vuetify/components')['VCard']
516
509
  VCardActions: typeof import('vuetify/components')['VCardActions']
517
510
  VCardItem: typeof import('vuetify/components')['VCardItem']
518
511
  VCardSubtitle: typeof import('vuetify/components')['VCardSubtitle']
519
512
  VCardText: typeof import('vuetify/components')['VCardText']
520
513
  VCardTitle: typeof import('vuetify/components')['VCardTitle']
521
- VCode: typeof import('vuetify/components')['VCode']
522
- VColorPicker: typeof import('vuetify/components')['VColorPicker']
514
+ VBtnToggle: typeof import('vuetify/components')['VBtnToggle']
515
+ VCheckbox: typeof import('vuetify/components')['VCheckbox']
516
+ VCheckboxBtn: typeof import('vuetify/components')['VCheckboxBtn']
517
+ VChip: typeof import('vuetify/components')['VChip']
523
518
  VCombobox: typeof import('vuetify/components')['VCombobox']
524
- VCounter: typeof import('vuetify/components')['VCounter']
519
+ VCarousel: typeof import('vuetify/components')['VCarousel']
520
+ VCarouselItem: typeof import('vuetify/components')['VCarouselItem']
521
+ VChipGroup: typeof import('vuetify/components')['VChipGroup']
522
+ VColorPicker: typeof import('vuetify/components')['VColorPicker']
525
523
  VDataTable: typeof import('vuetify/components')['VDataTable']
526
524
  VDataTableHeaders: typeof import('vuetify/components')['VDataTableHeaders']
527
525
  VDataTableFooter: typeof import('vuetify/components')['VDataTableFooter']
@@ -529,108 +527,111 @@ declare module 'vue' {
529
527
  VDataTableRow: typeof import('vuetify/components')['VDataTableRow']
530
528
  VDataTableVirtual: typeof import('vuetify/components')['VDataTableVirtual']
531
529
  VDataTableServer: typeof import('vuetify/components')['VDataTableServer']
530
+ VCode: typeof import('vuetify/components')['VCode']
531
+ VCounter: typeof import('vuetify/components')['VCounter']
532
+ VDivider: typeof import('vuetify/components')['VDivider']
533
+ VDialog: typeof import('vuetify/components')['VDialog']
534
+ VEmptyState: typeof import('vuetify/components')['VEmptyState']
532
535
  VDatePicker: typeof import('vuetify/components')['VDatePicker']
533
536
  VDatePickerControls: typeof import('vuetify/components')['VDatePickerControls']
534
537
  VDatePickerHeader: typeof import('vuetify/components')['VDatePickerHeader']
535
538
  VDatePickerMonth: typeof import('vuetify/components')['VDatePickerMonth']
536
539
  VDatePickerMonths: typeof import('vuetify/components')['VDatePickerMonths']
537
540
  VDatePickerYears: typeof import('vuetify/components')['VDatePickerYears']
538
- VEmptyState: typeof import('vuetify/components')['VEmptyState']
539
- VDialog: typeof import('vuetify/components')['VDialog']
540
- VDivider: typeof import('vuetify/components')['VDivider']
541
541
  VExpansionPanels: typeof import('vuetify/components')['VExpansionPanels']
542
542
  VExpansionPanel: typeof import('vuetify/components')['VExpansionPanel']
543
543
  VExpansionPanelText: typeof import('vuetify/components')['VExpansionPanelText']
544
544
  VExpansionPanelTitle: typeof import('vuetify/components')['VExpansionPanelTitle']
545
+ VFileInput: typeof import('vuetify/components')['VFileInput']
545
546
  VFab: typeof import('vuetify/components')['VFab']
546
547
  VField: typeof import('vuetify/components')['VField']
547
548
  VFieldLabel: typeof import('vuetify/components')['VFieldLabel']
548
549
  VFooter: typeof import('vuetify/components')['VFooter']
549
- VFileInput: typeof import('vuetify/components')['VFileInput']
550
- VInfiniteScroll: typeof import('vuetify/components')['VInfiniteScroll']
551
- VItemGroup: typeof import('vuetify/components')['VItemGroup']
552
- VItem: typeof import('vuetify/components')['VItem']
553
- VImg: typeof import('vuetify/components')['VImg']
554
- VInput: typeof import('vuetify/components')['VInput']
555
550
  VIcon: typeof import('vuetify/components')['VIcon']
556
551
  VComponentIcon: typeof import('vuetify/components')['VComponentIcon']
557
552
  VSvgIcon: typeof import('vuetify/components')['VSvgIcon']
558
553
  VLigatureIcon: typeof import('vuetify/components')['VLigatureIcon']
559
554
  VClassIcon: typeof import('vuetify/components')['VClassIcon']
560
- VLabel: typeof import('vuetify/components')['VLabel']
561
- VList: typeof import('vuetify/components')['VList']
562
- VListGroup: typeof import('vuetify/components')['VListGroup']
563
- VListImg: typeof import('vuetify/components')['VListImg']
564
- VListItem: typeof import('vuetify/components')['VListItem']
565
- VListItemAction: typeof import('vuetify/components')['VListItemAction']
566
- VListItemMedia: typeof import('vuetify/components')['VListItemMedia']
567
- VListItemSubtitle: typeof import('vuetify/components')['VListItemSubtitle']
568
- VListItemTitle: typeof import('vuetify/components')['VListItemTitle']
569
- VListSubheader: typeof import('vuetify/components')['VListSubheader']
555
+ VImg: typeof import('vuetify/components')['VImg']
556
+ VInfiniteScroll: typeof import('vuetify/components')['VInfiniteScroll']
557
+ VInput: typeof import('vuetify/components')['VInput']
570
558
  VKbd: typeof import('vuetify/components')['VKbd']
571
- VMessages: typeof import('vuetify/components')['VMessages']
559
+ VItemGroup: typeof import('vuetify/components')['VItemGroup']
560
+ VItem: typeof import('vuetify/components')['VItem']
561
+ VMenu: typeof import('vuetify/components')['VMenu']
562
+ VLabel: typeof import('vuetify/components')['VLabel']
572
563
  VMain: typeof import('vuetify/components')['VMain']
564
+ VMessages: typeof import('vuetify/components')['VMessages']
565
+ VPagination: typeof import('vuetify/components')['VPagination']
573
566
  VNavigationDrawer: typeof import('vuetify/components')['VNavigationDrawer']
574
567
  VOtpInput: typeof import('vuetify/components')['VOtpInput']
575
- VMenu: typeof import('vuetify/components')['VMenu']
576
- VPagination: typeof import('vuetify/components')['VPagination']
577
- VOverlay: typeof import('vuetify/components')['VOverlay']
578
568
  VProgressCircular: typeof import('vuetify/components')['VProgressCircular']
579
- VProgressLinear: typeof import('vuetify/components')['VProgressLinear']
580
569
  VRadioGroup: typeof import('vuetify/components')['VRadioGroup']
570
+ VProgressLinear: typeof import('vuetify/components')['VProgressLinear']
571
+ VOverlay: typeof import('vuetify/components')['VOverlay']
581
572
  VRating: typeof import('vuetify/components')['VRating']
582
573
  VSelect: typeof import('vuetify/components')['VSelect']
583
574
  VSelectionControl: typeof import('vuetify/components')['VSelectionControl']
584
- VSkeletonLoader: typeof import('vuetify/components')['VSkeletonLoader']
575
+ VSheet: typeof import('vuetify/components')['VSheet']
585
576
  VSelectionControlGroup: typeof import('vuetify/components')['VSelectionControlGroup']
586
577
  VSlider: typeof import('vuetify/components')['VSlider']
587
- VSnackbar: typeof import('vuetify/components')['VSnackbar']
588
- VSheet: typeof import('vuetify/components')['VSheet']
589
- VTab: typeof import('vuetify/components')['VTab']
590
- VTabs: typeof import('vuetify/components')['VTabs']
591
- VTabsWindow: typeof import('vuetify/components')['VTabsWindow']
592
- VTabsWindowItem: typeof import('vuetify/components')['VTabsWindowItem']
578
+ VSkeletonLoader: typeof import('vuetify/components')['VSkeletonLoader']
579
+ VSlideGroup: typeof import('vuetify/components')['VSlideGroup']
580
+ VSlideGroupItem: typeof import('vuetify/components')['VSlideGroupItem']
593
581
  VStepper: typeof import('vuetify/components')['VStepper']
594
582
  VStepperActions: typeof import('vuetify/components')['VStepperActions']
595
583
  VStepperHeader: typeof import('vuetify/components')['VStepperHeader']
596
584
  VStepperItem: typeof import('vuetify/components')['VStepperItem']
597
585
  VStepperWindow: typeof import('vuetify/components')['VStepperWindow']
598
586
  VStepperWindowItem: typeof import('vuetify/components')['VStepperWindowItem']
599
- VTable: typeof import('vuetify/components')['VTable']
600
- VSlideGroup: typeof import('vuetify/components')['VSlideGroup']
601
- VSlideGroupItem: typeof import('vuetify/components')['VSlideGroupItem']
587
+ VSnackbar: typeof import('vuetify/components')['VSnackbar']
602
588
  VSwitch: typeof import('vuetify/components')['VSwitch']
589
+ VSystemBar: typeof import('vuetify/components')['VSystemBar']
590
+ VList: typeof import('vuetify/components')['VList']
591
+ VListGroup: typeof import('vuetify/components')['VListGroup']
592
+ VListImg: typeof import('vuetify/components')['VListImg']
593
+ VListItem: typeof import('vuetify/components')['VListItem']
594
+ VListItemAction: typeof import('vuetify/components')['VListItemAction']
595
+ VListItemMedia: typeof import('vuetify/components')['VListItemMedia']
596
+ VListItemSubtitle: typeof import('vuetify/components')['VListItemSubtitle']
597
+ VListItemTitle: typeof import('vuetify/components')['VListItemTitle']
598
+ VListSubheader: typeof import('vuetify/components')['VListSubheader']
603
599
  VTextarea: typeof import('vuetify/components')['VTextarea']
600
+ VTab: typeof import('vuetify/components')['VTab']
601
+ VTabs: typeof import('vuetify/components')['VTabs']
602
+ VTabsWindow: typeof import('vuetify/components')['VTabsWindow']
603
+ VTabsWindowItem: typeof import('vuetify/components')['VTabsWindowItem']
604
604
  VTextField: typeof import('vuetify/components')['VTextField']
605
+ VTable: typeof import('vuetify/components')['VTable']
605
606
  VTimeline: typeof import('vuetify/components')['VTimeline']
606
607
  VTimelineItem: typeof import('vuetify/components')['VTimelineItem']
608
+ VWindow: typeof import('vuetify/components')['VWindow']
609
+ VWindowItem: typeof import('vuetify/components')['VWindowItem']
610
+ VTooltip: typeof import('vuetify/components')['VTooltip']
607
611
  VToolbar: typeof import('vuetify/components')['VToolbar']
608
612
  VToolbarTitle: typeof import('vuetify/components')['VToolbarTitle']
609
613
  VToolbarItems: typeof import('vuetify/components')['VToolbarItems']
610
- VSystemBar: typeof import('vuetify/components')['VSystemBar']
611
- VTooltip: typeof import('vuetify/components')['VTooltip']
612
- VWindow: typeof import('vuetify/components')['VWindow']
613
- VWindowItem: typeof import('vuetify/components')['VWindowItem']
614
614
  VConfirmEdit: typeof import('vuetify/components')['VConfirmEdit']
615
- VDataIterator: typeof import('vuetify/components')['VDataIterator']
616
615
  VDefaultsProvider: typeof import('vuetify/components')['VDefaultsProvider']
616
+ VDataIterator: typeof import('vuetify/components')['VDataIterator']
617
617
  VForm: typeof import('vuetify/components')['VForm']
618
618
  VContainer: typeof import('vuetify/components')['VContainer']
619
619
  VCol: typeof import('vuetify/components')['VCol']
620
620
  VRow: typeof import('vuetify/components')['VRow']
621
621
  VSpacer: typeof import('vuetify/components')['VSpacer']
622
622
  VHover: typeof import('vuetify/components')['VHover']
623
- VLazy: typeof import('vuetify/components')['VLazy']
624
623
  VLayout: typeof import('vuetify/components')['VLayout']
625
624
  VLayoutItem: typeof import('vuetify/components')['VLayoutItem']
626
625
  VLocaleProvider: typeof import('vuetify/components')['VLocaleProvider']
626
+ VLazy: typeof import('vuetify/components')['VLazy']
627
627
  VNoSsr: typeof import('vuetify/components')['VNoSsr']
628
628
  VParallax: typeof import('vuetify/components')['VParallax']
629
629
  VRadio: typeof import('vuetify/components')['VRadio']
630
- VRangeSlider: typeof import('vuetify/components')['VRangeSlider']
631
630
  VResponsive: typeof import('vuetify/components')['VResponsive']
632
- VSpeedDial: typeof import('vuetify/components')['VSpeedDial']
631
+ VRangeSlider: typeof import('vuetify/components')['VRangeSlider']
633
632
  VSparkline: typeof import('vuetify/components')['VSparkline']
633
+ VSpeedDial: typeof import('vuetify/components')['VSpeedDial']
634
+ VVirtualScroll: typeof import('vuetify/components')['VVirtualScroll']
634
635
  VThemeProvider: typeof import('vuetify/components')['VThemeProvider']
635
636
  VValidation: typeof import('vuetify/components')['VValidation']
636
637
  VFabTransition: typeof import('vuetify/components')['VFabTransition']
@@ -649,7 +650,6 @@ declare module 'vue' {
649
650
  VExpandTransition: typeof import('vuetify/components')['VExpandTransition']
650
651
  VExpandXTransition: typeof import('vuetify/components')['VExpandXTransition']
651
652
  VDialogTransition: typeof import('vuetify/components')['VDialogTransition']
652
- VVirtualScroll: typeof import('vuetify/components')['VVirtualScroll']
653
653
  VCalendar: typeof import('vuetify/labs/components')['VCalendar']
654
654
  VCalendarDay: typeof import('vuetify/labs/components')['VCalendarDay']
655
655
  VCalendarHeader: typeof import('vuetify/labs/components')['VCalendarHeader']
@@ -657,19 +657,19 @@ declare module 'vue' {
657
657
  VCalendarIntervalEvent: typeof import('vuetify/labs/components')['VCalendarIntervalEvent']
658
658
  VCalendarMonthDay: typeof import('vuetify/labs/components')['VCalendarMonthDay']
659
659
  VNumberInput: typeof import('vuetify/labs/components')['VNumberInput']
660
+ VPicker: typeof import('vuetify/labs/components')['VPicker']
661
+ VPickerTitle: typeof import('vuetify/labs/components')['VPickerTitle']
662
+ VFileUpload: typeof import('vuetify/labs/components')['VFileUpload']
663
+ VFileUploadItem: typeof import('vuetify/labs/components')['VFileUploadItem']
660
664
  VStepperVertical: typeof import('vuetify/labs/components')['VStepperVertical']
661
665
  VStepperVerticalItem: typeof import('vuetify/labs/components')['VStepperVerticalItem']
662
666
  VStepperVerticalActions: typeof import('vuetify/labs/components')['VStepperVerticalActions']
663
- VFileUpload: typeof import('vuetify/labs/components')['VFileUpload']
664
- VFileUploadItem: typeof import('vuetify/labs/components')['VFileUploadItem']
665
- VPicker: typeof import('vuetify/labs/components')['VPicker']
666
- VPickerTitle: typeof import('vuetify/labs/components')['VPickerTitle']
667
- VTreeview: typeof import('vuetify/labs/components')['VTreeview']
668
- VTreeviewItem: typeof import('vuetify/labs/components')['VTreeviewItem']
669
- VTreeviewGroup: typeof import('vuetify/labs/components')['VTreeviewGroup']
670
667
  VTimePicker: typeof import('vuetify/labs/components')['VTimePicker']
671
668
  VTimePickerClock: typeof import('vuetify/labs/components')['VTimePickerClock']
672
669
  VTimePickerControls: typeof import('vuetify/labs/components')['VTimePickerControls']
670
+ VTreeview: typeof import('vuetify/labs/components')['VTreeview']
671
+ VTreeviewItem: typeof import('vuetify/labs/components')['VTreeviewItem']
672
+ VTreeviewGroup: typeof import('vuetify/labs/components')['VTreeviewGroup']
673
673
  VDateInput: typeof import('vuetify/labs/components')['VDateInput']
674
674
  VPullToRefresh: typeof import('vuetify/labs/components')['VPullToRefresh']
675
675
  VSnackbarQueue: typeof import('vuetify/labs/components')['VSnackbarQueue']
@@ -7,6 +7,7 @@ import { IconValue } from "../../composables/icons.mjs"; // Utilities
7
7
  import { computed, reactive, toRaw, withModifiers } from 'vue';
8
8
  import { genericComponent, propsFactory } from "../../util/index.mjs"; // Types
9
9
  export const makeVTreeviewChildrenProps = propsFactory({
10
+ disabled: Boolean,
10
11
  loadChildren: Function,
11
12
  loadingIcon: {
12
13
  type: String,
@@ -36,7 +37,7 @@ export const VTreeviewChildren = genericComponent()({
36
37
  slots
37
38
  } = _ref;
38
39
  const isLoading = reactive(new Set());
39
- const isClickOnOpen = computed(() => props.openOnClick != null ? props.openOnClick : props.selectable);
40
+ const isClickOnOpen = computed(() => !props.disabled && (props.openOnClick != null ? props.openOnClick : props.selectable));
40
41
  async function checkChildren(item) {
41
42
  try {
42
43
  if (!props.items?.length || !props.loadChildren) return;
@@ -63,6 +64,7 @@ export const VTreeviewChildren = genericComponent()({
63
64
  prepend: slotProps => _createVNode(_Fragment, null, [props.selectable && (!children || children && !['leaf', 'single-leaf'].includes(props.selectStrategy)) && _createVNode("div", null, [_createVNode(VCheckboxBtn, {
64
65
  "key": item.value,
65
66
  "modelValue": slotProps.isSelected,
67
+ "disabled": props.disabled,
66
68
  "loading": loading,
67
69
  "color": props.selectedColor,
68
70
  "indeterminate": slotProps.isIndeterminate,
@@ -1 +1 @@
1
- {"version":3,"file":"VTreeviewChildren.mjs","names":["VTreeviewGroup","VTreeviewItem","VCheckboxBtn","IconValue","computed","reactive","toRaw","withModifiers","genericComponent","propsFactory","makeVTreeviewChildrenProps","loadChildren","Function","loadingIcon","type","String","default","items","Array","openOnClick","Boolean","undefined","indeterminateIcon","falseIcon","trueIcon","returnObject","selectable","selectedColor","selectStrategy","Object","VTreeviewChildren","name","props","setup","_ref","slots","isLoading","Set","isClickOnOpen","checkChildren","item","length","children","add","value","raw","delete","selectItem","select","isSelected","map","itemProps","loading","has","slotsWithItem","prepend","slotProps","_createVNode","_Fragment","includes","isIndeterminate","e","key","stopPropagation","internalItem","append","title","treeviewGroupProps","filterProps","treeviewChildrenProps","_mergeProps","activator","_ref2","activatorProps","listItemProps","onToggleExpand","onClick"],"sources":["../../../src/labs/VTreeview/VTreeviewChildren.tsx"],"sourcesContent":["// Components\nimport { VTreeviewGroup } from './VTreeviewGroup'\nimport { VTreeviewItem } from './VTreeviewItem'\nimport { VCheckboxBtn } from '@/components/VCheckbox'\n\n// Composables\nimport { IconValue } from '@/composables/icons'\n\n// Utilities\nimport { computed, reactive, toRaw, withModifiers } from 'vue'\nimport { genericComponent, propsFactory } from '@/util'\n\n// Types\nimport type { PropType } from 'vue'\nimport type { InternalListItem } from '@/components/VList/VList'\nimport type { VListItemSlots } from '@/components/VList/VListItem'\nimport type { SelectStrategyProp } from '@/composables/nested/nested'\nimport type { GenericProps } from '@/util'\n\nexport type VTreeviewChildrenSlots<T> = {\n [K in keyof Omit<VListItemSlots, 'default'>]: VListItemSlots[K] & {\n item: T\n internalItem: InternalListItem<T>\n }\n} & {\n default: never\n item: {\n props: InternalListItem['props']\n item: T\n internalItem: InternalListItem<T>\n }\n}\n\nexport const makeVTreeviewChildrenProps = propsFactory({\n loadChildren: Function as PropType<(item: unknown) => Promise<void>>,\n loadingIcon: {\n type: String,\n default: '$loading',\n },\n items: Array as PropType<readonly InternalListItem[]>,\n openOnClick: {\n type: Boolean,\n default: undefined,\n },\n indeterminateIcon: {\n type: IconValue,\n default: '$checkboxIndeterminate',\n },\n falseIcon: IconValue,\n trueIcon: IconValue,\n returnObject: Boolean,\n selectable: Boolean,\n selectedColor: String,\n selectStrategy: [String, Function, Object] as PropType<SelectStrategyProp>,\n}, 'VTreeviewChildren')\n\nexport const VTreeviewChildren = genericComponent<new <T extends InternalListItem>(\n props: {\n items?: readonly T[]\n },\n slots: VTreeviewChildrenSlots<T>\n) => GenericProps<typeof props, typeof slots>>()({\n name: 'VTreeviewChildren',\n\n props: makeVTreeviewChildrenProps(),\n\n setup (props, { slots }) {\n const isLoading = reactive(new Set<unknown>())\n\n const isClickOnOpen = computed(() => props.openOnClick != null ? props.openOnClick : props.selectable)\n\n async function checkChildren (item: InternalListItem) {\n try {\n if (!props.items?.length || !props.loadChildren) return\n\n if (item?.children?.length === 0) {\n isLoading.add(item.value)\n await props.loadChildren(item.raw)\n }\n } finally {\n isLoading.delete(item.value)\n }\n }\n\n function selectItem (select: (value: boolean) => void, isSelected: boolean) {\n if (props.selectable) {\n select(!isSelected)\n }\n }\n\n return () => slots.default?.() ?? props.items?.map(item => {\n const { children, props: itemProps } = item\n const loading = isLoading.has(item.value)\n const slotsWithItem = {\n prepend: slotProps => (\n <>\n { props.selectable && (!children || (children && !['leaf', 'single-leaf'].includes(props.selectStrategy as string))) && (\n <div>\n <VCheckboxBtn\n key={ item.value }\n modelValue={ slotProps.isSelected }\n loading={ loading }\n color={ props.selectedColor }\n indeterminate={ slotProps.isIndeterminate }\n indeterminateIcon={ props.indeterminateIcon }\n falseIcon={ props.falseIcon }\n trueIcon={ props.trueIcon }\n onClick={ withModifiers(() => selectItem(slotProps.select, slotProps.isSelected), ['stop']) }\n onKeydown={ (e: KeyboardEvent) => {\n if (!['Enter', 'Space'].includes(e.key)) return\n e.stopPropagation()\n selectItem(slotProps.select, slotProps.isSelected)\n }}\n />\n </div>\n )}\n\n { slots.prepend?.({ ...slotProps, item: item.raw, internalItem: item }) }\n </>\n ),\n append: slots.append ? slotProps => slots.append?.({ ...slotProps, item: item.raw, internalItem: item }) : undefined,\n title: slots.title ? slotProps => slots.title?.({ ...slotProps, item: item.raw, internalItem: item }) : undefined,\n } satisfies VTreeviewItem['$props']['$children']\n\n const treeviewGroupProps = VTreeviewGroup.filterProps(itemProps)\n const treeviewChildrenProps = VTreeviewChildren.filterProps(props)\n\n return children ? (\n <VTreeviewGroup\n { ...treeviewGroupProps }\n value={ props.returnObject ? item.raw : treeviewGroupProps?.value }\n >\n {{\n activator: ({ props: activatorProps }) => {\n const listItemProps = {\n ...itemProps,\n ...activatorProps,\n value: itemProps?.value,\n onToggleExpand: [() => checkChildren(item), activatorProps.onClick] as any,\n onClick: isClickOnOpen.value ? [() => checkChildren(item), activatorProps.onClick] as any : undefined,\n }\n\n return (\n <VTreeviewItem\n { ...listItemProps }\n value={ props.returnObject ? item.raw : itemProps.value }\n loading={ loading }\n v-slots={ slotsWithItem }\n />\n )\n },\n default: () => (\n <VTreeviewChildren\n { ...treeviewChildrenProps }\n items={ children }\n returnObject={ props.returnObject }\n v-slots={ slots }\n />\n ),\n }}\n </VTreeviewGroup>\n ) : (\n slots.item?.({ props: itemProps, item: item.raw, internalItem: item }) ?? (\n <VTreeviewItem\n { ...itemProps }\n value={ props.returnObject ? toRaw(item.raw) : itemProps.value }\n v-slots={ slotsWithItem }\n />\n ))\n })\n },\n})\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"VTreeviewChildren.mjs","names":["VTreeviewGroup","VTreeviewItem","VCheckboxBtn","IconValue","computed","reactive","toRaw","withModifiers","genericComponent","propsFactory","makeVTreeviewChildrenProps","disabled","Boolean","loadChildren","Function","loadingIcon","type","String","default","items","Array","openOnClick","undefined","indeterminateIcon","falseIcon","trueIcon","returnObject","selectable","selectedColor","selectStrategy","Object","VTreeviewChildren","name","props","setup","_ref","slots","isLoading","Set","isClickOnOpen","checkChildren","item","length","children","add","value","raw","delete","selectItem","select","isSelected","map","itemProps","loading","has","slotsWithItem","prepend","slotProps","_createVNode","_Fragment","includes","isIndeterminate","e","key","stopPropagation","internalItem","append","title","treeviewGroupProps","filterProps","treeviewChildrenProps","_mergeProps","activator","_ref2","activatorProps","listItemProps","onToggleExpand","onClick"],"sources":["../../../src/labs/VTreeview/VTreeviewChildren.tsx"],"sourcesContent":["// Components\nimport { VTreeviewGroup } from './VTreeviewGroup'\nimport { VTreeviewItem } from './VTreeviewItem'\nimport { VCheckboxBtn } from '@/components/VCheckbox'\n\n// Composables\nimport { IconValue } from '@/composables/icons'\n\n// Utilities\nimport { computed, reactive, toRaw, withModifiers } from 'vue'\nimport { genericComponent, propsFactory } from '@/util'\n\n// Types\nimport type { PropType } from 'vue'\nimport type { InternalListItem } from '@/components/VList/VList'\nimport type { VListItemSlots } from '@/components/VList/VListItem'\nimport type { SelectStrategyProp } from '@/composables/nested/nested'\nimport type { GenericProps } from '@/util'\n\nexport type VTreeviewChildrenSlots<T> = {\n [K in keyof Omit<VListItemSlots, 'default'>]: VListItemSlots[K] & {\n item: T\n internalItem: InternalListItem<T>\n }\n} & {\n default: never\n item: {\n props: InternalListItem['props']\n item: T\n internalItem: InternalListItem<T>\n }\n}\n\nexport const makeVTreeviewChildrenProps = propsFactory({\n disabled: Boolean,\n loadChildren: Function as PropType<(item: unknown) => Promise<void>>,\n loadingIcon: {\n type: String,\n default: '$loading',\n },\n items: Array as PropType<readonly InternalListItem[]>,\n openOnClick: {\n type: Boolean,\n default: undefined,\n },\n indeterminateIcon: {\n type: IconValue,\n default: '$checkboxIndeterminate',\n },\n falseIcon: IconValue,\n trueIcon: IconValue,\n returnObject: Boolean,\n selectable: Boolean,\n selectedColor: String,\n selectStrategy: [String, Function, Object] as PropType<SelectStrategyProp>,\n}, 'VTreeviewChildren')\n\nexport const VTreeviewChildren = genericComponent<new <T extends InternalListItem>(\n props: {\n items?: readonly T[]\n },\n slots: VTreeviewChildrenSlots<T>\n) => GenericProps<typeof props, typeof slots>>()({\n name: 'VTreeviewChildren',\n\n props: makeVTreeviewChildrenProps(),\n\n setup (props, { slots }) {\n const isLoading = reactive(new Set<unknown>())\n\n const isClickOnOpen = computed(() => !props.disabled && (props.openOnClick != null ? props.openOnClick : props.selectable))\n\n async function checkChildren (item: InternalListItem) {\n try {\n if (!props.items?.length || !props.loadChildren) return\n\n if (item?.children?.length === 0) {\n isLoading.add(item.value)\n await props.loadChildren(item.raw)\n }\n } finally {\n isLoading.delete(item.value)\n }\n }\n\n function selectItem (select: (value: boolean) => void, isSelected: boolean) {\n if (props.selectable) {\n select(!isSelected)\n }\n }\n\n return () => slots.default?.() ?? props.items?.map(item => {\n const { children, props: itemProps } = item\n const loading = isLoading.has(item.value)\n const slotsWithItem = {\n prepend: slotProps => (\n <>\n { props.selectable && (!children || (children && !['leaf', 'single-leaf'].includes(props.selectStrategy as string))) && (\n <div>\n <VCheckboxBtn\n key={ item.value }\n modelValue={ slotProps.isSelected }\n disabled={ props.disabled }\n loading={ loading }\n color={ props.selectedColor }\n indeterminate={ slotProps.isIndeterminate }\n indeterminateIcon={ props.indeterminateIcon }\n falseIcon={ props.falseIcon }\n trueIcon={ props.trueIcon }\n onClick={ withModifiers(() => selectItem(slotProps.select, slotProps.isSelected), ['stop']) }\n onKeydown={ (e: KeyboardEvent) => {\n if (!['Enter', 'Space'].includes(e.key)) return\n e.stopPropagation()\n selectItem(slotProps.select, slotProps.isSelected)\n }}\n />\n </div>\n )}\n\n { slots.prepend?.({ ...slotProps, item: item.raw, internalItem: item }) }\n </>\n ),\n append: slots.append ? slotProps => slots.append?.({ ...slotProps, item: item.raw, internalItem: item }) : undefined,\n title: slots.title ? slotProps => slots.title?.({ ...slotProps, item: item.raw, internalItem: item }) : undefined,\n } satisfies VTreeviewItem['$props']['$children']\n\n const treeviewGroupProps = VTreeviewGroup.filterProps(itemProps)\n const treeviewChildrenProps = VTreeviewChildren.filterProps(props)\n\n return children ? (\n <VTreeviewGroup\n { ...treeviewGroupProps }\n value={ props.returnObject ? item.raw : treeviewGroupProps?.value }\n >\n {{\n activator: ({ props: activatorProps }) => {\n const listItemProps = {\n ...itemProps,\n ...activatorProps,\n value: itemProps?.value,\n onToggleExpand: [() => checkChildren(item), activatorProps.onClick] as any,\n onClick: isClickOnOpen.value ? [() => checkChildren(item), activatorProps.onClick] as any : undefined,\n }\n\n return (\n <VTreeviewItem\n { ...listItemProps }\n value={ props.returnObject ? item.raw : itemProps.value }\n loading={ loading }\n v-slots={ slotsWithItem }\n />\n )\n },\n default: () => (\n <VTreeviewChildren\n { ...treeviewChildrenProps }\n items={ children }\n returnObject={ props.returnObject }\n v-slots={ slots }\n />\n ),\n }}\n </VTreeviewGroup>\n ) : (\n slots.item?.({ props: itemProps, item: item.raw, internalItem: item }) ?? (\n <VTreeviewItem\n { ...itemProps }\n value={ props.returnObject ? toRaw(item.raw) : itemProps.value }\n v-slots={ slotsWithItem }\n />\n ))\n })\n },\n})\n"],"mappings":";AAAA;AAAA,SACSA,cAAc;AAAA,SACdC,aAAa;AAAA,SACbC,YAAY,gDAErB;AAAA,SACSC,SAAS,uCAElB;AACA,SAASC,QAAQ,EAAEC,QAAQ,EAAEC,KAAK,EAAEC,aAAa,QAAQ,KAAK;AAAA,SACrDC,gBAAgB,EAAEC,YAAY,gCAEvC;AAqBA,OAAO,MAAMC,0BAA0B,GAAGD,YAAY,CAAC;EACrDE,QAAQ,EAAEC,OAAO;EACjBC,YAAY,EAAEC,QAAsD;EACpEC,WAAW,EAAE;IACXC,IAAI,EAAEC,MAAM;IACZC,OAAO,EAAE;EACX,CAAC;EACDC,KAAK,EAAEC,KAA8C;EACrDC,WAAW,EAAE;IACXL,IAAI,EAAEJ,OAAO;IACbM,OAAO,EAAEI;EACX,CAAC;EACDC,iBAAiB,EAAE;IACjBP,IAAI,EAAEb,SAAS;IACfe,OAAO,EAAE;EACX,CAAC;EACDM,SAAS,EAAErB,SAAS;EACpBsB,QAAQ,EAAEtB,SAAS;EACnBuB,YAAY,EAAEd,OAAO;EACrBe,UAAU,EAAEf,OAAO;EACnBgB,aAAa,EAAEX,MAAM;EACrBY,cAAc,EAAE,CAACZ,MAAM,EAAEH,QAAQ,EAAEgB,MAAM;AAC3C,CAAC,EAAE,mBAAmB,CAAC;AAEvB,OAAO,MAAMC,iBAAiB,GAAGvB,gBAAgB,CAKF,CAAC,CAAC;EAC/CwB,IAAI,EAAE,mBAAmB;EAEzBC,KAAK,EAAEvB,0BAA0B,CAAC,CAAC;EAEnCwB,KAAKA,CAAED,KAAK,EAAAE,IAAA,EAAa;IAAA,IAAX;MAAEC;IAAM,CAAC,GAAAD,IAAA;IACrB,MAAME,SAAS,GAAGhC,QAAQ,CAAC,IAAIiC,GAAG,CAAU,CAAC,CAAC;IAE9C,MAAMC,aAAa,GAAGnC,QAAQ,CAAC,MAAM,CAAC6B,KAAK,CAACtB,QAAQ,KAAKsB,KAAK,CAACZ,WAAW,IAAI,IAAI,GAAGY,KAAK,CAACZ,WAAW,GAAGY,KAAK,CAACN,UAAU,CAAC,CAAC;IAE3H,eAAea,aAAaA,CAAEC,IAAsB,EAAE;MACpD,IAAI;QACF,IAAI,CAACR,KAAK,CAACd,KAAK,EAAEuB,MAAM,IAAI,CAACT,KAAK,CAACpB,YAAY,EAAE;QAEjD,IAAI4B,IAAI,EAAEE,QAAQ,EAAED,MAAM,KAAK,CAAC,EAAE;UAChCL,SAAS,CAACO,GAAG,CAACH,IAAI,CAACI,KAAK,CAAC;UACzB,MAAMZ,KAAK,CAACpB,YAAY,CAAC4B,IAAI,CAACK,GAAG,CAAC;QACpC;MACF,CAAC,SAAS;QACRT,SAAS,CAACU,MAAM,CAACN,IAAI,CAACI,KAAK,CAAC;MAC9B;IACF;IAEA,SAASG,UAAUA,CAAEC,MAAgC,EAAEC,UAAmB,EAAE;MAC1E,IAAIjB,KAAK,CAACN,UAAU,EAAE;QACpBsB,MAAM,CAAC,CAACC,UAAU,CAAC;MACrB;IACF;IAEA,OAAO,MAAMd,KAAK,CAAClB,OAAO,GAAG,CAAC,IAAIe,KAAK,CAACd,KAAK,EAAEgC,GAAG,CAACV,IAAI,IAAI;MACzD,MAAM;QAAEE,QAAQ;QAAEV,KAAK,EAAEmB;MAAU,CAAC,GAAGX,IAAI;MAC3C,MAAMY,OAAO,GAAGhB,SAAS,CAACiB,GAAG,CAACb,IAAI,CAACI,KAAK,CAAC;MACzC,MAAMU,aAAa,GAAG;QACpBC,OAAO,EAAEC,SAAS,IAAAC,YAAA,CAAAC,SAAA,SAEZ1B,KAAK,CAACN,UAAU,KAAK,CAACgB,QAAQ,IAAKA,QAAQ,IAAI,CAAC,CAAC,MAAM,EAAE,aAAa,CAAC,CAACiB,QAAQ,CAAC3B,KAAK,CAACJ,cAAwB,CAAE,CAAC,IAAA6B,YAAA,eAAAA,YAAA,CAAAxD,YAAA;UAAA,OAGxGuC,IAAI,CAACI,KAAK;UAAA,cACHY,SAAS,CAACP,UAAU;UAAA,YACtBjB,KAAK,CAACtB,QAAQ;UAAA,WACf0C,OAAO;UAAA,SACTpB,KAAK,CAACL,aAAa;UAAA,iBACX6B,SAAS,CAACI,eAAe;UAAA,qBACrB5B,KAAK,CAACV,iBAAiB;UAAA,aAC/BU,KAAK,CAACT,SAAS;UAAA,YAChBS,KAAK,CAACR,QAAQ;UAAA,WACflB,aAAa,CAAC,MAAMyC,UAAU,CAACS,SAAS,CAACR,MAAM,EAAEQ,SAAS,CAACP,UAAU,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC;UAAA,aAC9EY,CAAgB,IAAK;YAChC,IAAI,CAAC,CAAC,OAAO,EAAE,OAAO,CAAC,CAACF,QAAQ,CAACE,CAAC,CAACC,GAAG,CAAC,EAAE;YACzCD,CAAC,CAACE,eAAe,CAAC,CAAC;YACnBhB,UAAU,CAACS,SAAS,CAACR,MAAM,EAAEQ,SAAS,CAACP,UAAU,CAAC;UACpD;QAAC,UAGN,EAECd,KAAK,CAACoB,OAAO,GAAG;UAAE,GAAGC,SAAS;UAAEhB,IAAI,EAAEA,IAAI,CAACK,GAAG;UAAEmB,YAAY,EAAExB;QAAK,CAAC,CAAC,EAE1E;QACDyB,MAAM,EAAE9B,KAAK,CAAC8B,MAAM,GAAGT,SAAS,IAAIrB,KAAK,CAAC8B,MAAM,GAAG;UAAE,GAAGT,SAAS;UAAEhB,IAAI,EAAEA,IAAI,CAACK,GAAG;UAAEmB,YAAY,EAAExB;QAAK,CAAC,CAAC,GAAGnB,SAAS;QACpH6C,KAAK,EAAE/B,KAAK,CAAC+B,KAAK,GAAGV,SAAS,IAAIrB,KAAK,CAAC+B,KAAK,GAAG;UAAE,GAAGV,SAAS;UAAEhB,IAAI,EAAEA,IAAI,CAACK,GAAG;UAAEmB,YAAY,EAAExB;QAAK,CAAC,CAAC,GAAGnB;MAC1G,CAAgD;MAEhD,MAAM8C,kBAAkB,GAAGpE,cAAc,CAACqE,WAAW,CAACjB,SAAS,CAAC;MAChE,MAAMkB,qBAAqB,GAAGvC,iBAAiB,CAACsC,WAAW,CAACpC,KAAK,CAAC;MAElE,OAAOU,QAAQ,GAAAe,YAAA,CAAA1D,cAAA,EAAAuE,WAAA,CAENH,kBAAkB;QAAA,SACfnC,KAAK,CAACP,YAAY,GAAGe,IAAI,CAACK,GAAG,GAAGsB,kBAAkB,EAAEvB;MAAK;QAG/D2B,SAAS,EAAEC,KAAA,IAA+B;UAAA,IAA9B;YAAExC,KAAK,EAAEyC;UAAe,CAAC,GAAAD,KAAA;UACnC,MAAME,aAAa,GAAG;YACpB,GAAGvB,SAAS;YACZ,GAAGsB,cAAc;YACjB7B,KAAK,EAAEO,SAAS,EAAEP,KAAK;YACvB+B,cAAc,EAAE,CAAC,MAAMpC,aAAa,CAACC,IAAI,CAAC,EAAEiC,cAAc,CAACG,OAAO,CAAQ;YAC1EA,OAAO,EAAEtC,aAAa,CAACM,KAAK,GAAG,CAAC,MAAML,aAAa,CAACC,IAAI,CAAC,EAAEiC,cAAc,CAACG,OAAO,CAAC,GAAUvD;UAC9F,CAAC;UAED,OAAAoC,YAAA,CAAAzD,aAAA,EAAAsE,WAAA,CAESI,aAAa;YAAA,SACV1C,KAAK,CAACP,YAAY,GAAGe,IAAI,CAACK,GAAG,GAAGM,SAAS,CAACP,KAAK;YAAA,WAC7CQ;UAAO,IACPE,aAAa;QAG7B,CAAC;QACDrC,OAAO,EAAEA,CAAA,KAAAwC,YAAA,CAAA3B,iBAAA,EAAAwC,WAAA,CAEAD,qBAAqB;UAAA,SAClB3B,QAAQ;UAAA,gBACDV,KAAK,CAACP;QAAY,IACvBU,KAAK;MAElB,KAILA,KAAK,CAACK,IAAI,GAAG;QAAER,KAAK,EAAEmB,SAAS;QAAEX,IAAI,EAAEA,IAAI,CAACK,GAAG;QAAEmB,YAAY,EAAExB;MAAK,CAAC,CAAC,IAAAiB,YAAA,CAAAzD,aAAA,EAAAsE,WAAA,CAE7DnB,SAAS;QAAA,SACNnB,KAAK,CAACP,YAAY,GAAGpB,KAAK,CAACmC,IAAI,CAACK,GAAG,CAAC,GAAGM,SAAS,CAACP;MAAK,IACpDU,aAAa,CAEzB;IACN,CAAC,CAAC;EACJ;AACF,CAAC,CAAC","ignoreList":[]}
@@ -5,6 +5,9 @@
5
5
  .v-treeview {
6
6
  --indent-padding: 0px;
7
7
  }
8
+ .v-treeview.v-list--disabled .v-list-item__prepend {
9
+ pointer-events: auto;
10
+ }
8
11
 
9
12
  .v-treeview-group.v-list-group {
10
13
  --list-indent-size: 16px;
@@ -14,4 +17,7 @@
14
17
  }
15
18
  .v-treeview-group.v-list-group .v-list-group__items .v-list-item {
16
19
  padding-inline-start: calc(12px + var(--indent-padding)) !important;
20
+ }
21
+ .v-treeview-group.v-list-group .v-list-group__items .v-list-item.v-list-group__header {
22
+ padding-inline-start: calc(16px + var(--indent-padding)) !important;
17
23
  }
@@ -57,10 +57,10 @@ export const VTreeviewItem = genericComponent()({
57
57
  }), {
58
58
  ...slots,
59
59
  prepend: hasPrepend ? slotProps => {
60
- return _createVNode(_Fragment, null, [props.toggleIcon && _createVNode(VListItemAction, {
60
+ return _createVNode(_Fragment, null, [_createVNode(VListItemAction, {
61
61
  "start": false
62
62
  }, {
63
- default: () => [_createVNode(VBtn, {
63
+ default: () => [props.toggleIcon && _createVNode(VBtn, {
64
64
  "density": "compact",
65
65
  "icon": props.toggleIcon,
66
66
  "loading": props.loading,