vuetify 3.3.2 → 3.3.3

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 (86) hide show
  1. package/dist/json/attributes.json +8 -8
  2. package/dist/json/importMap.json +4 -4
  3. package/dist/json/web-types.json +26 -15
  4. package/dist/vuetify-labs.css +53 -61
  5. package/dist/vuetify-labs.d.ts +253 -119
  6. package/dist/vuetify-labs.esm.js +196 -82
  7. package/dist/vuetify-labs.esm.js.map +1 -1
  8. package/dist/vuetify-labs.js +195 -81
  9. package/dist/vuetify-labs.min.css +2 -2
  10. package/dist/vuetify.css +10 -8
  11. package/dist/vuetify.d.ts +254 -120
  12. package/dist/vuetify.esm.js +191 -78
  13. package/dist/vuetify.esm.js.map +1 -1
  14. package/dist/vuetify.js +190 -77
  15. package/dist/vuetify.js.map +1 -1
  16. package/dist/vuetify.min.css +2 -2
  17. package/dist/vuetify.min.js +780 -771
  18. package/dist/vuetify.min.js.map +1 -1
  19. package/lib/blueprints/index.d.mts +2 -2
  20. package/lib/blueprints/md1.d.mts +2 -2
  21. package/lib/blueprints/md2.d.mts +2 -2
  22. package/lib/blueprints/md3.d.mts +2 -2
  23. package/lib/components/VAppBar/index.d.mts +24 -8
  24. package/lib/components/VAutocomplete/VAutocomplete.mjs +16 -11
  25. package/lib/components/VAutocomplete/VAutocomplete.mjs.map +1 -1
  26. package/lib/components/VBtn/VBtn.mjs +1 -1
  27. package/lib/components/VBtn/VBtn.mjs.map +1 -1
  28. package/lib/components/VBtn/index.d.mts +24 -8
  29. package/lib/components/VCard/VCard.mjs +1 -1
  30. package/lib/components/VCard/VCard.mjs.map +1 -1
  31. package/lib/components/VCard/index.d.mts +44 -28
  32. package/lib/components/VCheckbox/VCheckbox.mjs +8 -1
  33. package/lib/components/VCheckbox/VCheckbox.mjs.map +1 -1
  34. package/lib/components/VCheckbox/index.d.mts +7 -1
  35. package/lib/components/VChip/VChip.mjs +2 -2
  36. package/lib/components/VChip/VChip.mjs.map +1 -1
  37. package/lib/components/VChip/index.d.mts +48 -32
  38. package/lib/components/VCombobox/VCombobox.mjs +16 -8
  39. package/lib/components/VCombobox/VCombobox.mjs.map +1 -1
  40. package/lib/components/VExpansionPanel/VExpansionPanelTitle.mjs +1 -1
  41. package/lib/components/VExpansionPanel/VExpansionPanelTitle.mjs.map +1 -1
  42. package/lib/components/VExpansionPanel/index.d.mts +56 -24
  43. package/lib/components/VField/VField.css +1 -0
  44. package/lib/components/VField/VField.sass +1 -0
  45. package/lib/components/VIcon/VIcon.mjs +2 -2
  46. package/lib/components/VIcon/VIcon.mjs.map +1 -1
  47. package/lib/components/VList/VListItem.mjs +1 -1
  48. package/lib/components/VList/VListItem.mjs.map +1 -1
  49. package/lib/components/VList/index.d.mts +24 -8
  50. package/lib/components/VMenu/VMenu.mjs +29 -3
  51. package/lib/components/VMenu/VMenu.mjs.map +1 -1
  52. package/lib/components/VOverlay/VOverlay.mjs +7 -4
  53. package/lib/components/VOverlay/VOverlay.mjs.map +1 -1
  54. package/lib/components/VOverlay/useActivator.mjs +29 -35
  55. package/lib/components/VOverlay/useActivator.mjs.map +1 -1
  56. package/lib/components/VSelect/VSelect.mjs +15 -10
  57. package/lib/components/VSelect/VSelect.mjs.map +1 -1
  58. package/lib/components/VSlider/VSliderThumb.mjs +2 -2
  59. package/lib/components/VSlider/VSliderThumb.mjs.map +1 -1
  60. package/lib/components/VTabs/VTabs.css +1 -0
  61. package/lib/components/VTabs/VTabs.sass +1 -0
  62. package/lib/components/VTabs/index.d.mts +24 -8
  63. package/lib/components/VTextarea/VTextarea.css +7 -7
  64. package/lib/components/VTextarea/VTextarea.sass +9 -9
  65. package/lib/components/index.d.mts +251 -117
  66. package/lib/composables/icons.mjs.map +1 -1
  67. package/lib/composables/theme.mjs +1 -1
  68. package/lib/composables/theme.mjs.map +1 -1
  69. package/lib/entry-bundler.mjs +1 -1
  70. package/lib/framework.mjs +1 -1
  71. package/lib/iconsets/mdi-svg.mjs +35 -35
  72. package/lib/iconsets/mdi-svg.mjs.map +1 -1
  73. package/lib/index.d.mts +3 -3
  74. package/lib/labs/VDataTable/VDataTable.css +4 -14
  75. package/lib/labs/VDataTable/VDataTable.sass +6 -15
  76. package/lib/labs/VDataTable/VDataTableHeaders.mjs +2 -2
  77. package/lib/labs/VDataTable/VDataTableHeaders.mjs.map +1 -1
  78. package/lib/labs/VDataTable/composables/select.mjs +3 -2
  79. package/lib/labs/VDataTable/composables/select.mjs.map +1 -1
  80. package/lib/util/bindProps.mjs +49 -0
  81. package/lib/util/bindProps.mjs.map +1 -0
  82. package/lib/util/helpers.mjs +3 -0
  83. package/lib/util/helpers.mjs.map +1 -1
  84. package/lib/util/index.mjs +1 -0
  85. package/lib/util/index.mjs.map +1 -1
  86. package/package.json +2 -2
@@ -290,7 +290,9 @@ declare const VExpansionPanel: {
290
290
  readonly?: boolean | undefined;
291
291
  tag?: string | undefined;
292
292
  rounded?: string | number | boolean | undefined;
293
- ripple?: boolean | Record<string, any> | undefined;
293
+ ripple?: boolean | {
294
+ class: string;
295
+ } | undefined;
294
296
  collapseIcon?: IconValue | undefined;
295
297
  expandIcon?: IconValue | undefined;
296
298
  hideActions?: boolean | undefined;
@@ -390,7 +392,9 @@ declare const VExpansionPanel: {
390
392
  disabled: boolean;
391
393
  readonly: boolean;
392
394
  tag: string;
393
- ripple: boolean | Record<string, any>;
395
+ ripple: boolean | {
396
+ class: string;
397
+ } | undefined;
394
398
  collapseIcon: IconValue;
395
399
  expandIcon: IconValue;
396
400
  hideActions: boolean;
@@ -434,7 +438,9 @@ declare const VExpansionPanel: {
434
438
  readonly: boolean;
435
439
  tag: string;
436
440
  rounded: string | number | boolean;
437
- ripple: boolean | Record<string, any>;
441
+ ripple: boolean | {
442
+ class: string;
443
+ } | undefined;
438
444
  collapseIcon: IconValue;
439
445
  expandIcon: IconValue;
440
446
  hideActions: boolean;
@@ -474,7 +480,9 @@ declare const VExpansionPanel: {
474
480
  disabled: boolean;
475
481
  readonly: boolean;
476
482
  tag: string;
477
- ripple: boolean | Record<string, any>;
483
+ ripple: boolean | {
484
+ class: string;
485
+ } | undefined;
478
486
  collapseIcon: IconValue;
479
487
  expandIcon: IconValue;
480
488
  hideActions: boolean;
@@ -517,7 +525,9 @@ declare const VExpansionPanel: {
517
525
  disabled: boolean;
518
526
  readonly: boolean;
519
527
  tag: string;
520
- ripple: boolean | Record<string, any>;
528
+ ripple: boolean | {
529
+ class: string;
530
+ } | undefined;
521
531
  collapseIcon: IconValue;
522
532
  expandIcon: IconValue;
523
533
  hideActions: boolean;
@@ -561,7 +571,9 @@ declare const VExpansionPanel: {
561
571
  readonly: boolean;
562
572
  tag: string;
563
573
  rounded: string | number | boolean;
564
- ripple: boolean | Record<string, any>;
574
+ ripple: boolean | {
575
+ class: string;
576
+ } | undefined;
565
577
  collapseIcon: IconValue;
566
578
  expandIcon: IconValue;
567
579
  hideActions: boolean;
@@ -592,7 +604,9 @@ declare const VExpansionPanel: {
592
604
  };
593
605
  hideActions: BooleanConstructor;
594
606
  ripple: {
595
- type: (ObjectConstructor | BooleanConstructor)[];
607
+ type: vue.PropType<boolean | {
608
+ class: string;
609
+ } | undefined>;
596
610
  default: boolean;
597
611
  };
598
612
  readonly: BooleanConstructor;
@@ -632,7 +646,9 @@ declare const VExpansionPanel: {
632
646
  };
633
647
  hideActions: BooleanConstructor;
634
648
  ripple: {
635
- type: (ObjectConstructor | BooleanConstructor)[];
649
+ type: vue.PropType<boolean | {
650
+ class: string;
651
+ } | undefined>;
636
652
  default: boolean;
637
653
  };
638
654
  readonly: BooleanConstructor;
@@ -842,7 +858,9 @@ declare const VExpansionPanelTitle: {
842
858
  $props: {
843
859
  style?: vue.StyleValue | undefined;
844
860
  readonly?: boolean | undefined;
845
- ripple?: boolean | Record<string, any> | undefined;
861
+ ripple?: boolean | {
862
+ class: string;
863
+ } | undefined;
846
864
  collapseIcon?: IconValue | undefined;
847
865
  expandIcon?: IconValue | undefined;
848
866
  hideActions?: boolean | undefined;
@@ -922,7 +940,9 @@ declare const VExpansionPanelTitle: {
922
940
  $options: vue.ComponentOptionsBase<{
923
941
  style: vue.StyleValue;
924
942
  readonly: boolean;
925
- ripple: boolean | Record<string, any>;
943
+ ripple: boolean | {
944
+ class: string;
945
+ } | undefined;
926
946
  collapseIcon: IconValue;
927
947
  expandIcon: IconValue;
928
948
  hideActions: boolean;
@@ -944,7 +964,9 @@ declare const VExpansionPanelTitle: {
944
964
  }, {}, unknown, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, Record<string, any>, string, {
945
965
  style: vue.StyleValue;
946
966
  readonly: boolean;
947
- ripple: boolean | Record<string, any>;
967
+ ripple: boolean | {
968
+ class: string;
969
+ } | undefined;
948
970
  collapseIcon: IconValue;
949
971
  expandIcon: IconValue;
950
972
  hideActions: boolean;
@@ -978,7 +1000,9 @@ declare const VExpansionPanelTitle: {
978
1000
  } & {
979
1001
  style: vue.StyleValue;
980
1002
  readonly: boolean;
981
- ripple: boolean | Record<string, any>;
1003
+ ripple: boolean | {
1004
+ class: string;
1005
+ } | undefined;
982
1006
  collapseIcon: IconValue;
983
1007
  expandIcon: IconValue;
984
1008
  hideActions: boolean;
@@ -1004,7 +1028,9 @@ declare const VExpansionPanelTitle: {
1004
1028
  } & vue.ComponentOptionsBase<{
1005
1029
  style: vue.StyleValue;
1006
1030
  readonly: boolean;
1007
- ripple: boolean | Record<string, any>;
1031
+ ripple: boolean | {
1032
+ class: string;
1033
+ } | undefined;
1008
1034
  collapseIcon: IconValue;
1009
1035
  expandIcon: IconValue;
1010
1036
  hideActions: boolean;
@@ -1026,7 +1052,9 @@ declare const VExpansionPanelTitle: {
1026
1052
  }, {}, unknown, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, Record<string, any>, string, {
1027
1053
  style: vue.StyleValue;
1028
1054
  readonly: boolean;
1029
- ripple: boolean | Record<string, any>;
1055
+ ripple: boolean | {
1056
+ class: string;
1057
+ } | undefined;
1030
1058
  collapseIcon: IconValue;
1031
1059
  expandIcon: IconValue;
1032
1060
  hideActions: boolean;
@@ -1038,44 +1066,48 @@ declare const VExpansionPanelTitle: {
1038
1066
  [key: string]: any;
1039
1067
  }>[];
1040
1068
  }>>> & vue.VNodeProps & vue.AllowedComponentProps & vue.ComponentCustomProps & FilterPropsOptions<{
1041
- class: vue.PropType<any>;
1069
+ class: PropType<any>;
1042
1070
  style: {
1043
- type: vue.PropType<vue.StyleValue>;
1071
+ type: PropType<vue.StyleValue>;
1044
1072
  default: null;
1045
1073
  };
1046
1074
  color: StringConstructor;
1047
1075
  expandIcon: {
1048
- type: vue.PropType<IconValue>;
1076
+ type: PropType<IconValue>;
1049
1077
  default: string;
1050
1078
  };
1051
1079
  collapseIcon: {
1052
- type: vue.PropType<IconValue>;
1080
+ type: PropType<IconValue>;
1053
1081
  default: string;
1054
1082
  };
1055
1083
  hideActions: BooleanConstructor;
1056
1084
  ripple: {
1057
- type: (ObjectConstructor | BooleanConstructor)[];
1085
+ type: PropType<boolean | {
1086
+ class: string;
1087
+ } | undefined>;
1058
1088
  default: boolean;
1059
1089
  };
1060
1090
  readonly: BooleanConstructor;
1061
1091
  }, vue.ExtractPropTypes<{
1062
- class: vue.PropType<any>;
1092
+ class: PropType<any>;
1063
1093
  style: {
1064
- type: vue.PropType<vue.StyleValue>;
1094
+ type: PropType<vue.StyleValue>;
1065
1095
  default: null;
1066
1096
  };
1067
1097
  color: StringConstructor;
1068
1098
  expandIcon: {
1069
- type: vue.PropType<IconValue>;
1099
+ type: PropType<IconValue>;
1070
1100
  default: string;
1071
1101
  };
1072
1102
  collapseIcon: {
1073
- type: vue.PropType<IconValue>;
1103
+ type: PropType<IconValue>;
1074
1104
  default: string;
1075
1105
  };
1076
1106
  hideActions: BooleanConstructor;
1077
1107
  ripple: {
1078
- type: (ObjectConstructor | BooleanConstructor)[];
1108
+ type: PropType<boolean | {
1109
+ class: string;
1110
+ } | undefined>;
1079
1111
  default: boolean;
1080
1112
  };
1081
1113
  readonly: BooleanConstructor;
@@ -130,6 +130,7 @@
130
130
  padding-inline-end: var(--v-field-padding-end);
131
131
  padding-top: var(--v-field-input-padding-top);
132
132
  padding-bottom: var(--v-field-input-padding-bottom);
133
+ position: relative;
133
134
  width: 100%;
134
135
  --v-field-input-min-height: max(var(--v-input-control-height, 56px), 1.625rem + var(--v-field-input-padding-top) + var(--v-field-input-padding-bottom));
135
136
  }
@@ -128,6 +128,7 @@
128
128
  padding-inline-end: var(--v-field-padding-end)
129
129
  padding-top: var(--v-field-input-padding-top)
130
130
  padding-bottom: var(--v-field-input-padding-bottom)
131
+ position: relative
131
132
  width: 100%
132
133
  --v-field-input-min-height: #{$field-input-min-height}
133
134
 
@@ -10,7 +10,7 @@ import { makeSizeProps, useSize } from "../../composables/size.mjs";
10
10
  import { makeTagProps } from "../../composables/tag.mjs";
11
11
  import { makeThemeProps, provideTheme } from "../../composables/theme.mjs"; // Utilities
12
12
  import { computed, ref, Text, toRef } from 'vue';
13
- import { convertToUnit, genericComponent, propsFactory, useRender } from "../../util/index.mjs";
13
+ import { convertToUnit, flattenFragments, genericComponent, propsFactory, useRender } from "../../util/index.mjs";
14
14
  export const makeVIconProps = propsFactory({
15
15
  color: String,
16
16
  start: Boolean,
@@ -48,7 +48,7 @@ export const VIcon = genericComponent()({
48
48
  useRender(() => {
49
49
  const slotValue = slots.default?.();
50
50
  if (slotValue) {
51
- slotIcon.value = slotValue.filter(node => node.type === Text && node.children && typeof node.children === 'string')[0]?.children;
51
+ slotIcon.value = flattenFragments(slotValue).filter(node => node.type === Text && node.children && typeof node.children === 'string')[0]?.children;
52
52
  }
53
53
  return _createVNode(iconData.value.component, {
54
54
  "tag": props.tag,
@@ -1 +1 @@
1
- {"version":3,"file":"VIcon.mjs","names":["useTextColor","makeComponentProps","IconValue","useIcon","makeSizeProps","useSize","makeTagProps","makeThemeProps","provideTheme","computed","ref","Text","toRef","convertToUnit","genericComponent","propsFactory","useRender","makeVIconProps","color","String","start","Boolean","end","icon","tag","VIcon","name","props","setup","_ref","attrs","slots","slotIcon","themeClasses","iconData","value","sizeClasses","textColorClasses","textColorStyles","slotValue","default","filter","node","type","children","_createVNode","component","onClick","class","fontSize","size","height","width","undefined","style"],"sources":["../../../src/components/VIcon/VIcon.tsx"],"sourcesContent":["// Styles\nimport './VIcon.sass'\n\n// Composables\nimport { useTextColor } from '@/composables/color'\nimport { makeComponentProps } from '@/composables/component'\nimport { IconValue, useIcon } from '@/composables/icons'\nimport { makeSizeProps, useSize } from '@/composables/size'\nimport { makeTagProps } from '@/composables/tag'\nimport { makeThemeProps, provideTheme } from '@/composables/theme'\n\n// Utilities\nimport { computed, ref, Text, toRef } from 'vue'\nimport { convertToUnit, genericComponent, propsFactory, useRender } from '@/util'\n\nexport const makeVIconProps = propsFactory({\n color: String,\n start: Boolean,\n end: Boolean,\n icon: IconValue,\n\n ...makeComponentProps(),\n ...makeSizeProps(),\n ...makeTagProps({ tag: 'i' }),\n ...makeThemeProps(),\n}, 'VIcon')\n\nexport const VIcon = genericComponent()({\n name: 'VIcon',\n\n props: makeVIconProps(),\n\n setup (props, { attrs, slots }) {\n const slotIcon = ref<string>()\n\n const { themeClasses } = provideTheme(props)\n const { iconData } = useIcon(computed(() => slotIcon.value || props.icon))\n const { sizeClasses } = useSize(props)\n const { textColorClasses, textColorStyles } = useTextColor(toRef(props, 'color'))\n\n useRender(() => {\n const slotValue = slots.default?.()\n if (slotValue) {\n slotIcon.value = slotValue.filter(node =>\n node.type === Text && node.children && typeof node.children === 'string'\n )[0]?.children as string\n }\n\n return (\n <iconData.value.component\n tag={ props.tag }\n icon={ iconData.value.icon }\n class={[\n 'v-icon',\n 'notranslate',\n themeClasses.value,\n sizeClasses.value,\n textColorClasses.value,\n {\n 'v-icon--clickable': !!attrs.onClick,\n 'v-icon--start': props.start,\n 'v-icon--end': props.end,\n },\n props.class,\n ]}\n style={[\n !sizeClasses.value ? ({\n fontSize: convertToUnit(props.size),\n height: convertToUnit(props.size),\n width: convertToUnit(props.size),\n }) : undefined,\n textColorStyles.value,\n props.style,\n ]}\n role={ attrs.onClick ? 'button' : undefined }\n aria-hidden={ !attrs.onClick }\n >\n { slotValue }\n </iconData.value.component>\n )\n })\n\n return {}\n },\n})\n\nexport type VIcon = InstanceType<typeof VIcon>\n"],"mappings":"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"}
1
+ {"version":3,"file":"VIcon.mjs","names":["useTextColor","makeComponentProps","IconValue","useIcon","makeSizeProps","useSize","makeTagProps","makeThemeProps","provideTheme","computed","ref","Text","toRef","convertToUnit","flattenFragments","genericComponent","propsFactory","useRender","makeVIconProps","color","String","start","Boolean","end","icon","tag","VIcon","name","props","setup","_ref","attrs","slots","slotIcon","themeClasses","iconData","value","sizeClasses","textColorClasses","textColorStyles","slotValue","default","filter","node","type","children","_createVNode","component","onClick","class","fontSize","size","height","width","undefined","style"],"sources":["../../../src/components/VIcon/VIcon.tsx"],"sourcesContent":["// Styles\nimport './VIcon.sass'\n\n// Composables\nimport { useTextColor } from '@/composables/color'\nimport { makeComponentProps } from '@/composables/component'\nimport { IconValue, useIcon } from '@/composables/icons'\nimport { makeSizeProps, useSize } from '@/composables/size'\nimport { makeTagProps } from '@/composables/tag'\nimport { makeThemeProps, provideTheme } from '@/composables/theme'\n\n// Utilities\nimport { computed, ref, Text, toRef } from 'vue'\nimport { convertToUnit, flattenFragments, genericComponent, propsFactory, useRender } from '@/util'\n\nexport const makeVIconProps = propsFactory({\n color: String,\n start: Boolean,\n end: Boolean,\n icon: IconValue,\n\n ...makeComponentProps(),\n ...makeSizeProps(),\n ...makeTagProps({ tag: 'i' }),\n ...makeThemeProps(),\n}, 'VIcon')\n\nexport const VIcon = genericComponent()({\n name: 'VIcon',\n\n props: makeVIconProps(),\n\n setup (props, { attrs, slots }) {\n const slotIcon = ref<string>()\n\n const { themeClasses } = provideTheme(props)\n const { iconData } = useIcon(computed(() => slotIcon.value || props.icon))\n const { sizeClasses } = useSize(props)\n const { textColorClasses, textColorStyles } = useTextColor(toRef(props, 'color'))\n\n useRender(() => {\n const slotValue = slots.default?.()\n if (slotValue) {\n slotIcon.value = flattenFragments(slotValue).filter(node =>\n node.type === Text && node.children && typeof node.children === 'string'\n )[0]?.children as string\n }\n\n return (\n <iconData.value.component\n tag={ props.tag }\n icon={ iconData.value.icon }\n class={[\n 'v-icon',\n 'notranslate',\n themeClasses.value,\n sizeClasses.value,\n textColorClasses.value,\n {\n 'v-icon--clickable': !!attrs.onClick,\n 'v-icon--start': props.start,\n 'v-icon--end': props.end,\n },\n props.class,\n ]}\n style={[\n !sizeClasses.value ? ({\n fontSize: convertToUnit(props.size),\n height: convertToUnit(props.size),\n width: convertToUnit(props.size),\n }) : undefined,\n textColorStyles.value,\n props.style,\n ]}\n role={ attrs.onClick ? 'button' : undefined }\n aria-hidden={ !attrs.onClick }\n >\n { slotValue }\n </iconData.value.component>\n )\n })\n\n return {}\n },\n})\n\nexport type VIcon = InstanceType<typeof VIcon>\n"],"mappings":"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"}
@@ -45,7 +45,7 @@ export const makeVListItemProps = propsFactory({
45
45
  prependAvatar: String,
46
46
  prependIcon: IconValue,
47
47
  ripple: {
48
- type: Boolean,
48
+ type: [Boolean, Object],
49
49
  default: true
50
50
  },
51
51
  subtitle: [String, Number, Boolean],
@@ -1 +1 @@
1
- {"version":3,"file":"VListItem.mjs","names":["VListItemSubtitle","VListItemTitle","VAvatar","VDefaultsProvider","VIcon","useList","makeBorderProps","useBorder","makeComponentProps","makeDensityProps","useDensity","makeDimensionProps","useDimension","makeElevationProps","useElevation","IconValue","useNestedItem","makeRoundedProps","useRounded","makeRouterProps","useLink","makeTagProps","makeThemeProps","provideTheme","genOverlays","makeVariantProps","useVariant","Ripple","computed","watch","deprecate","EventProp","genericComponent","propsFactory","useRender","makeVListItemProps","active","type","Boolean","default","undefined","activeClass","String","activeColor","appendAvatar","appendIcon","baseColor","disabled","lines","link","nav","prependAvatar","prependIcon","ripple","subtitle","Number","title","value","onClick","onClickOnce","variant","VListItem","name","directives","props","emits","click","e","setup","_ref","attrs","slots","emit","id","href","select","isSelected","isIndeterminate","isGroupActivator","root","parent","openOnSelect","list","isActive","isLink","isClickable","roundedProps","rounded","color","variantProps","val","open","immediate","themeClasses","borderClasses","colorClasses","colorStyles","variantClasses","densityClasses","dimensionStyles","elevationClasses","roundedClasses","lineClasses","slotProps","navigate","onKeyDown","key","preventDefault","Tag","tag","hasTitle","hasSubtitle","hasAppendMedia","hasAppend","append","hasPrependMedia","hasPrepend","prepend","updateHasPrepend","_withDirectives","_createVNode","class","style","_Fragment","density","image","icon","VListItemAction","start","end","_resolveDirective"],"sources":["../../../src/components/VList/VListItem.tsx"],"sourcesContent":["// Styles\nimport './VListItem.sass'\n\n// Components\nimport { VListItemSubtitle } from './VListItemSubtitle'\nimport { VListItemTitle } from './VListItemTitle'\nimport { VAvatar } from '@/components/VAvatar'\nimport { VDefaultsProvider } from '@/components/VDefaultsProvider'\nimport { VIcon } from '@/components/VIcon'\n\n// Composables\nimport { useList } from './list'\nimport { makeBorderProps, useBorder } from '@/composables/border'\nimport { makeComponentProps } from '@/composables/component'\nimport { makeDensityProps, useDensity } from '@/composables/density'\nimport { makeDimensionProps, useDimension } from '@/composables/dimensions'\nimport { makeElevationProps, useElevation } from '@/composables/elevation'\nimport { IconValue } from '@/composables/icons'\nimport { useNestedItem } from '@/composables/nested/nested'\nimport { makeRoundedProps, useRounded } from '@/composables/rounded'\nimport { makeRouterProps, useLink } from '@/composables/router'\nimport { makeTagProps } from '@/composables/tag'\nimport { makeThemeProps, provideTheme } from '@/composables/theme'\nimport { genOverlays, makeVariantProps, useVariant } from '@/composables/variant'\n\n// Directives\nimport { Ripple } from '@/directives/ripple'\n\n// Utilities\nimport { computed, watch } from 'vue'\nimport { deprecate, EventProp, genericComponent, propsFactory, useRender } from '@/util'\n\n// Types\nimport type { PropType } from 'vue'\n\ntype ListItemSlot = {\n isActive: boolean\n isSelected: boolean\n isIndeterminate: boolean\n select: (value: boolean) => void\n}\n\nexport type ListItemTitleSlot = {\n title?: string | number | boolean\n}\n\nexport type ListItemSubtitleSlot = {\n subtitle?: string | number | boolean\n}\n\nexport type VListItemSlots = {\n prepend: ListItemSlot\n append: ListItemSlot\n default: ListItemSlot\n title: ListItemTitleSlot\n subtitle: ListItemSubtitleSlot\n}\n\nexport const makeVListItemProps = propsFactory({\n active: {\n type: Boolean,\n default: undefined,\n },\n activeClass: String,\n /* @deprecated */\n activeColor: String,\n appendAvatar: String,\n appendIcon: IconValue,\n baseColor: String,\n disabled: Boolean,\n lines: String as PropType<'one' | 'two' | 'three'>,\n link: {\n type: Boolean,\n default: undefined,\n },\n nav: Boolean,\n prependAvatar: String,\n prependIcon: IconValue,\n ripple: {\n type: Boolean,\n default: true,\n },\n subtitle: [String, Number, Boolean],\n title: [String, Number, Boolean],\n value: null,\n\n onClick: EventProp<[MouseEvent]>(),\n onClickOnce: EventProp<[MouseEvent]>(),\n\n ...makeBorderProps(),\n ...makeComponentProps(),\n ...makeDensityProps(),\n ...makeDimensionProps(),\n ...makeElevationProps(),\n ...makeRoundedProps(),\n ...makeRouterProps(),\n ...makeTagProps(),\n ...makeThemeProps(),\n ...makeVariantProps({ variant: 'text' } as const),\n}, 'VListItem')\n\nexport const VListItem = genericComponent<VListItemSlots>()({\n name: 'VListItem',\n\n directives: { Ripple },\n\n props: makeVListItemProps(),\n\n emits: {\n click: (e: MouseEvent | KeyboardEvent) => true,\n },\n\n setup (props, { attrs, slots, emit }) {\n const link = useLink(props, attrs)\n const id = computed(() => props.value ?? 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 color = computed(() => props.color ?? props.activeColor)\n const variantProps = computed(() => ({\n color: isActive.value ? color.value ?? props.baseColor : props.baseColor,\n variant: props.variant,\n }))\n\n watch(() => link.isActive?.value, val => {\n if (val && parent.value != null) {\n root.open(parent.value, true)\n }\n\n if (val) {\n openOnSelect(val)\n }\n }, { immediate: true })\n\n const { themeClasses } = provideTheme(props)\n const { borderClasses } = useBorder(props)\n const { colorClasses, colorStyles, variantClasses } = useVariant(variantProps)\n const { densityClasses } = useDensity(props)\n const { dimensionStyles } = useDimension(props)\n const { elevationClasses } = useElevation(props)\n const { roundedClasses } = useRounded(roundedProps)\n const lineClasses = computed(() => props.lines ? `v-list-item--${props.lines}-line` : undefined)\n\n const slotProps = computed(() => ({\n isActive: isActive.value,\n select,\n isSelected: isSelected.value,\n isIndeterminate: isIndeterminate.value,\n } satisfies ListItemSlot))\n\n function onClick (e: MouseEvent) {\n emit('click', e)\n\n if (isGroupActivator || !isClickable.value) return\n\n link.navigate?.(e)\n props.value != null && select(!isSelected.value, e)\n }\n\n function onKeyDown (e: KeyboardEvent) {\n if (e.key === 'Enter' || e.key === ' ') {\n e.preventDefault()\n onClick(e as any as MouseEvent)\n }\n }\n\n useRender(() => {\n const Tag = isLink.value ? 'a' : props.tag\n const hasTitle = (slots.title || props.title)\n const hasSubtitle = (slots.subtitle || props.subtitle)\n const hasAppendMedia = !!(props.appendAvatar || props.appendIcon)\n const hasAppend = !!(hasAppendMedia || slots.append)\n const hasPrependMedia = !!(props.prependAvatar || props.prependIcon)\n const hasPrepend = !!(hasPrependMedia || slots.prepend)\n\n list?.updateHasPrepend(hasPrepend)\n\n if (props.activeColor) {\n deprecate('active-color', ['color', 'base-color'])\n }\n\n return (\n <Tag\n class={[\n 'v-list-item',\n {\n 'v-list-item--active': isActive.value,\n 'v-list-item--disabled': props.disabled,\n 'v-list-item--link': isClickable.value,\n 'v-list-item--nav': props.nav,\n 'v-list-item--prepend': !hasPrepend && list?.hasPrepend.value,\n [`${props.activeClass}`]: props.activeClass && isActive.value,\n },\n themeClasses.value,\n borderClasses.value,\n colorClasses.value,\n densityClasses.value,\n elevationClasses.value,\n lineClasses.value,\n roundedClasses.value,\n variantClasses.value,\n props.class,\n ]}\n style={[\n colorStyles.value,\n dimensionStyles.value,\n props.style,\n ]}\n href={ link.href.value }\n tabindex={ isClickable.value ? (list ? -2 : 0) : undefined }\n onClick={ onClick }\n onKeydown={ isClickable.value && !isLink.value && onKeyDown }\n v-ripple={ isClickable.value && props.ripple }\n >\n { genOverlays(isClickable.value || isActive.value, 'v-list-item') }\n\n { hasPrepend && (\n <div key=\"prepend\" class=\"v-list-item__prepend\">\n { !slots.prepend ? (\n <>\n { props.prependAvatar && (\n <VAvatar\n key=\"prepend-avatar\"\n density={ props.density }\n image={ props.prependAvatar }\n />\n )}\n\n { props.prependIcon && (\n <VIcon\n key=\"prepend-icon\"\n density={ props.density }\n icon={ props.prependIcon }\n />\n )}\n </>\n ) : (\n <VDefaultsProvider\n key=\"prepend-defaults\"\n disabled={ !hasPrependMedia }\n defaults={{\n VAvatar: {\n density: props.density,\n image: props.prependAvatar,\n },\n VIcon: {\n density: props.density,\n icon: props.prependIcon,\n },\n VListItemAction: {\n start: true,\n },\n }}\n >\n { slots.prepend?.(slotProps.value) }\n </VDefaultsProvider>\n )}\n </div>\n )}\n\n <div class=\"v-list-item__content\" data-no-activator=\"\">\n { hasTitle && (\n <VListItemTitle key=\"title\">\n { slots.title?.({ title: props.title }) ?? props.title }\n </VListItemTitle>\n )}\n\n { hasSubtitle && (\n <VListItemSubtitle key=\"subtitle\">\n { slots.subtitle?.({ subtitle: props.subtitle }) ?? props.subtitle }\n </VListItemSubtitle>\n )}\n\n { slots.default?.(slotProps.value) }\n </div>\n\n { hasAppend && (\n <div key=\"append\" class=\"v-list-item__append\">\n { !slots.append ? (\n <>\n { props.appendIcon && (\n <VIcon\n key=\"append-icon\"\n density={ props.density }\n icon={ props.appendIcon }\n />\n )}\n\n { props.appendAvatar && (\n <VAvatar\n key=\"append-avatar\"\n density={ props.density }\n image={ props.appendAvatar }\n />\n )}\n </>\n ) : (\n <VDefaultsProvider\n key=\"append-defaults\"\n disabled={ !hasAppendMedia }\n defaults={{\n VAvatar: {\n density: props.density,\n image: props.appendAvatar,\n },\n VIcon: {\n density: props.density,\n icon: props.appendIcon,\n },\n VListItemAction: {\n end: true,\n },\n }}\n >\n { slots.append?.(slotProps.value) }\n </VDefaultsProvider>\n )}\n </div>\n )}\n </Tag>\n )\n })\n\n return {}\n },\n})\n\nexport type VListItem = InstanceType<typeof VListItem>\n"],"mappings":";AAAA;AACA;;AAEA;AAAA,SACSA,iBAAiB;AAAA,SACjBC,cAAc;AAAA,SACdC,OAAO;AAAA,SACPC,iBAAiB;AAAA,SACjBC,KAAK,8BAEd;AAAA,SACSC,OAAO;AAAA,SACPC,eAAe,EAAEC,SAAS;AAAA,SAC1BC,kBAAkB;AAAA,SAClBC,gBAAgB,EAAEC,UAAU;AAAA,SAC5BC,kBAAkB,EAAEC,YAAY;AAAA,SAChCC,kBAAkB,EAAEC,YAAY;AAAA,SAChCC,SAAS;AAAA,SACTC,aAAa;AAAA,SACbC,gBAAgB,EAAEC,UAAU;AAAA,SAC5BC,eAAe,EAAEC,OAAO;AAAA,SACxBC,YAAY;AAAA,SACZC,cAAc,EAAEC,YAAY;AAAA,SAC5BC,WAAW,EAAEC,gBAAgB,EAAEC,UAAU,yCAElD;AAAA,SACSC,MAAM,6CAEf;AACA,SAASC,QAAQ,EAAEC,KAAK,QAAQ,KAAK;AAAA,SAC5BC,SAAS,EAAEC,SAAS,EAAEC,gBAAgB,EAAEC,YAAY,EAAEC,SAAS,gCAExE;AA0BA,OAAO,MAAMC,kBAAkB,GAAGF,YAAY,CAAC;EAC7CG,MAAM,EAAE;IACNC,IAAI,EAAEC,OAAO;IACbC,OAAO,EAAEC;EACX,CAAC;EACDC,WAAW,EAAEC,MAAM;EACnB;EACAC,WAAW,EAAED,MAAM;EACnBE,YAAY,EAAEF,MAAM;EACpBG,UAAU,EAAE9B,SAAS;EACrB+B,SAAS,EAAEJ,MAAM;EACjBK,QAAQ,EAAET,OAAO;EACjBU,KAAK,EAAEN,MAA2C;EAClDO,IAAI,EAAE;IACJZ,IAAI,EAAEC,OAAO;IACbC,OAAO,EAAEC;EACX,CAAC;EACDU,GAAG,EAAEZ,OAAO;EACZa,aAAa,EAAET,MAAM;EACrBU,WAAW,EAAErC,SAAS;EACtBsC,MAAM,EAAE;IACNhB,IAAI,EAAEC,OAAO;IACbC,OAAO,EAAE;EACX,CAAC;EACDe,QAAQ,EAAE,CAACZ,MAAM,EAAEa,MAAM,EAAEjB,OAAO,CAAC;EACnCkB,KAAK,EAAE,CAACd,MAAM,EAAEa,MAAM,EAAEjB,OAAO,CAAC;EAChCmB,KAAK,EAAE,IAAI;EAEXC,OAAO,EAAE3B,SAAS,EAAgB;EAClC4B,WAAW,EAAE5B,SAAS,EAAgB;EAEtC,GAAGzB,eAAe,EAAE;EACpB,GAAGE,kBAAkB,EAAE;EACvB,GAAGC,gBAAgB,EAAE;EACrB,GAAGE,kBAAkB,EAAE;EACvB,GAAGE,kBAAkB,EAAE;EACvB,GAAGI,gBAAgB,EAAE;EACrB,GAAGE,eAAe,EAAE;EACpB,GAAGE,YAAY,EAAE;EACjB,GAAGC,cAAc,EAAE;EACnB,GAAGG,gBAAgB,CAAC;IAAEmC,OAAO,EAAE;EAAO,CAAC;AACzC,CAAC,EAAE,WAAW,CAAC;AAEf,OAAO,MAAMC,SAAS,GAAG7B,gBAAgB,EAAkB,CAAC;EAC1D8B,IAAI,EAAE,WAAW;EAEjBC,UAAU,EAAE;IAAEpC;EAAO,CAAC;EAEtBqC,KAAK,EAAE7B,kBAAkB,EAAE;EAE3B8B,KAAK,EAAE;IACLC,KAAK,EAAGC,CAA6B,IAAK;EAC5C,CAAC;EAEDC,KAAKA,CAAEJ,KAAK,EAAAK,IAAA,EAA0B;IAAA,IAAxB;MAAEC,KAAK;MAAEC,KAAK;MAAEC;IAAK,CAAC,GAAAH,IAAA;IAClC,MAAMpB,IAAI,GAAG7B,OAAO,CAAC4C,KAAK,EAAEM,KAAK,CAAC;IAClC,MAAMG,EAAE,GAAG7C,QAAQ,CAAC,MAAMoC,KAAK,CAACP,KAAK,IAAIR,IAAI,CAACyB,IAAI,CAACjB,KAAK,CAAC;IACzD,MAAM;MAAEkB,MAAM;MAAEC,UAAU;MAAEC,eAAe;MAAEC,gBAAgB;MAAEC,IAAI;MAAEC,MAAM;MAAEC;IAAa,CAAC,GAAGjE,aAAa,CAACyD,EAAE,EAAE,KAAK,CAAC;IACtH,MAAMS,IAAI,GAAG7E,OAAO,EAAE;IACtB,MAAM8E,QAAQ,GAAGvD,QAAQ,CAAC,MACxBoC,KAAK,CAAC5B,MAAM,KAAK,KAAK,KACrB4B,KAAK,CAAC5B,MAAM,IAAIa,IAAI,CAACkC,QAAQ,EAAE1B,KAAK,IAAImB,UAAU,CAACnB,KAAK,CAAC,CAC3D;IACD,MAAM2B,MAAM,GAAGxD,QAAQ,CAAC,MAAMoC,KAAK,CAACf,IAAI,KAAK,KAAK,IAAIA,IAAI,CAACmC,MAAM,CAAC3B,KAAK,CAAC;IACxE,MAAM4B,WAAW,GAAGzD,QAAQ,CAAC,MAC3B,CAACoC,KAAK,CAACjB,QAAQ,IACfiB,KAAK,CAACf,IAAI,KAAK,KAAK,KACnBe,KAAK,CAACf,IAAI,IAAIA,IAAI,CAACoC,WAAW,CAAC5B,KAAK,IAAKO,KAAK,CAACP,KAAK,IAAI,IAAI,IAAI,CAAC,CAACyB,IAAK,CAAC,CAC1E;IAED,MAAMI,YAAY,GAAG1D,QAAQ,CAAC,MAAMoC,KAAK,CAACuB,OAAO,IAAIvB,KAAK,CAACd,GAAG,CAAC;IAC/D,MAAMsC,KAAK,GAAG5D,QAAQ,CAAC,MAAMoC,KAAK,CAACwB,KAAK,IAAIxB,KAAK,CAACrB,WAAW,CAAC;IAC9D,MAAM8C,YAAY,GAAG7D,QAAQ,CAAC,OAAO;MACnC4D,KAAK,EAAEL,QAAQ,CAAC1B,KAAK,GAAG+B,KAAK,CAAC/B,KAAK,IAAIO,KAAK,CAAClB,SAAS,GAAGkB,KAAK,CAAClB,SAAS;MACxEc,OAAO,EAAEI,KAAK,CAACJ;IACjB,CAAC,CAAC,CAAC;IAEH/B,KAAK,CAAC,MAAMoB,IAAI,CAACkC,QAAQ,EAAE1B,KAAK,EAAEiC,GAAG,IAAI;MACvC,IAAIA,GAAG,IAAIV,MAAM,CAACvB,KAAK,IAAI,IAAI,EAAE;QAC/BsB,IAAI,CAACY,IAAI,CAACX,MAAM,CAACvB,KAAK,EAAE,IAAI,CAAC;MAC/B;MAEA,IAAIiC,GAAG,EAAE;QACPT,YAAY,CAACS,GAAG,CAAC;MACnB;IACF,CAAC,EAAE;MAAEE,SAAS,EAAE;IAAK,CAAC,CAAC;IAEvB,MAAM;MAAEC;IAAa,CAAC,GAAGtE,YAAY,CAACyC,KAAK,CAAC;IAC5C,MAAM;MAAE8B;IAAc,CAAC,GAAGvF,SAAS,CAACyD,KAAK,CAAC;IAC1C,MAAM;MAAE+B,YAAY;MAAEC,WAAW;MAAEC;IAAe,CAAC,GAAGvE,UAAU,CAAC+D,YAAY,CAAC;IAC9E,MAAM;MAAES;IAAe,CAAC,GAAGxF,UAAU,CAACsD,KAAK,CAAC;IAC5C,MAAM;MAAEmC;IAAgB,CAAC,GAAGvF,YAAY,CAACoD,KAAK,CAAC;IAC/C,MAAM;MAAEoC;IAAiB,CAAC,GAAGtF,YAAY,CAACkD,KAAK,CAAC;IAChD,MAAM;MAAEqC;IAAe,CAAC,GAAGnF,UAAU,CAACoE,YAAY,CAAC;IACnD,MAAMgB,WAAW,GAAG1E,QAAQ,CAAC,MAAMoC,KAAK,CAAChB,KAAK,GAAI,gBAAegB,KAAK,CAAChB,KAAM,OAAM,GAAGR,SAAS,CAAC;IAEhG,MAAM+D,SAAS,GAAG3E,QAAQ,CAAC,OAAO;MAChCuD,QAAQ,EAAEA,QAAQ,CAAC1B,KAAK;MACxBkB,MAAM;MACNC,UAAU,EAAEA,UAAU,CAACnB,KAAK;MAC5BoB,eAAe,EAAEA,eAAe,CAACpB;IACnC,CAAC,CAAwB,CAAC;IAE1B,SAASC,OAAOA,CAAES,CAAa,EAAE;MAC/BK,IAAI,CAAC,OAAO,EAAEL,CAAC,CAAC;MAEhB,IAAIW,gBAAgB,IAAI,CAACO,WAAW,CAAC5B,KAAK,EAAE;MAE5CR,IAAI,CAACuD,QAAQ,GAAGrC,CAAC,CAAC;MAClBH,KAAK,CAACP,KAAK,IAAI,IAAI,IAAIkB,MAAM,CAAC,CAACC,UAAU,CAACnB,KAAK,EAAEU,CAAC,CAAC;IACrD;IAEA,SAASsC,SAASA,CAAEtC,CAAgB,EAAE;MACpC,IAAIA,CAAC,CAACuC,GAAG,KAAK,OAAO,IAAIvC,CAAC,CAACuC,GAAG,KAAK,GAAG,EAAE;QACtCvC,CAAC,CAACwC,cAAc,EAAE;QAClBjD,OAAO,CAACS,CAAC,CAAsB;MACjC;IACF;IAEAjC,SAAS,CAAC,MAAM;MACd,MAAM0E,GAAG,GAAGxB,MAAM,CAAC3B,KAAK,GAAG,GAAG,GAAGO,KAAK,CAAC6C,GAAG;MAC1C,MAAMC,QAAQ,GAAIvC,KAAK,CAACf,KAAK,IAAIQ,KAAK,CAACR,KAAM;MAC7C,MAAMuD,WAAW,GAAIxC,KAAK,CAACjB,QAAQ,IAAIU,KAAK,CAACV,QAAS;MACtD,MAAM0D,cAAc,GAAG,CAAC,EAAEhD,KAAK,CAACpB,YAAY,IAAIoB,KAAK,CAACnB,UAAU,CAAC;MACjE,MAAMoE,SAAS,GAAG,CAAC,EAAED,cAAc,IAAIzC,KAAK,CAAC2C,MAAM,CAAC;MACpD,MAAMC,eAAe,GAAG,CAAC,EAAEnD,KAAK,CAACb,aAAa,IAAIa,KAAK,CAACZ,WAAW,CAAC;MACpE,MAAMgE,UAAU,GAAG,CAAC,EAAED,eAAe,IAAI5C,KAAK,CAAC8C,OAAO,CAAC;MAEvDnC,IAAI,EAAEoC,gBAAgB,CAACF,UAAU,CAAC;MAElC,IAAIpD,KAAK,CAACrB,WAAW,EAAE;QACrBb,SAAS,CAAC,cAAc,EAAE,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;MACpD;MAEA,OAAAyF,eAAA,CAAAC,YAAA,CAAAZ,GAAA;QAAA,SAEW,CACL,aAAa,EACb;UACE,qBAAqB,EAAEzB,QAAQ,CAAC1B,KAAK;UACrC,uBAAuB,EAAEO,KAAK,CAACjB,QAAQ;UACvC,mBAAmB,EAAEsC,WAAW,CAAC5B,KAAK;UACtC,kBAAkB,EAAEO,KAAK,CAACd,GAAG;UAC7B,sBAAsB,EAAE,CAACkE,UAAU,IAAIlC,IAAI,EAAEkC,UAAU,CAAC3D,KAAK;UAC7D,CAAE,GAAEO,KAAK,CAACvB,WAAY,EAAC,GAAGuB,KAAK,CAACvB,WAAW,IAAI0C,QAAQ,CAAC1B;QAC1D,CAAC,EACDoC,YAAY,CAACpC,KAAK,EAClBqC,aAAa,CAACrC,KAAK,EACnBsC,YAAY,CAACtC,KAAK,EAClByC,cAAc,CAACzC,KAAK,EACpB2C,gBAAgB,CAAC3C,KAAK,EACtB6C,WAAW,CAAC7C,KAAK,EACjB4C,cAAc,CAAC5C,KAAK,EACpBwC,cAAc,CAACxC,KAAK,EACpBO,KAAK,CAACyD,KAAK,CACZ;QAAA,SACM,CACLzB,WAAW,CAACvC,KAAK,EACjB0C,eAAe,CAAC1C,KAAK,EACrBO,KAAK,CAAC0D,KAAK,CACZ;QAAA,QACMzE,IAAI,CAACyB,IAAI,CAACjB,KAAK;QAAA,YACX4B,WAAW,CAAC5B,KAAK,GAAIyB,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,GAAI1C,SAAS;QAAA,WAChDkB,OAAO;QAAA,aACL2B,WAAW,CAAC5B,KAAK,IAAI,CAAC2B,MAAM,CAAC3B,KAAK,IAAIgD;MAAS;QAAAlE,OAAA,EAAAA,CAAA,MAGzDf,WAAW,CAAC6D,WAAW,CAAC5B,KAAK,IAAI0B,QAAQ,CAAC1B,KAAK,EAAE,aAAa,CAAC,EAE/D2D,UAAU,IAAAI,YAAA;UAAA,OACD,SAAS;UAAA,SAAO;QAAsB,IAC3C,CAACjD,KAAK,CAAC8C,OAAO,GAAAG,YAAA,CAAAG,SAAA,SAEV3D,KAAK,CAACb,aAAa,IAAAqE,YAAA,CAAAtH,OAAA;UAAA,OAEb,gBAAgB;UAAA,WACV8D,KAAK,CAAC4D,OAAO;UAAA,SACf5D,KAAK,CAACb;QAAa,QAE9B,EAECa,KAAK,CAACZ,WAAW,IAAAoE,YAAA,CAAApH,KAAA;UAAA,OAEX,cAAc;UAAA,WACR4D,KAAK,CAAC4D,OAAO;UAAA,QAChB5D,KAAK,CAACZ;QAAW,QAE3B,KAAAoE,YAAA,CAAArH,iBAAA;UAAA,OAIG,kBAAkB;UAAA,YACX,CAACgH,eAAe;UAAA,YACjB;YACRjH,OAAO,EAAE;cACP0H,OAAO,EAAE5D,KAAK,CAAC4D,OAAO;cACtBC,KAAK,EAAE7D,KAAK,CAACb;YACf,CAAC;YACD/C,KAAK,EAAE;cACLwH,OAAO,EAAE5D,KAAK,CAAC4D,OAAO;cACtBE,IAAI,EAAE9D,KAAK,CAACZ;YACd,CAAC;YACD2E,eAAe,EAAE;cACfC,KAAK,EAAE;YACT;UACF;QAAC;UAAAzF,OAAA,EAAAA,CAAA,MAECgC,KAAK,CAAC8C,OAAO,GAAGd,SAAS,CAAC9C,KAAK,CAAC;QAAA,EAErC,EAEJ,EAAA+D,YAAA;UAAA,SAEU,sBAAsB;UAAA,qBAAmB;QAAE,IAClDV,QAAQ,IAAAU,YAAA,CAAAvH,cAAA;UAAA,OACY;QAAO;UAAAsC,OAAA,EAAAA,CAAA,MACvBgC,KAAK,CAACf,KAAK,GAAG;YAAEA,KAAK,EAAEQ,KAAK,CAACR;UAAM,CAAC,CAAC,IAAIQ,KAAK,CAACR,KAAK;QAAA,EAEzD,EAECuD,WAAW,IAAAS,YAAA,CAAAxH,iBAAA;UAAA,OACY;QAAU;UAAAuC,OAAA,EAAAA,CAAA,MAC7BgC,KAAK,CAACjB,QAAQ,GAAG;YAAEA,QAAQ,EAAEU,KAAK,CAACV;UAAS,CAAC,CAAC,IAAIU,KAAK,CAACV,QAAQ;QAAA,EAErE,EAECiB,KAAK,CAAChC,OAAO,GAAGgE,SAAS,CAAC9C,KAAK,CAAC,IAGlCwD,SAAS,IAAAO,YAAA;UAAA,OACA,QAAQ;UAAA,SAAO;QAAqB,IACzC,CAACjD,KAAK,CAAC2C,MAAM,GAAAM,YAAA,CAAAG,SAAA,SAET3D,KAAK,CAACnB,UAAU,IAAA2E,YAAA,CAAApH,KAAA;UAAA,OAEV,aAAa;UAAA,WACP4D,KAAK,CAAC4D,OAAO;UAAA,QAChB5D,KAAK,CAACnB;QAAU,QAE1B,EAECmB,KAAK,CAACpB,YAAY,IAAA4E,YAAA,CAAAtH,OAAA;UAAA,OAEZ,eAAe;UAAA,WACT8D,KAAK,CAAC4D,OAAO;UAAA,SACf5D,KAAK,CAACpB;QAAY,QAE7B,KAAA4E,YAAA,CAAArH,iBAAA;UAAA,OAIG,iBAAiB;UAAA,YACV,CAAC6G,cAAc;UAAA,YAChB;YACR9G,OAAO,EAAE;cACP0H,OAAO,EAAE5D,KAAK,CAAC4D,OAAO;cACtBC,KAAK,EAAE7D,KAAK,CAACpB;YACf,CAAC;YACDxC,KAAK,EAAE;cACLwH,OAAO,EAAE5D,KAAK,CAAC4D,OAAO;cACtBE,IAAI,EAAE9D,KAAK,CAACnB;YACd,CAAC;YACDkF,eAAe,EAAE;cACfE,GAAG,EAAE;YACP;UACF;QAAC;UAAA1F,OAAA,EAAAA,CAAA,MAECgC,KAAK,CAAC2C,MAAM,GAAGX,SAAS,CAAC9C,KAAK,CAAC;QAAA,EAEpC,EAEJ;MAAA,MAAAyE,iBAAA,YA1GU7C,WAAW,CAAC5B,KAAK,IAAIO,KAAK,CAACX,MAAM;IA6GlD,CAAC,CAAC;IAEF,OAAO,CAAC,CAAC;EACX;AACF,CAAC,CAAC"}
1
+ {"version":3,"file":"VListItem.mjs","names":["VListItemSubtitle","VListItemTitle","VAvatar","VDefaultsProvider","VIcon","useList","makeBorderProps","useBorder","makeComponentProps","makeDensityProps","useDensity","makeDimensionProps","useDimension","makeElevationProps","useElevation","IconValue","useNestedItem","makeRoundedProps","useRounded","makeRouterProps","useLink","makeTagProps","makeThemeProps","provideTheme","genOverlays","makeVariantProps","useVariant","Ripple","computed","watch","deprecate","EventProp","genericComponent","propsFactory","useRender","makeVListItemProps","active","type","Boolean","default","undefined","activeClass","String","activeColor","appendAvatar","appendIcon","baseColor","disabled","lines","link","nav","prependAvatar","prependIcon","ripple","Object","subtitle","Number","title","value","onClick","onClickOnce","variant","VListItem","name","directives","props","emits","click","e","setup","_ref","attrs","slots","emit","id","href","select","isSelected","isIndeterminate","isGroupActivator","root","parent","openOnSelect","list","isActive","isLink","isClickable","roundedProps","rounded","color","variantProps","val","open","immediate","themeClasses","borderClasses","colorClasses","colorStyles","variantClasses","densityClasses","dimensionStyles","elevationClasses","roundedClasses","lineClasses","slotProps","navigate","onKeyDown","key","preventDefault","Tag","tag","hasTitle","hasSubtitle","hasAppendMedia","hasAppend","append","hasPrependMedia","hasPrepend","prepend","updateHasPrepend","_withDirectives","_createVNode","class","style","_Fragment","density","image","icon","VListItemAction","start","end","_resolveDirective"],"sources":["../../../src/components/VList/VListItem.tsx"],"sourcesContent":["// Styles\nimport './VListItem.sass'\n\n// Components\nimport { VListItemSubtitle } from './VListItemSubtitle'\nimport { VListItemTitle } from './VListItemTitle'\nimport { VAvatar } from '@/components/VAvatar'\nimport { VDefaultsProvider } from '@/components/VDefaultsProvider'\nimport { VIcon } from '@/components/VIcon'\n\n// Composables\nimport { useList } from './list'\nimport { makeBorderProps, useBorder } from '@/composables/border'\nimport { makeComponentProps } from '@/composables/component'\nimport { makeDensityProps, useDensity } from '@/composables/density'\nimport { makeDimensionProps, useDimension } from '@/composables/dimensions'\nimport { makeElevationProps, useElevation } from '@/composables/elevation'\nimport { IconValue } from '@/composables/icons'\nimport { useNestedItem } from '@/composables/nested/nested'\nimport { makeRoundedProps, useRounded } from '@/composables/rounded'\nimport { makeRouterProps, useLink } from '@/composables/router'\nimport { makeTagProps } from '@/composables/tag'\nimport { makeThemeProps, provideTheme } from '@/composables/theme'\nimport { genOverlays, makeVariantProps, useVariant } from '@/composables/variant'\n\n// Directives\nimport { Ripple } from '@/directives/ripple'\n\n// Utilities\nimport { computed, watch } from 'vue'\nimport { deprecate, EventProp, genericComponent, propsFactory, useRender } from '@/util'\n\n// Types\nimport type { PropType } from 'vue'\nimport type { RippleDirectiveBinding } from '@/directives/ripple'\n\ntype ListItemSlot = {\n isActive: boolean\n isSelected: boolean\n isIndeterminate: boolean\n select: (value: boolean) => void\n}\n\nexport type ListItemTitleSlot = {\n title?: string | number | boolean\n}\n\nexport type ListItemSubtitleSlot = {\n subtitle?: string | number | boolean\n}\n\nexport type VListItemSlots = {\n prepend: ListItemSlot\n append: ListItemSlot\n default: ListItemSlot\n title: ListItemTitleSlot\n subtitle: ListItemSubtitleSlot\n}\n\nexport const makeVListItemProps = propsFactory({\n active: {\n type: Boolean,\n default: undefined,\n },\n activeClass: String,\n /* @deprecated */\n activeColor: String,\n appendAvatar: String,\n appendIcon: IconValue,\n baseColor: String,\n disabled: Boolean,\n lines: String as PropType<'one' | 'two' | 'three'>,\n link: {\n type: Boolean,\n default: undefined,\n },\n nav: Boolean,\n prependAvatar: String,\n prependIcon: IconValue,\n ripple: {\n type: [Boolean, Object] as PropType<RippleDirectiveBinding['value']>,\n default: true,\n },\n subtitle: [String, Number, Boolean],\n title: [String, Number, Boolean],\n value: null,\n\n onClick: EventProp<[MouseEvent]>(),\n onClickOnce: EventProp<[MouseEvent]>(),\n\n ...makeBorderProps(),\n ...makeComponentProps(),\n ...makeDensityProps(),\n ...makeDimensionProps(),\n ...makeElevationProps(),\n ...makeRoundedProps(),\n ...makeRouterProps(),\n ...makeTagProps(),\n ...makeThemeProps(),\n ...makeVariantProps({ variant: 'text' } as const),\n}, 'VListItem')\n\nexport const VListItem = genericComponent<VListItemSlots>()({\n name: 'VListItem',\n\n directives: { Ripple },\n\n props: makeVListItemProps(),\n\n emits: {\n click: (e: MouseEvent | KeyboardEvent) => true,\n },\n\n setup (props, { attrs, slots, emit }) {\n const link = useLink(props, attrs)\n const id = computed(() => props.value ?? 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 color = computed(() => props.color ?? props.activeColor)\n const variantProps = computed(() => ({\n color: isActive.value ? color.value ?? props.baseColor : props.baseColor,\n variant: props.variant,\n }))\n\n watch(() => link.isActive?.value, val => {\n if (val && parent.value != null) {\n root.open(parent.value, true)\n }\n\n if (val) {\n openOnSelect(val)\n }\n }, { immediate: true })\n\n const { themeClasses } = provideTheme(props)\n const { borderClasses } = useBorder(props)\n const { colorClasses, colorStyles, variantClasses } = useVariant(variantProps)\n const { densityClasses } = useDensity(props)\n const { dimensionStyles } = useDimension(props)\n const { elevationClasses } = useElevation(props)\n const { roundedClasses } = useRounded(roundedProps)\n const lineClasses = computed(() => props.lines ? `v-list-item--${props.lines}-line` : undefined)\n\n const slotProps = computed(() => ({\n isActive: isActive.value,\n select,\n isSelected: isSelected.value,\n isIndeterminate: isIndeterminate.value,\n } satisfies ListItemSlot))\n\n function onClick (e: MouseEvent) {\n emit('click', e)\n\n if (isGroupActivator || !isClickable.value) return\n\n link.navigate?.(e)\n props.value != null && select(!isSelected.value, e)\n }\n\n function onKeyDown (e: KeyboardEvent) {\n if (e.key === 'Enter' || e.key === ' ') {\n e.preventDefault()\n onClick(e as any as MouseEvent)\n }\n }\n\n useRender(() => {\n const Tag = isLink.value ? 'a' : props.tag\n const hasTitle = (slots.title || props.title)\n const hasSubtitle = (slots.subtitle || props.subtitle)\n const hasAppendMedia = !!(props.appendAvatar || props.appendIcon)\n const hasAppend = !!(hasAppendMedia || slots.append)\n const hasPrependMedia = !!(props.prependAvatar || props.prependIcon)\n const hasPrepend = !!(hasPrependMedia || slots.prepend)\n\n list?.updateHasPrepend(hasPrepend)\n\n if (props.activeColor) {\n deprecate('active-color', ['color', 'base-color'])\n }\n\n return (\n <Tag\n class={[\n 'v-list-item',\n {\n 'v-list-item--active': isActive.value,\n 'v-list-item--disabled': props.disabled,\n 'v-list-item--link': isClickable.value,\n 'v-list-item--nav': props.nav,\n 'v-list-item--prepend': !hasPrepend && list?.hasPrepend.value,\n [`${props.activeClass}`]: props.activeClass && isActive.value,\n },\n themeClasses.value,\n borderClasses.value,\n colorClasses.value,\n densityClasses.value,\n elevationClasses.value,\n lineClasses.value,\n roundedClasses.value,\n variantClasses.value,\n props.class,\n ]}\n style={[\n colorStyles.value,\n dimensionStyles.value,\n props.style,\n ]}\n href={ link.href.value }\n tabindex={ isClickable.value ? (list ? -2 : 0) : undefined }\n onClick={ onClick }\n onKeydown={ isClickable.value && !isLink.value && onKeyDown }\n v-ripple={ isClickable.value && props.ripple }\n >\n { genOverlays(isClickable.value || isActive.value, 'v-list-item') }\n\n { hasPrepend && (\n <div key=\"prepend\" class=\"v-list-item__prepend\">\n { !slots.prepend ? (\n <>\n { props.prependAvatar && (\n <VAvatar\n key=\"prepend-avatar\"\n density={ props.density }\n image={ props.prependAvatar }\n />\n )}\n\n { props.prependIcon && (\n <VIcon\n key=\"prepend-icon\"\n density={ props.density }\n icon={ props.prependIcon }\n />\n )}\n </>\n ) : (\n <VDefaultsProvider\n key=\"prepend-defaults\"\n disabled={ !hasPrependMedia }\n defaults={{\n VAvatar: {\n density: props.density,\n image: props.prependAvatar,\n },\n VIcon: {\n density: props.density,\n icon: props.prependIcon,\n },\n VListItemAction: {\n start: true,\n },\n }}\n >\n { slots.prepend?.(slotProps.value) }\n </VDefaultsProvider>\n )}\n </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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"}
@@ -76,7 +76,9 @@ declare const VListItem: {
76
76
  rounded?: string | number | boolean | undefined;
77
77
  density?: Density | undefined;
78
78
  variant?: NonNullable<"flat" | "text" | "elevated" | "tonal" | "outlined" | "plain"> | undefined;
79
- ripple?: boolean | undefined;
79
+ ripple?: boolean | {
80
+ class: string;
81
+ } | undefined;
80
82
  key?: string | number | symbol | undefined;
81
83
  height?: string | number | undefined;
82
84
  width?: string | number | undefined;
@@ -201,7 +203,9 @@ declare const VListItem: {
201
203
  tag: string;
202
204
  density: Density;
203
205
  variant: NonNullable<"flat" | "text" | "elevated" | "tonal" | "outlined" | "plain">;
204
- ripple: boolean;
206
+ ripple: boolean | {
207
+ class: string;
208
+ } | undefined;
205
209
  } & {
206
210
  link?: boolean | undefined;
207
211
  height?: string | number | undefined;
@@ -269,7 +273,9 @@ declare const VListItem: {
269
273
  rounded: string | number | boolean;
270
274
  density: Density;
271
275
  variant: NonNullable<"flat" | "text" | "elevated" | "tonal" | "outlined" | "plain">;
272
- ripple: boolean;
276
+ ripple: boolean | {
277
+ class: string;
278
+ } | undefined;
273
279
  }, {}, string, vue.SlotsType<Partial<{
274
280
  prepend: (arg: ListItemSlot) => vue.VNode<vue.RendererNode, vue.RendererElement, {
275
281
  [key: string]: any;
@@ -315,7 +321,9 @@ declare const VListItem: {
315
321
  tag: string;
316
322
  density: Density;
317
323
  variant: NonNullable<"flat" | "text" | "elevated" | "tonal" | "outlined" | "plain">;
318
- ripple: boolean;
324
+ ripple: boolean | {
325
+ class: string;
326
+ } | undefined;
319
327
  } & {
320
328
  link?: boolean | undefined;
321
329
  height?: string | number | undefined;
@@ -382,7 +390,9 @@ declare const VListItem: {
382
390
  tag: string;
383
391
  density: Density;
384
392
  variant: NonNullable<"flat" | "text" | "elevated" | "tonal" | "outlined" | "plain">;
385
- ripple: boolean;
393
+ ripple: boolean | {
394
+ class: string;
395
+ } | undefined;
386
396
  } & {
387
397
  link?: boolean | undefined;
388
398
  height?: string | number | undefined;
@@ -450,7 +460,9 @@ declare const VListItem: {
450
460
  rounded: string | number | boolean;
451
461
  density: Density;
452
462
  variant: NonNullable<"flat" | "text" | "elevated" | "tonal" | "outlined" | "plain">;
453
- ripple: boolean;
463
+ ripple: boolean | {
464
+ class: string;
465
+ } | undefined;
454
466
  }, {}, string, vue.SlotsType<Partial<{
455
467
  prepend: (arg: ListItemSlot) => vue.VNode<vue.RendererNode, vue.RendererElement, {
456
468
  [key: string]: any;
@@ -530,7 +542,9 @@ declare const VListItem: {
530
542
  prependAvatar: StringConstructor;
531
543
  prependIcon: PropType<IconValue>;
532
544
  ripple: {
533
- type: BooleanConstructor;
545
+ type: PropType<boolean | {
546
+ class: string;
547
+ } | undefined>;
534
548
  default: boolean;
535
549
  };
536
550
  subtitle: (StringConstructor | BooleanConstructor | NumberConstructor)[];
@@ -601,7 +615,9 @@ declare const VListItem: {
601
615
  prependAvatar: StringConstructor;
602
616
  prependIcon: PropType<IconValue>;
603
617
  ripple: {
604
- type: BooleanConstructor;
618
+ type: PropType<boolean | {
619
+ class: string;
620
+ } | undefined>;
605
621
  default: boolean;
606
622
  };
607
623
  subtitle: (StringConstructor | BooleanConstructor | NumberConstructor)[];
@@ -12,7 +12,7 @@ import { useProxiedModel } from "../../composables/proxiedModel.mjs";
12
12
  import { useScopeId } from "../../composables/scopeId.mjs"; // Utilities
13
13
  import { computed, inject, mergeProps, provide, ref, shallowRef, watch } from 'vue';
14
14
  import { VMenuSymbol } from "./shared.mjs";
15
- import { genericComponent, getUid, omit, propsFactory, useRender } from "../../util/index.mjs"; // Types
15
+ import { focusChild, genericComponent, getUid, omit, propsFactory, useRender } from "../../util/index.mjs"; // Types
16
16
  export const makeVMenuProps = propsFactory({
17
17
  // TODO
18
18
  // disableKeys: Boolean,
@@ -70,10 +70,35 @@ export const VMenu = genericComponent()({
70
70
  function onClickOutside() {
71
71
  parent?.closeParents();
72
72
  }
73
+ function onKeydown(e) {
74
+ if (props.disabled) return;
75
+ if (e.key === 'Tab') {
76
+ isActive.value = false;
77
+ overlay.value?.activatorEl?.focus();
78
+ }
79
+ }
80
+ function onActivatorKeydown(e) {
81
+ if (props.disabled) return;
82
+ const el = overlay.value?.contentEl;
83
+ if (el && isActive.value) {
84
+ if (e.key === 'ArrowDown') {
85
+ e.preventDefault();
86
+ focusChild(el, 'next');
87
+ } else if (e.key === 'ArrowUp') {
88
+ e.preventDefault();
89
+ focusChild(el, 'prev');
90
+ }
91
+ } else if (['ArrowDown', 'ArrowUp'].includes(e.key)) {
92
+ isActive.value = true;
93
+ e.preventDefault();
94
+ setTimeout(() => setTimeout(() => onActivatorKeydown(e)));
95
+ }
96
+ }
73
97
  const activatorProps = computed(() => mergeProps({
74
98
  'aria-haspopup': 'menu',
75
99
  'aria-expanded': String(isActive.value),
76
- 'aria-owns': id.value
100
+ 'aria-owns': id.value,
101
+ onKeydown: onActivatorKeydown
77
102
  }, props.activatorProps));
78
103
  useRender(() => {
79
104
  const [overlayProps] = VOverlay.filterProps(props);
@@ -86,7 +111,8 @@ export const VMenu = genericComponent()({
86
111
  "onUpdate:modelValue": $event => isActive.value = $event,
87
112
  "absolute": true,
88
113
  "activatorProps": activatorProps.value,
89
- "onClick:outside": onClickOutside
114
+ "onClick:outside": onClickOutside,
115
+ "onKeydown": onKeydown
90
116
  }, scopeId), {
91
117
  activator: slots.activator,
92
118
  default: function () {
@@ -1 +1 @@
1
- {"version":3,"file":"VMenu.mjs","names":["VDialogTransition","VDefaultsProvider","VOverlay","makeVOverlayProps","forwardRefs","useProxiedModel","useScopeId","computed","inject","mergeProps","provide","ref","shallowRef","watch","VMenuSymbol","genericComponent","getUid","omit","propsFactory","useRender","makeVMenuProps","id","String","closeDelay","closeOnContentClick","locationStrategy","openDelay","scrim","scrollStrategy","transition","component","VMenu","name","props","emits","value","setup","_ref","slots","isActive","scopeId","uid","overlay","parent","openChildren","register","unregister","closeParents","setTimeout","val","onClickOutside","activatorProps","overlayProps","filterProps","_createVNode","_mergeProps","class","style","$event","activator","default","_len","arguments","length","args","Array","_key","ΨopenChildren"],"sources":["../../../src/components/VMenu/VMenu.tsx"],"sourcesContent":["// Styles\nimport './VMenu.sass'\n\n// Components\nimport { VDialogTransition } from '@/components/transitions'\nimport { VDefaultsProvider } from '@/components/VDefaultsProvider'\nimport { VOverlay } from '@/components/VOverlay'\nimport { makeVOverlayProps } from '@/components/VOverlay/VOverlay'\n\n// Composables\nimport { forwardRefs } from '@/composables/forwardRefs'\nimport { useProxiedModel } from '@/composables/proxiedModel'\nimport { useScopeId } from '@/composables/scopeId'\n\n// Utilities\nimport { computed, inject, mergeProps, provide, ref, shallowRef, watch } from 'vue'\nimport { VMenuSymbol } from './shared'\nimport { genericComponent, getUid, omit, propsFactory, useRender } from '@/util'\n\n// Types\nimport type { Component } from 'vue'\nimport type { OverlaySlots } from '@/components/VOverlay/VOverlay'\n\nexport const makeVMenuProps = propsFactory({\n // TODO\n // disableKeys: Boolean,\n id: String,\n\n ...omit(makeVOverlayProps({\n closeDelay: 250,\n closeOnContentClick: true,\n locationStrategy: 'connected' as const,\n openDelay: 300,\n scrim: false,\n scrollStrategy: 'reposition' as const,\n transition: { component: VDialogTransition as Component },\n }), ['absolute']),\n}, 'VMenu')\n\nexport const VMenu = genericComponent<OverlaySlots>()({\n name: 'VMenu',\n\n props: makeVMenuProps(),\n\n emits: {\n 'update:modelValue': (value: boolean) => true,\n },\n\n setup (props, { slots }) {\n const isActive = useProxiedModel(props, 'modelValue')\n const { scopeId } = useScopeId()\n\n const uid = getUid()\n const id = computed(() => props.id || `v-menu-${uid}`)\n\n const overlay = ref<VOverlay>()\n\n const parent = inject(VMenuSymbol, null)\n const openChildren = shallowRef(0)\n provide(VMenuSymbol, {\n register () {\n ++openChildren.value\n },\n unregister () {\n --openChildren.value\n },\n closeParents () {\n setTimeout(() => {\n if (!openChildren.value) {\n isActive.value = false\n parent?.closeParents()\n }\n }, 40)\n },\n })\n\n watch(isActive, val => {\n val ? parent?.register() : parent?.unregister()\n })\n\n function onClickOutside () {\n parent?.closeParents()\n }\n\n const activatorProps = computed(() =>\n mergeProps({\n 'aria-haspopup': 'menu',\n 'aria-expanded': String(isActive.value),\n 'aria-owns': id.value,\n }, props.activatorProps)\n )\n\n useRender(() => {\n const [overlayProps] = VOverlay.filterProps(props)\n\n return (\n <VOverlay\n ref={ overlay }\n class={[\n 'v-menu',\n props.class,\n ]}\n style={ props.style }\n { ...overlayProps }\n v-model={ isActive.value }\n absolute\n activatorProps={ activatorProps.value }\n onClick:outside={ onClickOutside }\n { ...scopeId }\n >\n {{\n activator: slots.activator,\n default: (...args) => (\n <VDefaultsProvider root=\"VMenu\">\n { slots.default?.(...args) }\n </VDefaultsProvider>\n ),\n }}\n </VOverlay>\n )\n })\n\n return forwardRefs({ id, ΨopenChildren: openChildren }, overlay)\n },\n})\n\nexport type VMenu = InstanceType<typeof VMenu>\n"],"mappings":"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"}
1
+ {"version":3,"file":"VMenu.mjs","names":["VDialogTransition","VDefaultsProvider","VOverlay","makeVOverlayProps","forwardRefs","useProxiedModel","useScopeId","computed","inject","mergeProps","provide","ref","shallowRef","watch","VMenuSymbol","focusChild","genericComponent","getUid","omit","propsFactory","useRender","makeVMenuProps","id","String","closeDelay","closeOnContentClick","locationStrategy","openDelay","scrim","scrollStrategy","transition","component","VMenu","name","props","emits","value","setup","_ref","slots","isActive","scopeId","uid","overlay","parent","openChildren","register","unregister","closeParents","setTimeout","val","onClickOutside","onKeydown","e","disabled","key","activatorEl","focus","onActivatorKeydown","el","contentEl","preventDefault","includes","activatorProps","overlayProps","filterProps","_createVNode","_mergeProps","class","style","$event","activator","default","_len","arguments","length","args","Array","_key","ΨopenChildren"],"sources":["../../../src/components/VMenu/VMenu.tsx"],"sourcesContent":["// Styles\nimport './VMenu.sass'\n\n// Components\nimport { VDialogTransition } from '@/components/transitions'\nimport { VDefaultsProvider } from '@/components/VDefaultsProvider'\nimport { VOverlay } from '@/components/VOverlay'\nimport { makeVOverlayProps } from '@/components/VOverlay/VOverlay'\n\n// Composables\nimport { forwardRefs } from '@/composables/forwardRefs'\nimport { useProxiedModel } from '@/composables/proxiedModel'\nimport { useScopeId } from '@/composables/scopeId'\n\n// Utilities\nimport { computed, inject, mergeProps, provide, ref, shallowRef, watch } from 'vue'\nimport { VMenuSymbol } from './shared'\nimport { focusChild, genericComponent, getUid, omit, propsFactory, useRender } from '@/util'\n\n// Types\nimport type { Component } from 'vue'\nimport type { OverlaySlots } from '@/components/VOverlay/VOverlay'\n\nexport const makeVMenuProps = propsFactory({\n // TODO\n // disableKeys: Boolean,\n id: String,\n\n ...omit(makeVOverlayProps({\n closeDelay: 250,\n closeOnContentClick: true,\n locationStrategy: 'connected' as const,\n openDelay: 300,\n scrim: false,\n scrollStrategy: 'reposition' as const,\n transition: { component: VDialogTransition as Component },\n }), ['absolute']),\n}, 'VMenu')\n\nexport const VMenu = genericComponent<OverlaySlots>()({\n name: 'VMenu',\n\n props: makeVMenuProps(),\n\n emits: {\n 'update:modelValue': (value: boolean) => true,\n },\n\n setup (props, { slots }) {\n const isActive = useProxiedModel(props, 'modelValue')\n const { scopeId } = useScopeId()\n\n const uid = getUid()\n const id = computed(() => props.id || `v-menu-${uid}`)\n\n const overlay = ref<VOverlay>()\n\n const parent = inject(VMenuSymbol, null)\n const openChildren = shallowRef(0)\n provide(VMenuSymbol, {\n register () {\n ++openChildren.value\n },\n unregister () {\n --openChildren.value\n },\n closeParents () {\n setTimeout(() => {\n if (!openChildren.value) {\n isActive.value = false\n parent?.closeParents()\n }\n }, 40)\n },\n })\n\n watch(isActive, val => {\n val ? parent?.register() : parent?.unregister()\n })\n\n function onClickOutside () {\n parent?.closeParents()\n }\n\n function onKeydown (e: KeyboardEvent) {\n if (props.disabled) return\n\n if (e.key === 'Tab') {\n isActive.value = false\n overlay.value?.activatorEl?.focus()\n }\n }\n\n function onActivatorKeydown (e: KeyboardEvent) {\n if (props.disabled) return\n\n const el = overlay.value?.contentEl\n if (el && isActive.value) {\n if (e.key === 'ArrowDown') {\n e.preventDefault()\n focusChild(el, 'next')\n } else if (e.key === 'ArrowUp') {\n e.preventDefault()\n focusChild(el, 'prev')\n }\n } else if (['ArrowDown', 'ArrowUp'].includes(e.key)) {\n isActive.value = true\n e.preventDefault()\n setTimeout(() => setTimeout(() => onActivatorKeydown(e)))\n }\n }\n\n const activatorProps = computed(() =>\n mergeProps({\n 'aria-haspopup': 'menu',\n 'aria-expanded': String(isActive.value),\n 'aria-owns': id.value,\n onKeydown: onActivatorKeydown,\n }, props.activatorProps)\n )\n\n useRender(() => {\n const [overlayProps] = VOverlay.filterProps(props)\n\n return (\n <VOverlay\n ref={ overlay }\n class={[\n 'v-menu',\n props.class,\n ]}\n style={ props.style }\n { ...overlayProps }\n v-model={ isActive.value }\n absolute\n activatorProps={ activatorProps.value }\n onClick:outside={ onClickOutside }\n onKeydown={ onKeydown }\n { ...scopeId }\n >\n {{\n activator: slots.activator,\n default: (...args) => (\n <VDefaultsProvider root=\"VMenu\">\n { slots.default?.(...args) }\n </VDefaultsProvider>\n ),\n }}\n </VOverlay>\n )\n })\n\n return forwardRefs({ id, ΨopenChildren: openChildren }, overlay)\n },\n})\n\nexport type VMenu = InstanceType<typeof VMenu>\n"],"mappings":"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"}
@@ -21,7 +21,7 @@ import { makeThemeProps, provideTheme } from "../../composables/theme.mjs";
21
21
  import { useToggleScope } from "../../composables/toggleScope.mjs";
22
22
  import { makeTransitionProps, MaybeTransition } from "../../composables/transition.mjs"; // Directives
23
23
  import { ClickOutside } from "../../directives/click-outside/index.mjs"; // Utilities
24
- import { computed, mergeProps, ref, Teleport, toHandlers, toRef, Transition, watch } from 'vue';
24
+ import { computed, mergeProps, ref, Teleport, toRef, Transition, watch } from 'vue';
25
25
  import { animate, convertToUnit, genericComponent, getScrollParent, IN_BROWSER, propsFactory, standardEasing, useRender } from "../../util/index.mjs"; // Types
26
26
  function Scrim(props) {
27
27
  const {
@@ -178,6 +178,9 @@ export const VOverlay = genericComponent()({
178
178
  if (e.key === 'Escape' && globalTop.value) {
179
179
  if (!props.persistent) {
180
180
  isActive.value = false;
181
+ if (contentEl.value?.contains(document.activeElement)) {
182
+ activatorEl.value?.focus();
183
+ }
181
184
  } else animateClick();
182
185
  }
183
186
  }
@@ -220,7 +223,7 @@ export const VOverlay = genericComponent()({
220
223
  isActive: isActive.value,
221
224
  props: mergeProps({
222
225
  ref: activatorRef
223
- }, toHandlers(activatorEvents.value), props.activatorProps)
226
+ }, activatorEvents.value, props.activatorProps)
224
227
  }), isMounted.value && _createVNode(Teleport, {
225
228
  "disabled": !teleportTarget.value,
226
229
  "to": teleportTarget.value
@@ -238,7 +241,7 @@ export const VOverlay = genericComponent()({
238
241
  }, scopeId, attrs), [_createVNode(Scrim, _mergeProps({
239
242
  "color": scrimColor,
240
243
  "modelValue": isActive.value && !!props.scrim
241
- }, toHandlers(scrimEvents.value)), null), _createVNode(MaybeTransition, {
244
+ }, scrimEvents.value), null), _createVNode(MaybeTransition, {
242
245
  "appear": true,
243
246
  "persisted": true,
244
247
  "transition": props.transition,
@@ -252,7 +255,7 @@ export const VOverlay = genericComponent()({
252
255
  "ref": contentEl,
253
256
  "class": ['v-overlay__content', props.contentClass],
254
257
  "style": [dimensionStyles.value, contentStyles.value]
255
- }, toHandlers(contentEvents.value), props.contentProps), [slots.default?.({
258
+ }, contentEvents.value, props.contentProps), [slots.default?.({
256
259
  isActive
257
260
  })]), [[_vShow, isActive.value], [_resolveDirective("click-outside"), {
258
261
  handler: onClickOutside,