@vuetify/nightly 3.0.0-beta.0 → 3.0.0-beta.2

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 (277) hide show
  1. package/CHANGELOG.md +53 -2
  2. package/dist/json/attributes.json +343 -195
  3. package/dist/json/importMap.json +20 -0
  4. package/dist/json/tags.json +106 -44
  5. package/dist/json/web-types.json +946 -549
  6. package/dist/vuetify.css +1486 -1085
  7. package/dist/vuetify.d.ts +9036 -8077
  8. package/dist/vuetify.esm.js +1511 -944
  9. package/dist/vuetify.esm.js.map +1 -1
  10. package/dist/vuetify.js +1510 -943
  11. package/dist/vuetify.js.map +1 -1
  12. package/dist/vuetify.min.css +3 -3
  13. package/dist/vuetify.min.js +825 -754
  14. package/dist/vuetify.min.js.map +1 -1
  15. package/lib/components/VAlert/VAlert.css +29 -8
  16. package/lib/components/VAlert/VAlert.mjs +31 -17
  17. package/lib/components/VAlert/VAlert.mjs.map +1 -1
  18. package/lib/components/VAlert/VAlert.sass +27 -7
  19. package/lib/components/VAlert/VAlertTitle.mjs +1 -0
  20. package/lib/components/VAlert/VAlertTitle.mjs.map +1 -1
  21. package/lib/components/VAlert/_variables.scss +14 -7
  22. package/lib/components/VApp/VApp.css +1 -0
  23. package/lib/components/VApp/VApp.sass +1 -0
  24. package/lib/components/VAppBar/VAppBar.mjs +7 -3
  25. package/lib/components/VAppBar/VAppBar.mjs.map +1 -1
  26. package/lib/components/VAppBar/VAppBarTitle.mjs.map +1 -1
  27. package/lib/components/VAutocomplete/VAutocomplete.mjs +82 -69
  28. package/lib/components/VAutocomplete/VAutocomplete.mjs.map +1 -1
  29. package/lib/components/VAvatar/VAvatar.mjs +15 -14
  30. package/lib/components/VAvatar/VAvatar.mjs.map +1 -1
  31. package/lib/components/VBanner/VBanner.css +82 -58
  32. package/lib/components/VBanner/VBanner.mjs +39 -43
  33. package/lib/components/VBanner/VBanner.mjs.map +1 -1
  34. package/lib/components/VBanner/VBanner.sass +61 -54
  35. package/lib/components/VBanner/VBannerActions.mjs +34 -2
  36. package/lib/components/VBanner/VBannerActions.mjs.map +1 -1
  37. package/lib/components/VBanner/VBannerAvatar.mjs +20 -0
  38. package/lib/components/VBanner/VBannerAvatar.mjs.map +1 -0
  39. package/lib/components/VBanner/VBannerIcon.mjs +20 -0
  40. package/lib/components/VBanner/VBannerIcon.mjs.map +1 -0
  41. package/lib/components/VBanner/_variables.scss +10 -14
  42. package/lib/components/VBanner/index.mjs +2 -0
  43. package/lib/components/VBanner/index.mjs.map +1 -1
  44. package/lib/components/VBreadcrumbs/VBreadcrumbs.mjs +2 -0
  45. package/lib/components/VBreadcrumbs/VBreadcrumbs.mjs.map +1 -1
  46. package/lib/components/VBreadcrumbs/VBreadcrumbsItem.mjs +10 -9
  47. package/lib/components/VBreadcrumbs/VBreadcrumbsItem.mjs.map +1 -1
  48. package/lib/components/VBtn/VBtn.css +20 -1
  49. package/lib/components/VBtn/VBtn.mjs +20 -7
  50. package/lib/components/VBtn/VBtn.mjs.map +1 -1
  51. package/lib/components/VBtn/VBtn.sass +15 -2
  52. package/lib/components/VBtn/_variables.scss +3 -0
  53. package/lib/components/VBtnGroup/VBtnGroup.css +14 -6
  54. package/lib/components/VBtnGroup/VBtnGroup.sass +14 -6
  55. package/lib/components/VCard/VCard.css +13 -11
  56. package/lib/components/VCard/VCard.mjs +5 -2
  57. package/lib/components/VCard/VCard.mjs.map +1 -1
  58. package/lib/components/VCard/VCard.sass +12 -9
  59. package/lib/components/VCard/VCardActions.mjs +1 -2
  60. package/lib/components/VCard/VCardActions.mjs.map +1 -1
  61. package/lib/components/VCard/VCardContent.mjs +3 -0
  62. package/lib/components/VCard/VCardContent.mjs.map +1 -0
  63. package/lib/components/VCard/_variables.scss +11 -5
  64. package/lib/components/VCard/index.mjs +1 -0
  65. package/lib/components/VCard/index.mjs.map +1 -1
  66. package/lib/components/VCarousel/VCarousel.mjs +1 -1
  67. package/lib/components/VCarousel/VCarousel.mjs.map +1 -1
  68. package/lib/components/VCheckbox/VCheckbox.mjs +2 -2
  69. package/lib/components/VCheckbox/VCheckbox.mjs.map +1 -1
  70. package/lib/components/VChip/VChip.css +3 -0
  71. package/lib/components/VChip/VChip.sass +3 -0
  72. package/lib/components/VChip/_variables.scss +3 -0
  73. package/lib/components/VColorPicker/VColorPickerCanvas.css +1 -1
  74. package/lib/components/VCombobox/VCombobox.mjs +92 -74
  75. package/lib/components/VCombobox/VCombobox.mjs.map +1 -1
  76. package/lib/components/VDialog/VDialog.css +31 -11
  77. package/lib/components/VDialog/VDialog.mjs +6 -9
  78. package/lib/components/VDialog/VDialog.mjs.map +1 -1
  79. package/lib/components/VDialog/VDialog.sass +27 -10
  80. package/lib/components/VDialog/_variables.scss +3 -6
  81. package/lib/components/VExpansionPanel/VExpansionPanel.css +3 -2
  82. package/lib/components/VExpansionPanel/VExpansionPanel.mjs +6 -2
  83. package/lib/components/VExpansionPanel/VExpansionPanel.mjs.map +1 -1
  84. package/lib/components/VExpansionPanel/VExpansionPanelTitle.mjs +5 -3
  85. package/lib/components/VExpansionPanel/VExpansionPanelTitle.mjs.map +1 -1
  86. package/lib/components/VExpansionPanel/VExpansionPanels.mjs +4 -0
  87. package/lib/components/VExpansionPanel/VExpansionPanels.mjs.map +1 -1
  88. package/lib/components/VField/VField.css +1 -1
  89. package/lib/components/VField/VField.mjs +3 -4
  90. package/lib/components/VField/VField.mjs.map +1 -1
  91. package/lib/components/VField/VField.sass +1 -1
  92. package/lib/components/VFileInput/VFileInput.mjs +2 -1
  93. package/lib/components/VFileInput/VFileInput.mjs.map +1 -1
  94. package/lib/components/VFooter/VFooter.mjs +32 -15
  95. package/lib/components/VFooter/VFooter.mjs.map +1 -1
  96. package/lib/components/VForm/VForm.mjs +25 -11
  97. package/lib/components/VForm/VForm.mjs.map +1 -1
  98. package/lib/components/VIcon/VIcon.css +27 -12
  99. package/lib/components/VIcon/VIcon.mjs +19 -16
  100. package/lib/components/VIcon/VIcon.mjs.map +1 -1
  101. package/lib/components/VIcon/VIcon.sass +27 -16
  102. package/lib/components/VIcon/_variables.scss +1 -0
  103. package/lib/components/VInput/VInput.css +3 -1
  104. package/lib/components/VInput/VInput.mjs +3 -4
  105. package/lib/components/VInput/VInput.mjs.map +1 -1
  106. package/lib/components/VInput/VInput.sass +3 -1
  107. package/lib/components/VInput/_variables.scss +4 -0
  108. package/lib/components/VList/VList.css +7 -6
  109. package/lib/components/VList/VList.mjs +36 -17
  110. package/lib/components/VList/VList.mjs.map +1 -1
  111. package/lib/components/VList/VList.sass +3 -2
  112. package/lib/components/VList/VListChildren.mjs +1 -1
  113. package/lib/components/VList/VListChildren.mjs.map +1 -1
  114. package/lib/components/VList/VListGroup.mjs +28 -10
  115. package/lib/components/VList/VListGroup.mjs.map +1 -1
  116. package/lib/components/VList/VListItem.css +119 -42
  117. package/lib/components/VList/VListItem.mjs +36 -32
  118. package/lib/components/VList/VListItem.mjs.map +1 -1
  119. package/lib/components/VList/VListItem.sass +76 -28
  120. package/lib/components/VList/VListItemAction.mjs +29 -0
  121. package/lib/components/VList/VListItemAction.mjs.map +1 -0
  122. package/lib/components/VList/VListItemAvatar.mjs +10 -16
  123. package/lib/components/VList/VListItemAvatar.mjs.map +1 -1
  124. package/lib/components/VList/VListItemIcon.mjs +23 -0
  125. package/lib/components/VList/VListItemIcon.mjs.map +1 -0
  126. package/lib/components/VList/VListItemMedia.mjs +4 -4
  127. package/lib/components/VList/VListItemMedia.mjs.map +1 -1
  128. package/lib/components/VList/_variables.scss +12 -3
  129. package/lib/components/VList/index.mjs +2 -0
  130. package/lib/components/VList/index.mjs.map +1 -1
  131. package/lib/components/VMenu/VMenu.css +2 -12
  132. package/lib/components/VMenu/VMenu.mjs +61 -31
  133. package/lib/components/VMenu/VMenu.mjs.map +1 -1
  134. package/lib/components/VMenu/VMenu.sass +3 -6
  135. package/lib/components/VMenu/shared.mjs +2 -0
  136. package/lib/components/VMenu/shared.mjs.map +1 -0
  137. package/lib/components/VNavigationDrawer/VNavigationDrawer.mjs +1 -1
  138. package/lib/components/VNavigationDrawer/VNavigationDrawer.mjs.map +1 -1
  139. package/lib/components/VOverlay/VOverlay.css +8 -0
  140. package/lib/components/VOverlay/VOverlay.mjs +16 -15
  141. package/lib/components/VOverlay/VOverlay.mjs.map +1 -1
  142. package/lib/components/VOverlay/VOverlay.sass +9 -0
  143. package/lib/components/VOverlay/_variables.scss +1 -0
  144. package/lib/components/VOverlay/positionStrategies.mjs +7 -3
  145. package/lib/components/VOverlay/positionStrategies.mjs.map +1 -1
  146. package/lib/components/VOverlay/scrollStrategies.mjs +9 -0
  147. package/lib/components/VOverlay/scrollStrategies.mjs.map +1 -1
  148. package/lib/components/VOverlay/useActivator.mjs +50 -14
  149. package/lib/components/VOverlay/useActivator.mjs.map +1 -1
  150. package/lib/components/VPagination/VPagination.mjs +10 -12
  151. package/lib/components/VPagination/VPagination.mjs.map +1 -1
  152. package/lib/components/VProgressLinear/VProgressLinear.css +1 -1
  153. package/lib/components/VRadio/VRadio.mjs +1 -2
  154. package/lib/components/VRadio/VRadio.mjs.map +1 -1
  155. package/lib/components/VRadioGroup/VRadioGroup.mjs +2 -2
  156. package/lib/components/VRadioGroup/VRadioGroup.mjs.map +1 -1
  157. package/lib/components/VRangeSlider/VRangeSlider.mjs +5 -2
  158. package/lib/components/VRangeSlider/VRangeSlider.mjs.map +1 -1
  159. package/lib/components/VRating/VRating.css +2 -2
  160. package/lib/components/VRating/VRating.mjs +13 -3
  161. package/lib/components/VRating/VRating.mjs.map +1 -1
  162. package/lib/components/VRating/VRating.sass +2 -2
  163. package/lib/components/VSelect/VSelect.mjs +70 -91
  164. package/lib/components/VSelect/VSelect.mjs.map +1 -1
  165. package/lib/components/VSelectionControl/VSelectionControl.mjs +2 -1
  166. package/lib/components/VSelectionControl/VSelectionControl.mjs.map +1 -1
  167. package/lib/components/VSelectionControlGroup/VSelectionControlGroup.mjs +2 -2
  168. package/lib/components/VSelectionControlGroup/VSelectionControlGroup.mjs.map +1 -1
  169. package/lib/components/VSlideGroup/VSlideGroup.css +0 -5
  170. package/lib/components/VSlideGroup/VSlideGroup.mjs +36 -14
  171. package/lib/components/VSlideGroup/VSlideGroup.mjs.map +1 -1
  172. package/lib/components/VSlideGroup/VSlideGroup.sass +0 -4
  173. package/lib/components/VSlideGroup/VSlideGroupItem.mjs +3 -1
  174. package/lib/components/VSlideGroup/VSlideGroupItem.mjs.map +1 -1
  175. package/lib/components/VSlider/VSlider.css +7 -2
  176. package/lib/components/VSlider/VSlider.sass +11 -5
  177. package/lib/components/VSlider/VSliderTrack.css +6 -6
  178. package/lib/components/VSlider/VSliderTrack.mjs +1 -1
  179. package/lib/components/VSlider/VSliderTrack.mjs.map +1 -1
  180. package/lib/components/VSlider/VSliderTrack.sass +7 -7
  181. package/lib/components/VSlider/_variables.scss +5 -2
  182. package/lib/components/VSnackbar/VSnackbar.css +14 -13
  183. package/lib/components/VSnackbar/VSnackbar.mjs +22 -10
  184. package/lib/components/VSnackbar/VSnackbar.mjs.map +1 -1
  185. package/lib/components/VSnackbar/VSnackbar.sass +15 -16
  186. package/lib/components/VSnackbar/_variables.scss +0 -4
  187. package/lib/components/VSwitch/VSwitch.mjs +8 -5
  188. package/lib/components/VSwitch/VSwitch.mjs.map +1 -1
  189. package/lib/components/VSystemBar/VSystemBar.css +0 -5
  190. package/lib/components/VSystemBar/VSystemBar.mjs +31 -14
  191. package/lib/components/VSystemBar/VSystemBar.mjs.map +1 -1
  192. package/lib/components/VSystemBar/VSystemBar.sass +0 -5
  193. package/lib/components/VSystemBar/_variables.scss +0 -3
  194. package/lib/components/VTabs/VTab.mjs +28 -32
  195. package/lib/components/VTabs/VTab.mjs.map +1 -1
  196. package/lib/components/VTabs/VTabs.css +6 -2
  197. package/lib/components/VTabs/VTabs.mjs +7 -8
  198. package/lib/components/VTabs/VTabs.mjs.map +1 -1
  199. package/lib/components/VTabs/VTabs.sass +6 -1
  200. package/lib/components/VTabs/shared.mjs +2 -0
  201. package/lib/components/VTabs/shared.mjs.map +1 -0
  202. package/lib/components/VTextField/VTextField.css +4 -4
  203. package/lib/components/VTextField/VTextField.mjs +5 -9
  204. package/lib/components/VTextField/VTextField.mjs.map +1 -1
  205. package/lib/components/VTextField/VTextField.sass +5 -5
  206. package/lib/components/VTextarea/VTextarea.css +7 -4
  207. package/lib/components/VTextarea/VTextarea.sass +9 -5
  208. package/lib/components/VTimeline/VTimeline.css +187 -48
  209. package/lib/components/VTimeline/VTimeline.mjs +27 -11
  210. package/lib/components/VTimeline/VTimeline.mjs.map +1 -1
  211. package/lib/components/VTimeline/VTimeline.sass +196 -51
  212. package/lib/components/VTimeline/VTimelineDivider.mjs +2 -1
  213. package/lib/components/VTimeline/VTimelineDivider.mjs.map +1 -1
  214. package/lib/components/VTimeline/_variables.scss +2 -1
  215. package/lib/components/VToolbar/VToolbar.css +8 -1
  216. package/lib/components/VToolbar/VToolbar.mjs +8 -11
  217. package/lib/components/VToolbar/VToolbar.mjs.map +1 -1
  218. package/lib/components/VToolbar/VToolbar.sass +2 -1
  219. package/lib/components/VToolbar/VToolbarItems.mjs +0 -1
  220. package/lib/components/VToolbar/VToolbarItems.mjs.map +1 -1
  221. package/lib/components/VToolbar/_variables.scss +13 -1
  222. package/lib/components/VWindow/VWindow.mjs +0 -8
  223. package/lib/components/VWindow/VWindow.mjs.map +1 -1
  224. package/lib/components/index.d.ts +9025 -8077
  225. package/lib/composables/defaults.mjs +2 -2
  226. package/lib/composables/defaults.mjs.map +1 -1
  227. package/lib/composables/form.mjs +18 -5
  228. package/lib/composables/form.mjs.map +1 -1
  229. package/lib/composables/forwardRef.mjs +10 -6
  230. package/lib/composables/forwardRef.mjs.map +1 -1
  231. package/lib/composables/group.mjs +14 -6
  232. package/lib/composables/group.mjs.map +1 -1
  233. package/lib/composables/index.mjs.map +1 -1
  234. package/lib/composables/items.mjs +56 -0
  235. package/lib/composables/items.mjs.map +1 -0
  236. package/lib/composables/layout.mjs +7 -3
  237. package/lib/composables/layout.mjs.map +1 -1
  238. package/lib/composables/loader.mjs.map +1 -1
  239. package/lib/composables/nested/nested.mjs +27 -14
  240. package/lib/composables/nested/nested.mjs.map +1 -1
  241. package/lib/composables/nested/openStrategies.mjs +63 -36
  242. package/lib/composables/nested/openStrategies.mjs.map +1 -1
  243. package/lib/composables/nested/selectStrategies.mjs +163 -122
  244. package/lib/composables/nested/selectStrategies.mjs.map +1 -1
  245. package/lib/composables/overlay.mjs +5 -1
  246. package/lib/composables/overlay.mjs.map +1 -1
  247. package/lib/composables/proxiedModel.mjs.map +1 -1
  248. package/lib/composables/resizeObserver.mjs +1 -9
  249. package/lib/composables/resizeObserver.mjs.map +1 -1
  250. package/lib/composables/router.mjs +17 -5
  251. package/lib/composables/router.mjs.map +1 -1
  252. package/lib/composables/selectLink.mjs +19 -0
  253. package/lib/composables/selectLink.mjs.map +1 -0
  254. package/lib/composables/stack.mjs +7 -4
  255. package/lib/composables/stack.mjs.map +1 -1
  256. package/lib/composables/validation.mjs +6 -3
  257. package/lib/composables/validation.mjs.map +1 -1
  258. package/lib/composables/variant.mjs +0 -3
  259. package/lib/composables/variant.mjs.map +1 -1
  260. package/lib/directives/ripple/index.mjs +15 -3
  261. package/lib/directives/ripple/index.mjs.map +1 -1
  262. package/lib/entry-bundler.mjs +1 -1
  263. package/lib/framework.mjs +12 -7
  264. package/lib/framework.mjs.map +1 -1
  265. package/lib/index.d.ts +18 -2
  266. package/lib/locale/ca.mjs +9 -9
  267. package/lib/locale/ca.mjs.map +1 -1
  268. package/lib/styles/generic/_colors.scss +0 -1
  269. package/lib/styles/main.css +400 -392
  270. package/lib/styles/settings/_utilities.scss +54 -26
  271. package/lib/styles/tools/_states.sass +2 -1
  272. package/lib/util/defineComponent.mjs +37 -6
  273. package/lib/util/defineComponent.mjs.map +1 -1
  274. package/lib/util/getCurrentInstance.mjs +1 -1
  275. package/lib/util/getCurrentInstance.mjs.map +1 -1
  276. package/lib/util/helpers.mjs.map +1 -1
  277. package/package.json +31 -29
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/components/VCombobox/VCombobox.tsx"],"names":["genItem","makeSelectProps","VChip","VDefaultsProvider","VList","VListItem","VMenu","VTextField","makeFilterProps","useFilter","makeTransitionProps","useForwardRef","useLocale","useProxiedModel","useTextColor","computed","nextTick","ref","watch","genericComponent","useRender","wrapInArray","highlightResult","text","matches","length","Array","isArray","Error","substr","VCombobox","name","props","delimiters","filterKeys","hideNoData","transition","emits","val","setup","slots","t","vTextFieldRef","activator","isFocused","isPristine","menu","selectionIndex","color","value","items","map","textColorClasses","textColorStyles","model","v","multiple","_search","search","get","set","values","split","RegExp","join","forEach","trim","select","filteredItems","undefined","selections","array","index","unwrapped","item","found","find","selection","push","selected","onClear","e","openOnClear","onClickControl","onKeydown","selectionStart","preventDefault","includes","key","prev","setSelectionRange","next","onAfterLeave","findIndex","filter","title","$el","querySelector","hasChips","chips","chip","menuIcon","default","eager","noDataText","onChipClose","stopPropagation","slotProps","modelValue","closable","closableChips","size"],"mappings":"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","sourcesContent":["// Styles\nimport './VCombobox.sass'\n\n// Components\nimport { genItem, makeSelectProps } from '@/components/VSelect/VSelect'\nimport { VChip } from '@/components/VChip'\nimport { VDefaultsProvider } from '@/components/VDefaultsProvider'\nimport { VList, VListItem } from '@/components/VList'\nimport { VMenu } from '@/components/VMenu'\nimport { VTextField } from '@/components/VTextField'\n\n// Composables\nimport { makeFilterProps, useFilter } from '@/composables/filter'\nimport { makeTransitionProps } from '@/composables/transition'\nimport { useForwardRef } from '@/composables/forwardRef'\nimport { useLocale } from '@/composables/locale'\nimport { useProxiedModel } from '@/composables/proxiedModel'\nimport { useTextColor } from '@/composables/color'\n\n// Utility\nimport { computed, nextTick, ref, watch } from 'vue'\nimport { genericComponent, useRender, wrapInArray } from '@/util'\n\n// Types\nimport type { FilterMatch } from '@/composables/filter'\nimport type { DefaultChipSlot, InternalSelectItem } from '@/components/VSelect/VSelect'\nimport type { MakeSlots } from '@/util'\nimport type { PropType } from 'vue'\n\nexport interface InternalComboboxItem extends InternalSelectItem {\n selected: boolean\n}\n\nexport interface DefaultComboboxSlot {\n selection: InternalComboboxItem\n}\n\nfunction highlightResult (text: string, matches: FilterMatch, length: number) {\n if (Array.isArray(matches)) throw new Error('Multiple matches is not implemented')\n\n return typeof matches === 'number' && ~matches\n ? (\n <>\n <span class=\"v-combobox__unmask\">{ text.substr(0, matches) }</span>\n <span class=\"v-combobox__mask\">{ text.substr(matches, length) }</span>\n <span class=\"v-combobox__unmask\">{ text.substr(matches + length) }</span>\n </>\n )\n : text\n}\n\nexport const VCombobox = genericComponent<new <T>() => {\n $slots: MakeSlots<{\n chip: [DefaultChipSlot]\n default: []\n selection: [DefaultComboboxSlot]\n }>\n}>()({\n name: 'VCombobox',\n\n props: {\n // TODO: implement post keyboard support\n // autoSelectFirst: Boolean,\n delimiters: Array as PropType<string[]>,\n\n ...makeFilterProps({ filterKeys: ['title'] }),\n ...makeSelectProps({ hideNoData: true }),\n ...makeTransitionProps({ transition: false }),\n },\n\n emits: {\n 'update:modelValue': (val: any) => true,\n },\n\n setup (props, { slots }) {\n const { t } = useLocale()\n const vTextFieldRef = ref()\n const activator = ref()\n const isFocused = ref(false)\n const isPristine = ref(true)\n const menu = ref(false)\n const selectionIndex = ref(-1)\n const color = computed(() => vTextFieldRef.value?.color)\n const items = computed(() => props.items.map(genItem))\n const { textColorClasses, textColorStyles } = useTextColor(color)\n const model = useProxiedModel(\n props,\n 'modelValue',\n [],\n v => wrapInArray(v || []),\n (v: any) => props.multiple ? v : v[0]\n )\n const _search = ref('')\n const search = computed<string>({\n get: () => props.multiple ? _search.value : genItem(model.value[0]).value,\n set: val => {\n if (props.multiple) {\n _search.value = val\n } else {\n model.value = [val]\n }\n\n if (val && props.multiple && props.delimiters?.length) {\n const values = val.split(new RegExp(`(?:${props.delimiters.join('|')})+`))\n if (values.length > 1) {\n values.forEach(v => {\n v = v.trim()\n if (v) select({ value: v })\n })\n _search.value = ''\n }\n }\n\n if (!val) selectionIndex.value = -1\n if (isFocused.value) menu.value = true\n\n isPristine.value = !val\n },\n })\n const { filteredItems } = useFilter(props, items, computed(() => isPristine.value ? undefined : search.value))\n\n const selections = computed(() => {\n const array: InternalComboboxItem[] = []\n let index = 0\n for (const unwrapped of model.value) {\n const item = genItem(unwrapped)\n\n const found = array.find(selection => selection.value === item.value)\n\n if (found == null) {\n array.push({\n ...item,\n index,\n selected: index === selectionIndex.value,\n })\n\n index++\n }\n }\n\n return array\n })\n const selected = computed(() => selections.value.map(selection => selection.value))\n const selection = computed(() => selections.value[selectionIndex.value])\n\n function onClear (e: MouseEvent) {\n model.value = []\n\n if (props.openOnClear) {\n menu.value = true\n }\n }\n function onClickControl () {\n if (props.hideNoData && !filteredItems.value.length) return\n\n menu.value = true\n }\n function onKeydown (e: KeyboardEvent) {\n const selectionStart = vTextFieldRef.value.selectionStart\n const length = selected.value.length\n\n if (selectionIndex.value > -1) e.preventDefault()\n\n if (['Enter', 'ArrowDown'].includes(e.key)) {\n menu.value = true\n }\n\n if (['Escape'].includes(e.key)) {\n menu.value = false\n }\n\n if (['Enter', 'Escape', 'Tab'].includes(e.key)) {\n isPristine.value = true\n }\n\n if (!props.multiple) return\n\n if (['Backspace', 'Delete'].includes(e.key)) {\n if (selectionIndex.value < 0) {\n if (e.key === 'Backspace' && !search.value) {\n selectionIndex.value = length - 1\n }\n\n return\n }\n\n select(selection.value)\n\n nextTick(() => !selection.value && (selectionIndex.value = length - 2))\n }\n\n if (e.key === 'ArrowLeft') {\n if (selectionIndex.value < 0 && selectionStart > 0) return\n\n const prev = selectionIndex.value > -1\n ? selectionIndex.value - 1\n : length - 1\n\n if (selections.value[prev]) {\n selectionIndex.value = prev\n } else {\n selectionIndex.value = -1\n vTextFieldRef.value.setSelectionRange(search.value.length, search.value.length)\n }\n }\n\n if (e.key === 'ArrowRight') {\n if (selectionIndex.value < 0) return\n\n const next = selectionIndex.value + 1\n\n if (selections.value[next]) {\n selectionIndex.value = next\n } else {\n selectionIndex.value = -1\n vTextFieldRef.value.setSelectionRange(0, 0)\n }\n }\n\n if (e.key === 'Enter') {\n select({ value: search.value })\n search.value = ''\n }\n }\n function onAfterLeave () {\n if (isFocused.value) isPristine.value = true\n }\n function select (item: any) {\n if (props.multiple) {\n const index = selections.value.findIndex(selection => selection.value === item.value)\n\n if (index === -1) {\n model.value.push(item.value)\n } else {\n model.value = selected.value.filter(selection => selection !== item.value)\n }\n\n search.value = ''\n } else {\n search.value = item.title\n\n // watch for search watcher to trigger\n nextTick(() => {\n menu.value = false\n isPristine.value = true\n })\n }\n }\n\n watch(() => vTextFieldRef.value, val => {\n activator.value = val.$el.querySelector('.v-input__control')\n })\n\n watch(filteredItems, val => {\n if (!val.length && props.hideNoData) menu.value = false\n })\n\n watch(isFocused, val => {\n if (val) {\n selectionIndex.value = -1\n } else {\n menu.value = false\n\n if (!props.multiple || !search.value) return\n\n model.value.push(search.value)\n search.value = ''\n }\n })\n\n useRender(() => {\n const hasChips = !!(props.chips || slots.chip)\n\n return (\n <VTextField\n ref={ vTextFieldRef }\n v-model={ search.value }\n class={[\n 'v-combobox',\n {\n 'v-combobox--active-menu': menu.value,\n 'v-combobox--chips': !!props.chips,\n 'v-combobox--selecting-index': selectionIndex.value > -1,\n [`v-combobox--${props.multiple ? 'multiple' : 'single'}`]: true,\n },\n ]}\n appendInnerIcon={ props.items.length ? props.menuIcon : undefined }\n dirty={ selected.value.length > 0 }\n onClick:clear={ onClear }\n onClick:control={ onClickControl }\n onClick:input={ onClickControl }\n onFocus={ () => isFocused.value = true }\n onBlur={ () => isFocused.value = false }\n onKeydown={ onKeydown }\n >\n {{\n ...slots,\n default: () => (\n <>\n { activator.value && (\n <VMenu\n v-model={ menu.value }\n activator={ activator.value }\n contentClass=\"v-combobox__content\"\n eager={ props.eager }\n openOnClick={ false }\n transition={ props.transition }\n onAfterLeave={ onAfterLeave }\n >\n <VList\n selected={ selected.value }\n selectStrategy={ props.multiple ? 'independent' : 'single-independent' }\n >\n { !filteredItems.value.length && !props.hideNoData && (\n <VListItem title={ t(props.noDataText) } />\n ) }\n\n { filteredItems.value.map(({ item, matches }) => (\n <VListItem\n value={ item.value }\n onMousedown={ (e: MouseEvent) => e.preventDefault() }\n onClick={ () => select(item) }\n >\n {{\n title: () => {\n return isPristine.value\n ? item.title\n : highlightResult(item.title, matches.title, search.value?.length ?? 0)\n },\n }}\n </VListItem>\n )) }\n </VList>\n </VMenu>\n ) }\n\n { selections.value.map((selection, index) => {\n function onChipClose (e: Event) {\n e.stopPropagation()\n e.preventDefault()\n\n select(selection)\n }\n\n const slotProps = {\n 'onClick:close': onChipClose,\n modelValue: true,\n }\n\n return (\n <div\n class={[\n 'v-combobox__selection',\n selection.selected && [\n 'v-combobox__selection--selected',\n textColorClasses.value,\n ],\n ]}\n style={ selection.selected ? textColorStyles.value : {} }\n >\n { hasChips && (\n <VDefaultsProvider\n defaults={{\n VChip: {\n closable: props.closableChips,\n size: 'small',\n text: selection.title,\n },\n }}\n >\n { slots.chip\n ? slots.chip({ props: slotProps, selection })\n : (<VChip { ...slotProps } />)\n }\n </VDefaultsProvider>\n ) }\n\n { !hasChips && (\n slots.selection\n ? slots.selection({ selection })\n : (\n <span class=\"v-combobox__selection-text\">\n { selection.title }\n { props.multiple && (index < selections.value.length - 1) && (\n <span class=\"v-combobox__selection-comma\">,</span>\n ) }\n </span>\n )\n ) }\n </div>\n )\n }) }\n </>\n ),\n }}\n </VTextField>\n )\n })\n\n return useForwardRef({\n isFocused,\n isPristine,\n menu,\n search,\n selectionIndex,\n filteredItems,\n select,\n }, vTextFieldRef)\n },\n})\n\nexport type VCombobox = InstanceType<typeof VCombobox>\n"],"file":"VCombobox.mjs"}
1
+ {"version":3,"sources":["../../../src/components/VCombobox/VCombobox.tsx"],"names":["makeSelectProps","VChip","VDefaultsProvider","VList","VListItem","VMenu","VTextField","makeFilterProps","useFilter","makeTransitionProps","transformItem","useItems","useForwardRef","useLocale","useProxiedModel","useTextColor","computed","nextTick","ref","watch","genericComponent","useRender","wrapInArray","highlightResult","text","matches","length","Array","isArray","Error","substr","VCombobox","name","props","delimiters","filterKeys","hideNoData","transition","emits","val","setup","emit","slots","t","vTextFieldRef","activator","isFocused","isPristine","menu","selectionIndex","color","value","items","textColorClasses","textColorStyles","model","v","multiple","_search","search","get","set","values","split","RegExp","join","forEach","trim","select","filteredItems","undefined","selections","array","index","unwrapped","item","found","find","selection","push","selected","map","onClear","e","openOnClear","onClickControl","onKeydown","selectionStart","preventDefault","includes","key","prev","setSelectionRange","next","onInput","target","onAfterLeave","findIndex","splice","title","$el","querySelector","hasChips","chips","chip","menuIcon","default","eager","noDataText","onChipClose","stopPropagation","slotProps","modelValue","closable","closableChips","size"],"mappings":"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","sourcesContent":["// Styles\nimport './VCombobox.sass'\n\n// Components\nimport { makeSelectProps } from '@/components/VSelect/VSelect'\nimport { VChip } from '@/components/VChip'\nimport { VDefaultsProvider } from '@/components/VDefaultsProvider'\nimport { VList, VListItem } from '@/components/VList'\nimport { VMenu } from '@/components/VMenu'\nimport { VTextField } from '@/components/VTextField'\n\n// Composables\nimport { makeFilterProps, useFilter } from '@/composables/filter'\nimport { makeTransitionProps } from '@/composables/transition'\nimport { transformItem, useItems } from '@/composables/items'\nimport { useForwardRef } from '@/composables/forwardRef'\nimport { useLocale } from '@/composables/locale'\nimport { useProxiedModel } from '@/composables/proxiedModel'\nimport { useTextColor } from '@/composables/color'\n\n// Utility\nimport { computed, nextTick, ref, watch } from 'vue'\nimport { genericComponent, useRender, wrapInArray } from '@/util'\n\n// Types\nimport type { FilterMatch } from '@/composables/filter'\nimport type { DefaultChipSlot, InternalSelectItem } from '@/components/VSelect/VSelect'\nimport type { MakeSlots } from '@/util'\nimport type { PropType } from 'vue'\n\nexport interface InternalComboboxItem extends InternalSelectItem {\n selected: boolean\n}\n\nexport interface DefaultComboboxSlot {\n selection: InternalComboboxItem\n}\n\nfunction highlightResult (text: string, matches: FilterMatch, length: number) {\n if (Array.isArray(matches)) throw new Error('Multiple matches is not implemented')\n\n return typeof matches === 'number' && ~matches\n ? (\n <>\n <span class=\"v-combobox__unmask\">{ text.substr(0, matches) }</span>\n <span class=\"v-combobox__mask\">{ text.substr(matches, length) }</span>\n <span class=\"v-combobox__unmask\">{ text.substr(matches + length) }</span>\n </>\n )\n : text\n}\n\nexport const VCombobox = genericComponent<new <T>() => {\n $slots: MakeSlots<{\n chip: [DefaultChipSlot]\n default: []\n selection: [DefaultComboboxSlot]\n }>\n}>()({\n name: 'VCombobox',\n\n props: {\n // TODO: implement post keyboard support\n // autoSelectFirst: Boolean,\n delimiters: Array as PropType<string[]>,\n\n ...makeFilterProps({ filterKeys: ['title'] }),\n ...makeSelectProps({ hideNoData: true }),\n ...makeTransitionProps({ transition: false }),\n },\n\n emits: {\n 'update:modelValue': (val: any) => true,\n 'update:searchInput': (val: string) => true,\n },\n\n setup (props, { emit, slots }) {\n const { t } = useLocale()\n const vTextFieldRef = ref()\n const activator = ref()\n const isFocused = ref(false)\n const isPristine = ref(true)\n const menu = ref(false)\n const selectionIndex = ref(-1)\n const color = computed(() => vTextFieldRef.value?.color)\n const { items } = useItems(props)\n const { textColorClasses, textColorStyles } = useTextColor(color)\n const model = useProxiedModel(\n props,\n 'modelValue',\n [],\n v => wrapInArray(v || []),\n (v: any) => props.multiple ? v : v[0]\n )\n const _search = ref('')\n const search = computed<string>({\n get: () => props.multiple ? _search.value : transformItem(props, model.value[0]).value,\n set: val => {\n if (props.multiple) {\n _search.value = val\n } else {\n model.value = [val]\n }\n\n if (val && props.multiple && props.delimiters?.length) {\n const values = val.split(new RegExp(`(?:${props.delimiters.join('|')})+`))\n if (values.length > 1) {\n values.forEach(v => {\n v = v.trim()\n if (v) select({ value: v })\n })\n _search.value = ''\n }\n }\n\n if (!val) selectionIndex.value = -1\n if (isFocused.value) menu.value = true\n\n isPristine.value = !val\n },\n })\n watch(_search, value => {\n emit('update:searchInput', value)\n })\n\n const { filteredItems } = useFilter(props, items, computed(() => isPristine.value ? undefined : search.value))\n\n const selections = computed(() => {\n const array: InternalComboboxItem[] = []\n let index = 0\n for (const unwrapped of model.value) {\n const item = transformItem(props, unwrapped)\n\n const found = array.find(selection => selection.value === item.value)\n\n if (found == null) {\n array.push({\n ...item,\n index,\n selected: index === selectionIndex.value,\n })\n\n index++\n }\n }\n\n return array\n })\n const selected = computed(() => selections.value.map(selection => selection.value))\n const selection = computed(() => selections.value[selectionIndex.value])\n\n function onClear (e: MouseEvent) {\n model.value = []\n\n if (props.openOnClear) {\n menu.value = true\n }\n }\n function onClickControl () {\n if (props.hideNoData && !filteredItems.value.length) return\n\n menu.value = true\n }\n function onKeydown (e: KeyboardEvent) {\n const selectionStart = vTextFieldRef.value.selectionStart\n const length = selected.value.length\n\n if (selectionIndex.value > -1) e.preventDefault()\n\n if (['Enter', 'ArrowDown'].includes(e.key)) {\n menu.value = true\n }\n\n if (['Escape'].includes(e.key)) {\n menu.value = false\n }\n\n if (['Enter', 'Escape', 'Tab'].includes(e.key)) {\n isPristine.value = true\n }\n\n if (!props.multiple) return\n\n if (['Backspace', 'Delete'].includes(e.key)) {\n if (selectionIndex.value < 0) {\n if (e.key === 'Backspace' && !search.value) {\n selectionIndex.value = length - 1\n }\n\n return\n }\n\n select(selection.value)\n\n nextTick(() => !selection.value && (selectionIndex.value = length - 2))\n }\n\n if (e.key === 'ArrowLeft') {\n if (selectionIndex.value < 0 && selectionStart > 0) return\n\n const prev = selectionIndex.value > -1\n ? selectionIndex.value - 1\n : length - 1\n\n if (selections.value[prev]) {\n selectionIndex.value = prev\n } else {\n selectionIndex.value = -1\n vTextFieldRef.value.setSelectionRange(search.value.length, search.value.length)\n }\n }\n\n if (e.key === 'ArrowRight') {\n if (selectionIndex.value < 0) return\n\n const next = selectionIndex.value + 1\n\n if (selections.value[next]) {\n selectionIndex.value = next\n } else {\n selectionIndex.value = -1\n vTextFieldRef.value.setSelectionRange(0, 0)\n }\n }\n\n if (e.key === 'Enter') {\n select({ value: search.value })\n search.value = ''\n }\n }\n function onInput (e: InputEvent) {\n search.value = (e.target as HTMLInputElement).value\n }\n function onAfterLeave () {\n if (isFocused.value) isPristine.value = true\n }\n function select (item: any) {\n if (props.multiple) {\n const index = selected.value.findIndex(selection => selection === item.value)\n\n if (index === -1) {\n model.value = [...model.value, item.value]\n } else {\n const value = [...model.value]\n value.splice(index, 1)\n model.value = value\n }\n\n search.value = ''\n } else {\n search.value = item.title\n\n // watch for search watcher to trigger\n nextTick(() => {\n menu.value = false\n isPristine.value = true\n })\n }\n }\n\n watch(() => vTextFieldRef.value, val => {\n activator.value = val.$el.querySelector('.v-input__control')\n })\n\n watch(filteredItems, val => {\n if (!val.length && props.hideNoData) menu.value = false\n })\n\n watch(isFocused, val => {\n if (val) {\n selectionIndex.value = -1\n } else {\n menu.value = false\n\n if (!props.multiple || !search.value) return\n\n model.value = [...model.value, search.value]\n search.value = ''\n }\n })\n\n useRender(() => {\n const hasChips = !!(props.chips || slots.chip)\n\n return (\n <VTextField\n ref={ vTextFieldRef }\n modelValue={ search.value }\n onInput={ onInput }\n class={[\n 'v-combobox',\n {\n 'v-combobox--active-menu': menu.value,\n 'v-combobox--chips': !!props.chips,\n 'v-combobox--selecting-index': selectionIndex.value > -1,\n [`v-combobox--${props.multiple ? 'multiple' : 'single'}`]: true,\n },\n ]}\n appendInnerIcon={ props.items.length ? props.menuIcon : undefined }\n dirty={ selected.value.length > 0 }\n onClick:clear={ onClear }\n onClick:control={ onClickControl }\n onClick:input={ onClickControl }\n onFocus={ () => isFocused.value = true }\n onBlur={ () => isFocused.value = false }\n onKeydown={ onKeydown }\n >\n {{\n ...slots,\n default: () => (\n <>\n { activator.value && (\n <VMenu\n v-model={ menu.value }\n activator={ activator.value }\n contentClass=\"v-combobox__content\"\n eager={ props.eager }\n openOnClick={ false }\n transition={ props.transition }\n onAfterLeave={ onAfterLeave }\n >\n <VList\n selected={ selected.value }\n selectStrategy={ props.multiple ? 'independent' : 'single-independent' }\n >\n { !filteredItems.value.length && !props.hideNoData && (slots['no-data']?.() ?? (\n <VListItem title={ t(props.noDataText) } />\n )) }\n\n { filteredItems.value.map(({ item, matches }) => (\n <VListItem\n value={ item.value }\n onMousedown={ (e: MouseEvent) => e.preventDefault() }\n onClick={ () => select(item) }\n >\n {{\n title: () => {\n return isPristine.value\n ? item.title\n : highlightResult(item.title, matches.title, search.value?.length ?? 0)\n },\n }}\n </VListItem>\n )) }\n </VList>\n </VMenu>\n ) }\n\n { selections.value.map((selection, index) => {\n function onChipClose (e: Event) {\n e.stopPropagation()\n e.preventDefault()\n\n select(selection)\n }\n\n const slotProps = {\n 'onClick:close': onChipClose,\n modelValue: true,\n }\n\n return (\n <div\n class={[\n 'v-combobox__selection',\n selection.selected && [\n 'v-combobox__selection--selected',\n textColorClasses.value,\n ],\n ]}\n style={ selection.selected ? textColorStyles.value : {} }\n >\n { hasChips && (\n <VDefaultsProvider\n defaults={{\n VChip: {\n closable: props.closableChips,\n size: 'small',\n text: selection.title,\n },\n }}\n >\n { slots.chip\n ? slots.chip({ props: slotProps, selection })\n : (<VChip { ...slotProps } />)\n }\n </VDefaultsProvider>\n ) }\n\n { !hasChips && (\n slots.selection\n ? slots.selection({ selection })\n : (\n <span class=\"v-combobox__selection-text\">\n { selection.title }\n { props.multiple && (index < selections.value.length - 1) && (\n <span class=\"v-combobox__selection-comma\">,</span>\n ) }\n </span>\n )\n ) }\n </div>\n )\n }) }\n </>\n ),\n }}\n </VTextField>\n )\n })\n\n return useForwardRef({\n isFocused,\n isPristine,\n menu,\n search,\n selectionIndex,\n filteredItems,\n select,\n }, vTextFieldRef)\n },\n})\n\nexport type VCombobox = InstanceType<typeof VCombobox>\n"],"file":"VCombobox.mjs"}
@@ -2,24 +2,24 @@
2
2
  z-index: 2400;
3
3
  align-items: center;
4
4
  justify-content: center;
5
+ margin: auto;
5
6
  }
6
7
  .v-dialog .v-overlay__content {
7
- max-height: 360px;
8
- min-width: 240px;
9
- max-width: 560px;
10
- border-radius: 4px;
11
- }
12
- @media (max-width: 959.98px) {
13
- .v-dialog .v-overlay__content {
14
- max-width: 280px;
15
- }
8
+ max-height: calc(100% - 48px);
9
+ margin: 24px;
10
+ display: flex;
11
+ flex-direction: column;
16
12
  }
17
13
  .v-dialog .v-overlay__content > .v-card,
18
14
  .v-dialog .v-overlay__content > .v-sheet {
19
- border-radius: inherit;
20
- overflow: hidden;
15
+ border-radius: 4px;
16
+ overflow-y: auto;
21
17
  box-shadow: 0px 11px 15px -7px rgba(0, 0, 0, 0.2), 0px 24px 38px 3px rgba(0, 0, 0, 0.14), 0px 9px 46px 8px rgba(0, 0, 0, 0.12);
22
18
  }
19
+ .v-dialog .v-overlay__content > .v-card {
20
+ display: flex;
21
+ flex-direction: column;
22
+ }
23
23
  .v-dialog .v-overlay__content > .v-card > .v-card-avatar {
24
24
  padding: 0;
25
25
  }
@@ -42,6 +42,7 @@
42
42
  .v-dialog--fullscreen .v-overlay__content {
43
43
  border-radius: 0;
44
44
  margin: 0;
45
+ padding: 0;
45
46
  width: 100%;
46
47
  height: 100%;
47
48
  max-width: 100%;
@@ -54,4 +55,23 @@
54
55
  .v-dialog--fullscreen .v-overlay__content > .v-sheet {
55
56
  min-height: 100%;
56
57
  min-width: 100%;
58
+ border-radius: 0;
59
+ }
60
+
61
+ .v-dialog--scrollable .v-overlay__content,
62
+ .v-dialog--scrollable .v-overlay__content > form {
63
+ display: flex;
64
+ }
65
+ .v-dialog--scrollable .v-overlay__content > .v-card,
66
+ .v-dialog--scrollable .v-overlay__content > form > .v-card {
67
+ display: flex;
68
+ flex: 1 1 100%;
69
+ flex-direction: column;
70
+ max-height: 100%;
71
+ max-width: 100%;
72
+ }
73
+ .v-dialog--scrollable .v-overlay__content > .v-card > .v-card-text,
74
+ .v-dialog--scrollable .v-overlay__content > form > .v-card > .v-card-text {
75
+ backface-visibility: hidden;
76
+ overflow-y: auto;
57
77
  }
@@ -52,19 +52,15 @@ export const VDialog = genericComponent()({
52
52
  const overlay = ref();
53
53
 
54
54
  function onFocusin(e) {
55
- var _overlay$value;
55
+ var _overlay$value, _overlay$value2;
56
56
 
57
57
  const before = e.relatedTarget;
58
58
  const after = e.target;
59
59
 
60
- if (before !== after && (_overlay$value = overlay.value) != null && _overlay$value.contentEl && // It isn't the document or the dialog body
60
+ if (before !== after && (_overlay$value = overlay.value) != null && _overlay$value.contentEl && // We're the topmost dialog
61
+ (_overlay$value2 = overlay.value) != null && _overlay$value2.isTop && // It isn't the document or the dialog body
61
62
  ![document, overlay.value.contentEl].includes(after) && // It isn't inside the dialog body
62
- !overlay.value.contentEl.contains(after) // We're the topmost dialog
63
- // TODO: this.activeZIndex >= this.getMaxZIndex() &&
64
- // It isn't inside a dependent element (like a menu)
65
- // TODO: !this.getOpenDependentElements().some(el => el.contains(target))
66
- // So we must have focused something outside the dialog and its children
67
- ) {
63
+ !overlay.value.contentEl.contains(after)) {
68
64
  const focusable = [...overlay.value.contentEl.querySelectorAll('button, [href], input, select, textarea, [tabindex]:not([tabindex="-1"])')].filter(el => !el.hasAttribute('disabled'));
69
65
  if (!focusable.length) return;
70
66
  const firstElement = focusable[0];
@@ -108,7 +104,8 @@ export const VDialog = genericComponent()({
108
104
  "modelValue": isActive.value,
109
105
  "onUpdate:modelValue": $event => isActive.value = $event,
110
106
  "class": ['v-dialog', {
111
- 'v-dialog--fullscreen': props.fullscreen
107
+ 'v-dialog--fullscreen': props.fullscreen,
108
+ 'v-dialog--scrollable': props.scrollable
112
109
  }],
113
110
  "style": dimensionStyles.value,
114
111
  "transition": props.transition,
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/components/VDialog/VDialog.tsx"],"names":["VDialogTransition","VOverlay","makeDimensionProps","useDimension","makeTransitionProps","useProxiedModel","nextTick","ref","watch","genericComponent","IN_BROWSER","VDialog","name","inheritAttrs","props","fullscreen","Boolean","origin","type","String","default","retainFocus","scrollable","modelValue","width","transition","component","emits","value","setup","attrs","slots","isActive","dimensionStyles","overlay","onFocusin","e","before","relatedTarget","after","target","contentEl","document","includes","contains","focusable","querySelectorAll","filter","el","hasAttribute","length","firstElement","lastElement","focus","val","addEventListener","removeEventListener","immediate","preventScroll","activatorEl","activator"],"mappings":"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","sourcesContent":["// Styles\nimport './VDialog.sass'\n\n// Components\nimport { VDialogTransition } from '@/components/transitions'\nimport { VOverlay } from '@/components/VOverlay'\n\n// Composables\nimport { makeDimensionProps, useDimension } from '@/composables/dimensions'\nimport { makeTransitionProps } from '@/composables/transition'\nimport { useProxiedModel } from '@/composables/proxiedModel'\n\n// Utilities\nimport { nextTick, ref, watch } from 'vue'\nimport { genericComponent, IN_BROWSER } from '@/util'\n\n// Types\nimport type { OverlaySlots } from '@/components/VOverlay/VOverlay'\n\nexport const VDialog = genericComponent<new () => {\n $slots: OverlaySlots\n}>()({\n name: 'VDialog',\n\n inheritAttrs: false,\n\n props: {\n fullscreen: Boolean,\n origin: {\n type: String,\n default: 'center center',\n },\n retainFocus: {\n type: Boolean,\n default: true,\n },\n scrollable: Boolean,\n modelValue: Boolean,\n\n ...makeDimensionProps({ width: 'auto' }),\n ...makeTransitionProps({\n transition: { component: VDialogTransition },\n }),\n },\n\n emits: {\n 'update:modelValue': (value: boolean) => true,\n },\n\n setup (props, { attrs, slots }) {\n const isActive = useProxiedModel(props, 'modelValue')\n const { dimensionStyles } = useDimension(props)\n\n const overlay = ref<VOverlay>()\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 // It isn't the document or the dialog body\n ![document, overlay.value.contentEl].includes(after!) &&\n // It isn't inside the dialog body\n !overlay.value.contentEl.contains(after)\n // We're the topmost dialog\n // TODO: this.activeZIndex >= this.getMaxZIndex() &&\n // It isn't inside a dependent element (like a menu)\n // TODO: !this.getOpenDependentElements().some(el => el.contains(target))\n // So we must have focused something outside the dialog and its children\n ) {\n const focusable = [...overlay.value.contentEl.querySelectorAll(\n 'button, [href], input, select, textarea, [tabindex]:not([tabindex=\"-1\"])'\n )].filter(el => !el.hasAttribute('disabled')) as HTMLElement[]\n\n if (!focusable.length) return\n\n const firstElement = focusable[0]\n const lastElement = focusable[focusable.length - 1]\n\n if (before === firstElement) {\n lastElement.focus()\n } else {\n firstElement.focus()\n }\n }\n }\n\n if (IN_BROWSER) {\n watch(() => isActive.value && props.retainFocus, val => {\n val\n ? document.addEventListener('focusin', onFocusin)\n : document.removeEventListener('focusin', onFocusin)\n }, { immediate: true })\n }\n\n watch(isActive, async val => {\n await nextTick()\n if (val) {\n overlay.value!.contentEl?.focus({ preventScroll: true })\n } else {\n overlay.value!.activatorEl?.focus({ preventScroll: true })\n }\n })\n\n return () => {\n return (\n <VOverlay\n v-model={ isActive.value }\n class={[\n 'v-dialog',\n {\n 'v-dialog--fullscreen': props.fullscreen,\n },\n ]}\n style={ dimensionStyles.value }\n transition={ props.transition }\n ref={ overlay }\n aria-role=\"dialog\"\n aria-modal=\"true\"\n activatorProps={{\n 'aria-haspopup': 'dialog',\n 'aria-expanded': String(isActive.value),\n }}\n { ...attrs }\n v-slots={{\n default: slots.default,\n activator: slots.activator,\n }}\n />\n )\n }\n },\n})\n\nexport type VDialog = InstanceType<typeof VDialog>\n"],"file":"VDialog.mjs"}
1
+ {"version":3,"sources":["../../../src/components/VDialog/VDialog.tsx"],"names":["VDialogTransition","VOverlay","makeDimensionProps","useDimension","makeTransitionProps","useProxiedModel","nextTick","ref","watch","genericComponent","IN_BROWSER","VDialog","name","inheritAttrs","props","fullscreen","Boolean","origin","type","String","default","retainFocus","scrollable","modelValue","width","transition","component","emits","value","setup","attrs","slots","isActive","dimensionStyles","overlay","onFocusin","e","before","relatedTarget","after","target","contentEl","isTop","document","includes","contains","focusable","querySelectorAll","filter","el","hasAttribute","length","firstElement","lastElement","focus","val","addEventListener","removeEventListener","immediate","preventScroll","activatorEl","activator"],"mappings":"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","sourcesContent":["// Styles\nimport './VDialog.sass'\n\n// Components\nimport { VDialogTransition } from '@/components/transitions'\nimport { VOverlay } from '@/components/VOverlay'\n\n// Composables\nimport { makeDimensionProps, useDimension } from '@/composables/dimensions'\nimport { makeTransitionProps } from '@/composables/transition'\nimport { useProxiedModel } from '@/composables/proxiedModel'\n\n// Utilities\nimport { nextTick, ref, watch } from 'vue'\nimport { genericComponent, IN_BROWSER } from '@/util'\n\n// Types\nimport type { OverlaySlots } from '@/components/VOverlay/VOverlay'\n\nexport const VDialog = genericComponent<new () => {\n $slots: OverlaySlots\n}>()({\n name: 'VDialog',\n\n inheritAttrs: false,\n\n props: {\n fullscreen: Boolean,\n origin: {\n type: String,\n default: 'center center',\n },\n retainFocus: {\n type: Boolean,\n default: true,\n },\n scrollable: Boolean,\n modelValue: Boolean,\n\n ...makeDimensionProps({ width: 'auto' }),\n ...makeTransitionProps({\n transition: { component: VDialogTransition },\n }),\n },\n\n emits: {\n 'update:modelValue': (value: boolean) => true,\n },\n\n setup (props, { attrs, slots }) {\n const isActive = useProxiedModel(props, 'modelValue')\n const { dimensionStyles } = useDimension(props)\n\n const overlay = ref<VOverlay>()\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 dialog\n overlay.value?.isTop &&\n // It isn't the document or the dialog body\n ![document, overlay.value.contentEl].includes(after!) &&\n // It isn't inside the dialog body\n !overlay.value.contentEl.contains(after)\n ) {\n const focusable = [...overlay.value.contentEl.querySelectorAll(\n 'button, [href], input, select, textarea, [tabindex]:not([tabindex=\"-1\"])'\n )].filter(el => !el.hasAttribute('disabled')) as HTMLElement[]\n\n if (!focusable.length) return\n\n const firstElement = focusable[0]\n const lastElement = focusable[focusable.length - 1]\n\n if (before === firstElement) {\n lastElement.focus()\n } else {\n firstElement.focus()\n }\n }\n }\n\n if (IN_BROWSER) {\n watch(() => isActive.value && props.retainFocus, val => {\n val\n ? document.addEventListener('focusin', onFocusin)\n : document.removeEventListener('focusin', onFocusin)\n }, { immediate: true })\n }\n\n watch(isActive, async val => {\n await nextTick()\n if (val) {\n overlay.value!.contentEl?.focus({ preventScroll: true })\n } else {\n overlay.value!.activatorEl?.focus({ preventScroll: true })\n }\n })\n\n return () => {\n return (\n <VOverlay\n v-model={ isActive.value }\n class={[\n 'v-dialog',\n {\n 'v-dialog--fullscreen': props.fullscreen,\n 'v-dialog--scrollable': props.scrollable,\n },\n ]}\n style={ dimensionStyles.value }\n transition={ props.transition }\n ref={ overlay }\n aria-role=\"dialog\"\n aria-modal=\"true\"\n activatorProps={{\n 'aria-haspopup': 'dialog',\n 'aria-expanded': String(isActive.value),\n }}\n { ...attrs }\n v-slots={{\n default: slots.default,\n activator: slots.activator,\n }}\n />\n )\n }\n },\n})\n\nexport type VDialog = InstanceType<typeof VDialog>\n"],"file":"VDialog.mjs"}
@@ -7,25 +7,25 @@
7
7
  z-index: $dialog-z-index
8
8
  align-items: center
9
9
  justify-content: center
10
+ margin: auto
10
11
 
11
12
  .v-overlay__content
12
- max-height: $dialog-overlay-content-max-height
13
- min-width: $dialog-overlay-content-min-width
14
- max-width: $dialog-overlay-content-max-width
15
-
16
- @include tools.rounded($dialog-overlay-content-border-radius)
17
-
18
- @media #{$dialog-overlay-content-mobile-breakpoint}
19
- max-width: $dialog-overlay-content-mobile-max-width
13
+ max-height: calc(100% - #{$dialog-margin * 2})
14
+ margin: $dialog-margin
15
+ display: flex
16
+ flex-direction: column
20
17
 
21
18
  > .v-card,
22
19
  > .v-sheet
23
- border-radius: inherit
24
- overflow: hidden
20
+ border-radius: $dialog-border-radius
21
+ overflow-y: auto
25
22
 
26
23
  @include tools.elevation($dialog-elevation)
27
24
 
28
25
  > .v-card
26
+ display: flex
27
+ flex-direction: column
28
+
29
29
  > .v-card-avatar
30
30
  padding: $dialog-card-avatar-padding
31
31
 
@@ -47,6 +47,7 @@
47
47
  .v-overlay__content
48
48
  border-radius: 0
49
49
  margin: 0
50
+ padding: 0
50
51
  width: 100%
51
52
  height: 100%
52
53
  max-width: 100%
@@ -59,3 +60,19 @@
59
60
  > .v-sheet
60
61
  min-height: 100%
61
62
  min-width: 100%
63
+ border-radius: 0
64
+
65
+ .v-dialog--scrollable .v-overlay__content,
66
+ .v-dialog--scrollable .v-overlay__content > form
67
+ display: flex
68
+
69
+ > .v-card
70
+ display: flex
71
+ flex: 1 1 100%
72
+ flex-direction: column
73
+ max-height: 100%
74
+ max-width: 100%
75
+
76
+ > .v-card-text
77
+ backface-visibility: hidden
78
+ overflow-y: auto
@@ -5,14 +5,11 @@
5
5
  // Defaults
6
6
  $dialog-elevation: 24 !default;
7
7
  $dialog-z-index: $dialog-elevation * 100 !default;
8
+ $dialog-border-radius: settings.$border-radius-root !default;
9
+ $dialog-margin: 24px !default;
10
+
8
11
  $dialog-card-avatar-padding: 0 !default;
9
12
  $dialog-card-header-padding: 14px 24px 0 !default;
10
13
  $dialog-card-header-text-padding-top: 10px !default;
11
14
  $dialog-card-text-padding: 16px 24px 10px !default;
12
15
  $dialog-card-text-letter-spacing: tools.map-deep-get(settings.$typography, 'body-1', 'letter-spacing') !default;
13
- $dialog-overlay-content-border-radius: settings.$border-radius-root !default;
14
- $dialog-overlay-content-max-width: 560px !default;
15
- $dialog-overlay-content-max-height: 360px !default;
16
- $dialog-overlay-content-min-width: 240px !default;
17
- $dialog-overlay-content-mobile-breakpoint: map.get(settings.$display-breakpoints, 'sm-and-down') !default;
18
- $dialog-overlay-content-mobile-max-width: 280px !default;
@@ -129,10 +129,11 @@
129
129
  }
130
130
  }
131
131
  .v-expansion-panel-title--active:hover.v-expansion-panel-title__overlay,
132
- .v-expansion-panel-title--active .v-expansion-panel-title__overlay {
132
+ .v-expansion-panel-title--active .v-expansion-panel-title__overlay, .v-expansion-panel-title[aria-haspopup=menu][aria-expanded=true]:hover.v-expansion-panel-title__overlay,
133
+ .v-expansion-panel-title[aria-haspopup=menu][aria-expanded=true] .v-expansion-panel-title__overlay {
133
134
  opacity: calc(0.12 * var(--v-theme-overlay-multiplier));
134
135
  }
135
- .v-expansion-panel-title--active:focus .v-expansion-panel-title__overlay {
136
+ .v-expansion-panel-title--active:focus .v-expansion-panel-title__overlay, .v-expansion-panel-title[aria-haspopup=menu][aria-expanded=true]:focus .v-expansion-panel-title__overlay {
136
137
  opacity: calc(0.16 * var(--v-theme-overlay-multiplier));
137
138
  }
138
139
  .v-expansion-panel-title--active::before {
@@ -43,13 +43,17 @@ export const VExpansionPanel = defineComponent({
43
43
  roundedClasses
44
44
  } = useRounded(props);
45
45
  const isDisabled = computed(() => (groupItem == null ? void 0 : groupItem.disabled.value) || props.disabled);
46
+ const selectedIndices = computed(() => groupItem.group.items.value.reduce((arr, item, index) => {
47
+ if (groupItem.group.selected.value.includes(item.id)) arr.push(index);
48
+ return arr;
49
+ }, []));
46
50
  const isBeforeSelected = computed(() => {
47
51
  const index = groupItem.group.items.value.findIndex(item => item.id === groupItem.id);
48
- return !groupItem.isSelected.value && groupItem.group.selected.value.some(id => groupItem.group.items.value.indexOf(id) - index === 1);
52
+ return !groupItem.isSelected.value && selectedIndices.value.some(selectedIndex => selectedIndex - index === 1);
49
53
  });
50
54
  const isAfterSelected = computed(() => {
51
55
  const index = groupItem.group.items.value.findIndex(item => item.id === groupItem.id);
52
- return !groupItem.isSelected.value && groupItem.group.selected.value.some(id => groupItem.group.items.value.indexOf(id) - index === -1);
56
+ return !groupItem.isSelected.value && selectedIndices.value.some(selectedIndex => selectedIndex - index === -1);
53
57
  });
54
58
  provide(VExpansionPanelSymbol, groupItem);
55
59
  useRender(() => {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/components/VExpansionPanel/VExpansionPanel.tsx"],"names":["makeVExpansionPanelTitleProps","VExpansionPanelTitle","VExpansionPanelText","VExpansionPanelSymbol","makeElevationProps","useElevation","makeGroupItemProps","useGroupItem","makeRoundedProps","useRounded","useBackgroundColor","makeTagProps","makeLazyProps","computed","provide","defineComponent","useRender","VExpansionPanel","name","props","title","String","text","bgColor","setup","slots","groupItem","backgroundColorClasses","backgroundColorStyles","elevationClasses","roundedClasses","isDisabled","disabled","value","isBeforeSelected","index","group","items","findIndex","item","id","isSelected","selected","some","indexOf","isAfterSelected","hasText","hasTitle","collapseIcon","color","expandIcon","hideActions","ripple","eager","default"],"mappings":"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","sourcesContent":["// Components\nimport { makeVExpansionPanelTitleProps, VExpansionPanelTitle } from './VExpansionPanelTitle'\nimport { VExpansionPanelText } from './VExpansionPanelText'\nimport { VExpansionPanelSymbol } from './VExpansionPanels'\n\n// Composables\nimport { makeElevationProps, useElevation } from '@/composables/elevation'\nimport { makeGroupItemProps, useGroupItem } from '@/composables/group'\nimport { makeRoundedProps, useRounded } from '@/composables/rounded'\nimport { useBackgroundColor } from '@/composables/color'\nimport { makeTagProps } from '@/composables/tag'\nimport { makeLazyProps } from '@/composables/lazy'\n\n// Utilities\nimport { computed, provide } from 'vue'\nimport { defineComponent, useRender } from '@/util'\n\nexport const VExpansionPanel = defineComponent({\n name: 'VExpansionPanel',\n\n props: {\n title: String,\n text: String,\n bgColor: String,\n\n ...makeElevationProps(),\n ...makeGroupItemProps(),\n ...makeLazyProps(),\n ...makeRoundedProps(),\n ...makeTagProps(),\n ...makeVExpansionPanelTitleProps(),\n },\n\n setup (props, { slots }) {\n const groupItem = useGroupItem(props, VExpansionPanelSymbol)\n const { backgroundColorClasses, backgroundColorStyles } = useBackgroundColor(props, 'bgColor')\n const { elevationClasses } = useElevation(props)\n const { roundedClasses } = useRounded(props)\n const isDisabled = computed(() => groupItem?.disabled.value || props.disabled)\n\n const isBeforeSelected = computed(() => {\n const index = groupItem.group.items.value.findIndex(item => item.id === groupItem.id)\n return !groupItem.isSelected.value &&\n groupItem.group.selected.value.some(id => groupItem.group.items.value.indexOf(id) - index === 1)\n })\n\n const isAfterSelected = computed(() => {\n const index = groupItem.group.items.value.findIndex(item => item.id === groupItem.id)\n return !groupItem.isSelected.value &&\n groupItem.group.selected.value.some(id => groupItem.group.items.value.indexOf(id) - index === -1)\n })\n\n provide(VExpansionPanelSymbol, groupItem)\n\n useRender(() => {\n const hasText = !!(slots.text || props.text)\n const hasTitle = !!(slots.title || props.title)\n\n return (\n <props.tag\n class={[\n 'v-expansion-panel',\n {\n 'v-expansion-panel--active': groupItem.isSelected.value,\n 'v-expansion-panel--before-active': isBeforeSelected.value,\n 'v-expansion-panel--after-active': isAfterSelected.value,\n 'v-expansion-panel--disabled': isDisabled.value,\n },\n roundedClasses.value,\n backgroundColorClasses.value,\n ]}\n style={ backgroundColorStyles.value }\n aria-expanded={ groupItem.isSelected.value }\n >\n <div\n class={[\n 'v-expansion-panel__shadow',\n ...elevationClasses.value,\n ]}\n />\n\n { hasTitle && (\n <VExpansionPanelTitle\n collapseIcon={ props.collapseIcon }\n color={ props.color }\n expandIcon={ props.expandIcon }\n hideActions={ props.hideActions }\n ripple={ props.ripple }\n >\n { slots.title ? slots.title() : props.title }\n </VExpansionPanelTitle>\n ) }\n\n { hasText && (\n <VExpansionPanelText eager={ props.eager }>\n { slots.text ? slots.text() : props.text }\n </VExpansionPanelText>\n ) }\n\n { slots.default?.() }\n </props.tag>\n )\n })\n\n return {}\n },\n})\n\nexport type VExpansionPanel = InstanceType<typeof VExpansionPanel>\n"],"file":"VExpansionPanel.mjs"}
1
+ {"version":3,"sources":["../../../src/components/VExpansionPanel/VExpansionPanel.tsx"],"names":["makeVExpansionPanelTitleProps","VExpansionPanelTitle","VExpansionPanelText","VExpansionPanelSymbol","makeElevationProps","useElevation","makeGroupItemProps","useGroupItem","makeRoundedProps","useRounded","useBackgroundColor","makeTagProps","makeLazyProps","computed","provide","defineComponent","useRender","VExpansionPanel","name","props","title","String","text","bgColor","setup","slots","groupItem","backgroundColorClasses","backgroundColorStyles","elevationClasses","roundedClasses","isDisabled","disabled","value","selectedIndices","group","items","reduce","arr","item","index","selected","includes","id","push","isBeforeSelected","findIndex","isSelected","some","selectedIndex","isAfterSelected","hasText","hasTitle","collapseIcon","color","expandIcon","hideActions","ripple","eager","default"],"mappings":"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","sourcesContent":["// Components\nimport { makeVExpansionPanelTitleProps, VExpansionPanelTitle } from './VExpansionPanelTitle'\nimport { VExpansionPanelText } from './VExpansionPanelText'\nimport { VExpansionPanelSymbol } from './VExpansionPanels'\n\n// Composables\nimport { makeElevationProps, useElevation } from '@/composables/elevation'\nimport { makeGroupItemProps, useGroupItem } from '@/composables/group'\nimport { makeRoundedProps, useRounded } from '@/composables/rounded'\nimport { useBackgroundColor } from '@/composables/color'\nimport { makeTagProps } from '@/composables/tag'\nimport { makeLazyProps } from '@/composables/lazy'\n\n// Utilities\nimport { computed, provide } from 'vue'\nimport { defineComponent, useRender } from '@/util'\n\nexport const VExpansionPanel = defineComponent({\n name: 'VExpansionPanel',\n\n props: {\n title: String,\n text: String,\n bgColor: String,\n\n ...makeElevationProps(),\n ...makeGroupItemProps(),\n ...makeLazyProps(),\n ...makeRoundedProps(),\n ...makeTagProps(),\n ...makeVExpansionPanelTitleProps(),\n },\n\n setup (props, { slots }) {\n const groupItem = useGroupItem(props, VExpansionPanelSymbol)\n const { backgroundColorClasses, backgroundColorStyles } = useBackgroundColor(props, 'bgColor')\n const { elevationClasses } = useElevation(props)\n const { roundedClasses } = useRounded(props)\n const isDisabled = computed(() => groupItem?.disabled.value || props.disabled)\n\n const selectedIndices = computed(() => groupItem.group.items.value.reduce<number[]>((arr, item, index) => {\n if (groupItem.group.selected.value.includes(item.id)) arr.push(index)\n return arr\n }, []))\n\n const isBeforeSelected = computed(() => {\n const index = groupItem.group.items.value.findIndex(item => item.id === groupItem.id)\n return !groupItem.isSelected.value &&\n selectedIndices.value.some(selectedIndex => selectedIndex - index === 1)\n })\n\n const isAfterSelected = computed(() => {\n const index = groupItem.group.items.value.findIndex(item => item.id === groupItem.id)\n return !groupItem.isSelected.value &&\n selectedIndices.value.some(selectedIndex => selectedIndex - index === -1)\n })\n\n provide(VExpansionPanelSymbol, groupItem)\n\n useRender(() => {\n const hasText = !!(slots.text || props.text)\n const hasTitle = !!(slots.title || props.title)\n\n return (\n <props.tag\n class={[\n 'v-expansion-panel',\n {\n 'v-expansion-panel--active': groupItem.isSelected.value,\n 'v-expansion-panel--before-active': isBeforeSelected.value,\n 'v-expansion-panel--after-active': isAfterSelected.value,\n 'v-expansion-panel--disabled': isDisabled.value,\n },\n roundedClasses.value,\n backgroundColorClasses.value,\n ]}\n style={ backgroundColorStyles.value }\n aria-expanded={ groupItem.isSelected.value }\n >\n <div\n class={[\n 'v-expansion-panel__shadow',\n ...elevationClasses.value,\n ]}\n />\n\n { hasTitle && (\n <VExpansionPanelTitle\n collapseIcon={ props.collapseIcon }\n color={ props.color }\n expandIcon={ props.expandIcon }\n hideActions={ props.hideActions }\n ripple={ props.ripple }\n >\n { slots.title ? slots.title() : props.title }\n </VExpansionPanelTitle>\n ) }\n\n { hasText && (\n <VExpansionPanelText eager={ props.eager }>\n { slots.text ? slots.text() : props.text }\n </VExpansionPanelText>\n ) }\n\n { slots.default?.() }\n </props.tag>\n )\n })\n\n return {}\n },\n})\n\nexport type VExpansionPanel = InstanceType<typeof VExpansionPanel>\n"],"file":"VExpansionPanel.mjs"}
@@ -23,7 +23,8 @@ export const makeVExpansionPanelTitleProps = propsFactory({
23
23
  ripple: {
24
24
  type: [Boolean, Object],
25
25
  default: false
26
- }
26
+ },
27
+ readonly: Boolean
27
28
  });
28
29
  export const VExpansionPanelTitle = defineComponent({
29
30
  name: 'VExpansionPanelTitle',
@@ -47,7 +48,8 @@ export const VExpansionPanelTitle = defineComponent({
47
48
  collapseIcon: props.collapseIcon,
48
49
  disabled: expansionPanel.disabled.value,
49
50
  expanded: expansionPanel.isSelected.value,
50
- expandIcon: props.expandIcon
51
+ expandIcon: props.expandIcon,
52
+ readonly: props.readonly
51
53
  }));
52
54
  useRender(() => {
53
55
  var _slots$default;
@@ -61,7 +63,7 @@ export const VExpansionPanelTitle = defineComponent({
61
63
  "tabindex": expansionPanel.disabled.value ? -1 : undefined,
62
64
  "disabled": expansionPanel.disabled.value,
63
65
  "aria-expanded": expansionPanel.isSelected.value,
64
- "onClick": expansionPanel.toggle
66
+ "onClick": !props.readonly ? expansionPanel.toggle : undefined
65
67
  }, [_createVNode("div", {
66
68
  "class": "v-expansion-panel-title__overlay"
67
69
  }, null), (_slots$default = slots.default) == null ? void 0 : _slots$default.call(slots, slotProps.value), !props.hideActions && _createVNode("div", {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/components/VExpansionPanel/VExpansionPanelTitle.tsx"],"names":["VIcon","VExpansionPanelSymbol","useBackgroundColor","Ripple","computed","inject","defineComponent","propsFactory","useRender","makeVExpansionPanelTitleProps","color","String","expandIcon","type","default","collapseIcon","hideActions","Boolean","ripple","Object","VExpansionPanelTitle","name","directives","props","setup","slots","expansionPanel","Error","backgroundColorClasses","backgroundColorStyles","slotProps","disabled","value","expanded","isSelected","undefined","toggle","actions"],"mappings":";AAAA;SACSA,K;SACAC,qB,kCAET;;SACSC,kB,uCAET;;SACSC,M,6CAET;;AACA,SAASC,QAAT,EAAmBC,MAAnB,QAAiC,KAAjC;SACSC,e,EAAiBC,Y,EAAcC,S;AAExC,OAAO,MAAMC,6BAA6B,GAAGF,YAAY,CAAC;AACxDG,EAAAA,KAAK,EAAEC,MADiD;AAExDC,EAAAA,UAAU,EAAE;AACVC,IAAAA,IAAI,EAAEF,MADI;AAEVG,IAAAA,OAAO,EAAE;AAFC,GAF4C;AAMxDC,EAAAA,YAAY,EAAE;AACZF,IAAAA,IAAI,EAAEF,MADM;AAEZG,IAAAA,OAAO,EAAE;AAFG,GAN0C;AAUxDE,EAAAA,WAAW,EAAEC,OAV2C;AAWxDC,EAAAA,MAAM,EAAE;AACNL,IAAAA,IAAI,EAAE,CAACI,OAAD,EAAUE,MAAV,CADA;AAENL,IAAAA,OAAO,EAAE;AAFH;AAXgD,CAAD,CAAlD;AAiBP,OAAO,MAAMM,oBAAoB,GAAGd,eAAe,CAAC;AAClDe,EAAAA,IAAI,EAAE,sBAD4C;AAGlDC,EAAAA,UAAU,EAAE;AAAEnB,IAAAA;AAAF,GAHsC;AAKlDoB,EAAAA,KAAK,EAAE,EACL,GAAGd,6BAA6B;AAD3B,GAL2C;;AASlDe,EAAAA,KAAK,CAAED,KAAF,QAAoB;AAAA,QAAX;AAAEE,MAAAA;AAAF,KAAW;AACvB,UAAMC,cAAc,GAAGrB,MAAM,CAACJ,qBAAD,CAA7B;AAEA,QAAI,CAACyB,cAAL,EAAqB,MAAM,IAAIC,KAAJ,CAAU,+EAAV,CAAN;AAErB,UAAM;AAAEC,MAAAA,sBAAF;AAA0BC,MAAAA;AAA1B,QAAoD3B,kBAAkB,CAACqB,KAAD,EAAQ,OAAR,CAA5E;AAEA,UAAMO,SAAS,GAAG1B,QAAQ,CAAC,OAAO;AAChCW,MAAAA,YAAY,EAAEQ,KAAK,CAACR,YADY;AAEhCgB,MAAAA,QAAQ,EAAEL,cAAc,CAACK,QAAf,CAAwBC,KAFF;AAGhCC,MAAAA,QAAQ,EAAEP,cAAc,CAACQ,UAAf,CAA0BF,KAHJ;AAIhCpB,MAAAA,UAAU,EAAEW,KAAK,CAACX;AAJc,KAAP,CAAD,CAA1B;AAOAJ,IAAAA,SAAS,CAAC;AAAA;;AAAA;AAAA,iBAEC,CACL,yBADK,EAEL;AACE,6CAAmCkB,cAAc,CAACQ,UAAf,CAA0BF;AAD/D,SAFK,EAKLJ,sBAAsB,CAACI,KALlB,CAFD;AAAA,iBASEH,qBAAqB,CAACG,KATxB;AAAA,gBAUD,QAVC;AAAA,oBAWKN,cAAc,CAACK,QAAf,CAAwBC,KAAxB,GAAgC,CAAC,CAAjC,GAAqCG,SAX1C;AAAA,oBAYKT,cAAc,CAACK,QAAf,CAAwBC,KAZ7B;AAAA,yBAaUN,cAAc,CAACQ,UAAf,CAA0BF,KAbpC;AAAA,mBAcIN,cAAc,CAACU;AAdnB;AAAA,iBAiBK;AAjBL,kCAmBJX,KAAK,CAACX,OAnBF,qBAmBJ,oBAAAW,KAAK,EAAWK,SAAS,CAACE,KAArB,CAnBD,EAqBJ,CAACT,KAAK,CAACP,WAAP;AAAA,iBACW;AADX,UAGIS,KAAK,CAACY,OAAN,GAAgBZ,KAAK,CAACY,OAAN,CAAcP,SAAS,CAACE,KAAxB,CAAhB;AAAA,gBACgBN,cAAc,CAACQ,UAAf,CAA0BF,KAA1B,GAAkCT,KAAK,CAACR,YAAxC,GAAuDQ,KAAK,CAACX;AAD7E,cAHJ,EArBI,mCAeKW,KAAK,CAACL,MAfX;AAAA,KAAD,CAAT;AAgCA,WAAO,EAAP;AACD;;AAxDiD,CAAD,CAA5C","sourcesContent":["// Components\nimport { VIcon } from '@/components/VIcon'\nimport { VExpansionPanelSymbol } from './VExpansionPanels'\n\n// Composables\nimport { useBackgroundColor } from '@/composables/color'\n\n// Directives\nimport { Ripple } from '@/directives/ripple'\n\n// Utilities\nimport { computed, inject } from 'vue'\nimport { defineComponent, propsFactory, useRender } from '@/util'\n\nexport const makeVExpansionPanelTitleProps = propsFactory({\n color: String,\n expandIcon: {\n type: String,\n default: '$expand',\n },\n collapseIcon: {\n type: String,\n default: '$collapse',\n },\n hideActions: Boolean,\n ripple: {\n type: [Boolean, Object],\n default: false,\n },\n})\n\nexport const VExpansionPanelTitle = defineComponent({\n name: 'VExpansionPanelTitle',\n\n directives: { Ripple },\n\n props: {\n ...makeVExpansionPanelTitleProps(),\n },\n\n setup (props, { slots }) {\n const expansionPanel = inject(VExpansionPanelSymbol)\n\n if (!expansionPanel) throw new Error('[Vuetify] v-expansion-panel-title needs to be placed inside v-expansion-panel')\n\n const { backgroundColorClasses, backgroundColorStyles } = useBackgroundColor(props, 'color')\n\n const slotProps = computed(() => ({\n collapseIcon: props.collapseIcon,\n disabled: expansionPanel.disabled.value,\n expanded: expansionPanel.isSelected.value,\n expandIcon: props.expandIcon,\n }))\n\n useRender(() => (\n <button\n class={[\n 'v-expansion-panel-title',\n {\n 'v-expansion-panel-title--active': expansionPanel.isSelected.value,\n },\n backgroundColorClasses.value,\n ]}\n style={ backgroundColorStyles.value }\n type=\"button\"\n tabindex={ expansionPanel.disabled.value ? -1 : undefined }\n disabled={ expansionPanel.disabled.value }\n aria-expanded={ expansionPanel.isSelected.value }\n onClick={ expansionPanel.toggle }\n v-ripple={ props.ripple }\n >\n <div class=\"v-expansion-panel-title__overlay\" />\n\n { slots.default?.(slotProps.value) }\n\n { !props.hideActions && (\n <div class=\"v-expansion-panel-title__icon\">\n {\n slots.actions ? slots.actions(slotProps.value)\n : <VIcon icon={ expansionPanel.isSelected.value ? props.collapseIcon : props.expandIcon } />\n }\n </div>\n ) }\n </button>\n ))\n\n return {}\n },\n})\n\nexport type VExpansionPanelTitle = InstanceType<typeof VExpansionPanelTitle>\n"],"file":"VExpansionPanelTitle.mjs"}
1
+ {"version":3,"sources":["../../../src/components/VExpansionPanel/VExpansionPanelTitle.tsx"],"names":["VIcon","VExpansionPanelSymbol","useBackgroundColor","Ripple","computed","inject","defineComponent","propsFactory","useRender","makeVExpansionPanelTitleProps","color","String","expandIcon","type","default","collapseIcon","hideActions","Boolean","ripple","Object","readonly","VExpansionPanelTitle","name","directives","props","setup","slots","expansionPanel","Error","backgroundColorClasses","backgroundColorStyles","slotProps","disabled","value","expanded","isSelected","undefined","toggle","actions"],"mappings":"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","sourcesContent":["// Components\nimport { VIcon } from '@/components/VIcon'\nimport { VExpansionPanelSymbol } from './VExpansionPanels'\n\n// Composables\nimport { useBackgroundColor } from '@/composables/color'\n\n// Directives\nimport { Ripple } from '@/directives/ripple'\n\n// Utilities\nimport { computed, inject } from 'vue'\nimport { defineComponent, propsFactory, useRender } from '@/util'\n\nexport const makeVExpansionPanelTitleProps = propsFactory({\n color: String,\n expandIcon: {\n type: String,\n default: '$expand',\n },\n collapseIcon: {\n type: String,\n default: '$collapse',\n },\n hideActions: Boolean,\n ripple: {\n type: [Boolean, Object],\n default: false,\n },\n readonly: Boolean,\n})\n\nexport const VExpansionPanelTitle = defineComponent({\n name: 'VExpansionPanelTitle',\n\n directives: { Ripple },\n\n props: {\n ...makeVExpansionPanelTitleProps(),\n },\n\n setup (props, { slots }) {\n const expansionPanel = inject(VExpansionPanelSymbol)\n\n if (!expansionPanel) throw new Error('[Vuetify] v-expansion-panel-title needs to be placed inside v-expansion-panel')\n\n const { backgroundColorClasses, backgroundColorStyles } = useBackgroundColor(props, 'color')\n\n const slotProps = computed(() => ({\n collapseIcon: props.collapseIcon,\n disabled: expansionPanel.disabled.value,\n expanded: expansionPanel.isSelected.value,\n expandIcon: props.expandIcon,\n readonly: props.readonly,\n }))\n\n useRender(() => (\n <button\n class={[\n 'v-expansion-panel-title',\n {\n 'v-expansion-panel-title--active': expansionPanel.isSelected.value,\n },\n backgroundColorClasses.value,\n ]}\n style={ backgroundColorStyles.value }\n type=\"button\"\n tabindex={ expansionPanel.disabled.value ? -1 : undefined }\n disabled={ expansionPanel.disabled.value }\n aria-expanded={ expansionPanel.isSelected.value }\n onClick={ !props.readonly ? expansionPanel.toggle : undefined }\n v-ripple={ props.ripple }\n >\n <div class=\"v-expansion-panel-title__overlay\" />\n\n { slots.default?.(slotProps.value) }\n\n { !props.hideActions && (\n <div class=\"v-expansion-panel-title__icon\">\n {\n slots.actions ? slots.actions(slotProps.value)\n : <VIcon icon={ expansionPanel.isSelected.value ? props.collapseIcon : props.expandIcon } />\n }\n </div>\n ) }\n </button>\n ))\n\n return {}\n },\n})\n\nexport type VExpansionPanelTitle = InstanceType<typeof VExpansionPanelTitle>\n"],"file":"VExpansionPanelTitle.mjs"}
@@ -21,6 +21,7 @@ export const VExpansionPanels = defineComponent({
21
21
  default: 'default',
22
22
  validator: v => allowedVariants.includes(v)
23
23
  },
24
+ readonly: Boolean,
24
25
  ...makeGroupProps(),
25
26
  ...makeTagProps(),
26
27
  ...makeThemeProps()
@@ -41,6 +42,9 @@ export const VExpansionPanels = defineComponent({
41
42
  provideDefaults({
42
43
  VExpansionPanel: {
43
44
  color: toRef(props, 'color')
45
+ },
46
+ VExpansionPanelTitle: {
47
+ readonly: toRef(props, 'readonly')
44
48
  }
45
49
  });
46
50
  useRender(() => _createVNode(props.tag, {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/components/VExpansionPanel/VExpansionPanels.tsx"],"names":["makeGroupProps","useGroup","makeTagProps","makeThemeProps","provideTheme","provideDefaults","computed","toRef","defineComponent","useRender","VExpansionPanelSymbol","Symbol","for","allowedVariants","VExpansionPanels","name","props","color","String","variant","type","default","validator","v","includes","emits","val","setup","slots","themeClasses","variantClass","VExpansionPanel","value"],"mappings":";AAAA;AACA,+B,CAEA;;SACSA,c,EAAgBC,Q;SAChBC,Y;SACAC,c,EAAgBC,Y;SAChBC,e,0CAET;;AACA,SAASC,QAAT,EAAmBC,KAAnB,QAAgC,KAAhC;SACSC,e,EAAiBC,S,gCAE1B;;AAIA,OAAO,MAAMC,qBAAqD,GAAGC,MAAM,CAACC,GAAP,CAAW,2BAAX,CAA9D;AAEP,MAAMC,eAAe,GAAG,CAAC,SAAD,EAAY,WAAZ,EAAyB,OAAzB,EAAkC,QAAlC,CAAxB;AAIA,OAAO,MAAMC,gBAAgB,GAAGN,eAAe,CAAC;AAC9CO,EAAAA,IAAI,EAAE,kBADwC;AAG9CC,EAAAA,KAAK,EAAE;AACLC,IAAAA,KAAK,EAAEC,MADF;AAELC,IAAAA,OAAO,EAAE;AACPC,MAAAA,IAAI,EAAEF,MADC;AAEPG,MAAAA,OAAO,EAAE,SAFF;AAGPC,MAAAA,SAAS,EAAGC,CAAD,IAAYV,eAAe,CAACW,QAAhB,CAAyBD,CAAzB;AAHhB,KAFJ;AAQL,OAAGvB,cAAc,EARZ;AASL,OAAGE,YAAY,EATV;AAUL,OAAGC,cAAc;AAVZ,GAHuC;AAgB9CsB,EAAAA,KAAK,EAAE;AACL,yBAAsBC,GAAD,IAAkB;AADlC,GAhBuC;;AAoB9CC,EAAAA,KAAK,CAAEX,KAAF,QAAoB;AAAA,QAAX;AAAEY,MAAAA;AAAF,KAAW;AACvB3B,IAAAA,QAAQ,CAACe,KAAD,EAAQN,qBAAR,CAAR;AAEA,UAAM;AAAEmB,MAAAA;AAAF,QAAmBzB,YAAY,CAACY,KAAD,CAArC;AAEA,UAAMc,YAAY,GAAGxB,QAAQ,CAAC,MAAMU,KAAK,CAACG,OAAN,IAAkB,+BAA8BH,KAAK,CAACG,OAAQ,EAArE,CAA7B;AAEAd,IAAAA,eAAe,CAAC;AACd0B,MAAAA,eAAe,EAAE;AACfd,QAAAA,KAAK,EAAEV,KAAK,CAACS,KAAD,EAAQ,OAAR;AADG;AADH,KAAD,CAAf;AAMAP,IAAAA,SAAS,CAAC;AAAA,eAEC,CACL,oBADK,EAELoB,YAAY,CAACG,KAFR,EAGLF,YAAY,CAACE,KAHR;AAFD,OAOIJ,KAPJ,CAAD,CAAT;AAWA,WAAO,EAAP;AACD;;AA7C6C,CAAD,CAAxC","sourcesContent":["// Styles\nimport './VExpansionPanel.sass'\n\n// Composables\nimport { makeGroupProps, useGroup } from '@/composables/group'\nimport { makeTagProps } from '@/composables/tag'\nimport { makeThemeProps, provideTheme } from '@/composables/theme'\nimport { provideDefaults } from '@/composables/defaults'\n\n// Utilities\nimport { computed, toRef } from 'vue'\nimport { defineComponent, useRender } from '@/util'\n\n// Types\nimport type { InjectionKey, PropType } from 'vue'\nimport type { GroupItemProvide } from '@/composables/group'\n\nexport const VExpansionPanelSymbol: InjectionKey<GroupItemProvide> = Symbol.for('vuetify:v-expansion-panel')\n\nconst allowedVariants = ['default', 'accordion', 'inset', 'popout'] as const\n\ntype Variant = typeof allowedVariants[number]\n\nexport const VExpansionPanels = defineComponent({\n name: 'VExpansionPanels',\n\n props: {\n color: String,\n variant: {\n type: String as PropType<Variant>,\n default: 'default',\n validator: (v: any) => allowedVariants.includes(v),\n },\n\n ...makeGroupProps(),\n ...makeTagProps(),\n ...makeThemeProps(),\n },\n\n emits: {\n 'update:modelValue': (val: unknown) => true,\n },\n\n setup (props, { slots }) {\n useGroup(props, VExpansionPanelSymbol)\n\n const { themeClasses } = provideTheme(props)\n\n const variantClass = computed(() => props.variant && `v-expansion-panels--variant-${props.variant}`)\n\n provideDefaults({\n VExpansionPanel: {\n color: toRef(props, 'color'),\n },\n })\n\n useRender(() => (\n <props.tag\n class={[\n 'v-expansion-panels',\n themeClasses.value,\n variantClass.value,\n ]}\n v-slots={ slots }\n />\n ))\n\n return {}\n },\n})\n\nexport type VExpansionPanels = InstanceType<typeof VExpansionPanels>\n"],"file":"VExpansionPanels.mjs"}
1
+ {"version":3,"sources":["../../../src/components/VExpansionPanel/VExpansionPanels.tsx"],"names":["makeGroupProps","useGroup","makeTagProps","makeThemeProps","provideTheme","provideDefaults","computed","toRef","defineComponent","useRender","VExpansionPanelSymbol","Symbol","for","allowedVariants","VExpansionPanels","name","props","color","String","variant","type","default","validator","v","includes","readonly","Boolean","emits","val","setup","slots","themeClasses","variantClass","VExpansionPanel","VExpansionPanelTitle","value"],"mappings":";AAAA;AACA,+B,CAEA;;SACSA,c,EAAgBC,Q;SAChBC,Y;SACAC,c,EAAgBC,Y;SAChBC,e,0CAET;;AACA,SAASC,QAAT,EAAmBC,KAAnB,QAAgC,KAAhC;SACSC,e,EAAiBC,S,gCAE1B;;AAIA,OAAO,MAAMC,qBAAqD,GAAGC,MAAM,CAACC,GAAP,CAAW,2BAAX,CAA9D;AAEP,MAAMC,eAAe,GAAG,CAAC,SAAD,EAAY,WAAZ,EAAyB,OAAzB,EAAkC,QAAlC,CAAxB;AAIA,OAAO,MAAMC,gBAAgB,GAAGN,eAAe,CAAC;AAC9CO,EAAAA,IAAI,EAAE,kBADwC;AAG9CC,EAAAA,KAAK,EAAE;AACLC,IAAAA,KAAK,EAAEC,MADF;AAELC,IAAAA,OAAO,EAAE;AACPC,MAAAA,IAAI,EAAEF,MADC;AAEPG,MAAAA,OAAO,EAAE,SAFF;AAGPC,MAAAA,SAAS,EAAGC,CAAD,IAAYV,eAAe,CAACW,QAAhB,CAAyBD,CAAzB;AAHhB,KAFJ;AAOLE,IAAAA,QAAQ,EAAEC,OAPL;AASL,OAAG1B,cAAc,EATZ;AAUL,OAAGE,YAAY,EAVV;AAWL,OAAGC,cAAc;AAXZ,GAHuC;AAiB9CwB,EAAAA,KAAK,EAAE;AACL,yBAAsBC,GAAD,IAAkB;AADlC,GAjBuC;;AAqB9CC,EAAAA,KAAK,CAAEb,KAAF,QAAoB;AAAA,QAAX;AAAEc,MAAAA;AAAF,KAAW;AACvB7B,IAAAA,QAAQ,CAACe,KAAD,EAAQN,qBAAR,CAAR;AAEA,UAAM;AAAEqB,MAAAA;AAAF,QAAmB3B,YAAY,CAACY,KAAD,CAArC;AAEA,UAAMgB,YAAY,GAAG1B,QAAQ,CAAC,MAAMU,KAAK,CAACG,OAAN,IAAkB,+BAA8BH,KAAK,CAACG,OAAQ,EAArE,CAA7B;AAEAd,IAAAA,eAAe,CAAC;AACd4B,MAAAA,eAAe,EAAE;AACfhB,QAAAA,KAAK,EAAEV,KAAK,CAACS,KAAD,EAAQ,OAAR;AADG,OADH;AAIdkB,MAAAA,oBAAoB,EAAE;AACpBT,QAAAA,QAAQ,EAAElB,KAAK,CAACS,KAAD,EAAQ,UAAR;AADK;AAJR,KAAD,CAAf;AASAP,IAAAA,SAAS,CAAC;AAAA,eAEC,CACL,oBADK,EAELsB,YAAY,CAACI,KAFR,EAGLH,YAAY,CAACG,KAHR;AAFD,OAOIL,KAPJ,CAAD,CAAT;AAWA,WAAO,EAAP;AACD;;AAjD6C,CAAD,CAAxC","sourcesContent":["// Styles\nimport './VExpansionPanel.sass'\n\n// Composables\nimport { makeGroupProps, useGroup } from '@/composables/group'\nimport { makeTagProps } from '@/composables/tag'\nimport { makeThemeProps, provideTheme } from '@/composables/theme'\nimport { provideDefaults } from '@/composables/defaults'\n\n// Utilities\nimport { computed, toRef } from 'vue'\nimport { defineComponent, useRender } from '@/util'\n\n// Types\nimport type { InjectionKey, PropType } from 'vue'\nimport type { GroupItemProvide } from '@/composables/group'\n\nexport const VExpansionPanelSymbol: InjectionKey<GroupItemProvide> = Symbol.for('vuetify:v-expansion-panel')\n\nconst allowedVariants = ['default', 'accordion', 'inset', 'popout'] as const\n\ntype Variant = typeof allowedVariants[number]\n\nexport const VExpansionPanels = defineComponent({\n name: 'VExpansionPanels',\n\n props: {\n color: String,\n variant: {\n type: String as PropType<Variant>,\n default: 'default',\n validator: (v: any) => allowedVariants.includes(v),\n },\n readonly: Boolean,\n\n ...makeGroupProps(),\n ...makeTagProps(),\n ...makeThemeProps(),\n },\n\n emits: {\n 'update:modelValue': (val: unknown) => true,\n },\n\n setup (props, { slots }) {\n useGroup(props, VExpansionPanelSymbol)\n\n const { themeClasses } = provideTheme(props)\n\n const variantClass = computed(() => props.variant && `v-expansion-panels--variant-${props.variant}`)\n\n provideDefaults({\n VExpansionPanel: {\n color: toRef(props, 'color'),\n },\n VExpansionPanelTitle: {\n readonly: toRef(props, 'readonly'),\n },\n })\n\n useRender(() => (\n <props.tag\n class={[\n 'v-expansion-panels',\n themeClasses.value,\n variantClass.value,\n ]}\n v-slots={ slots }\n />\n ))\n\n return {}\n },\n})\n\nexport type VExpansionPanels = InstanceType<typeof VExpansionPanels>\n"],"file":"VExpansionPanels.mjs"}
@@ -2,7 +2,7 @@
2
2
  .v-field {
3
3
  display: grid;
4
4
  grid-template-areas: "prepend-inner field clear append-inner";
5
- grid-template-columns: min-content auto min-content min-content;
5
+ grid-template-columns: min-content minmax(0, 1fr) min-content min-content;
6
6
  font-size: 16px;
7
7
  letter-spacing: 0.009375em;
8
8
  max-width: 100%;
@@ -51,8 +51,6 @@ export const VField = genericComponent()({
51
51
  },
52
52
  emits: {
53
53
  'click:clear': e => true,
54
- 'click:prepend-inner': e => true,
55
- 'click:append-inner': e => true,
56
54
  'click:control': e => true,
57
55
  'update:focused': focused => true,
58
56
  'update:modelValue': val => true
@@ -167,6 +165,7 @@ export const VField = genericComponent()({
167
165
  'v-field--prepended': hasPrepend,
168
166
  'v-field--reverse': props.reverse,
169
167
  'v-field--single-line': props.singleLine,
168
+ 'v-field--has-label': !!label,
170
169
  [`v-field--variant-${props.variant}`]: true
171
170
  }, themeClasses.value, backgroundColorClasses.value, focusClasses.value, loaderClasses.value],
172
171
  "style": [backgroundColorStyles.value, textColorStyles.value],
@@ -182,7 +181,7 @@ export const VField = genericComponent()({
182
181
  }), hasPrepend && _createVNode("div", {
183
182
  "class": "v-field__prepend-inner"
184
183
  }, [props.prependInnerIcon && _createVNode(VIcon, {
185
- "onClick": e => emit('click:prepend-inner', e),
184
+ "onClick": attrs['onClick:prependInner'],
186
185
  "icon": props.prependInnerIcon
187
186
  }, null), slots == null ? void 0 : (_slots$prependInner = slots.prependInner) == null ? void 0 : _slots$prependInner.call(slots, slotProps.value)]), _createVNode("div", {
188
187
  "class": "v-field__field"
@@ -214,7 +213,7 @@ export const VField = genericComponent()({
214
213
  }), hasAppend && _createVNode("div", {
215
214
  "class": "v-field__append-inner"
216
215
  }, [slots == null ? void 0 : (_slots$appendInner = slots.appendInner) == null ? void 0 : _slots$appendInner.call(slots, slotProps.value), props.appendInnerIcon && _createVNode(VIcon, {
217
- "onClick": e => emit('click:append-inner', e),
216
+ "onClick": attrs['onClick:appendInner'],
218
217
  "icon": props.appendInnerIcon
219
218
  }, null)]), _createVNode("div", {
220
219
  "class": ['v-field__outline', textColorClasses.value]