vuetify 3.1.8 → 3.1.10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (107) hide show
  1. package/dist/json/attributes.json +7 -3
  2. package/dist/json/importMap.json +74 -74
  3. package/dist/json/tags.json +1 -0
  4. package/dist/json/web-types.json +51 -17
  5. package/dist/vuetify-labs.css +427 -407
  6. package/dist/vuetify-labs.d.ts +14 -7
  7. package/dist/vuetify-labs.esm.js +439 -237
  8. package/dist/vuetify-labs.esm.js.map +1 -1
  9. package/dist/vuetify-labs.js +439 -237
  10. package/dist/vuetify-labs.min.css +2 -2
  11. package/dist/vuetify.css +1055 -1038
  12. package/dist/vuetify.d.ts +28 -23
  13. package/dist/vuetify.esm.js +285 -180
  14. package/dist/vuetify.esm.js.map +1 -1
  15. package/dist/vuetify.js +285 -180
  16. package/dist/vuetify.js.map +1 -1
  17. package/dist/vuetify.min.css +2 -2
  18. package/dist/vuetify.min.js +301 -298
  19. package/dist/vuetify.min.js.map +1 -1
  20. package/lib/components/VAlert/VAlert.mjs +29 -15
  21. package/lib/components/VAlert/VAlert.mjs.map +1 -1
  22. package/lib/components/VAlert/index.d.ts +2 -0
  23. package/lib/components/VAutocomplete/VAutocomplete.mjs +11 -5
  24. package/lib/components/VAutocomplete/VAutocomplete.mjs.map +1 -1
  25. package/lib/components/VBanner/VBanner.mjs +19 -12
  26. package/lib/components/VBanner/VBanner.mjs.map +1 -1
  27. package/lib/components/VBreadcrumbs/VBreadcrumbs.mjs +11 -7
  28. package/lib/components/VBreadcrumbs/VBreadcrumbs.mjs.map +1 -1
  29. package/lib/components/VBtn/VBtn.mjs +25 -19
  30. package/lib/components/VBtn/VBtn.mjs.map +1 -1
  31. package/lib/components/VCard/VCard.mjs +10 -6
  32. package/lib/components/VCard/VCard.mjs.map +1 -1
  33. package/lib/components/VCard/VCardItem.mjs +27 -23
  34. package/lib/components/VCard/VCardItem.mjs.map +1 -1
  35. package/lib/components/VChip/VChip.css +110 -90
  36. package/lib/components/VChip/VChip.mjs +70 -48
  37. package/lib/components/VChip/VChip.mjs.map +1 -1
  38. package/lib/components/VChip/_mixins.scss +27 -23
  39. package/lib/components/VChip/index.d.ts +2 -2
  40. package/lib/components/VCombobox/VCombobox.mjs +11 -5
  41. package/lib/components/VCombobox/VCombobox.mjs.map +1 -1
  42. package/lib/components/VDefaultsProvider/VDefaultsProvider.mjs +4 -1
  43. package/lib/components/VDefaultsProvider/VDefaultsProvider.mjs.map +1 -1
  44. package/lib/components/VDefaultsProvider/index.d.ts +3 -0
  45. package/lib/components/VFooter/VFooter.css +2 -0
  46. package/lib/components/VFooter/VFooter.sass +2 -0
  47. package/lib/components/VFooter/_variables.scss +2 -0
  48. package/lib/components/VImg/VImg.mjs +2 -2
  49. package/lib/components/VImg/VImg.mjs.map +1 -1
  50. package/lib/components/VList/VListItem.mjs +23 -19
  51. package/lib/components/VList/VListItem.mjs.map +1 -1
  52. package/lib/components/VSelect/VSelect.mjs +11 -5
  53. package/lib/components/VSelect/VSelect.mjs.map +1 -1
  54. package/lib/components/VSlider/VSliderTrack.mjs +1 -0
  55. package/lib/components/VSlider/VSliderTrack.mjs.map +1 -1
  56. package/lib/components/VSlider/slider.mjs +3 -1
  57. package/lib/components/VSlider/slider.mjs.map +1 -1
  58. package/lib/components/VSnackbar/VSnackbar.css +2 -7
  59. package/lib/components/VSnackbar/VSnackbar.mjs +2 -1
  60. package/lib/components/VSnackbar/VSnackbar.mjs.map +1 -1
  61. package/lib/components/VSnackbar/VSnackbar.sass +3 -8
  62. package/lib/components/VTimeline/VTimelineDivider.mjs +18 -10
  63. package/lib/components/VTimeline/VTimelineDivider.mjs.map +1 -1
  64. package/lib/components/VToolbar/VToolbar.mjs +9 -5
  65. package/lib/components/VToolbar/VToolbar.mjs.map +1 -1
  66. package/lib/components/index.d.ts +7 -2
  67. package/lib/composables/defaults.mjs +2 -0
  68. package/lib/composables/defaults.mjs.map +1 -1
  69. package/lib/entry-bundler.mjs +1 -1
  70. package/lib/entry-bundler.mjs.map +1 -1
  71. package/lib/framework.mjs +1 -1
  72. package/lib/framework.mjs.map +1 -1
  73. package/lib/index.d.ts +21 -21
  74. package/lib/labs/VDataTable/VDataTable.css +3 -0
  75. package/lib/labs/VDataTable/VDataTable.mjs +41 -17
  76. package/lib/labs/VDataTable/VDataTable.mjs.map +1 -1
  77. package/lib/labs/VDataTable/VDataTable.sass +3 -0
  78. package/lib/labs/VDataTable/VDataTableFooter.mjs +3 -2
  79. package/lib/labs/VDataTable/VDataTableFooter.mjs.map +1 -1
  80. package/lib/labs/VDataTable/VDataTableRow.mjs +6 -2
  81. package/lib/labs/VDataTable/VDataTableRow.mjs.map +1 -1
  82. package/lib/labs/VDataTable/VDataTableRows.mjs +1 -1
  83. package/lib/labs/VDataTable/VDataTableRows.mjs.map +1 -1
  84. package/lib/labs/VDataTable/VDataTableServer.mjs +39 -17
  85. package/lib/labs/VDataTable/VDataTableServer.mjs.map +1 -1
  86. package/lib/labs/VDataTable/VDataTableVirtual.mjs +23 -12
  87. package/lib/labs/VDataTable/VDataTableVirtual.mjs.map +1 -1
  88. package/lib/labs/VDataTable/composables/expand.mjs +1 -1
  89. package/lib/labs/VDataTable/composables/expand.mjs.map +1 -1
  90. package/lib/labs/VDataTable/composables/group.mjs +12 -1
  91. package/lib/labs/VDataTable/composables/group.mjs.map +1 -1
  92. package/lib/labs/VDataTable/composables/options.mjs +0 -12
  93. package/lib/labs/VDataTable/composables/options.mjs.map +1 -1
  94. package/lib/labs/VDataTable/composables/paginate.mjs +25 -4
  95. package/lib/labs/VDataTable/composables/paginate.mjs.map +1 -1
  96. package/lib/labs/VDataTable/composables/select.mjs +1 -1
  97. package/lib/labs/VDataTable/composables/select.mjs.map +1 -1
  98. package/lib/labs/VDataTable/composables/sort.mjs +19 -3
  99. package/lib/labs/VDataTable/composables/sort.mjs.map +1 -1
  100. package/lib/labs/VDataTable/index.d.ts +7 -5
  101. package/lib/labs/components.d.ts +7 -5
  102. package/lib/locale/adapters/vue-i18n.d.ts +1 -1
  103. package/lib/locale/adapters/vue-i18n.mjs +1 -1
  104. package/lib/locale/adapters/vue-i18n.mjs.map +1 -1
  105. package/lib/util/defineComponent.mjs +3 -2
  106. package/lib/util/defineComponent.mjs.map +1 -1
  107. package/package.json +5 -11
@@ -1,4 +1,4 @@
1
- import { createVNode as _createVNode } from "vue";
1
+ import { mergeProps as _mergeProps, resolveDirective as _resolveDirective, createVNode as _createVNode } from "vue";
2
2
  // Styles
3
3
  import "./VAlert.css";
4
4
 
@@ -70,10 +70,12 @@ export const VAlert = genericComponent()({
70
70
  })
71
71
  },
72
72
  emits: {
73
+ 'click:close': e => true,
73
74
  'update:modelValue': value => true
74
75
  },
75
76
  setup(props, _ref) {
76
77
  let {
78
+ emit,
77
79
  slots
78
80
  } = _ref;
79
81
  const isActive = useProxiedModel(props, 'modelValue');
@@ -123,6 +125,7 @@ export const VAlert = genericComponent()({
123
125
  'aria-label': t(props.closeLabel),
124
126
  onClick(e) {
125
127
  isActive.value = false;
128
+ emit('click:close', e);
126
129
  }
127
130
  }));
128
131
  return () => {
@@ -144,8 +147,17 @@ export const VAlert = genericComponent()({
144
147
  "key": "border",
145
148
  "class": ['v-alert__border', textColorClasses.value],
146
149
  "style": textColorStyles.value
147
- }, null), hasPrepend && _createVNode(VDefaultsProvider, {
150
+ }, null), hasPrepend && _createVNode("div", {
148
151
  "key": "prepend",
152
+ "class": "v-alert__prepend"
153
+ }, [!slots.prepend ? _createVNode(VIcon, {
154
+ "key": "prepend-icon",
155
+ "density": props.density,
156
+ "icon": icon.value,
157
+ "size": props.prominent ? 44 : 28
158
+ }, null) : _createVNode(VDefaultsProvider, {
159
+ "key": "prepend-defaults",
160
+ "disabled": !icon.value,
149
161
  "defaults": {
150
162
  VIcon: {
151
163
  density: props.density,
@@ -153,21 +165,25 @@ export const VAlert = genericComponent()({
153
165
  size: props.prominent ? 44 : 28
154
166
  }
155
167
  }
156
- }, {
157
- default: () => [_createVNode("div", {
158
- "class": "v-alert__prepend"
159
- }, [slots.prepend ? slots.prepend() : icon.value && _createVNode(VIcon, null, null)])]
160
- }), _createVNode("div", {
168
+ }, slots.prepend)]), _createVNode("div", {
161
169
  "class": "v-alert__content"
162
170
  }, [hasTitle && _createVNode(VAlertTitle, {
163
171
  "key": "title"
164
172
  }, {
165
- default: () => [slots.title ? slots.title() : props.title]
166
- }), hasText && (slots.text ? slots.text() : props.text), slots.default?.()]), slots.append && _createVNode("div", {
173
+ default: () => [slots.title?.() ?? props.title]
174
+ }), hasText && (slots.text?.() ?? props.text), slots.default?.()]), slots.append && _createVNode("div", {
167
175
  "key": "append",
168
176
  "class": "v-alert__append"
169
- }, [slots.append()]), hasClose && _createVNode(VDefaultsProvider, {
177
+ }, [slots.append()]), hasClose && _createVNode("div", {
170
178
  "key": "close",
179
+ "class": "v-alert__close"
180
+ }, [!slots.close ? _createVNode(VBtn, _mergeProps({
181
+ "key": "close-btn",
182
+ "icon": props.closeIcon,
183
+ "size": "x-small",
184
+ "variant": "text"
185
+ }, closeProps.value), null) : _createVNode(VDefaultsProvider, {
186
+ "key": "close-defaults",
171
187
  "defaults": {
172
188
  VBtn: {
173
189
  icon: props.closeIcon,
@@ -176,12 +192,10 @@ export const VAlert = genericComponent()({
176
192
  }
177
193
  }
178
194
  }, {
179
- default: () => [_createVNode("div", {
180
- "class": "v-alert__close"
181
- }, [slots.close?.({
195
+ default: () => [slots.close?.({
182
196
  props: closeProps.value
183
- }) ?? _createVNode(VBtn, closeProps.value, null)])]
184
- })]
197
+ })]
198
+ })])]
185
199
  });
186
200
  };
187
201
  }
@@ -1 +1 @@
1
- {"version":3,"file":"VAlert.mjs","names":["VAlertTitle","VBtn","VDefaultsProvider","VIcon","genOverlays","makeVariantProps","useVariant","makeDensityProps","useDensity","makeDimensionProps","useDimension","makeElevationProps","useElevation","makeLocationProps","useLocation","makePositionProps","usePosition","makeRoundedProps","useRounded","makeTagProps","makeThemeProps","provideTheme","useLocale","useProxiedModel","useTextColor","IconValue","computed","toRef","genericComponent","allowedTypes","VAlert","name","props","border","type","Boolean","String","validator","val","includes","borderColor","closable","closeIcon","default","closeLabel","icon","Function","Object","modelValue","prominent","title","text","variant","emits","value","setup","slots","isActive","undefined","variantProps","color","themeClasses","colorClasses","colorStyles","variantClasses","densityClasses","dimensionStyles","elevationClasses","locationStyles","positionClasses","roundedClasses","textColorClasses","textColorStyles","t","closeProps","onClick","e","hasPrepend","prepend","hasTitle","hasText","hasClose","close","density","size","append"],"sources":["../../../src/components/VAlert/VAlert.tsx"],"sourcesContent":["// Styles\nimport './VAlert.sass'\n\n// Components\nimport { VAlertTitle } from './VAlertTitle'\nimport { VBtn } from '@/components/VBtn'\nimport { VDefaultsProvider } from '@/components/VDefaultsProvider'\nimport { VIcon } from '@/components/VIcon'\n\n// Composables\nimport { genOverlays, makeVariantProps, useVariant } from '@/composables/variant'\nimport { makeDensityProps, useDensity } from '@/composables/density'\nimport { makeDimensionProps, useDimension } from '@/composables/dimensions'\nimport { makeElevationProps, useElevation } from '@/composables/elevation'\nimport { makeLocationProps, useLocation } from '@/composables/location'\nimport { makePositionProps, usePosition } from '@/composables/position'\nimport { makeRoundedProps, useRounded } from '@/composables/rounded'\nimport { makeTagProps } from '@/composables/tag'\nimport { makeThemeProps, provideTheme } from '@/composables/theme'\nimport { useLocale } from '@/composables/locale'\nimport { useProxiedModel } from '@/composables/proxiedModel'\nimport { useTextColor } from '@/composables/color'\nimport { IconValue } from '@/composables/icons'\n\n// Utilities\nimport { computed, toRef } from 'vue'\nimport { genericComponent } from '@/util'\n\n// Types\nimport type { PropType } from 'vue'\nimport type { MakeSlots } from '@/util'\n\nconst allowedTypes = ['success', 'info', 'warning', 'error'] as const\n\ntype ContextualType = typeof allowedTypes[number]\n\nexport type VAlertSlots = MakeSlots<{\n default: []\n prepend: []\n title: []\n text: []\n append: []\n close: []\n}>\n\nexport const VAlert = genericComponent<VAlertSlots>()({\n name: 'VAlert',\n\n props: {\n border: {\n type: [Boolean, String] as PropType<boolean | 'top' | 'end' | 'bottom' | 'start'>,\n validator: (val: boolean | string) => {\n return typeof val === 'boolean' || [\n 'top',\n 'end',\n 'bottom',\n 'start',\n ].includes(val)\n },\n },\n borderColor: String,\n closable: Boolean,\n closeIcon: {\n type: IconValue,\n default: '$close',\n },\n closeLabel: {\n type: String,\n default: '$vuetify.close',\n },\n icon: {\n type: [Boolean, String, Function, Object] as PropType<false | IconValue>,\n default: null,\n },\n modelValue: {\n type: Boolean,\n default: true,\n },\n prominent: Boolean,\n title: String,\n text: String,\n type: {\n type: String as PropType<ContextualType>,\n validator: (val: ContextualType) => allowedTypes.includes(val),\n },\n\n ...makeDensityProps(),\n ...makeDimensionProps(),\n ...makeElevationProps(),\n ...makeLocationProps(),\n ...makePositionProps(),\n ...makeRoundedProps(),\n ...makeTagProps(),\n ...makeThemeProps(),\n ...makeVariantProps({ variant: 'flat' } as const),\n },\n\n emits: {\n 'update:modelValue': (value: boolean) => true,\n },\n\n setup (props, { slots }) {\n const isActive = useProxiedModel(props, 'modelValue')\n const icon = computed(() => {\n if (props.icon === false) return undefined\n if (!props.type) return props.icon\n\n return props.icon ?? `$${props.type}`\n })\n const variantProps = computed(() => ({\n color: props.color ?? props.type,\n variant: props.variant,\n }))\n\n const { themeClasses } = provideTheme(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 { locationStyles } = useLocation(props)\n const { positionClasses } = usePosition(props)\n const { roundedClasses } = useRounded(props)\n const { textColorClasses, textColorStyles } = useTextColor(toRef(props, 'borderColor'))\n const { t } = useLocale()\n\n const closeProps = computed(() => ({\n 'aria-label': t(props.closeLabel),\n onClick (e: MouseEvent) {\n isActive.value = false\n },\n }))\n\n return () => {\n const hasPrepend = !!(slots.prepend || icon.value)\n const hasTitle = !!(slots.title || props.title)\n const hasText = !!(props.text || slots.text)\n const hasClose = !!(slots.close || props.closable)\n\n return isActive.value && (\n <props.tag\n class={[\n 'v-alert',\n props.border && {\n 'v-alert--border': !!props.border,\n [`v-alert--border-${props.border === true ? 'start' : props.border}`]: true,\n },\n {\n 'v-alert--prominent': props.prominent,\n },\n themeClasses.value,\n colorClasses.value,\n densityClasses.value,\n elevationClasses.value,\n positionClasses.value,\n roundedClasses.value,\n variantClasses.value,\n ]}\n style={[\n colorStyles.value,\n dimensionStyles.value,\n locationStyles.value,\n ]}\n role=\"alert\"\n >\n { genOverlays(false, 'v-alert') }\n\n { props.border && (\n <div\n key=\"border\"\n class={[\n 'v-alert__border',\n textColorClasses.value,\n ]}\n style={ textColorStyles.value }\n />\n )}\n\n { hasPrepend && (\n <VDefaultsProvider\n key=\"prepend\"\n defaults={{\n VIcon: {\n density: props.density,\n icon: icon.value,\n size: props.prominent ? 44 : 28,\n },\n }}\n >\n <div class=\"v-alert__prepend\">\n { slots.prepend\n ? slots.prepend()\n : icon.value && (<VIcon />)\n }\n </div>\n </VDefaultsProvider>\n )}\n\n <div class=\"v-alert__content\">\n { hasTitle && (\n <VAlertTitle key=\"title\">\n { slots.title ? slots.title() : props.title }\n </VAlertTitle>\n )}\n\n { hasText && (\n slots.text ? slots.text() : props.text\n )}\n\n { slots.default?.() }\n </div>\n\n { slots.append && (\n <div key=\"append\" class=\"v-alert__append\">\n { slots.append() }\n </div>\n )}\n\n { hasClose && (\n <VDefaultsProvider\n key=\"close\"\n defaults={{\n VBtn: {\n icon: props.closeIcon,\n size: 'x-small',\n variant: 'text',\n },\n }}\n >\n <div class=\"v-alert__close\">\n { slots.close?.({ props: closeProps.value }) ?? <VBtn { ...closeProps.value } /> }\n </div>\n </VDefaultsProvider>\n )}\n </props.tag>\n )\n }\n },\n})\n\nexport type VAlert = InstanceType<typeof VAlert>\n"],"mappings":"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"}
1
+ {"version":3,"file":"VAlert.mjs","names":["VAlertTitle","VBtn","VDefaultsProvider","VIcon","genOverlays","makeVariantProps","useVariant","makeDensityProps","useDensity","makeDimensionProps","useDimension","makeElevationProps","useElevation","makeLocationProps","useLocation","makePositionProps","usePosition","makeRoundedProps","useRounded","makeTagProps","makeThemeProps","provideTheme","useLocale","useProxiedModel","useTextColor","IconValue","computed","toRef","genericComponent","allowedTypes","VAlert","name","props","border","type","Boolean","String","validator","val","includes","borderColor","closable","closeIcon","default","closeLabel","icon","Function","Object","modelValue","prominent","title","text","variant","emits","e","value","setup","emit","slots","isActive","undefined","variantProps","color","themeClasses","colorClasses","colorStyles","variantClasses","densityClasses","dimensionStyles","elevationClasses","locationStyles","positionClasses","roundedClasses","textColorClasses","textColorStyles","t","closeProps","onClick","hasPrepend","prepend","hasTitle","hasText","hasClose","close","density","size","append"],"sources":["../../../src/components/VAlert/VAlert.tsx"],"sourcesContent":["// Styles\nimport './VAlert.sass'\n\n// Components\nimport { VAlertTitle } from './VAlertTitle'\nimport { VBtn } from '@/components/VBtn'\nimport { VDefaultsProvider } from '@/components/VDefaultsProvider'\nimport { VIcon } from '@/components/VIcon'\n\n// Composables\nimport { genOverlays, makeVariantProps, useVariant } from '@/composables/variant'\nimport { makeDensityProps, useDensity } from '@/composables/density'\nimport { makeDimensionProps, useDimension } from '@/composables/dimensions'\nimport { makeElevationProps, useElevation } from '@/composables/elevation'\nimport { makeLocationProps, useLocation } from '@/composables/location'\nimport { makePositionProps, usePosition } from '@/composables/position'\nimport { makeRoundedProps, useRounded } from '@/composables/rounded'\nimport { makeTagProps } from '@/composables/tag'\nimport { makeThemeProps, provideTheme } from '@/composables/theme'\nimport { useLocale } from '@/composables/locale'\nimport { useProxiedModel } from '@/composables/proxiedModel'\nimport { useTextColor } from '@/composables/color'\nimport { IconValue } from '@/composables/icons'\n\n// Utilities\nimport { computed, toRef } from 'vue'\nimport { genericComponent } from '@/util'\n\n// Types\nimport type { PropType } from 'vue'\nimport type { MakeSlots } from '@/util'\n\nconst allowedTypes = ['success', 'info', 'warning', 'error'] as const\n\ntype ContextualType = typeof allowedTypes[number]\n\nexport type VAlertSlots = MakeSlots<{\n default: []\n prepend: []\n title: []\n text: []\n append: []\n close: []\n}>\n\nexport const VAlert = genericComponent<VAlertSlots>()({\n name: 'VAlert',\n\n props: {\n border: {\n type: [Boolean, String] as PropType<boolean | 'top' | 'end' | 'bottom' | 'start'>,\n validator: (val: boolean | string) => {\n return typeof val === 'boolean' || [\n 'top',\n 'end',\n 'bottom',\n 'start',\n ].includes(val)\n },\n },\n borderColor: String,\n closable: Boolean,\n closeIcon: {\n type: IconValue,\n default: '$close',\n },\n closeLabel: {\n type: String,\n default: '$vuetify.close',\n },\n icon: {\n type: [Boolean, String, Function, Object] as PropType<false | IconValue>,\n default: null,\n },\n modelValue: {\n type: Boolean,\n default: true,\n },\n prominent: Boolean,\n title: String,\n text: String,\n type: {\n type: String as PropType<ContextualType>,\n validator: (val: ContextualType) => allowedTypes.includes(val),\n },\n\n ...makeDensityProps(),\n ...makeDimensionProps(),\n ...makeElevationProps(),\n ...makeLocationProps(),\n ...makePositionProps(),\n ...makeRoundedProps(),\n ...makeTagProps(),\n ...makeThemeProps(),\n ...makeVariantProps({ variant: 'flat' } as const),\n },\n\n emits: {\n 'click:close': (e: MouseEvent) => true,\n 'update:modelValue': (value: boolean) => true,\n },\n\n setup (props, { emit, slots }) {\n const isActive = useProxiedModel(props, 'modelValue')\n const icon = computed(() => {\n if (props.icon === false) return undefined\n if (!props.type) return props.icon\n\n return props.icon ?? `$${props.type}`\n })\n const variantProps = computed(() => ({\n color: props.color ?? props.type,\n variant: props.variant,\n }))\n\n const { themeClasses } = provideTheme(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 { locationStyles } = useLocation(props)\n const { positionClasses } = usePosition(props)\n const { roundedClasses } = useRounded(props)\n const { textColorClasses, textColorStyles } = useTextColor(toRef(props, 'borderColor'))\n const { t } = useLocale()\n\n const closeProps = computed(() => ({\n 'aria-label': t(props.closeLabel),\n onClick (e: MouseEvent) {\n isActive.value = false\n\n emit('click:close', e)\n },\n }))\n\n return () => {\n const hasPrepend = !!(slots.prepend || icon.value)\n const hasTitle = !!(slots.title || props.title)\n const hasText = !!(props.text || slots.text)\n const hasClose = !!(slots.close || props.closable)\n\n return isActive.value && (\n <props.tag\n class={[\n 'v-alert',\n props.border && {\n 'v-alert--border': !!props.border,\n [`v-alert--border-${props.border === true ? 'start' : props.border}`]: true,\n },\n {\n 'v-alert--prominent': props.prominent,\n },\n themeClasses.value,\n colorClasses.value,\n densityClasses.value,\n elevationClasses.value,\n positionClasses.value,\n roundedClasses.value,\n variantClasses.value,\n ]}\n style={[\n colorStyles.value,\n dimensionStyles.value,\n locationStyles.value,\n ]}\n role=\"alert\"\n >\n { genOverlays(false, 'v-alert') }\n\n { props.border && (\n <div\n key=\"border\"\n class={[\n 'v-alert__border',\n textColorClasses.value,\n ]}\n style={ textColorStyles.value }\n />\n )}\n\n { hasPrepend && (\n <div key=\"prepend\" class=\"v-alert__prepend\">\n { !slots.prepend ? (\n <VIcon\n key=\"prepend-icon\"\n density={ props.density }\n icon={ icon.value }\n size={ props.prominent ? 44 : 28 }\n />\n ) : (\n <VDefaultsProvider\n key=\"prepend-defaults\"\n disabled={ !icon.value }\n defaults={{\n VIcon: {\n density: props.density,\n icon: icon.value,\n size: props.prominent ? 44 : 28,\n },\n }}\n v-slots:default={ slots.prepend }\n />\n )}\n </div>\n )}\n\n <div class=\"v-alert__content\">\n { hasTitle && (\n <VAlertTitle key=\"title\">\n { slots.title?.() ?? props.title }\n </VAlertTitle>\n )}\n\n { hasText && (slots.text?.() ?? props.text) }\n\n { slots.default?.() }\n </div>\n\n { slots.append && (\n <div key=\"append\" class=\"v-alert__append\">\n { slots.append() }\n </div>\n )}\n\n { hasClose && (\n <div key=\"close\" class=\"v-alert__close\">\n { !slots.close ? (\n <VBtn\n key=\"close-btn\"\n icon={ props.closeIcon }\n size=\"x-small\"\n variant=\"text\"\n { ...closeProps.value }\n />\n ) : (\n <VDefaultsProvider\n key=\"close-defaults\"\n defaults={{\n VBtn: {\n icon: props.closeIcon,\n size: 'x-small',\n variant: 'text',\n },\n }}\n >\n { slots.close?.({ props: closeProps.value }) }\n </VDefaultsProvider>\n )}\n </div>\n )}\n </props.tag>\n )\n }\n },\n})\n\nexport type VAlert = InstanceType<typeof VAlert>\n"],"mappings":"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"}
@@ -73,6 +73,7 @@ declare const VAlert: vue.DefineComponent<{
73
73
  "v-slot:append"?: false | (() => vue.VNodeChild) | undefined;
74
74
  "v-slot:close"?: false | (() => vue.VNodeChild) | undefined;
75
75
  }, () => false | JSX.Element, unknown, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, {
76
+ 'click:close': (e: MouseEvent) => true;
76
77
  'update:modelValue': (value: boolean) => true;
77
78
  }, string, vue.VNodeProps & vue.AllowedComponentProps & vue.ComponentCustomProps, {
78
79
  tag: string;
@@ -136,6 +137,7 @@ declare const VAlert: vue.DefineComponent<{
136
137
  "v-slot:close"?: false | (() => vue.VNodeChild) | undefined;
137
138
  } & {
138
139
  "onUpdate:modelValue"?: ((value: boolean) => any) | undefined;
140
+ "onClick:close"?: ((e: MouseEvent) => any) | undefined;
139
141
  }, {
140
142
  tag: string;
141
143
  icon: false | IconValue;
@@ -274,7 +274,13 @@ export const VAutocomplete = genericComponent()({
274
274
  return _createVNode("div", {
275
275
  "key": item.value,
276
276
  "class": "v-autocomplete__selection"
277
- }, [hasChips ? _createVNode(VDefaultsProvider, {
277
+ }, [hasChips ? !slots.chip ? _createVNode(VChip, _mergeProps({
278
+ "key": "chip",
279
+ "closable": props.closableChips,
280
+ "size": "small",
281
+ "text": item.title
282
+ }, slotProps), null) : _createVNode(VDefaultsProvider, {
283
+ "key": "chip-defaults",
278
284
  "defaults": {
279
285
  VChip: {
280
286
  closable: props.closableChips,
@@ -283,15 +289,15 @@ export const VAutocomplete = genericComponent()({
283
289
  }
284
290
  }
285
291
  }, {
286
- default: () => [slots.chip ? slots.chip({
292
+ default: () => [slots.chip?.({
287
293
  item,
288
294
  index,
289
295
  props: slotProps
290
- }) : _createVNode(VChip, slotProps, null)]
291
- }) : slots.selection ? slots.selection({
296
+ })]
297
+ }) : slots.selection?.({
292
298
  item,
293
299
  index
294
- }) : _createVNode("span", {
300
+ }) ?? _createVNode("span", {
295
301
  "class": "v-autocomplete__selection-text"
296
302
  }, [item.title, props.multiple && index < selections.value.length - 1 && _createVNode("span", {
297
303
  "class": "v-autocomplete__selection-comma"
@@ -1 +1 @@
1
- {"version":3,"file":"VAutocomplete.mjs","names":["makeSelectProps","VCheckboxBtn","VChip","VDefaultsProvider","VList","VListItem","VMenu","VTextField","forwardRefs","makeFilterProps","useFilter","makeTransitionProps","useForm","useItems","useLocale","useProxiedModel","computed","mergeProps","nextTick","ref","watch","genericComponent","omit","useRender","wrapInArray","filterVTextFieldProps","makeVTextFieldProps","highlightResult","text","matches","length","Array","isArray","Error","substr","VAutocomplete","name","props","search","String","filterKeys","modelValue","transition","emits","val","setup","slots","t","vTextFieldRef","isFocused","isPristine","vMenuRef","_menu","menu","get","value","set","v","ΨopenChildren","items","transformIn","transformOut","model","transformed","multiple","form","filteredItems","getMatches","undefined","selections","map","find","item","valueComparator","displayItems","hideSelected","filter","filteredItem","some","s","selected","selection","listRef","onClear","e","openOnClear","onMousedownControl","hideNoData","readonly","isReadonly","onKeydown","includes","key","preventDefault","focus","onInput","target","onAfterLeave","onFocusin","onFocusout","relatedTarget","isSelecting","select","index","findIndex","splice","title","at","hasChips","chips","chip","hasList","prepend","append","textFieldProps","externalValue","menuIcon","default","eager","menuProps","noDataText","onClick","isSelected","onChipClose","stopPropagation","slotProps","closable","closableChips","size"],"sources":["../../../src/components/VAutocomplete/VAutocomplete.tsx"],"sourcesContent":["// Styles\nimport './VAutocomplete.sass'\n\n// Components\nimport { makeSelectProps } from '@/components/VSelect/VSelect'\nimport { VCheckboxBtn } from '@/components/VCheckbox'\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 { forwardRefs } from '@/composables/forwardRefs'\nimport { makeFilterProps, useFilter } from '@/composables/filter'\nimport { makeTransitionProps } from '@/composables/transition'\nimport { useForm } from '@/composables/form'\nimport { useItems } from '@/composables/items'\nimport { useLocale } from '@/composables/locale'\nimport { useProxiedModel } from '@/composables/proxiedModel'\n\n// Utility\nimport { computed, mergeProps, nextTick, ref, watch } from 'vue'\nimport { genericComponent, omit, useRender, wrapInArray } from '@/util'\nimport { filterVTextFieldProps, makeVTextFieldProps } from '../VTextField/VTextField'\n\n// Types\nimport type { FilterMatch } from '@/composables/filter'\nimport type { InternalItem } from '@/composables/items'\nimport type { MakeSlots, SlotsToProps } from '@/util'\nimport type { VFieldSlots } from '@/components/VField/VField'\nimport type { VInputSlots } from '@/components/VInput/VInput'\n\nfunction highlightResult (text: string, matches: FilterMatch | undefined, length: number) {\n if (matches == null) return text\n\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-autocomplete__unmask\">{ text.substr(0, matches) }</span>\n <span class=\"v-autocomplete__mask\">{ text.substr(matches, length) }</span>\n <span class=\"v-autocomplete__unmask\">{ text.substr(matches + length) }</span>\n </>\n )\n : text\n}\n\ntype Primitive = string | number | boolean | symbol\n\ntype Val <T, ReturnObject extends boolean> = T extends Primitive\n ? T\n : (ReturnObject extends true ? T : any)\n\ntype Value <T, ReturnObject extends boolean, Multiple extends boolean> =\n Multiple extends true\n ? readonly Val<T, ReturnObject>[]\n : Val<T, ReturnObject>\n\nexport const VAutocomplete = genericComponent<new <\n T,\n ReturnObject extends boolean = false,\n Multiple extends boolean = false,\n V extends Value<T, ReturnObject, Multiple> = Value<T, ReturnObject, Multiple>\n>() => {\n $props: {\n items?: readonly T[]\n returnObject?: ReturnObject\n multiple?: Multiple\n modelValue?: V\n 'onUpdate:modelValue'?: (val: V) => void\n } & SlotsToProps<\n Omit<VInputSlots & VFieldSlots, 'default'> & MakeSlots<{\n item: [{ item: InternalItem<T>, index: number, props: Record<string, unknown> }]\n chip: [{ item: InternalItem<T>, index: number, props: Record<string, unknown> }]\n selection: [{ item: InternalItem<T>, index: number }]\n 'prepend-item': []\n 'append-item': []\n 'no-data': []\n }>\n >\n}>()({\n name: 'VAutocomplete',\n\n props: {\n // TODO: implement post keyboard support\n // autoSelectFirst: Boolean,\n search: String,\n\n ...makeFilterProps({ filterKeys: ['title'] }),\n ...makeSelectProps(),\n ...omit(makeVTextFieldProps({\n modelValue: null,\n }), ['validationValue', 'dirty', 'appendInnerIcon']),\n ...makeTransitionProps({ transition: false }),\n },\n\n emits: {\n 'update:search': (val: any) => true,\n 'update:modelValue': (val: any) => true,\n 'update:menu': (val: boolean) => true,\n },\n\n setup (props, { slots }) {\n const { t } = useLocale()\n const vTextFieldRef = ref()\n const isFocused = ref(false)\n const isPristine = ref(true)\n const vMenuRef = ref<VMenu>()\n const _menu = useProxiedModel(props, 'menu')\n const menu = computed({\n get: () => _menu.value,\n set: v => {\n if (_menu.value && !v && vMenuRef.value?.ΨopenChildren) return\n _menu.value = v\n },\n })\n const { items, transformIn, transformOut } = useItems(props)\n const search = useProxiedModel(props, 'search', '')\n const model = useProxiedModel(\n props,\n 'modelValue',\n [],\n v => transformIn(wrapInArray(v)),\n v => {\n const transformed = transformOut(v)\n return props.multiple ? transformed : (transformed[0] ?? null)\n }\n )\n const form = useForm()\n const { filteredItems, getMatches } = useFilter(props, items, computed(() => isPristine.value ? undefined : search.value))\n const selections = computed(() => {\n return model.value.map(v => {\n return items.value.find(item => props.valueComparator(item.value, v.value)) || v\n })\n })\n\n const displayItems = computed(() => {\n if (props.hideSelected) {\n return filteredItems.value.filter(filteredItem => !selections.value.some(s => s.value === filteredItem.value))\n }\n return filteredItems.value\n })\n\n const selected = computed(() => selections.value.map(selection => selection.props.value))\n const listRef = ref<VList>()\n\n function onClear (e: MouseEvent) {\n if (props.openOnClear) {\n menu.value = true\n }\n\n search.value = ''\n }\n function onMousedownControl () {\n if (\n (props.hideNoData && !items.value.length) ||\n props.readonly || form?.isReadonly.value\n ) return\n\n menu.value = true\n }\n function onKeydown (e: KeyboardEvent) {\n if (props.readonly || form?.isReadonly.value) return\n\n if (['Enter', 'ArrowDown', 'ArrowUp'].includes(e.key)) {\n e.preventDefault()\n }\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 (e.key === 'ArrowDown') {\n listRef.value?.focus('next')\n } else if (e.key === 'ArrowUp') {\n listRef.value?.focus('prev')\n }\n }\n\n function onInput (e: InputEvent) {\n search.value = (e.target as HTMLInputElement).value\n }\n\n function onAfterLeave () {\n if (isFocused.value) isPristine.value = true\n }\n\n function onFocusin (e: FocusEvent) {\n isFocused.value = true\n }\n\n function onFocusout (e: FocusEvent) {\n if (e.relatedTarget == null) {\n vTextFieldRef.value?.focus()\n }\n }\n\n const isSelecting = ref(false)\n\n function select (item: InternalItem) {\n if (props.multiple) {\n const index = selected.value.findIndex(selection => props.valueComparator(selection, item.value))\n\n if (index === -1) {\n model.value = [...model.value, item]\n search.value = ''\n } else {\n const value = [...model.value]\n value.splice(index, 1)\n model.value = value\n }\n } else {\n model.value = [item]\n\n isSelecting.value = true\n\n if (!slots.selection) {\n search.value = item.title\n }\n\n menu.value = false\n isPristine.value = true\n\n nextTick(() => (isSelecting.value = false))\n }\n }\n\n watch(isFocused, val => {\n if (val) {\n isSelecting.value = true\n search.value = props.multiple || !!slots.selection ? '' : String(selections.value.at(-1)?.props.title ?? '')\n isPristine.value = true\n\n nextTick(() => isSelecting.value = false)\n } else {\n menu.value = false\n search.value = ''\n }\n })\n\n watch(search, val => {\n if (!isFocused.value || isSelecting.value) return\n\n if (val) menu.value = true\n\n isPristine.value = !val\n })\n\n useRender(() => {\n const hasChips = !!(props.chips || slots.chip)\n const hasList = !!((!props.hideNoData || displayItems.value.length) || slots.prepend || slots.append || slots['no-data'])\n const [textFieldProps] = filterVTextFieldProps(props)\n\n return (\n <VTextField\n ref={ vTextFieldRef }\n { ...textFieldProps }\n modelValue={ search.value }\n onUpdate:modelValue={ v => { if (v == null) model.value = [] } }\n validationValue={ model.externalValue }\n dirty={ model.value.length > 0 }\n onInput={ onInput }\n class={[\n 'v-autocomplete',\n {\n 'v-autocomplete--active-menu': menu.value,\n 'v-autocomplete--chips': !!props.chips,\n [`v-autocomplete--${props.multiple ? 'multiple' : 'single'}`]: true,\n 'v-autocomplete--selection-slot': !!slots.selection,\n },\n ]}\n appendInnerIcon={ props.menuIcon }\n readonly={ props.readonly }\n onClick:clear={ onClear }\n onMousedown:control={ onMousedownControl }\n onFocus={ () => isFocused.value = true }\n onBlur={ () => isFocused.value = false }\n onKeydown={ onKeydown }\n >\n {{\n ...slots,\n default: () => (\n <>\n <VMenu\n ref={ vMenuRef }\n v-model={ menu.value }\n activator=\"parent\"\n contentClass=\"v-autocomplete__content\"\n eager={ props.eager }\n maxHeight={ 310 }\n openOnClick={ false }\n closeOnContentClick={ false }\n transition={ props.transition }\n onAfterLeave={ onAfterLeave }\n { ...props.menuProps }\n >\n { hasList && (\n <VList\n ref={ listRef }\n selected={ selected.value }\n selectStrategy={ props.multiple ? 'independent' : 'single-independent' }\n onMousedown={ (e: MouseEvent) => e.preventDefault() }\n onFocusin={ onFocusin }\n onFocusout={ onFocusout }\n >\n { !displayItems.value.length && !props.hideNoData && (slots['no-data']?.() ?? (\n <VListItem title={ t(props.noDataText) } />\n ))}\n\n { slots['prepend-item']?.() }\n\n { displayItems.value.map((item, index) => slots.item?.({\n item,\n index,\n props: mergeProps(item.props, { onClick: () => select(item) }),\n }) ?? (\n <VListItem\n key={ index }\n { ...item.props }\n onClick={ () => select(item) }\n >\n {{\n prepend: ({ isSelected }) => props.multiple && !props.hideSelected ? (\n <VCheckboxBtn modelValue={ isSelected } ripple={ false } />\n ) : undefined,\n title: () => {\n return isPristine.value\n ? item.title\n : highlightResult(item.title, getMatches(item)?.title, search.value?.length ?? 0)\n },\n }}\n </VListItem>\n ))}\n\n { slots['append-item']?.() }\n </VList>\n )}\n </VMenu>\n\n { selections.value.map((item, index) => {\n function onChipClose (e: Event) {\n e.stopPropagation()\n e.preventDefault()\n\n select(item)\n }\n\n const slotProps = {\n 'onClick:close': onChipClose,\n modelValue: true,\n 'onUpdate:modelValue': undefined,\n }\n\n return (\n <div key={ item.value } class=\"v-autocomplete__selection\">\n { hasChips ? (\n <VDefaultsProvider\n defaults={{\n VChip: {\n closable: props.closableChips,\n size: 'small',\n text: item.title,\n },\n }}\n >\n { slots.chip\n ? slots.chip({ item, index, props: slotProps })\n : (<VChip { ...slotProps } />)\n }\n </VDefaultsProvider>\n ) : (\n slots.selection\n ? slots.selection({ item, index })\n : (\n <span class=\"v-autocomplete__selection-text\">\n { item.title }\n { props.multiple && (index < selections.value.length - 1) && (\n <span class=\"v-autocomplete__selection-comma\">,</span>\n )}\n </span>\n )\n )}\n </div>\n )\n })}\n </>\n ),\n }}\n </VTextField>\n )\n })\n\n return forwardRefs({\n isFocused,\n isPristine,\n menu,\n search,\n filteredItems,\n select,\n }, vTextFieldRef)\n },\n})\n\nexport type VAutocomplete = InstanceType<typeof VAutocomplete>\n"],"mappings":"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"}
1
+ {"version":3,"file":"VAutocomplete.mjs","names":["makeSelectProps","VCheckboxBtn","VChip","VDefaultsProvider","VList","VListItem","VMenu","VTextField","forwardRefs","makeFilterProps","useFilter","makeTransitionProps","useForm","useItems","useLocale","useProxiedModel","computed","mergeProps","nextTick","ref","watch","genericComponent","omit","useRender","wrapInArray","filterVTextFieldProps","makeVTextFieldProps","highlightResult","text","matches","length","Array","isArray","Error","substr","VAutocomplete","name","props","search","String","filterKeys","modelValue","transition","emits","val","setup","slots","t","vTextFieldRef","isFocused","isPristine","vMenuRef","_menu","menu","get","value","set","v","ΨopenChildren","items","transformIn","transformOut","model","transformed","multiple","form","filteredItems","getMatches","undefined","selections","map","find","item","valueComparator","displayItems","hideSelected","filter","filteredItem","some","s","selected","selection","listRef","onClear","e","openOnClear","onMousedownControl","hideNoData","readonly","isReadonly","onKeydown","includes","key","preventDefault","focus","onInput","target","onAfterLeave","onFocusin","onFocusout","relatedTarget","isSelecting","select","index","findIndex","splice","title","at","hasChips","chips","chip","hasList","prepend","append","textFieldProps","externalValue","menuIcon","default","eager","menuProps","noDataText","onClick","isSelected","onChipClose","stopPropagation","slotProps","closableChips","closable","size"],"sources":["../../../src/components/VAutocomplete/VAutocomplete.tsx"],"sourcesContent":["// Styles\nimport './VAutocomplete.sass'\n\n// Components\nimport { makeSelectProps } from '@/components/VSelect/VSelect'\nimport { VCheckboxBtn } from '@/components/VCheckbox'\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 { forwardRefs } from '@/composables/forwardRefs'\nimport { makeFilterProps, useFilter } from '@/composables/filter'\nimport { makeTransitionProps } from '@/composables/transition'\nimport { useForm } from '@/composables/form'\nimport { useItems } from '@/composables/items'\nimport { useLocale } from '@/composables/locale'\nimport { useProxiedModel } from '@/composables/proxiedModel'\n\n// Utility\nimport { computed, mergeProps, nextTick, ref, watch } from 'vue'\nimport { genericComponent, omit, useRender, wrapInArray } from '@/util'\nimport { filterVTextFieldProps, makeVTextFieldProps } from '../VTextField/VTextField'\n\n// Types\nimport type { FilterMatch } from '@/composables/filter'\nimport type { InternalItem } from '@/composables/items'\nimport type { MakeSlots, SlotsToProps } from '@/util'\nimport type { VFieldSlots } from '@/components/VField/VField'\nimport type { VInputSlots } from '@/components/VInput/VInput'\n\nfunction highlightResult (text: string, matches: FilterMatch | undefined, length: number) {\n if (matches == null) return text\n\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-autocomplete__unmask\">{ text.substr(0, matches) }</span>\n <span class=\"v-autocomplete__mask\">{ text.substr(matches, length) }</span>\n <span class=\"v-autocomplete__unmask\">{ text.substr(matches + length) }</span>\n </>\n )\n : text\n}\n\ntype Primitive = string | number | boolean | symbol\n\ntype Val <T, ReturnObject extends boolean> = T extends Primitive\n ? T\n : (ReturnObject extends true ? T : any)\n\ntype Value <T, ReturnObject extends boolean, Multiple extends boolean> =\n Multiple extends true\n ? readonly Val<T, ReturnObject>[]\n : Val<T, ReturnObject>\n\nexport const VAutocomplete = genericComponent<new <\n T,\n ReturnObject extends boolean = false,\n Multiple extends boolean = false,\n V extends Value<T, ReturnObject, Multiple> = Value<T, ReturnObject, Multiple>\n>() => {\n $props: {\n items?: readonly T[]\n returnObject?: ReturnObject\n multiple?: Multiple\n modelValue?: V\n 'onUpdate:modelValue'?: (val: V) => void\n } & SlotsToProps<\n Omit<VInputSlots & VFieldSlots, 'default'> & MakeSlots<{\n item: [{ item: InternalItem<T>, index: number, props: Record<string, unknown> }]\n chip: [{ item: InternalItem<T>, index: number, props: Record<string, unknown> }]\n selection: [{ item: InternalItem<T>, index: number }]\n 'prepend-item': []\n 'append-item': []\n 'no-data': []\n }>\n >\n}>()({\n name: 'VAutocomplete',\n\n props: {\n // TODO: implement post keyboard support\n // autoSelectFirst: Boolean,\n search: String,\n\n ...makeFilterProps({ filterKeys: ['title'] }),\n ...makeSelectProps(),\n ...omit(makeVTextFieldProps({\n modelValue: null,\n }), ['validationValue', 'dirty', 'appendInnerIcon']),\n ...makeTransitionProps({ transition: false }),\n },\n\n emits: {\n 'update:search': (val: any) => true,\n 'update:modelValue': (val: any) => true,\n 'update:menu': (val: boolean) => true,\n },\n\n setup (props, { slots }) {\n const { t } = useLocale()\n const vTextFieldRef = ref()\n const isFocused = ref(false)\n const isPristine = ref(true)\n const vMenuRef = ref<VMenu>()\n const _menu = useProxiedModel(props, 'menu')\n const menu = computed({\n get: () => _menu.value,\n set: v => {\n if (_menu.value && !v && vMenuRef.value?.ΨopenChildren) return\n _menu.value = v\n },\n })\n const { items, transformIn, transformOut } = useItems(props)\n const search = useProxiedModel(props, 'search', '')\n const model = useProxiedModel(\n props,\n 'modelValue',\n [],\n v => transformIn(wrapInArray(v)),\n v => {\n const transformed = transformOut(v)\n return props.multiple ? transformed : (transformed[0] ?? null)\n }\n )\n const form = useForm()\n const { filteredItems, getMatches } = useFilter(props, items, computed(() => isPristine.value ? undefined : search.value))\n const selections = computed(() => {\n return model.value.map(v => {\n return items.value.find(item => props.valueComparator(item.value, v.value)) || v\n })\n })\n\n const displayItems = computed(() => {\n if (props.hideSelected) {\n return filteredItems.value.filter(filteredItem => !selections.value.some(s => s.value === filteredItem.value))\n }\n return filteredItems.value\n })\n\n const selected = computed(() => selections.value.map(selection => selection.props.value))\n const listRef = ref<VList>()\n\n function onClear (e: MouseEvent) {\n if (props.openOnClear) {\n menu.value = true\n }\n\n search.value = ''\n }\n function onMousedownControl () {\n if (\n (props.hideNoData && !items.value.length) ||\n props.readonly || form?.isReadonly.value\n ) return\n\n menu.value = true\n }\n function onKeydown (e: KeyboardEvent) {\n if (props.readonly || form?.isReadonly.value) return\n\n if (['Enter', 'ArrowDown', 'ArrowUp'].includes(e.key)) {\n e.preventDefault()\n }\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 (e.key === 'ArrowDown') {\n listRef.value?.focus('next')\n } else if (e.key === 'ArrowUp') {\n listRef.value?.focus('prev')\n }\n }\n\n function onInput (e: InputEvent) {\n search.value = (e.target as HTMLInputElement).value\n }\n\n function onAfterLeave () {\n if (isFocused.value) isPristine.value = true\n }\n\n function onFocusin (e: FocusEvent) {\n isFocused.value = true\n }\n\n function onFocusout (e: FocusEvent) {\n if (e.relatedTarget == null) {\n vTextFieldRef.value?.focus()\n }\n }\n\n const isSelecting = ref(false)\n\n function select (item: InternalItem) {\n if (props.multiple) {\n const index = selected.value.findIndex(selection => props.valueComparator(selection, item.value))\n\n if (index === -1) {\n model.value = [...model.value, item]\n search.value = ''\n } else {\n const value = [...model.value]\n value.splice(index, 1)\n model.value = value\n }\n } else {\n model.value = [item]\n\n isSelecting.value = true\n\n if (!slots.selection) {\n search.value = item.title\n }\n\n menu.value = false\n isPristine.value = true\n\n nextTick(() => (isSelecting.value = false))\n }\n }\n\n watch(isFocused, val => {\n if (val) {\n isSelecting.value = true\n search.value = props.multiple || !!slots.selection ? '' : String(selections.value.at(-1)?.props.title ?? '')\n isPristine.value = true\n\n nextTick(() => isSelecting.value = false)\n } else {\n menu.value = false\n search.value = ''\n }\n })\n\n watch(search, val => {\n if (!isFocused.value || isSelecting.value) return\n\n if (val) menu.value = true\n\n isPristine.value = !val\n })\n\n useRender(() => {\n const hasChips = !!(props.chips || slots.chip)\n const hasList = !!((!props.hideNoData || displayItems.value.length) || slots.prepend || slots.append || slots['no-data'])\n const [textFieldProps] = filterVTextFieldProps(props)\n\n return (\n <VTextField\n ref={ vTextFieldRef }\n { ...textFieldProps }\n modelValue={ search.value }\n onUpdate:modelValue={ v => { if (v == null) model.value = [] } }\n validationValue={ model.externalValue }\n dirty={ model.value.length > 0 }\n onInput={ onInput }\n class={[\n 'v-autocomplete',\n {\n 'v-autocomplete--active-menu': menu.value,\n 'v-autocomplete--chips': !!props.chips,\n [`v-autocomplete--${props.multiple ? 'multiple' : 'single'}`]: true,\n 'v-autocomplete--selection-slot': !!slots.selection,\n },\n ]}\n appendInnerIcon={ props.menuIcon }\n readonly={ props.readonly }\n onClick:clear={ onClear }\n onMousedown:control={ onMousedownControl }\n onFocus={ () => isFocused.value = true }\n onBlur={ () => isFocused.value = false }\n onKeydown={ onKeydown }\n >\n {{\n ...slots,\n default: () => (\n <>\n <VMenu\n ref={ vMenuRef }\n v-model={ menu.value }\n activator=\"parent\"\n contentClass=\"v-autocomplete__content\"\n eager={ props.eager }\n maxHeight={ 310 }\n openOnClick={ false }\n closeOnContentClick={ false }\n transition={ props.transition }\n onAfterLeave={ onAfterLeave }\n { ...props.menuProps }\n >\n { hasList && (\n <VList\n ref={ listRef }\n selected={ selected.value }\n selectStrategy={ props.multiple ? 'independent' : 'single-independent' }\n onMousedown={ (e: MouseEvent) => e.preventDefault() }\n onFocusin={ onFocusin }\n onFocusout={ onFocusout }\n >\n { !displayItems.value.length && !props.hideNoData && (slots['no-data']?.() ?? (\n <VListItem title={ t(props.noDataText) } />\n ))}\n\n { slots['prepend-item']?.() }\n\n { displayItems.value.map((item, index) => slots.item?.({\n item,\n index,\n props: mergeProps(item.props, { onClick: () => select(item) }),\n }) ?? (\n <VListItem\n key={ index }\n { ...item.props }\n onClick={ () => select(item) }\n >\n {{\n prepend: ({ isSelected }) => props.multiple && !props.hideSelected ? (\n <VCheckboxBtn modelValue={ isSelected } ripple={ false } />\n ) : undefined,\n title: () => {\n return isPristine.value\n ? item.title\n : highlightResult(item.title, getMatches(item)?.title, search.value?.length ?? 0)\n },\n }}\n </VListItem>\n ))}\n\n { slots['append-item']?.() }\n </VList>\n )}\n </VMenu>\n\n { selections.value.map((item, index) => {\n function onChipClose (e: Event) {\n e.stopPropagation()\n e.preventDefault()\n\n select(item)\n }\n\n const slotProps = {\n 'onClick:close': onChipClose,\n modelValue: true,\n 'onUpdate:modelValue': undefined,\n }\n\n return (\n <div key={ item.value } class=\"v-autocomplete__selection\">\n { hasChips ? (\n !slots.chip ? (\n <VChip\n key=\"chip\"\n closable={ props.closableChips }\n size=\"small\"\n text={ item.title }\n { ...slotProps }\n />\n ) : (\n <VDefaultsProvider\n key=\"chip-defaults\"\n defaults={{\n VChip: {\n closable: props.closableChips,\n size: 'small',\n text: item.title,\n },\n }}\n >\n { slots.chip?.({ item, index, props: slotProps }) }\n </VDefaultsProvider>\n )\n ) : (\n slots.selection?.({ item, index }) ?? (\n <span class=\"v-autocomplete__selection-text\">\n { item.title }\n { props.multiple && (index < selections.value.length - 1) && (\n <span class=\"v-autocomplete__selection-comma\">,</span>\n )}\n </span>\n )\n )}\n </div>\n )\n })}\n </>\n ),\n }}\n </VTextField>\n )\n })\n\n return forwardRefs({\n isFocused,\n isPristine,\n menu,\n search,\n filteredItems,\n select,\n }, vTextFieldRef)\n },\n})\n\nexport type VAutocomplete = InstanceType<typeof VAutocomplete>\n"],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { createVNode as _createVNode } from "vue";
1
+ import { resolveDirective as _resolveDirective, createVNode as _createVNode } from "vue";
2
2
  // Styles
3
3
  import "./VBanner.css";
4
4
 
@@ -85,7 +85,8 @@ export const VBanner = genericComponent()({
85
85
  });
86
86
  useRender(() => {
87
87
  const hasText = !!(props.text || slots.text);
88
- const hasPrepend = !!(slots.prepend || props.avatar || props.icon);
88
+ const hasPrependMedia = !!(props.avatar || props.icon);
89
+ const hasPrepend = !!(hasPrependMedia || slots.prepend);
89
90
  return _createVNode(props.tag, {
90
91
  "class": ['v-banner', {
91
92
  'v-banner--stacked': props.stacked || mobile.value,
@@ -95,8 +96,18 @@ export const VBanner = genericComponent()({
95
96
  "style": [dimensionStyles.value, locationStyles.value],
96
97
  "role": "banner"
97
98
  }, {
98
- default: () => [hasPrepend && _createVNode(VDefaultsProvider, {
99
+ default: () => [hasPrepend && _createVNode("div", {
99
100
  "key": "prepend",
101
+ "class": "v-banner__prepend"
102
+ }, [!slots.prepend ? _createVNode(VAvatar, {
103
+ "key": "prepend-avatar",
104
+ "color": color.value,
105
+ "density": density.value,
106
+ "icon": props.icon,
107
+ "image": props.avatar
108
+ }, null) : _createVNode(VDefaultsProvider, {
109
+ "key": "prepend-defaults",
110
+ "disabled": !hasPrependMedia,
100
111
  "defaults": {
101
112
  VAvatar: {
102
113
  color: color.value,
@@ -105,19 +116,15 @@ export const VBanner = genericComponent()({
105
116
  image: props.avatar
106
117
  }
107
118
  }
108
- }, {
109
- default: () => [_createVNode("div", {
110
- "class": "v-banner__prepend"
111
- }, [slots.prepend ? slots.prepend() : (props.avatar || props.icon) && _createVNode(VAvatar, null, null)])]
112
- }), _createVNode("div", {
119
+ }, slots.prepend)]), _createVNode("div", {
113
120
  "class": "v-banner__content"
114
121
  }, [hasText && _createVNode(VBannerText, {
115
122
  "key": "text"
116
123
  }, {
117
- default: () => [slots.text ? slots.text() : props.text]
118
- }), slots.default?.()]), slots.actions && _createVNode(VBannerActions, null, {
119
- default: () => [slots.actions()]
120
- })]
124
+ default: () => [slots.text?.() ?? props.text]
125
+ }), slots.default?.()]), slots.actions && _createVNode(VBannerActions, {
126
+ "key": "actions"
127
+ }, slots.actions)]
121
128
  });
122
129
  });
123
130
  }
@@ -1 +1 @@
1
- {"version":3,"file":"VBanner.mjs","names":["VAvatar","VBannerActions","VBannerText","VDefaultsProvider","makeBorderProps","useBorder","makeDensityProps","useDensity","makeDimensionProps","useDimension","makeElevationProps","useElevation","makeLocationProps","useLocation","makePositionProps","usePosition","makeRoundedProps","useRounded","makeTagProps","makeThemeProps","provideTheme","provideDefaults","useDisplay","IconValue","genericComponent","useRender","toRef","VBanner","name","props","avatar","String","color","icon","lines","stacked","Boolean","sticky","text","setup","slots","borderClasses","densityClasses","mobile","dimensionStyles","elevationClasses","locationStyles","positionClasses","roundedClasses","themeClasses","density","hasText","hasPrepend","prepend","value","image","default","actions"],"sources":["../../../src/components/VBanner/VBanner.tsx"],"sourcesContent":["// Styles\nimport './VBanner.sass'\n\n// Components\nimport { VAvatar } from '@/components/VAvatar'\nimport { VBannerActions } from './VBannerActions'\nimport { VBannerText } from './VBannerText'\nimport { VDefaultsProvider } from '@/components/VDefaultsProvider'\n\n// Composables\nimport { makeBorderProps, useBorder } from '@/composables/border'\nimport { makeDensityProps, useDensity } from '@/composables/density'\nimport { makeDimensionProps, useDimension } from '@/composables/dimensions'\nimport { makeElevationProps, useElevation } from '@/composables/elevation'\nimport { makeLocationProps, useLocation } from '@/composables/location'\nimport { makePositionProps, usePosition } from '@/composables/position'\nimport { makeRoundedProps, useRounded } from '@/composables/rounded'\nimport { makeTagProps } from '@/composables/tag'\nimport { makeThemeProps, provideTheme } from '@/composables/theme'\nimport { provideDefaults } from '@/composables/defaults'\nimport { useDisplay } from '@/composables/display'\nimport { IconValue } from '@/composables/icons'\n\n// Utilities\nimport { genericComponent, useRender } from '@/util'\nimport { toRef } from 'vue'\n\n// Types\nimport type { MakeSlots } from '@/util'\nimport type { PropType } from 'vue'\n\nexport type VBannerSlots = MakeSlots<{\n default: []\n prepend: []\n text: []\n actions: []\n}>\n\nexport const VBanner = genericComponent<VBannerSlots>()({\n name: 'VBanner',\n\n props: {\n avatar: String,\n color: String,\n icon: IconValue,\n lines: String as PropType<'one' | 'two' | 'three'>,\n stacked: Boolean,\n sticky: Boolean,\n text: String,\n\n ...makeBorderProps(),\n ...makeDensityProps(),\n ...makeDimensionProps(),\n ...makeElevationProps(),\n ...makeLocationProps(),\n ...makePositionProps(),\n ...makeRoundedProps(),\n ...makeTagProps(),\n ...makeThemeProps(),\n },\n\n setup (props, { slots }) {\n const { borderClasses } = useBorder(props)\n const { densityClasses } = useDensity(props)\n const { mobile } = useDisplay()\n const { dimensionStyles } = useDimension(props)\n const { elevationClasses } = useElevation(props)\n const { locationStyles } = useLocation(props)\n const { positionClasses } = usePosition(props)\n const { roundedClasses } = useRounded(props)\n\n const { themeClasses } = provideTheme(props)\n\n const color = toRef(props, 'color')\n const density = toRef(props, 'density')\n\n provideDefaults({ VBannerActions: { color, density } })\n\n useRender(() => {\n const hasText = !!(props.text || slots.text)\n const hasPrepend = !!(slots.prepend || props.avatar || props.icon)\n\n return (\n <props.tag\n class={[\n 'v-banner',\n {\n 'v-banner--stacked': props.stacked || mobile.value,\n 'v-banner--sticky': props.sticky,\n [`v-banner--${props.lines}-line`]: !!props.lines,\n },\n borderClasses.value,\n densityClasses.value,\n elevationClasses.value,\n positionClasses.value,\n roundedClasses.value,\n themeClasses.value,\n ]}\n style={[\n dimensionStyles.value,\n locationStyles.value,\n ]}\n role=\"banner\"\n >\n { hasPrepend && (\n <VDefaultsProvider\n key=\"prepend\"\n defaults={{\n VAvatar: {\n color: color.value,\n density: density.value,\n icon: props.icon,\n image: props.avatar,\n },\n }}\n >\n <div class=\"v-banner__prepend\">\n { slots.prepend\n ? slots.prepend()\n : (props.avatar || props.icon) && (<VAvatar />)\n }\n </div>\n </VDefaultsProvider>\n )}\n\n <div class=\"v-banner__content\">\n { hasText && (\n <VBannerText key=\"text\">\n { slots.text ? slots.text() : props.text }\n </VBannerText>\n )}\n\n { slots.default?.() }\n </div>\n\n { slots.actions && (\n <VBannerActions>\n { slots.actions() }\n </VBannerActions>\n )}\n </props.tag>\n )\n })\n },\n})\n\nexport type VBanner = InstanceType<typeof VBanner>\n"],"mappings":"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"}
1
+ {"version":3,"file":"VBanner.mjs","names":["VAvatar","VBannerActions","VBannerText","VDefaultsProvider","makeBorderProps","useBorder","makeDensityProps","useDensity","makeDimensionProps","useDimension","makeElevationProps","useElevation","makeLocationProps","useLocation","makePositionProps","usePosition","makeRoundedProps","useRounded","makeTagProps","makeThemeProps","provideTheme","provideDefaults","useDisplay","IconValue","genericComponent","useRender","toRef","VBanner","name","props","avatar","String","color","icon","lines","stacked","Boolean","sticky","text","setup","slots","borderClasses","densityClasses","mobile","dimensionStyles","elevationClasses","locationStyles","positionClasses","roundedClasses","themeClasses","density","hasText","hasPrependMedia","hasPrepend","prepend","value","image","default","actions"],"sources":["../../../src/components/VBanner/VBanner.tsx"],"sourcesContent":["// Styles\nimport './VBanner.sass'\n\n// Components\nimport { VAvatar } from '@/components/VAvatar'\nimport { VBannerActions } from './VBannerActions'\nimport { VBannerText } from './VBannerText'\nimport { VDefaultsProvider } from '@/components/VDefaultsProvider'\n\n// Composables\nimport { makeBorderProps, useBorder } from '@/composables/border'\nimport { makeDensityProps, useDensity } from '@/composables/density'\nimport { makeDimensionProps, useDimension } from '@/composables/dimensions'\nimport { makeElevationProps, useElevation } from '@/composables/elevation'\nimport { makeLocationProps, useLocation } from '@/composables/location'\nimport { makePositionProps, usePosition } from '@/composables/position'\nimport { makeRoundedProps, useRounded } from '@/composables/rounded'\nimport { makeTagProps } from '@/composables/tag'\nimport { makeThemeProps, provideTheme } from '@/composables/theme'\nimport { provideDefaults } from '@/composables/defaults'\nimport { useDisplay } from '@/composables/display'\nimport { IconValue } from '@/composables/icons'\n\n// Utilities\nimport { genericComponent, useRender } from '@/util'\nimport { toRef } from 'vue'\n\n// Types\nimport type { MakeSlots } from '@/util'\nimport type { PropType } from 'vue'\n\nexport type VBannerSlots = MakeSlots<{\n default: []\n prepend: []\n text: []\n actions: []\n}>\n\nexport const VBanner = genericComponent<VBannerSlots>()({\n name: 'VBanner',\n\n props: {\n avatar: String,\n color: String,\n icon: IconValue,\n lines: String as PropType<'one' | 'two' | 'three'>,\n stacked: Boolean,\n sticky: Boolean,\n text: String,\n\n ...makeBorderProps(),\n ...makeDensityProps(),\n ...makeDimensionProps(),\n ...makeElevationProps(),\n ...makeLocationProps(),\n ...makePositionProps(),\n ...makeRoundedProps(),\n ...makeTagProps(),\n ...makeThemeProps(),\n },\n\n setup (props, { slots }) {\n const { borderClasses } = useBorder(props)\n const { densityClasses } = useDensity(props)\n const { mobile } = useDisplay()\n const { dimensionStyles } = useDimension(props)\n const { elevationClasses } = useElevation(props)\n const { locationStyles } = useLocation(props)\n const { positionClasses } = usePosition(props)\n const { roundedClasses } = useRounded(props)\n\n const { themeClasses } = provideTheme(props)\n\n const color = toRef(props, 'color')\n const density = toRef(props, 'density')\n\n provideDefaults({ VBannerActions: { color, density } })\n\n useRender(() => {\n const hasText = !!(props.text || slots.text)\n const hasPrependMedia = !!(props.avatar || props.icon)\n const hasPrepend = !!(hasPrependMedia || slots.prepend)\n\n return (\n <props.tag\n class={[\n 'v-banner',\n {\n 'v-banner--stacked': props.stacked || mobile.value,\n 'v-banner--sticky': props.sticky,\n [`v-banner--${props.lines}-line`]: !!props.lines,\n },\n borderClasses.value,\n densityClasses.value,\n elevationClasses.value,\n positionClasses.value,\n roundedClasses.value,\n themeClasses.value,\n ]}\n style={[\n dimensionStyles.value,\n locationStyles.value,\n ]}\n role=\"banner\"\n >\n { hasPrepend && (\n <div key=\"prepend\" class=\"v-banner__prepend\">\n { !slots.prepend ? (\n <VAvatar\n key=\"prepend-avatar\"\n color={ color.value }\n density={ density.value }\n icon={ props.icon }\n image={ props.avatar }\n />\n ) : (\n <VDefaultsProvider\n key=\"prepend-defaults\"\n disabled={ !hasPrependMedia }\n defaults={{\n VAvatar: {\n color: color.value,\n density: density.value,\n icon: props.icon,\n image: props.avatar,\n },\n }}\n v-slots:default={ slots.prepend }\n />\n )}\n </div>\n )}\n\n <div class=\"v-banner__content\">\n { hasText && (\n <VBannerText key=\"text\">\n { slots.text?.() ?? props.text }\n </VBannerText>\n )}\n\n { slots.default?.() }\n </div>\n\n { slots.actions && (\n <VBannerActions key=\"actions\" v-slots:default={ slots.actions } />\n )}\n </props.tag>\n )\n })\n },\n})\n\nexport type VBanner = InstanceType<typeof VBanner>\n"],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { mergeProps as _mergeProps, resolveDirective as _resolveDirective, Fragment as _Fragment, createVNode as _createVNode } from "vue";
1
+ import { mergeProps as _mergeProps, Fragment as _Fragment, resolveDirective as _resolveDirective, createVNode as _createVNode } from "vue";
2
2
  // Styles
3
3
  import "./VBreadcrumbs.css";
4
4
 
@@ -72,19 +72,23 @@ export const VBreadcrumbs = genericComponent()({
72
72
  "class": ['v-breadcrumbs', backgroundColorClasses.value, densityClasses.value, roundedClasses.value],
73
73
  "style": backgroundColorStyles.value
74
74
  }, {
75
- default: () => [hasPrepend && _createVNode(VDefaultsProvider, {
75
+ default: () => [hasPrepend && _createVNode("div", {
76
76
  "key": "prepend",
77
+ "class": "v-breadcrumbs__prepend"
78
+ }, [!slots.prepend ? _createVNode(VIcon, {
79
+ "key": "prepend-icon",
80
+ "start": true,
81
+ "icon": props.icon
82
+ }, null) : _createVNode(VDefaultsProvider, {
83
+ "key": "prepend-defaults",
84
+ "disabled": !props.icon,
77
85
  "defaults": {
78
86
  VIcon: {
79
87
  icon: props.icon,
80
88
  start: true
81
89
  }
82
90
  }
83
- }, {
84
- default: () => [_createVNode("div", {
85
- "class": "v-breadcrumbs__prepend"
86
- }, [slots.prepend ? slots.prepend() : props.icon && _createVNode(VIcon, null, null)])]
87
- }), props.items.map((item, index, array) => _createVNode(_Fragment, null, [_createVNode(VBreadcrumbsItem, _mergeProps({
91
+ }, slots.prepend)]), props.items.map((item, index, array) => _createVNode(_Fragment, null, [_createVNode(VBreadcrumbsItem, _mergeProps({
88
92
  "key": index,
89
93
  "disabled": index >= array.length - 1
90
94
  }, typeof item === 'string' ? {
@@ -1 +1 @@
1
- {"version":3,"file":"VBreadcrumbs.mjs","names":["VBreadcrumbsDivider","VBreadcrumbsItem","VDefaultsProvider","VIcon","IconValue","makeDensityProps","useDensity","makeRoundedProps","useRounded","makeTagProps","provideDefaults","useBackgroundColor","genericComponent","useRender","toRef","VBreadcrumbs","name","props","activeClass","String","activeColor","bgColor","color","disabled","Boolean","divider","type","default","icon","items","Array","tag","setup","slots","backgroundColorClasses","backgroundColorStyles","densityClasses","roundedClasses","hasPrepend","prepend","value","start","map","item","index","array","length","title","undefined"],"sources":["../../../src/components/VBreadcrumbs/VBreadcrumbs.tsx"],"sourcesContent":["// Styles\nimport './VBreadcrumbs.sass'\n\n// Components\nimport { VBreadcrumbsDivider } from './VBreadcrumbsDivider'\nimport { VBreadcrumbsItem } from './VBreadcrumbsItem'\nimport { VDefaultsProvider } from '@/components/VDefaultsProvider'\nimport { VIcon } from '@/components/VIcon'\n\n// Composables\nimport { IconValue } from '@/composables/icons'\nimport { makeDensityProps, useDensity } from '@/composables/density'\nimport { makeRoundedProps, useRounded } from '@/composables/rounded'\nimport { makeTagProps } from '@/composables/tag'\nimport { provideDefaults } from '@/composables/defaults'\nimport { useBackgroundColor } from '@/composables/color'\n\n// Utilities\nimport { genericComponent, useRender } from '@/util'\nimport { toRef } from 'vue'\n\n// Types\nimport type { LinkProps } from '@/composables/router'\nimport type { PropType } from 'vue'\nimport type { SlotsToProps } from '@/util'\n\nexport type BreadcrumbItem = string | (LinkProps & {\n text: string\n disabled?: boolean\n})\n\nexport const VBreadcrumbs = genericComponent<new <T>() => {\n $props: {\n items?: T[]\n } & SlotsToProps<{\n prepend: []\n title: [{ item: T, index: number }]\n divider: [{ item: T, index: number }]\n default: []\n }>\n}>()({\n name: 'VBreadcrumbs',\n\n props: {\n activeClass: String,\n activeColor: String,\n bgColor: String,\n color: String,\n disabled: Boolean,\n divider: {\n type: String,\n default: '/',\n },\n icon: IconValue,\n items: {\n type: Array as PropType<BreadcrumbItem[]>,\n default: () => ([]),\n },\n\n ...makeDensityProps(),\n ...makeRoundedProps(),\n ...makeTagProps({ tag: 'ul' }),\n },\n\n setup (props, { slots }) {\n const { backgroundColorClasses, backgroundColorStyles } = useBackgroundColor(toRef(props, 'bgColor'))\n const { densityClasses } = useDensity(props)\n const { roundedClasses } = useRounded(props)\n\n provideDefaults({\n VBreadcrumbsDivider: {\n divider: toRef(props, 'divider'),\n },\n VBreadcrumbsItem: {\n activeClass: toRef(props, 'activeClass'),\n activeColor: toRef(props, 'activeColor'),\n color: toRef(props, 'color'),\n disabled: toRef(props, 'disabled'),\n },\n })\n\n useRender(() => {\n const hasPrepend = !!(slots.prepend || props.icon)\n\n return (\n <props.tag\n class={[\n 'v-breadcrumbs',\n backgroundColorClasses.value,\n densityClasses.value,\n roundedClasses.value,\n ]}\n style={ backgroundColorStyles.value }\n >\n { hasPrepend && (\n <VDefaultsProvider\n key=\"prepend\"\n defaults={{\n VIcon: {\n icon: props.icon,\n start: true,\n },\n }}\n >\n <div class=\"v-breadcrumbs__prepend\">\n { slots.prepend\n ? slots.prepend()\n : props.icon && (<VIcon />)\n }\n </div>\n </VDefaultsProvider>\n )}\n\n { props.items.map((item, index, array) => (\n <>\n <VBreadcrumbsItem\n key={ index }\n disabled={ index >= array.length - 1 }\n { ...(typeof item === 'string' ? { title: item } : item) }\n v-slots={{\n default: slots.title ? () => slots.title?.({ item, index }) : undefined,\n }}\n />\n\n { index < array.length - 1 && (\n <VBreadcrumbsDivider\n v-slots={{\n default: slots.divider ? () => slots.divider?.({ item, index }) : undefined,\n }}\n />\n )}\n </>\n ))}\n\n { slots.default?.() }\n </props.tag>\n )\n })\n\n return {}\n },\n})\n\nexport type VBreadcrumbs = InstanceType<typeof VBreadcrumbs>\n"],"mappings":";AAAA;AACA;;AAEA;AAAA,SACSA,mBAAmB;AAAA,SACnBC,gBAAgB;AAAA,SAChBC,iBAAiB;AAAA,SACjBC,KAAK,8BAEd;AAAA,SACSC,SAAS;AAAA,SACTC,gBAAgB,EAAEC,UAAU;AAAA,SAC5BC,gBAAgB,EAAEC,UAAU;AAAA,SAC5BC,YAAY;AAAA,SACZC,eAAe;AAAA,SACfC,kBAAkB,uCAE3B;AAAA,SACSC,gBAAgB,EAAEC,SAAS;AACpC,SAASC,KAAK,QAAQ,KAAK;;AAE3B;;AAUA,OAAO,MAAMC,YAAY,GAAGH,gBAAgB,EASxC,CAAC;EACHI,IAAI,EAAE,cAAc;EAEpBC,KAAK,EAAE;IACLC,WAAW,EAAEC,MAAM;IACnBC,WAAW,EAAED,MAAM;IACnBE,OAAO,EAAEF,MAAM;IACfG,KAAK,EAAEH,MAAM;IACbI,QAAQ,EAAEC,OAAO;IACjBC,OAAO,EAAE;MACPC,IAAI,EAAEP,MAAM;MACZQ,OAAO,EAAE;IACX,CAAC;IACDC,IAAI,EAAExB,SAAS;IACfyB,KAAK,EAAE;MACLH,IAAI,EAAEI,KAAmC;MACzCH,OAAO,EAAE,MAAO;IAClB,CAAC;IAED,GAAGtB,gBAAgB,EAAE;IACrB,GAAGE,gBAAgB,EAAE;IACrB,GAAGE,YAAY,CAAC;MAAEsB,GAAG,EAAE;IAAK,CAAC;EAC/B,CAAC;EAEDC,KAAK,CAAEf,KAAK,QAAa;IAAA,IAAX;MAAEgB;IAAM,CAAC;IACrB,MAAM;MAAEC,sBAAsB;MAAEC;IAAsB,CAAC,GAAGxB,kBAAkB,CAACG,KAAK,CAACG,KAAK,EAAE,SAAS,CAAC,CAAC;IACrG,MAAM;MAAEmB;IAAe,CAAC,GAAG9B,UAAU,CAACW,KAAK,CAAC;IAC5C,MAAM;MAAEoB;IAAe,CAAC,GAAG7B,UAAU,CAACS,KAAK,CAAC;IAE5CP,eAAe,CAAC;MACdV,mBAAmB,EAAE;QACnByB,OAAO,EAAEX,KAAK,CAACG,KAAK,EAAE,SAAS;MACjC,CAAC;MACDhB,gBAAgB,EAAE;QAChBiB,WAAW,EAAEJ,KAAK,CAACG,KAAK,EAAE,aAAa,CAAC;QACxCG,WAAW,EAAEN,KAAK,CAACG,KAAK,EAAE,aAAa,CAAC;QACxCK,KAAK,EAAER,KAAK,CAACG,KAAK,EAAE,OAAO,CAAC;QAC5BM,QAAQ,EAAET,KAAK,CAACG,KAAK,EAAE,UAAU;MACnC;IACF,CAAC,CAAC;IAEFJ,SAAS,CAAC,MAAM;MACd,MAAMyB,UAAU,GAAG,CAAC,EAAEL,KAAK,CAACM,OAAO,IAAItB,KAAK,CAACW,IAAI,CAAC;MAElD;QAAA,SAEW,CACL,eAAe,EACfM,sBAAsB,CAACM,KAAK,EAC5BJ,cAAc,CAACI,KAAK,EACpBH,cAAc,CAACG,KAAK,CACrB;QAAA,SACOL,qBAAqB,CAACK;MAAK;QAAA,gBAEjCF,UAAU;UAAA,OAEJ,SAAS;UAAA,YACH;YACRnC,KAAK,EAAE;cACLyB,IAAI,EAAEX,KAAK,CAACW,IAAI;cAChBa,KAAK,EAAE;YACT;UACF;QAAC;UAAA;YAAA,SAEU;UAAwB,IAC/BR,KAAK,CAACM,OAAO,GACXN,KAAK,CAACM,OAAO,EAAE,GACftB,KAAK,CAACW,IAAI,mCAAe;QAAA,EAIlC,EAECX,KAAK,CAACY,KAAK,CAACa,GAAG,CAAC,CAACC,IAAI,EAAEC,KAAK,EAAEC,KAAK;UAAA,OAGzBD,KAAK;UAAA,YACAA,KAAK,IAAIC,KAAK,CAACC,MAAM,GAAG;QAAC,GAC9B,OAAOH,IAAI,KAAK,QAAQ,GAAG;UAAEI,KAAK,EAAEJ;QAAK,CAAC,GAAGA,IAAI,GAC9C;UACPhB,OAAO,EAAEM,KAAK,CAACc,KAAK,GAAG,MAAMd,KAAK,CAACc,KAAK,GAAG;YAAEJ,IAAI;YAAEC;UAAM,CAAC,CAAC,GAAGI;QAChE,CAAC,GAGDJ,KAAK,GAAGC,KAAK,CAACC,MAAM,GAAG,CAAC,4CAEb;UACPnB,OAAO,EAAEM,KAAK,CAACR,OAAO,GAAG,MAAMQ,KAAK,CAACR,OAAO,GAAG;YAAEkB,IAAI;YAAEC;UAAM,CAAC,CAAC,GAAGI;QACpE,CAAC,CAEJ,EAEJ,CAAC,EAEAf,KAAK,CAACN,OAAO,IAAI;MAAA;IAGzB,CAAC,CAAC;IAEF,OAAO,CAAC,CAAC;EACX;AACF,CAAC,CAAC"}
1
+ {"version":3,"file":"VBreadcrumbs.mjs","names":["VBreadcrumbsDivider","VBreadcrumbsItem","VDefaultsProvider","VIcon","IconValue","makeDensityProps","useDensity","makeRoundedProps","useRounded","makeTagProps","provideDefaults","useBackgroundColor","genericComponent","useRender","toRef","VBreadcrumbs","name","props","activeClass","String","activeColor","bgColor","color","disabled","Boolean","divider","type","default","icon","items","Array","tag","setup","slots","backgroundColorClasses","backgroundColorStyles","densityClasses","roundedClasses","hasPrepend","prepend","value","start","map","item","index","array","length","title","undefined"],"sources":["../../../src/components/VBreadcrumbs/VBreadcrumbs.tsx"],"sourcesContent":["// Styles\nimport './VBreadcrumbs.sass'\n\n// Components\nimport { VBreadcrumbsDivider } from './VBreadcrumbsDivider'\nimport { VBreadcrumbsItem } from './VBreadcrumbsItem'\nimport { VDefaultsProvider } from '@/components/VDefaultsProvider'\nimport { VIcon } from '@/components/VIcon'\n\n// Composables\nimport { IconValue } from '@/composables/icons'\nimport { makeDensityProps, useDensity } from '@/composables/density'\nimport { makeRoundedProps, useRounded } from '@/composables/rounded'\nimport { makeTagProps } from '@/composables/tag'\nimport { provideDefaults } from '@/composables/defaults'\nimport { useBackgroundColor } from '@/composables/color'\n\n// Utilities\nimport { genericComponent, useRender } from '@/util'\nimport { toRef } from 'vue'\n\n// Types\nimport type { LinkProps } from '@/composables/router'\nimport type { PropType } from 'vue'\nimport type { SlotsToProps } from '@/util'\n\nexport type BreadcrumbItem = string | (LinkProps & {\n text: string\n disabled?: boolean\n})\n\nexport const VBreadcrumbs = genericComponent<new <T>() => {\n $props: {\n items?: T[]\n } & SlotsToProps<{\n prepend: []\n title: [{ item: T, index: number }]\n divider: [{ item: T, index: number }]\n default: []\n }>\n}>()({\n name: 'VBreadcrumbs',\n\n props: {\n activeClass: String,\n activeColor: String,\n bgColor: String,\n color: String,\n disabled: Boolean,\n divider: {\n type: String,\n default: '/',\n },\n icon: IconValue,\n items: {\n type: Array as PropType<BreadcrumbItem[]>,\n default: () => ([]),\n },\n\n ...makeDensityProps(),\n ...makeRoundedProps(),\n ...makeTagProps({ tag: 'ul' }),\n },\n\n setup (props, { slots }) {\n const { backgroundColorClasses, backgroundColorStyles } = useBackgroundColor(toRef(props, 'bgColor'))\n const { densityClasses } = useDensity(props)\n const { roundedClasses } = useRounded(props)\n\n provideDefaults({\n VBreadcrumbsDivider: {\n divider: toRef(props, 'divider'),\n },\n VBreadcrumbsItem: {\n activeClass: toRef(props, 'activeClass'),\n activeColor: toRef(props, 'activeColor'),\n color: toRef(props, 'color'),\n disabled: toRef(props, 'disabled'),\n },\n })\n\n useRender(() => {\n const hasPrepend = !!(slots.prepend || props.icon)\n\n return (\n <props.tag\n class={[\n 'v-breadcrumbs',\n backgroundColorClasses.value,\n densityClasses.value,\n roundedClasses.value,\n ]}\n style={ backgroundColorStyles.value }\n >\n { hasPrepend && (\n <div key=\"prepend\" class=\"v-breadcrumbs__prepend\">\n { !slots.prepend ? (\n <VIcon\n key=\"prepend-icon\"\n start\n icon={ props.icon }\n />\n ) : (\n <VDefaultsProvider\n key=\"prepend-defaults\"\n disabled={ !props.icon }\n defaults={{\n VIcon: {\n icon: props.icon,\n start: true,\n },\n }}\n v-slots:default={ slots.prepend }\n />\n )}\n </div>\n )}\n\n { props.items.map((item, index, array) => (\n <>\n <VBreadcrumbsItem\n key={ index }\n disabled={ index >= array.length - 1 }\n { ...(typeof item === 'string' ? { title: item } : item) }\n v-slots={{\n default: slots.title ? () => slots.title?.({ item, index }) : undefined,\n }}\n />\n\n { index < array.length - 1 && (\n <VBreadcrumbsDivider\n v-slots={{\n default: slots.divider ? () => slots.divider?.({ item, index }) : undefined,\n }}\n />\n )}\n </>\n ))}\n\n { slots.default?.() }\n </props.tag>\n )\n })\n\n return {}\n },\n})\n\nexport type VBreadcrumbs = InstanceType<typeof VBreadcrumbs>\n"],"mappings":"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"}
@@ -161,43 +161,49 @@ export const VBtn = genericComponent()({
161
161
  },
162
162
  "value": valueAttr.value
163
163
  }, {
164
- default: () => [genOverlays(true, 'v-btn'), !props.icon && hasPrepend && _createVNode(VDefaultsProvider, {
164
+ default: () => [genOverlays(true, 'v-btn'), !props.icon && hasPrepend && _createVNode("span", {
165
165
  "key": "prepend",
166
+ "class": "v-btn__prepend"
167
+ }, [!slots.prepend ? _createVNode(VIcon, {
168
+ "key": "prepend-icon",
169
+ "icon": props.prependIcon
170
+ }, null) : _createVNode(VDefaultsProvider, {
171
+ "key": "prepend-defaults",
172
+ "disabled": !props.prependIcon,
166
173
  "defaults": {
167
174
  VIcon: {
168
175
  icon: props.prependIcon
169
176
  }
170
177
  }
171
- }, {
172
- default: () => [_createVNode("span", {
173
- "class": "v-btn__prepend"
174
- }, [slots.prepend?.() ?? _createVNode(VIcon, null, null)])]
175
- }), _createVNode("span", {
178
+ }, slots.prepend)]), _createVNode("span", {
176
179
  "class": "v-btn__content",
177
180
  "data-no-activator": ""
178
- }, [_createVNode(VDefaultsProvider, {
179
- "key": "content",
181
+ }, [!slots.default && hasIcon ? _createVNode(VIcon, {
182
+ "key": "content-icon",
183
+ "icon": props.icon
184
+ }, null) : _createVNode(VDefaultsProvider, {
185
+ "key": "content-defaults",
186
+ "disabled": !hasIcon,
180
187
  "defaults": {
181
188
  VIcon: {
182
- icon: hasIcon ? props.icon : undefined
189
+ icon: props.icon
183
190
  }
184
191
  }
185
- }, {
186
- default: () => [slots.default?.() ?? (hasIcon && _createVNode(VIcon, {
187
- "key": "icon"
188
- }, null))]
189
- })]), !props.icon && hasAppend && _createVNode(VDefaultsProvider, {
192
+ }, slots.default)]), !props.icon && hasAppend && _createVNode("span", {
190
193
  "key": "append",
194
+ "class": "v-btn__append"
195
+ }, [!slots.append ? _createVNode(VIcon, {
196
+ "key": "append-icon",
197
+ "icon": props.appendIcon
198
+ }, null) : _createVNode(VDefaultsProvider, {
199
+ "key": "append-defaults",
200
+ "disabled": !props.appendIcon,
191
201
  "defaults": {
192
202
  VIcon: {
193
203
  icon: props.appendIcon
194
204
  }
195
205
  }
196
- }, {
197
- default: () => [_createVNode("span", {
198
- "class": "v-btn__append"
199
- }, [slots.append?.() ?? _createVNode(VIcon, null, null)])]
200
- }), !!props.loading && _createVNode("span", {
206
+ }, slots.append)]), !!props.loading && _createVNode("span", {
201
207
  "key": "loader",
202
208
  "class": "v-btn__loader"
203
209
  }, [slots.loader?.() ?? _createVNode(VProgressCircular, {