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

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 (49) hide show
  1. package/CHANGELOG.md +5 -6
  2. package/dist/json/attributes.json +4 -4
  3. package/dist/json/importMap-labs.json +18 -18
  4. package/dist/json/importMap.json +138 -138
  5. package/dist/json/web-types.json +13 -14
  6. package/dist/vuetify-labs.css +3435 -3435
  7. package/dist/vuetify-labs.d.ts +44 -45
  8. package/dist/vuetify-labs.esm.js +64 -33
  9. package/dist/vuetify-labs.esm.js.map +1 -1
  10. package/dist/vuetify-labs.js +64 -33
  11. package/dist/vuetify-labs.min.css +2 -2
  12. package/dist/vuetify.css +955 -955
  13. package/dist/vuetify.d.ts +86 -93
  14. package/dist/vuetify.esm.js +52 -27
  15. package/dist/vuetify.esm.js.map +1 -1
  16. package/dist/vuetify.js +52 -27
  17. package/dist/vuetify.js.map +1 -1
  18. package/dist/vuetify.min.css +2 -2
  19. package/dist/vuetify.min.js +34 -31
  20. package/dist/vuetify.min.js.map +1 -1
  21. package/lib/components/VExpansionPanel/VExpansionPanel.mjs +23 -11
  22. package/lib/components/VExpansionPanel/VExpansionPanel.mjs.map +1 -1
  23. package/lib/components/VExpansionPanel/VExpansionPanelTitle.mjs +13 -5
  24. package/lib/components/VExpansionPanel/VExpansionPanelTitle.mjs.map +1 -1
  25. package/lib/components/VFab/VFab.mjs +4 -7
  26. package/lib/components/VFab/VFab.mjs.map +1 -1
  27. package/lib/components/VFab/index.d.mts +46 -49
  28. package/lib/components/VList/VList.mjs +1 -0
  29. package/lib/components/VList/VList.mjs.map +1 -1
  30. package/lib/components/VList/index.d.mts +2 -0
  31. package/lib/components/VMenu/VMenu.mjs +1 -1
  32. package/lib/components/VMenu/VMenu.mjs.map +1 -1
  33. package/lib/components/VOverlay/VOverlay.mjs +4 -3
  34. package/lib/components/VOverlay/VOverlay.mjs.map +1 -1
  35. package/lib/components/index.d.mts +38 -45
  36. package/lib/composables/scroll.mjs +6 -0
  37. package/lib/composables/scroll.mjs.map +1 -1
  38. package/lib/entry-bundler.mjs +1 -1
  39. package/lib/framework.mjs +1 -1
  40. package/lib/index.d.mts +48 -48
  41. package/lib/labs/VTimePicker/VTimePickerClock.mjs +3 -1
  42. package/lib/labs/VTimePicker/VTimePickerClock.mjs.map +1 -1
  43. package/lib/labs/VTimePicker/VTimePickerControls.mjs +7 -2
  44. package/lib/labs/VTimePicker/VTimePickerControls.mjs.map +1 -1
  45. package/lib/labs/VTreeview/VTreeview.mjs +3 -4
  46. package/lib/labs/VTreeview/VTreeview.mjs.map +1 -1
  47. package/lib/labs/VTreeview/index.d.mts +6 -0
  48. package/lib/labs/components.d.mts +6 -0
  49. package/package.json +1 -1
@@ -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":"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","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":";AAAA;AACA;;AAEA;AAAA,SACSA,iBAAiB;AAAA,SACjBC,iBAAiB;AAAA,SACjBC,QAAQ;AAAA,SACRC,iBAAiB,oCAE1B;AAAA,SACSC,WAAW;AAAA,SACXC,eAAe;AAAA,SACfC,UAAU,yCAEnB;AACA,SAASC,QAAQ,EAAEC,MAAM,EAAEC,UAAU,EAAEC,QAAQ,EAAEC,OAAO,EAAEC,GAAG,EAAEC,UAAU,EAAEC,KAAK,QAAQ,KAAK;AAAA,SACpFC,WAAW;AAAA,SAElBC,iBAAiB,EACjBC,UAAU,EACVC,gBAAgB,EAChBC,cAAc,EACdC,MAAM,EACNC,oBAAoB,EACpBC,IAAI,EACJC,YAAY,EACZC,SAAS,gCAGX;AAIA,OAAO,MAAMC,cAAc,GAAGF,YAAY,CAAC;EACzC;EACA;EACAG,EAAE,EAAEC,MAAM;EAEV,GAAGL,IAAI,CAACnB,iBAAiB,CAAC;IACxByB,UAAU,EAAE,GAAG;IACfC,mBAAmB,EAAE,IAAI;IACzBC,gBAAgB,EAAE,WAAoB;IACtCC,SAAS,EAAE,GAAG;IACdC,KAAK,EAAE,KAAK;IACZC,cAAc,EAAE,YAAqB;IACrCC,UAAU,EAAE;MAAEC,SAAS,EAAEnC;IAA+B;EAC1D,CAAC,CAAC,EAAE,CAAC,UAAU,CAAC;AAClB,CAAC,EAAE,OAAO,CAAC;AAEX,OAAO,MAAMoC,KAAK,GAAGlB,gBAAgB,CAAe,CAAC,CAAC;EACpDmB,IAAI,EAAE,OAAO;EAEbC,KAAK,EAAEb,cAAc,CAAC,CAAC;EAEvBc,KAAK,EAAE;IACL,mBAAmB,EAAGC,KAAc,IAAK;EAC3C,CAAC;EAEDC,KAAKA,CAAEH,KAAK,EAAAI,IAAA,EAAa;IAAA,IAAX;MAAEC;IAAM,CAAC,GAAAD,IAAA;IACrB,MAAME,QAAQ,GAAGvC,eAAe,CAACiC,KAAK,EAAE,YAAY,CAAC;IACrD,MAAM;MAAEO;IAAQ,CAAC,GAAGvC,UAAU,CAAC,CAAC;IAEhC,MAAMwC,GAAG,GAAG1B,MAAM,CAAC,CAAC;IACpB,MAAMM,EAAE,GAAGnB,QAAQ,CAAC,MAAM+B,KAAK,CAACZ,EAAE,IAAK,UAASoB,GAAI,EAAC,CAAC;IAEtD,MAAMC,OAAO,GAAGnC,GAAG,CAAW,CAAC;IAE/B,MAAMoC,MAAM,GAAGxC,MAAM,CAACO,WAAW,EAAE,IAAI,CAAC;IACxC,MAAMkC,YAAY,GAAGpC,UAAU,CAAC,CAAC,CAAC;IAClCF,OAAO,CAACI,WAAW,EAAE;MACnBmC,QAAQA,CAAA,EAAI;QACV,EAAED,YAAY,CAACT,KAAK;MACtB,CAAC;MACDW,UAAUA,CAAA,EAAI;QACZ,EAAEF,YAAY,CAACT,KAAK;MACtB,CAAC;MACDY,YAAYA,CAAEC,CAAC,EAAE;QACfC,UAAU,CAAC,MAAM;UACf,IAAI,CAACL,YAAY,CAACT,KAAK,IACrB,CAACF,KAAK,CAACiB,UAAU,KAChBF,CAAC,IAAI,IAAI,IAAKA,CAAC,IAAI,CAAChC,oBAAoB,CAACgC,CAAC,EAAEN,OAAO,CAACP,KAAK,CAAEgB,SAAU,CAAE,CAAC,EACzE;YACAZ,QAAQ,CAACJ,KAAK,GAAG,KAAK;YACtBQ,MAAM,EAAEI,YAAY,CAAC,CAAC;UACxB;QACF,CAAC,EAAE,EAAE,CAAC;MACR;IACF,CAAC,CAAC;IAEF,eAAeK,SAASA,CAAEJ,CAAa,EAAE;MACvC,MAAMK,MAAM,GAAGL,CAAC,CAACM,aAAmC;MACpD,MAAMC,KAAK,GAAGP,CAAC,CAACQ,MAA4B;MAE5C,MAAMnD,QAAQ,CAAC,CAAC;MAEhB,IACEkC,QAAQ,CAACJ,KAAK,IACdkB,MAAM,KAAKE,KAAK,IAChBb,OAAO,CAACP,KAAK,EAAEgB,SAAS;MACxB;MACAT,OAAO,CAACP,KAAK,EAAEsB,SAAS;MACxB;MACA,CAAC,CAACC,QAAQ,EAAEhB,OAAO,CAACP,KAAK,CAACgB,SAAS,CAAC,CAACQ,QAAQ,CAACJ,KAAM,CAAC;MACrD;MACA,CAACb,OAAO,CAACP,KAAK,CAACgB,SAAS,CAACS,QAAQ,CAACL,KAAK,CAAC,EACxC;QACA,MAAMM,SAAS,GAAGlD,iBAAiB,CAAC+B,OAAO,CAACP,KAAK,CAACgB,SAAS,CAAC;QAC5DU,SAAS,CAAC,CAAC,CAAC,EAAEC,KAAK,CAAC,CAAC;MACvB;IACF;IAEArD,KAAK,CAAC8B,QAAQ,EAAEwB,GAAG,IAAI;MACrB,IAAIA,GAAG,EAAE;QACPpB,MAAM,EAAEE,QAAQ,CAAC,CAAC;QAClBa,QAAQ,CAACM,gBAAgB,CAAC,SAAS,EAAEZ,SAAS,EAAE;UAAEa,IAAI,EAAE;QAAK,CAAC,CAAC;MACjE,CAAC,MAAM;QACLtB,MAAM,EAAEG,UAAU,CAAC,CAAC;QACpBY,QAAQ,CAACQ,mBAAmB,CAAC,SAAS,EAAEd,SAAS,CAAC;MACpD;IACF,CAAC,CAAC;IAEF,SAASe,cAAcA,CAAEnB,CAAa,EAAE;MACtCL,MAAM,EAAEI,YAAY,CAACC,CAAC,CAAC;IACzB;IAEA,SAASoB,SAASA,CAAEpB,CAAgB,EAAE;MACpC,IAAIf,KAAK,CAACoC,QAAQ,EAAE;MAEpB,IAAIrB,CAAC,CAACsB,GAAG,KAAK,KAAK,IAAKtB,CAAC,CAACsB,GAAG,KAAK,OAAO,IAAI,CAACrC,KAAK,CAACT,mBAAoB,EAAE;QACxE,IACEwB,CAAC,CAACsB,GAAG,KAAK,OAAO,KACftB,CAAC,CAACQ,MAAM,YAAYe,mBAAmB,IACxCvB,CAAC,CAACQ,MAAM,YAAYgB,gBAAgB,IAAI,CAAC,CAACxB,CAAC,CAACQ,MAAM,CAACiB,OAAO,CAAC,MAAM,CAAE,CAAC,EACrE;QACF,IAAIzB,CAAC,CAACsB,GAAG,KAAK,OAAO,EAAEtB,CAAC,CAAC0B,cAAc,CAAC,CAAC;QAEzC,MAAMC,WAAW,GAAG7D,cAAc,CAChCH,iBAAiB,CAAC+B,OAAO,CAACP,KAAK,EAAEgB,SAAS,EAAa,KAAK,CAAC,EAC7DH,CAAC,CAAC4B,QAAQ,GAAG,MAAM,GAAG,MAAM,EAC3BC,EAAe,IAAKA,EAAE,CAACC,QAAQ,IAAI,CACtC,CAAC;QACD,IAAI,CAACH,WAAW,EAAE;UAChBpC,QAAQ,CAACJ,KAAK,GAAG,KAAK;UACtBO,OAAO,CAACP,KAAK,EAAE4C,WAAW,EAAEjB,KAAK,CAAC,CAAC;QACrC;MACF,CAAC,MAAM,IAAI,CAAC,OAAO,EAAE,GAAG,CAAC,CAACH,QAAQ,CAACX,CAAC,CAACsB,GAAG,CAAC,IAAIrC,KAAK,CAACT,mBAAmB,EAAE;QACtEe,QAAQ,CAACJ,KAAK,GAAG,KAAK;QACtBQ,MAAM,EAAEI,YAAY,CAAC,CAAC;MACxB;IACF;IAEA,SAASiC,kBAAkBA,CAAEhC,CAAgB,EAAE;MAC7C,IAAIf,KAAK,CAACoC,QAAQ,EAAE;MAEpB,MAAMQ,EAAE,GAAGnC,OAAO,CAACP,KAAK,EAAEgB,SAAS;MACnC,IAAI0B,EAAE,IAAItC,QAAQ,CAACJ,KAAK,EAAE;QACxB,IAAIa,CAAC,CAACsB,GAAG,KAAK,WAAW,EAAE;UACzBtB,CAAC,CAAC0B,cAAc,CAAC,CAAC;UAClB9D,UAAU,CAACiE,EAAE,EAAE,MAAM,CAAC;QACxB,CAAC,MAAM,IAAI7B,CAAC,CAACsB,GAAG,KAAK,SAAS,EAAE;UAC9BtB,CAAC,CAAC0B,cAAc,CAAC,CAAC;UAClB9D,UAAU,CAACiE,EAAE,EAAE,MAAM,CAAC;QACxB;MACF,CAAC,MAAM,IAAI,CAAC,WAAW,EAAE,SAAS,CAAC,CAAClB,QAAQ,CAACX,CAAC,CAACsB,GAAG,CAAC,EAAE;QACnD/B,QAAQ,CAACJ,KAAK,GAAG,IAAI;QACrBa,CAAC,CAAC0B,cAAc,CAAC,CAAC;QAClBzB,UAAU,CAAC,MAAMA,UAAU,CAAC,MAAM+B,kBAAkB,CAAChC,CAAC,CAAC,CAAC,CAAC;MAC3D;IACF;IAEA,MAAMiC,cAAc,GAAG/E,QAAQ,CAAC,MAC9BE,UAAU,CAAC;MACT,eAAe,EAAE,MAAM;MACvB,eAAe,EAAEkB,MAAM,CAACiB,QAAQ,CAACJ,KAAK,CAAC;MACvC,WAAW,EAAEd,EAAE,CAACc,KAAK;MACrBiC,SAAS,EAAEY;IACb,CAAC,EAAE/C,KAAK,CAACgD,cAAc,CACzB,CAAC;IAED9D,SAAS,CAAC,MAAM;MACd,MAAM+D,YAAY,GAAGrF,QAAQ,CAACsF,WAAW,CAAClD,KAAK,CAAC;MAEhD,OAAAmD,YAAA,CAAAvF,QAAA,EAAAwF,WAAA;QAAA,OAEU3C,OAAO;QAAA,MACRrB,EAAE,CAACc,KAAK;QAAA,SACN,CACL,QAAQ,EACRF,KAAK,CAACqD,KAAK,CACZ;QAAA,SACOrD,KAAK,CAACsD;MAAK,GACdL,YAAY;QAAA,cACP3C,QAAQ,CAACJ,KAAK;QAAA,uBAAAqD,MAAA,IAAdjD,QAAQ,CAACJ,KAAK,GAAAqD,MAAA;QAAA;QAAA,kBAEPP,cAAc,CAAC9C,KAAK;QAAA,mBACnBgC,cAAc;QAAA,aACpBC;MAAS,GAChB5B,OAAO;QAGViD,SAAS,EAAEnD,KAAK,CAACmD,SAAS;QAC1BC,OAAO,EAAE,SAAAA,CAAA;UAAA,SAAAC,IAAA,GAAAC,SAAA,CAAAC,MAAA,EAAIC,IAAI,OAAAC,KAAA,CAAAJ,IAAA,GAAAK,IAAA,MAAAA,IAAA,GAAAL,IAAA,EAAAK,IAAA;YAAJF,IAAI,CAAAE,IAAA,IAAAJ,SAAA,CAAAI,IAAA;UAAA;UAAA,OAAAZ,YAAA,CAAAxF,iBAAA;YAAA;UAAA;YAAA8F,OAAA,EAAAA,CAAA,MAEXpD,KAAK,CAACoD,OAAO,GAAG,GAAGI,IAAI,CAAC;UAAA;QAAA;MAE7B;IAIT,CAAC,CAAC;IAEF,OAAO/F,WAAW,CAAC;MAAEsB,EAAE;MAAE4E,aAAa,EAAErD;IAAa,CAAC,EAAEF,OAAO,CAAC;EAClE;AACF,CAAC,CAAC","ignoreList":[]}
@@ -100,9 +100,6 @@ export const VOverlay = genericComponent()({
100
100
  if (!(v && props.disabled)) model.value = v;
101
101
  }
102
102
  });
103
- const {
104
- teleportTarget
105
- } = useTeleport(computed(() => props.attach || props.contained));
106
103
  const {
107
104
  themeClasses
108
105
  } = provideTheme(props);
@@ -135,6 +132,10 @@ export const VOverlay = genericComponent()({
135
132
  isActive,
136
133
  isTop: localTop
137
134
  });
135
+ const potentialShadowDomRoot = computed(() => activatorEl?.value?.getRootNode());
136
+ const {
137
+ teleportTarget
138
+ } = useTeleport(computed(() => props.attach || props.contained || potentialShadowDomRoot.value instanceof ShadowRoot ? potentialShadowDomRoot.value : false));
138
139
  const {
139
140
  dimensionStyles
140
141
  } = useDimension(props);
@@ -1 +1 @@
1
- {"version":3,"file":"VOverlay.mjs","names":["makeLocationStrategyProps","useLocationStrategies","makeScrollStrategyProps","useScrollStrategies","makeActivatorProps","useActivator","useBackgroundColor","makeComponentProps","makeDimensionProps","useDimension","useHydration","makeLazyProps","useLazy","useRtl","useProxiedModel","useBackButton","useRouter","useScopeId","useStack","useTeleport","makeThemeProps","provideTheme","useToggleScope","makeTransitionProps","MaybeTransition","ClickOutside","computed","mergeProps","onBeforeUnmount","ref","Teleport","toRef","Transition","watch","animate","convertToUnit","genericComponent","getScrollParent","IN_BROWSER","propsFactory","standardEasing","useRender","Scrim","props","modelValue","color","rest","_createVNode","default","_mergeProps","backgroundColorClasses","value","backgroundColorStyles","makeVOverlayProps","absolute","Boolean","attach","String","Object","closeOnBack","type","contained","contentClass","contentProps","disabled","opacity","Number","noClickAnimation","persistent","scrim","zIndex","VOverlay","name","directives","inheritAttrs","_disableGlobalStack","emits","e","afterEnter","afterLeave","setup","_ref","slots","attrs","emit","model","isActive","get","set","v","teleportTarget","themeClasses","rtlClasses","isRtl","hasContent","onAfterLeave","_onAfterLeave","scrimColor","globalTop","localTop","stackStyles","activatorEl","activatorRef","target","targetEl","targetRef","activatorEvents","contentEvents","scrimEvents","isTop","dimensionStyles","isMounted","scopeId","root","scrimEl","contentEl","contentStyles","updateLocation","onClickOutside","animateClick","closeConditional","val","window","addEventListener","onKeydown","removeEventListener","immediate","key","contains","document","activeElement","focus","router","next","top","scrollParent","scrollingElement","scrollTop","transformOrigin","transform","duration","easing","onAfterEnter","_Fragment","activator","activatorProps","class","style","transition","_withDirectives","_vShow","_resolveDirective","handler","include"],"sources":["../../../src/components/VOverlay/VOverlay.tsx"],"sourcesContent":["// Styles\nimport './VOverlay.sass'\n\n// Composables\nimport { makeLocationStrategyProps, useLocationStrategies } from './locationStrategies'\nimport { makeScrollStrategyProps, useScrollStrategies } from './scrollStrategies'\nimport { makeActivatorProps, useActivator } from './useActivator'\nimport { useBackgroundColor } from '@/composables/color'\nimport { makeComponentProps } from '@/composables/component'\nimport { makeDimensionProps, useDimension } from '@/composables/dimensions'\nimport { useHydration } from '@/composables/hydration'\nimport { makeLazyProps, useLazy } from '@/composables/lazy'\nimport { useRtl } from '@/composables/locale'\nimport { useProxiedModel } from '@/composables/proxiedModel'\nimport { useBackButton, useRouter } from '@/composables/router'\nimport { useScopeId } from '@/composables/scopeId'\nimport { useStack } from '@/composables/stack'\nimport { useTeleport } from '@/composables/teleport'\nimport { makeThemeProps, provideTheme } from '@/composables/theme'\nimport { useToggleScope } from '@/composables/toggleScope'\nimport { makeTransitionProps, MaybeTransition } from '@/composables/transition'\n\n// Directives\nimport { ClickOutside } from '@/directives/click-outside'\n\n// Utilities\nimport {\n computed,\n mergeProps,\n onBeforeUnmount,\n ref,\n Teleport,\n toRef,\n Transition,\n watch,\n} from 'vue'\nimport {\n animate,\n convertToUnit,\n genericComponent,\n getScrollParent,\n IN_BROWSER,\n propsFactory,\n standardEasing,\n useRender,\n} from '@/util'\n\n// Types\nimport type { PropType, Ref } from 'vue'\nimport type { BackgroundColorData } from '@/composables/color'\nimport type { TemplateRef } from '@/util'\n\ninterface ScrimProps {\n [key: string]: unknown\n modelValue: boolean\n color: BackgroundColorData\n}\nfunction Scrim (props: ScrimProps) {\n const { modelValue, color, ...rest } = props\n return (\n <Transition name=\"fade-transition\" appear>\n { props.modelValue && (\n <div\n class={[\n 'v-overlay__scrim',\n props.color.backgroundColorClasses.value,\n ]}\n style={ props.color.backgroundColorStyles.value }\n { ...rest }\n />\n )}\n </Transition>\n )\n}\n\nexport type OverlaySlots = {\n default: { isActive: Ref<boolean> }\n activator: { isActive: boolean, props: Record<string, any>, targetRef: TemplateRef }\n}\n\nexport const makeVOverlayProps = propsFactory({\n absolute: Boolean,\n attach: [Boolean, String, Object] as PropType<boolean | string | Element>,\n closeOnBack: {\n type: Boolean,\n default: true,\n },\n contained: Boolean,\n contentClass: null,\n contentProps: null,\n disabled: Boolean,\n opacity: [Number, String],\n noClickAnimation: Boolean,\n modelValue: Boolean,\n persistent: Boolean,\n scrim: {\n type: [Boolean, String],\n default: true,\n },\n zIndex: {\n type: [Number, String],\n default: 2000,\n },\n\n ...makeActivatorProps(),\n ...makeComponentProps(),\n ...makeDimensionProps(),\n ...makeLazyProps(),\n ...makeLocationStrategyProps(),\n ...makeScrollStrategyProps(),\n ...makeThemeProps(),\n ...makeTransitionProps(),\n}, 'VOverlay')\n\nexport const VOverlay = genericComponent<OverlaySlots>()({\n name: 'VOverlay',\n\n directives: { ClickOutside },\n\n inheritAttrs: false,\n\n props: {\n _disableGlobalStack: Boolean,\n\n ...makeVOverlayProps(),\n },\n\n emits: {\n 'click:outside': (e: MouseEvent) => true,\n 'update:modelValue': (value: boolean) => true,\n afterEnter: () => true,\n afterLeave: () => true,\n },\n\n setup (props, { slots, attrs, emit }) {\n const model = useProxiedModel(props, 'modelValue')\n const isActive = computed({\n get: () => model.value,\n set: v => {\n if (!(v && props.disabled)) model.value = v\n },\n })\n const { teleportTarget } = useTeleport(computed(() => props.attach || props.contained))\n const { themeClasses } = provideTheme(props)\n const { rtlClasses, isRtl } = useRtl()\n const { hasContent, onAfterLeave: _onAfterLeave } = useLazy(props, isActive)\n const scrimColor = useBackgroundColor(computed(() => {\n return typeof props.scrim === 'string' ? props.scrim : null\n }))\n const { globalTop, localTop, stackStyles } = useStack(isActive, toRef(props, 'zIndex'), props._disableGlobalStack)\n const {\n activatorEl, activatorRef,\n target, targetEl, targetRef,\n activatorEvents,\n contentEvents,\n scrimEvents,\n } = useActivator(props, { isActive, isTop: localTop })\n const { dimensionStyles } = useDimension(props)\n const isMounted = useHydration()\n const { scopeId } = useScopeId()\n\n watch(() => props.disabled, v => {\n if (v) isActive.value = false\n })\n\n const root = ref<HTMLElement>()\n const scrimEl = ref<HTMLElement>()\n const contentEl = ref<HTMLElement>()\n const { contentStyles, updateLocation } = useLocationStrategies(props, {\n isRtl,\n contentEl,\n target,\n isActive,\n })\n useScrollStrategies(props, {\n root,\n contentEl,\n targetEl,\n isActive,\n updateLocation,\n })\n\n function onClickOutside (e: MouseEvent) {\n emit('click:outside', e)\n\n if (!props.persistent) isActive.value = false\n else animateClick()\n }\n\n function closeConditional (e: Event) {\n return isActive.value && globalTop.value && (\n // If using scrim, only close if clicking on it rather than anything opened on top\n !props.scrim || e.target === scrimEl.value\n )\n }\n\n IN_BROWSER && watch(isActive, val => {\n if (val) {\n window.addEventListener('keydown', onKeydown)\n } else {\n window.removeEventListener('keydown', onKeydown)\n }\n }, { immediate: true })\n\n onBeforeUnmount(() => {\n if (!IN_BROWSER) return\n\n window.removeEventListener('keydown', onKeydown)\n })\n\n function onKeydown (e: KeyboardEvent) {\n if (e.key === 'Escape' && globalTop.value) {\n if (!props.persistent) {\n isActive.value = false\n if (contentEl.value?.contains(document.activeElement)) {\n activatorEl.value?.focus()\n }\n } else animateClick()\n }\n }\n\n const router = useRouter()\n useToggleScope(() => props.closeOnBack, () => {\n useBackButton(router, next => {\n if (globalTop.value && isActive.value) {\n next(false)\n if (!props.persistent) isActive.value = false\n else animateClick()\n } else {\n next()\n }\n })\n })\n\n const top = ref<number>()\n watch(() => isActive.value && (props.absolute || props.contained) && teleportTarget.value == null, val => {\n if (val) {\n const scrollParent = getScrollParent(root.value)\n if (scrollParent && scrollParent !== document.scrollingElement) {\n top.value = scrollParent.scrollTop\n }\n }\n })\n\n // Add a quick \"bounce\" animation to the content\n function animateClick () {\n if (props.noClickAnimation) return\n\n contentEl.value && animate(contentEl.value, [\n { transformOrigin: 'center' },\n { transform: 'scale(1.03)' },\n { transformOrigin: 'center' },\n ], {\n duration: 150,\n easing: standardEasing,\n })\n }\n\n function onAfterEnter () {\n emit('afterEnter')\n }\n\n function onAfterLeave () {\n _onAfterLeave()\n emit('afterLeave')\n }\n\n useRender(() => (\n <>\n { slots.activator?.({\n isActive: isActive.value,\n targetRef,\n props: mergeProps({\n ref: activatorRef,\n }, activatorEvents.value, props.activatorProps),\n })}\n\n { isMounted.value && hasContent.value && (\n <Teleport\n disabled={ !teleportTarget.value }\n to={ teleportTarget.value }\n >\n <div\n class={[\n 'v-overlay',\n {\n 'v-overlay--absolute': props.absolute || props.contained,\n 'v-overlay--active': isActive.value,\n 'v-overlay--contained': props.contained,\n },\n themeClasses.value,\n rtlClasses.value,\n props.class,\n ]}\n style={[\n stackStyles.value,\n {\n '--v-overlay-opacity': props.opacity,\n top: convertToUnit(top.value),\n },\n props.style,\n ]}\n ref={ root }\n { ...scopeId }\n { ...attrs }\n >\n <Scrim\n color={ scrimColor }\n modelValue={ isActive.value && !!props.scrim }\n ref={ scrimEl }\n { ...scrimEvents.value }\n />\n <MaybeTransition\n appear\n persisted\n transition={ props.transition }\n target={ target.value }\n onAfterEnter={ onAfterEnter }\n onAfterLeave={ onAfterLeave }\n >\n <div\n ref={ contentEl }\n v-show={ isActive.value }\n v-click-outside={{ handler: onClickOutside, closeConditional, include: () => [activatorEl.value] }}\n class={[\n 'v-overlay__content',\n props.contentClass,\n ]}\n style={[\n dimensionStyles.value,\n contentStyles.value,\n ]}\n { ...contentEvents.value }\n { ...props.contentProps }\n >\n { slots.default?.({ isActive }) }\n </div>\n </MaybeTransition>\n </div>\n </Teleport>\n )}\n </>\n ))\n\n return {\n activatorEl,\n scrimEl,\n target,\n animateClick,\n contentEl,\n globalTop,\n localTop,\n updateLocation,\n }\n },\n})\n\nexport type VOverlay = InstanceType<typeof VOverlay>\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"VOverlay.mjs","names":["makeLocationStrategyProps","useLocationStrategies","makeScrollStrategyProps","useScrollStrategies","makeActivatorProps","useActivator","useBackgroundColor","makeComponentProps","makeDimensionProps","useDimension","useHydration","makeLazyProps","useLazy","useRtl","useProxiedModel","useBackButton","useRouter","useScopeId","useStack","useTeleport","makeThemeProps","provideTheme","useToggleScope","makeTransitionProps","MaybeTransition","ClickOutside","computed","mergeProps","onBeforeUnmount","ref","Teleport","toRef","Transition","watch","animate","convertToUnit","genericComponent","getScrollParent","IN_BROWSER","propsFactory","standardEasing","useRender","Scrim","props","modelValue","color","rest","_createVNode","default","_mergeProps","backgroundColorClasses","value","backgroundColorStyles","makeVOverlayProps","absolute","Boolean","attach","String","Object","closeOnBack","type","contained","contentClass","contentProps","disabled","opacity","Number","noClickAnimation","persistent","scrim","zIndex","VOverlay","name","directives","inheritAttrs","_disableGlobalStack","emits","e","afterEnter","afterLeave","setup","_ref","slots","attrs","emit","model","isActive","get","set","v","themeClasses","rtlClasses","isRtl","hasContent","onAfterLeave","_onAfterLeave","scrimColor","globalTop","localTop","stackStyles","activatorEl","activatorRef","target","targetEl","targetRef","activatorEvents","contentEvents","scrimEvents","isTop","potentialShadowDomRoot","getRootNode","teleportTarget","ShadowRoot","dimensionStyles","isMounted","scopeId","root","scrimEl","contentEl","contentStyles","updateLocation","onClickOutside","animateClick","closeConditional","val","window","addEventListener","onKeydown","removeEventListener","immediate","key","contains","document","activeElement","focus","router","next","top","scrollParent","scrollingElement","scrollTop","transformOrigin","transform","duration","easing","onAfterEnter","_Fragment","activator","activatorProps","class","style","transition","_withDirectives","_vShow","_resolveDirective","handler","include"],"sources":["../../../src/components/VOverlay/VOverlay.tsx"],"sourcesContent":["// Styles\nimport './VOverlay.sass'\n\n// Composables\nimport { makeLocationStrategyProps, useLocationStrategies } from './locationStrategies'\nimport { makeScrollStrategyProps, useScrollStrategies } from './scrollStrategies'\nimport { makeActivatorProps, useActivator } from './useActivator'\nimport { useBackgroundColor } from '@/composables/color'\nimport { makeComponentProps } from '@/composables/component'\nimport { makeDimensionProps, useDimension } from '@/composables/dimensions'\nimport { useHydration } from '@/composables/hydration'\nimport { makeLazyProps, useLazy } from '@/composables/lazy'\nimport { useRtl } from '@/composables/locale'\nimport { useProxiedModel } from '@/composables/proxiedModel'\nimport { useBackButton, useRouter } from '@/composables/router'\nimport { useScopeId } from '@/composables/scopeId'\nimport { useStack } from '@/composables/stack'\nimport { useTeleport } from '@/composables/teleport'\nimport { makeThemeProps, provideTheme } from '@/composables/theme'\nimport { useToggleScope } from '@/composables/toggleScope'\nimport { makeTransitionProps, MaybeTransition } from '@/composables/transition'\n\n// Directives\nimport { ClickOutside } from '@/directives/click-outside'\n\n// Utilities\nimport {\n computed,\n mergeProps,\n onBeforeUnmount,\n ref,\n Teleport,\n toRef,\n Transition,\n watch,\n} from 'vue'\nimport {\n animate,\n convertToUnit,\n genericComponent,\n getScrollParent,\n IN_BROWSER,\n propsFactory,\n standardEasing,\n useRender,\n} from '@/util'\n\n// Types\nimport type { PropType, Ref } from 'vue'\nimport type { BackgroundColorData } from '@/composables/color'\nimport type { TemplateRef } from '@/util'\n\ninterface ScrimProps {\n [key: string]: unknown\n modelValue: boolean\n color: BackgroundColorData\n}\nfunction Scrim (props: ScrimProps) {\n const { modelValue, color, ...rest } = props\n return (\n <Transition name=\"fade-transition\" appear>\n { props.modelValue && (\n <div\n class={[\n 'v-overlay__scrim',\n props.color.backgroundColorClasses.value,\n ]}\n style={ props.color.backgroundColorStyles.value }\n { ...rest }\n />\n )}\n </Transition>\n )\n}\n\nexport type OverlaySlots = {\n default: { isActive: Ref<boolean> }\n activator: { isActive: boolean, props: Record<string, any>, targetRef: TemplateRef }\n}\n\nexport const makeVOverlayProps = propsFactory({\n absolute: Boolean,\n attach: [Boolean, String, Object] as PropType<boolean | string | Element>,\n closeOnBack: {\n type: Boolean,\n default: true,\n },\n contained: Boolean,\n contentClass: null,\n contentProps: null,\n disabled: Boolean,\n opacity: [Number, String],\n noClickAnimation: Boolean,\n modelValue: Boolean,\n persistent: Boolean,\n scrim: {\n type: [Boolean, String],\n default: true,\n },\n zIndex: {\n type: [Number, String],\n default: 2000,\n },\n\n ...makeActivatorProps(),\n ...makeComponentProps(),\n ...makeDimensionProps(),\n ...makeLazyProps(),\n ...makeLocationStrategyProps(),\n ...makeScrollStrategyProps(),\n ...makeThemeProps(),\n ...makeTransitionProps(),\n}, 'VOverlay')\n\nexport const VOverlay = genericComponent<OverlaySlots>()({\n name: 'VOverlay',\n\n directives: { ClickOutside },\n\n inheritAttrs: false,\n\n props: {\n _disableGlobalStack: Boolean,\n\n ...makeVOverlayProps(),\n },\n\n emits: {\n 'click:outside': (e: MouseEvent) => true,\n 'update:modelValue': (value: boolean) => true,\n afterEnter: () => true,\n afterLeave: () => true,\n },\n\n setup (props, { slots, attrs, emit }) {\n const model = useProxiedModel(props, 'modelValue')\n const isActive = computed({\n get: () => model.value,\n set: v => {\n if (!(v && props.disabled)) model.value = v\n },\n })\n const { themeClasses } = provideTheme(props)\n const { rtlClasses, isRtl } = useRtl()\n const { hasContent, onAfterLeave: _onAfterLeave } = useLazy(props, isActive)\n const scrimColor = useBackgroundColor(computed(() => {\n return typeof props.scrim === 'string' ? props.scrim : null\n }))\n const { globalTop, localTop, stackStyles } = useStack(isActive, toRef(props, 'zIndex'), props._disableGlobalStack)\n const {\n activatorEl, activatorRef,\n target, targetEl, targetRef,\n activatorEvents,\n contentEvents,\n scrimEvents,\n } = useActivator(props, { isActive, isTop: localTop })\n const potentialShadowDomRoot = computed(() => (activatorEl?.value as Element)?.getRootNode() as Element)\n const { teleportTarget } = useTeleport(computed(() => props.attach || props.contained ||\n potentialShadowDomRoot.value instanceof ShadowRoot ? potentialShadowDomRoot.value : false))\n const { dimensionStyles } = useDimension(props)\n const isMounted = useHydration()\n const { scopeId } = useScopeId()\n\n watch(() => props.disabled, v => {\n if (v) isActive.value = false\n })\n\n const root = ref<HTMLElement>()\n const scrimEl = ref<HTMLElement>()\n const contentEl = ref<HTMLElement>()\n const { contentStyles, updateLocation } = useLocationStrategies(props, {\n isRtl,\n contentEl,\n target,\n isActive,\n })\n useScrollStrategies(props, {\n root,\n contentEl,\n targetEl,\n isActive,\n updateLocation,\n })\n\n function onClickOutside (e: MouseEvent) {\n emit('click:outside', e)\n\n if (!props.persistent) isActive.value = false\n else animateClick()\n }\n\n function closeConditional (e: Event) {\n return isActive.value && globalTop.value && (\n // If using scrim, only close if clicking on it rather than anything opened on top\n !props.scrim || e.target === scrimEl.value\n )\n }\n\n IN_BROWSER && watch(isActive, val => {\n if (val) {\n window.addEventListener('keydown', onKeydown)\n } else {\n window.removeEventListener('keydown', onKeydown)\n }\n }, { immediate: true })\n\n onBeforeUnmount(() => {\n if (!IN_BROWSER) return\n\n window.removeEventListener('keydown', onKeydown)\n })\n\n function onKeydown (e: KeyboardEvent) {\n if (e.key === 'Escape' && globalTop.value) {\n if (!props.persistent) {\n isActive.value = false\n if (contentEl.value?.contains(document.activeElement)) {\n activatorEl.value?.focus()\n }\n } else animateClick()\n }\n }\n\n const router = useRouter()\n useToggleScope(() => props.closeOnBack, () => {\n useBackButton(router, next => {\n if (globalTop.value && isActive.value) {\n next(false)\n if (!props.persistent) isActive.value = false\n else animateClick()\n } else {\n next()\n }\n })\n })\n\n const top = ref<number>()\n watch(() => isActive.value && (props.absolute || props.contained) && teleportTarget.value == null, val => {\n if (val) {\n const scrollParent = getScrollParent(root.value)\n if (scrollParent && scrollParent !== document.scrollingElement) {\n top.value = scrollParent.scrollTop\n }\n }\n })\n\n // Add a quick \"bounce\" animation to the content\n function animateClick () {\n if (props.noClickAnimation) return\n\n contentEl.value && animate(contentEl.value, [\n { transformOrigin: 'center' },\n { transform: 'scale(1.03)' },\n { transformOrigin: 'center' },\n ], {\n duration: 150,\n easing: standardEasing,\n })\n }\n\n function onAfterEnter () {\n emit('afterEnter')\n }\n\n function onAfterLeave () {\n _onAfterLeave()\n emit('afterLeave')\n }\n\n useRender(() => (\n <>\n { slots.activator?.({\n isActive: isActive.value,\n targetRef,\n props: mergeProps({\n ref: activatorRef,\n }, activatorEvents.value, props.activatorProps),\n })}\n\n { isMounted.value && hasContent.value && (\n <Teleport\n disabled={ !teleportTarget.value }\n to={ teleportTarget.value }\n >\n <div\n class={[\n 'v-overlay',\n {\n 'v-overlay--absolute': props.absolute || props.contained,\n 'v-overlay--active': isActive.value,\n 'v-overlay--contained': props.contained,\n },\n themeClasses.value,\n rtlClasses.value,\n props.class,\n ]}\n style={[\n stackStyles.value,\n {\n '--v-overlay-opacity': props.opacity,\n top: convertToUnit(top.value),\n },\n props.style,\n ]}\n ref={ root }\n { ...scopeId }\n { ...attrs }\n >\n <Scrim\n color={ scrimColor }\n modelValue={ isActive.value && !!props.scrim }\n ref={ scrimEl }\n { ...scrimEvents.value }\n />\n <MaybeTransition\n appear\n persisted\n transition={ props.transition }\n target={ target.value }\n onAfterEnter={ onAfterEnter }\n onAfterLeave={ onAfterLeave }\n >\n <div\n ref={ contentEl }\n v-show={ isActive.value }\n v-click-outside={{ handler: onClickOutside, closeConditional, include: () => [activatorEl.value] }}\n class={[\n 'v-overlay__content',\n props.contentClass,\n ]}\n style={[\n dimensionStyles.value,\n contentStyles.value,\n ]}\n { ...contentEvents.value }\n { ...props.contentProps }\n >\n { slots.default?.({ isActive }) }\n </div>\n </MaybeTransition>\n </div>\n </Teleport>\n )}\n </>\n ))\n\n return {\n activatorEl,\n scrimEl,\n target,\n animateClick,\n contentEl,\n globalTop,\n localTop,\n updateLocation,\n }\n },\n})\n\nexport type VOverlay = InstanceType<typeof VOverlay>\n"],"mappings":"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","ignoreList":[]}