vuetify 3.1.13 → 3.1.14

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 (92) hide show
  1. package/dist/json/attributes.json +24 -8
  2. package/dist/json/importMap.json +4 -4
  3. package/dist/json/tags.json +5 -1
  4. package/dist/json/web-types.json +83 -47
  5. package/dist/vuetify-labs.css +439 -420
  6. package/dist/vuetify-labs.d.ts +548 -498
  7. package/dist/vuetify-labs.esm.js +92 -50
  8. package/dist/vuetify-labs.esm.js.map +1 -1
  9. package/dist/vuetify-labs.js +92 -50
  10. package/dist/vuetify-labs.min.css +2 -2
  11. package/dist/vuetify.css +53 -34
  12. package/dist/vuetify.d.ts +427 -403
  13. package/dist/vuetify.esm.js +74 -33
  14. package/dist/vuetify.esm.js.map +1 -1
  15. package/dist/vuetify.js +74 -33
  16. package/dist/vuetify.js.map +1 -1
  17. package/dist/vuetify.min.css +2 -2
  18. package/dist/vuetify.min.js +46 -36
  19. package/dist/vuetify.min.js.map +1 -1
  20. package/lib/components/VAutocomplete/VAutocomplete.mjs +5 -2
  21. package/lib/components/VAutocomplete/VAutocomplete.mjs.map +1 -1
  22. package/lib/components/VAutocomplete/index.d.ts +38 -32
  23. package/lib/components/VCheckbox/index.d.ts +14 -14
  24. package/lib/components/VChip/VChip.mjs +2 -2
  25. package/lib/components/VChip/VChip.mjs.map +1 -1
  26. package/lib/components/VChip/index.d.ts +14 -14
  27. package/lib/components/VCombobox/VCombobox.mjs +6 -3
  28. package/lib/components/VCombobox/VCombobox.mjs.map +1 -1
  29. package/lib/components/VCombobox/index.d.ts +38 -32
  30. package/lib/components/VField/VField.mjs +3 -3
  31. package/lib/components/VField/VField.mjs.map +1 -1
  32. package/lib/components/VField/index.d.ts +20 -20
  33. package/lib/components/VFileInput/VFileInput.mjs +0 -1
  34. package/lib/components/VFileInput/VFileInput.mjs.map +1 -1
  35. package/lib/components/VFileInput/index.d.ts +50 -56
  36. package/lib/components/VImg/VImg.mjs +3 -3
  37. package/lib/components/VImg/VImg.mjs.map +1 -1
  38. package/lib/components/VImg/index.d.ts +19 -19
  39. package/lib/components/VInput/VInput.mjs +2 -2
  40. package/lib/components/VInput/VInput.mjs.map +1 -1
  41. package/lib/components/VInput/index.d.ts +14 -14
  42. package/lib/components/VList/VList.mjs +2 -1
  43. package/lib/components/VList/VList.mjs.map +1 -1
  44. package/lib/components/VList/VListItem.css +12 -0
  45. package/lib/components/VList/VListItem.mjs +2 -2
  46. package/lib/components/VList/VListItem.mjs.map +1 -1
  47. package/lib/components/VList/VListItem.sass +5 -0
  48. package/lib/components/VList/index.d.ts +14 -14
  49. package/lib/components/VOverlay/useActivator.mjs +1 -0
  50. package/lib/components/VOverlay/useActivator.mjs.map +1 -1
  51. package/lib/components/VProgressCircular/VProgressCircular.css +3 -1
  52. package/lib/components/VProgressCircular/VProgressCircular.sass +3 -1
  53. package/lib/components/VProgressCircular/_variables.scss +1 -0
  54. package/lib/components/VProgressLinear/VProgressLinear.css +5 -2
  55. package/lib/components/VProgressLinear/VProgressLinear.sass +3 -0
  56. package/lib/components/VProgressLinear/_variables.scss +1 -1
  57. package/lib/components/VRadioGroup/index.d.ts +14 -14
  58. package/lib/components/VRangeSlider/index.d.ts +14 -14
  59. package/lib/components/VSelect/VSelect.mjs +31 -2
  60. package/lib/components/VSelect/VSelect.mjs.map +1 -1
  61. package/lib/components/VSelect/index.d.ts +38 -32
  62. package/lib/components/VSlider/index.d.ts +14 -14
  63. package/lib/components/VSwitch/index.d.ts +14 -14
  64. package/lib/components/VTextField/VTextField.mjs +2 -2
  65. package/lib/components/VTextField/VTextField.mjs.map +1 -1
  66. package/lib/components/VTextField/index.d.ts +83 -77
  67. package/lib/components/VTextarea/VTextarea.mjs +8 -5
  68. package/lib/components/VTextarea/VTextarea.mjs.map +1 -1
  69. package/lib/components/VTextarea/index.d.ts +56 -50
  70. package/lib/components/VToolbar/VToolbar.css +2 -0
  71. package/lib/components/VToolbar/VToolbar.sass +2 -0
  72. package/lib/components/index.d.ts +426 -402
  73. package/lib/composables/proxiedModel.mjs +2 -1
  74. package/lib/composables/proxiedModel.mjs.map +1 -1
  75. package/lib/composables/theme.mjs +1 -1
  76. package/lib/composables/theme.mjs.map +1 -1
  77. package/lib/entry-bundler.mjs +1 -1
  78. package/lib/framework.mjs +1 -1
  79. package/lib/index.d.ts +1 -1
  80. package/lib/labs/VDataTable/VDataTable.mjs +4 -4
  81. package/lib/labs/VDataTable/VDataTable.mjs.map +1 -1
  82. package/lib/labs/VDataTable/VDataTableRows.mjs +5 -7
  83. package/lib/labs/VDataTable/VDataTableRows.mjs.map +1 -1
  84. package/lib/labs/VDataTable/VDataTableServer.mjs +4 -3
  85. package/lib/labs/VDataTable/VDataTableServer.mjs.map +1 -1
  86. package/lib/labs/VDataTable/VDataTableVirtual.mjs +5 -3
  87. package/lib/labs/VDataTable/VDataTableVirtual.mjs.map +1 -1
  88. package/lib/labs/VDataTable/index.d.ts +122 -96
  89. package/lib/labs/components.d.ts +122 -96
  90. package/lib/util/helpers.mjs +1 -1
  91. package/lib/util/helpers.mjs.map +1 -1
  92. package/package.json +3 -3
@@ -5,8 +5,8 @@ interface FilterPropsOptions<PropsOptions extends Readonly<ComponentPropsOptions
5
5
  filterProps<T extends Partial<Props>, U extends Exclude<keyof Props, Exclude<keyof Props, keyof T>>>(props: T): [yes: Partial<Pick<T, U>>, no: Omit<T, U>];
6
6
  }
7
7
 
8
- type EventProp<T = (...args: any[]) => any> = T | T[];
9
- declare const EventProp: PropType<EventProp<(...args: any[]) => any>>;
8
+ type EventProp<T extends any[] = any[], F = (...args: T) => any> = F | F[];
9
+ declare const EventProp: <T extends any[] = any[]>() => PropType<EventProp<T, (...args: T) => any>>;
10
10
 
11
11
  type Density = null | 'default' | 'comfortable' | 'compact';
12
12
 
@@ -62,8 +62,8 @@ declare const VInput: {
62
62
  modelValue?: any;
63
63
  prependIcon?: IconValue | undefined;
64
64
  appendIcon?: IconValue | undefined;
65
- 'onClick:append'?: EventProp<(...args: any[]) => any> | undefined;
66
- 'onClick:prepend'?: EventProp<(...args: any[]) => any> | undefined;
65
+ 'onClick:append'?: EventProp<[MouseEvent], (args_0: MouseEvent) => any> | undefined;
66
+ 'onClick:prepend'?: EventProp<[MouseEvent], (args_0: MouseEvent) => any> | undefined;
67
67
  validateOn?: "input" | "blur" | "submit" | undefined;
68
68
  validationValue?: any;
69
69
  hideDetails?: boolean | "auto" | undefined;
@@ -125,8 +125,8 @@ declare const VInput: {
125
125
  modelValue?: any;
126
126
  prependIcon?: IconValue | undefined;
127
127
  appendIcon?: IconValue | undefined;
128
- 'onClick:append'?: EventProp<(...args: any[]) => any> | undefined;
129
- 'onClick:prepend'?: EventProp<(...args: any[]) => any> | undefined;
128
+ 'onClick:append'?: EventProp<[MouseEvent], (args_0: MouseEvent) => any> | undefined;
129
+ 'onClick:prepend'?: EventProp<[MouseEvent], (args_0: MouseEvent) => any> | undefined;
130
130
  validateOn?: "input" | "blur" | "submit" | undefined;
131
131
  validationValue?: any;
132
132
  hideDetails?: boolean | "auto" | undefined;
@@ -211,8 +211,8 @@ declare const VInput: {
211
211
  modelValue?: any;
212
212
  prependIcon?: IconValue | undefined;
213
213
  appendIcon?: IconValue | undefined;
214
- 'onClick:append'?: EventProp<(...args: any[]) => any> | undefined;
215
- 'onClick:prepend'?: EventProp<(...args: any[]) => any> | undefined;
214
+ 'onClick:append'?: EventProp<[MouseEvent], (args_0: MouseEvent) => any> | undefined;
215
+ 'onClick:prepend'?: EventProp<[MouseEvent], (args_0: MouseEvent) => any> | undefined;
216
216
  validateOn?: "input" | "blur" | "submit" | undefined;
217
217
  validationValue?: any;
218
218
  hideDetails?: boolean | "auto" | undefined;
@@ -268,8 +268,8 @@ declare const VInput: {
268
268
  modelValue?: any;
269
269
  prependIcon?: IconValue | undefined;
270
270
  appendIcon?: IconValue | undefined;
271
- 'onClick:append'?: EventProp<(...args: any[]) => any> | undefined;
272
- 'onClick:prepend'?: EventProp<(...args: any[]) => any> | undefined;
271
+ 'onClick:append'?: EventProp<[MouseEvent], (args_0: MouseEvent) => any> | undefined;
272
+ 'onClick:prepend'?: EventProp<[MouseEvent], (args_0: MouseEvent) => any> | undefined;
273
273
  validateOn?: "input" | "blur" | "submit" | undefined;
274
274
  validationValue?: any;
275
275
  hideDetails?: boolean | "auto" | undefined;
@@ -356,8 +356,8 @@ declare const VInput: {
356
356
  default: string;
357
357
  validator: (v: any) => boolean;
358
358
  };
359
- 'onClick:prepend': PropType<EventProp<(...args: any[]) => any>>;
360
- 'onClick:append': PropType<EventProp<(...args: any[]) => any>>;
359
+ 'onClick:prepend': PropType<EventProp<[MouseEvent], (args_0: MouseEvent) => any>>;
360
+ 'onClick:append': PropType<EventProp<[MouseEvent], (args_0: MouseEvent) => any>>;
361
361
  }, vue.ExtractPropTypes<{
362
362
  focused: BooleanConstructor;
363
363
  disabled: BooleanConstructor;
@@ -398,8 +398,8 @@ declare const VInput: {
398
398
  default: string;
399
399
  validator: (v: any) => boolean;
400
400
  };
401
- 'onClick:prepend': PropType<EventProp<(...args: any[]) => any>>;
402
- 'onClick:append': PropType<EventProp<(...args: any[]) => any>>;
401
+ 'onClick:prepend': PropType<EventProp<[MouseEvent], (args_0: MouseEvent) => any>>;
402
+ 'onClick:append': PropType<EventProp<[MouseEvent], (args_0: MouseEvent) => any>>;
403
403
  }>>;
404
404
  type VInput = InstanceType<typeof VInput>;
405
405
 
@@ -174,7 +174,8 @@ export const VList = genericComponent()({
174
174
  }
175
175
  function focus(location) {
176
176
  if (!contentRef.value) return;
177
- const focusable = [...contentRef.value.querySelectorAll('button, [href], input, select, textarea, [tabindex]:not([tabindex="-1"])')].filter(el => !el.hasAttribute('disabled'));
177
+ const targets = ['button', '[href]', 'input', 'select', 'textarea', '[tabindex]'].map(s => `${s}:not([tabindex="-1"])`).join(', ');
178
+ const focusable = [...contentRef.value.querySelectorAll(targets)].filter(el => !el.hasAttribute('disabled'));
178
179
  const idx = focusable.indexOf(document.activeElement);
179
180
  if (!location) {
180
181
  if (!contentRef.value.contains(document.activeElement)) {
@@ -1 +1 @@
1
- {"version":3,"file":"VList.mjs","names":["VListChildren","createList","makeBorderProps","useBorder","makeDensityProps","useDensity","makeDimensionProps","useDimension","makeElevationProps","useElevation","makeItemsProps","makeNestedProps","useNested","makeRoundedProps","useRounded","makeTagProps","makeThemeProps","provideTheme","makeVariantProps","provideDefaults","useBackgroundColor","computed","ref","toRef","genericComponent","getPropertyFromItem","pick","useRender","isPrimitive","value","transformItem","props","item","type","itemType","title","itemTitle","itemValue","undefined","children","itemChildren","itemProps","_props","transformItems","raw","items","array","push","useListItems","VList","name","activeColor","String","activeClass","bgColor","disabled","Boolean","lines","default","nav","selectStrategy","openStrategy","variant","emits","val","setup","_ref","slots","themeClasses","backgroundColorClasses","backgroundColorStyles","borderClasses","densityClasses","dimensionStyles","elevationClasses","roundedClasses","open","select","lineClasses","color","VListGroup","VListItem","density","isFocused","contentRef","onFocusin","e","onFocusout","onFocus","relatedTarget","contains","focus","onKeydown","key","preventDefault","location","focusable","querySelectorAll","filter","el","hasAttribute","idx","indexOf","document","activeElement","at","idxx","inc","offsetParent","length","_createVNode","tag"],"sources":["../../../src/components/VList/VList.tsx"],"sourcesContent":["// Styles\nimport './VList.sass'\n\n// Components\nimport { VListChildren } from './VListChildren'\n\n// Composables\nimport { createList } from './list'\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 { makeItemsProps } from '@/composables/items'\nimport { makeNestedProps, useNested } from '@/composables/nested/nested'\nimport { makeRoundedProps, useRounded } from '@/composables/rounded'\nimport { makeTagProps } from '@/composables/tag'\nimport { makeThemeProps, provideTheme } from '@/composables/theme'\nimport { makeVariantProps } from '@/composables/variant'\nimport { provideDefaults } from '@/composables/defaults'\nimport { useBackgroundColor } from '@/composables/color'\n\n// Utilities\nimport { computed, ref, toRef } from 'vue'\nimport { genericComponent, getPropertyFromItem, pick, useRender } from '@/util'\n\n// Types\nimport type { InternalItem, ItemProps } from '@/composables/items'\nimport type { SlotsToProps } from '@/util'\nimport type { PropType } from 'vue'\n\nexport interface InternalListItem extends InternalItem {\n type?: 'item' | 'subheader' | 'divider'\n}\n\nfunction isPrimitive (value: unknown): value is string | number | boolean {\n return typeof value === 'string' || typeof value === 'number' || typeof value === 'boolean'\n}\n\nfunction transformItem (props: ItemProps & { itemType: string }, item: any): InternalListItem {\n const type = getPropertyFromItem(item, props.itemType, 'item')\n const title = isPrimitive(item) ? item : getPropertyFromItem(item, props.itemTitle)\n const value = getPropertyFromItem(item, props.itemValue, undefined)\n const children = getPropertyFromItem(item, props.itemChildren)\n const itemProps = props.itemProps === true ? pick(item, ['children'])[1] : getPropertyFromItem(item, props.itemProps)\n\n const _props = {\n title,\n value,\n ...itemProps,\n }\n\n return {\n type,\n title: _props.title,\n value: _props.value,\n props: _props,\n children: type === 'item' && children ? transformItems(props, children) : undefined,\n raw: item,\n }\n}\n\nfunction transformItems (props: ItemProps & { itemType: string }, items: (string | object)[]) {\n const array: InternalListItem[] = []\n\n for (const item of items) {\n array.push(transformItem(props, item))\n }\n\n return array\n}\n\nfunction useListItems (props: ItemProps & { itemType: string }) {\n const items = computed(() => transformItems(props, props.items))\n\n return { items }\n}\n\nexport const VList = genericComponent<new <T>() => {\n $props: {\n items?: T[]\n } & SlotsToProps<{\n subheader: []\n header: [{ props: Record<string, unknown> }]\n item: [T]\n }>\n}>()({\n name: 'VList',\n\n props: {\n activeColor: String,\n activeClass: String,\n bgColor: String,\n disabled: Boolean,\n lines: {\n type: [Boolean, String] as PropType<'one' | 'two' | 'three' | false>,\n default: 'one',\n },\n nav: Boolean,\n\n ...makeNestedProps({\n selectStrategy: 'single-leaf' as const,\n openStrategy: 'list' as const,\n }),\n ...makeBorderProps(),\n ...makeDensityProps(),\n ...makeDimensionProps(),\n ...makeElevationProps(),\n itemType: {\n type: String,\n default: 'type',\n },\n ...makeItemsProps(),\n ...makeRoundedProps(),\n ...makeTagProps(),\n ...makeThemeProps(),\n ...makeVariantProps({ variant: 'text' } as const),\n },\n\n emits: {\n 'update:selected': (val: unknown[]) => true,\n 'update:opened': (val: unknown[]) => true,\n 'click:open': (value: { id: unknown, value: boolean, path: unknown[] }) => true,\n 'click:select': (value: { id: unknown, value: boolean, path: unknown[] }) => true,\n },\n\n setup (props, { slots }) {\n const { items } = useListItems(props)\n const { themeClasses } = provideTheme(props)\n const { backgroundColorClasses, backgroundColorStyles } = useBackgroundColor(toRef(props, 'bgColor'))\n const { borderClasses } = useBorder(props)\n const { densityClasses } = useDensity(props)\n const { dimensionStyles } = useDimension(props)\n const { elevationClasses } = useElevation(props)\n const { roundedClasses } = useRounded(props)\n const { open, select } = useNested(props)\n const lineClasses = computed(() => props.lines ? `v-list--${props.lines}-line` : undefined)\n const activeColor = toRef(props, 'activeColor')\n const color = toRef(props, 'color')\n\n createList()\n\n provideDefaults({\n VListGroup: {\n activeColor,\n color,\n },\n VListItem: {\n activeClass: toRef(props, 'activeClass'),\n activeColor,\n color,\n density: toRef(props, 'density'),\n disabled: toRef(props, 'disabled'),\n lines: toRef(props, 'lines'),\n nav: toRef(props, 'nav'),\n variant: toRef(props, 'variant'),\n },\n })\n\n const isFocused = ref(false)\n const contentRef = ref<HTMLElement>()\n function onFocusin (e: FocusEvent) {\n isFocused.value = true\n }\n\n function onFocusout (e: FocusEvent) {\n isFocused.value = false\n }\n\n function onFocus (e: FocusEvent) {\n if (\n !isFocused.value &&\n !(e.relatedTarget && contentRef.value?.contains(e.relatedTarget as Node))\n ) focus()\n }\n\n function onKeydown (e: KeyboardEvent) {\n if (!contentRef.value) return\n\n if (e.key === 'ArrowDown') {\n focus('next')\n } else if (e.key === 'ArrowUp') {\n focus('prev')\n } else if (e.key === 'Home') {\n focus('first')\n } else if (e.key === 'End') {\n focus('last')\n } else {\n return\n }\n\n e.preventDefault()\n }\n\n function focus (location?: 'next' | 'prev' | 'first' | 'last') {\n if (!contentRef.value) return\n\n const focusable = [...contentRef.value.querySelectorAll(\n 'button, [href], input, select, textarea, [tabindex]:not([tabindex=\"-1\"])'\n )].filter(el => !el.hasAttribute('disabled')) as HTMLElement[]\n const idx = focusable.indexOf(document.activeElement as HTMLElement)\n\n if (!location) {\n if (!contentRef.value.contains(document.activeElement)) {\n focusable[0]?.focus()\n }\n } else if (location === 'first') {\n focusable[0]?.focus()\n } else if (location === 'last') {\n focusable.at(-1)?.focus()\n } else {\n let el\n let idxx = idx\n const inc = location === 'next' ? 1 : -1\n do {\n idxx += inc\n el = focusable[idxx]\n } while ((!el || el.offsetParent == null) && idxx < focusable.length && idxx >= 0)\n if (el) el.focus()\n else focus(location === 'next' ? 'first' : 'last')\n }\n }\n\n useRender(() => {\n return (\n <props.tag\n ref={ contentRef }\n class={[\n 'v-list',\n {\n 'v-list--disabled': props.disabled,\n 'v-list--nav': props.nav,\n },\n themeClasses.value,\n backgroundColorClasses.value,\n borderClasses.value,\n densityClasses.value,\n elevationClasses.value,\n lineClasses.value,\n roundedClasses.value,\n ]}\n style={[\n backgroundColorStyles.value,\n dimensionStyles.value,\n ]}\n role=\"listbox\"\n aria-activedescendant={ undefined }\n onFocusin={ onFocusin }\n onFocusout={ onFocusout }\n onFocus={ onFocus }\n onKeydown={ onKeydown }\n >\n <VListChildren items={ items.value } v-slots={ slots }></VListChildren>\n </props.tag>\n )\n })\n\n return {\n open,\n select,\n focus,\n }\n },\n})\n\nexport type VList = InstanceType<typeof VList>\n"],"mappings":"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"}
1
+ {"version":3,"file":"VList.mjs","names":["VListChildren","createList","makeBorderProps","useBorder","makeDensityProps","useDensity","makeDimensionProps","useDimension","makeElevationProps","useElevation","makeItemsProps","makeNestedProps","useNested","makeRoundedProps","useRounded","makeTagProps","makeThemeProps","provideTheme","makeVariantProps","provideDefaults","useBackgroundColor","computed","ref","toRef","genericComponent","getPropertyFromItem","pick","useRender","isPrimitive","value","transformItem","props","item","type","itemType","title","itemTitle","itemValue","undefined","children","itemChildren","itemProps","_props","transformItems","raw","items","array","push","useListItems","VList","name","activeColor","String","activeClass","bgColor","disabled","Boolean","lines","default","nav","selectStrategy","openStrategy","variant","emits","val","setup","_ref","slots","themeClasses","backgroundColorClasses","backgroundColorStyles","borderClasses","densityClasses","dimensionStyles","elevationClasses","roundedClasses","open","select","lineClasses","color","VListGroup","VListItem","density","isFocused","contentRef","onFocusin","e","onFocusout","onFocus","relatedTarget","contains","focus","onKeydown","key","preventDefault","location","targets","map","s","join","focusable","querySelectorAll","filter","el","hasAttribute","idx","indexOf","document","activeElement","at","idxx","inc","offsetParent","length","_createVNode","tag"],"sources":["../../../src/components/VList/VList.tsx"],"sourcesContent":["// Styles\nimport './VList.sass'\n\n// Components\nimport { VListChildren } from './VListChildren'\n\n// Composables\nimport { createList } from './list'\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 { makeItemsProps } from '@/composables/items'\nimport { makeNestedProps, useNested } from '@/composables/nested/nested'\nimport { makeRoundedProps, useRounded } from '@/composables/rounded'\nimport { makeTagProps } from '@/composables/tag'\nimport { makeThemeProps, provideTheme } from '@/composables/theme'\nimport { makeVariantProps } from '@/composables/variant'\nimport { provideDefaults } from '@/composables/defaults'\nimport { useBackgroundColor } from '@/composables/color'\n\n// Utilities\nimport { computed, ref, toRef } from 'vue'\nimport { genericComponent, getPropertyFromItem, pick, useRender } from '@/util'\n\n// Types\nimport type { InternalItem, ItemProps } from '@/composables/items'\nimport type { SlotsToProps } from '@/util'\nimport type { PropType } from 'vue'\n\nexport interface InternalListItem extends InternalItem {\n type?: 'item' | 'subheader' | 'divider'\n}\n\nfunction isPrimitive (value: unknown): value is string | number | boolean {\n return typeof value === 'string' || typeof value === 'number' || typeof value === 'boolean'\n}\n\nfunction transformItem (props: ItemProps & { itemType: string }, item: any): InternalListItem {\n const type = getPropertyFromItem(item, props.itemType, 'item')\n const title = isPrimitive(item) ? item : getPropertyFromItem(item, props.itemTitle)\n const value = getPropertyFromItem(item, props.itemValue, undefined)\n const children = getPropertyFromItem(item, props.itemChildren)\n const itemProps = props.itemProps === true ? pick(item, ['children'])[1] : getPropertyFromItem(item, props.itemProps)\n\n const _props = {\n title,\n value,\n ...itemProps,\n }\n\n return {\n type,\n title: _props.title,\n value: _props.value,\n props: _props,\n children: type === 'item' && children ? transformItems(props, children) : undefined,\n raw: item,\n }\n}\n\nfunction transformItems (props: ItemProps & { itemType: string }, items: (string | object)[]) {\n const array: InternalListItem[] = []\n\n for (const item of items) {\n array.push(transformItem(props, item))\n }\n\n return array\n}\n\nfunction useListItems (props: ItemProps & { itemType: string }) {\n const items = computed(() => transformItems(props, props.items))\n\n return { items }\n}\n\nexport const VList = genericComponent<new <T>() => {\n $props: {\n items?: T[]\n } & SlotsToProps<{\n subheader: []\n header: [{ props: Record<string, unknown> }]\n item: [T]\n }>\n}>()({\n name: 'VList',\n\n props: {\n activeColor: String,\n activeClass: String,\n bgColor: String,\n disabled: Boolean,\n lines: {\n type: [Boolean, String] as PropType<'one' | 'two' | 'three' | false>,\n default: 'one',\n },\n nav: Boolean,\n\n ...makeNestedProps({\n selectStrategy: 'single-leaf' as const,\n openStrategy: 'list' as const,\n }),\n ...makeBorderProps(),\n ...makeDensityProps(),\n ...makeDimensionProps(),\n ...makeElevationProps(),\n itemType: {\n type: String,\n default: 'type',\n },\n ...makeItemsProps(),\n ...makeRoundedProps(),\n ...makeTagProps(),\n ...makeThemeProps(),\n ...makeVariantProps({ variant: 'text' } as const),\n },\n\n emits: {\n 'update:selected': (val: unknown[]) => true,\n 'update:opened': (val: unknown[]) => true,\n 'click:open': (value: { id: unknown, value: boolean, path: unknown[] }) => true,\n 'click:select': (value: { id: unknown, value: boolean, path: unknown[] }) => true,\n },\n\n setup (props, { slots }) {\n const { items } = useListItems(props)\n const { themeClasses } = provideTheme(props)\n const { backgroundColorClasses, backgroundColorStyles } = useBackgroundColor(toRef(props, 'bgColor'))\n const { borderClasses } = useBorder(props)\n const { densityClasses } = useDensity(props)\n const { dimensionStyles } = useDimension(props)\n const { elevationClasses } = useElevation(props)\n const { roundedClasses } = useRounded(props)\n const { open, select } = useNested(props)\n const lineClasses = computed(() => props.lines ? `v-list--${props.lines}-line` : undefined)\n const activeColor = toRef(props, 'activeColor')\n const color = toRef(props, 'color')\n\n createList()\n\n provideDefaults({\n VListGroup: {\n activeColor,\n color,\n },\n VListItem: {\n activeClass: toRef(props, 'activeClass'),\n activeColor,\n color,\n density: toRef(props, 'density'),\n disabled: toRef(props, 'disabled'),\n lines: toRef(props, 'lines'),\n nav: toRef(props, 'nav'),\n variant: toRef(props, 'variant'),\n },\n })\n\n const isFocused = ref(false)\n const contentRef = ref<HTMLElement>()\n function onFocusin (e: FocusEvent) {\n isFocused.value = true\n }\n\n function onFocusout (e: FocusEvent) {\n isFocused.value = false\n }\n\n function onFocus (e: FocusEvent) {\n if (\n !isFocused.value &&\n !(e.relatedTarget && contentRef.value?.contains(e.relatedTarget as Node))\n ) focus()\n }\n\n function onKeydown (e: KeyboardEvent) {\n if (!contentRef.value) return\n\n if (e.key === 'ArrowDown') {\n focus('next')\n } else if (e.key === 'ArrowUp') {\n focus('prev')\n } else if (e.key === 'Home') {\n focus('first')\n } else if (e.key === 'End') {\n focus('last')\n } else {\n return\n }\n\n e.preventDefault()\n }\n\n function focus (location?: 'next' | 'prev' | 'first' | 'last') {\n if (!contentRef.value) return\n\n const targets = ['button', '[href]', 'input', 'select', 'textarea', '[tabindex]'].map(s => `${s}:not([tabindex=\"-1\"])`).join(', ')\n const focusable = [...contentRef.value.querySelectorAll(targets)].filter(el => !el.hasAttribute('disabled')) as HTMLElement[]\n const idx = focusable.indexOf(document.activeElement as HTMLElement)\n\n if (!location) {\n if (!contentRef.value.contains(document.activeElement)) {\n focusable[0]?.focus()\n }\n } else if (location === 'first') {\n focusable[0]?.focus()\n } else if (location === 'last') {\n focusable.at(-1)?.focus()\n } else {\n let el\n let idxx = idx\n const inc = location === 'next' ? 1 : -1\n do {\n idxx += inc\n el = focusable[idxx]\n } while ((!el || el.offsetParent == null) && idxx < focusable.length && idxx >= 0)\n if (el) el.focus()\n else focus(location === 'next' ? 'first' : 'last')\n }\n }\n\n useRender(() => {\n return (\n <props.tag\n ref={ contentRef }\n class={[\n 'v-list',\n {\n 'v-list--disabled': props.disabled,\n 'v-list--nav': props.nav,\n },\n themeClasses.value,\n backgroundColorClasses.value,\n borderClasses.value,\n densityClasses.value,\n elevationClasses.value,\n lineClasses.value,\n roundedClasses.value,\n ]}\n style={[\n backgroundColorStyles.value,\n dimensionStyles.value,\n ]}\n role=\"listbox\"\n aria-activedescendant={ undefined }\n onFocusin={ onFocusin }\n onFocusout={ onFocusout }\n onFocus={ onFocus }\n onKeydown={ onKeydown }\n >\n <VListChildren items={ items.value } v-slots={ slots }></VListChildren>\n </props.tag>\n )\n })\n\n return {\n open,\n select,\n focus,\n }\n },\n})\n\nexport type VList = InstanceType<typeof VList>\n"],"mappings":"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"}
@@ -244,6 +244,10 @@
244
244
  padding-top: 16px;
245
245
  padding-bottom: 16px;
246
246
  }
247
+ .v-list-item--density-default.v-list-item--three-line .v-list-item__prepend,
248
+ .v-list-item--density-default.v-list-item--three-line .v-list-item__append {
249
+ padding-top: 8px;
250
+ }
247
251
  .v-list-item--density-default:not(.v-list-item--nav).v-list-item--one-line {
248
252
  padding-inline-start: 16px;
249
253
  padding-inline-end: 16px;
@@ -273,6 +277,10 @@
273
277
  padding-top: 12px;
274
278
  padding-bottom: 12px;
275
279
  }
280
+ .v-list-item--density-comfortable.v-list-item--three-line .v-list-item__prepend,
281
+ .v-list-item--density-comfortable.v-list-item--three-line .v-list-item__append {
282
+ padding-top: 6px;
283
+ }
276
284
  .v-list-item--density-comfortable:not(.v-list-item--nav).v-list-item--one-line {
277
285
  padding-inline-start: 16px;
278
286
  padding-inline-end: 16px;
@@ -302,6 +310,10 @@
302
310
  padding-top: 8px;
303
311
  padding-bottom: 8px;
304
312
  }
313
+ .v-list-item--density-compact.v-list-item--three-line .v-list-item__prepend,
314
+ .v-list-item--density-compact.v-list-item--three-line .v-list-item__append {
315
+ padding-top: 4px;
316
+ }
305
317
  .v-list-item--density-compact:not(.v-list-item--nav).v-list-item--one-line {
306
318
  padding-inline-start: 16px;
307
319
  padding-inline-end: 16px;
@@ -53,8 +53,8 @@ export const VListItem = genericComponent()({
53
53
  subtitle: [String, Number, Boolean],
54
54
  title: [String, Number, Boolean],
55
55
  value: null,
56
- onClick: EventProp,
57
- onClickOnce: EventProp,
56
+ onClick: EventProp(),
57
+ onClickOnce: EventProp(),
58
58
  ...makeBorderProps(),
59
59
  ...makeDensityProps(),
60
60
  ...makeDimensionProps(),
@@ -1 +1 @@
1
- {"version":3,"file":"VListItem.mjs","names":["VAvatar","VDefaultsProvider","VIcon","VListItemSubtitle","VListItemTitle","Ripple","genOverlays","makeVariantProps","useVariant","IconValue","makeBorderProps","useBorder","makeDensityProps","useDensity","makeDimensionProps","useDimension","makeElevationProps","useElevation","makeRoundedProps","useRounded","makeRouterProps","useLink","makeTagProps","makeThemeProps","provideTheme","useList","useNestedItem","computed","watch","EventProp","genericComponent","useRender","VListItem","name","directives","props","active","type","Boolean","default","undefined","activeClass","String","activeColor","appendAvatar","appendIcon","disabled","lines","link","nav","prependAvatar","prependIcon","ripple","subtitle","Number","title","value","onClick","onClickOnce","variant","emits","click","e","setup","_ref","attrs","slots","emit","id","href","select","isSelected","isIndeterminate","isGroupActivator","root","parent","openOnSelect","list","isActive","isLink","isClickable","roundedProps","rounded","variantProps","color","val","open","immediate","themeClasses","borderClasses","colorClasses","colorStyles","variantClasses","densityClasses","dimensionStyles","elevationClasses","roundedClasses","lineClasses","slotProps","navigate","onKeyDown","key","preventDefault","Tag","tag","hasColor","hasTitle","hasSubtitle","hasAppendMedia","hasAppend","append","hasPrependMedia","hasPrepend","prepend","updateHasPrepend","_withDirectives","_createVNode","_Fragment","density","image","icon","VListItemAction","start","end","_resolveDirective"],"sources":["../../../src/components/VList/VListItem.tsx"],"sourcesContent":["// Styles\nimport './VListItem.sass'\n\n// Components\nimport { VAvatar } from '@/components/VAvatar'\nimport { VDefaultsProvider } from '@/components/VDefaultsProvider'\nimport { VIcon } from '@/components/VIcon'\nimport { VListItemSubtitle } from './VListItemSubtitle'\nimport { VListItemTitle } from './VListItemTitle'\n\n// Directives\nimport { Ripple } from '@/directives/ripple'\n\n// Composables\nimport { genOverlays, makeVariantProps, useVariant } from '@/composables/variant'\nimport { IconValue } from '@/composables/icons'\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 { makeRoundedProps, useRounded } from '@/composables/rounded'\nimport { makeRouterProps, useLink } from '@/composables/router'\nimport { makeTagProps } from '@/composables/tag'\nimport { makeThemeProps, provideTheme } from '@/composables/theme'\nimport { useList } from './list'\nimport { useNestedItem } from '@/composables/nested/nested'\n\n// Utilities\nimport { computed, watch } from 'vue'\nimport { EventProp, genericComponent, useRender } from '@/util'\n\n// Types\nimport type { PropType } from 'vue'\n\ntype ListItemSlot = {\n isActive: boolean\n activate: (value: boolean) => void\n isSelected: boolean\n select: (value: boolean) => void\n}\n\nexport type ListItemTitleSlot = {\n title?: string\n}\n\nexport type ListItemSubtitleSlot = {\n subtitle?: string\n}\n\ntype VListItemSlots = {\n prepend: [ListItemSlot]\n append: [ListItemSlot]\n default: [ListItemSlot]\n title: [ListItemTitleSlot]\n subtitle: [ListItemSubtitleSlot]\n}\n\nexport const VListItem = genericComponent<VListItemSlots>()({\n name: 'VListItem',\n\n directives: { Ripple },\n\n props: {\n active: {\n type: Boolean,\n default: undefined,\n },\n activeClass: String,\n activeColor: String,\n appendAvatar: String,\n appendIcon: IconValue,\n disabled: Boolean,\n lines: String as PropType<'one' | 'two' | 'three'>,\n link: {\n type: Boolean,\n default: undefined,\n },\n nav: Boolean,\n prependAvatar: String,\n prependIcon: IconValue,\n ripple: {\n type: Boolean,\n default: true,\n },\n subtitle: [String, Number, Boolean],\n title: [String, Number, Boolean],\n value: null,\n\n onClick: EventProp,\n onClickOnce: EventProp,\n\n ...makeBorderProps(),\n ...makeDensityProps(),\n ...makeDimensionProps(),\n ...makeElevationProps(),\n ...makeRoundedProps(),\n ...makeRouterProps(),\n ...makeTagProps(),\n ...makeThemeProps(),\n ...makeVariantProps({ variant: 'text' } as const),\n },\n\n emits: {\n click: (e: MouseEvent | KeyboardEvent) => true,\n },\n\n setup (props, { attrs, slots, emit }) {\n const link = useLink(props, attrs)\n const id = computed(() => props.value ?? link.href.value)\n const { select, isSelected, isIndeterminate, isGroupActivator, root, parent, openOnSelect } = useNestedItem(id, false)\n const list = useList()\n const isActive = computed(() =>\n props.active !== false &&\n (props.active || link.isActive?.value || isSelected.value)\n )\n const isLink = computed(() => props.link !== false && link.isLink.value)\n const isClickable = computed(() =>\n !props.disabled &&\n props.link !== false &&\n (props.link || link.isClickable.value || (props.value != null && !!list))\n )\n\n const roundedProps = computed(() => props.rounded || props.nav)\n const variantProps = computed(() => ({\n color: isActive.value ? props.activeColor ?? props.color : props.color,\n variant: props.variant,\n }))\n\n watch(() => link.isActive?.value, val => {\n if (val && parent.value != null) {\n root.open(parent.value, true)\n }\n\n if (val) {\n openOnSelect(val)\n }\n }, { immediate: true })\n\n const { themeClasses } = provideTheme(props)\n const { borderClasses } = useBorder(props)\n const { colorClasses, colorStyles, variantClasses } = useVariant(variantProps)\n const { densityClasses } = useDensity(props)\n const { dimensionStyles } = useDimension(props)\n const { elevationClasses } = useElevation(props)\n const { roundedClasses } = useRounded(roundedProps)\n const lineClasses = computed(() => props.lines ? `v-list-item--${props.lines}-line` : undefined)\n\n const slotProps = computed(() => ({\n isActive: isActive.value,\n select,\n isSelected: isSelected.value,\n isIndeterminate: isIndeterminate.value,\n }))\n\n function onClick (e: MouseEvent) {\n emit('click', e)\n\n if (isGroupActivator || !isClickable.value) return\n\n link.navigate?.(e)\n props.value != null && select(!isSelected.value, e)\n }\n\n function onKeyDown (e: KeyboardEvent) {\n if (e.key === 'Enter' || e.key === ' ') {\n e.preventDefault()\n onClick(e as any as MouseEvent)\n }\n }\n\n useRender(() => {\n const Tag = isLink.value ? 'a' : props.tag\n const hasColor = !list || isSelected.value || isActive.value\n const hasTitle = (slots.title || props.title)\n const hasSubtitle = (slots.subtitle || props.subtitle)\n const hasAppendMedia = !!(props.appendAvatar || props.appendIcon)\n const hasAppend = !!(hasAppendMedia || slots.append)\n const hasPrependMedia = !!(props.prependAvatar || props.prependIcon)\n const hasPrepend = !!(hasPrependMedia || slots.prepend)\n\n list?.updateHasPrepend(hasPrepend)\n\n return (\n <Tag\n class={[\n 'v-list-item',\n {\n 'v-list-item--active': isActive.value,\n 'v-list-item--disabled': props.disabled,\n 'v-list-item--link': isClickable.value,\n 'v-list-item--nav': props.nav,\n 'v-list-item--prepend': !hasPrepend && list?.hasPrepend.value,\n [`${props.activeClass}`]: props.activeClass && isActive.value,\n },\n themeClasses.value,\n borderClasses.value,\n hasColor ? colorClasses.value : undefined,\n densityClasses.value,\n elevationClasses.value,\n lineClasses.value,\n roundedClasses.value,\n variantClasses.value,\n ]}\n style={[\n hasColor ? colorStyles.value : undefined,\n dimensionStyles.value,\n ]}\n href={ link.href.value }\n tabindex={ isClickable.value ? 0 : undefined }\n onClick={ onClick }\n onKeydown={ isClickable.value && !isLink.value && onKeyDown }\n v-ripple={ isClickable.value && props.ripple }\n >\n { genOverlays(isClickable.value || isActive.value, 'v-list-item') }\n\n { hasPrepend && (\n <div key=\"prepend\" class=\"v-list-item__prepend\">\n { !slots.prepend ? (\n <>\n { props.prependAvatar && (\n <VAvatar\n key=\"prepend-avatar\"\n density={ props.density }\n image={ props.prependAvatar }\n />\n )}\n\n { props.prependIcon && (\n <VIcon\n key=\"prepend-icon\"\n density={ props.density }\n icon={ props.prependIcon }\n />\n )}\n </>\n ) : (\n <VDefaultsProvider\n key=\"prepend-defaults\"\n disabled={ !hasPrependMedia }\n defaults={{\n VAvatar: {\n density: props.density,\n image: props.prependAvatar,\n },\n VIcon: {\n density: props.density,\n icon: props.prependIcon,\n },\n VListItemAction: {\n start: true,\n },\n }}\n >\n { slots.prepend?.(slotProps.value) }\n </VDefaultsProvider>\n )}\n </div>\n )}\n\n <div class=\"v-list-item__content\" data-no-activator=\"\">\n { hasTitle && (\n <VListItemTitle key=\"title\">\n { slots.title?.({ title: props.title }) ?? props.title }\n </VListItemTitle>\n )}\n\n { hasSubtitle && (\n <VListItemSubtitle key=\"subtitle\">\n { slots.subtitle?.({ subtitle: props.subtitle }) ?? props.subtitle }\n </VListItemSubtitle>\n )}\n\n { slots.default?.(slotProps.value) }\n </div>\n\n { hasAppend && (\n <div key=\"append\" class=\"v-list-item__append\">\n { !slots.append ? (\n <>\n { props.appendIcon && (\n <VIcon\n key=\"append-icon\"\n density={ props.density }\n icon={ props.appendIcon }\n />\n )}\n\n { props.appendAvatar && (\n <VAvatar\n key=\"append-avatar\"\n density={ props.density }\n image={ props.appendAvatar }\n />\n )}\n </>\n ) : (\n <VDefaultsProvider\n key=\"append-defaults\"\n disabled={ !hasAppendMedia }\n defaults={{\n VAvatar: {\n density: props.density,\n image: props.appendAvatar,\n },\n VIcon: {\n density: props.density,\n icon: props.appendIcon,\n },\n VListItemAction: {\n end: true,\n },\n }}\n >\n { slots.append?.(slotProps.value) }\n </VDefaultsProvider>\n )}\n </div>\n )}\n </Tag>\n )\n })\n\n return {}\n },\n})\n\nexport type VListItem = InstanceType<typeof VListItem>\n"],"mappings":"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"}
1
+ {"version":3,"file":"VListItem.mjs","names":["VAvatar","VDefaultsProvider","VIcon","VListItemSubtitle","VListItemTitle","Ripple","genOverlays","makeVariantProps","useVariant","IconValue","makeBorderProps","useBorder","makeDensityProps","useDensity","makeDimensionProps","useDimension","makeElevationProps","useElevation","makeRoundedProps","useRounded","makeRouterProps","useLink","makeTagProps","makeThemeProps","provideTheme","useList","useNestedItem","computed","watch","EventProp","genericComponent","useRender","VListItem","name","directives","props","active","type","Boolean","default","undefined","activeClass","String","activeColor","appendAvatar","appendIcon","disabled","lines","link","nav","prependAvatar","prependIcon","ripple","subtitle","Number","title","value","onClick","onClickOnce","variant","emits","click","e","setup","_ref","attrs","slots","emit","id","href","select","isSelected","isIndeterminate","isGroupActivator","root","parent","openOnSelect","list","isActive","isLink","isClickable","roundedProps","rounded","variantProps","color","val","open","immediate","themeClasses","borderClasses","colorClasses","colorStyles","variantClasses","densityClasses","dimensionStyles","elevationClasses","roundedClasses","lineClasses","slotProps","navigate","onKeyDown","key","preventDefault","Tag","tag","hasColor","hasTitle","hasSubtitle","hasAppendMedia","hasAppend","append","hasPrependMedia","hasPrepend","prepend","updateHasPrepend","_withDirectives","_createVNode","_Fragment","density","image","icon","VListItemAction","start","end","_resolveDirective"],"sources":["../../../src/components/VList/VListItem.tsx"],"sourcesContent":["// Styles\nimport './VListItem.sass'\n\n// Components\nimport { VAvatar } from '@/components/VAvatar'\nimport { VDefaultsProvider } from '@/components/VDefaultsProvider'\nimport { VIcon } from '@/components/VIcon'\nimport { VListItemSubtitle } from './VListItemSubtitle'\nimport { VListItemTitle } from './VListItemTitle'\n\n// Directives\nimport { Ripple } from '@/directives/ripple'\n\n// Composables\nimport { genOverlays, makeVariantProps, useVariant } from '@/composables/variant'\nimport { IconValue } from '@/composables/icons'\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 { makeRoundedProps, useRounded } from '@/composables/rounded'\nimport { makeRouterProps, useLink } from '@/composables/router'\nimport { makeTagProps } from '@/composables/tag'\nimport { makeThemeProps, provideTheme } from '@/composables/theme'\nimport { useList } from './list'\nimport { useNestedItem } from '@/composables/nested/nested'\n\n// Utilities\nimport { computed, watch } from 'vue'\nimport { EventProp, genericComponent, useRender } from '@/util'\n\n// Types\nimport type { PropType } from 'vue'\n\ntype ListItemSlot = {\n isActive: boolean\n activate: (value: boolean) => void\n isSelected: boolean\n select: (value: boolean) => void\n}\n\nexport type ListItemTitleSlot = {\n title?: string\n}\n\nexport type ListItemSubtitleSlot = {\n subtitle?: string\n}\n\ntype VListItemSlots = {\n prepend: [ListItemSlot]\n append: [ListItemSlot]\n default: [ListItemSlot]\n title: [ListItemTitleSlot]\n subtitle: [ListItemSubtitleSlot]\n}\n\nexport const VListItem = genericComponent<VListItemSlots>()({\n name: 'VListItem',\n\n directives: { Ripple },\n\n props: {\n active: {\n type: Boolean,\n default: undefined,\n },\n activeClass: String,\n activeColor: String,\n appendAvatar: String,\n appendIcon: IconValue,\n disabled: Boolean,\n lines: String as PropType<'one' | 'two' | 'three'>,\n link: {\n type: Boolean,\n default: undefined,\n },\n nav: Boolean,\n prependAvatar: String,\n prependIcon: IconValue,\n ripple: {\n type: Boolean,\n default: true,\n },\n subtitle: [String, Number, Boolean],\n title: [String, Number, Boolean],\n value: null,\n\n onClick: EventProp<[MouseEvent]>(),\n onClickOnce: EventProp<[MouseEvent]>(),\n\n ...makeBorderProps(),\n ...makeDensityProps(),\n ...makeDimensionProps(),\n ...makeElevationProps(),\n ...makeRoundedProps(),\n ...makeRouterProps(),\n ...makeTagProps(),\n ...makeThemeProps(),\n ...makeVariantProps({ variant: 'text' } as const),\n },\n\n emits: {\n click: (e: MouseEvent | KeyboardEvent) => true,\n },\n\n setup (props, { attrs, slots, emit }) {\n const link = useLink(props, attrs)\n const id = computed(() => props.value ?? link.href.value)\n const { select, isSelected, isIndeterminate, isGroupActivator, root, parent, openOnSelect } = useNestedItem(id, false)\n const list = useList()\n const isActive = computed(() =>\n props.active !== false &&\n (props.active || link.isActive?.value || isSelected.value)\n )\n const isLink = computed(() => props.link !== false && link.isLink.value)\n const isClickable = computed(() =>\n !props.disabled &&\n props.link !== false &&\n (props.link || link.isClickable.value || (props.value != null && !!list))\n )\n\n const roundedProps = computed(() => props.rounded || props.nav)\n const variantProps = computed(() => ({\n color: isActive.value ? props.activeColor ?? props.color : props.color,\n variant: props.variant,\n }))\n\n watch(() => link.isActive?.value, val => {\n if (val && parent.value != null) {\n root.open(parent.value, true)\n }\n\n if (val) {\n openOnSelect(val)\n }\n }, { immediate: true })\n\n const { themeClasses } = provideTheme(props)\n const { borderClasses } = useBorder(props)\n const { colorClasses, colorStyles, variantClasses } = useVariant(variantProps)\n const { densityClasses } = useDensity(props)\n const { dimensionStyles } = useDimension(props)\n const { elevationClasses } = useElevation(props)\n const { roundedClasses } = useRounded(roundedProps)\n const lineClasses = computed(() => props.lines ? `v-list-item--${props.lines}-line` : undefined)\n\n const slotProps = computed(() => ({\n isActive: isActive.value,\n select,\n isSelected: isSelected.value,\n isIndeterminate: isIndeterminate.value,\n }))\n\n function onClick (e: MouseEvent) {\n emit('click', e)\n\n if (isGroupActivator || !isClickable.value) return\n\n link.navigate?.(e)\n props.value != null && select(!isSelected.value, e)\n }\n\n function onKeyDown (e: KeyboardEvent) {\n if (e.key === 'Enter' || e.key === ' ') {\n e.preventDefault()\n onClick(e as any as MouseEvent)\n }\n }\n\n useRender(() => {\n const Tag = isLink.value ? 'a' : props.tag\n const hasColor = !list || isSelected.value || isActive.value\n const hasTitle = (slots.title || props.title)\n const hasSubtitle = (slots.subtitle || props.subtitle)\n const hasAppendMedia = !!(props.appendAvatar || props.appendIcon)\n const hasAppend = !!(hasAppendMedia || slots.append)\n const hasPrependMedia = !!(props.prependAvatar || props.prependIcon)\n const hasPrepend = !!(hasPrependMedia || slots.prepend)\n\n list?.updateHasPrepend(hasPrepend)\n\n return (\n <Tag\n class={[\n 'v-list-item',\n {\n 'v-list-item--active': isActive.value,\n 'v-list-item--disabled': props.disabled,\n 'v-list-item--link': isClickable.value,\n 'v-list-item--nav': props.nav,\n 'v-list-item--prepend': !hasPrepend && list?.hasPrepend.value,\n [`${props.activeClass}`]: props.activeClass && isActive.value,\n },\n themeClasses.value,\n borderClasses.value,\n hasColor ? colorClasses.value : undefined,\n densityClasses.value,\n elevationClasses.value,\n lineClasses.value,\n roundedClasses.value,\n variantClasses.value,\n ]}\n style={[\n hasColor ? colorStyles.value : undefined,\n dimensionStyles.value,\n ]}\n href={ link.href.value }\n tabindex={ isClickable.value ? 0 : undefined }\n onClick={ onClick }\n onKeydown={ isClickable.value && !isLink.value && onKeyDown }\n v-ripple={ isClickable.value && props.ripple }\n >\n { genOverlays(isClickable.value || isActive.value, 'v-list-item') }\n\n { hasPrepend && (\n <div key=\"prepend\" class=\"v-list-item__prepend\">\n { !slots.prepend ? (\n <>\n { props.prependAvatar && (\n <VAvatar\n key=\"prepend-avatar\"\n density={ props.density }\n image={ props.prependAvatar }\n />\n )}\n\n { props.prependIcon && (\n <VIcon\n key=\"prepend-icon\"\n density={ props.density }\n icon={ props.prependIcon }\n />\n )}\n </>\n ) : (\n <VDefaultsProvider\n key=\"prepend-defaults\"\n disabled={ !hasPrependMedia }\n defaults={{\n VAvatar: {\n density: props.density,\n image: props.prependAvatar,\n },\n VIcon: {\n density: props.density,\n icon: props.prependIcon,\n },\n VListItemAction: {\n start: true,\n },\n }}\n >\n { slots.prepend?.(slotProps.value) }\n </VDefaultsProvider>\n )}\n </div>\n )}\n\n <div class=\"v-list-item__content\" data-no-activator=\"\">\n { hasTitle && (\n <VListItemTitle key=\"title\">\n { slots.title?.({ title: props.title }) ?? props.title }\n </VListItemTitle>\n )}\n\n { hasSubtitle && (\n <VListItemSubtitle key=\"subtitle\">\n { slots.subtitle?.({ subtitle: props.subtitle }) ?? props.subtitle }\n </VListItemSubtitle>\n )}\n\n { slots.default?.(slotProps.value) }\n </div>\n\n { hasAppend && (\n <div key=\"append\" class=\"v-list-item__append\">\n { !slots.append ? (\n <>\n { props.appendIcon && (\n <VIcon\n key=\"append-icon\"\n density={ props.density }\n icon={ props.appendIcon }\n />\n )}\n\n { props.appendAvatar && (\n <VAvatar\n key=\"append-avatar\"\n density={ props.density }\n image={ props.appendAvatar }\n />\n )}\n </>\n ) : (\n <VDefaultsProvider\n key=\"append-defaults\"\n disabled={ !hasAppendMedia }\n defaults={{\n VAvatar: {\n density: props.density,\n image: props.appendAvatar,\n },\n VIcon: {\n density: props.density,\n icon: props.appendIcon,\n },\n VListItemAction: {\n end: true,\n },\n }}\n >\n { slots.append?.(slotProps.value) }\n </VDefaultsProvider>\n )}\n </div>\n )}\n </Tag>\n )\n })\n\n return {}\n },\n})\n\nexport type VListItem = InstanceType<typeof VListItem>\n"],"mappings":"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"}
@@ -1,4 +1,5 @@
1
1
  @use 'sass:list'
2
+ @use 'sass:math'
2
3
  @use '../../styles/tools'
3
4
  @use './variables' as *
4
5
 
@@ -178,6 +179,10 @@
178
179
  padding-top: $three-line-padding
179
180
  padding-bottom: $three-line-padding
180
181
 
182
+ .v-list-item__prepend,
183
+ .v-list-item__append
184
+ padding-top: math.div($three-line-padding, 2)
185
+
181
186
  &:not(.v-list-item--nav)
182
187
  &.v-list-item--one-line
183
188
  padding-inline-start: list.nth($list-item-padding, 2)
@@ -8,8 +8,8 @@ interface FilterPropsOptions<PropsOptions extends Readonly<ComponentPropsOptions
8
8
  }
9
9
 
10
10
  type SelectItemKey = boolean | string | (string | number)[] | ((item: Record<string, any>, fallback?: any) => any);
11
- type EventProp<T = (...args: any[]) => any> = T | T[];
12
- declare const EventProp: PropType<EventProp<(...args: any[]) => any>>;
11
+ type EventProp<T extends any[] = any[], F = (...args: T) => any> = F | F[];
12
+ declare const EventProp: <T extends any[] = any[]>() => PropType<EventProp<T, (...args: T) => any>>;
13
13
 
14
14
  type SelectStrategyFn = (data: {
15
15
  id: unknown;
@@ -1198,8 +1198,8 @@ declare const VListItem: {
1198
1198
  minWidth?: string | number | undefined;
1199
1199
  value?: any;
1200
1200
  title?: string | number | boolean | undefined;
1201
- onClick?: EventProp<(...args: any[]) => any> | undefined;
1202
- onClickOnce?: EventProp<(...args: any[]) => any> | undefined;
1201
+ onClick?: EventProp<[MouseEvent], (args_0: MouseEvent) => any> | undefined;
1202
+ onClickOnce?: EventProp<[MouseEvent], (args_0: MouseEvent) => any> | undefined;
1203
1203
  href?: string | undefined;
1204
1204
  elevation?: string | number | undefined;
1205
1205
  to?: vue_router.RouteLocationRaw | undefined;
@@ -1279,8 +1279,8 @@ declare const VListItem: {
1279
1279
  minWidth?: string | number | undefined;
1280
1280
  value?: any;
1281
1281
  title?: string | number | boolean | undefined;
1282
- onClick?: EventProp<(...args: any[]) => any> | undefined;
1283
- onClickOnce?: EventProp<(...args: any[]) => any> | undefined;
1282
+ onClick?: EventProp<[MouseEvent], (args_0: MouseEvent) => any> | undefined;
1283
+ onClickOnce?: EventProp<[MouseEvent], (args_0: MouseEvent) => any> | undefined;
1284
1284
  href?: string | undefined;
1285
1285
  elevation?: string | number | undefined;
1286
1286
  to?: vue_router.RouteLocationRaw | undefined;
@@ -1380,8 +1380,8 @@ declare const VListItem: {
1380
1380
  minWidth?: string | number | undefined;
1381
1381
  value?: any;
1382
1382
  title?: string | number | boolean | undefined;
1383
- onClick?: EventProp<(...args: any[]) => any> | undefined;
1384
- onClickOnce?: EventProp<(...args: any[]) => any> | undefined;
1383
+ onClick?: EventProp<[MouseEvent], (args_0: MouseEvent) => any> | undefined;
1384
+ onClickOnce?: EventProp<[MouseEvent], (args_0: MouseEvent) => any> | undefined;
1385
1385
  href?: string | undefined;
1386
1386
  elevation?: string | number | undefined;
1387
1387
  to?: vue_router.RouteLocationRaw | undefined;
@@ -1451,8 +1451,8 @@ declare const VListItem: {
1451
1451
  minWidth?: string | number | undefined;
1452
1452
  value?: any;
1453
1453
  title?: string | number | boolean | undefined;
1454
- onClick?: EventProp<(...args: any[]) => any> | undefined;
1455
- onClickOnce?: EventProp<(...args: any[]) => any> | undefined;
1454
+ onClick?: EventProp<[MouseEvent], (args_0: MouseEvent) => any> | undefined;
1455
+ onClickOnce?: EventProp<[MouseEvent], (args_0: MouseEvent) => any> | undefined;
1456
1456
  href?: string | undefined;
1457
1457
  elevation?: string | number | undefined;
1458
1458
  to?: vue_router.RouteLocationRaw | undefined;
@@ -1573,8 +1573,8 @@ declare const VListItem: {
1573
1573
  subtitle: (StringConstructor | BooleanConstructor | NumberConstructor)[];
1574
1574
  title: (StringConstructor | BooleanConstructor | NumberConstructor)[];
1575
1575
  value: null;
1576
- onClick: PropType<EventProp<(...args: any[]) => any>>;
1577
- onClickOnce: PropType<EventProp<(...args: any[]) => any>>;
1576
+ onClick: PropType<EventProp<[MouseEvent], (args_0: MouseEvent) => any>>;
1577
+ onClickOnce: PropType<EventProp<[MouseEvent], (args_0: MouseEvent) => any>>;
1578
1578
  }, vue.ExtractPropTypes<{
1579
1579
  color: StringConstructor;
1580
1580
  variant: Omit<{
@@ -1638,8 +1638,8 @@ declare const VListItem: {
1638
1638
  subtitle: (StringConstructor | BooleanConstructor | NumberConstructor)[];
1639
1639
  title: (StringConstructor | BooleanConstructor | NumberConstructor)[];
1640
1640
  value: null;
1641
- onClick: PropType<EventProp<(...args: any[]) => any>>;
1642
- onClickOnce: PropType<EventProp<(...args: any[]) => any>>;
1641
+ onClick: PropType<EventProp<[MouseEvent], (args_0: MouseEvent) => any>>;
1642
+ onClickOnce: PropType<EventProp<[MouseEvent], (args_0: MouseEvent) => any>>;
1643
1643
  }>>;
1644
1644
  type VListItem = InstanceType<typeof VListItem>;
1645
1645
 
@@ -53,6 +53,7 @@ export function useActivator(props, _ref) {
53
53
  isActive.value = !isActive.value;
54
54
  },
55
55
  mouseenter: e => {
56
+ if (e.sourceCapabilities?.firesTouchEvents) return;
56
57
  isHovered = true;
57
58
  activatorEl.value = e.currentTarget || e.target;
58
59
  runOpenDelay();
@@ -1 +1 @@
1
- {"version":3,"file":"useActivator.mjs","names":["makeDelayProps","useDelay","VMenuSymbol","getCurrentInstance","IN_BROWSER","isComponentInstance","propsFactory","SUPPORTS_FOCUS_VISIBLE","computed","effectScope","inject","nextTick","onScopeDispose","ref","watch","watchEffect","makeActivatorProps","activator","String","Object","activatorProps","type","default","openOnClick","Boolean","undefined","openOnHover","openOnFocus","closeOnContentClick","useActivator","props","_ref","isActive","isTop","activatorEl","isHovered","isFocused","firstEnter","value","runOpenDelay","runCloseDelay","availableEvents","click","e","stopPropagation","currentTarget","target","mouseenter","mouseleave","focus","matches","blur","activatorEvents","events","contentEvents","menu","closeParents","scrimEvents","val","activatorRef","$el","vm","scope","run","_useActivator","stop","flush","immediate","_ref2","oldVal","getActivator","unbindActivatorProps","bindActivatorProps","el","arguments","length","_props","entries","forEach","_ref3","name","cb","addEventListener","keys","k","removeAttribute","setAttribute","_ref4","removeEventListener","selector","proxy","parentNode","hasAttribute","document","querySelector","nodeType","Node","ELEMENT_NODE"],"sources":["../../../src/components/VOverlay/useActivator.tsx"],"sourcesContent":["// Composables\nimport { makeDelayProps, useDelay } from '@/composables/delay'\nimport { VMenuSymbol } from '@/components/VMenu/shared'\n\n// Utilities\nimport { getCurrentInstance, IN_BROWSER, isComponentInstance, propsFactory, SUPPORTS_FOCUS_VISIBLE } from '@/util'\nimport {\n computed,\n effectScope,\n inject,\n nextTick,\n onScopeDispose,\n ref,\n watch,\n watchEffect,\n} from 'vue'\n\n// Types\nimport type { DelayProps } from '@/composables/delay'\nimport type {\n ComponentInternalInstance,\n ComponentPublicInstance,\n EffectScope,\n PropType,\n Ref,\n} from 'vue'\n\ninterface ActivatorProps extends DelayProps {\n activator?: 'parent' | string | Element | ComponentPublicInstance\n activatorProps: Record<string, any>\n\n openOnClick: boolean | undefined\n openOnHover: boolean\n openOnFocus: boolean | undefined\n\n closeOnContentClick: boolean\n}\n\nexport const makeActivatorProps = propsFactory({\n activator: [String, Object] as PropType<ActivatorProps['activator']>,\n activatorProps: {\n type: Object as PropType<ActivatorProps['activatorProps']>,\n default: () => ({}),\n },\n\n openOnClick: {\n type: Boolean,\n default: undefined,\n },\n openOnHover: Boolean,\n openOnFocus: {\n type: Boolean,\n default: undefined,\n },\n\n closeOnContentClick: Boolean,\n\n ...makeDelayProps(),\n}, 'v-overlay-activator')\n\nexport function useActivator (\n props: ActivatorProps,\n { isActive, isTop }: { isActive: Ref<boolean>, isTop: Ref<boolean> }\n) {\n const activatorEl = ref<HTMLElement>()\n\n let isHovered = false\n let isFocused = false\n let firstEnter = true\n\n const openOnFocus = computed(() => props.openOnFocus || (props.openOnFocus == null && props.openOnHover))\n const openOnClick = computed(() => props.openOnClick || (props.openOnClick == null && !props.openOnHover && !openOnFocus.value))\n\n const { runOpenDelay, runCloseDelay } = useDelay(props, value => {\n if (\n value === (\n (props.openOnHover && isHovered) ||\n (openOnFocus.value && isFocused)\n ) && !(props.openOnHover && isActive.value && !isTop.value)\n ) {\n if (isActive.value !== value) {\n firstEnter = true\n }\n isActive.value = value\n }\n })\n\n const availableEvents = {\n click: (e: MouseEvent) => {\n e.stopPropagation()\n activatorEl.value = (e.currentTarget || e.target) as HTMLElement\n isActive.value = !isActive.value\n },\n mouseenter: (e: MouseEvent) => {\n isHovered = true\n activatorEl.value = (e.currentTarget || e.target) as HTMLElement\n runOpenDelay()\n },\n mouseleave: (e: MouseEvent) => {\n isHovered = false\n runCloseDelay()\n },\n focus: (e: FocusEvent) => {\n if (\n SUPPORTS_FOCUS_VISIBLE &&\n !(e.target as HTMLElement).matches(':focus-visible')\n ) return\n\n isFocused = true\n e.stopPropagation()\n activatorEl.value = (e.currentTarget || e.target) as HTMLElement\n\n runOpenDelay()\n },\n blur: (e: FocusEvent) => {\n isFocused = false\n e.stopPropagation()\n\n runCloseDelay()\n },\n }\n\n const activatorEvents = computed(() => {\n const events: Partial<typeof availableEvents> = {}\n\n if (openOnClick.value) {\n events.click = availableEvents.click\n }\n if (props.openOnHover) {\n events.mouseenter = availableEvents.mouseenter\n events.mouseleave = availableEvents.mouseleave\n }\n if (openOnFocus.value) {\n events.focus = availableEvents.focus\n events.blur = availableEvents.blur\n }\n\n return events\n })\n\n const contentEvents = computed(() => {\n const events: Partial<typeof availableEvents> = {}\n\n if (props.openOnHover) {\n events.mouseenter = () => {\n isHovered = true\n runOpenDelay()\n }\n events.mouseleave = () => {\n isHovered = false\n runCloseDelay()\n }\n }\n\n if (props.closeOnContentClick) {\n const menu = inject(VMenuSymbol, null)\n events.click = () => {\n isActive.value = false\n menu?.closeParents()\n }\n }\n\n return events\n })\n\n const scrimEvents = computed(() => {\n const events: Partial<typeof availableEvents> = {}\n if (props.openOnHover) {\n events.mouseenter = () => {\n if (firstEnter) {\n isHovered = true\n firstEnter = false\n runOpenDelay()\n }\n }\n events.mouseleave = () => {\n isHovered = false\n runCloseDelay()\n }\n }\n\n return events\n })\n\n watch(isTop, val => {\n if (val && (\n (props.openOnHover && !isHovered && (!openOnFocus.value || !isFocused)) ||\n (openOnFocus.value && !isFocused && (!props.openOnHover || !isHovered))\n )) {\n isActive.value = false\n }\n })\n\n const activatorRef = ref()\n watchEffect(() => {\n if (!activatorRef.value) return\n\n nextTick(() => {\n const activator = activatorRef.value\n activatorEl.value = isComponentInstance(activator) ? activator.$el : activator\n })\n })\n\n const vm = getCurrentInstance('useActivator')\n let scope: EffectScope\n watch(() => !!props.activator, val => {\n if (val && IN_BROWSER) {\n scope = effectScope()\n scope.run(() => {\n _useActivator(props, vm, { activatorEl, activatorEvents })\n })\n } else if (scope) {\n scope.stop()\n }\n }, { flush: 'post', immediate: true })\n\n onScopeDispose(() => {\n scope?.stop()\n })\n\n return { activatorEl, activatorRef, activatorEvents, contentEvents, scrimEvents }\n}\n\nfunction _useActivator (\n props: ActivatorProps,\n vm: ComponentInternalInstance,\n { activatorEl, activatorEvents }: Pick<ReturnType<typeof useActivator>, 'activatorEl' | 'activatorEvents'>\n) {\n watch(() => props.activator, (val, oldVal) => {\n if (oldVal && val !== oldVal) {\n const activator = getActivator(oldVal)\n activator && unbindActivatorProps(activator)\n }\n if (val) {\n nextTick(() => bindActivatorProps())\n }\n }, { immediate: true })\n\n watch(() => props.activatorProps, () => {\n bindActivatorProps()\n })\n\n onScopeDispose(() => {\n unbindActivatorProps()\n })\n\n function bindActivatorProps (el = getActivator(), _props = props.activatorProps) {\n if (!el) return\n\n Object.entries(activatorEvents.value).forEach(([name, cb]) => {\n el.addEventListener(name, cb as (e: Event) => void)\n })\n\n Object.keys(_props).forEach(k => {\n if (_props[k] == null) {\n el.removeAttribute(k)\n } else {\n el.setAttribute(k, _props[k])\n }\n })\n }\n\n function unbindActivatorProps (el = getActivator(), _props = props.activatorProps) {\n if (!el) return\n\n Object.entries(activatorEvents.value).forEach(([name, cb]) => {\n el.removeEventListener(name, cb as (e: Event) => void)\n })\n\n Object.keys(_props).forEach(k => {\n el.removeAttribute(k)\n })\n }\n\n function getActivator (selector = props.activator): HTMLElement | undefined {\n let activator\n if (selector) {\n if (selector === 'parent') {\n let el = vm?.proxy?.$el?.parentNode\n while (el.hasAttribute('data-no-activator')) {\n el = el.parentNode\n }\n activator = el\n } else if (typeof selector === 'string') {\n // Selector\n activator = document.querySelector(selector)\n } else if ('$el' in selector) {\n // Component (ref)\n activator = selector.$el\n } else {\n // HTMLElement | Element\n activator = selector\n }\n }\n\n // The activator should only be a valid element (Ignore comments and text nodes)\n activatorEl.value = activator?.nodeType === Node.ELEMENT_NODE ? activator : null\n\n return activatorEl.value\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"useActivator.mjs","names":["makeDelayProps","useDelay","VMenuSymbol","getCurrentInstance","IN_BROWSER","isComponentInstance","propsFactory","SUPPORTS_FOCUS_VISIBLE","computed","effectScope","inject","nextTick","onScopeDispose","ref","watch","watchEffect","makeActivatorProps","activator","String","Object","activatorProps","type","default","openOnClick","Boolean","undefined","openOnHover","openOnFocus","closeOnContentClick","useActivator","props","_ref","isActive","isTop","activatorEl","isHovered","isFocused","firstEnter","value","runOpenDelay","runCloseDelay","availableEvents","click","e","stopPropagation","currentTarget","target","mouseenter","sourceCapabilities","firesTouchEvents","mouseleave","focus","matches","blur","activatorEvents","events","contentEvents","menu","closeParents","scrimEvents","val","activatorRef","$el","vm","scope","run","_useActivator","stop","flush","immediate","_ref2","oldVal","getActivator","unbindActivatorProps","bindActivatorProps","el","arguments","length","_props","entries","forEach","_ref3","name","cb","addEventListener","keys","k","removeAttribute","setAttribute","_ref4","removeEventListener","selector","proxy","parentNode","hasAttribute","document","querySelector","nodeType","Node","ELEMENT_NODE"],"sources":["../../../src/components/VOverlay/useActivator.tsx"],"sourcesContent":["// Composables\nimport { makeDelayProps, useDelay } from '@/composables/delay'\nimport { VMenuSymbol } from '@/components/VMenu/shared'\n\n// Utilities\nimport { getCurrentInstance, IN_BROWSER, isComponentInstance, propsFactory, SUPPORTS_FOCUS_VISIBLE } from '@/util'\nimport {\n computed,\n effectScope,\n inject,\n nextTick,\n onScopeDispose,\n ref,\n watch,\n watchEffect,\n} from 'vue'\n\n// Types\nimport type { DelayProps } from '@/composables/delay'\nimport type {\n ComponentInternalInstance,\n ComponentPublicInstance,\n EffectScope,\n PropType,\n Ref,\n} from 'vue'\n\ninterface ActivatorProps extends DelayProps {\n activator?: 'parent' | string | Element | ComponentPublicInstance\n activatorProps: Record<string, any>\n\n openOnClick: boolean | undefined\n openOnHover: boolean\n openOnFocus: boolean | undefined\n\n closeOnContentClick: boolean\n}\n\nexport const makeActivatorProps = propsFactory({\n activator: [String, Object] as PropType<ActivatorProps['activator']>,\n activatorProps: {\n type: Object as PropType<ActivatorProps['activatorProps']>,\n default: () => ({}),\n },\n\n openOnClick: {\n type: Boolean,\n default: undefined,\n },\n openOnHover: Boolean,\n openOnFocus: {\n type: Boolean,\n default: undefined,\n },\n\n closeOnContentClick: Boolean,\n\n ...makeDelayProps(),\n}, 'v-overlay-activator')\n\nexport function useActivator (\n props: ActivatorProps,\n { isActive, isTop }: { isActive: Ref<boolean>, isTop: Ref<boolean> }\n) {\n const activatorEl = ref<HTMLElement>()\n\n let isHovered = false\n let isFocused = false\n let firstEnter = true\n\n const openOnFocus = computed(() => props.openOnFocus || (props.openOnFocus == null && props.openOnHover))\n const openOnClick = computed(() => props.openOnClick || (props.openOnClick == null && !props.openOnHover && !openOnFocus.value))\n\n const { runOpenDelay, runCloseDelay } = useDelay(props, value => {\n if (\n value === (\n (props.openOnHover && isHovered) ||\n (openOnFocus.value && isFocused)\n ) && !(props.openOnHover && isActive.value && !isTop.value)\n ) {\n if (isActive.value !== value) {\n firstEnter = true\n }\n isActive.value = value\n }\n })\n\n const availableEvents = {\n click: (e: MouseEvent) => {\n e.stopPropagation()\n activatorEl.value = (e.currentTarget || e.target) as HTMLElement\n isActive.value = !isActive.value\n },\n mouseenter: (e: MouseEvent) => {\n if (e.sourceCapabilities?.firesTouchEvents) return\n\n isHovered = true\n activatorEl.value = (e.currentTarget || e.target) as HTMLElement\n runOpenDelay()\n },\n mouseleave: (e: MouseEvent) => {\n isHovered = false\n runCloseDelay()\n },\n focus: (e: FocusEvent) => {\n if (\n SUPPORTS_FOCUS_VISIBLE &&\n !(e.target as HTMLElement).matches(':focus-visible')\n ) return\n\n isFocused = true\n e.stopPropagation()\n activatorEl.value = (e.currentTarget || e.target) as HTMLElement\n\n runOpenDelay()\n },\n blur: (e: FocusEvent) => {\n isFocused = false\n e.stopPropagation()\n\n runCloseDelay()\n },\n }\n\n const activatorEvents = computed(() => {\n const events: Partial<typeof availableEvents> = {}\n\n if (openOnClick.value) {\n events.click = availableEvents.click\n }\n if (props.openOnHover) {\n events.mouseenter = availableEvents.mouseenter\n events.mouseleave = availableEvents.mouseleave\n }\n if (openOnFocus.value) {\n events.focus = availableEvents.focus\n events.blur = availableEvents.blur\n }\n\n return events\n })\n\n const contentEvents = computed(() => {\n const events: Partial<typeof availableEvents> = {}\n\n if (props.openOnHover) {\n events.mouseenter = () => {\n isHovered = true\n runOpenDelay()\n }\n events.mouseleave = () => {\n isHovered = false\n runCloseDelay()\n }\n }\n\n if (props.closeOnContentClick) {\n const menu = inject(VMenuSymbol, null)\n events.click = () => {\n isActive.value = false\n menu?.closeParents()\n }\n }\n\n return events\n })\n\n const scrimEvents = computed(() => {\n const events: Partial<typeof availableEvents> = {}\n if (props.openOnHover) {\n events.mouseenter = () => {\n if (firstEnter) {\n isHovered = true\n firstEnter = false\n runOpenDelay()\n }\n }\n events.mouseleave = () => {\n isHovered = false\n runCloseDelay()\n }\n }\n\n return events\n })\n\n watch(isTop, val => {\n if (val && (\n (props.openOnHover && !isHovered && (!openOnFocus.value || !isFocused)) ||\n (openOnFocus.value && !isFocused && (!props.openOnHover || !isHovered))\n )) {\n isActive.value = false\n }\n })\n\n const activatorRef = ref()\n watchEffect(() => {\n if (!activatorRef.value) return\n\n nextTick(() => {\n const activator = activatorRef.value\n activatorEl.value = isComponentInstance(activator) ? activator.$el : activator\n })\n })\n\n const vm = getCurrentInstance('useActivator')\n let scope: EffectScope\n watch(() => !!props.activator, val => {\n if (val && IN_BROWSER) {\n scope = effectScope()\n scope.run(() => {\n _useActivator(props, vm, { activatorEl, activatorEvents })\n })\n } else if (scope) {\n scope.stop()\n }\n }, { flush: 'post', immediate: true })\n\n onScopeDispose(() => {\n scope?.stop()\n })\n\n return { activatorEl, activatorRef, activatorEvents, contentEvents, scrimEvents }\n}\n\nfunction _useActivator (\n props: ActivatorProps,\n vm: ComponentInternalInstance,\n { activatorEl, activatorEvents }: Pick<ReturnType<typeof useActivator>, 'activatorEl' | 'activatorEvents'>\n) {\n watch(() => props.activator, (val, oldVal) => {\n if (oldVal && val !== oldVal) {\n const activator = getActivator(oldVal)\n activator && unbindActivatorProps(activator)\n }\n if (val) {\n nextTick(() => bindActivatorProps())\n }\n }, { immediate: true })\n\n watch(() => props.activatorProps, () => {\n bindActivatorProps()\n })\n\n onScopeDispose(() => {\n unbindActivatorProps()\n })\n\n function bindActivatorProps (el = getActivator(), _props = props.activatorProps) {\n if (!el) return\n\n Object.entries(activatorEvents.value).forEach(([name, cb]) => {\n el.addEventListener(name, cb as (e: Event) => void)\n })\n\n Object.keys(_props).forEach(k => {\n if (_props[k] == null) {\n el.removeAttribute(k)\n } else {\n el.setAttribute(k, _props[k])\n }\n })\n }\n\n function unbindActivatorProps (el = getActivator(), _props = props.activatorProps) {\n if (!el) return\n\n Object.entries(activatorEvents.value).forEach(([name, cb]) => {\n el.removeEventListener(name, cb as (e: Event) => void)\n })\n\n Object.keys(_props).forEach(k => {\n el.removeAttribute(k)\n })\n }\n\n function getActivator (selector = props.activator): HTMLElement | undefined {\n let activator\n if (selector) {\n if (selector === 'parent') {\n let el = vm?.proxy?.$el?.parentNode\n while (el.hasAttribute('data-no-activator')) {\n el = el.parentNode\n }\n activator = el\n } else if (typeof selector === 'string') {\n // Selector\n activator = document.querySelector(selector)\n } else if ('$el' in selector) {\n // Component (ref)\n activator = selector.$el\n } else {\n // HTMLElement | Element\n activator = selector\n }\n }\n\n // The activator should only be a valid element (Ignore comments and text nodes)\n activatorEl.value = activator?.nodeType === Node.ELEMENT_NODE ? activator : null\n\n return activatorEl.value\n }\n}\n"],"mappings":"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"}
@@ -62,10 +62,12 @@
62
62
  transition: all 0.2s ease-in-out;
63
63
  }
64
64
  .v-progress-circular--indeterminate .v-progress-circular__overlay {
65
- animation: progress-circular-dash 1.4s ease-in-out infinite;
65
+ animation: progress-circular-dash 1.4s ease-in-out infinite, progress-circular-rotate 1.4s linear infinite;
66
66
  stroke-dasharray: 25, 200;
67
67
  stroke-dashoffset: 0;
68
68
  stroke-linecap: round;
69
+ transform-origin: center center;
70
+ transform: rotate(-90deg);
69
71
  }
70
72
 
71
73
  .v-progress-circular--disable-shrink > svg {
@@ -52,10 +52,12 @@
52
52
  transition: $progress-circular-intermediate-svg-transition
53
53
 
54
54
  .v-progress-circular__overlay
55
- animation: $progress-circular-rotate-dash
55
+ animation: $progress-circular-rotate-dash, $progress-circular-rotate-animation
56
56
  stroke-dasharray: 25, 200
57
57
  stroke-dashoffset: 0
58
58
  stroke-linecap: round
59
+ transform-origin: center center
60
+ transform: $progress-circular-overlay-transform
59
61
 
60
62
  .v-progress-circular--disable-shrink
61
63
  > svg
@@ -1,6 +1,7 @@
1
1
  // VProgressCircular
2
2
  $progress-circular-intermediate-svg-transition: all 0.2s ease-in-out !default;
3
3
  $progress-circular-overlay-transition: all 0.2s ease-in-out, stroke-width 0s !default;
4
+ $progress-circular-overlay-transform: rotate(calc(-90deg)) !default;
4
5
  $progress-circular-rotate-animation: progress-circular-rotate 1.4s linear infinite !default;
5
6
  $progress-circular-rotate-dash: progress-circular-dash 1.4s ease-in-out infinite !default;
6
7
  $progress-circular-size: 32px !default;
@@ -5,6 +5,9 @@
5
5
  transition: 0.2s cubic-bezier(0.4, 0, 0.2, 1);
6
6
  width: 100%;
7
7
  }
8
+ .v-progress-linear--rounded {
9
+ border-radius: 9999px;
10
+ }
8
11
 
9
12
  .v-progress-linear__background {
10
13
  background: currentColor;
@@ -109,7 +112,7 @@
109
112
  }
110
113
 
111
114
  .v-progress-linear--rounded {
112
- border-radius: 4px;
115
+ border-radius: 9999px;
113
116
  }
114
117
  .v-progress-linear--rounded.v-progress-linear--rounded-bar .v-progress-linear__determinate,
115
118
  .v-progress-linear--rounded.v-progress-linear--rounded-bar .v-progress-linear__indeterminate {
@@ -133,7 +136,7 @@
133
136
  .v-progress-linear--rounded-bar .v-progress-linear__determinate,
134
137
  .v-progress-linear--rounded-bar .v-progress-linear__indeterminate,
135
138
  .v-progress-linear--rounded-bar .v-progress-linear__stream + .v-progress-linear__background {
136
- border-radius: 4px;
139
+ border-radius: 9999px;
137
140
  }
138
141
  .v-progress-linear--rounded-bar .v-progress-linear__determinate.v-locale--is-ltr, .v-locale--is-ltr .v-progress-linear--rounded-bar .v-progress-linear__determinate {
139
142
  border-top-left-radius: 0;
@@ -9,6 +9,9 @@
9
9
  transition: $progress-linear-transition
10
10
  width: 100%
11
11
 
12
+ &--rounded
13
+ @include tools.rounded($progress-linear-border-radius)
14
+
12
15
  // Elements
13
16
  .v-progress-linear__background
14
17
  background: $progress-linear-background
@@ -4,7 +4,7 @@
4
4
  $progress-linear-background: currentColor !default;
5
5
  $progress-linear-background-background: $progress-linear-background !default;
6
6
  $progress-linear-background-opacity: var(--v-border-opacity) !default;
7
- $progress-linear-border-radius: settings.$border-radius-root !default;
7
+ $progress-linear-border-radius: map-get(settings.$rounded, 'pill') !default;
8
8
  $progress-linear-stream-opacity: 0.3 !default;
9
9
  $progress-linear-stripe-background-size: 40px 40px !default;
10
10
  $progress-linear-stream-border-width: 4px !default;