@vuetify/nightly 3.7.0-beta.1-dev.2024-07-29 → 3.7.0-beta.1-dev.2024-07-30
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.
- package/dist/json/attributes.json +8 -0
- package/dist/json/importMap-labs.json +28 -28
- package/dist/json/importMap.json +118 -118
- package/dist/json/tags.json +2 -0
- package/dist/json/web-types.json +21 -2
- package/dist/vuetify-labs.css +3545 -3545
- package/dist/vuetify-labs.d.ts +190 -106
- package/dist/vuetify-labs.esm.js +30 -13
- package/dist/vuetify-labs.esm.js.map +1 -1
- package/dist/vuetify-labs.js +30 -13
- package/dist/vuetify-labs.min.css +2 -2
- package/dist/vuetify.css +2151 -2151
- package/dist/vuetify.d.ts +231 -147
- package/dist/vuetify.esm.js +30 -13
- package/dist/vuetify.esm.js.map +1 -1
- package/dist/vuetify.js +30 -13
- package/dist/vuetify.js.map +1 -1
- package/dist/vuetify.min.css +2 -2
- package/dist/vuetify.min.js +43 -43
- package/dist/vuetify.min.js.map +1 -1
- package/lib/components/VAutocomplete/index.d.mts +42 -24
- package/lib/components/VCombobox/index.d.mts +42 -24
- package/lib/components/VDialog/index.d.mts +3 -3
- package/lib/components/VList/VListItem.mjs +1 -1
- package/lib/components/VList/VListItem.mjs.map +1 -1
- package/lib/components/VMenu/VMenu.mjs +19 -3
- package/lib/components/VMenu/VMenu.mjs.map +1 -1
- package/lib/components/VMenu/index.d.mts +27 -12
- package/lib/components/VOverlay/VOverlay.mjs +5 -4
- package/lib/components/VOverlay/VOverlay.mjs.map +1 -1
- package/lib/components/VOverlay/useActivator.mjs +3 -2
- package/lib/components/VOverlay/useActivator.mjs.map +1 -1
- package/lib/components/VSelect/index.d.mts +42 -24
- package/lib/components/VSnackbar/index.d.mts +3 -3
- package/lib/components/VSpeedDial/index.d.mts +28 -13
- package/lib/components/VTooltip/index.d.mts +3 -3
- package/lib/components/index.d.mts +190 -106
- package/lib/entry-bundler.mjs +1 -1
- package/lib/framework.mjs +1 -1
- package/lib/index.d.mts +41 -41
- package/lib/labs/VSnackbarQueue/index.d.mts +3 -3
- package/lib/labs/components.d.mts +3 -3
- package/package.json +1 -1
@@ -628,7 +628,7 @@ declare const VDialog: {
|
|
628
628
|
onAfterLeave?: (() => any) | undefined;
|
629
629
|
"onUpdate:modelValue"?: ((value: boolean) => any) | undefined;
|
630
630
|
"onClick:outside"?: ((e: MouseEvent) => any) | undefined;
|
631
|
-
}, "target" | "
|
631
|
+
}, "target" | "contentEl" | "activatorEl" | "scrimEl" | "animateClick" | "globalTop" | "localTop" | "updateLocation"> & vue.ShallowUnwrapRef<{
|
632
632
|
activatorEl: vue.Ref<HTMLElement | undefined>;
|
633
633
|
scrimEl: vue.Ref<HTMLElement | undefined>;
|
634
634
|
target: vue.ComputedRef<HTMLElement | [x: number, y: number] | undefined>;
|
@@ -1312,7 +1312,7 @@ declare const VDialog: {
|
|
1312
1312
|
onAfterLeave?: (() => any) | undefined;
|
1313
1313
|
"onUpdate:modelValue"?: ((value: boolean) => any) | undefined;
|
1314
1314
|
"onClick:outside"?: ((e: MouseEvent) => any) | undefined;
|
1315
|
-
}, "target" | "
|
1315
|
+
}, "target" | "contentEl" | "activatorEl" | "scrimEl" | "animateClick" | "globalTop" | "localTop" | "updateLocation"> & vue.ShallowUnwrapRef<{
|
1316
1316
|
activatorEl: vue.Ref<HTMLElement | undefined>;
|
1317
1317
|
scrimEl: vue.Ref<HTMLElement | undefined>;
|
1318
1318
|
target: vue.ComputedRef<HTMLElement | [x: number, y: number] | undefined>;
|
@@ -1893,7 +1893,7 @@ declare const VDialog: {
|
|
1893
1893
|
onAfterLeave?: (() => any) | undefined;
|
1894
1894
|
"onUpdate:modelValue"?: ((value: boolean) => any) | undefined;
|
1895
1895
|
"onClick:outside"?: ((e: MouseEvent) => any) | undefined;
|
1896
|
-
}, "target" | "
|
1896
|
+
}, "target" | "contentEl" | "activatorEl" | "scrimEl" | "animateClick" | "globalTop" | "localTop" | "updateLocation"> & vue.ShallowUnwrapRef<{
|
1897
1897
|
activatorEl: vue.Ref<HTMLElement | undefined>;
|
1898
1898
|
scrimEl: vue.Ref<HTMLElement | undefined>;
|
1899
1899
|
target: vue.ComputedRef<HTMLElement | [x: number, y: number] | undefined>;
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"VListItem.mjs","names":["VListItemSubtitle","VListItemTitle","VAvatar","VDefaultsProvider","VIcon","useList","makeBorderProps","useBorder","makeComponentProps","makeDensityProps","useDensity","makeDimensionProps","useDimension","makeElevationProps","useElevation","IconValue","useNestedItem","makeRoundedProps","useRounded","makeRouterProps","useLink","makeTagProps","makeThemeProps","provideTheme","genOverlays","makeVariantProps","useVariant","Ripple","computed","watch","deprecate","EventProp","genericComponent","propsFactory","useRender","makeVListItemProps","active","type","Boolean","default","undefined","activeClass","String","activeColor","appendAvatar","appendIcon","baseColor","disabled","lines","link","nav","prependAvatar","prependIcon","ripple","Object","slim","subtitle","Number","title","value","onClick","onClickOnce","variant","VListItem","name","directives","props","emits","click","e","setup","_ref","attrs","slots","emit","id","href","activate","isActivated","select","isOpen","isSelected","isIndeterminate","isGroupActivator","root","parent","openOnSelect","list","isActive","activatable","isLink","isClickable","selectable","roundedProps","rounded","color","variantProps","val","open","immediate","themeClasses","borderClasses","colorClasses","colorStyles","variantClasses","densityClasses","dimensionStyles","elevationClasses","roundedClasses","lineClasses","slotProps","navigate","onKeyDown","key","preventDefault","Tag","tag","hasTitle","hasSubtitle","hasAppendMedia","hasAppend","append","hasPrependMedia","hasPrepend","prepend","updateHasPrepend","_withDirectives","_createVNode","class","style","_Fragment","density","image","icon","VListItemAction","start","end","_resolveDirective"],"sources":["../../../src/components/VList/VListItem.tsx"],"sourcesContent":["// Styles\nimport './VListItem.sass'\n\n// Components\nimport { VListItemSubtitle } from './VListItemSubtitle'\nimport { VListItemTitle } from './VListItemTitle'\nimport { VAvatar } from '@/components/VAvatar'\nimport { VDefaultsProvider } from '@/components/VDefaultsProvider'\nimport { VIcon } from '@/components/VIcon'\n\n// Composables\nimport { useList } from './list'\nimport { makeBorderProps, useBorder } from '@/composables/border'\nimport { makeComponentProps } from '@/composables/component'\nimport { makeDensityProps, useDensity } from '@/composables/density'\nimport { makeDimensionProps, useDimension } from '@/composables/dimensions'\nimport { makeElevationProps, useElevation } from '@/composables/elevation'\nimport { IconValue } from '@/composables/icons'\nimport { useNestedItem } from '@/composables/nested/nested'\nimport { makeRoundedProps, useRounded } from '@/composables/rounded'\nimport { makeRouterProps, useLink } from '@/composables/router'\nimport { makeTagProps } from '@/composables/tag'\nimport { makeThemeProps, provideTheme } from '@/composables/theme'\nimport { genOverlays, makeVariantProps, useVariant } from '@/composables/variant'\n\n// Directives\nimport { Ripple } from '@/directives/ripple'\n\n// Utilities\nimport { computed, watch } from 'vue'\nimport { deprecate, EventProp, genericComponent, propsFactory, useRender } from '@/util'\n\n// Types\nimport type { PropType } from 'vue'\nimport type { RippleDirectiveBinding } from '@/directives/ripple'\n\nexport type ListItemSlot = {\n isActive: boolean\n isOpen: boolean\n isSelected: boolean\n isIndeterminate: boolean\n select: (value: boolean) => void\n}\n\nexport type ListItemTitleSlot = {\n title?: string | number\n}\n\nexport type ListItemSubtitleSlot = {\n subtitle?: string | number\n}\n\nexport type VListItemSlots = {\n prepend: ListItemSlot\n append: ListItemSlot\n default: ListItemSlot\n title: ListItemTitleSlot\n subtitle: ListItemSubtitleSlot\n}\n\nexport const makeVListItemProps = propsFactory({\n active: {\n type: Boolean,\n default: undefined,\n },\n activeClass: String,\n /* @deprecated */\n activeColor: String,\n appendAvatar: String,\n appendIcon: IconValue,\n baseColor: String,\n disabled: Boolean,\n lines: [Boolean, String] as PropType<'one' | 'two' | 'three' | false>,\n link: {\n type: Boolean,\n default: undefined,\n },\n nav: Boolean,\n prependAvatar: String,\n prependIcon: IconValue,\n ripple: {\n type: [Boolean, Object] as PropType<RippleDirectiveBinding['value']>,\n default: true,\n },\n slim: Boolean,\n subtitle: [String, Number],\n title: [String, Number],\n value: null,\n\n onClick: EventProp<[MouseEvent | KeyboardEvent]>(),\n onClickOnce: EventProp<[MouseEvent]>(),\n\n ...makeBorderProps(),\n ...makeComponentProps(),\n ...makeDensityProps(),\n ...makeDimensionProps(),\n ...makeElevationProps(),\n ...makeRoundedProps(),\n ...makeRouterProps(),\n ...makeTagProps(),\n ...makeThemeProps(),\n ...makeVariantProps({ variant: 'text' } as const),\n}, 'VListItem')\n\nexport const VListItem = genericComponent<VListItemSlots>()({\n name: 'VListItem',\n\n directives: { Ripple },\n\n props: makeVListItemProps(),\n\n emits: {\n click: (e: MouseEvent | KeyboardEvent) => true,\n },\n\n setup (props, { attrs, slots, emit }) {\n const link = useLink(props, attrs)\n const id = computed(() => props.value === undefined ? link.href.value : props.value)\n const {\n activate,\n isActivated,\n select,\n isOpen,\n isSelected,\n isIndeterminate,\n isGroupActivator,\n root,\n parent,\n openOnSelect,\n } = useNestedItem(id, false)\n const list = useList()\n const isActive = computed(() =>\n props.active !== false &&\n (props.active || link.isActive?.value || (root.activatable.value ? isActivated.value : isSelected.value))\n )\n const isLink = computed(() => props.link !== false && link.isLink.value)\n const isClickable = computed(() =>\n !props.disabled &&\n props.link !== false &&\n (props.link || link.isClickable.value || (!!list && (root.selectable.value || root.activatable.value || props.value != null)))\n )\n\n const roundedProps = computed(() => props.rounded || props.nav)\n const color = computed(() => props.color ?? props.activeColor)\n const variantProps = computed(() => ({\n color: isActive.value ? color.value ?? props.baseColor : props.baseColor,\n variant: props.variant,\n }))\n\n watch(() => link.isActive?.value, val => {\n if (val && parent.value != null) {\n root.open(parent.value, true)\n }\n\n if (val) {\n openOnSelect(val)\n }\n }, { immediate: true })\n\n const { themeClasses } = provideTheme(props)\n const { borderClasses } = useBorder(props)\n const { colorClasses, colorStyles, variantClasses } = useVariant(variantProps)\n const { densityClasses } = useDensity(props)\n const { dimensionStyles } = useDimension(props)\n const { elevationClasses } = useElevation(props)\n const { roundedClasses } = useRounded(roundedProps)\n const lineClasses = computed(() => props.lines ? `v-list-item--${props.lines}-line` : undefined)\n\n const slotProps = computed(() => ({\n isActive: isActive.value,\n select,\n isOpen: isOpen.value,\n isSelected: isSelected.value,\n isIndeterminate: isIndeterminate.value,\n } satisfies ListItemSlot))\n\n function onClick (e: MouseEvent) {\n emit('click', e)\n\n if (!isClickable.value) return\n\n link.navigate?.(e)\n\n if (isGroupActivator) return\n\n if (root.activatable.value) {\n activate(!isActivated.value, e)\n } else if (root.selectable.value) {\n select(!isSelected.value, e)\n } else if (props.value != null) {\n select(!isSelected.value, e)\n }\n }\n\n function onKeyDown (e: KeyboardEvent) {\n if (e.key === 'Enter' || e.key === ' ') {\n e.preventDefault()\n onClick(e as any as MouseEvent)\n }\n }\n\n useRender(() => {\n const Tag = isLink.value ? 'a' : props.tag\n const hasTitle = (slots.title || props.title != null)\n const hasSubtitle = (slots.subtitle || props.subtitle != null)\n const hasAppendMedia = !!(props.appendAvatar || props.appendIcon)\n const hasAppend = !!(hasAppendMedia || slots.append)\n const hasPrependMedia = !!(props.prependAvatar || props.prependIcon)\n const hasPrepend = !!(hasPrependMedia || slots.prepend)\n\n list?.updateHasPrepend(hasPrepend)\n\n if (props.activeColor) {\n deprecate('active-color', ['color', 'base-color'])\n }\n\n return (\n <Tag\n class={[\n 'v-list-item',\n {\n 'v-list-item--active': isActive.value,\n 'v-list-item--disabled': props.disabled,\n 'v-list-item--link': isClickable.value,\n 'v-list-item--nav': props.nav,\n 'v-list-item--prepend': !hasPrepend && list?.hasPrepend.value,\n 'v-list-item--slim': props.slim,\n [`${props.activeClass}`]: props.activeClass && isActive.value,\n },\n themeClasses.value,\n borderClasses.value,\n colorClasses.value,\n densityClasses.value,\n elevationClasses.value,\n lineClasses.value,\n roundedClasses.value,\n variantClasses.value,\n props.class,\n ]}\n style={[\n colorStyles.value,\n dimensionStyles.value,\n props.style,\n ]}\n href={ link.href.value }\n tabindex={ isClickable.value ? (list ? -2 : 0) : undefined }\n onClick={ onClick }\n onKeydown={ isClickable.value && !isLink.value && onKeyDown }\n v-ripple={ isClickable.value && props.ripple }\n >\n { genOverlays(isClickable.value || isActive.value, 'v-list-item') }\n\n { hasPrepend && (\n <div key=\"prepend\" class=\"v-list-item__prepend\">\n { !slots.prepend ? (\n <>\n { props.prependAvatar && (\n <VAvatar\n key=\"prepend-avatar\"\n density={ props.density }\n image={ props.prependAvatar }\n />\n )}\n\n { props.prependIcon && (\n <VIcon\n key=\"prepend-icon\"\n density={ props.density }\n icon={ props.prependIcon }\n />\n )}\n </>\n ) : (\n <VDefaultsProvider\n key=\"prepend-defaults\"\n disabled={ !hasPrependMedia }\n defaults={{\n VAvatar: {\n density: props.density,\n image: props.prependAvatar,\n },\n VIcon: {\n density: props.density,\n icon: props.prependIcon,\n },\n VListItemAction: {\n start: true,\n },\n }}\n >\n { slots.prepend?.(slotProps.value) }\n </VDefaultsProvider>\n )}\n\n <div class=\"v-list-item__spacer\" />\n </div>\n )}\n\n <div class=\"v-list-item__content\" data-no-activator=\"\">\n { hasTitle && (\n <VListItemTitle key=\"title\">\n { slots.title?.({ title: props.title }) ?? props.title }\n </VListItemTitle>\n )}\n\n { hasSubtitle && (\n <VListItemSubtitle key=\"subtitle\">\n { slots.subtitle?.({ subtitle: props.subtitle }) ?? props.subtitle }\n </VListItemSubtitle>\n )}\n\n { slots.default?.(slotProps.value) }\n </div>\n\n { hasAppend && (\n <div key=\"append\" class=\"v-list-item__append\">\n { !slots.append ? (\n <>\n { props.appendIcon && (\n <VIcon\n key=\"append-icon\"\n density={ props.density }\n icon={ props.appendIcon }\n />\n )}\n\n { props.appendAvatar && (\n <VAvatar\n key=\"append-avatar\"\n density={ props.density }\n image={ props.appendAvatar }\n />\n )}\n </>\n ) : (\n <VDefaultsProvider\n key=\"append-defaults\"\n disabled={ !hasAppendMedia }\n defaults={{\n VAvatar: {\n density: props.density,\n image: props.appendAvatar,\n },\n VIcon: {\n density: props.density,\n icon: props.appendIcon,\n },\n VListItemAction: {\n end: true,\n },\n }}\n >\n { slots.append?.(slotProps.value) }\n </VDefaultsProvider>\n )}\n\n <div class=\"v-list-item__spacer\" />\n </div>\n )}\n </Tag>\n )\n })\n\n return {\n activate,\n isActivated,\n isGroupActivator,\n isSelected,\n list,\n select,\n }\n },\n})\n\nexport type VListItem = InstanceType<typeof VListItem>\n"],"mappings":"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","ignoreList":[]}
|
1
|
+
{"version":3,"file":"VListItem.mjs","names":["VListItemSubtitle","VListItemTitle","VAvatar","VDefaultsProvider","VIcon","useList","makeBorderProps","useBorder","makeComponentProps","makeDensityProps","useDensity","makeDimensionProps","useDimension","makeElevationProps","useElevation","IconValue","useNestedItem","makeRoundedProps","useRounded","makeRouterProps","useLink","makeTagProps","makeThemeProps","provideTheme","genOverlays","makeVariantProps","useVariant","Ripple","computed","watch","deprecate","EventProp","genericComponent","propsFactory","useRender","makeVListItemProps","active","type","Boolean","default","undefined","activeClass","String","activeColor","appendAvatar","appendIcon","baseColor","disabled","lines","link","nav","prependAvatar","prependIcon","ripple","Object","slim","subtitle","Number","title","value","onClick","onClickOnce","variant","VListItem","name","directives","props","emits","click","e","setup","_ref","attrs","slots","emit","id","href","activate","isActivated","select","isOpen","isSelected","isIndeterminate","isGroupActivator","root","parent","openOnSelect","list","isActive","activatable","isLink","isClickable","selectable","roundedProps","rounded","color","variantProps","val","open","immediate","themeClasses","borderClasses","colorClasses","colorStyles","variantClasses","densityClasses","dimensionStyles","elevationClasses","roundedClasses","lineClasses","slotProps","navigate","onKeyDown","key","preventDefault","target","dispatchEvent","MouseEvent","Tag","tag","hasTitle","hasSubtitle","hasAppendMedia","hasAppend","append","hasPrependMedia","hasPrepend","prepend","updateHasPrepend","_withDirectives","_createVNode","class","style","_Fragment","density","image","icon","VListItemAction","start","end","_resolveDirective"],"sources":["../../../src/components/VList/VListItem.tsx"],"sourcesContent":["// Styles\nimport './VListItem.sass'\n\n// Components\nimport { VListItemSubtitle } from './VListItemSubtitle'\nimport { VListItemTitle } from './VListItemTitle'\nimport { VAvatar } from '@/components/VAvatar'\nimport { VDefaultsProvider } from '@/components/VDefaultsProvider'\nimport { VIcon } from '@/components/VIcon'\n\n// Composables\nimport { useList } from './list'\nimport { makeBorderProps, useBorder } from '@/composables/border'\nimport { makeComponentProps } from '@/composables/component'\nimport { makeDensityProps, useDensity } from '@/composables/density'\nimport { makeDimensionProps, useDimension } from '@/composables/dimensions'\nimport { makeElevationProps, useElevation } from '@/composables/elevation'\nimport { IconValue } from '@/composables/icons'\nimport { useNestedItem } from '@/composables/nested/nested'\nimport { makeRoundedProps, useRounded } from '@/composables/rounded'\nimport { makeRouterProps, useLink } from '@/composables/router'\nimport { makeTagProps } from '@/composables/tag'\nimport { makeThemeProps, provideTheme } from '@/composables/theme'\nimport { genOverlays, makeVariantProps, useVariant } from '@/composables/variant'\n\n// Directives\nimport { Ripple } from '@/directives/ripple'\n\n// Utilities\nimport { computed, watch } from 'vue'\nimport { deprecate, EventProp, genericComponent, propsFactory, useRender } from '@/util'\n\n// Types\nimport type { PropType } from 'vue'\nimport type { RippleDirectiveBinding } from '@/directives/ripple'\n\nexport type ListItemSlot = {\n isActive: boolean\n isOpen: boolean\n isSelected: boolean\n isIndeterminate: boolean\n select: (value: boolean) => void\n}\n\nexport type ListItemTitleSlot = {\n title?: string | number\n}\n\nexport type ListItemSubtitleSlot = {\n subtitle?: string | number\n}\n\nexport type VListItemSlots = {\n prepend: ListItemSlot\n append: ListItemSlot\n default: ListItemSlot\n title: ListItemTitleSlot\n subtitle: ListItemSubtitleSlot\n}\n\nexport const makeVListItemProps = propsFactory({\n active: {\n type: Boolean,\n default: undefined,\n },\n activeClass: String,\n /* @deprecated */\n activeColor: String,\n appendAvatar: String,\n appendIcon: IconValue,\n baseColor: String,\n disabled: Boolean,\n lines: [Boolean, String] as PropType<'one' | 'two' | 'three' | false>,\n link: {\n type: Boolean,\n default: undefined,\n },\n nav: Boolean,\n prependAvatar: String,\n prependIcon: IconValue,\n ripple: {\n type: [Boolean, Object] as PropType<RippleDirectiveBinding['value']>,\n default: true,\n },\n slim: Boolean,\n subtitle: [String, Number],\n title: [String, Number],\n value: null,\n\n onClick: EventProp<[MouseEvent | KeyboardEvent]>(),\n onClickOnce: EventProp<[MouseEvent]>(),\n\n ...makeBorderProps(),\n ...makeComponentProps(),\n ...makeDensityProps(),\n ...makeDimensionProps(),\n ...makeElevationProps(),\n ...makeRoundedProps(),\n ...makeRouterProps(),\n ...makeTagProps(),\n ...makeThemeProps(),\n ...makeVariantProps({ variant: 'text' } as const),\n}, 'VListItem')\n\nexport const VListItem = genericComponent<VListItemSlots>()({\n name: 'VListItem',\n\n directives: { Ripple },\n\n props: makeVListItemProps(),\n\n emits: {\n click: (e: MouseEvent | KeyboardEvent) => true,\n },\n\n setup (props, { attrs, slots, emit }) {\n const link = useLink(props, attrs)\n const id = computed(() => props.value === undefined ? link.href.value : props.value)\n const {\n activate,\n isActivated,\n select,\n isOpen,\n isSelected,\n isIndeterminate,\n isGroupActivator,\n root,\n parent,\n openOnSelect,\n } = useNestedItem(id, false)\n const list = useList()\n const isActive = computed(() =>\n props.active !== false &&\n (props.active || link.isActive?.value || (root.activatable.value ? isActivated.value : isSelected.value))\n )\n const isLink = computed(() => props.link !== false && link.isLink.value)\n const isClickable = computed(() =>\n !props.disabled &&\n props.link !== false &&\n (props.link || link.isClickable.value || (!!list && (root.selectable.value || root.activatable.value || props.value != null)))\n )\n\n const roundedProps = computed(() => props.rounded || props.nav)\n const color = computed(() => props.color ?? props.activeColor)\n const variantProps = computed(() => ({\n color: isActive.value ? color.value ?? props.baseColor : props.baseColor,\n variant: props.variant,\n }))\n\n watch(() => link.isActive?.value, val => {\n if (val && parent.value != null) {\n root.open(parent.value, true)\n }\n\n if (val) {\n openOnSelect(val)\n }\n }, { immediate: true })\n\n const { themeClasses } = provideTheme(props)\n const { borderClasses } = useBorder(props)\n const { colorClasses, colorStyles, variantClasses } = useVariant(variantProps)\n const { densityClasses } = useDensity(props)\n const { dimensionStyles } = useDimension(props)\n const { elevationClasses } = useElevation(props)\n const { roundedClasses } = useRounded(roundedProps)\n const lineClasses = computed(() => props.lines ? `v-list-item--${props.lines}-line` : undefined)\n\n const slotProps = computed(() => ({\n isActive: isActive.value,\n select,\n isOpen: isOpen.value,\n isSelected: isSelected.value,\n isIndeterminate: isIndeterminate.value,\n } satisfies ListItemSlot))\n\n function onClick (e: MouseEvent) {\n emit('click', e)\n\n if (!isClickable.value) return\n\n link.navigate?.(e)\n\n if (isGroupActivator) return\n\n if (root.activatable.value) {\n activate(!isActivated.value, e)\n } else if (root.selectable.value) {\n select(!isSelected.value, e)\n } else if (props.value != null) {\n select(!isSelected.value, e)\n }\n }\n\n function onKeyDown (e: KeyboardEvent) {\n if (e.key === 'Enter' || e.key === ' ') {\n e.preventDefault()\n e.target!.dispatchEvent(new MouseEvent('click', e))\n }\n }\n\n useRender(() => {\n const Tag = isLink.value ? 'a' : props.tag\n const hasTitle = (slots.title || props.title != null)\n const hasSubtitle = (slots.subtitle || props.subtitle != null)\n const hasAppendMedia = !!(props.appendAvatar || props.appendIcon)\n const hasAppend = !!(hasAppendMedia || slots.append)\n const hasPrependMedia = !!(props.prependAvatar || props.prependIcon)\n const hasPrepend = !!(hasPrependMedia || slots.prepend)\n\n list?.updateHasPrepend(hasPrepend)\n\n if (props.activeColor) {\n deprecate('active-color', ['color', 'base-color'])\n }\n\n return (\n <Tag\n class={[\n 'v-list-item',\n {\n 'v-list-item--active': isActive.value,\n 'v-list-item--disabled': props.disabled,\n 'v-list-item--link': isClickable.value,\n 'v-list-item--nav': props.nav,\n 'v-list-item--prepend': !hasPrepend && list?.hasPrepend.value,\n 'v-list-item--slim': props.slim,\n [`${props.activeClass}`]: props.activeClass && isActive.value,\n },\n themeClasses.value,\n borderClasses.value,\n colorClasses.value,\n densityClasses.value,\n elevationClasses.value,\n lineClasses.value,\n roundedClasses.value,\n variantClasses.value,\n props.class,\n ]}\n style={[\n colorStyles.value,\n dimensionStyles.value,\n props.style,\n ]}\n href={ link.href.value }\n tabindex={ isClickable.value ? (list ? -2 : 0) : undefined }\n onClick={ onClick }\n onKeydown={ isClickable.value && !isLink.value && onKeyDown }\n v-ripple={ isClickable.value && props.ripple }\n >\n { genOverlays(isClickable.value || isActive.value, 'v-list-item') }\n\n { hasPrepend && (\n <div key=\"prepend\" class=\"v-list-item__prepend\">\n { !slots.prepend ? (\n <>\n { props.prependAvatar && (\n <VAvatar\n key=\"prepend-avatar\"\n density={ props.density }\n image={ props.prependAvatar }\n />\n )}\n\n { props.prependIcon && (\n <VIcon\n key=\"prepend-icon\"\n density={ props.density }\n icon={ props.prependIcon }\n />\n )}\n </>\n ) : (\n <VDefaultsProvider\n key=\"prepend-defaults\"\n disabled={ !hasPrependMedia }\n defaults={{\n VAvatar: {\n density: props.density,\n image: props.prependAvatar,\n },\n VIcon: {\n density: props.density,\n icon: props.prependIcon,\n },\n VListItemAction: {\n start: true,\n },\n }}\n >\n { slots.prepend?.(slotProps.value) }\n </VDefaultsProvider>\n )}\n\n <div class=\"v-list-item__spacer\" />\n </div>\n )}\n\n <div class=\"v-list-item__content\" data-no-activator=\"\">\n { hasTitle && (\n <VListItemTitle key=\"title\">\n { slots.title?.({ title: props.title }) ?? props.title }\n </VListItemTitle>\n )}\n\n { hasSubtitle && (\n <VListItemSubtitle key=\"subtitle\">\n { slots.subtitle?.({ subtitle: props.subtitle }) ?? props.subtitle }\n </VListItemSubtitle>\n )}\n\n { slots.default?.(slotProps.value) }\n </div>\n\n { hasAppend && (\n <div key=\"append\" class=\"v-list-item__append\">\n { !slots.append ? (\n <>\n { props.appendIcon && (\n <VIcon\n key=\"append-icon\"\n density={ props.density }\n icon={ props.appendIcon }\n />\n )}\n\n { props.appendAvatar && (\n <VAvatar\n key=\"append-avatar\"\n density={ props.density }\n image={ props.appendAvatar }\n />\n )}\n </>\n ) : (\n <VDefaultsProvider\n key=\"append-defaults\"\n disabled={ !hasAppendMedia }\n defaults={{\n VAvatar: {\n density: props.density,\n image: props.appendAvatar,\n },\n VIcon: {\n density: props.density,\n icon: props.appendIcon,\n },\n VListItemAction: {\n end: true,\n },\n }}\n >\n { slots.append?.(slotProps.value) }\n </VDefaultsProvider>\n )}\n\n <div class=\"v-list-item__spacer\" />\n </div>\n )}\n </Tag>\n )\n })\n\n return {\n activate,\n isActivated,\n isGroupActivator,\n isSelected,\n list,\n select,\n }\n },\n})\n\nexport type VListItem = InstanceType<typeof VListItem>\n"],"mappings":"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","ignoreList":[]}
|
@@ -8,6 +8,7 @@ import { VDefaultsProvider } from "../VDefaultsProvider/index.mjs";
|
|
8
8
|
import { VOverlay } from "../VOverlay/index.mjs";
|
9
9
|
import { makeVOverlayProps } from "../VOverlay/VOverlay.mjs"; // Composables
|
10
10
|
import { forwardRefs } from "../../composables/forwardRefs.mjs";
|
11
|
+
import { useRtl } from "../../composables/locale.mjs";
|
11
12
|
import { useProxiedModel } from "../../composables/proxiedModel.mjs";
|
12
13
|
import { useScopeId } from "../../composables/scopeId.mjs"; // Utilities
|
13
14
|
import { computed, inject, mergeProps, nextTick, onBeforeUnmount, onDeactivated, provide, ref, shallowRef, watch } from 'vue';
|
@@ -17,10 +18,12 @@ export const makeVMenuProps = propsFactory({
|
|
17
18
|
// TODO
|
18
19
|
// disableKeys: Boolean,
|
19
20
|
id: String,
|
21
|
+
submenu: Boolean,
|
20
22
|
...omit(makeVOverlayProps({
|
21
23
|
closeDelay: 250,
|
22
24
|
closeOnContentClick: true,
|
23
25
|
locationStrategy: 'connected',
|
26
|
+
location: undefined,
|
24
27
|
openDelay: 300,
|
25
28
|
scrim: false,
|
26
29
|
scrollStrategy: 'reposition',
|
@@ -43,6 +46,9 @@ export const VMenu = genericComponent()({
|
|
43
46
|
const {
|
44
47
|
scopeId
|
45
48
|
} = useScopeId();
|
49
|
+
const {
|
50
|
+
isRtl
|
51
|
+
} = useRtl();
|
46
52
|
const uid = getUid();
|
47
53
|
const id = computed(() => props.id || `v-menu-${uid}`);
|
48
54
|
const overlay = ref();
|
@@ -105,9 +111,9 @@ export const VMenu = genericComponent()({
|
|
105
111
|
isActive.value = false;
|
106
112
|
overlay.value?.activatorEl?.focus();
|
107
113
|
}
|
108
|
-
} else if (
|
114
|
+
} else if (props.submenu && e.key === (isRtl.value ? 'ArrowRight' : 'ArrowLeft')) {
|
109
115
|
isActive.value = false;
|
110
|
-
|
116
|
+
overlay.value?.activatorEl?.focus();
|
111
117
|
}
|
112
118
|
}
|
113
119
|
function onActivatorKeydown(e) {
|
@@ -116,12 +122,21 @@ export const VMenu = genericComponent()({
|
|
116
122
|
if (el && isActive.value) {
|
117
123
|
if (e.key === 'ArrowDown') {
|
118
124
|
e.preventDefault();
|
125
|
+
e.stopImmediatePropagation();
|
119
126
|
focusChild(el, 'next');
|
120
127
|
} else if (e.key === 'ArrowUp') {
|
121
128
|
e.preventDefault();
|
129
|
+
e.stopImmediatePropagation();
|
122
130
|
focusChild(el, 'prev');
|
131
|
+
} else if (props.submenu) {
|
132
|
+
if (e.key === (isRtl.value ? 'ArrowRight' : 'ArrowLeft')) {
|
133
|
+
isActive.value = false;
|
134
|
+
} else if (e.key === (isRtl.value ? 'ArrowLeft' : 'ArrowRight')) {
|
135
|
+
e.preventDefault();
|
136
|
+
focusChild(el, 'first');
|
137
|
+
}
|
123
138
|
}
|
124
|
-
} else if (['ArrowDown', 'ArrowUp'].includes(e.key)) {
|
139
|
+
} else if (props.submenu ? e.key === (isRtl.value ? 'ArrowLeft' : 'ArrowRight') : ['ArrowDown', 'ArrowUp'].includes(e.key)) {
|
125
140
|
isActive.value = true;
|
126
141
|
e.preventDefault();
|
127
142
|
setTimeout(() => setTimeout(() => onActivatorKeydown(e)));
|
@@ -145,6 +160,7 @@ export const VMenu = genericComponent()({
|
|
145
160
|
"onUpdate:modelValue": $event => isActive.value = $event,
|
146
161
|
"absolute": true,
|
147
162
|
"activatorProps": activatorProps.value,
|
163
|
+
"location": props.location ?? (props.submenu ? 'end' : 'bottom'),
|
148
164
|
"onClick:outside": onClickOutside,
|
149
165
|
"onKeydown": onKeydown
|
150
166
|
}, scopeId), {
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"VMenu.mjs","names":["VDialogTransition","VDefaultsProvider","VOverlay","makeVOverlayProps","forwardRefs","useProxiedModel","useScopeId","computed","inject","mergeProps","nextTick","onBeforeUnmount","onDeactivated","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","Set","register","add","unregister","delete","closeParents","e","setTimeout","size","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 {\n computed,\n inject,\n mergeProps,\n nextTick,\n onBeforeUnmount,\n onDeactivated,\n provide,\n ref,\n shallowRef,\n watch,\n} 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(new Set<number>())\n provide(VMenuSymbol, {\n register () {\n openChildren.value.add(uid)\n },\n unregister () {\n openChildren.value.delete(uid)\n },\n closeParents (e) {\n setTimeout(() => {\n if (!openChildren.value.size &&\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 onBeforeUnmount(() => parent?.unregister())\n onDeactivated(() => isActive.value = false)\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":[]}
|
1
|
+
{"version":3,"file":"VMenu.mjs","names":["VDialogTransition","VDefaultsProvider","VOverlay","makeVOverlayProps","forwardRefs","useRtl","useProxiedModel","useScopeId","computed","inject","mergeProps","nextTick","onBeforeUnmount","onDeactivated","provide","ref","shallowRef","watch","VMenuSymbol","focusableChildren","focusChild","genericComponent","getNextElement","getUid","isClickInsideElement","omit","propsFactory","useRender","makeVMenuProps","id","String","submenu","Boolean","closeDelay","closeOnContentClick","locationStrategy","location","undefined","openDelay","scrim","scrollStrategy","transition","component","VMenu","name","props","emits","value","setup","_ref","slots","isActive","scopeId","isRtl","uid","overlay","parent","openChildren","Set","register","add","unregister","delete","closeParents","e","setTimeout","size","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","stopImmediatePropagation","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 { useRtl } from '@/composables/locale'\nimport { useProxiedModel } from '@/composables/proxiedModel'\nimport { useScopeId } from '@/composables/scopeId'\n\n// Utilities\nimport {\n computed,\n inject,\n mergeProps,\n nextTick,\n onBeforeUnmount,\n onDeactivated,\n provide,\n ref,\n shallowRef,\n watch,\n} 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 submenu: Boolean,\n\n ...omit(makeVOverlayProps({\n closeDelay: 250,\n closeOnContentClick: true,\n locationStrategy: 'connected' as const,\n location: undefined,\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 const { isRtl } = useRtl()\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(new Set<number>())\n provide(VMenuSymbol, {\n register () {\n openChildren.value.add(uid)\n },\n unregister () {\n openChildren.value.delete(uid)\n },\n closeParents (e) {\n setTimeout(() => {\n if (!openChildren.value.size &&\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 onBeforeUnmount(() => parent?.unregister())\n onDeactivated(() => isActive.value = false)\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 (props.submenu && e.key === (isRtl.value ? 'ArrowRight' : 'ArrowLeft')) {\n isActive.value = false\n overlay.value?.activatorEl?.focus()\n }\n }\n\n function onActivatorKeydown (e: KeyboardEvent) {\n if (props.disabled) return\n\n const el = overlay.value?.contentEl\n if (el && isActive.value) {\n if (e.key === 'ArrowDown') {\n e.preventDefault()\n e.stopImmediatePropagation()\n focusChild(el, 'next')\n } else if (e.key === 'ArrowUp') {\n e.preventDefault()\n e.stopImmediatePropagation()\n focusChild(el, 'prev')\n } else if (props.submenu) {\n if (e.key === (isRtl.value ? 'ArrowRight' : 'ArrowLeft')) {\n isActive.value = false\n } else if (e.key === (isRtl.value ? 'ArrowLeft' : 'ArrowRight')) {\n e.preventDefault()\n focusChild(el, 'first')\n }\n }\n } else if (\n props.submenu\n ? e.key === (isRtl.value ? 'ArrowLeft' : 'ArrowRight')\n : ['ArrowDown', 'ArrowUp'].includes(e.key)\n ) {\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 location={ props.location ?? (props.submenu ? 'end' : 'bottom') }\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":[]}
|
@@ -92,7 +92,7 @@ declare function connectedLocationStrategy(data: LocationStrategyData, props: St
|
|
92
92
|
|
93
93
|
declare const VMenu: {
|
94
94
|
new (...args: any[]): vue.CreateComponentPublicInstance<{
|
95
|
-
location: Anchor;
|
95
|
+
location: NonNullable<Anchor> | undefined;
|
96
96
|
origin: "auto" | Anchor | "overlap";
|
97
97
|
transition: NonNullable<string | boolean | (vue.TransitionProps & {
|
98
98
|
component?: Component | undefined;
|
@@ -118,6 +118,7 @@ declare const VMenu: {
|
|
118
118
|
noClickAnimation: boolean;
|
119
119
|
persistent: boolean;
|
120
120
|
scrim: NonNullable<string | boolean>;
|
121
|
+
submenu: boolean;
|
121
122
|
} & {
|
122
123
|
offset?: string | number | number[] | undefined;
|
123
124
|
id?: string | undefined;
|
@@ -627,7 +628,7 @@ declare const VMenu: {
|
|
627
628
|
onAfterLeave?: (() => any) | undefined;
|
628
629
|
"onUpdate:modelValue"?: ((value: boolean) => any) | undefined;
|
629
630
|
"onClick:outside"?: ((e: MouseEvent) => any) | undefined;
|
630
|
-
}, "target" | "
|
631
|
+
}, "target" | "contentEl" | "activatorEl" | "scrimEl" | "animateClick" | "globalTop" | "localTop" | "updateLocation"> & vue.ShallowUnwrapRef<{
|
631
632
|
activatorEl: vue.Ref<HTMLElement | undefined>;
|
632
633
|
scrimEl: vue.Ref<HTMLElement | undefined>;
|
633
634
|
target: vue.ComputedRef<HTMLElement | [x: number, y: number] | undefined>;
|
@@ -639,7 +640,7 @@ declare const VMenu: {
|
|
639
640
|
}> & {} & vue.ComponentCustomProperties & {}, "offset" | "key" | "height" | "width" | "maxHeight" | "maxWidth" | "minHeight" | "minWidth" | "opacity" | "target" | "class" | "ref" | "onAfterEnter" | "onAfterLeave" | "$children" | "theme" | "v-slot:default" | "v-slots" | "ref_for" | "ref_key" | "onVnodeBeforeMount" | "onVnodeMounted" | "onVnodeBeforeUpdate" | "onVnodeUpdated" | "onVnodeBeforeUnmount" | "onVnodeUnmounted" | "onUpdate:modelValue" | "contentClass" | "activator" | "v-slot:activator" | "closeDelay" | "openDelay" | "contentProps" | "attach" | "onClick:outside" | ("absolute" | "location" | "origin" | "transition" | "zIndex" | "style" | "eager" | "disabled" | "modelValue" | "locationStrategy" | "scrollStrategy" | "activatorProps" | "openOnClick" | "openOnHover" | "openOnFocus" | "closeOnContentClick" | "closeOnBack" | "contained" | "noClickAnimation" | "persistent" | "scrim" | "_disableGlobalStack")>, `$${any}`>, unknown, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, {
|
640
641
|
'update:modelValue': (value: boolean) => boolean;
|
641
642
|
}, vue.VNodeProps & vue.AllowedComponentProps & vue.ComponentCustomProps & {
|
642
|
-
location: Anchor;
|
643
|
+
location: NonNullable<Anchor> | undefined;
|
643
644
|
origin: "auto" | Anchor | "overlap";
|
644
645
|
transition: NonNullable<string | boolean | (vue.TransitionProps & {
|
645
646
|
component?: Component | undefined;
|
@@ -665,6 +666,7 @@ declare const VMenu: {
|
|
665
666
|
noClickAnimation: boolean;
|
666
667
|
persistent: boolean;
|
667
668
|
scrim: NonNullable<string | boolean>;
|
669
|
+
submenu: boolean;
|
668
670
|
} & {
|
669
671
|
offset?: string | number | number[] | undefined;
|
670
672
|
id?: string | undefined;
|
@@ -719,7 +721,7 @@ declare const VMenu: {
|
|
719
721
|
} & {
|
720
722
|
"onUpdate:modelValue"?: ((value: boolean) => any) | undefined;
|
721
723
|
}, {
|
722
|
-
location: Anchor;
|
724
|
+
location: NonNullable<Anchor> | undefined;
|
723
725
|
origin: "auto" | Anchor | "overlap";
|
724
726
|
transition: NonNullable<string | boolean | (vue.TransitionProps & {
|
725
727
|
component?: Component | undefined;
|
@@ -747,6 +749,7 @@ declare const VMenu: {
|
|
747
749
|
noClickAnimation: boolean;
|
748
750
|
persistent: boolean;
|
749
751
|
scrim: NonNullable<string | boolean>;
|
752
|
+
submenu: boolean;
|
750
753
|
}, true, {}, vue.SlotsType<Partial<{
|
751
754
|
default: (arg: {
|
752
755
|
isActive: vue.Ref<boolean>;
|
@@ -768,7 +771,7 @@ declare const VMenu: {
|
|
768
771
|
M: {};
|
769
772
|
Defaults: {};
|
770
773
|
}, {
|
771
|
-
location: Anchor;
|
774
|
+
location: NonNullable<Anchor> | undefined;
|
772
775
|
origin: "auto" | Anchor | "overlap";
|
773
776
|
transition: NonNullable<string | boolean | (vue.TransitionProps & {
|
774
777
|
component?: Component | undefined;
|
@@ -794,6 +797,7 @@ declare const VMenu: {
|
|
794
797
|
noClickAnimation: boolean;
|
795
798
|
persistent: boolean;
|
796
799
|
scrim: NonNullable<string | boolean>;
|
800
|
+
submenu: boolean;
|
797
801
|
} & {
|
798
802
|
offset?: string | number | number[] | undefined;
|
799
803
|
id?: string | undefined;
|
@@ -1303,7 +1307,7 @@ declare const VMenu: {
|
|
1303
1307
|
onAfterLeave?: (() => any) | undefined;
|
1304
1308
|
"onUpdate:modelValue"?: ((value: boolean) => any) | undefined;
|
1305
1309
|
"onClick:outside"?: ((e: MouseEvent) => any) | undefined;
|
1306
|
-
}, "target" | "
|
1310
|
+
}, "target" | "contentEl" | "activatorEl" | "scrimEl" | "animateClick" | "globalTop" | "localTop" | "updateLocation"> & vue.ShallowUnwrapRef<{
|
1307
1311
|
activatorEl: vue.Ref<HTMLElement | undefined>;
|
1308
1312
|
scrimEl: vue.Ref<HTMLElement | undefined>;
|
1309
1313
|
target: vue.ComputedRef<HTMLElement | [x: number, y: number] | undefined>;
|
@@ -1313,7 +1317,7 @@ declare const VMenu: {
|
|
1313
1317
|
localTop: vue.ComputedRef<boolean>;
|
1314
1318
|
updateLocation: vue.Ref<((e: Event) => void) | undefined>;
|
1315
1319
|
}> & {} & vue.ComponentCustomProperties & {}, "offset" | "key" | "height" | "width" | "maxHeight" | "maxWidth" | "minHeight" | "minWidth" | "opacity" | "target" | "class" | "ref" | "onAfterEnter" | "onAfterLeave" | "$children" | "theme" | "v-slot:default" | "v-slots" | "ref_for" | "ref_key" | "onVnodeBeforeMount" | "onVnodeMounted" | "onVnodeBeforeUpdate" | "onVnodeUpdated" | "onVnodeBeforeUnmount" | "onVnodeUnmounted" | "onUpdate:modelValue" | "contentClass" | "activator" | "v-slot:activator" | "closeDelay" | "openDelay" | "contentProps" | "attach" | "onClick:outside" | ("absolute" | "location" | "origin" | "transition" | "zIndex" | "style" | "eager" | "disabled" | "modelValue" | "locationStrategy" | "scrollStrategy" | "activatorProps" | "openOnClick" | "openOnHover" | "openOnFocus" | "closeOnContentClick" | "closeOnBack" | "contained" | "noClickAnimation" | "persistent" | "scrim" | "_disableGlobalStack")>, `$${any}`>, {}, {}, {}, {
|
1316
|
-
location: Anchor;
|
1320
|
+
location: NonNullable<Anchor> | undefined;
|
1317
1321
|
origin: "auto" | Anchor | "overlap";
|
1318
1322
|
transition: NonNullable<string | boolean | (vue.TransitionProps & {
|
1319
1323
|
component?: Component | undefined;
|
@@ -1341,12 +1345,13 @@ declare const VMenu: {
|
|
1341
1345
|
noClickAnimation: boolean;
|
1342
1346
|
persistent: boolean;
|
1343
1347
|
scrim: NonNullable<string | boolean>;
|
1348
|
+
submenu: boolean;
|
1344
1349
|
}>;
|
1345
1350
|
__isFragment?: undefined;
|
1346
1351
|
__isTeleport?: undefined;
|
1347
1352
|
__isSuspense?: undefined;
|
1348
1353
|
} & vue.ComponentOptionsBase<{
|
1349
|
-
location: Anchor;
|
1354
|
+
location: NonNullable<Anchor> | undefined;
|
1350
1355
|
origin: "auto" | Anchor | "overlap";
|
1351
1356
|
transition: NonNullable<string | boolean | (vue.TransitionProps & {
|
1352
1357
|
component?: Component | undefined;
|
@@ -1372,6 +1377,7 @@ declare const VMenu: {
|
|
1372
1377
|
noClickAnimation: boolean;
|
1373
1378
|
persistent: boolean;
|
1374
1379
|
scrim: NonNullable<string | boolean>;
|
1380
|
+
submenu: boolean;
|
1375
1381
|
} & {
|
1376
1382
|
offset?: string | number | number[] | undefined;
|
1377
1383
|
id?: string | undefined;
|
@@ -1881,7 +1887,7 @@ declare const VMenu: {
|
|
1881
1887
|
onAfterLeave?: (() => any) | undefined;
|
1882
1888
|
"onUpdate:modelValue"?: ((value: boolean) => any) | undefined;
|
1883
1889
|
"onClick:outside"?: ((e: MouseEvent) => any) | undefined;
|
1884
|
-
}, "target" | "
|
1890
|
+
}, "target" | "contentEl" | "activatorEl" | "scrimEl" | "animateClick" | "globalTop" | "localTop" | "updateLocation"> & vue.ShallowUnwrapRef<{
|
1885
1891
|
activatorEl: vue.Ref<HTMLElement | undefined>;
|
1886
1892
|
scrimEl: vue.Ref<HTMLElement | undefined>;
|
1887
1893
|
target: vue.ComputedRef<HTMLElement | [x: number, y: number] | undefined>;
|
@@ -1893,7 +1899,7 @@ declare const VMenu: {
|
|
1893
1899
|
}> & {} & vue.ComponentCustomProperties & {}, "offset" | "key" | "height" | "width" | "maxHeight" | "maxWidth" | "minHeight" | "minWidth" | "opacity" | "target" | "class" | "ref" | "onAfterEnter" | "onAfterLeave" | "$children" | "theme" | "v-slot:default" | "v-slots" | "ref_for" | "ref_key" | "onVnodeBeforeMount" | "onVnodeMounted" | "onVnodeBeforeUpdate" | "onVnodeUpdated" | "onVnodeBeforeUnmount" | "onVnodeUnmounted" | "onUpdate:modelValue" | "contentClass" | "activator" | "v-slot:activator" | "closeDelay" | "openDelay" | "contentProps" | "attach" | "onClick:outside" | ("absolute" | "location" | "origin" | "transition" | "zIndex" | "style" | "eager" | "disabled" | "modelValue" | "locationStrategy" | "scrollStrategy" | "activatorProps" | "openOnClick" | "openOnHover" | "openOnFocus" | "closeOnContentClick" | "closeOnBack" | "contained" | "noClickAnimation" | "persistent" | "scrim" | "_disableGlobalStack")>, `$${any}`>, unknown, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, {
|
1894
1900
|
'update:modelValue': (value: boolean) => boolean;
|
1895
1901
|
}, string, {
|
1896
|
-
location: Anchor;
|
1902
|
+
location: NonNullable<Anchor> | undefined;
|
1897
1903
|
origin: "auto" | Anchor | "overlap";
|
1898
1904
|
transition: NonNullable<string | boolean | (vue.TransitionProps & {
|
1899
1905
|
component?: Component | undefined;
|
@@ -1921,6 +1927,7 @@ declare const VMenu: {
|
|
1921
1927
|
noClickAnimation: boolean;
|
1922
1928
|
persistent: boolean;
|
1923
1929
|
scrim: NonNullable<string | boolean>;
|
1930
|
+
submenu: boolean;
|
1924
1931
|
}, {}, string, vue.SlotsType<Partial<{
|
1925
1932
|
default: (arg: {
|
1926
1933
|
isActive: vue.Ref<boolean>;
|
@@ -1936,9 +1943,12 @@ declare const VMenu: {
|
|
1936
1943
|
}>[];
|
1937
1944
|
}>>> & vue.VNodeProps & vue.AllowedComponentProps & vue.ComponentCustomProps & FilterPropsOptions<{
|
1938
1945
|
offset: vue.PropType<string | number | number[] | undefined>;
|
1939
|
-
location: {
|
1946
|
+
location: Omit<{
|
1940
1947
|
type: vue.PropType<Anchor>;
|
1941
1948
|
default: string;
|
1949
|
+
}, "type" | "default"> & {
|
1950
|
+
type: vue.PropType<NonNullable<Anchor> | undefined>;
|
1951
|
+
default: NonNullable<Anchor> | undefined;
|
1942
1952
|
};
|
1943
1953
|
origin: {
|
1944
1954
|
type: vue.PropType<"auto" | Anchor | "overlap">;
|
@@ -2049,11 +2059,15 @@ declare const VMenu: {
|
|
2049
2059
|
};
|
2050
2060
|
attach: vue.PropType<string | boolean | Element>;
|
2051
2061
|
id: StringConstructor;
|
2062
|
+
submenu: BooleanConstructor;
|
2052
2063
|
}, vue.ExtractPropTypes<{
|
2053
2064
|
offset: vue.PropType<string | number | number[] | undefined>;
|
2054
|
-
location: {
|
2065
|
+
location: Omit<{
|
2055
2066
|
type: vue.PropType<Anchor>;
|
2056
2067
|
default: string;
|
2068
|
+
}, "type" | "default"> & {
|
2069
|
+
type: vue.PropType<NonNullable<Anchor> | undefined>;
|
2070
|
+
default: NonNullable<Anchor> | undefined;
|
2057
2071
|
};
|
2058
2072
|
origin: {
|
2059
2073
|
type: vue.PropType<"auto" | Anchor | "overlap">;
|
@@ -2164,6 +2178,7 @@ declare const VMenu: {
|
|
2164
2178
|
};
|
2165
2179
|
attach: vue.PropType<string | boolean | Element>;
|
2166
2180
|
id: StringConstructor;
|
2181
|
+
submenu: BooleanConstructor;
|
2167
2182
|
}>>;
|
2168
2183
|
type VMenu = InstanceType<typeof VMenu>;
|
2169
2184
|
|
@@ -93,6 +93,9 @@ export const VOverlay = genericComponent()({
|
|
93
93
|
attrs,
|
94
94
|
emit
|
95
95
|
} = _ref;
|
96
|
+
const root = ref();
|
97
|
+
const scrimEl = ref();
|
98
|
+
const contentEl = ref();
|
96
99
|
const model = useProxiedModel(props, 'modelValue');
|
97
100
|
const isActive = computed({
|
98
101
|
get: () => model.value,
|
@@ -130,7 +133,8 @@ export const VOverlay = genericComponent()({
|
|
130
133
|
scrimEvents
|
131
134
|
} = useActivator(props, {
|
132
135
|
isActive,
|
133
|
-
isTop: localTop
|
136
|
+
isTop: localTop,
|
137
|
+
contentEl
|
134
138
|
});
|
135
139
|
const {
|
136
140
|
teleportTarget
|
@@ -151,9 +155,6 @@ export const VOverlay = genericComponent()({
|
|
151
155
|
watch(() => props.disabled, v => {
|
152
156
|
if (v) isActive.value = false;
|
153
157
|
});
|
154
|
-
const root = ref();
|
155
|
-
const scrimEl = ref();
|
156
|
-
const contentEl = ref();
|
157
158
|
const {
|
158
159
|
contentStyles,
|
159
160
|
updateLocation
|