@vuetify/nightly 3.6.8-master.2024-06-11 → 3.6.9-master.2024-06-12

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 (45) hide show
  1. package/CHANGELOG.md +2 -10
  2. package/dist/json/attributes.json +4 -4
  3. package/dist/json/importMap-labs.json +24 -24
  4. package/dist/json/importMap.json +132 -132
  5. package/dist/json/web-types.json +12 -13
  6. package/dist/vuetify-labs.css +2088 -2088
  7. package/dist/vuetify-labs.d.ts +44 -45
  8. package/dist/vuetify-labs.esm.js +32 -19
  9. package/dist/vuetify-labs.esm.js.map +1 -1
  10. package/dist/vuetify-labs.js +32 -19
  11. package/dist/vuetify-labs.min.css +2 -2
  12. package/dist/vuetify.css +489 -489
  13. package/dist/vuetify.d.ts +84 -91
  14. package/dist/vuetify.esm.js +20 -13
  15. package/dist/vuetify.esm.js.map +1 -1
  16. package/dist/vuetify.js +20 -13
  17. package/dist/vuetify.js.map +1 -1
  18. package/dist/vuetify.min.css +2 -2
  19. package/dist/vuetify.min.js +31 -28
  20. package/dist/vuetify.min.js.map +1 -1
  21. package/lib/components/VFab/VFab.mjs +4 -7
  22. package/lib/components/VFab/VFab.mjs.map +1 -1
  23. package/lib/components/VFab/index.d.mts +46 -49
  24. package/lib/components/VList/VList.mjs +1 -0
  25. package/lib/components/VList/VList.mjs.map +1 -1
  26. package/lib/components/VList/index.d.mts +2 -0
  27. package/lib/components/VMenu/VMenu.mjs +1 -1
  28. package/lib/components/VMenu/VMenu.mjs.map +1 -1
  29. package/lib/components/VOverlay/VOverlay.mjs +4 -3
  30. package/lib/components/VOverlay/VOverlay.mjs.map +1 -1
  31. package/lib/components/index.d.mts +38 -45
  32. package/lib/composables/scroll.mjs +6 -0
  33. package/lib/composables/scroll.mjs.map +1 -1
  34. package/lib/entry-bundler.mjs +1 -1
  35. package/lib/framework.mjs +1 -1
  36. package/lib/index.d.mts +46 -46
  37. package/lib/labs/VTimePicker/VTimePickerClock.mjs +3 -1
  38. package/lib/labs/VTimePicker/VTimePickerClock.mjs.map +1 -1
  39. package/lib/labs/VTimePicker/VTimePickerControls.mjs +7 -2
  40. package/lib/labs/VTimePicker/VTimePickerControls.mjs.map +1 -1
  41. package/lib/labs/VTreeview/VTreeview.mjs +3 -4
  42. package/lib/labs/VTreeview/VTreeview.mjs.map +1 -1
  43. package/lib/labs/VTreeview/index.d.mts +6 -0
  44. package/lib/labs/components.d.mts +6 -0
  45. package/package.json +1 -1
@@ -5,22 +5,18 @@ import "./VFab.css";
5
5
  // Components
6
6
  import { makeVBtnProps, VBtn } from "../VBtn/VBtn.mjs"; // Composables
7
7
  import { makeLayoutItemProps, useLayoutItem } from "../../composables/layout.mjs";
8
+ import { makeLocationProps } from "../../composables/location.mjs";
8
9
  import { useProxiedModel } from "../../composables/proxiedModel.mjs";
9
10
  import { useResizeObserver } from "../../composables/resizeObserver.mjs";
10
11
  import { useToggleScope } from "../../composables/toggleScope.mjs";
11
12
  import { makeTransitionProps, MaybeTransition } from "../../composables/transition.mjs"; // Utilities
12
13
  import { computed, ref, shallowRef, toRef, watchEffect } from 'vue';
13
14
  import { genericComponent, omit, propsFactory, useRender } from "../../util/index.mjs"; // Types
14
- const locations = ['start', 'end', 'left', 'right', 'top', 'bottom'];
15
15
  export const makeVFabProps = propsFactory({
16
16
  app: Boolean,
17
17
  appear: Boolean,
18
18
  extended: Boolean,
19
19
  layout: Boolean,
20
- location: {
21
- type: String,
22
- default: 'bottom end'
23
- },
24
20
  offset: Boolean,
25
21
  modelValue: {
26
22
  type: Boolean,
@@ -30,6 +26,7 @@ export const makeVFabProps = propsFactory({
30
26
  active: true
31
27
  }), ['location']),
32
28
  ...makeLayoutItemProps(),
29
+ ...makeLocationProps(),
33
30
  ...makeTransitionProps({
34
31
  transition: 'fab-transition'
35
32
  })
@@ -56,11 +53,11 @@ export const VFab = genericComponent()({
56
53
  const hasPosition = computed(() => props.app || props.absolute);
57
54
  const position = computed(() => {
58
55
  if (!hasPosition.value) return false;
59
- return props.location.split(' ').shift();
56
+ return props.location?.split(' ').shift() ?? 'bottom';
60
57
  });
61
58
  const orientation = computed(() => {
62
59
  if (!hasPosition.value) return false;
63
- return props.location.split(' ')[1] ?? 'end';
60
+ return props.location?.split(' ')[1] ?? 'end';
64
61
  });
65
62
  useToggleScope(() => props.app, () => {
66
63
  const layout = useLayoutItem({
@@ -1 +1 @@
1
- {"version":3,"file":"VFab.mjs","names":["makeVBtnProps","VBtn","makeLayoutItemProps","useLayoutItem","useProxiedModel","useResizeObserver","useToggleScope","makeTransitionProps","MaybeTransition","computed","ref","shallowRef","toRef","watchEffect","genericComponent","omit","propsFactory","useRender","locations","makeVFabProps","app","Boolean","appear","extended","layout","location","type","String","default","offset","modelValue","active","transition","VFab","name","props","emits","value","setup","_ref","slots","model","height","layoutItemStyles","resizeRef","entries","length","target","clientHeight","hasPosition","absolute","position","split","shift","orientation","id","order","parseInt","layoutSize","elementSize","vFabRef","btnProps","filterProps","_createVNode","class","width","undefined","style","_withDirectives","_mergeProps","_vShow"],"sources":["../../../src/components/VFab/VFab.tsx"],"sourcesContent":["// Styles\nimport './VFab.sass'\n\n// Components\nimport { makeVBtnProps, VBtn } from '@/components/VBtn/VBtn'\n\n// Composables\nimport { makeLayoutItemProps, useLayoutItem } from '@/composables/layout'\nimport { useProxiedModel } from '@/composables/proxiedModel'\nimport { useResizeObserver } from '@/composables/resizeObserver'\nimport { useToggleScope } from '@/composables/toggleScope'\nimport { makeTransitionProps, MaybeTransition } from '@/composables/transition'\n\n// Utilities\nimport { computed, ref, shallowRef, toRef, watchEffect } from 'vue'\nimport { genericComponent, omit, propsFactory, useRender } from '@/util'\n\n// Types\nimport type { ComputedRef, PropType } from 'vue'\nimport type { Position } from '@/composables/layout'\n\nconst locations = ['start', 'end', 'left', 'right', 'top', 'bottom'] as const\n\nexport const makeVFabProps = propsFactory({\n app: Boolean,\n appear: Boolean,\n extended: Boolean,\n layout: Boolean,\n location: {\n type: String as PropType<typeof locations[number]>,\n default: 'bottom end',\n },\n offset: Boolean,\n modelValue: {\n type: Boolean,\n default: true,\n },\n\n ...omit(makeVBtnProps({ active: true }), ['location']),\n ...makeLayoutItemProps(),\n ...makeTransitionProps({ transition: 'fab-transition' }),\n}, 'VFab')\n\nexport const VFab = genericComponent()({\n name: 'VFab',\n\n props: makeVFabProps(),\n\n emits: {\n 'update:modelValue': (value: boolean) => true,\n },\n\n setup (props, { slots }) {\n const model = useProxiedModel(props, 'modelValue')\n const height = shallowRef(56)\n const layoutItemStyles = ref()\n\n const { resizeRef } = useResizeObserver(entries => {\n if (!entries.length) return\n height.value = entries[0].target.clientHeight\n })\n\n const hasPosition = computed(() => props.app || props.absolute)\n\n const position = computed(() => {\n if (!hasPosition.value) return false\n\n return props.location.split(' ').shift()\n }) as ComputedRef<Position>\n\n const orientation = computed(() => {\n if (!hasPosition.value) return false\n\n return props.location.split(' ')[1] ?? 'end'\n })\n\n useToggleScope(() => props.app, () => {\n const layout = useLayoutItem({\n id: props.name,\n order: computed(() => parseInt(props.order, 10)),\n position,\n layoutSize: computed(() => props.layout ? height.value + 24 : 0),\n elementSize: computed(() => height.value + 24),\n active: computed(() => props.app && model.value),\n absolute: toRef(props, 'absolute'),\n })\n\n watchEffect(() => {\n layoutItemStyles.value = layout.layoutItemStyles.value\n })\n })\n\n const vFabRef = ref()\n\n useRender(() => {\n const btnProps = VBtn.filterProps(props)\n\n return (\n <div\n ref={ vFabRef }\n class={[\n 'v-fab',\n {\n 'v-fab--absolute': props.absolute,\n 'v-fab--app': !!props.app,\n 'v-fab--extended': props.extended,\n 'v-fab--offset': props.offset,\n [`v-fab--${position.value}`]: hasPosition.value,\n [`v-fab--${orientation.value}`]: hasPosition.value,\n },\n props.class,\n ]}\n style={[\n props.app ? {\n ...layoutItemStyles.value,\n } : {\n height: 'inherit',\n width: undefined,\n },\n props.style,\n ]}\n >\n <div class=\"v-fab__container\">\n <MaybeTransition\n appear={ props.appear }\n transition={ props.transition }\n >\n <VBtn\n v-show={ props.active }\n ref={ resizeRef }\n { ...btnProps }\n active={ undefined }\n location={ undefined }\n v-slots={ slots }\n />\n </MaybeTransition>\n </div>\n </div>\n )\n })\n\n return {}\n },\n})\n\nexport type VFab = InstanceType<typeof VFab>\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"VFab.mjs","names":["makeVBtnProps","VBtn","makeLayoutItemProps","useLayoutItem","makeLocationProps","useProxiedModel","useResizeObserver","useToggleScope","makeTransitionProps","MaybeTransition","computed","ref","shallowRef","toRef","watchEffect","genericComponent","omit","propsFactory","useRender","makeVFabProps","app","Boolean","appear","extended","layout","offset","modelValue","type","default","active","transition","VFab","name","props","emits","value","setup","_ref","slots","model","height","layoutItemStyles","resizeRef","entries","length","target","clientHeight","hasPosition","absolute","position","location","split","shift","orientation","id","order","parseInt","layoutSize","elementSize","vFabRef","btnProps","filterProps","_createVNode","class","width","undefined","style","_withDirectives","_mergeProps","_vShow"],"sources":["../../../src/components/VFab/VFab.tsx"],"sourcesContent":["// Styles\nimport './VFab.sass'\n\n// Components\nimport { makeVBtnProps, VBtn } from '@/components/VBtn/VBtn'\n\n// Composables\nimport { makeLayoutItemProps, useLayoutItem } from '@/composables/layout'\nimport { makeLocationProps } from '@/composables/location'\nimport { useProxiedModel } from '@/composables/proxiedModel'\nimport { useResizeObserver } from '@/composables/resizeObserver'\nimport { useToggleScope } from '@/composables/toggleScope'\nimport { makeTransitionProps, MaybeTransition } from '@/composables/transition'\n\n// Utilities\nimport { computed, ref, shallowRef, toRef, watchEffect } from 'vue'\nimport { genericComponent, omit, propsFactory, useRender } from '@/util'\n\n// Types\nimport type { ComputedRef } from 'vue'\nimport type { Position } from '@/composables/layout'\n\nexport const makeVFabProps = propsFactory({\n app: Boolean,\n appear: Boolean,\n extended: Boolean,\n layout: Boolean,\n offset: Boolean,\n modelValue: {\n type: Boolean,\n default: true,\n },\n\n ...omit(makeVBtnProps({ active: true }), ['location']),\n ...makeLayoutItemProps(),\n ...makeLocationProps(),\n ...makeTransitionProps({ transition: 'fab-transition' }),\n}, 'VFab')\n\nexport const VFab = genericComponent()({\n name: 'VFab',\n\n props: makeVFabProps(),\n\n emits: {\n 'update:modelValue': (value: boolean) => true,\n },\n\n setup (props, { slots }) {\n const model = useProxiedModel(props, 'modelValue')\n const height = shallowRef(56)\n const layoutItemStyles = ref()\n\n const { resizeRef } = useResizeObserver(entries => {\n if (!entries.length) return\n height.value = entries[0].target.clientHeight\n })\n\n const hasPosition = computed(() => props.app || props.absolute)\n\n const position = computed(() => {\n if (!hasPosition.value) return false\n\n return props.location?.split(' ').shift() ?? 'bottom'\n }) as ComputedRef<Position>\n\n const orientation = computed(() => {\n if (!hasPosition.value) return false\n\n return props.location?.split(' ')[1] ?? 'end'\n })\n\n useToggleScope(() => props.app, () => {\n const layout = useLayoutItem({\n id: props.name,\n order: computed(() => parseInt(props.order, 10)),\n position,\n layoutSize: computed(() => props.layout ? height.value + 24 : 0),\n elementSize: computed(() => height.value + 24),\n active: computed(() => props.app && model.value),\n absolute: toRef(props, 'absolute'),\n })\n\n watchEffect(() => {\n layoutItemStyles.value = layout.layoutItemStyles.value\n })\n })\n\n const vFabRef = ref()\n\n useRender(() => {\n const btnProps = VBtn.filterProps(props)\n\n return (\n <div\n ref={ vFabRef }\n class={[\n 'v-fab',\n {\n 'v-fab--absolute': props.absolute,\n 'v-fab--app': !!props.app,\n 'v-fab--extended': props.extended,\n 'v-fab--offset': props.offset,\n [`v-fab--${position.value}`]: hasPosition.value,\n [`v-fab--${orientation.value}`]: hasPosition.value,\n },\n props.class,\n ]}\n style={[\n props.app ? {\n ...layoutItemStyles.value,\n } : {\n height: 'inherit',\n width: undefined,\n },\n props.style,\n ]}\n >\n <div class=\"v-fab__container\">\n <MaybeTransition\n appear={ props.appear }\n transition={ props.transition }\n >\n <VBtn\n v-show={ props.active }\n ref={ resizeRef }\n { ...btnProps }\n active={ undefined }\n location={ undefined }\n v-slots={ slots }\n />\n </MaybeTransition>\n </div>\n </div>\n )\n })\n\n return {}\n },\n})\n\nexport type VFab = InstanceType<typeof VFab>\n"],"mappings":"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","ignoreList":[]}
@@ -1,14 +1,20 @@
1
- import * as vue from 'vue';
2
- import { ComponentPropsOptions, ExtractPropTypes, JSXComponent, PropType, ComponentInternalInstance, Ref, ComputedRef } from 'vue';
3
1
  // @ts-ignore
4
2
  import * as vue_router from 'vue-router';
3
+ import * as vue from 'vue';
4
+ import { ComponentPropsOptions, ExtractPropTypes, JSXComponent, PropType, ComponentInternalInstance, Ref, ComputedRef } from 'vue';
5
+
6
+ type Density = null | 'default' | 'comfortable' | 'compact';
7
+
8
+ declare const block: readonly ["top", "bottom"];
9
+ declare const inline: readonly ["start", "end", "left", "right"];
10
+ type Tblock = typeof block[number];
11
+ type Tinline = typeof inline[number];
12
+ type Anchor = Tblock | Tinline | 'center' | 'center center' | `${Tblock} ${Tinline | 'center'}` | `${Tinline} ${Tblock | 'center'}`;
5
13
 
6
14
  interface FilterPropsOptions<PropsOptions extends Readonly<ComponentPropsOptions>, Props = ExtractPropTypes<PropsOptions>> {
7
15
  filterProps<T extends Partial<Props>, U extends Exclude<keyof Props, Exclude<keyof Props, keyof T>>>(props: T): Partial<Pick<T, U>>;
8
16
  }
9
17
 
10
- type Density = null | 'default' | 'comfortable' | 'compact';
11
-
12
18
  type IconValue = string | (string | [path: string, opacity: number])[] | JSXComponent;
13
19
  declare const IconValue: PropType<IconValue>;
14
20
 
@@ -62,7 +68,6 @@ declare const VFab: {
62
68
  appear: boolean;
63
69
  density: Density;
64
70
  extended: boolean;
65
- location: "left" | "right" | "end" | "top" | "bottom" | "start";
66
71
  slim: boolean;
67
72
  stacked: boolean;
68
73
  ripple: boolean | {
@@ -90,6 +95,7 @@ declare const VFab: {
90
95
  minHeight?: string | number | undefined;
91
96
  minWidth?: string | number | undefined;
92
97
  elevation?: string | number | undefined;
98
+ location?: Anchor | undefined;
93
99
  baseColor?: string | undefined;
94
100
  selectedClass?: string | undefined;
95
101
  prependIcon?: IconValue | undefined;
@@ -132,7 +138,6 @@ declare const VFab: {
132
138
  appear: boolean;
133
139
  density: Density;
134
140
  extended: boolean;
135
- location: "left" | "right" | "end" | "top" | "bottom" | "start";
136
141
  slim: boolean;
137
142
  stacked: boolean;
138
143
  ripple: boolean | {
@@ -160,6 +165,7 @@ declare const VFab: {
160
165
  minHeight?: string | number | undefined;
161
166
  minWidth?: string | number | undefined;
162
167
  elevation?: string | number | undefined;
168
+ location?: Anchor | undefined;
163
169
  baseColor?: string | undefined;
164
170
  selectedClass?: string | undefined;
165
171
  prependIcon?: IconValue | undefined;
@@ -201,7 +207,6 @@ declare const VFab: {
201
207
  appear: boolean;
202
208
  density: Density;
203
209
  extended: boolean;
204
- location: "left" | "right" | "end" | "top" | "bottom" | "start";
205
210
  slim: boolean;
206
211
  stacked: boolean;
207
212
  ripple: boolean | {
@@ -244,7 +249,6 @@ declare const VFab: {
244
249
  appear: boolean;
245
250
  density: Density;
246
251
  extended: boolean;
247
- location: "left" | "right" | "end" | "top" | "bottom" | "start";
248
252
  slim: boolean;
249
253
  stacked: boolean;
250
254
  ripple: boolean | {
@@ -272,6 +276,7 @@ declare const VFab: {
272
276
  minHeight?: string | number | undefined;
273
277
  minWidth?: string | number | undefined;
274
278
  elevation?: string | number | undefined;
279
+ location?: Anchor | undefined;
275
280
  baseColor?: string | undefined;
276
281
  selectedClass?: string | undefined;
277
282
  prependIcon?: IconValue | undefined;
@@ -313,7 +318,6 @@ declare const VFab: {
313
318
  appear: boolean;
314
319
  density: Density;
315
320
  extended: boolean;
316
- location: "left" | "right" | "end" | "top" | "bottom" | "start";
317
321
  slim: boolean;
318
322
  stacked: boolean;
319
323
  ripple: boolean | {
@@ -349,7 +353,6 @@ declare const VFab: {
349
353
  appear: boolean;
350
354
  density: Density;
351
355
  extended: boolean;
352
- location: "left" | "right" | "end" | "top" | "bottom" | "start";
353
356
  slim: boolean;
354
357
  stacked: boolean;
355
358
  ripple: boolean | {
@@ -377,6 +380,7 @@ declare const VFab: {
377
380
  minHeight?: string | number | undefined;
378
381
  minWidth?: string | number | undefined;
379
382
  elevation?: string | number | undefined;
383
+ location?: Anchor | undefined;
380
384
  baseColor?: string | undefined;
381
385
  selectedClass?: string | undefined;
382
386
  prependIcon?: IconValue | undefined;
@@ -420,7 +424,6 @@ declare const VFab: {
420
424
  appear: boolean;
421
425
  density: Density;
422
426
  extended: boolean;
423
- location: "left" | "right" | "end" | "top" | "bottom" | "start";
424
427
  slim: boolean;
425
428
  stacked: boolean;
426
429
  ripple: boolean | {
@@ -433,19 +436,20 @@ declare const VFab: {
433
436
  }>[];
434
437
  }>>> & vue.VNodeProps & vue.AllowedComponentProps & vue.ComponentCustomProps & FilterPropsOptions<{
435
438
  transition: Omit<{
436
- type: PropType<string | boolean | (vue.TransitionProps & {
439
+ type: vue.PropType<string | boolean | (vue.TransitionProps & {
437
440
  component?: vue.Component | undefined;
438
441
  })>;
439
442
  default: string;
440
443
  validator: (val: unknown) => boolean;
441
444
  }, "default" | "type"> & {
442
- type: PropType<NonNullable<string | boolean | (vue.TransitionProps & {
445
+ type: vue.PropType<NonNullable<string | boolean | (vue.TransitionProps & {
443
446
  component?: vue.Component | undefined;
444
447
  })>>;
445
448
  default: NonNullable<string | boolean | (vue.TransitionProps & {
446
449
  component?: vue.Component | undefined;
447
450
  })>;
448
451
  };
452
+ location: vue.PropType<Anchor>;
449
453
  name: {
450
454
  type: StringConstructor;
451
455
  };
@@ -460,9 +464,9 @@ declare const VFab: {
460
464
  };
461
465
  flat: BooleanConstructor;
462
466
  replace: BooleanConstructor;
463
- class: PropType<any>;
467
+ class: vue.PropType<any>;
464
468
  style: {
465
- type: PropType<vue.StyleValue>;
469
+ type: vue.PropType<vue.StyleValue>;
466
470
  default: null;
467
471
  };
468
472
  size: {
@@ -477,7 +481,7 @@ declare const VFab: {
477
481
  type: BooleanConstructor;
478
482
  default: undefined;
479
483
  }, "default" | "type"> & {
480
- type: PropType<boolean>;
484
+ type: vue.PropType<boolean>;
481
485
  default: boolean;
482
486
  };
483
487
  theme: StringConstructor;
@@ -488,15 +492,15 @@ declare const VFab: {
488
492
  type: StringConstructor;
489
493
  default: string;
490
494
  }, "default" | "type"> & {
491
- type: PropType<string>;
495
+ type: vue.PropType<string>;
492
496
  default: string;
493
497
  };
494
498
  loading: (StringConstructor | BooleanConstructor)[];
495
- icon: PropType<boolean | IconValue>;
496
- to: PropType<vue_router.RouteLocationRaw>;
499
+ icon: vue.PropType<boolean | IconValue>;
500
+ to: vue.PropType<vue_router.RouteLocationRaw>;
497
501
  border: (StringConstructor | NumberConstructor | BooleanConstructor)[];
498
502
  position: {
499
- type: PropType<"fixed" | "absolute" | "relative" | "static" | "sticky">;
503
+ type: vue.PropType<"fixed" | "absolute" | "relative" | "static" | "sticky">;
500
504
  validator: (v: any) => boolean;
501
505
  };
502
506
  readonly: BooleanConstructor;
@@ -505,11 +509,11 @@ declare const VFab: {
505
509
  default: undefined;
506
510
  };
507
511
  variant: Omit<{
508
- type: PropType<"flat" | "text" | "elevated" | "tonal" | "outlined" | "plain">;
512
+ type: vue.PropType<"flat" | "text" | "elevated" | "tonal" | "outlined" | "plain">;
509
513
  default: string;
510
514
  validator: (v: any) => boolean;
511
515
  }, "default" | "type"> & {
512
- type: PropType<NonNullable<"flat" | "text" | "elevated" | "tonal" | "outlined" | "plain">>;
516
+ type: vue.PropType<NonNullable<"flat" | "text" | "elevated" | "tonal" | "outlined" | "plain">>;
513
517
  default: NonNullable<"flat" | "text" | "elevated" | "tonal" | "outlined" | "plain">;
514
518
  };
515
519
  maxHeight: (StringConstructor | NumberConstructor)[];
@@ -524,18 +528,18 @@ declare const VFab: {
524
528
  validator(v: any): boolean;
525
529
  };
526
530
  density: {
527
- type: PropType<Density>;
531
+ type: vue.PropType<Density>;
528
532
  default: string;
529
533
  validator: (v: any) => boolean;
530
534
  };
531
535
  baseColor: StringConstructor;
532
536
  selectedClass: StringConstructor;
533
- prependIcon: PropType<IconValue>;
534
- appendIcon: PropType<IconValue>;
537
+ prependIcon: vue.PropType<IconValue>;
538
+ appendIcon: vue.PropType<IconValue>;
535
539
  slim: BooleanConstructor;
536
540
  stacked: BooleanConstructor;
537
541
  ripple: {
538
- type: PropType<boolean | {
542
+ type: vue.PropType<boolean | {
539
543
  class: string;
540
544
  } | undefined>;
541
545
  default: boolean;
@@ -544,10 +548,6 @@ declare const VFab: {
544
548
  appear: BooleanConstructor;
545
549
  extended: BooleanConstructor;
546
550
  layout: BooleanConstructor;
547
- location: {
548
- type: PropType<"left" | "right" | "end" | "top" | "bottom" | "start">;
549
- default: string;
550
- };
551
551
  offset: BooleanConstructor;
552
552
  modelValue: {
553
553
  type: BooleanConstructor;
@@ -555,19 +555,20 @@ declare const VFab: {
555
555
  };
556
556
  }, vue.ExtractPropTypes<{
557
557
  transition: Omit<{
558
- type: PropType<string | boolean | (vue.TransitionProps & {
558
+ type: vue.PropType<string | boolean | (vue.TransitionProps & {
559
559
  component?: vue.Component | undefined;
560
560
  })>;
561
561
  default: string;
562
562
  validator: (val: unknown) => boolean;
563
563
  }, "default" | "type"> & {
564
- type: PropType<NonNullable<string | boolean | (vue.TransitionProps & {
564
+ type: vue.PropType<NonNullable<string | boolean | (vue.TransitionProps & {
565
565
  component?: vue.Component | undefined;
566
566
  })>>;
567
567
  default: NonNullable<string | boolean | (vue.TransitionProps & {
568
568
  component?: vue.Component | undefined;
569
569
  })>;
570
570
  };
571
+ location: vue.PropType<Anchor>;
571
572
  name: {
572
573
  type: StringConstructor;
573
574
  };
@@ -582,9 +583,9 @@ declare const VFab: {
582
583
  };
583
584
  flat: BooleanConstructor;
584
585
  replace: BooleanConstructor;
585
- class: PropType<any>;
586
+ class: vue.PropType<any>;
586
587
  style: {
587
- type: PropType<vue.StyleValue>;
588
+ type: vue.PropType<vue.StyleValue>;
588
589
  default: null;
589
590
  };
590
591
  size: {
@@ -599,7 +600,7 @@ declare const VFab: {
599
600
  type: BooleanConstructor;
600
601
  default: undefined;
601
602
  }, "default" | "type"> & {
602
- type: PropType<boolean>;
603
+ type: vue.PropType<boolean>;
603
604
  default: boolean;
604
605
  };
605
606
  theme: StringConstructor;
@@ -610,15 +611,15 @@ declare const VFab: {
610
611
  type: StringConstructor;
611
612
  default: string;
612
613
  }, "default" | "type"> & {
613
- type: PropType<string>;
614
+ type: vue.PropType<string>;
614
615
  default: string;
615
616
  };
616
617
  loading: (StringConstructor | BooleanConstructor)[];
617
- icon: PropType<boolean | IconValue>;
618
- to: PropType<vue_router.RouteLocationRaw>;
618
+ icon: vue.PropType<boolean | IconValue>;
619
+ to: vue.PropType<vue_router.RouteLocationRaw>;
619
620
  border: (StringConstructor | NumberConstructor | BooleanConstructor)[];
620
621
  position: {
621
- type: PropType<"fixed" | "absolute" | "relative" | "static" | "sticky">;
622
+ type: vue.PropType<"fixed" | "absolute" | "relative" | "static" | "sticky">;
622
623
  validator: (v: any) => boolean;
623
624
  };
624
625
  readonly: BooleanConstructor;
@@ -627,11 +628,11 @@ declare const VFab: {
627
628
  default: undefined;
628
629
  };
629
630
  variant: Omit<{
630
- type: PropType<"flat" | "text" | "elevated" | "tonal" | "outlined" | "plain">;
631
+ type: vue.PropType<"flat" | "text" | "elevated" | "tonal" | "outlined" | "plain">;
631
632
  default: string;
632
633
  validator: (v: any) => boolean;
633
634
  }, "default" | "type"> & {
634
- type: PropType<NonNullable<"flat" | "text" | "elevated" | "tonal" | "outlined" | "plain">>;
635
+ type: vue.PropType<NonNullable<"flat" | "text" | "elevated" | "tonal" | "outlined" | "plain">>;
635
636
  default: NonNullable<"flat" | "text" | "elevated" | "tonal" | "outlined" | "plain">;
636
637
  };
637
638
  maxHeight: (StringConstructor | NumberConstructor)[];
@@ -646,18 +647,18 @@ declare const VFab: {
646
647
  validator(v: any): boolean;
647
648
  };
648
649
  density: {
649
- type: PropType<Density>;
650
+ type: vue.PropType<Density>;
650
651
  default: string;
651
652
  validator: (v: any) => boolean;
652
653
  };
653
654
  baseColor: StringConstructor;
654
655
  selectedClass: StringConstructor;
655
- prependIcon: PropType<IconValue>;
656
- appendIcon: PropType<IconValue>;
656
+ prependIcon: vue.PropType<IconValue>;
657
+ appendIcon: vue.PropType<IconValue>;
657
658
  slim: BooleanConstructor;
658
659
  stacked: BooleanConstructor;
659
660
  ripple: {
660
- type: PropType<boolean | {
661
+ type: vue.PropType<boolean | {
661
662
  class: string;
662
663
  } | undefined>;
663
664
  default: boolean;
@@ -666,10 +667,6 @@ declare const VFab: {
666
667
  appear: BooleanConstructor;
667
668
  extended: BooleanConstructor;
668
669
  layout: BooleanConstructor;
669
- location: {
670
- type: PropType<"left" | "right" | "end" | "top" | "bottom" | "start">;
671
- default: string;
672
- };
673
670
  offset: BooleanConstructor;
674
671
  modelValue: {
675
672
  type: BooleanConstructor;
@@ -73,6 +73,7 @@ export const makeVListProps = propsFactory({
73
73
  nav: Boolean,
74
74
  'onClick:open': EventProp(),
75
75
  'onClick:select': EventProp(),
76
+ 'onUpdate:opened': EventProp(),
76
77
  ...makeNestedProps({
77
78
  selectStrategy: 'single-leaf',
78
79
  openStrategy: 'list'
@@ -1 +1 @@
1
- {"version":3,"file":"VList.mjs","names":["VListChildren","createList","makeBorderProps","useBorder","useBackgroundColor","makeComponentProps","provideDefaults","makeDensityProps","useDensity","makeDimensionProps","useDimension","makeElevationProps","useElevation","makeItemsProps","makeNestedProps","useNested","makeRoundedProps","useRounded","makeTagProps","makeThemeProps","provideTheme","makeVariantProps","computed","ref","shallowRef","toRef","EventProp","focusChild","genericComponent","getPropertyFromItem","omit","propsFactory","useRender","isPrimitive","value","transformItem","props","item","type","itemType","title","itemTitle","itemValue","undefined","children","itemChildren","itemProps","_props","transformItems","raw","items","array","push","useListItems","makeVListProps","baseColor","String","activeColor","activeClass","bgColor","disabled","Boolean","expandIcon","collapseIcon","lines","default","slim","nav","selectStrategy","openStrategy","variant","VList","name","emits","setup","_ref","slots","themeClasses","backgroundColorClasses","backgroundColorStyles","borderClasses","densityClasses","dimensionStyles","elevationClasses","roundedClasses","open","parents","select","lineClasses","color","VListGroup","VListItem","density","isFocused","contentRef","onFocusin","e","onFocusout","onFocus","relatedTarget","contains","focus","onKeydown","target","includes","tagName","key","preventDefault","onMousedown","location","_createVNode","tag","class","style","returnObject"],"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 { useBackgroundColor } from '@/composables/color'\nimport { makeComponentProps } from '@/composables/component'\nimport { provideDefaults } from '@/composables/defaults'\nimport { makeDensityProps, useDensity } from '@/composables/density'\nimport { makeDimensionProps, useDimension } from '@/composables/dimensions'\nimport { makeElevationProps, useElevation } from '@/composables/elevation'\nimport { makeItemsProps } from '@/composables/list-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'\n\n// Utilities\nimport { computed, ref, shallowRef, toRef } from 'vue'\nimport { EventProp, focusChild, genericComponent, getPropertyFromItem, omit, propsFactory, useRender } from '@/util'\n\n// Types\nimport type { PropType } from 'vue'\nimport type { VListChildrenSlots } from './VListChildren'\nimport type { ItemProps, ListItem } from '@/composables/list-items'\nimport type { GenericProps, SelectItemKey } from '@/util'\n\nexport interface InternalListItem<T = any> extends ListItem<T> {\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\n ? omit(item, ['children'])\n : 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\nexport function useListItems (props: ItemProps & { itemType: string }) {\n const items = computed(() => transformItems(props, props.items))\n\n return { items }\n}\n\nexport const makeVListProps = propsFactory({\n baseColor: String,\n /* @deprecated */\n activeColor: String,\n activeClass: String,\n bgColor: String,\n disabled: Boolean,\n expandIcon: String,\n collapseIcon: String,\n lines: {\n type: [Boolean, String] as PropType<'one' | 'two' | 'three' | false>,\n default: 'one',\n },\n slim: Boolean,\n nav: Boolean,\n\n 'onClick:open': EventProp<[{ id: unknown, value: boolean, path: unknown[] }]>(),\n 'onClick:select': EventProp<[{ id: unknown, value: boolean, path: unknown[] }]>(),\n ...makeNestedProps({\n selectStrategy: 'single-leaf' as const,\n openStrategy: 'list' as const,\n }),\n ...makeBorderProps(),\n ...makeComponentProps(),\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}, 'VList')\n\ntype ItemType<T> = T extends readonly (infer U)[] ? U : never\n\nexport const VList = genericComponent<new <\n T extends readonly any[],\n S = unknown,\n O = unknown\n>(\n props: {\n items?: T\n itemTitle?: SelectItemKey<ItemType<T>>\n itemValue?: SelectItemKey<ItemType<T>>\n itemChildren?: SelectItemKey<ItemType<T>>\n itemProps?: SelectItemKey<ItemType<T>>\n selected?: S\n 'onUpdate:selected'?: (value: S) => void\n 'onClick:open'?: (value: { id: unknown, value: boolean, path: unknown[] }) => void\n 'onClick:select'?: (value: { id: unknown, value: boolean, path: unknown[] }) => void\n opened?: O\n 'onUpdate:opened'?: (value: O) => void\n },\n slots: VListChildrenSlots<ItemType<T>>\n) => GenericProps<typeof props, typeof slots>>()({\n name: 'VList',\n\n props: makeVListProps(),\n\n emits: {\n 'update:selected': (value: unknown) => true,\n 'update:activated': (value: unknown) => true,\n 'update:opened': (value: unknown) => true,\n 'click:open': (value: { id: unknown, value: boolean, path: unknown[] }) => true,\n 'click:activate': (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 { children, open, parents, select } = useNested(props)\n const lineClasses = computed(() => props.lines ? `v-list--${props.lines}-line` : undefined)\n const activeColor = toRef(props, 'activeColor')\n const baseColor = toRef(props, 'baseColor')\n const color = toRef(props, 'color')\n\n createList()\n\n provideDefaults({\n VListGroup: {\n activeColor,\n baseColor,\n color,\n expandIcon: toRef(props, 'expandIcon'),\n collapseIcon: toRef(props, 'collapseIcon'),\n },\n VListItem: {\n activeClass: toRef(props, 'activeClass'),\n activeColor,\n baseColor,\n color,\n density: toRef(props, 'density'),\n disabled: toRef(props, 'disabled'),\n lines: toRef(props, 'lines'),\n nav: toRef(props, 'nav'),\n slim: toRef(props, 'slim'),\n variant: toRef(props, 'variant'),\n },\n })\n\n const isFocused = shallowRef(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 const target = e.target as HTMLElement\n\n if (!contentRef.value || ['INPUT', 'TEXTAREA'].includes(target.tagName)) 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 onMousedown (e: MouseEvent) {\n isFocused.value = true\n }\n\n function focus (location?: 'next' | 'prev' | 'first' | 'last') {\n if (contentRef.value) {\n return focusChild(contentRef.value, location)\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 'v-list--slim': props.slim,\n },\n themeClasses.value,\n backgroundColorClasses.value,\n borderClasses.value,\n densityClasses.value,\n elevationClasses.value,\n lineClasses.value,\n roundedClasses.value,\n props.class,\n ]}\n style={[\n backgroundColorStyles.value,\n dimensionStyles.value,\n props.style,\n ]}\n tabindex={ (props.disabled || isFocused.value) ? -1 : 0 }\n role=\"listbox\"\n aria-activedescendant={ undefined }\n onFocusin={ onFocusin }\n onFocusout={ onFocusout }\n onFocus={ onFocus }\n onKeydown={ onKeydown }\n onMousedown={ onMousedown }\n >\n <VListChildren\n items={ items.value }\n returnObject={ props.returnObject }\n v-slots={ slots }\n />\n </props.tag>\n )\n })\n\n return {\n open,\n select,\n focus,\n children,\n parents,\n }\n },\n})\n\nexport type VList = InstanceType<typeof VList>\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"VList.mjs","names":["VListChildren","createList","makeBorderProps","useBorder","useBackgroundColor","makeComponentProps","provideDefaults","makeDensityProps","useDensity","makeDimensionProps","useDimension","makeElevationProps","useElevation","makeItemsProps","makeNestedProps","useNested","makeRoundedProps","useRounded","makeTagProps","makeThemeProps","provideTheme","makeVariantProps","computed","ref","shallowRef","toRef","EventProp","focusChild","genericComponent","getPropertyFromItem","omit","propsFactory","useRender","isPrimitive","value","transformItem","props","item","type","itemType","title","itemTitle","itemValue","undefined","children","itemChildren","itemProps","_props","transformItems","raw","items","array","push","useListItems","makeVListProps","baseColor","String","activeColor","activeClass","bgColor","disabled","Boolean","expandIcon","collapseIcon","lines","default","slim","nav","selectStrategy","openStrategy","variant","VList","name","emits","setup","_ref","slots","themeClasses","backgroundColorClasses","backgroundColorStyles","borderClasses","densityClasses","dimensionStyles","elevationClasses","roundedClasses","open","parents","select","lineClasses","color","VListGroup","VListItem","density","isFocused","contentRef","onFocusin","e","onFocusout","onFocus","relatedTarget","contains","focus","onKeydown","target","includes","tagName","key","preventDefault","onMousedown","location","_createVNode","tag","class","style","returnObject"],"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 { useBackgroundColor } from '@/composables/color'\nimport { makeComponentProps } from '@/composables/component'\nimport { provideDefaults } from '@/composables/defaults'\nimport { makeDensityProps, useDensity } from '@/composables/density'\nimport { makeDimensionProps, useDimension } from '@/composables/dimensions'\nimport { makeElevationProps, useElevation } from '@/composables/elevation'\nimport { makeItemsProps } from '@/composables/list-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'\n\n// Utilities\nimport { computed, ref, shallowRef, toRef } from 'vue'\nimport { EventProp, focusChild, genericComponent, getPropertyFromItem, omit, propsFactory, useRender } from '@/util'\n\n// Types\nimport type { PropType } from 'vue'\nimport type { VListChildrenSlots } from './VListChildren'\nimport type { ItemProps, ListItem } from '@/composables/list-items'\nimport type { GenericProps, SelectItemKey } from '@/util'\n\nexport interface InternalListItem<T = any> extends ListItem<T> {\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\n ? omit(item, ['children'])\n : 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\nexport function useListItems (props: ItemProps & { itemType: string }) {\n const items = computed(() => transformItems(props, props.items))\n\n return { items }\n}\n\nexport const makeVListProps = propsFactory({\n baseColor: String,\n /* @deprecated */\n activeColor: String,\n activeClass: String,\n bgColor: String,\n disabled: Boolean,\n expandIcon: String,\n collapseIcon: String,\n lines: {\n type: [Boolean, String] as PropType<'one' | 'two' | 'three' | false>,\n default: 'one',\n },\n slim: Boolean,\n nav: Boolean,\n\n 'onClick:open': EventProp<[{ id: unknown, value: boolean, path: unknown[] }]>(),\n 'onClick:select': EventProp<[{ id: unknown, value: boolean, path: unknown[] }]>(),\n 'onUpdate:opened': EventProp<[]>(),\n ...makeNestedProps({\n selectStrategy: 'single-leaf' as const,\n openStrategy: 'list' as const,\n }),\n ...makeBorderProps(),\n ...makeComponentProps(),\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}, 'VList')\n\ntype ItemType<T> = T extends readonly (infer U)[] ? U : never\n\nexport const VList = genericComponent<new <\n T extends readonly any[],\n S = unknown,\n O = unknown\n>(\n props: {\n items?: T\n itemTitle?: SelectItemKey<ItemType<T>>\n itemValue?: SelectItemKey<ItemType<T>>\n itemChildren?: SelectItemKey<ItemType<T>>\n itemProps?: SelectItemKey<ItemType<T>>\n selected?: S\n 'onUpdate:selected'?: (value: S) => void\n 'onClick:open'?: (value: { id: unknown, value: boolean, path: unknown[] }) => void\n 'onClick:select'?: (value: { id: unknown, value: boolean, path: unknown[] }) => void\n opened?: O\n 'onUpdate:opened'?: (value: O) => void\n },\n slots: VListChildrenSlots<ItemType<T>>\n) => GenericProps<typeof props, typeof slots>>()({\n name: 'VList',\n\n props: makeVListProps(),\n\n emits: {\n 'update:selected': (value: unknown) => true,\n 'update:activated': (value: unknown) => true,\n 'update:opened': (value: unknown) => true,\n 'click:open': (value: { id: unknown, value: boolean, path: unknown[] }) => true,\n 'click:activate': (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 { children, open, parents, select } = useNested(props)\n const lineClasses = computed(() => props.lines ? `v-list--${props.lines}-line` : undefined)\n const activeColor = toRef(props, 'activeColor')\n const baseColor = toRef(props, 'baseColor')\n const color = toRef(props, 'color')\n\n createList()\n\n provideDefaults({\n VListGroup: {\n activeColor,\n baseColor,\n color,\n expandIcon: toRef(props, 'expandIcon'),\n collapseIcon: toRef(props, 'collapseIcon'),\n },\n VListItem: {\n activeClass: toRef(props, 'activeClass'),\n activeColor,\n baseColor,\n color,\n density: toRef(props, 'density'),\n disabled: toRef(props, 'disabled'),\n lines: toRef(props, 'lines'),\n nav: toRef(props, 'nav'),\n slim: toRef(props, 'slim'),\n variant: toRef(props, 'variant'),\n },\n })\n\n const isFocused = shallowRef(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 const target = e.target as HTMLElement\n\n if (!contentRef.value || ['INPUT', 'TEXTAREA'].includes(target.tagName)) 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 onMousedown (e: MouseEvent) {\n isFocused.value = true\n }\n\n function focus (location?: 'next' | 'prev' | 'first' | 'last') {\n if (contentRef.value) {\n return focusChild(contentRef.value, location)\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 'v-list--slim': props.slim,\n },\n themeClasses.value,\n backgroundColorClasses.value,\n borderClasses.value,\n densityClasses.value,\n elevationClasses.value,\n lineClasses.value,\n roundedClasses.value,\n props.class,\n ]}\n style={[\n backgroundColorStyles.value,\n dimensionStyles.value,\n props.style,\n ]}\n tabindex={ (props.disabled || isFocused.value) ? -1 : 0 }\n role=\"listbox\"\n aria-activedescendant={ undefined }\n onFocusin={ onFocusin }\n onFocusout={ onFocusout }\n onFocus={ onFocus }\n onKeydown={ onKeydown }\n onMousedown={ onMousedown }\n >\n <VListChildren\n items={ items.value }\n returnObject={ props.returnObject }\n v-slots={ slots }\n />\n </props.tag>\n )\n })\n\n return {\n open,\n select,\n focus,\n children,\n parents,\n }\n },\n})\n\nexport type VList = InstanceType<typeof VList>\n"],"mappings":";AAAA;AACA;;AAEA;AAAA,SACSA,aAAa,+BAEtB;AAAA,SACSC,UAAU;AAAA,SACVC,eAAe,EAAEC,SAAS;AAAA,SAC1BC,kBAAkB;AAAA,SAClBC,kBAAkB;AAAA,SAClBC,eAAe;AAAA,SACfC,gBAAgB,EAAEC,UAAU;AAAA,SAC5BC,kBAAkB,EAAEC,YAAY;AAAA,SAChCC,kBAAkB,EAAEC,YAAY;AAAA,SAChCC,cAAc;AAAA,SACdC,eAAe,EAAEC,SAAS;AAAA,SAC1BC,gBAAgB,EAAEC,UAAU;AAAA,SAC5BC,YAAY;AAAA,SACZC,cAAc,EAAEC,YAAY;AAAA,SAC5BC,gBAAgB,yCAEzB;AACA,SAASC,QAAQ,EAAEC,GAAG,EAAEC,UAAU,EAAEC,KAAK,QAAQ,KAAK;AAAA,SAC7CC,SAAS,EAAEC,UAAU,EAAEC,gBAAgB,EAAEC,mBAAmB,EAAEC,IAAI,EAAEC,YAAY,EAAEC,SAAS,gCAEpG;AAUA,SAASC,WAAWA,CAAEC,KAAc,EAAsC;EACxE,OAAO,OAAOA,KAAK,KAAK,QAAQ,IAAI,OAAOA,KAAK,KAAK,QAAQ,IAAI,OAAOA,KAAK,KAAK,SAAS;AAC7F;AAEA,SAASC,aAAaA,CAAEC,KAAuC,EAAEC,IAAS,EAAoB;EAC5F,MAAMC,IAAI,GAAGT,mBAAmB,CAACQ,IAAI,EAAED,KAAK,CAACG,QAAQ,EAAE,MAAM,CAAC;EAC9D,MAAMC,KAAK,GAAGP,WAAW,CAACI,IAAI,CAAC,GAAGA,IAAI,GAAGR,mBAAmB,CAACQ,IAAI,EAAED,KAAK,CAACK,SAAS,CAAC;EACnF,MAAMP,KAAK,GAAGL,mBAAmB,CAACQ,IAAI,EAAED,KAAK,CAACM,SAAS,EAAEC,SAAS,CAAC;EACnE,MAAMC,QAAQ,GAAGf,mBAAmB,CAACQ,IAAI,EAAED,KAAK,CAACS,YAAY,CAAC;EAC9D,MAAMC,SAAS,GAAGV,KAAK,CAACU,SAAS,KAAK,IAAI,GACtChB,IAAI,CAACO,IAAI,EAAE,CAAC,UAAU,CAAC,CAAC,GACxBR,mBAAmB,CAACQ,IAAI,EAAED,KAAK,CAACU,SAAS,CAAC;EAE9C,MAAMC,MAAM,GAAG;IACbP,KAAK;IACLN,KAAK;IACL,GAAGY;EACL,CAAC;EAED,OAAO;IACLR,IAAI;IACJE,KAAK,EAAEO,MAAM,CAACP,KAAK;IACnBN,KAAK,EAAEa,MAAM,CAACb,KAAK;IACnBE,KAAK,EAAEW,MAAM;IACbH,QAAQ,EAAEN,IAAI,KAAK,MAAM,IAAIM,QAAQ,GAAGI,cAAc,CAACZ,KAAK,EAAEQ,QAAQ,CAAC,GAAGD,SAAS;IACnFM,GAAG,EAAEZ;EACP,CAAC;AACH;AAEA,SAASW,cAAcA,CAAEZ,KAAuC,EAAEc,KAA0B,EAAE;EAC5F,MAAMC,KAAyB,GAAG,EAAE;EAEpC,KAAK,MAAMd,IAAI,IAAIa,KAAK,EAAE;IACxBC,KAAK,CAACC,IAAI,CAACjB,aAAa,CAACC,KAAK,EAAEC,IAAI,CAAC,CAAC;EACxC;EAEA,OAAOc,KAAK;AACd;AAEA,OAAO,SAASE,YAAYA,CAAEjB,KAAuC,EAAE;EACrE,MAAMc,KAAK,GAAG5B,QAAQ,CAAC,MAAM0B,cAAc,CAACZ,KAAK,EAAEA,KAAK,CAACc,KAAK,CAAC,CAAC;EAEhE,OAAO;IAAEA;EAAM,CAAC;AAClB;AAEA,OAAO,MAAMI,cAAc,GAAGvB,YAAY,CAAC;EACzCwB,SAAS,EAAEC,MAAM;EACjB;EACAC,WAAW,EAAED,MAAM;EACnBE,WAAW,EAAEF,MAAM;EACnBG,OAAO,EAAEH,MAAM;EACfI,QAAQ,EAAEC,OAAO;EACjBC,UAAU,EAAEN,MAAM;EAClBO,YAAY,EAAEP,MAAM;EACpBQ,KAAK,EAAE;IACL1B,IAAI,EAAE,CAACuB,OAAO,EAAEL,MAAM,CAA8C;IACpES,OAAO,EAAE;EACX,CAAC;EACDC,IAAI,EAAEL,OAAO;EACbM,GAAG,EAAEN,OAAO;EAEZ,cAAc,EAAEnC,SAAS,CAAqD,CAAC;EAC/E,gBAAgB,EAAEA,SAAS,CAAqD,CAAC;EACjF,iBAAiB,EAAEA,SAAS,CAAK,CAAC;EAClC,GAAGZ,eAAe,CAAC;IACjBsD,cAAc,EAAE,aAAsB;IACtCC,YAAY,EAAE;EAChB,CAAC,CAAC;EACF,GAAGnE,eAAe,CAAC,CAAC;EACpB,GAAGG,kBAAkB,CAAC,CAAC;EACvB,GAAGE,gBAAgB,CAAC,CAAC;EACrB,GAAGE,kBAAkB,CAAC,CAAC;EACvB,GAAGE,kBAAkB,CAAC,CAAC;EACvB4B,QAAQ,EAAE;IACRD,IAAI,EAAEkB,MAAM;IACZS,OAAO,EAAE;EACX,CAAC;EACD,GAAGpD,cAAc,CAAC,CAAC;EACnB,GAAGG,gBAAgB,CAAC,CAAC;EACrB,GAAGE,YAAY,CAAC,CAAC;EACjB,GAAGC,cAAc,CAAC,CAAC;EACnB,GAAGE,gBAAgB,CAAC;IAAEiD,OAAO,EAAE;EAAO,CAAU;AAClD,CAAC,EAAE,OAAO,CAAC;AAIX,OAAO,MAAMC,KAAK,GAAG3C,gBAAgB,CAmBU,CAAC,CAAC;EAC/C4C,IAAI,EAAE,OAAO;EAEbpC,KAAK,EAAEkB,cAAc,CAAC,CAAC;EAEvBmB,KAAK,EAAE;IACL,iBAAiB,EAAGvC,KAAc,IAAK,IAAI;IAC3C,kBAAkB,EAAGA,KAAc,IAAK,IAAI;IAC5C,eAAe,EAAGA,KAAc,IAAK,IAAI;IACzC,YAAY,EAAGA,KAAuD,IAAK,IAAI;IAC/E,gBAAgB,EAAGA,KAAuD,IAAK,IAAI;IACnF,cAAc,EAAGA,KAAuD,IAAK;EAC/E,CAAC;EAEDwC,KAAKA,CAAEtC,KAAK,EAAAuC,IAAA,EAAa;IAAA,IAAX;MAAEC;IAAM,CAAC,GAAAD,IAAA;IACrB,MAAM;MAAEzB;IAAM,CAAC,GAAGG,YAAY,CAACjB,KAAK,CAAC;IACrC,MAAM;MAAEyC;IAAa,CAAC,GAAGzD,YAAY,CAACgB,KAAK,CAAC;IAC5C,MAAM;MAAE0C,sBAAsB;MAAEC;IAAsB,CAAC,GAAG3E,kBAAkB,CAACqB,KAAK,CAACW,KAAK,EAAE,SAAS,CAAC,CAAC;IACrG,MAAM;MAAE4C;IAAc,CAAC,GAAG7E,SAAS,CAACiC,KAAK,CAAC;IAC1C,MAAM;MAAE6C;IAAe,CAAC,GAAGzE,UAAU,CAAC4B,KAAK,CAAC;IAC5C,MAAM;MAAE8C;IAAgB,CAAC,GAAGxE,YAAY,CAAC0B,KAAK,CAAC;IAC/C,MAAM;MAAE+C;IAAiB,CAAC,GAAGvE,YAAY,CAACwB,KAAK,CAAC;IAChD,MAAM;MAAEgD;IAAe,CAAC,GAAGnE,UAAU,CAACmB,KAAK,CAAC;IAC5C,MAAM;MAAEQ,QAAQ;MAAEyC,IAAI;MAAEC,OAAO;MAAEC;IAAO,CAAC,GAAGxE,SAAS,CAACqB,KAAK,CAAC;IAC5D,MAAMoD,WAAW,GAAGlE,QAAQ,CAAC,MAAMc,KAAK,CAAC4B,KAAK,GAAI,WAAU5B,KAAK,CAAC4B,KAAM,OAAM,GAAGrB,SAAS,CAAC;IAC3F,MAAMc,WAAW,GAAGhC,KAAK,CAACW,KAAK,EAAE,aAAa,CAAC;IAC/C,MAAMmB,SAAS,GAAG9B,KAAK,CAACW,KAAK,EAAE,WAAW,CAAC;IAC3C,MAAMqD,KAAK,GAAGhE,KAAK,CAACW,KAAK,EAAE,OAAO,CAAC;IAEnCnC,UAAU,CAAC,CAAC;IAEZK,eAAe,CAAC;MACdoF,UAAU,EAAE;QACVjC,WAAW;QACXF,SAAS;QACTkC,KAAK;QACL3B,UAAU,EAAErC,KAAK,CAACW,KAAK,EAAE,YAAY,CAAC;QACtC2B,YAAY,EAAEtC,KAAK,CAACW,KAAK,EAAE,cAAc;MAC3C,CAAC;MACDuD,SAAS,EAAE;QACTjC,WAAW,EAAEjC,KAAK,CAACW,KAAK,EAAE,aAAa,CAAC;QACxCqB,WAAW;QACXF,SAAS;QACTkC,KAAK;QACLG,OAAO,EAAEnE,KAAK,CAACW,KAAK,EAAE,SAAS,CAAC;QAChCwB,QAAQ,EAAEnC,KAAK,CAACW,KAAK,EAAE,UAAU,CAAC;QAClC4B,KAAK,EAAEvC,KAAK,CAACW,KAAK,EAAE,OAAO,CAAC;QAC5B+B,GAAG,EAAE1C,KAAK,CAACW,KAAK,EAAE,KAAK,CAAC;QACxB8B,IAAI,EAAEzC,KAAK,CAACW,KAAK,EAAE,MAAM,CAAC;QAC1BkC,OAAO,EAAE7C,KAAK,CAACW,KAAK,EAAE,SAAS;MACjC;IACF,CAAC,CAAC;IAEF,MAAMyD,SAAS,GAAGrE,UAAU,CAAC,KAAK,CAAC;IACnC,MAAMsE,UAAU,GAAGvE,GAAG,CAAc,CAAC;IACrC,SAASwE,SAASA,CAAEC,CAAa,EAAE;MACjCH,SAAS,CAAC3D,KAAK,GAAG,IAAI;IACxB;IAEA,SAAS+D,UAAUA,CAAED,CAAa,EAAE;MAClCH,SAAS,CAAC3D,KAAK,GAAG,KAAK;IACzB;IAEA,SAASgE,OAAOA,CAAEF,CAAa,EAAE;MAC/B,IACE,CAACH,SAAS,CAAC3D,KAAK,IAChB,EAAE8D,CAAC,CAACG,aAAa,IAAIL,UAAU,CAAC5D,KAAK,EAAEkE,QAAQ,CAACJ,CAAC,CAACG,aAAqB,CAAC,CAAC,EACzEE,KAAK,CAAC,CAAC;IACX;IAEA,SAASC,SAASA,CAAEN,CAAgB,EAAE;MACpC,MAAMO,MAAM,GAAGP,CAAC,CAACO,MAAqB;MAEtC,IAAI,CAACT,UAAU,CAAC5D,KAAK,IAAI,CAAC,OAAO,EAAE,UAAU,CAAC,CAACsE,QAAQ,CAACD,MAAM,CAACE,OAAO,CAAC,EAAE;MAEzE,IAAIT,CAAC,CAACU,GAAG,KAAK,WAAW,EAAE;QACzBL,KAAK,CAAC,MAAM,CAAC;MACf,CAAC,MAAM,IAAIL,CAAC,CAACU,GAAG,KAAK,SAAS,EAAE;QAC9BL,KAAK,CAAC,MAAM,CAAC;MACf,CAAC,MAAM,IAAIL,CAAC,CAACU,GAAG,KAAK,MAAM,EAAE;QAC3BL,KAAK,CAAC,OAAO,CAAC;MAChB,CAAC,MAAM,IAAIL,CAAC,CAACU,GAAG,KAAK,KAAK,EAAE;QAC1BL,KAAK,CAAC,MAAM,CAAC;MACf,CAAC,MAAM;QACL;MACF;MAEAL,CAAC,CAACW,cAAc,CAAC,CAAC;IACpB;IAEA,SAASC,WAAWA,CAAEZ,CAAa,EAAE;MACnCH,SAAS,CAAC3D,KAAK,GAAG,IAAI;IACxB;IAEA,SAASmE,KAAKA,CAAEQ,QAA6C,EAAE;MAC7D,IAAIf,UAAU,CAAC5D,KAAK,EAAE;QACpB,OAAOP,UAAU,CAACmE,UAAU,CAAC5D,KAAK,EAAE2E,QAAQ,CAAC;MAC/C;IACF;IAEA7E,SAAS,CAAC,MAAM;MACd,OAAA8E,YAAA,CAAA1E,KAAA,CAAA2E,GAAA;QAAA,OAEUjB,UAAU;QAAA,SACT,CACL,QAAQ,EACR;UACE,kBAAkB,EAAE1D,KAAK,CAACwB,QAAQ;UAClC,aAAa,EAAExB,KAAK,CAAC+B,GAAG;UACxB,cAAc,EAAE/B,KAAK,CAAC8B;QACxB,CAAC,EACDW,YAAY,CAAC3C,KAAK,EAClB4C,sBAAsB,CAAC5C,KAAK,EAC5B8C,aAAa,CAAC9C,KAAK,EACnB+C,cAAc,CAAC/C,KAAK,EACpBiD,gBAAgB,CAACjD,KAAK,EACtBsD,WAAW,CAACtD,KAAK,EACjBkD,cAAc,CAAClD,KAAK,EACpBE,KAAK,CAAC4E,KAAK,CACZ;QAAA,SACM,CACLjC,qBAAqB,CAAC7C,KAAK,EAC3BgD,eAAe,CAAChD,KAAK,EACrBE,KAAK,CAAC6E,KAAK,CACZ;QAAA,YACW7E,KAAK,CAACwB,QAAQ,IAAIiC,SAAS,CAAC3D,KAAK,GAAI,CAAC,CAAC,GAAG,CAAC;QAAA;QAAA,yBAE/BS,SAAS;QAAA,aACrBoD,SAAS;QAAA,cACRE,UAAU;QAAA,WACbC,OAAO;QAAA,aACLI,SAAS;QAAA,eACPM;MAAW;QAAA3C,OAAA,EAAAA,CAAA,MAAA6C,YAAA,CAAA9G,aAAA;UAAA,SAGfkD,KAAK,CAAChB,KAAK;UAAA,gBACJE,KAAK,CAAC8E;QAAY,GACvBtC,KAAK;MAAA;IAIvB,CAAC,CAAC;IAEF,OAAO;MACLS,IAAI;MACJE,MAAM;MACNc,KAAK;MACLzD,QAAQ;MACR0C;IACF,CAAC;EACH;AACF,CAAC,CAAC","ignoreList":[]}
@@ -1283,6 +1283,7 @@ declare const VList: {
1283
1283
  value: boolean;
1284
1284
  path: unknown[];
1285
1285
  }) => void>;
1286
+ 'onUpdate:opened': PropType<() => void>;
1286
1287
  }, vue.ExtractPropTypes<{
1287
1288
  color: StringConstructor;
1288
1289
  variant: Omit<{
@@ -1391,6 +1392,7 @@ declare const VList: {
1391
1392
  value: boolean;
1392
1393
  path: unknown[];
1393
1394
  }) => void>;
1395
+ 'onUpdate:opened': PropType<() => void>;
1394
1396
  }>>;
1395
1397
  type VList = InstanceType<typeof VList>;
1396
1398
 
@@ -96,7 +96,7 @@ export const VMenu = genericComponent()({
96
96
  function onKeydown(e) {
97
97
  if (props.disabled) return;
98
98
  if (e.key === 'Tab' || e.key === 'Enter' && !props.closeOnContentClick) {
99
- if (e.key === 'Enter' && e.target instanceof HTMLTextAreaElement) return;
99
+ if (e.key === 'Enter' && (e.target instanceof HTMLTextAreaElement || e.target instanceof HTMLInputElement && !!e.target.closest('form'))) return;
100
100
  if (e.key === 'Enter') e.preventDefault();
101
101
  const nextElement = getNextElement(focusableChildren(overlay.value?.contentEl, false), e.shiftKey ? 'prev' : 'next', el => el.tabIndex >= 0);
102
102
  if (!nextElement) {
@@ -1 +1 @@
1
- {"version":3,"file":"VMenu.mjs","names":["VDialogTransition","VDefaultsProvider","VOverlay","makeVOverlayProps","forwardRefs","useProxiedModel","useScopeId","computed","inject","mergeProps","nextTick","provide","ref","shallowRef","watch","VMenuSymbol","focusableChildren","focusChild","genericComponent","getNextElement","getUid","isClickInsideElement","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","e","setTimeout","persistent","contentEl","onFocusIn","before","relatedTarget","after","target","globalTop","document","includes","contains","focusable","focus","val","addEventListener","once","removeEventListener","onClickOutside","onKeydown","disabled","key","HTMLTextAreaElement","preventDefault","nextElement","shiftKey","el","tabIndex","activatorEl","onActivatorKeydown","activatorProps","overlayProps","filterProps","_createVNode","_mergeProps","class","style","$event","activator","default","_len","arguments","length","args","Array","_key","ΨopenChildren"],"sources":["../../../src/components/VMenu/VMenu.tsx"],"sourcesContent":["// Styles\nimport './VMenu.sass'\n\n// Components\nimport { VDialogTransition } from '@/components/transitions'\nimport { VDefaultsProvider } from '@/components/VDefaultsProvider'\nimport { VOverlay } from '@/components/VOverlay'\nimport { makeVOverlayProps } from '@/components/VOverlay/VOverlay'\n\n// Composables\nimport { forwardRefs } from '@/composables/forwardRefs'\nimport { useProxiedModel } from '@/composables/proxiedModel'\nimport { useScopeId } from '@/composables/scopeId'\n\n// Utilities\nimport { computed, inject, mergeProps, nextTick, provide, ref, shallowRef, watch } from 'vue'\nimport { VMenuSymbol } from './shared'\nimport {\n focusableChildren,\n focusChild,\n genericComponent,\n getNextElement,\n getUid,\n isClickInsideElement,\n omit,\n propsFactory,\n useRender,\n} 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 (e) {\n setTimeout(() => {\n if (!openChildren.value &&\n !props.persistent &&\n (e == null || (e && !isClickInsideElement(e, overlay.value!.contentEl!)))\n ) {\n isActive.value = false\n parent?.closeParents()\n }\n }, 40)\n },\n })\n\n async function onFocusIn (e: FocusEvent) {\n const before = e.relatedTarget as HTMLElement | null\n const after = e.target as HTMLElement | null\n\n await nextTick()\n\n if (\n isActive.value &&\n before !== after &&\n overlay.value?.contentEl &&\n // We're the topmost menu\n overlay.value?.globalTop &&\n // It isn't the document or the menu body\n ![document, overlay.value.contentEl].includes(after!) &&\n // It isn't inside the menu body\n !overlay.value.contentEl.contains(after)\n ) {\n const focusable = focusableChildren(overlay.value.contentEl)\n focusable[0]?.focus()\n }\n }\n\n watch(isActive, val => {\n if (val) {\n parent?.register()\n document.addEventListener('focusin', onFocusIn, { once: true })\n } else {\n parent?.unregister()\n document.removeEventListener('focusin', onFocusIn)\n }\n })\n\n function onClickOutside (e: MouseEvent) {\n parent?.closeParents(e)\n }\n\n function onKeydown (e: KeyboardEvent) {\n if (props.disabled) return\n\n if (e.key === 'Tab' || (e.key === 'Enter' && !props.closeOnContentClick)) {\n if (e.key === 'Enter' && e.target instanceof HTMLTextAreaElement) return\n if (e.key === 'Enter') e.preventDefault()\n\n const nextElement = getNextElement(\n focusableChildren(overlay.value?.contentEl as Element, false),\n e.shiftKey ? 'prev' : 'next',\n (el: HTMLElement) => el.tabIndex >= 0\n )\n if (!nextElement) {\n isActive.value = false\n overlay.value?.activatorEl?.focus()\n }\n } else if (['Enter', ' '].includes(e.key) && props.closeOnContentClick) {\n isActive.value = false\n parent?.closeParents()\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 id={ id.value }\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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","ignoreList":[]}
1
+ {"version":3,"file":"VMenu.mjs","names":["VDialogTransition","VDefaultsProvider","VOverlay","makeVOverlayProps","forwardRefs","useProxiedModel","useScopeId","computed","inject","mergeProps","nextTick","provide","ref","shallowRef","watch","VMenuSymbol","focusableChildren","focusChild","genericComponent","getNextElement","getUid","isClickInsideElement","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","e","setTimeout","persistent","contentEl","onFocusIn","before","relatedTarget","after","target","globalTop","document","includes","contains","focusable","focus","val","addEventListener","once","removeEventListener","onClickOutside","onKeydown","disabled","key","HTMLTextAreaElement","HTMLInputElement","closest","preventDefault","nextElement","shiftKey","el","tabIndex","activatorEl","onActivatorKeydown","activatorProps","overlayProps","filterProps","_createVNode","_mergeProps","class","style","$event","activator","default","_len","arguments","length","args","Array","_key","ΨopenChildren"],"sources":["../../../src/components/VMenu/VMenu.tsx"],"sourcesContent":["// Styles\nimport './VMenu.sass'\n\n// Components\nimport { VDialogTransition } from '@/components/transitions'\nimport { VDefaultsProvider } from '@/components/VDefaultsProvider'\nimport { VOverlay } from '@/components/VOverlay'\nimport { makeVOverlayProps } from '@/components/VOverlay/VOverlay'\n\n// Composables\nimport { forwardRefs } from '@/composables/forwardRefs'\nimport { useProxiedModel } from '@/composables/proxiedModel'\nimport { useScopeId } from '@/composables/scopeId'\n\n// Utilities\nimport { computed, inject, mergeProps, nextTick, provide, ref, shallowRef, watch } from 'vue'\nimport { VMenuSymbol } from './shared'\nimport {\n focusableChildren,\n focusChild,\n genericComponent,\n getNextElement,\n getUid,\n isClickInsideElement,\n omit,\n propsFactory,\n useRender,\n} 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 (e) {\n setTimeout(() => {\n if (!openChildren.value &&\n !props.persistent &&\n (e == null || (e && !isClickInsideElement(e, overlay.value!.contentEl!)))\n ) {\n isActive.value = false\n parent?.closeParents()\n }\n }, 40)\n },\n })\n\n async function onFocusIn (e: FocusEvent) {\n const before = e.relatedTarget as HTMLElement | null\n const after = e.target as HTMLElement | null\n\n await nextTick()\n\n if (\n isActive.value &&\n before !== after &&\n overlay.value?.contentEl &&\n // We're the topmost menu\n overlay.value?.globalTop &&\n // It isn't the document or the menu body\n ![document, overlay.value.contentEl].includes(after!) &&\n // It isn't inside the menu body\n !overlay.value.contentEl.contains(after)\n ) {\n const focusable = focusableChildren(overlay.value.contentEl)\n focusable[0]?.focus()\n }\n }\n\n watch(isActive, val => {\n if (val) {\n parent?.register()\n document.addEventListener('focusin', onFocusIn, { once: true })\n } else {\n parent?.unregister()\n document.removeEventListener('focusin', onFocusIn)\n }\n })\n\n function onClickOutside (e: MouseEvent) {\n parent?.closeParents(e)\n }\n\n function onKeydown (e: KeyboardEvent) {\n if (props.disabled) return\n\n if (e.key === 'Tab' || (e.key === 'Enter' && !props.closeOnContentClick)) {\n if (\n e.key === 'Enter' &&\n ((e.target instanceof HTMLTextAreaElement) ||\n (e.target instanceof HTMLInputElement && !!e.target.closest('form')))\n ) return\n if (e.key === 'Enter') e.preventDefault()\n\n const nextElement = getNextElement(\n focusableChildren(overlay.value?.contentEl as Element, false),\n e.shiftKey ? 'prev' : 'next',\n (el: HTMLElement) => el.tabIndex >= 0\n )\n if (!nextElement) {\n isActive.value = false\n overlay.value?.activatorEl?.focus()\n }\n } else if (['Enter', ' '].includes(e.key) && props.closeOnContentClick) {\n isActive.value = false\n parent?.closeParents()\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 id={ id.value }\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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","ignoreList":[]}