vuetify 3.3.12 → 3.3.13

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 (168) hide show
  1. package/dist/json/attributes.json +45 -5
  2. package/dist/json/importMap.json +12 -12
  3. package/dist/json/tags.json +10 -0
  4. package/dist/json/web-types.json +158 -11
  5. package/dist/vuetify-labs.css +242 -205
  6. package/dist/vuetify-labs.d.ts +169 -35
  7. package/dist/vuetify-labs.esm.js +97 -58
  8. package/dist/vuetify-labs.esm.js.map +1 -1
  9. package/dist/vuetify-labs.js +97 -58
  10. package/dist/vuetify-labs.min.css +2 -2
  11. package/dist/vuetify.css +195 -158
  12. package/dist/vuetify.d.ts +172 -38
  13. package/dist/vuetify.esm.js +97 -58
  14. package/dist/vuetify.esm.js.map +1 -1
  15. package/dist/vuetify.js +97 -58
  16. package/dist/vuetify.js.map +1 -1
  17. package/dist/vuetify.min.css +2 -2
  18. package/dist/vuetify.min.js +149 -149
  19. package/dist/vuetify.min.js.map +1 -1
  20. package/lib/components/VAppBar/VAppBar.mjs.map +1 -1
  21. package/lib/components/VAppBar/index.d.mts +6 -6
  22. package/lib/components/VAutocomplete/VAutocomplete.mjs +6 -2
  23. package/lib/components/VAutocomplete/VAutocomplete.mjs.map +1 -1
  24. package/lib/components/VAutocomplete/index.d.mts +42 -0
  25. package/lib/components/VBottomNavigation/VBottomNavigation.css +1 -0
  26. package/lib/components/VBottomNavigation/VBottomNavigation.sass +1 -0
  27. package/lib/components/VBtn/VBtn.css +3 -0
  28. package/lib/components/VBtn/VBtn.sass +3 -0
  29. package/lib/components/VCheckbox/index.d.mts +3 -1
  30. package/lib/components/VCombobox/VCombobox.mjs +6 -2
  31. package/lib/components/VCombobox/VCombobox.mjs.map +1 -1
  32. package/lib/components/VCombobox/index.d.mts +42 -0
  33. package/lib/components/VField/VField.css +1 -0
  34. package/lib/components/VField/VField.mjs +5 -3
  35. package/lib/components/VField/VField.mjs.map +1 -1
  36. package/lib/components/VField/VField.sass +1 -0
  37. package/lib/components/VFileInput/VFileInput.css +4 -0
  38. package/lib/components/VFileInput/VFileInput.sass +5 -1
  39. package/lib/components/VFileInput/_variables.scss +2 -1
  40. package/lib/components/VList/VList.css +1 -1
  41. package/lib/components/VList/VList.sass +1 -1
  42. package/lib/components/VList/VListItem.css +15 -10
  43. package/lib/components/VList/VListItem.mjs +6 -3
  44. package/lib/components/VList/VListItem.mjs.map +1 -1
  45. package/lib/components/VList/VListItem.sass +17 -10
  46. package/lib/components/VMenu/VMenu.mjs +4 -3
  47. package/lib/components/VMenu/VMenu.mjs.map +1 -1
  48. package/lib/components/VMenu/index.d.mts +5 -5
  49. package/lib/components/VNavigationDrawer/VNavigationDrawer.css +0 -1
  50. package/lib/components/VNavigationDrawer/VNavigationDrawer.sass +0 -1
  51. package/lib/components/VNavigationDrawer/_variables.scss +0 -1
  52. package/lib/components/VRadio/index.d.mts +3 -1
  53. package/lib/components/VRadioGroup/VRadioGroup.css +6 -1
  54. package/lib/components/VRadioGroup/VRadioGroup.sass +5 -0
  55. package/lib/components/VRadioGroup/_variables.scss +3 -1
  56. package/lib/components/VRadioGroup/index.d.mts +3 -1
  57. package/lib/components/VSelect/VSelect.mjs +14 -2
  58. package/lib/components/VSelect/VSelect.mjs.map +1 -1
  59. package/lib/components/VSelect/index.d.mts +42 -0
  60. package/lib/components/VSelectionControl/VSelectionControl.mjs +22 -19
  61. package/lib/components/VSelectionControl/VSelectionControl.mjs.map +1 -1
  62. package/lib/components/VSelectionControl/index.d.mts +27 -25
  63. package/lib/components/VSwitch/VSwitch.css +24 -17
  64. package/lib/components/VSwitch/VSwitch.mjs +28 -19
  65. package/lib/components/VSwitch/VSwitch.mjs.map +1 -1
  66. package/lib/components/VSwitch/VSwitch.sass +20 -11
  67. package/lib/components/VSwitch/_variables.scss +18 -6
  68. package/lib/components/VSwitch/index.d.mts +3 -1
  69. package/lib/components/VTextField/VTextField.css +9 -2
  70. package/lib/components/VTextField/VTextField.mjs +6 -3
  71. package/lib/components/VTextField/VTextField.mjs.map +1 -1
  72. package/lib/components/VTextField/VTextField.sass +10 -3
  73. package/lib/components/VTextField/index.d.mts +6 -0
  74. package/lib/components/VTextarea/VTextarea.mjs +1 -2
  75. package/lib/components/VTextarea/VTextarea.mjs.map +1 -1
  76. package/lib/components/VTimeline/VTimeline.css +6 -1
  77. package/lib/components/VTimeline/VTimeline.sass +6 -1
  78. package/lib/components/index.d.mts +169 -35
  79. package/lib/entry-bundler.mjs +1 -1
  80. package/lib/framework.mjs +1 -1
  81. package/lib/index.d.mts +3 -3
  82. package/lib/labs/VDateInput/index.d.mts +6 -0
  83. package/lib/locale/af.mjs +1 -0
  84. package/lib/locale/af.mjs.map +1 -1
  85. package/lib/locale/ar.mjs +1 -0
  86. package/lib/locale/ar.mjs.map +1 -1
  87. package/lib/locale/az.mjs +1 -0
  88. package/lib/locale/az.mjs.map +1 -1
  89. package/lib/locale/bg.mjs +1 -0
  90. package/lib/locale/bg.mjs.map +1 -1
  91. package/lib/locale/ca.mjs +1 -0
  92. package/lib/locale/ca.mjs.map +1 -1
  93. package/lib/locale/ckb.mjs +1 -0
  94. package/lib/locale/ckb.mjs.map +1 -1
  95. package/lib/locale/cs.mjs +1 -0
  96. package/lib/locale/cs.mjs.map +1 -1
  97. package/lib/locale/da.mjs +1 -0
  98. package/lib/locale/da.mjs.map +1 -1
  99. package/lib/locale/de.mjs +1 -0
  100. package/lib/locale/de.mjs.map +1 -1
  101. package/lib/locale/el.mjs +1 -0
  102. package/lib/locale/el.mjs.map +1 -1
  103. package/lib/locale/en.mjs +1 -0
  104. package/lib/locale/en.mjs.map +1 -1
  105. package/lib/locale/es.mjs +1 -0
  106. package/lib/locale/es.mjs.map +1 -1
  107. package/lib/locale/et.mjs +1 -0
  108. package/lib/locale/et.mjs.map +1 -1
  109. package/lib/locale/fa.mjs +1 -0
  110. package/lib/locale/fa.mjs.map +1 -1
  111. package/lib/locale/fi.mjs +1 -0
  112. package/lib/locale/fi.mjs.map +1 -1
  113. package/lib/locale/fr.mjs +1 -0
  114. package/lib/locale/fr.mjs.map +1 -1
  115. package/lib/locale/he.mjs +1 -0
  116. package/lib/locale/he.mjs.map +1 -1
  117. package/lib/locale/hr.mjs +1 -0
  118. package/lib/locale/hr.mjs.map +1 -1
  119. package/lib/locale/hu.mjs +1 -0
  120. package/lib/locale/hu.mjs.map +1 -1
  121. package/lib/locale/id.mjs +1 -0
  122. package/lib/locale/id.mjs.map +1 -1
  123. package/lib/locale/index.d.mts +42 -0
  124. package/lib/locale/it.mjs +1 -0
  125. package/lib/locale/it.mjs.map +1 -1
  126. package/lib/locale/ja.mjs +1 -0
  127. package/lib/locale/ja.mjs.map +1 -1
  128. package/lib/locale/ko.mjs +1 -0
  129. package/lib/locale/ko.mjs.map +1 -1
  130. package/lib/locale/lt.mjs +1 -0
  131. package/lib/locale/lt.mjs.map +1 -1
  132. package/lib/locale/lv.mjs +1 -0
  133. package/lib/locale/lv.mjs.map +1 -1
  134. package/lib/locale/nl.mjs +1 -0
  135. package/lib/locale/nl.mjs.map +1 -1
  136. package/lib/locale/no.mjs +1 -0
  137. package/lib/locale/no.mjs.map +1 -1
  138. package/lib/locale/pl.mjs +1 -0
  139. package/lib/locale/pl.mjs.map +1 -1
  140. package/lib/locale/pt.mjs +1 -0
  141. package/lib/locale/pt.mjs.map +1 -1
  142. package/lib/locale/ro.mjs +1 -0
  143. package/lib/locale/ro.mjs.map +1 -1
  144. package/lib/locale/ru.mjs +1 -0
  145. package/lib/locale/ru.mjs.map +1 -1
  146. package/lib/locale/sk.mjs +1 -0
  147. package/lib/locale/sk.mjs.map +1 -1
  148. package/lib/locale/sl.mjs +1 -0
  149. package/lib/locale/sl.mjs.map +1 -1
  150. package/lib/locale/sr-Cyrl.mjs +1 -0
  151. package/lib/locale/sr-Cyrl.mjs.map +1 -1
  152. package/lib/locale/sr-Latn.mjs +1 -0
  153. package/lib/locale/sr-Latn.mjs.map +1 -1
  154. package/lib/locale/sv.mjs +1 -0
  155. package/lib/locale/sv.mjs.map +1 -1
  156. package/lib/locale/th.mjs +1 -0
  157. package/lib/locale/th.mjs.map +1 -1
  158. package/lib/locale/tr.mjs +1 -0
  159. package/lib/locale/tr.mjs.map +1 -1
  160. package/lib/locale/uk.mjs +1 -0
  161. package/lib/locale/uk.mjs.map +1 -1
  162. package/lib/locale/vi.mjs +1 -0
  163. package/lib/locale/vi.mjs.map +1 -1
  164. package/lib/locale/zh-Hans.mjs +1 -0
  165. package/lib/locale/zh-Hans.mjs.map +1 -1
  166. package/lib/locale/zh-Hant.mjs +1 -0
  167. package/lib/locale/zh-Hant.mjs.map +1 -1
  168. package/package.json +2 -2
@@ -178,7 +178,6 @@ export const VListItem = genericComponent()({
178
178
  "style": [colorStyles.value, dimensionStyles.value, props.style],
179
179
  "href": link.href.value,
180
180
  "tabindex": isClickable.value ? list ? -2 : 0 : undefined,
181
- "title": props.title,
182
181
  "onClick": onClick,
183
182
  "onKeydown": isClickable.value && !isLink.value && onKeyDown
184
183
  }, {
@@ -211,7 +210,9 @@ export const VListItem = genericComponent()({
211
210
  }
212
211
  }, {
213
212
  default: () => [slots.prepend?.(slotProps.value)]
214
- })]), _createVNode("div", {
213
+ }), _createVNode("div", {
214
+ "class": "v-list-item__spacer"
215
+ }, null)]), _createVNode("div", {
215
216
  "class": "v-list-item__content",
216
217
  "data-no-activator": ""
217
218
  }, [hasTitle && _createVNode(VListItemTitle, {
@@ -255,7 +256,9 @@ export const VListItem = genericComponent()({
255
256
  }
256
257
  }, {
257
258
  default: () => [slots.append?.(slotProps.value)]
258
- })])]
259
+ }), _createVNode("div", {
260
+ "class": "v-list-item__spacer"
261
+ }, null)])]
259
262
  }), [[_resolveDirective("ripple"), isClickable.value && props.ripple]]);
260
263
  });
261
264
  return {};
@@ -1 +1 @@
1
- {"version":3,"file":"VListItem.mjs","names":["VListItemSubtitle","VListItemTitle","VAvatar","VDefaultsProvider","VIcon","useList","makeBorderProps","useBorder","makeComponentProps","makeDensityProps","useDensity","makeDimensionProps","useDimension","makeElevationProps","useElevation","IconValue","useNestedItem","makeRoundedProps","useRounded","makeRouterProps","useLink","makeTagProps","makeThemeProps","provideTheme","genOverlays","makeVariantProps","useVariant","Ripple","computed","watch","deprecate","EventProp","genericComponent","propsFactory","useRender","makeVListItemProps","active","type","Boolean","default","undefined","activeClass","String","activeColor","appendAvatar","appendIcon","baseColor","disabled","lines","link","nav","prependAvatar","prependIcon","ripple","Object","subtitle","Number","title","value","onClick","onClickOnce","variant","VListItem","name","directives","props","emits","click","e","setup","_ref","attrs","slots","emit","id","href","select","isSelected","isIndeterminate","isGroupActivator","root","parent","openOnSelect","list","isActive","isLink","isClickable","roundedProps","rounded","color","variantProps","val","open","immediate","themeClasses","borderClasses","colorClasses","colorStyles","variantClasses","densityClasses","dimensionStyles","elevationClasses","roundedClasses","lineClasses","slotProps","navigate","onKeyDown","key","preventDefault","Tag","tag","hasTitle","hasSubtitle","hasAppendMedia","hasAppend","append","hasPrependMedia","hasPrepend","prepend","updateHasPrepend","_withDirectives","_createVNode","class","style","_Fragment","density","image","icon","VListItemAction","start","end","_resolveDirective"],"sources":["../../../src/components/VList/VListItem.tsx"],"sourcesContent":["// Styles\nimport './VListItem.sass'\n\n// Components\nimport { VListItemSubtitle } from './VListItemSubtitle'\nimport { VListItemTitle } from './VListItemTitle'\nimport { VAvatar } from '@/components/VAvatar'\nimport { VDefaultsProvider } from '@/components/VDefaultsProvider'\nimport { VIcon } from '@/components/VIcon'\n\n// Composables\nimport { useList } from './list'\nimport { makeBorderProps, useBorder } from '@/composables/border'\nimport { makeComponentProps } from '@/composables/component'\nimport { makeDensityProps, useDensity } from '@/composables/density'\nimport { makeDimensionProps, useDimension } from '@/composables/dimensions'\nimport { makeElevationProps, useElevation } from '@/composables/elevation'\nimport { IconValue } from '@/composables/icons'\nimport { useNestedItem } from '@/composables/nested/nested'\nimport { makeRoundedProps, useRounded } from '@/composables/rounded'\nimport { makeRouterProps, useLink } from '@/composables/router'\nimport { makeTagProps } from '@/composables/tag'\nimport { makeThemeProps, provideTheme } from '@/composables/theme'\nimport { genOverlays, makeVariantProps, useVariant } from '@/composables/variant'\n\n// Directives\nimport { Ripple } from '@/directives/ripple'\n\n// Utilities\nimport { computed, watch } from 'vue'\nimport { deprecate, EventProp, genericComponent, propsFactory, useRender } from '@/util'\n\n// Types\nimport type { PropType } from 'vue'\nimport type { RippleDirectiveBinding } from '@/directives/ripple'\n\ntype ListItemSlot = {\n isActive: boolean\n isSelected: boolean\n isIndeterminate: boolean\n select: (value: boolean) => void\n}\n\nexport type ListItemTitleSlot = {\n title?: string | number | boolean\n}\n\nexport type ListItemSubtitleSlot = {\n subtitle?: string | number | boolean\n}\n\nexport type VListItemSlots = {\n prepend: ListItemSlot\n append: ListItemSlot\n default: ListItemSlot\n title: ListItemTitleSlot\n subtitle: ListItemSubtitleSlot\n}\n\nexport const makeVListItemProps = propsFactory({\n active: {\n type: Boolean,\n default: undefined,\n },\n activeClass: String,\n /* @deprecated */\n activeColor: String,\n appendAvatar: String,\n appendIcon: IconValue,\n baseColor: String,\n disabled: Boolean,\n lines: String as PropType<'one' | 'two' | 'three'>,\n link: {\n type: Boolean,\n default: undefined,\n },\n nav: Boolean,\n prependAvatar: String,\n prependIcon: IconValue,\n ripple: {\n type: [Boolean, Object] as PropType<RippleDirectiveBinding['value']>,\n default: true,\n },\n subtitle: [String, Number, Boolean],\n title: [String, Number, Boolean],\n value: null,\n\n onClick: EventProp<[MouseEvent]>(),\n onClickOnce: EventProp<[MouseEvent]>(),\n\n ...makeBorderProps(),\n ...makeComponentProps(),\n ...makeDensityProps(),\n ...makeDimensionProps(),\n ...makeElevationProps(),\n ...makeRoundedProps(),\n ...makeRouterProps(),\n ...makeTagProps(),\n ...makeThemeProps(),\n ...makeVariantProps({ variant: 'text' } as const),\n}, 'VListItem')\n\nexport const VListItem = genericComponent<VListItemSlots>()({\n name: 'VListItem',\n\n directives: { Ripple },\n\n props: makeVListItemProps(),\n\n emits: {\n click: (e: MouseEvent | KeyboardEvent) => true,\n },\n\n setup (props, { attrs, slots, emit }) {\n const link = useLink(props, attrs)\n const id = computed(() => props.value === undefined ? link.href.value : props.value)\n const { select, isSelected, isIndeterminate, isGroupActivator, root, parent, openOnSelect } = useNestedItem(id, false)\n const list = useList()\n const isActive = computed(() =>\n props.active !== false &&\n (props.active || link.isActive?.value || isSelected.value)\n )\n const isLink = computed(() => props.link !== false && link.isLink.value)\n const isClickable = computed(() =>\n !props.disabled &&\n props.link !== false &&\n (props.link || link.isClickable.value || (props.value != null && !!list))\n )\n\n const roundedProps = computed(() => props.rounded || props.nav)\n const color = computed(() => props.color ?? props.activeColor)\n const variantProps = computed(() => ({\n color: isActive.value ? color.value ?? props.baseColor : props.baseColor,\n variant: props.variant,\n }))\n\n watch(() => link.isActive?.value, val => {\n if (val && parent.value != null) {\n root.open(parent.value, true)\n }\n\n if (val) {\n openOnSelect(val)\n }\n }, { immediate: true })\n\n const { themeClasses } = provideTheme(props)\n const { borderClasses } = useBorder(props)\n const { colorClasses, colorStyles, variantClasses } = useVariant(variantProps)\n const { densityClasses } = useDensity(props)\n const { dimensionStyles } = useDimension(props)\n const { elevationClasses } = useElevation(props)\n const { roundedClasses } = useRounded(roundedProps)\n const lineClasses = computed(() => props.lines ? `v-list-item--${props.lines}-line` : undefined)\n\n const slotProps = computed(() => ({\n isActive: isActive.value,\n select,\n isSelected: isSelected.value,\n isIndeterminate: isIndeterminate.value,\n } satisfies ListItemSlot))\n\n function onClick (e: MouseEvent) {\n emit('click', e)\n\n if (isGroupActivator || !isClickable.value) return\n\n link.navigate?.(e)\n props.value != null && select(!isSelected.value, e)\n }\n\n function onKeyDown (e: KeyboardEvent) {\n if (e.key === 'Enter' || e.key === ' ') {\n e.preventDefault()\n onClick(e as any as MouseEvent)\n }\n }\n\n useRender(() => {\n const Tag = isLink.value ? 'a' : props.tag\n const hasTitle = (slots.title || props.title)\n const hasSubtitle = (slots.subtitle || props.subtitle)\n const hasAppendMedia = !!(props.appendAvatar || props.appendIcon)\n const hasAppend = !!(hasAppendMedia || slots.append)\n const hasPrependMedia = !!(props.prependAvatar || props.prependIcon)\n const hasPrepend = !!(hasPrependMedia || slots.prepend)\n\n list?.updateHasPrepend(hasPrepend)\n\n if (props.activeColor) {\n deprecate('active-color', ['color', 'base-color'])\n }\n\n return (\n <Tag\n class={[\n 'v-list-item',\n {\n 'v-list-item--active': isActive.value,\n 'v-list-item--disabled': props.disabled,\n 'v-list-item--link': isClickable.value,\n 'v-list-item--nav': props.nav,\n 'v-list-item--prepend': !hasPrepend && list?.hasPrepend.value,\n [`${props.activeClass}`]: props.activeClass && isActive.value,\n },\n themeClasses.value,\n borderClasses.value,\n colorClasses.value,\n densityClasses.value,\n elevationClasses.value,\n lineClasses.value,\n roundedClasses.value,\n variantClasses.value,\n props.class,\n ]}\n style={[\n colorStyles.value,\n dimensionStyles.value,\n props.style,\n ]}\n href={ link.href.value }\n tabindex={ isClickable.value ? (list ? -2 : 0) : undefined }\n title={ props.title }\n onClick={ onClick }\n onKeydown={ isClickable.value && !isLink.value && onKeyDown }\n v-ripple={ isClickable.value && props.ripple }\n >\n { genOverlays(isClickable.value || isActive.value, 'v-list-item') }\n\n { hasPrepend && (\n <div key=\"prepend\" class=\"v-list-item__prepend\">\n { !slots.prepend ? (\n <>\n { props.prependAvatar && (\n <VAvatar\n key=\"prepend-avatar\"\n density={ props.density }\n image={ props.prependAvatar }\n />\n )}\n\n { props.prependIcon && (\n <VIcon\n key=\"prepend-icon\"\n density={ props.density }\n icon={ props.prependIcon }\n />\n )}\n </>\n ) : (\n <VDefaultsProvider\n key=\"prepend-defaults\"\n disabled={ !hasPrependMedia }\n defaults={{\n VAvatar: {\n density: props.density,\n image: props.prependAvatar,\n },\n VIcon: {\n density: props.density,\n icon: props.prependIcon,\n },\n VListItemAction: {\n start: true,\n },\n }}\n >\n { slots.prepend?.(slotProps.value) }\n </VDefaultsProvider>\n )}\n </div>\n )}\n\n <div class=\"v-list-item__content\" data-no-activator=\"\">\n { hasTitle && (\n <VListItemTitle key=\"title\">\n { slots.title?.({ title: props.title }) ?? props.title }\n </VListItemTitle>\n )}\n\n { hasSubtitle && (\n <VListItemSubtitle key=\"subtitle\">\n { slots.subtitle?.({ subtitle: props.subtitle }) ?? props.subtitle }\n </VListItemSubtitle>\n )}\n\n { slots.default?.(slotProps.value) }\n </div>\n\n { hasAppend && (\n <div key=\"append\" class=\"v-list-item__append\">\n { !slots.append ? (\n <>\n { props.appendIcon && (\n <VIcon\n key=\"append-icon\"\n density={ props.density }\n icon={ props.appendIcon }\n />\n )}\n\n { props.appendAvatar && (\n <VAvatar\n key=\"append-avatar\"\n density={ props.density }\n image={ props.appendAvatar }\n />\n )}\n </>\n ) : (\n <VDefaultsProvider\n key=\"append-defaults\"\n disabled={ !hasAppendMedia }\n defaults={{\n VAvatar: {\n density: props.density,\n image: props.appendAvatar,\n },\n VIcon: {\n density: props.density,\n icon: props.appendIcon,\n },\n VListItemAction: {\n end: true,\n },\n }}\n >\n { slots.append?.(slotProps.value) }\n </VDefaultsProvider>\n )}\n </div>\n )}\n </Tag>\n )\n })\n\n return {}\n },\n})\n\nexport type VListItem = InstanceType<typeof VListItem>\n"],"mappings":";AAAA;AACA;;AAEA;AAAA,SACSA,iBAAiB;AAAA,SACjBC,cAAc;AAAA,SACdC,OAAO;AAAA,SACPC,iBAAiB;AAAA,SACjBC,KAAK,8BAEd;AAAA,SACSC,OAAO;AAAA,SACPC,eAAe,EAAEC,SAAS;AAAA,SAC1BC,kBAAkB;AAAA,SAClBC,gBAAgB,EAAEC,UAAU;AAAA,SAC5BC,kBAAkB,EAAEC,YAAY;AAAA,SAChCC,kBAAkB,EAAEC,YAAY;AAAA,SAChCC,SAAS;AAAA,SACTC,aAAa;AAAA,SACbC,gBAAgB,EAAEC,UAAU;AAAA,SAC5BC,eAAe,EAAEC,OAAO;AAAA,SACxBC,YAAY;AAAA,SACZC,cAAc,EAAEC,YAAY;AAAA,SAC5BC,WAAW,EAAEC,gBAAgB,EAAEC,UAAU,yCAElD;AAAA,SACSC,MAAM,6CAEf;AACA,SAASC,QAAQ,EAAEC,KAAK,QAAQ,KAAK;AAAA,SAC5BC,SAAS,EAAEC,SAAS,EAAEC,gBAAgB,EAAEC,YAAY,EAAEC,SAAS,gCAExE;AA2BA,OAAO,MAAMC,kBAAkB,GAAGF,YAAY,CAAC;EAC7CG,MAAM,EAAE;IACNC,IAAI,EAAEC,OAAO;IACbC,OAAO,EAAEC;EACX,CAAC;EACDC,WAAW,EAAEC,MAAM;EACnB;EACAC,WAAW,EAAED,MAAM;EACnBE,YAAY,EAAEF,MAAM;EACpBG,UAAU,EAAE9B,SAAS;EACrB+B,SAAS,EAAEJ,MAAM;EACjBK,QAAQ,EAAET,OAAO;EACjBU,KAAK,EAAEN,MAA2C;EAClDO,IAAI,EAAE;IACJZ,IAAI,EAAEC,OAAO;IACbC,OAAO,EAAEC;EACX,CAAC;EACDU,GAAG,EAAEZ,OAAO;EACZa,aAAa,EAAET,MAAM;EACrBU,WAAW,EAAErC,SAAS;EACtBsC,MAAM,EAAE;IACNhB,IAAI,EAAE,CAACC,OAAO,EAAEgB,MAAM,CAA8C;IACpEf,OAAO,EAAE;EACX,CAAC;EACDgB,QAAQ,EAAE,CAACb,MAAM,EAAEc,MAAM,EAAElB,OAAO,CAAC;EACnCmB,KAAK,EAAE,CAACf,MAAM,EAAEc,MAAM,EAAElB,OAAO,CAAC;EAChCoB,KAAK,EAAE,IAAI;EAEXC,OAAO,EAAE5B,SAAS,EAAgB;EAClC6B,WAAW,EAAE7B,SAAS,EAAgB;EAEtC,GAAGzB,eAAe,EAAE;EACpB,GAAGE,kBAAkB,EAAE;EACvB,GAAGC,gBAAgB,EAAE;EACrB,GAAGE,kBAAkB,EAAE;EACvB,GAAGE,kBAAkB,EAAE;EACvB,GAAGI,gBAAgB,EAAE;EACrB,GAAGE,eAAe,EAAE;EACpB,GAAGE,YAAY,EAAE;EACjB,GAAGC,cAAc,EAAE;EACnB,GAAGG,gBAAgB,CAAC;IAAEoC,OAAO,EAAE;EAAO,CAAC;AACzC,CAAC,EAAE,WAAW,CAAC;AAEf,OAAO,MAAMC,SAAS,GAAG9B,gBAAgB,EAAkB,CAAC;EAC1D+B,IAAI,EAAE,WAAW;EAEjBC,UAAU,EAAE;IAAErC;EAAO,CAAC;EAEtBsC,KAAK,EAAE9B,kBAAkB,EAAE;EAE3B+B,KAAK,EAAE;IACLC,KAAK,EAAGC,CAA6B,IAAK;EAC5C,CAAC;EAEDC,KAAKA,CAAEJ,KAAK,EAAAK,IAAA,EAA0B;IAAA,IAAxB;MAAEC,KAAK;MAAEC,KAAK;MAAEC;IAAK,CAAC,GAAAH,IAAA;IAClC,MAAMrB,IAAI,GAAG7B,OAAO,CAAC6C,KAAK,EAAEM,KAAK,CAAC;IAClC,MAAMG,EAAE,GAAG9C,QAAQ,CAAC,MAAMqC,KAAK,CAACP,KAAK,KAAKlB,SAAS,GAAGS,IAAI,CAAC0B,IAAI,CAACjB,KAAK,GAAGO,KAAK,CAACP,KAAK,CAAC;IACpF,MAAM;MAAEkB,MAAM;MAAEC,UAAU;MAAEC,eAAe;MAAEC,gBAAgB;MAAEC,IAAI;MAAEC,MAAM;MAAEC;IAAa,CAAC,GAAGlE,aAAa,CAAC0D,EAAE,EAAE,KAAK,CAAC;IACtH,MAAMS,IAAI,GAAG9E,OAAO,EAAE;IACtB,MAAM+E,QAAQ,GAAGxD,QAAQ,CAAC,MACxBqC,KAAK,CAAC7B,MAAM,KAAK,KAAK,KACrB6B,KAAK,CAAC7B,MAAM,IAAIa,IAAI,CAACmC,QAAQ,EAAE1B,KAAK,IAAImB,UAAU,CAACnB,KAAK,CAAC,CAC3D;IACD,MAAM2B,MAAM,GAAGzD,QAAQ,CAAC,MAAMqC,KAAK,CAAChB,IAAI,KAAK,KAAK,IAAIA,IAAI,CAACoC,MAAM,CAAC3B,KAAK,CAAC;IACxE,MAAM4B,WAAW,GAAG1D,QAAQ,CAAC,MAC3B,CAACqC,KAAK,CAAClB,QAAQ,IACfkB,KAAK,CAAChB,IAAI,KAAK,KAAK,KACnBgB,KAAK,CAAChB,IAAI,IAAIA,IAAI,CAACqC,WAAW,CAAC5B,KAAK,IAAKO,KAAK,CAACP,KAAK,IAAI,IAAI,IAAI,CAAC,CAACyB,IAAK,CAAC,CAC1E;IAED,MAAMI,YAAY,GAAG3D,QAAQ,CAAC,MAAMqC,KAAK,CAACuB,OAAO,IAAIvB,KAAK,CAACf,GAAG,CAAC;IAC/D,MAAMuC,KAAK,GAAG7D,QAAQ,CAAC,MAAMqC,KAAK,CAACwB,KAAK,IAAIxB,KAAK,CAACtB,WAAW,CAAC;IAC9D,MAAM+C,YAAY,GAAG9D,QAAQ,CAAC,OAAO;MACnC6D,KAAK,EAAEL,QAAQ,CAAC1B,KAAK,GAAG+B,KAAK,CAAC/B,KAAK,IAAIO,KAAK,CAACnB,SAAS,GAAGmB,KAAK,CAACnB,SAAS;MACxEe,OAAO,EAAEI,KAAK,CAACJ;IACjB,CAAC,CAAC,CAAC;IAEHhC,KAAK,CAAC,MAAMoB,IAAI,CAACmC,QAAQ,EAAE1B,KAAK,EAAEiC,GAAG,IAAI;MACvC,IAAIA,GAAG,IAAIV,MAAM,CAACvB,KAAK,IAAI,IAAI,EAAE;QAC/BsB,IAAI,CAACY,IAAI,CAACX,MAAM,CAACvB,KAAK,EAAE,IAAI,CAAC;MAC/B;MAEA,IAAIiC,GAAG,EAAE;QACPT,YAAY,CAACS,GAAG,CAAC;MACnB;IACF,CAAC,EAAE;MAAEE,SAAS,EAAE;IAAK,CAAC,CAAC;IAEvB,MAAM;MAAEC;IAAa,CAAC,GAAGvE,YAAY,CAAC0C,KAAK,CAAC;IAC5C,MAAM;MAAE8B;IAAc,CAAC,GAAGxF,SAAS,CAAC0D,KAAK,CAAC;IAC1C,MAAM;MAAE+B,YAAY;MAAEC,WAAW;MAAEC;IAAe,CAAC,GAAGxE,UAAU,CAACgE,YAAY,CAAC;IAC9E,MAAM;MAAES;IAAe,CAAC,GAAGzF,UAAU,CAACuD,KAAK,CAAC;IAC5C,MAAM;MAAEmC;IAAgB,CAAC,GAAGxF,YAAY,CAACqD,KAAK,CAAC;IAC/C,MAAM;MAAEoC;IAAiB,CAAC,GAAGvF,YAAY,CAACmD,KAAK,CAAC;IAChD,MAAM;MAAEqC;IAAe,CAAC,GAAGpF,UAAU,CAACqE,YAAY,CAAC;IACnD,MAAMgB,WAAW,GAAG3E,QAAQ,CAAC,MAAMqC,KAAK,CAACjB,KAAK,GAAI,gBAAeiB,KAAK,CAACjB,KAAM,OAAM,GAAGR,SAAS,CAAC;IAEhG,MAAMgE,SAAS,GAAG5E,QAAQ,CAAC,OAAO;MAChCwD,QAAQ,EAAEA,QAAQ,CAAC1B,KAAK;MACxBkB,MAAM;MACNC,UAAU,EAAEA,UAAU,CAACnB,KAAK;MAC5BoB,eAAe,EAAEA,eAAe,CAACpB;IACnC,CAAC,CAAwB,CAAC;IAE1B,SAASC,OAAOA,CAAES,CAAa,EAAE;MAC/BK,IAAI,CAAC,OAAO,EAAEL,CAAC,CAAC;MAEhB,IAAIW,gBAAgB,IAAI,CAACO,WAAW,CAAC5B,KAAK,EAAE;MAE5CT,IAAI,CAACwD,QAAQ,GAAGrC,CAAC,CAAC;MAClBH,KAAK,CAACP,KAAK,IAAI,IAAI,IAAIkB,MAAM,CAAC,CAACC,UAAU,CAACnB,KAAK,EAAEU,CAAC,CAAC;IACrD;IAEA,SAASsC,SAASA,CAAEtC,CAAgB,EAAE;MACpC,IAAIA,CAAC,CAACuC,GAAG,KAAK,OAAO,IAAIvC,CAAC,CAACuC,GAAG,KAAK,GAAG,EAAE;QACtCvC,CAAC,CAACwC,cAAc,EAAE;QAClBjD,OAAO,CAACS,CAAC,CAAsB;MACjC;IACF;IAEAlC,SAAS,CAAC,MAAM;MACd,MAAM2E,GAAG,GAAGxB,MAAM,CAAC3B,KAAK,GAAG,GAAG,GAAGO,KAAK,CAAC6C,GAAG;MAC1C,MAAMC,QAAQ,GAAIvC,KAAK,CAACf,KAAK,IAAIQ,KAAK,CAACR,KAAM;MAC7C,MAAMuD,WAAW,GAAIxC,KAAK,CAACjB,QAAQ,IAAIU,KAAK,CAACV,QAAS;MACtD,MAAM0D,cAAc,GAAG,CAAC,EAAEhD,KAAK,CAACrB,YAAY,IAAIqB,KAAK,CAACpB,UAAU,CAAC;MACjE,MAAMqE,SAAS,GAAG,CAAC,EAAED,cAAc,IAAIzC,KAAK,CAAC2C,MAAM,CAAC;MACpD,MAAMC,eAAe,GAAG,CAAC,EAAEnD,KAAK,CAACd,aAAa,IAAIc,KAAK,CAACb,WAAW,CAAC;MACpE,MAAMiE,UAAU,GAAG,CAAC,EAAED,eAAe,IAAI5C,KAAK,CAAC8C,OAAO,CAAC;MAEvDnC,IAAI,EAAEoC,gBAAgB,CAACF,UAAU,CAAC;MAElC,IAAIpD,KAAK,CAACtB,WAAW,EAAE;QACrBb,SAAS,CAAC,cAAc,EAAE,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;MACpD;MAEA,OAAA0F,eAAA,CAAAC,YAAA,CAAAZ,GAAA;QAAA,SAEW,CACL,aAAa,EACb;UACE,qBAAqB,EAAEzB,QAAQ,CAAC1B,KAAK;UACrC,uBAAuB,EAAEO,KAAK,CAAClB,QAAQ;UACvC,mBAAmB,EAAEuC,WAAW,CAAC5B,KAAK;UACtC,kBAAkB,EAAEO,KAAK,CAACf,GAAG;UAC7B,sBAAsB,EAAE,CAACmE,UAAU,IAAIlC,IAAI,EAAEkC,UAAU,CAAC3D,KAAK;UAC7D,CAAE,GAAEO,KAAK,CAACxB,WAAY,EAAC,GAAGwB,KAAK,CAACxB,WAAW,IAAI2C,QAAQ,CAAC1B;QAC1D,CAAC,EACDoC,YAAY,CAACpC,KAAK,EAClBqC,aAAa,CAACrC,KAAK,EACnBsC,YAAY,CAACtC,KAAK,EAClByC,cAAc,CAACzC,KAAK,EACpB2C,gBAAgB,CAAC3C,KAAK,EACtB6C,WAAW,CAAC7C,KAAK,EACjB4C,cAAc,CAAC5C,KAAK,EACpBwC,cAAc,CAACxC,KAAK,EACpBO,KAAK,CAACyD,KAAK,CACZ;QAAA,SACM,CACLzB,WAAW,CAACvC,KAAK,EACjB0C,eAAe,CAAC1C,KAAK,EACrBO,KAAK,CAAC0D,KAAK,CACZ;QAAA,QACM1E,IAAI,CAAC0B,IAAI,CAACjB,KAAK;QAAA,YACX4B,WAAW,CAAC5B,KAAK,GAAIyB,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,GAAI3C,SAAS;QAAA,SAClDyB,KAAK,CAACR,KAAK;QAAA,WACTE,OAAO;QAAA,aACL2B,WAAW,CAAC5B,KAAK,IAAI,CAAC2B,MAAM,CAAC3B,KAAK,IAAIgD;MAAS;QAAAnE,OAAA,EAAAA,CAAA,MAGzDf,WAAW,CAAC8D,WAAW,CAAC5B,KAAK,IAAI0B,QAAQ,CAAC1B,KAAK,EAAE,aAAa,CAAC,EAE/D2D,UAAU,IAAAI,YAAA;UAAA,OACD,SAAS;UAAA,SAAO;QAAsB,IAC3C,CAACjD,KAAK,CAAC8C,OAAO,GAAAG,YAAA,CAAAG,SAAA,SAEV3D,KAAK,CAACd,aAAa,IAAAsE,YAAA,CAAAvH,OAAA;UAAA,OAEb,gBAAgB;UAAA,WACV+D,KAAK,CAAC4D,OAAO;UAAA,SACf5D,KAAK,CAACd;QAAa,QAE9B,EAECc,KAAK,CAACb,WAAW,IAAAqE,YAAA,CAAArH,KAAA;UAAA,OAEX,cAAc;UAAA,WACR6D,KAAK,CAAC4D,OAAO;UAAA,QAChB5D,KAAK,CAACb;QAAW,QAE3B,KAAAqE,YAAA,CAAAtH,iBAAA;UAAA,OAIG,kBAAkB;UAAA,YACX,CAACiH,eAAe;UAAA,YACjB;YACRlH,OAAO,EAAE;cACP2H,OAAO,EAAE5D,KAAK,CAAC4D,OAAO;cACtBC,KAAK,EAAE7D,KAAK,CAACd;YACf,CAAC;YACD/C,KAAK,EAAE;cACLyH,OAAO,EAAE5D,KAAK,CAAC4D,OAAO;cACtBE,IAAI,EAAE9D,KAAK,CAACb;YACd,CAAC;YACD4E,eAAe,EAAE;cACfC,KAAK,EAAE;YACT;UACF;QAAC;UAAA1F,OAAA,EAAAA,CAAA,MAECiC,KAAK,CAAC8C,OAAO,GAAGd,SAAS,CAAC9C,KAAK,CAAC;QAAA,EAErC,EAEJ,EAAA+D,YAAA;UAAA,SAEU,sBAAsB;UAAA,qBAAmB;QAAE,IAClDV,QAAQ,IAAAU,YAAA,CAAAxH,cAAA;UAAA,OACY;QAAO;UAAAsC,OAAA,EAAAA,CAAA,MACvBiC,KAAK,CAACf,KAAK,GAAG;YAAEA,KAAK,EAAEQ,KAAK,CAACR;UAAM,CAAC,CAAC,IAAIQ,KAAK,CAACR,KAAK;QAAA,EAEzD,EAECuD,WAAW,IAAAS,YAAA,CAAAzH,iBAAA;UAAA,OACY;QAAU;UAAAuC,OAAA,EAAAA,CAAA,MAC7BiC,KAAK,CAACjB,QAAQ,GAAG;YAAEA,QAAQ,EAAEU,KAAK,CAACV;UAAS,CAAC,CAAC,IAAIU,KAAK,CAACV,QAAQ;QAAA,EAErE,EAECiB,KAAK,CAACjC,OAAO,GAAGiE,SAAS,CAAC9C,KAAK,CAAC,IAGlCwD,SAAS,IAAAO,YAAA;UAAA,OACA,QAAQ;UAAA,SAAO;QAAqB,IACzC,CAACjD,KAAK,CAAC2C,MAAM,GAAAM,YAAA,CAAAG,SAAA,SAET3D,KAAK,CAACpB,UAAU,IAAA4E,YAAA,CAAArH,KAAA;UAAA,OAEV,aAAa;UAAA,WACP6D,KAAK,CAAC4D,OAAO;UAAA,QAChB5D,KAAK,CAACpB;QAAU,QAE1B,EAECoB,KAAK,CAACrB,YAAY,IAAA6E,YAAA,CAAAvH,OAAA;UAAA,OAEZ,eAAe;UAAA,WACT+D,KAAK,CAAC4D,OAAO;UAAA,SACf5D,KAAK,CAACrB;QAAY,QAE7B,KAAA6E,YAAA,CAAAtH,iBAAA;UAAA,OAIG,iBAAiB;UAAA,YACV,CAAC8G,cAAc;UAAA,YAChB;YACR/G,OAAO,EAAE;cACP2H,OAAO,EAAE5D,KAAK,CAAC4D,OAAO;cACtBC,KAAK,EAAE7D,KAAK,CAACrB;YACf,CAAC;YACDxC,KAAK,EAAE;cACLyH,OAAO,EAAE5D,KAAK,CAAC4D,OAAO;cACtBE,IAAI,EAAE9D,KAAK,CAACpB;YACd,CAAC;YACDmF,eAAe,EAAE;cACfE,GAAG,EAAE;YACP;UACF;QAAC;UAAA3F,OAAA,EAAAA,CAAA,MAECiC,KAAK,CAAC2C,MAAM,GAAGX,SAAS,CAAC9C,KAAK,CAAC;QAAA,EAEpC,EAEJ;MAAA,MAAAyE,iBAAA,YA1GU7C,WAAW,CAAC5B,KAAK,IAAIO,KAAK,CAACZ,MAAM;IA6GlD,CAAC,CAAC;IAEF,OAAO,CAAC,CAAC;EACX;AACF,CAAC,CAAC"}
1
+ {"version":3,"file":"VListItem.mjs","names":["VListItemSubtitle","VListItemTitle","VAvatar","VDefaultsProvider","VIcon","useList","makeBorderProps","useBorder","makeComponentProps","makeDensityProps","useDensity","makeDimensionProps","useDimension","makeElevationProps","useElevation","IconValue","useNestedItem","makeRoundedProps","useRounded","makeRouterProps","useLink","makeTagProps","makeThemeProps","provideTheme","genOverlays","makeVariantProps","useVariant","Ripple","computed","watch","deprecate","EventProp","genericComponent","propsFactory","useRender","makeVListItemProps","active","type","Boolean","default","undefined","activeClass","String","activeColor","appendAvatar","appendIcon","baseColor","disabled","lines","link","nav","prependAvatar","prependIcon","ripple","Object","subtitle","Number","title","value","onClick","onClickOnce","variant","VListItem","name","directives","props","emits","click","e","setup","_ref","attrs","slots","emit","id","href","select","isSelected","isIndeterminate","isGroupActivator","root","parent","openOnSelect","list","isActive","isLink","isClickable","roundedProps","rounded","color","variantProps","val","open","immediate","themeClasses","borderClasses","colorClasses","colorStyles","variantClasses","densityClasses","dimensionStyles","elevationClasses","roundedClasses","lineClasses","slotProps","navigate","onKeyDown","key","preventDefault","Tag","tag","hasTitle","hasSubtitle","hasAppendMedia","hasAppend","append","hasPrependMedia","hasPrepend","prepend","updateHasPrepend","_withDirectives","_createVNode","class","style","_Fragment","density","image","icon","VListItemAction","start","end","_resolveDirective"],"sources":["../../../src/components/VList/VListItem.tsx"],"sourcesContent":["// Styles\nimport './VListItem.sass'\n\n// Components\nimport { VListItemSubtitle } from './VListItemSubtitle'\nimport { VListItemTitle } from './VListItemTitle'\nimport { VAvatar } from '@/components/VAvatar'\nimport { VDefaultsProvider } from '@/components/VDefaultsProvider'\nimport { VIcon } from '@/components/VIcon'\n\n// Composables\nimport { useList } from './list'\nimport { makeBorderProps, useBorder } from '@/composables/border'\nimport { makeComponentProps } from '@/composables/component'\nimport { makeDensityProps, useDensity } from '@/composables/density'\nimport { makeDimensionProps, useDimension } from '@/composables/dimensions'\nimport { makeElevationProps, useElevation } from '@/composables/elevation'\nimport { IconValue } from '@/composables/icons'\nimport { useNestedItem } from '@/composables/nested/nested'\nimport { makeRoundedProps, useRounded } from '@/composables/rounded'\nimport { makeRouterProps, useLink } from '@/composables/router'\nimport { makeTagProps } from '@/composables/tag'\nimport { makeThemeProps, provideTheme } from '@/composables/theme'\nimport { genOverlays, makeVariantProps, useVariant } from '@/composables/variant'\n\n// Directives\nimport { Ripple } from '@/directives/ripple'\n\n// Utilities\nimport { computed, watch } from 'vue'\nimport { deprecate, EventProp, genericComponent, propsFactory, useRender } from '@/util'\n\n// Types\nimport type { PropType } from 'vue'\nimport type { RippleDirectiveBinding } from '@/directives/ripple'\n\ntype ListItemSlot = {\n isActive: boolean\n isSelected: boolean\n isIndeterminate: boolean\n select: (value: boolean) => void\n}\n\nexport type ListItemTitleSlot = {\n title?: string | number | boolean\n}\n\nexport type ListItemSubtitleSlot = {\n subtitle?: string | number | boolean\n}\n\nexport type VListItemSlots = {\n prepend: ListItemSlot\n append: ListItemSlot\n default: ListItemSlot\n title: ListItemTitleSlot\n subtitle: ListItemSubtitleSlot\n}\n\nexport const makeVListItemProps = propsFactory({\n active: {\n type: Boolean,\n default: undefined,\n },\n activeClass: String,\n /* @deprecated */\n activeColor: String,\n appendAvatar: String,\n appendIcon: IconValue,\n baseColor: String,\n disabled: Boolean,\n lines: String as PropType<'one' | 'two' | 'three'>,\n link: {\n type: Boolean,\n default: undefined,\n },\n nav: Boolean,\n prependAvatar: String,\n prependIcon: IconValue,\n ripple: {\n type: [Boolean, Object] as PropType<RippleDirectiveBinding['value']>,\n default: true,\n },\n subtitle: [String, Number, Boolean],\n title: [String, Number, Boolean],\n value: null,\n\n onClick: EventProp<[MouseEvent]>(),\n onClickOnce: EventProp<[MouseEvent]>(),\n\n ...makeBorderProps(),\n ...makeComponentProps(),\n ...makeDensityProps(),\n ...makeDimensionProps(),\n ...makeElevationProps(),\n ...makeRoundedProps(),\n ...makeRouterProps(),\n ...makeTagProps(),\n ...makeThemeProps(),\n ...makeVariantProps({ variant: 'text' } as const),\n}, 'VListItem')\n\nexport const VListItem = genericComponent<VListItemSlots>()({\n name: 'VListItem',\n\n directives: { Ripple },\n\n props: makeVListItemProps(),\n\n emits: {\n click: (e: MouseEvent | KeyboardEvent) => true,\n },\n\n setup (props, { attrs, slots, emit }) {\n const link = useLink(props, attrs)\n const id = computed(() => props.value === undefined ? link.href.value : props.value)\n const { select, isSelected, isIndeterminate, isGroupActivator, root, parent, openOnSelect } = useNestedItem(id, false)\n const list = useList()\n const isActive = computed(() =>\n props.active !== false &&\n (props.active || link.isActive?.value || isSelected.value)\n )\n const isLink = computed(() => props.link !== false && link.isLink.value)\n const isClickable = computed(() =>\n !props.disabled &&\n props.link !== false &&\n (props.link || link.isClickable.value || (props.value != null && !!list))\n )\n\n const roundedProps = computed(() => props.rounded || props.nav)\n const color = computed(() => props.color ?? props.activeColor)\n const variantProps = computed(() => ({\n color: isActive.value ? color.value ?? props.baseColor : props.baseColor,\n variant: props.variant,\n }))\n\n watch(() => link.isActive?.value, val => {\n if (val && parent.value != null) {\n root.open(parent.value, true)\n }\n\n if (val) {\n openOnSelect(val)\n }\n }, { immediate: true })\n\n const { themeClasses } = provideTheme(props)\n const { borderClasses } = useBorder(props)\n const { colorClasses, colorStyles, variantClasses } = useVariant(variantProps)\n const { densityClasses } = useDensity(props)\n const { dimensionStyles } = useDimension(props)\n const { elevationClasses } = useElevation(props)\n const { roundedClasses } = useRounded(roundedProps)\n const lineClasses = computed(() => props.lines ? `v-list-item--${props.lines}-line` : undefined)\n\n const slotProps = computed(() => ({\n isActive: isActive.value,\n select,\n isSelected: isSelected.value,\n isIndeterminate: isIndeterminate.value,\n } satisfies ListItemSlot))\n\n function onClick (e: MouseEvent) {\n emit('click', e)\n\n if (isGroupActivator || !isClickable.value) return\n\n link.navigate?.(e)\n props.value != null && select(!isSelected.value, e)\n }\n\n function onKeyDown (e: KeyboardEvent) {\n if (e.key === 'Enter' || e.key === ' ') {\n e.preventDefault()\n onClick(e as any as MouseEvent)\n }\n }\n\n useRender(() => {\n const Tag = isLink.value ? 'a' : props.tag\n const hasTitle = (slots.title || props.title)\n const hasSubtitle = (slots.subtitle || props.subtitle)\n const hasAppendMedia = !!(props.appendAvatar || props.appendIcon)\n const hasAppend = !!(hasAppendMedia || slots.append)\n const hasPrependMedia = !!(props.prependAvatar || props.prependIcon)\n const hasPrepend = !!(hasPrependMedia || slots.prepend)\n\n list?.updateHasPrepend(hasPrepend)\n\n if (props.activeColor) {\n deprecate('active-color', ['color', 'base-color'])\n }\n\n return (\n <Tag\n class={[\n 'v-list-item',\n {\n 'v-list-item--active': isActive.value,\n 'v-list-item--disabled': props.disabled,\n 'v-list-item--link': isClickable.value,\n 'v-list-item--nav': props.nav,\n 'v-list-item--prepend': !hasPrepend && list?.hasPrepend.value,\n [`${props.activeClass}`]: props.activeClass && isActive.value,\n },\n themeClasses.value,\n borderClasses.value,\n colorClasses.value,\n densityClasses.value,\n elevationClasses.value,\n lineClasses.value,\n roundedClasses.value,\n variantClasses.value,\n props.class,\n ]}\n style={[\n colorStyles.value,\n dimensionStyles.value,\n props.style,\n ]}\n href={ link.href.value }\n tabindex={ isClickable.value ? (list ? -2 : 0) : undefined }\n onClick={ onClick }\n onKeydown={ isClickable.value && !isLink.value && onKeyDown }\n v-ripple={ isClickable.value && props.ripple }\n >\n { genOverlays(isClickable.value || isActive.value, 'v-list-item') }\n\n { hasPrepend && (\n <div key=\"prepend\" class=\"v-list-item__prepend\">\n { !slots.prepend ? (\n <>\n { props.prependAvatar && (\n <VAvatar\n key=\"prepend-avatar\"\n density={ props.density }\n image={ props.prependAvatar }\n />\n )}\n\n { props.prependIcon && (\n <VIcon\n key=\"prepend-icon\"\n density={ props.density }\n icon={ props.prependIcon }\n />\n )}\n </>\n ) : (\n <VDefaultsProvider\n key=\"prepend-defaults\"\n disabled={ !hasPrependMedia }\n defaults={{\n VAvatar: {\n density: props.density,\n image: props.prependAvatar,\n },\n VIcon: {\n density: props.density,\n icon: props.prependIcon,\n },\n VListItemAction: {\n start: true,\n },\n }}\n >\n { slots.prepend?.(slotProps.value) }\n </VDefaultsProvider>\n )}\n\n <div class=\"v-list-item__spacer\" />\n </div>\n )}\n\n <div class=\"v-list-item__content\" data-no-activator=\"\">\n { hasTitle && (\n <VListItemTitle key=\"title\">\n { slots.title?.({ title: props.title }) ?? props.title }\n </VListItemTitle>\n )}\n\n { hasSubtitle && (\n <VListItemSubtitle key=\"subtitle\">\n { slots.subtitle?.({ subtitle: props.subtitle }) ?? props.subtitle }\n </VListItemSubtitle>\n )}\n\n { slots.default?.(slotProps.value) }\n </div>\n\n { hasAppend && (\n <div key=\"append\" class=\"v-list-item__append\">\n { !slots.append ? (\n <>\n { props.appendIcon && (\n <VIcon\n key=\"append-icon\"\n density={ props.density }\n icon={ props.appendIcon }\n />\n )}\n\n { props.appendAvatar && (\n <VAvatar\n key=\"append-avatar\"\n density={ props.density }\n image={ props.appendAvatar }\n />\n )}\n </>\n ) : (\n <VDefaultsProvider\n key=\"append-defaults\"\n disabled={ !hasAppendMedia }\n defaults={{\n VAvatar: {\n density: props.density,\n image: props.appendAvatar,\n },\n VIcon: {\n density: props.density,\n icon: props.appendIcon,\n },\n VListItemAction: {\n end: true,\n },\n }}\n >\n { slots.append?.(slotProps.value) }\n </VDefaultsProvider>\n )}\n\n <div class=\"v-list-item__spacer\" />\n </div>\n )}\n </Tag>\n )\n })\n\n return {}\n },\n})\n\nexport type VListItem = InstanceType<typeof VListItem>\n"],"mappings":"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"}
@@ -64,12 +64,14 @@
64
64
  display: flex
65
65
  grid-area: prepend
66
66
 
67
- > .v-avatar
68
- margin-inline-end: $list-item-avatar-margin-end
67
+ > .v-badge,
68
+ > .v-icon,
69
+ > .v-tooltip
70
+ ~ .v-list-item__spacer
71
+ width: $list-item-icon-margin-start
69
72
 
70
- > .v-badge .v-icon,
71
- > .v-icon
72
- margin-inline-end: $list-item-icon-margin-end
73
+ > .v-avatar ~ .v-list-item__spacer
74
+ width: $list-item-avatar-margin-start
73
75
 
74
76
  .v-list-item--three-line &
75
77
  align-self: start
@@ -80,12 +82,17 @@
80
82
  align-items: center
81
83
  grid-area: append
82
84
 
83
- > .v-avatar
84
- margin-inline-start: $list-item-avatar-margin-start
85
+ .v-list-item__spacer
86
+ order: -1
85
87
 
86
- > .v-badge .v-icon,
87
- > .v-icon
88
- margin-inline-start: $list-item-icon-margin-start
88
+ > .v-badge,
89
+ > .v-icon,
90
+ > .v-tooltip
91
+ ~ .v-list-item__spacer
92
+ width: $list-item-icon-margin-end
93
+
94
+ > .v-avatar ~ .v-list-item__spacer
95
+ width: $list-item-avatar-margin-end
89
96
 
90
97
  .v-list-item--three-line &
91
98
  align-self: start
@@ -10,7 +10,7 @@ import { makeVOverlayProps } from "../VOverlay/VOverlay.mjs"; // Composables
10
10
  import { forwardRefs } from "../../composables/forwardRefs.mjs";
11
11
  import { useProxiedModel } from "../../composables/proxiedModel.mjs";
12
12
  import { useScopeId } from "../../composables/scopeId.mjs"; // Utilities
13
- import { computed, inject, mergeProps, provide, ref, shallowRef, watch } from 'vue';
13
+ import { computed, inject, mergeProps, nextTick, provide, ref, shallowRef, watch } from 'vue';
14
14
  import { VMenuSymbol } from "./shared.mjs";
15
15
  import { focusableChildren, focusChild, genericComponent, getNextElement, getUid, omit, propsFactory, useRender } from "../../util/index.mjs"; // Types
16
16
  export const makeVMenuProps = propsFactory({
@@ -64,10 +64,11 @@ export const VMenu = genericComponent()({
64
64
  }, 40);
65
65
  }
66
66
  });
67
- function onFocusIn(e) {
67
+ async function onFocusIn(e) {
68
68
  const before = e.relatedTarget;
69
69
  const after = e.target;
70
- if (before !== after && overlay.value?.contentEl &&
70
+ await nextTick();
71
+ if (isActive.value && before !== after && overlay.value?.contentEl &&
71
72
  // We're the topmost menu
72
73
  overlay.value?.globalTop &&
73
74
  // It isn't the document or the menu body
@@ -1 +1 @@
1
- {"version":3,"file":"VMenu.mjs","names":["VDialogTransition","VDefaultsProvider","VOverlay","makeVOverlayProps","forwardRefs","useProxiedModel","useScopeId","computed","inject","mergeProps","provide","ref","shallowRef","watch","VMenuSymbol","focusableChildren","focusChild","genericComponent","getNextElement","getUid","omit","propsFactory","useRender","makeVMenuProps","id","String","closeDelay","closeOnContentClick","locationStrategy","openDelay","scrim","scrollStrategy","transition","component","VMenu","name","props","emits","value","setup","_ref","slots","isActive","scopeId","uid","overlay","parent","openChildren","register","unregister","closeParents","setTimeout","onFocusIn","e","before","relatedTarget","after","target","contentEl","globalTop","document","includes","contains","focusable","focus","val","addEventListener","once","removeEventListener","onClickOutside","onKeydown","disabled","key","nextElement","shiftKey","el","tabIndex","activatorEl","onActivatorKeydown","preventDefault","activatorProps","overlayProps","filterProps","_createVNode","_mergeProps","class","style","$event","activator","default","_len","arguments","length","args","Array","_key","ΨopenChildren"],"sources":["../../../src/components/VMenu/VMenu.tsx"],"sourcesContent":["// Styles\nimport './VMenu.sass'\n\n// Components\nimport { VDialogTransition } from '@/components/transitions'\nimport { VDefaultsProvider } from '@/components/VDefaultsProvider'\nimport { VOverlay } from '@/components/VOverlay'\nimport { makeVOverlayProps } from '@/components/VOverlay/VOverlay'\n\n// Composables\nimport { forwardRefs } from '@/composables/forwardRefs'\nimport { useProxiedModel } from '@/composables/proxiedModel'\nimport { useScopeId } from '@/composables/scopeId'\n\n// Utilities\nimport { computed, inject, mergeProps, provide, ref, shallowRef, watch } from 'vue'\nimport { VMenuSymbol } from './shared'\nimport { focusableChildren, focusChild, genericComponent, getNextElement, getUid, omit, propsFactory, useRender } from '@/util'\n\n// Types\nimport type { Component } from 'vue'\nimport type { OverlaySlots } from '@/components/VOverlay/VOverlay'\n\nexport const makeVMenuProps = propsFactory({\n // TODO\n // disableKeys: Boolean,\n id: String,\n\n ...omit(makeVOverlayProps({\n closeDelay: 250,\n closeOnContentClick: true,\n locationStrategy: 'connected' as const,\n openDelay: 300,\n scrim: false,\n scrollStrategy: 'reposition' as const,\n transition: { component: VDialogTransition as Component },\n }), ['absolute']),\n}, 'VMenu')\n\nexport const VMenu = genericComponent<OverlaySlots>()({\n name: 'VMenu',\n\n props: makeVMenuProps(),\n\n emits: {\n 'update:modelValue': (value: boolean) => true,\n },\n\n setup (props, { slots }) {\n const isActive = useProxiedModel(props, 'modelValue')\n const { scopeId } = useScopeId()\n\n const uid = getUid()\n const id = computed(() => props.id || `v-menu-${uid}`)\n\n const overlay = ref<VOverlay>()\n\n const parent = inject(VMenuSymbol, null)\n const openChildren = shallowRef(0)\n provide(VMenuSymbol, {\n register () {\n ++openChildren.value\n },\n unregister () {\n --openChildren.value\n },\n closeParents () {\n setTimeout(() => {\n if (!openChildren.value) {\n isActive.value = false\n parent?.closeParents()\n }\n }, 40)\n },\n })\n\n function onFocusIn (e: FocusEvent) {\n const before = e.relatedTarget as HTMLElement | null\n const after = e.target as HTMLElement | null\n\n if (\n before !== after &&\n overlay.value?.contentEl &&\n // We're the topmost menu\n overlay.value?.globalTop &&\n // It isn't the document or the menu body\n ![document, overlay.value.contentEl].includes(after!) &&\n // It isn't inside the menu body\n !overlay.value.contentEl.contains(after)\n ) {\n const focusable = focusableChildren(overlay.value.contentEl)\n focusable[0]?.focus()\n }\n }\n\n watch(isActive, val => {\n if (val) {\n parent?.register()\n document.addEventListener('focusin', onFocusIn, { once: true })\n } else {\n parent?.unregister()\n document.removeEventListener('focusin', onFocusIn)\n }\n })\n\n function onClickOutside () {\n parent?.closeParents()\n }\n\n function onKeydown (e: KeyboardEvent) {\n if (props.disabled) return\n\n if (e.key === 'Tab') {\n const nextElement = getNextElement(\n focusableChildren(overlay.value?.contentEl as Element, false),\n e.shiftKey ? 'prev' : 'next',\n (el: HTMLElement) => el.tabIndex >= 0\n )\n if (!nextElement) {\n isActive.value = false\n overlay.value?.activatorEl?.focus()\n }\n }\n }\n\n function onActivatorKeydown (e: KeyboardEvent) {\n if (props.disabled) return\n\n const el = overlay.value?.contentEl\n if (el && isActive.value) {\n if (e.key === 'ArrowDown') {\n e.preventDefault()\n focusChild(el, 'next')\n } else if (e.key === 'ArrowUp') {\n e.preventDefault()\n focusChild(el, 'prev')\n }\n } else if (['ArrowDown', 'ArrowUp'].includes(e.key)) {\n isActive.value = true\n e.preventDefault()\n setTimeout(() => setTimeout(() => onActivatorKeydown(e)))\n }\n }\n\n const activatorProps = computed(() =>\n mergeProps({\n 'aria-haspopup': 'menu',\n 'aria-expanded': String(isActive.value),\n 'aria-owns': id.value,\n onKeydown: onActivatorKeydown,\n }, props.activatorProps)\n )\n\n useRender(() => {\n const [overlayProps] = VOverlay.filterProps(props)\n\n return (\n <VOverlay\n ref={ overlay }\n class={[\n 'v-menu',\n props.class,\n ]}\n style={ props.style }\n { ...overlayProps }\n v-model={ isActive.value }\n absolute\n activatorProps={ activatorProps.value }\n onClick:outside={ onClickOutside }\n onKeydown={ onKeydown }\n { ...scopeId }\n >\n {{\n activator: slots.activator,\n default: (...args) => (\n <VDefaultsProvider root=\"VMenu\">\n { slots.default?.(...args) }\n </VDefaultsProvider>\n ),\n }}\n </VOverlay>\n )\n })\n\n return forwardRefs({ id, ΨopenChildren: openChildren }, overlay)\n },\n})\n\nexport type VMenu = InstanceType<typeof VMenu>\n"],"mappings":"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"}
1
+ {"version":3,"file":"VMenu.mjs","names":["VDialogTransition","VDefaultsProvider","VOverlay","makeVOverlayProps","forwardRefs","useProxiedModel","useScopeId","computed","inject","mergeProps","nextTick","provide","ref","shallowRef","watch","VMenuSymbol","focusableChildren","focusChild","genericComponent","getNextElement","getUid","omit","propsFactory","useRender","makeVMenuProps","id","String","closeDelay","closeOnContentClick","locationStrategy","openDelay","scrim","scrollStrategy","transition","component","VMenu","name","props","emits","value","setup","_ref","slots","isActive","scopeId","uid","overlay","parent","openChildren","register","unregister","closeParents","setTimeout","onFocusIn","e","before","relatedTarget","after","target","contentEl","globalTop","document","includes","contains","focusable","focus","val","addEventListener","once","removeEventListener","onClickOutside","onKeydown","disabled","key","nextElement","shiftKey","el","tabIndex","activatorEl","onActivatorKeydown","preventDefault","activatorProps","overlayProps","filterProps","_createVNode","_mergeProps","class","style","$event","activator","default","_len","arguments","length","args","Array","_key","ΨopenChildren"],"sources":["../../../src/components/VMenu/VMenu.tsx"],"sourcesContent":["// Styles\nimport './VMenu.sass'\n\n// Components\nimport { VDialogTransition } from '@/components/transitions'\nimport { VDefaultsProvider } from '@/components/VDefaultsProvider'\nimport { VOverlay } from '@/components/VOverlay'\nimport { makeVOverlayProps } from '@/components/VOverlay/VOverlay'\n\n// Composables\nimport { forwardRefs } from '@/composables/forwardRefs'\nimport { useProxiedModel } from '@/composables/proxiedModel'\nimport { useScopeId } from '@/composables/scopeId'\n\n// Utilities\nimport { computed, inject, mergeProps, nextTick, provide, ref, shallowRef, watch } from 'vue'\nimport { VMenuSymbol } from './shared'\nimport { focusableChildren, focusChild, genericComponent, getNextElement, getUid, omit, propsFactory, useRender } from '@/util'\n\n// Types\nimport type { Component } from 'vue'\nimport type { OverlaySlots } from '@/components/VOverlay/VOverlay'\n\nexport const makeVMenuProps = propsFactory({\n // TODO\n // disableKeys: Boolean,\n id: String,\n\n ...omit(makeVOverlayProps({\n closeDelay: 250,\n closeOnContentClick: true,\n locationStrategy: 'connected' as const,\n openDelay: 300,\n scrim: false,\n scrollStrategy: 'reposition' as const,\n transition: { component: VDialogTransition as Component },\n }), ['absolute']),\n}, 'VMenu')\n\nexport const VMenu = genericComponent<OverlaySlots>()({\n name: 'VMenu',\n\n props: makeVMenuProps(),\n\n emits: {\n 'update:modelValue': (value: boolean) => true,\n },\n\n setup (props, { slots }) {\n const isActive = useProxiedModel(props, 'modelValue')\n const { scopeId } = useScopeId()\n\n const uid = getUid()\n const id = computed(() => props.id || `v-menu-${uid}`)\n\n const overlay = ref<VOverlay>()\n\n const parent = inject(VMenuSymbol, null)\n const openChildren = shallowRef(0)\n provide(VMenuSymbol, {\n register () {\n ++openChildren.value\n },\n unregister () {\n --openChildren.value\n },\n closeParents () {\n setTimeout(() => {\n if (!openChildren.value) {\n isActive.value = false\n parent?.closeParents()\n }\n }, 40)\n },\n })\n\n async function onFocusIn (e: FocusEvent) {\n const before = e.relatedTarget as HTMLElement | null\n const after = e.target as HTMLElement | null\n\n await nextTick()\n\n if (\n isActive.value &&\n before !== after &&\n overlay.value?.contentEl &&\n // We're the topmost menu\n overlay.value?.globalTop &&\n // It isn't the document or the menu body\n ![document, overlay.value.contentEl].includes(after!) &&\n // It isn't inside the menu body\n !overlay.value.contentEl.contains(after)\n ) {\n const focusable = focusableChildren(overlay.value.contentEl)\n focusable[0]?.focus()\n }\n }\n\n watch(isActive, val => {\n if (val) {\n parent?.register()\n document.addEventListener('focusin', onFocusIn, { once: true })\n } else {\n parent?.unregister()\n document.removeEventListener('focusin', onFocusIn)\n }\n })\n\n function onClickOutside () {\n parent?.closeParents()\n }\n\n function onKeydown (e: KeyboardEvent) {\n if (props.disabled) return\n\n if (e.key === 'Tab') {\n const nextElement = getNextElement(\n focusableChildren(overlay.value?.contentEl as Element, false),\n e.shiftKey ? 'prev' : 'next',\n (el: HTMLElement) => el.tabIndex >= 0\n )\n if (!nextElement) {\n isActive.value = false\n overlay.value?.activatorEl?.focus()\n }\n }\n }\n\n function onActivatorKeydown (e: KeyboardEvent) {\n if (props.disabled) return\n\n const el = overlay.value?.contentEl\n if (el && isActive.value) {\n if (e.key === 'ArrowDown') {\n e.preventDefault()\n focusChild(el, 'next')\n } else if (e.key === 'ArrowUp') {\n e.preventDefault()\n focusChild(el, 'prev')\n }\n } else if (['ArrowDown', 'ArrowUp'].includes(e.key)) {\n isActive.value = true\n e.preventDefault()\n setTimeout(() => setTimeout(() => onActivatorKeydown(e)))\n }\n }\n\n const activatorProps = computed(() =>\n mergeProps({\n 'aria-haspopup': 'menu',\n 'aria-expanded': String(isActive.value),\n 'aria-owns': id.value,\n onKeydown: onActivatorKeydown,\n }, props.activatorProps)\n )\n\n useRender(() => {\n const [overlayProps] = VOverlay.filterProps(props)\n\n return (\n <VOverlay\n ref={ overlay }\n class={[\n 'v-menu',\n props.class,\n ]}\n style={ props.style }\n { ...overlayProps }\n v-model={ isActive.value }\n absolute\n activatorProps={ activatorProps.value }\n onClick:outside={ onClickOutside }\n onKeydown={ onKeydown }\n { ...scopeId }\n >\n {{\n activator: slots.activator,\n default: (...args) => (\n <VDefaultsProvider root=\"VMenu\">\n { slots.default?.(...args) }\n </VDefaultsProvider>\n ),\n }}\n </VOverlay>\n )\n })\n\n return forwardRefs({ id, ΨopenChildren: openChildren }, overlay)\n },\n})\n\nexport type VMenu = InstanceType<typeof VMenu>\n"],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import * as vue from 'vue';
2
- import { Ref, EffectScope, ComponentPropsOptions, ExtractPropTypes, Component } from 'vue';
2
+ import { Ref, EffectScope, ComponentPropsOptions, ExtractPropTypes, Component, nextTick } from 'vue';
3
3
 
4
4
  interface ScrollStrategyData {
5
5
  root: Ref<HTMLElement | undefined>;
@@ -588,7 +588,7 @@ declare const VMenu: {
588
588
  errorCaptured?: (((err: unknown, instance: vue.ComponentPublicInstance<{}, {}, {}, {}, {}, {}, {}, {}, false, vue.ComponentOptionsBase<any, any, any, any, any, any, any, any, any, {}, {}, string, {}>, {}, {}> | null, info: string) => boolean | void) | ((err: unknown, instance: vue.ComponentPublicInstance<{}, {}, {}, {}, {}, {}, {}, {}, false, vue.ComponentOptionsBase<any, any, any, any, any, any, any, any, any, {}, {}, string, {}>, {}, {}> | null, info: string) => boolean | void)[]) | undefined;
589
589
  };
590
590
  $forceUpdate: () => void;
591
- $nextTick: typeof vue.nextTick;
591
+ $nextTick: typeof nextTick;
592
592
  $watch<T extends string | ((...args: any) => any)>(source: T, cb: T extends (...args: any) => infer R ? (args_0: R, args_1: R) => any : (...args: any) => any, options?: vue.WatchOptions<boolean> | undefined): vue.WatchStopHandle;
593
593
  } & {
594
594
  absolute: boolean;
@@ -734,7 +734,7 @@ declare const VMenu: {
734
734
  errorCaptured?: (((err: unknown, instance: vue.ComponentPublicInstance<{}, {}, {}, {}, {}, {}, {}, {}, false, vue.ComponentOptionsBase<any, any, any, any, any, any, any, any, any, {}, {}, string, {}>, {}, {}> | null, info: string) => boolean | void) | ((err: unknown, instance: vue.ComponentPublicInstance<{}, {}, {}, {}, {}, {}, {}, {}, false, vue.ComponentOptionsBase<any, any, any, any, any, any, any, any, any, {}, {}, string, {}>, {}, {}> | null, info: string) => boolean | void)[]) | undefined;
735
735
  };
736
736
  $forceUpdate: () => void;
737
- $nextTick: typeof vue.nextTick;
737
+ $nextTick: typeof nextTick;
738
738
  $watch<T extends string | ((...args: any) => any)>(source: T, cb: T extends (...args: any) => infer R ? (args_0: R, args_1: R) => any : (...args: any) => any, options?: vue.WatchOptions<boolean> | undefined): vue.WatchStopHandle;
739
739
  } & {
740
740
  location: Anchor;
@@ -1099,7 +1099,7 @@ declare const VMenu: {
1099
1099
  errorCaptured?: (((err: unknown, instance: vue.ComponentPublicInstance<{}, {}, {}, {}, {}, {}, {}, {}, false, vue.ComponentOptionsBase<any, any, any, any, any, any, any, any, any, {}, {}, string, {}>, {}, {}> | null, info: string) => boolean | void) | ((err: unknown, instance: vue.ComponentPublicInstance<{}, {}, {}, {}, {}, {}, {}, {}, false, vue.ComponentOptionsBase<any, any, any, any, any, any, any, any, any, {}, {}, string, {}>, {}, {}> | null, info: string) => boolean | void)[]) | undefined;
1100
1100
  };
1101
1101
  $forceUpdate: () => void;
1102
- $nextTick: typeof vue.nextTick;
1102
+ $nextTick: typeof nextTick;
1103
1103
  $watch<T extends string | ((...args: any) => any)>(source: T, cb: T extends (...args: any) => infer R ? (args_0: R, args_1: R) => any : (...args: any) => any, options?: vue.WatchOptions<boolean> | undefined): vue.WatchStopHandle;
1104
1104
  } & {
1105
1105
  absolute: boolean;
@@ -1551,7 +1551,7 @@ declare const VMenu: {
1551
1551
  errorCaptured?: (((err: unknown, instance: vue.ComponentPublicInstance<{}, {}, {}, {}, {}, {}, {}, {}, false, vue.ComponentOptionsBase<any, any, any, any, any, any, any, any, any, {}, {}, string, {}>, {}, {}> | null, info: string) => boolean | void) | ((err: unknown, instance: vue.ComponentPublicInstance<{}, {}, {}, {}, {}, {}, {}, {}, false, vue.ComponentOptionsBase<any, any, any, any, any, any, any, any, any, {}, {}, string, {}>, {}, {}> | null, info: string) => boolean | void)[]) | undefined;
1552
1552
  };
1553
1553
  $forceUpdate: () => void;
1554
- $nextTick: typeof vue.nextTick;
1554
+ $nextTick: typeof nextTick;
1555
1555
  $watch<T extends string | ((...args: any) => any)>(source: T, cb: T extends (...args: any) => infer R ? (args_0: R, args_1: R) => any : (...args: any) => any, options?: vue.WatchOptions<boolean> | undefined): vue.WatchStopHandle;
1556
1556
  } & {
1557
1557
  absolute: boolean;
@@ -9,7 +9,6 @@
9
9
  transition-duration: 0.2s;
10
10
  transition-property: box-shadow, transform, visibility, width, height, left, right, top, bottom;
11
11
  transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
12
- will-change: transform;
13
12
  position: absolute;
14
13
  border-color: rgba(var(--v-border-color), var(--v-border-opacity));
15
14
  border-style: solid;
@@ -12,7 +12,6 @@
12
12
  transition-duration: $navigation-drawer-transition-duration
13
13
  transition-property: $navigation-drawer-transition-property
14
14
  transition-timing-function: $navigation-drawer-transition-timing-function
15
- will-change: $navigation-drawer-will-change
16
15
  position: absolute
17
16
 
18
17
  @include tools.border($navigation-drawer-border...)
@@ -23,7 +23,6 @@ $navigation-drawer-temporary-elevation: 16 !default;
23
23
  $navigation-drawer-transition-duration: 0.2s !default;
24
24
  $navigation-drawer-transition-property: box-shadow, transform, visibility, width, height, left, right, top, bottom !default;
25
25
  $navigation-drawer-transition-timing-function: settings.$standard-easing !default;
26
- $navigation-drawer-will-change: transform !default;
27
26
  $navigation-drawer-scrim-opacity: .2 !default;
28
27
 
29
28
  // Lists
@@ -1,5 +1,5 @@
1
1
  import * as vue from 'vue';
2
- import { ComponentPropsOptions, ExtractPropTypes, JSXComponent, PropType, WritableComputedRef, Ref, CSSProperties } from 'vue';
2
+ import { ComponentPropsOptions, ExtractPropTypes, JSXComponent, PropType, WritableComputedRef, Ref, CSSProperties, VNode } from 'vue';
3
3
 
4
4
  interface FilterPropsOptions<PropsOptions extends Readonly<ComponentPropsOptions>, Props = ExtractPropTypes<PropsOptions>> {
5
5
  filterProps<T extends Partial<Props>, U extends Exclude<keyof Props, Exclude<keyof Props, keyof T>>>(props: T): [yes: Partial<Pick<T, U>>, no: Omit<T, U>];
@@ -16,6 +16,8 @@ type SelectionControlSlot = {
16
16
  model: WritableComputedRef<any>;
17
17
  textColorClasses: Ref<string[]>;
18
18
  textColorStyles: Ref<CSSProperties>;
19
+ inputNode: VNode;
20
+ icon: IconValue | undefined;
19
21
  props: {
20
22
  onBlur: (e: Event) => void;
21
23
  onFocus: (e: FocusEvent) => void;
@@ -2,8 +2,13 @@
2
2
  flex-direction: column;
3
3
  }
4
4
  .v-radio-group > .v-input__control > .v-label {
5
- margin-inline-start: 8px;
5
+ margin-inline-start: 16px;
6
6
  }
7
7
  .v-radio-group > .v-input__control > .v-label + .v-selection-control-group {
8
+ padding-inline-start: 6px;
8
9
  margin-top: 8px;
10
+ }
11
+ .v-radio-group .v-input__details {
12
+ padding-inline-start: 16px;
13
+ padding-inline-end: 16px;
9
14
  }
@@ -8,4 +8,9 @@
8
8
  margin-inline-start: $radio-group-label-margin-inline-start
9
9
 
10
10
  + .v-selection-control-group
11
+ padding-inline-start: $radio-group-label-selection-group-padding-inline
11
12
  margin-top: $radio-group-label-selection-group-margin-top
13
+
14
+ .v-input__details
15
+ padding-inline-start: $radio-group-details-padding-inline
16
+ padding-inline-end: $radio-group-details-padding-inline
@@ -1,2 +1,4 @@
1
- $radio-group-label-margin-inline-start: 8px !default;
1
+ $radio-group-details-padding-inline: 16px !default;
2
+ $radio-group-label-margin-inline-start: 16px !default;
2
3
  $radio-group-label-selection-group-margin-top: 8px !default;
4
+ $radio-group-label-selection-group-padding-inline: 6px !default;
@@ -1,5 +1,5 @@
1
1
  import * as vue from 'vue';
2
- import { ComponentPropsOptions, ExtractPropTypes, PropType, JSXComponent, WritableComputedRef, Ref, CSSProperties, ComputedRef } from 'vue';
2
+ import { ComponentPropsOptions, ExtractPropTypes, PropType, JSXComponent, WritableComputedRef, Ref, CSSProperties, VNode, ComputedRef } from 'vue';
3
3
 
4
4
  interface FilterPropsOptions<PropsOptions extends Readonly<ComponentPropsOptions>, Props = ExtractPropTypes<PropsOptions>> {
5
5
  filterProps<T extends Partial<Props>, U extends Exclude<keyof Props, Exclude<keyof Props, keyof T>>>(props: T): [yes: Partial<Pick<T, U>>, no: Omit<T, U>];
@@ -18,6 +18,8 @@ type SelectionControlSlot = {
18
18
  model: WritableComputedRef<any>;
19
19
  textColorClasses: Ref<string[]>;
20
20
  textColorStyles: Ref<CSSProperties>;
21
+ inputNode: VNode;
22
+ icon: IconValue | undefined;
21
23
  props: {
22
24
  onBlur: (e: Event) => void;
23
25
  onFocus: (e: FocusEvent) => void;
@@ -25,6 +25,14 @@ import { deepEqual, genericComponent, getPropertyFromItem, matchesSelector, omit
25
25
  export const makeSelectProps = propsFactory({
26
26
  chips: Boolean,
27
27
  closableChips: Boolean,
28
+ closeText: {
29
+ type: String,
30
+ default: '$vuetify.close'
31
+ },
32
+ openText: {
33
+ type: String,
34
+ default: '$vuetify.open'
35
+ },
28
36
  eager: Boolean,
29
37
  hideNoData: Boolean,
30
38
  hideSelected: Boolean,
@@ -54,7 +62,8 @@ export const makeSelectProps = propsFactory({
54
62
  export const makeVSelectProps = propsFactory({
55
63
  ...makeSelectProps(),
56
64
  ...omit(makeVTextFieldProps({
57
- modelValue: null
65
+ modelValue: null,
66
+ role: 'button'
58
67
  }), ['validationValue', 'dirty', 'appendInnerIcon']),
59
68
  ...makeTransitionProps({
60
69
  transition: {
@@ -109,6 +118,7 @@ export const VSelect = genericComponent()({
109
118
  });
110
119
  const selected = computed(() => selections.value.map(selection => selection.props.value));
111
120
  const isFocused = shallowRef(false);
121
+ const label = computed(() => menu.value ? props.closeText : props.openText);
112
122
  let keyboardLookupPrefix = '';
113
123
  let keyboardLookupLastTime;
114
124
  const displayItems = computed(() => {
@@ -235,7 +245,9 @@ export const VSelect = genericComponent()({
235
245
  "onClick:clear": onClear,
236
246
  "onMousedown:control": onMousedownControl,
237
247
  "onBlur": onBlur,
238
- "onKeydown": onKeydown
248
+ "onKeydown": onKeydown,
249
+ "aria-label": t(label.value),
250
+ "title": t(label.value)
239
251
  }), {
240
252
  ...slots,
241
253
  default: () => _createVNode(_Fragment, null, [_createVNode(VMenu, _mergeProps({