@vuetify/nightly 3.2.0-next-20230114.0 → 4.0.0-next-20230205.0
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/CHANGELOG.md +203 -11
- package/dist/json/importMap-labs.json +8 -4
- package/dist/json/importMap.json +12 -12
- package/dist/vuetify-labs.css +173 -165
- package/dist/vuetify-labs.d.ts +399 -176
- package/dist/vuetify-labs.esm.js +362 -278
- package/dist/vuetify-labs.esm.js.map +1 -1
- package/dist/vuetify-labs.js +361 -277
- package/dist/vuetify-labs.min.css +2 -2
- package/dist/vuetify.css +53 -45
- package/dist/vuetify.d.ts +330 -179
- package/dist/vuetify.esm.js +329 -248
- package/dist/vuetify.esm.js.map +1 -1
- package/dist/vuetify.js +328 -247
- package/dist/vuetify.js.map +1 -1
- package/dist/vuetify.min.css +2 -2
- package/dist/vuetify.min.js +700 -689
- package/dist/vuetify.min.js.map +1 -1
- package/lib/blueprints/index.d.ts +2 -2
- package/lib/blueprints/md1.d.ts +2 -2
- package/lib/blueprints/md2.d.ts +2 -2
- package/lib/blueprints/md3.d.ts +2 -2
- package/lib/components/VAutocomplete/VAutocomplete.mjs +3 -2
- package/lib/components/VAutocomplete/VAutocomplete.mjs.map +1 -1
- package/lib/components/VAutocomplete/index.d.ts +43 -20
- package/lib/components/VBottomSheet/VBottomSheet.mjs +1 -4
- package/lib/components/VBottomSheet/VBottomSheet.mjs.map +1 -1
- package/lib/components/VBtn/VBtn.css +7 -7
- package/lib/components/VBtn/VBtn.mjs +16 -5
- package/lib/components/VBtn/VBtn.mjs.map +1 -1
- package/lib/components/VBtnGroup/VBtnGroup.mjs +15 -11
- package/lib/components/VBtnGroup/VBtnGroup.mjs.map +1 -1
- package/lib/components/VBtnGroup/index.d.ts +2 -1
- package/lib/components/VBtnToggle/VBtnToggle.mjs +9 -5
- package/lib/components/VBtnToggle/VBtnToggle.mjs.map +1 -1
- package/lib/components/VBtnToggle/index.d.ts +122 -1
- package/lib/components/VCalendar/VCalendar.mjs +3 -0
- package/lib/components/VCalendar/VCalendar.mjs.map +1 -1
- package/lib/components/VCalendar/VCalendarCategory.sass +9 -3
- package/lib/components/VCalendar/VCalendarDaily.mjs +20 -8
- package/lib/components/VCalendar/VCalendarDaily.mjs.map +1 -1
- package/lib/components/VCalendar/VCalendarWeekly.mjs +25 -5
- package/lib/components/VCalendar/VCalendarWeekly.mjs.map +1 -1
- package/lib/components/VCalendar/mixins/calendar-with-events.mjs +20 -16
- package/lib/components/VCalendar/mixins/calendar-with-events.mjs.map +1 -1
- package/lib/components/VCalendar/mixins/mouse.mjs +16 -30
- package/lib/components/VCalendar/mixins/mouse.mjs.map +1 -1
- package/lib/components/VCard/VCard.css +7 -7
- package/lib/components/VChip/VChip.css +7 -7
- package/lib/components/VCombobox/VCombobox.mjs +4 -4
- package/lib/components/VCombobox/VCombobox.mjs.map +1 -1
- package/lib/components/VCombobox/index.d.ts +43 -20
- package/lib/components/VData/VData.mjs +2 -4
- package/lib/components/VData/VData.mjs.map +1 -1
- package/lib/components/VDatePicker/VDatePicker.mjs +7 -5
- package/lib/components/VDatePicker/VDatePicker.mjs.map +1 -1
- package/lib/components/VDefaultsProvider/index.d.ts +5 -4
- package/lib/components/VDialog/VDialog.mjs +6 -5
- package/lib/components/VDialog/VDialog.mjs.map +1 -1
- package/lib/components/VDialog/index.d.ts +57 -34
- package/lib/components/VDivider/VDivider.mjs +6 -6
- package/lib/components/VDivider/VDivider.mjs.map +1 -1
- package/lib/components/VExpansionPanel/VExpansionPanel.css +7 -7
- package/lib/components/VField/VField.css +2 -2
- package/lib/components/VField/VField.mjs +28 -26
- package/lib/components/VField/VField.mjs.map +1 -1
- package/lib/components/VField/VField.sass +2 -2
- package/lib/components/VFileInput/VFileInput.css +1 -0
- package/lib/components/VFileInput/VFileInput.mjs +7 -4
- package/lib/components/VFileInput/VFileInput.mjs.map +1 -1
- package/lib/components/VFileInput/VFileInput.sass +1 -0
- package/lib/components/VForm/index.d.ts +0 -3
- package/lib/components/VList/VList.mjs +4 -1
- package/lib/components/VList/VList.mjs.map +1 -1
- package/lib/components/VList/VListItem.css +8 -8
- package/lib/components/VList/VListItem.mjs +29 -19
- package/lib/components/VList/VListItem.mjs.map +1 -1
- package/lib/components/VList/VListItem.sass +1 -1
- package/lib/components/VMenu/VMenu.mjs +6 -5
- package/lib/components/VMenu/VMenu.mjs.map +1 -1
- package/lib/components/VMenu/index.d.ts +57 -34
- package/lib/components/VNavigationDrawer/VNavigationDrawer.css +4 -0
- package/lib/components/VNavigationDrawer/VNavigationDrawer.mjs +1 -1
- package/lib/components/VNavigationDrawer/VNavigationDrawer.mjs.map +1 -1
- package/lib/components/VNavigationDrawer/VNavigationDrawer.sass +4 -0
- package/lib/components/VNavigationDrawer/index.d.ts +3 -3
- package/lib/components/VNavigationDrawer/touch.mjs +7 -6
- package/lib/components/VNavigationDrawer/touch.mjs.map +1 -1
- package/lib/components/VOtpInput/VOtpInput.mjs +22 -46
- package/lib/components/VOtpInput/VOtpInput.mjs.map +1 -1
- package/lib/components/VOverflowBtn/VOverflowBtn.mjs +3 -0
- package/lib/components/VOverflowBtn/VOverflowBtn.mjs.map +1 -1
- package/lib/components/VOverlay/index.d.ts +34 -11
- package/lib/components/VOverlay/locationStrategies.mjs +40 -29
- package/lib/components/VOverlay/locationStrategies.mjs.map +1 -1
- package/lib/components/VOverlay/scrollStrategies.mjs +25 -16
- package/lib/components/VOverlay/scrollStrategies.mjs.map +1 -1
- package/lib/components/VPagination/VPagination.mjs +1 -1
- package/lib/components/VPagination/VPagination.mjs.map +1 -1
- package/lib/components/VProgressLinear/VProgressLinear.mjs +13 -1
- package/lib/components/VProgressLinear/VProgressLinear.mjs.map +1 -1
- package/lib/components/VProgressLinear/index.d.ts +18 -0
- package/lib/components/VSelect/VSelect.mjs +3 -4
- package/lib/components/VSelect/VSelect.mjs.map +1 -1
- package/lib/components/VSelect/index.d.ts +43 -20
- package/lib/components/VSelectionControl/VSelectionControl.css +2 -2
- package/lib/components/VSkeletonLoader/VSkeletonLoader.sass +1 -1
- package/lib/components/VSnackbar/index.d.ts +42 -19
- package/lib/components/VStepper/VStepper.sass +6 -6
- package/lib/components/VStepper/VStepperStep.mjs +12 -2
- package/lib/components/VStepper/VStepperStep.mjs.map +1 -1
- package/lib/components/VTable/VTable.css +4 -4
- package/lib/components/VTable/VTable.sass +2 -2
- package/lib/components/VTimePicker/VTimePicker.mjs.map +1 -1
- package/lib/components/VTimeline/_mixins.sass +1 -1
- package/lib/components/VTooltip/VTooltip.mjs +4 -3
- package/lib/components/VTooltip/VTooltip.mjs.map +1 -1
- package/lib/components/VTooltip/index.d.ts +57 -34
- package/lib/components/VTreeview/VTreeview.mjs +1 -1
- package/lib/components/VTreeview/VTreeview.mjs.map +1 -1
- package/lib/components/index.d.ts +328 -176
- package/lib/composables/defaults.mjs +1 -1
- package/lib/composables/defaults.mjs.map +1 -1
- package/lib/composables/filter.mjs +3 -3
- package/lib/composables/filter.mjs.map +1 -1
- package/lib/composables/form.mjs +0 -1
- package/lib/composables/form.mjs.map +1 -1
- package/lib/composables/toggleScope.mjs +14 -7
- package/lib/composables/toggleScope.mjs.map +1 -1
- package/lib/directives/ripple/VRipple.css +3 -0
- package/lib/directives/ripple/VRipple.sass +3 -0
- package/lib/directives/ripple/_variables.scss +1 -1
- package/lib/directives/ripple/index.mjs +2 -7
- package/lib/directives/ripple/index.mjs.map +1 -1
- package/lib/entry-bundler.mjs +1 -1
- package/lib/framework.mjs +1 -1
- package/lib/index.d.ts +5 -5
- package/lib/labs/VDataTable/VDataTable.mjs +6 -6
- package/lib/labs/VDataTable/VDataTable.mjs.map +1 -1
- package/lib/labs/VDataTable/VDataTableFooter.mjs +1 -1
- package/lib/labs/VDataTable/VDataTableFooter.mjs.map +1 -1
- package/lib/labs/VDataTable/VDataTableRows.mjs +1 -1
- package/lib/labs/VDataTable/VDataTableRows.mjs.map +1 -1
- package/lib/labs/VDataTable/VDataTableServer.mjs +19 -12
- package/lib/labs/VDataTable/VDataTableServer.mjs.map +1 -1
- package/lib/labs/VDataTable/VDataTableVirtual.mjs +6 -5
- package/lib/labs/VDataTable/VDataTableVirtual.mjs.map +1 -1
- package/lib/labs/VDataTable/composables/options.mjs +3 -7
- package/lib/labs/VDataTable/composables/options.mjs.map +1 -1
- package/lib/labs/VDataTable/composables/paginate.mjs +1 -1
- package/lib/labs/VDataTable/composables/paginate.mjs.map +1 -1
- package/lib/labs/VDataTable/index.d.ts +71 -1
- package/lib/labs/VDataTable/index.mjs +1 -0
- package/lib/labs/VDataTable/index.mjs.map +1 -1
- package/lib/labs/components.d.ts +71 -1
- package/lib/locale/adapters/vue-i18n.mjs +12 -2
- package/lib/locale/adapters/vue-i18n.mjs.map +1 -1
- package/lib/locale/ar.mjs +20 -20
- package/lib/locale/ar.mjs.map +1 -1
- package/lib/locale/en.mjs +2 -2
- package/lib/locale/en.mjs.map +1 -1
- package/lib/locale/es.mjs +3 -3
- package/lib/locale/es.mjs.map +1 -1
- package/lib/locale/fi.mjs +5 -5
- package/lib/locale/fi.mjs.map +1 -1
- package/lib/locale/it.mjs +6 -6
- package/lib/locale/it.mjs.map +1 -1
- package/lib/locale/sv.mjs +13 -13
- package/lib/locale/sv.mjs.map +1 -1
- package/lib/styles/settings/_variables.scss +6 -6
- package/lib/styles/tools/_states.sass +3 -3
- package/lib/util/defineComponent.mjs +21 -18
- package/lib/util/defineComponent.mjs.map +1 -1
- package/lib/util/helpers.mjs +5 -19
- package/lib/util/helpers.mjs.map +1 -1
- package/package.json +1 -1
@@ -156,7 +156,7 @@ export const VListItem = genericComponent()({
|
|
156
156
|
}
|
157
157
|
}
|
158
158
|
useRender(() => {
|
159
|
-
var _slots$
|
159
|
+
var _slots$title, _slots$subtitle, _slots$default;
|
160
160
|
const Tag = isLink.value ? 'a' : props.tag;
|
161
161
|
const hasColor = !list || isSelected.value || isActive.value;
|
162
162
|
const hasTitle = slots.title || props.title;
|
@@ -179,7 +179,18 @@ export const VListItem = genericComponent()({
|
|
179
179
|
"onClick": onClick,
|
180
180
|
"onKeydown": isClickable.value && !isLink.value && onKeyDown
|
181
181
|
}, {
|
182
|
-
default: () => [genOverlays(isClickable.value || isActive.value, 'v-list-item'), hasPrepend && _createVNode(
|
182
|
+
default: () => [genOverlays(isClickable.value || isActive.value, 'v-list-item'), hasPrepend && _createVNode("div", {
|
183
|
+
"key": "prepend",
|
184
|
+
"class": "v-list-item__prepend"
|
185
|
+
}, [props.prependAvatar && _createVNode(VAvatar, {
|
186
|
+
"key": "prepend-avatar",
|
187
|
+
"density": props.density,
|
188
|
+
"image": props.prependAvatar
|
189
|
+
}, null), props.prependIcon && _createVNode(VIcon, {
|
190
|
+
"key": "prepend-icon",
|
191
|
+
"density": props.density,
|
192
|
+
"icon": props.prependIcon
|
193
|
+
}, null), slots.prepend && _createVNode(VDefaultsProvider, {
|
183
194
|
"key": "prepend",
|
184
195
|
"defaults": {
|
185
196
|
VAvatar: {
|
@@ -195,14 +206,8 @@ export const VListItem = genericComponent()({
|
|
195
206
|
}
|
196
207
|
}
|
197
208
|
}, {
|
198
|
-
default: () => [
|
199
|
-
|
200
|
-
}, [props.prependAvatar && _createVNode(VAvatar, {
|
201
|
-
"key": "prepend-avatar"
|
202
|
-
}, null), props.prependIcon && _createVNode(VIcon, {
|
203
|
-
"key": "prepend-icon"
|
204
|
-
}, null), (_slots$prepend = slots.prepend) == null ? void 0 : _slots$prepend.call(slots, slotProps.value)])]
|
205
|
-
}), _createVNode("div", {
|
209
|
+
default: () => [slots.prepend(slotProps.value)]
|
210
|
+
})]), _createVNode("div", {
|
206
211
|
"class": "v-list-item__content",
|
207
212
|
"data-no-activator": ""
|
208
213
|
}, [hasTitle && _createVNode(VListItemTitle, {
|
@@ -217,7 +222,10 @@ export const VListItem = genericComponent()({
|
|
217
222
|
default: () => [((_slots$subtitle = slots.subtitle) == null ? void 0 : _slots$subtitle.call(slots, {
|
218
223
|
subtitle: props.subtitle
|
219
224
|
})) ?? props.subtitle]
|
220
|
-
}), (_slots$default = slots.default) == null ? void 0 : _slots$default.call(slots, slotProps.value)]), hasAppend && _createVNode(
|
225
|
+
}), (_slots$default = slots.default) == null ? void 0 : _slots$default.call(slots, slotProps.value)]), hasAppend && _createVNode("div", {
|
226
|
+
"key": "append",
|
227
|
+
"class": "v-list-item__append"
|
228
|
+
}, [slots.append && _createVNode(VDefaultsProvider, {
|
221
229
|
"key": "append",
|
222
230
|
"defaults": {
|
223
231
|
VAvatar: {
|
@@ -233,14 +241,16 @@ export const VListItem = genericComponent()({
|
|
233
241
|
}
|
234
242
|
}
|
235
243
|
}, {
|
236
|
-
default: () => [
|
237
|
-
|
238
|
-
|
239
|
-
|
240
|
-
|
241
|
-
|
242
|
-
|
243
|
-
|
244
|
+
default: () => [slots.append(slotProps.value)]
|
245
|
+
}), props.appendIcon && _createVNode(VIcon, {
|
246
|
+
"key": "append-icon",
|
247
|
+
"density": props.density,
|
248
|
+
"icon": props.appendIcon
|
249
|
+
}, null), props.appendAvatar && _createVNode(VAvatar, {
|
250
|
+
"key": "append-avatar",
|
251
|
+
"density": props.density,
|
252
|
+
"image": props.appendAvatar
|
253
|
+
}, null)])]
|
244
254
|
}), [[_resolveDirective("ripple"), isClickable.value && props.ripple]]);
|
245
255
|
});
|
246
256
|
return {};
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"VListItem.mjs","names":["VAvatar","VDefaultsProvider","VIcon","VListItemSubtitle","VListItemTitle","Ripple","genOverlays","makeVariantProps","useVariant","IconValue","makeBorderProps","useBorder","makeDensityProps","useDensity","makeDimensionProps","useDimension","makeElevationProps","useElevation","makeRoundedProps","useRounded","makeRouterProps","useLink","makeTagProps","makeThemeProps","provideTheme","useList","useNestedItem","computed","watch","EventProp","genericComponent","useRender","VListItem","name","directives","props","active","type","Boolean","default","undefined","activeClass","String","activeColor","appendAvatar","appendIcon","disabled","lines","link","nav","prependAvatar","prependIcon","ripple","subtitle","Number","title","value","onClick","onClickOnce","variant","emits","click","e","setup","attrs","slots","emit","id","href","select","isSelected","isIndeterminate","isGroupActivator","root","parent","openOnSelect","list","isActive","isLink","isClickable","roundedProps","rounded","variantProps","color","val","open","immediate","themeClasses","borderClasses","colorClasses","colorStyles","variantClasses","densityClasses","dimensionStyles","elevationClasses","roundedClasses","lineClasses","slotProps","navigate","onKeyDown","key","preventDefault","Tag","tag","hasColor","hasTitle","hasSubtitle","hasAppend","append","hasPrepend","prepend","updateHasPrepend","density","image","icon","VListItemAction","start","end"],"sources":["../../../src/components/VList/VListItem.tsx"],"sourcesContent":["// Styles\nimport './VListItem.sass'\n\n// Components\nimport { VAvatar } from '@/components/VAvatar'\nimport { VDefaultsProvider } from '@/components/VDefaultsProvider'\nimport { VIcon } from '@/components/VIcon'\nimport { VListItemSubtitle } from './VListItemSubtitle'\nimport { VListItemTitle } from './VListItemTitle'\n\n// Directives\nimport { Ripple } from '@/directives/ripple'\n\n// Composables\nimport { genOverlays, makeVariantProps, useVariant } from '@/composables/variant'\nimport { IconValue } from '@/composables/icons'\nimport { makeBorderProps, useBorder } from '@/composables/border'\nimport { makeDensityProps, useDensity } from '@/composables/density'\nimport { makeDimensionProps, useDimension } from '@/composables/dimensions'\nimport { makeElevationProps, useElevation } from '@/composables/elevation'\nimport { makeRoundedProps, useRounded } from '@/composables/rounded'\nimport { makeRouterProps, useLink } from '@/composables/router'\nimport { makeTagProps } from '@/composables/tag'\nimport { makeThemeProps, provideTheme } from '@/composables/theme'\nimport { useList } from './list'\nimport { useNestedItem } from '@/composables/nested/nested'\n\n// Utilities\nimport { computed, watch } from 'vue'\nimport { EventProp, genericComponent, useRender } from '@/util'\n\n// Types\nimport type { SlotsToProps } from '@/util'\nimport type { PropType } from 'vue'\n\ntype ListItemSlot = {\n isActive: boolean\n activate: (value: boolean) => void\n isSelected: boolean\n select: (value: boolean) => void\n}\n\nexport type ListItemTitleSlot = {\n title?: string\n}\n\nexport type ListItemSubtitleSlot = {\n subtitle?: string\n}\n\nexport const VListItem = genericComponent<new () => {\n $props: SlotsToProps<{\n prepend: [ListItemSlot]\n append: [ListItemSlot]\n default: [ListItemSlot]\n title: [ListItemTitleSlot]\n subtitle: [ListItemSubtitleSlot]\n }>\n}>()({\n name: 'VListItem',\n\n directives: { Ripple },\n\n props: {\n active: {\n type: Boolean,\n default: undefined,\n },\n activeClass: String,\n activeColor: String,\n appendAvatar: String,\n appendIcon: IconValue,\n disabled: Boolean,\n lines: String as PropType<'one' | 'two' | 'three'>,\n link: {\n type: Boolean,\n default: undefined,\n },\n nav: Boolean,\n prependAvatar: String,\n prependIcon: IconValue,\n ripple: {\n type: Boolean,\n default: true,\n },\n subtitle: [String, Number, Boolean],\n title: [String, Number, Boolean],\n value: null,\n\n onClick: EventProp,\n onClickOnce: EventProp,\n\n ...makeBorderProps(),\n ...makeDensityProps(),\n ...makeDimensionProps(),\n ...makeElevationProps(),\n ...makeRoundedProps(),\n ...makeRouterProps(),\n ...makeTagProps(),\n ...makeThemeProps(),\n ...makeVariantProps({ variant: 'text' } as const),\n },\n\n emits: {\n click: (e: MouseEvent | KeyboardEvent) => true,\n },\n\n setup (props, { attrs, slots, emit }) {\n const link = useLink(props, attrs)\n const id = computed(() => props.value ?? link.href.value)\n const { select, isSelected, isIndeterminate, isGroupActivator, root, parent, openOnSelect } = useNestedItem(id, false)\n const list = useList()\n const isActive = computed(() =>\n props.active !== false &&\n (props.active || link.isActive?.value || isSelected.value)\n )\n const isLink = computed(() => props.link !== false && link.isLink.value)\n const isClickable = computed(() =>\n !props.disabled &&\n props.link !== false &&\n (props.link || link.isClickable.value || (props.value != null && !!list))\n )\n\n const roundedProps = computed(() => props.rounded || props.nav)\n const variantProps = computed(() => ({\n color: isActive.value ? props.activeColor ?? props.color : props.color,\n variant: props.variant,\n }))\n\n watch(() => link.isActive?.value, val => {\n if (val && parent.value != null) {\n root.open(parent.value, true)\n }\n\n if (val) {\n openOnSelect(val)\n }\n }, { immediate: true })\n\n const { themeClasses } = provideTheme(props)\n const { borderClasses } = useBorder(props)\n const { colorClasses, colorStyles, variantClasses } = useVariant(variantProps)\n const { densityClasses } = useDensity(props)\n const { dimensionStyles } = useDimension(props)\n const { elevationClasses } = useElevation(props)\n const { roundedClasses } = useRounded(roundedProps)\n const lineClasses = computed(() => props.lines ? `v-list-item--${props.lines}-line` : undefined)\n\n const slotProps = computed(() => ({\n isActive: isActive.value,\n select,\n isSelected: isSelected.value,\n isIndeterminate: isIndeterminate.value,\n }))\n\n function onClick (e: MouseEvent) {\n emit('click', e)\n\n if (isGroupActivator || !isClickable.value) return\n\n link.navigate?.(e)\n props.value != null && select(!isSelected.value, e)\n }\n\n function onKeyDown (e: KeyboardEvent) {\n if (e.key === 'Enter' || e.key === ' ') {\n e.preventDefault()\n onClick(e as any as MouseEvent)\n }\n }\n\n useRender(() => {\n const Tag = isLink.value ? 'a' : props.tag\n const hasColor = !list || isSelected.value || isActive.value\n const hasTitle = (slots.title || props.title)\n const hasSubtitle = (slots.subtitle || props.subtitle)\n const hasAppend = !!(slots.append || props.appendAvatar || props.appendIcon)\n const hasPrepend = !!(slots.prepend || props.prependAvatar || props.prependIcon)\n\n list?.updateHasPrepend(hasPrepend)\n\n return (\n <Tag\n class={[\n 'v-list-item',\n {\n 'v-list-item--active': isActive.value,\n 'v-list-item--disabled': props.disabled,\n 'v-list-item--link': isClickable.value,\n 'v-list-item--nav': props.nav,\n 'v-list-item--prepend': !hasPrepend && list?.hasPrepend.value,\n [`${props.activeClass}`]: props.activeClass && isActive.value,\n },\n themeClasses.value,\n borderClasses.value,\n hasColor ? colorClasses.value : undefined,\n densityClasses.value,\n elevationClasses.value,\n lineClasses.value,\n roundedClasses.value,\n variantClasses.value,\n ]}\n style={[\n hasColor ? colorStyles.value : undefined,\n dimensionStyles.value,\n ]}\n href={ link.href.value }\n tabindex={ isClickable.value ? 0 : undefined }\n onClick={ onClick }\n onKeydown={ isClickable.value && !isLink.value && onKeyDown }\n v-ripple={ isClickable.value && props.ripple }\n >\n { genOverlays(isClickable.value || isActive.value, 'v-list-item') }\n\n { hasPrepend && (\n <VDefaultsProvider\n key=\"prepend\"\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 <div class=\"v-list-item__prepend\">\n { props.prependAvatar && (\n <VAvatar key=\"prepend-avatar\" />\n ) }\n\n { props.prependIcon && (\n <VIcon key=\"prepend-icon\" />\n ) }\n\n { slots.prepend?.(slotProps.value) }\n </div>\n </VDefaultsProvider>\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 <VDefaultsProvider\n key=\"append\"\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 <div class=\"v-list-item__append\">\n { slots.append?.(slotProps.value) }\n\n { props.appendIcon && (\n <VIcon key=\"append-icon\" />\n ) }\n\n { props.appendAvatar && (\n <VAvatar key=\"append-avatar\" />\n ) }\n </div>\n </VDefaultsProvider>\n ) }\n </Tag>\n )\n })\n\n return {}\n },\n})\n\nexport type VListItem = InstanceType<typeof VListItem>\n"],"mappings":"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"}
|
1
|
+
{"version":3,"file":"VListItem.mjs","names":["VAvatar","VDefaultsProvider","VIcon","VListItemSubtitle","VListItemTitle","Ripple","genOverlays","makeVariantProps","useVariant","IconValue","makeBorderProps","useBorder","makeDensityProps","useDensity","makeDimensionProps","useDimension","makeElevationProps","useElevation","makeRoundedProps","useRounded","makeRouterProps","useLink","makeTagProps","makeThemeProps","provideTheme","useList","useNestedItem","computed","watch","EventProp","genericComponent","useRender","VListItem","name","directives","props","active","type","Boolean","default","undefined","activeClass","String","activeColor","appendAvatar","appendIcon","disabled","lines","link","nav","prependAvatar","prependIcon","ripple","subtitle","Number","title","value","onClick","onClickOnce","variant","emits","click","e","setup","attrs","slots","emit","id","href","select","isSelected","isIndeterminate","isGroupActivator","root","parent","openOnSelect","list","isActive","isLink","isClickable","roundedProps","rounded","variantProps","color","val","open","immediate","themeClasses","borderClasses","colorClasses","colorStyles","variantClasses","densityClasses","dimensionStyles","elevationClasses","roundedClasses","lineClasses","slotProps","navigate","onKeyDown","key","preventDefault","Tag","tag","hasColor","hasTitle","hasSubtitle","hasAppend","append","hasPrepend","prepend","updateHasPrepend","density","image","icon","VListItemAction","start","end"],"sources":["../../../src/components/VList/VListItem.tsx"],"sourcesContent":["// Styles\nimport './VListItem.sass'\n\n// Components\nimport { VAvatar } from '@/components/VAvatar'\nimport { VDefaultsProvider } from '@/components/VDefaultsProvider'\nimport { VIcon } from '@/components/VIcon'\nimport { VListItemSubtitle } from './VListItemSubtitle'\nimport { VListItemTitle } from './VListItemTitle'\n\n// Directives\nimport { Ripple } from '@/directives/ripple'\n\n// Composables\nimport { genOverlays, makeVariantProps, useVariant } from '@/composables/variant'\nimport { IconValue } from '@/composables/icons'\nimport { makeBorderProps, useBorder } from '@/composables/border'\nimport { makeDensityProps, useDensity } from '@/composables/density'\nimport { makeDimensionProps, useDimension } from '@/composables/dimensions'\nimport { makeElevationProps, useElevation } from '@/composables/elevation'\nimport { makeRoundedProps, useRounded } from '@/composables/rounded'\nimport { makeRouterProps, useLink } from '@/composables/router'\nimport { makeTagProps } from '@/composables/tag'\nimport { makeThemeProps, provideTheme } from '@/composables/theme'\nimport { useList } from './list'\nimport { useNestedItem } from '@/composables/nested/nested'\n\n// Utilities\nimport { computed, watch } from 'vue'\nimport { EventProp, genericComponent, useRender } from '@/util'\n\n// Types\nimport type { SlotsToProps } from '@/util'\nimport type { PropType } from 'vue'\n\ntype ListItemSlot = {\n isActive: boolean\n activate: (value: boolean) => void\n isSelected: boolean\n select: (value: boolean) => void\n}\n\nexport type ListItemTitleSlot = {\n title?: string\n}\n\nexport type ListItemSubtitleSlot = {\n subtitle?: string\n}\n\nexport const VListItem = genericComponent<new () => {\n $props: SlotsToProps<{\n prepend: [ListItemSlot]\n append: [ListItemSlot]\n default: [ListItemSlot]\n title: [ListItemTitleSlot]\n subtitle: [ListItemSubtitleSlot]\n }>\n}>()({\n name: 'VListItem',\n\n directives: { Ripple },\n\n props: {\n active: {\n type: Boolean,\n default: undefined,\n },\n activeClass: String,\n activeColor: String,\n appendAvatar: String,\n appendIcon: IconValue,\n disabled: Boolean,\n lines: String as PropType<'one' | 'two' | 'three'>,\n link: {\n type: Boolean,\n default: undefined,\n },\n nav: Boolean,\n prependAvatar: String,\n prependIcon: IconValue,\n ripple: {\n type: Boolean,\n default: true,\n },\n subtitle: [String, Number, Boolean],\n title: [String, Number, Boolean],\n value: null,\n\n onClick: EventProp,\n onClickOnce: EventProp,\n\n ...makeBorderProps(),\n ...makeDensityProps(),\n ...makeDimensionProps(),\n ...makeElevationProps(),\n ...makeRoundedProps(),\n ...makeRouterProps(),\n ...makeTagProps(),\n ...makeThemeProps(),\n ...makeVariantProps({ variant: 'text' } as const),\n },\n\n emits: {\n click: (e: MouseEvent | KeyboardEvent) => true,\n },\n\n setup (props, { attrs, slots, emit }) {\n const link = useLink(props, attrs)\n const id = computed(() => props.value ?? link.href.value)\n const { select, isSelected, isIndeterminate, isGroupActivator, root, parent, openOnSelect } = useNestedItem(id, false)\n const list = useList()\n const isActive = computed(() =>\n props.active !== false &&\n (props.active || link.isActive?.value || isSelected.value)\n )\n const isLink = computed(() => props.link !== false && link.isLink.value)\n const isClickable = computed(() =>\n !props.disabled &&\n props.link !== false &&\n (props.link || link.isClickable.value || (props.value != null && !!list))\n )\n\n const roundedProps = computed(() => props.rounded || props.nav)\n const variantProps = computed(() => ({\n color: isActive.value ? props.activeColor ?? props.color : props.color,\n variant: props.variant,\n }))\n\n watch(() => link.isActive?.value, val => {\n if (val && parent.value != null) {\n root.open(parent.value, true)\n }\n\n if (val) {\n openOnSelect(val)\n }\n }, { immediate: true })\n\n const { themeClasses } = provideTheme(props)\n const { borderClasses } = useBorder(props)\n const { colorClasses, colorStyles, variantClasses } = useVariant(variantProps)\n const { densityClasses } = useDensity(props)\n const { dimensionStyles } = useDimension(props)\n const { elevationClasses } = useElevation(props)\n const { roundedClasses } = useRounded(roundedProps)\n const lineClasses = computed(() => props.lines ? `v-list-item--${props.lines}-line` : undefined)\n\n const slotProps = computed(() => ({\n isActive: isActive.value,\n select,\n isSelected: isSelected.value,\n isIndeterminate: isIndeterminate.value,\n }))\n\n function onClick (e: MouseEvent) {\n emit('click', e)\n\n if (isGroupActivator || !isClickable.value) return\n\n link.navigate?.(e)\n props.value != null && select(!isSelected.value, e)\n }\n\n function onKeyDown (e: KeyboardEvent) {\n if (e.key === 'Enter' || e.key === ' ') {\n e.preventDefault()\n onClick(e as any as MouseEvent)\n }\n }\n\n useRender(() => {\n const Tag = isLink.value ? 'a' : props.tag\n const hasColor = !list || isSelected.value || isActive.value\n const hasTitle = (slots.title || props.title)\n const hasSubtitle = (slots.subtitle || props.subtitle)\n const hasAppend = !!(slots.append || props.appendAvatar || props.appendIcon)\n const hasPrepend = !!(slots.prepend || props.prependAvatar || props.prependIcon)\n\n list?.updateHasPrepend(hasPrepend)\n\n return (\n <Tag\n class={[\n 'v-list-item',\n {\n 'v-list-item--active': isActive.value,\n 'v-list-item--disabled': props.disabled,\n 'v-list-item--link': isClickable.value,\n 'v-list-item--nav': props.nav,\n 'v-list-item--prepend': !hasPrepend && list?.hasPrepend.value,\n [`${props.activeClass}`]: props.activeClass && isActive.value,\n },\n themeClasses.value,\n borderClasses.value,\n hasColor ? colorClasses.value : undefined,\n densityClasses.value,\n elevationClasses.value,\n lineClasses.value,\n roundedClasses.value,\n variantClasses.value,\n ]}\n style={[\n hasColor ? colorStyles.value : undefined,\n dimensionStyles.value,\n ]}\n href={ link.href.value }\n tabindex={ isClickable.value ? 0 : undefined }\n onClick={ onClick }\n onKeydown={ isClickable.value && !isLink.value && onKeyDown }\n v-ripple={ isClickable.value && props.ripple }\n >\n { genOverlays(isClickable.value || isActive.value, 'v-list-item') }\n\n { hasPrepend && (\n <div key=\"prepend\" class=\"v-list-item__prepend\">\n { props.prependAvatar && (\n <VAvatar key=\"prepend-avatar\" density={ props.density } image={ props.prependAvatar } />\n ) }\n\n { props.prependIcon && (\n <VIcon key=\"prepend-icon\" density={ props.density } icon={ props.prependIcon } />\n ) }\n\n { slots.prepend && (\n <VDefaultsProvider\n key=\"prepend\"\n defaults={{\n VAvatar: {\n density: props.density,\n image: props.prependAvatar,\n },\n VIcon: {\n density: props.density,\n icon: props.prependIcon,\n },\n VListItemAction: {\n start: true,\n },\n }}\n >\n { slots.prepend(slotProps.value) }\n </VDefaultsProvider>\n ) }\n </div>\n ) }\n\n <div class=\"v-list-item__content\" data-no-activator=\"\">\n { hasTitle && (\n <VListItemTitle key=\"title\">\n { slots.title?.({ title: props.title }) ?? props.title}\n </VListItemTitle>\n ) }\n\n { hasSubtitle && (\n <VListItemSubtitle key=\"subtitle\">\n { slots.subtitle?.({ subtitle: props.subtitle }) ?? props.subtitle }\n </VListItemSubtitle>\n ) }\n\n { slots.default?.(slotProps.value) }\n </div>\n\n { hasAppend && (\n <div key=\"append\" class=\"v-list-item__append\">\n { slots.append && (\n <VDefaultsProvider\n key=\"append\"\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 { props.appendIcon && (\n <VIcon key=\"append-icon\" density={ props.density } icon={ props.appendIcon } />\n )}\n\n { props.appendAvatar && (\n <VAvatar key=\"append-avatar\" density={ props.density } image={ props.appendAvatar } />\n )}\n </div>\n )}\n </Tag>\n )\n })\n\n return {}\n },\n})\n\nexport type VListItem = InstanceType<typeof VListItem>\n"],"mappings":"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"}
|
@@ -69,6 +69,11 @@ export const VMenu = genericComponent()({
|
|
69
69
|
function onClickOutside() {
|
70
70
|
parent == null ? void 0 : parent.closeParents();
|
71
71
|
}
|
72
|
+
const activatorProps = computed(() => mergeProps({
|
73
|
+
'aria-haspopup': 'menu',
|
74
|
+
'aria-expanded': String(isActive.value),
|
75
|
+
'aria-owns': id.value
|
76
|
+
}, props.activatorProps));
|
72
77
|
useRender(() => {
|
73
78
|
const [overlayProps] = filterVOverlayProps(props);
|
74
79
|
return _createVNode(VOverlay, _mergeProps({
|
@@ -78,11 +83,7 @@ export const VMenu = genericComponent()({
|
|
78
83
|
"modelValue": isActive.value,
|
79
84
|
"onUpdate:modelValue": $event => isActive.value = $event,
|
80
85
|
"absolute": true,
|
81
|
-
"activatorProps":
|
82
|
-
'aria-haspopup': 'menu',
|
83
|
-
'aria-expanded': String(isActive.value),
|
84
|
-
'aria-owns': id.value
|
85
|
-
}, props.activatorProps),
|
86
|
+
"activatorProps": activatorProps.value,
|
86
87
|
"onClick:outside": onClickOutside
|
87
88
|
}, scopeId), {
|
88
89
|
activator: slots.activator,
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"VMenu.mjs","names":["VDialogTransition","VDefaultsProvider","VOverlay","forwardRefs","useProxiedModel","useScopeId","computed","inject","mergeProps","provide","ref","watch","genericComponent","getUid","omit","useRender","filterVOverlayProps","makeVOverlayProps","VMenuSymbol","VMenu","name","props","id","String","closeDelay","closeOnContentClick","locationStrategy","openDelay","scrim","scrollStrategy","transition","component","emits","value","setup","slots","isActive","scopeId","uid","overlay","parent","openChildren","register","unregister","closeParents","setTimeout","val","onClickOutside","
|
1
|
+
{"version":3,"file":"VMenu.mjs","names":["VDialogTransition","VDefaultsProvider","VOverlay","forwardRefs","useProxiedModel","useScopeId","computed","inject","mergeProps","provide","ref","watch","genericComponent","getUid","omit","useRender","filterVOverlayProps","makeVOverlayProps","VMenuSymbol","VMenu","name","props","id","String","closeDelay","closeOnContentClick","locationStrategy","openDelay","scrim","scrollStrategy","transition","component","emits","value","setup","slots","isActive","scopeId","uid","overlay","parent","openChildren","register","unregister","closeParents","setTimeout","val","onClickOutside","activatorProps","overlayProps","activator","default","args"],"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'\n\n// Composables\nimport { forwardRefs } from '@/composables/forwardRefs'\nimport { useProxiedModel } from '@/composables/proxiedModel'\nimport { useScopeId } from '@/composables/scopeId'\n\n// Utilities\nimport { computed, inject, mergeProps, provide, ref, watch } from 'vue'\nimport { genericComponent, getUid, omit, useRender } from '@/util'\nimport { filterVOverlayProps, makeVOverlayProps } from '@/components/VOverlay/VOverlay'\nimport { VMenuSymbol } from './shared'\n\n// Types\nimport type { SlotsToProps } from '@/util'\nimport type { OverlaySlots } from '@/components/VOverlay/VOverlay'\n\nexport const VMenu = genericComponent<new () => {\n $props: SlotsToProps<OverlaySlots>\n}>()({\n name: 'VMenu',\n\n props: {\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 },\n }), ['absolute']),\n },\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 let openChildren = 0\n provide(VMenuSymbol, {\n register () {\n ++openChildren\n },\n unregister () {\n --openChildren\n },\n closeParents () {\n setTimeout(() => {\n if (!openChildren) {\n isActive.value = false\n parent?.closeParents()\n }\n }, 40)\n },\n })\n\n watch(isActive, val => {\n val ? parent?.register() : parent?.unregister()\n })\n\n function onClickOutside () {\n parent?.closeParents()\n }\n\n const activatorProps = computed(() =>\n mergeProps({\n 'aria-haspopup': 'menu',\n 'aria-expanded': String(isActive.value),\n 'aria-owns': id.value,\n }, props.activatorProps)\n )\n\n useRender(() => {\n const [overlayProps] = filterVOverlayProps(props)\n\n return (\n <VOverlay\n ref={ overlay }\n class={[\n 'v-menu',\n ]}\n { ...overlayProps }\n v-model={ isActive.value }\n absolute\n activatorProps={ activatorProps.value }\n onClick:outside={ onClickOutside }\n { ...scopeId }\n >\n {{\n activator: slots.activator,\n default: (...args) => (\n <VDefaultsProvider root>\n { slots.default?.(...args) }\n </VDefaultsProvider>\n ),\n }}\n </VOverlay>\n )\n })\n\n return forwardRefs({ id }, overlay)\n },\n})\n\nexport type VMenu = InstanceType<typeof VMenu>\n"],"mappings":"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"}
|
@@ -1,5 +1,5 @@
|
|
1
1
|
import * as vue from 'vue';
|
2
|
-
import { Ref, VNodeChild } from 'vue';
|
2
|
+
import { Ref, EffectScope, VNodeChild } from 'vue';
|
3
3
|
|
4
4
|
interface ScrollStrategyData {
|
5
5
|
root: Ref<HTMLElement | undefined>;
|
@@ -8,7 +8,7 @@ interface ScrollStrategyData {
|
|
8
8
|
isActive: Ref<boolean>;
|
9
9
|
updateLocation: Ref<((e: Event) => void) | undefined>;
|
10
10
|
}
|
11
|
-
declare type ScrollStrategyFn = (data: ScrollStrategyData, props: StrategyProps$1) => void;
|
11
|
+
declare type ScrollStrategyFn = (data: ScrollStrategyData, props: StrategyProps$1, scope: EffectScope) => void;
|
12
12
|
declare const scrollStrategies: {
|
13
13
|
none: null;
|
14
14
|
close: typeof closeScrollStrategy;
|
@@ -21,7 +21,24 @@ interface StrategyProps$1 {
|
|
21
21
|
}
|
22
22
|
declare function closeScrollStrategy(data: ScrollStrategyData): void;
|
23
23
|
declare function blockScrollStrategy(data: ScrollStrategyData, props: StrategyProps$1): void;
|
24
|
-
declare function repositionScrollStrategy(data: ScrollStrategyData): void;
|
24
|
+
declare function repositionScrollStrategy(data: ScrollStrategyData, props: StrategyProps$1, scope: EffectScope): void;
|
25
|
+
|
26
|
+
declare class Box {
|
27
|
+
x: number;
|
28
|
+
y: number;
|
29
|
+
width: number;
|
30
|
+
height: number;
|
31
|
+
constructor({ x, y, width, height }: {
|
32
|
+
x: number;
|
33
|
+
y: number;
|
34
|
+
width: number;
|
35
|
+
height: number;
|
36
|
+
});
|
37
|
+
get top(): number;
|
38
|
+
get bottom(): number;
|
39
|
+
get left(): number;
|
40
|
+
get right(): number;
|
41
|
+
}
|
25
42
|
|
26
43
|
declare const block: readonly ["top", "bottom"];
|
27
44
|
declare const inline: readonly ["start", "end", "left", "right"];
|
@@ -69,7 +86,13 @@ interface StrategyProps {
|
|
69
86
|
}
|
70
87
|
declare function staticLocationStrategy(): void;
|
71
88
|
declare function connectedLocationStrategy(data: LocationStrategyData, props: StrategyProps, contentStyles: Ref<Record<string, string>>): {
|
72
|
-
updateLocation: () =>
|
89
|
+
updateLocation: () => {
|
90
|
+
available: {
|
91
|
+
x: number;
|
92
|
+
y: number;
|
93
|
+
};
|
94
|
+
contentBox: Box;
|
95
|
+
} | undefined;
|
73
96
|
};
|
74
97
|
|
75
98
|
declare type OverlaySlots = MakeSlots<{
|
@@ -112,7 +135,7 @@ declare const VMenu: {
|
|
112
135
|
locationStrategy: "connected" | "static" | ((data: LocationStrategyData, props: StrategyProps, contentStyles: vue.Ref<Record<string, string>>) => {
|
113
136
|
updateLocation: (e: Event) => void;
|
114
137
|
} | undefined);
|
115
|
-
scrollStrategy: "none" | "block" | "close" | ((data: ScrollStrategyData, props: StrategyProps$1) => void) | "reposition";
|
138
|
+
scrollStrategy: "none" | "block" | "close" | ((data: ScrollStrategyData, props: StrategyProps$1, scope: vue.EffectScope) => void) | "reposition";
|
116
139
|
closeOnBack: boolean;
|
117
140
|
contained: boolean;
|
118
141
|
noClickAnimation: boolean;
|
@@ -210,12 +233,12 @@ declare const VMenu: {
|
|
210
233
|
} | undefined);
|
211
234
|
};
|
212
235
|
scrollStrategy: Omit<{
|
213
|
-
type: vue.PropType<"none" | "block" | "close" | ((data: ScrollStrategyData, props: StrategyProps$1) => void) | "reposition">;
|
236
|
+
type: vue.PropType<"none" | "block" | "close" | ((data: ScrollStrategyData, props: StrategyProps$1, scope: vue.EffectScope) => void) | "reposition">;
|
214
237
|
default: string;
|
215
238
|
validator: (val: any) => boolean;
|
216
239
|
}, "type" | "default"> & {
|
217
|
-
type: vue.PropType<"none" | "block" | "close" | ((data: ScrollStrategyData, props: StrategyProps$1) => void) | "reposition">;
|
218
|
-
default: "none" | "block" | "close" | ((data: ScrollStrategyData, props: StrategyProps$1) => void) | "reposition";
|
240
|
+
type: vue.PropType<"none" | "block" | "close" | ((data: ScrollStrategyData, props: StrategyProps$1, scope: vue.EffectScope) => void) | "reposition">;
|
241
|
+
default: "none" | "block" | "close" | ((data: ScrollStrategyData, props: StrategyProps$1, scope: vue.EffectScope) => void) | "reposition";
|
219
242
|
};
|
220
243
|
closeOnBack: {
|
221
244
|
type: BooleanConstructor;
|
@@ -342,12 +365,12 @@ declare const VMenu: {
|
|
342
365
|
} | undefined);
|
343
366
|
};
|
344
367
|
scrollStrategy: Omit<{
|
345
|
-
type: vue.PropType<"none" | "block" | "close" | ((data: ScrollStrategyData, props: StrategyProps$1) => void) | "reposition">;
|
368
|
+
type: vue.PropType<"none" | "block" | "close" | ((data: ScrollStrategyData, props: StrategyProps$1, scope: vue.EffectScope) => void) | "reposition">;
|
346
369
|
default: string;
|
347
370
|
validator: (val: any) => boolean;
|
348
371
|
}, "type" | "default"> & {
|
349
|
-
type: vue.PropType<"none" | "block" | "close" | ((data: ScrollStrategyData, props: StrategyProps$1) => void) | "reposition">;
|
350
|
-
default: "none" | "block" | "close" | ((data: ScrollStrategyData, props: StrategyProps$1) => void) | "reposition";
|
372
|
+
type: vue.PropType<"none" | "block" | "close" | ((data: ScrollStrategyData, props: StrategyProps$1, scope: vue.EffectScope) => void) | "reposition">;
|
373
|
+
default: "none" | "block" | "close" | ((data: ScrollStrategyData, props: StrategyProps$1, scope: vue.EffectScope) => void) | "reposition";
|
351
374
|
};
|
352
375
|
closeOnBack: {
|
353
376
|
type: BooleanConstructor;
|
@@ -392,7 +415,7 @@ declare const VMenu: {
|
|
392
415
|
locationStrategy: "connected" | "static" | ((data: LocationStrategyData, props: StrategyProps, contentStyles: vue.Ref<Record<string, string>>) => {
|
393
416
|
updateLocation: (e: Event) => void;
|
394
417
|
} | undefined);
|
395
|
-
scrollStrategy: "none" | "block" | "close" | ((data: ScrollStrategyData, props: StrategyProps$1) => void) | "reposition";
|
418
|
+
scrollStrategy: "none" | "block" | "close" | ((data: ScrollStrategyData, props: StrategyProps$1, scope: vue.EffectScope) => void) | "reposition";
|
396
419
|
closeOnBack: boolean;
|
397
420
|
contained: boolean;
|
398
421
|
noClickAnimation: boolean;
|
@@ -409,7 +432,7 @@ declare const VMenu: {
|
|
409
432
|
};
|
410
433
|
theme: StringConstructor;
|
411
434
|
scrollStrategy: {
|
412
|
-
type: vue.PropType<"none" | "block" | "close" | ((data: ScrollStrategyData, props: StrategyProps$1) => void) | "reposition">;
|
435
|
+
type: vue.PropType<"none" | "block" | "close" | ((data: ScrollStrategyData, props: StrategyProps$1, scope: vue.EffectScope) => void) | "reposition">;
|
413
436
|
default: string;
|
414
437
|
validator: (val: any) => boolean;
|
415
438
|
};
|
@@ -503,7 +526,7 @@ declare const VMenu: {
|
|
503
526
|
};
|
504
527
|
theme: StringConstructor;
|
505
528
|
scrollStrategy: {
|
506
|
-
type: vue.PropType<"none" | "block" | "close" | ((data: ScrollStrategyData, props: StrategyProps$1) => void) | "reposition">;
|
529
|
+
type: vue.PropType<"none" | "block" | "close" | ((data: ScrollStrategyData, props: StrategyProps$1, scope: vue.EffectScope) => void) | "reposition">;
|
507
530
|
default: string;
|
508
531
|
validator: (val: any) => boolean;
|
509
532
|
};
|
@@ -603,7 +626,7 @@ declare const VMenu: {
|
|
603
626
|
locationStrategy: "connected" | "static" | ((data: LocationStrategyData, props: StrategyProps, contentStyles: vue.Ref<Record<string, string>>) => {
|
604
627
|
updateLocation: (e: Event) => void;
|
605
628
|
} | undefined);
|
606
|
-
scrollStrategy: "none" | "block" | "close" | ((data: ScrollStrategyData, props: StrategyProps$1) => void) | "reposition";
|
629
|
+
scrollStrategy: "none" | "block" | "close" | ((data: ScrollStrategyData, props: StrategyProps$1, scope: vue.EffectScope) => void) | "reposition";
|
607
630
|
closeOnBack: boolean;
|
608
631
|
contained: boolean;
|
609
632
|
noClickAnimation: boolean;
|
@@ -640,7 +663,7 @@ declare const VMenu: {
|
|
640
663
|
};
|
641
664
|
theme: StringConstructor;
|
642
665
|
scrollStrategy: {
|
643
|
-
type: vue.PropType<"none" | "block" | "close" | ((data: ScrollStrategyData, props: StrategyProps$1) => void) | "reposition">;
|
666
|
+
type: vue.PropType<"none" | "block" | "close" | ((data: ScrollStrategyData, props: StrategyProps$1, scope: vue.EffectScope) => void) | "reposition">;
|
644
667
|
default: string;
|
645
668
|
validator: (val: any) => boolean;
|
646
669
|
};
|
@@ -774,7 +797,7 @@ declare const VMenu: {
|
|
774
797
|
locationStrategy: "connected" | "static" | ((data: LocationStrategyData, props: StrategyProps, contentStyles: vue.Ref<Record<string, string>>) => {
|
775
798
|
updateLocation: (e: Event) => void;
|
776
799
|
} | undefined);
|
777
|
-
scrollStrategy: "none" | "block" | "close" | ((data: ScrollStrategyData, props: StrategyProps$1) => void) | "reposition";
|
800
|
+
scrollStrategy: "none" | "block" | "close" | ((data: ScrollStrategyData, props: StrategyProps$1, scope: vue.EffectScope) => void) | "reposition";
|
778
801
|
closeOnBack: boolean;
|
779
802
|
contained: boolean;
|
780
803
|
noClickAnimation: boolean;
|
@@ -892,12 +915,12 @@ declare const VMenu: {
|
|
892
915
|
} | undefined);
|
893
916
|
};
|
894
917
|
scrollStrategy: Omit<{
|
895
|
-
type: vue.PropType<"none" | "block" | "close" | ((data: ScrollStrategyData, props: StrategyProps$1) => void) | "reposition">;
|
918
|
+
type: vue.PropType<"none" | "block" | "close" | ((data: ScrollStrategyData, props: StrategyProps$1, scope: vue.EffectScope) => void) | "reposition">;
|
896
919
|
default: string;
|
897
920
|
validator: (val: any) => boolean;
|
898
921
|
}, "type" | "default"> & {
|
899
|
-
type: vue.PropType<"none" | "block" | "close" | ((data: ScrollStrategyData, props: StrategyProps$1) => void) | "reposition">;
|
900
|
-
default: "none" | "block" | "close" | ((data: ScrollStrategyData, props: StrategyProps$1) => void) | "reposition";
|
922
|
+
type: vue.PropType<"none" | "block" | "close" | ((data: ScrollStrategyData, props: StrategyProps$1, scope: vue.EffectScope) => void) | "reposition">;
|
923
|
+
default: "none" | "block" | "close" | ((data: ScrollStrategyData, props: StrategyProps$1, scope: vue.EffectScope) => void) | "reposition";
|
901
924
|
};
|
902
925
|
closeOnBack: {
|
903
926
|
type: BooleanConstructor;
|
@@ -942,7 +965,7 @@ declare const VMenu: {
|
|
942
965
|
locationStrategy: "connected" | "static" | ((data: LocationStrategyData, props: StrategyProps, contentStyles: vue.Ref<Record<string, string>>) => {
|
943
966
|
updateLocation: (e: Event) => void;
|
944
967
|
} | undefined);
|
945
|
-
scrollStrategy: "none" | "block" | "close" | ((data: ScrollStrategyData, props: StrategyProps$1) => void) | "reposition";
|
968
|
+
scrollStrategy: "none" | "block" | "close" | ((data: ScrollStrategyData, props: StrategyProps$1, scope: vue.EffectScope) => void) | "reposition";
|
946
969
|
closeOnBack: boolean;
|
947
970
|
contained: boolean;
|
948
971
|
noClickAnimation: boolean;
|
@@ -959,7 +982,7 @@ declare const VMenu: {
|
|
959
982
|
};
|
960
983
|
theme: StringConstructor;
|
961
984
|
scrollStrategy: {
|
962
|
-
type: vue.PropType<"none" | "block" | "close" | ((data: ScrollStrategyData, props: StrategyProps$1) => void) | "reposition">;
|
985
|
+
type: vue.PropType<"none" | "block" | "close" | ((data: ScrollStrategyData, props: StrategyProps$1, scope: vue.EffectScope) => void) | "reposition">;
|
963
986
|
default: string;
|
964
987
|
validator: (val: any) => boolean;
|
965
988
|
};
|
@@ -1053,7 +1076,7 @@ declare const VMenu: {
|
|
1053
1076
|
};
|
1054
1077
|
theme: StringConstructor;
|
1055
1078
|
scrollStrategy: {
|
1056
|
-
type: vue.PropType<"none" | "block" | "close" | ((data: ScrollStrategyData, props: StrategyProps$1) => void) | "reposition">;
|
1079
|
+
type: vue.PropType<"none" | "block" | "close" | ((data: ScrollStrategyData, props: StrategyProps$1, scope: vue.EffectScope) => void) | "reposition">;
|
1057
1080
|
default: string;
|
1058
1081
|
validator: (val: any) => boolean;
|
1059
1082
|
};
|
@@ -1153,7 +1176,7 @@ declare const VMenu: {
|
|
1153
1176
|
locationStrategy: "connected" | "static" | ((data: LocationStrategyData, props: StrategyProps, contentStyles: vue.Ref<Record<string, string>>) => {
|
1154
1177
|
updateLocation: (e: Event) => void;
|
1155
1178
|
} | undefined);
|
1156
|
-
scrollStrategy: "none" | "block" | "close" | ((data: ScrollStrategyData, props: StrategyProps$1) => void) | "reposition";
|
1179
|
+
scrollStrategy: "none" | "block" | "close" | ((data: ScrollStrategyData, props: StrategyProps$1, scope: vue.EffectScope) => void) | "reposition";
|
1157
1180
|
closeOnBack: boolean;
|
1158
1181
|
contained: boolean;
|
1159
1182
|
noClickAnimation: boolean;
|
@@ -1190,7 +1213,7 @@ declare const VMenu: {
|
|
1190
1213
|
};
|
1191
1214
|
theme: StringConstructor;
|
1192
1215
|
scrollStrategy: {
|
1193
|
-
type: vue.PropType<"none" | "block" | "close" | ((data: ScrollStrategyData, props: StrategyProps$1) => void) | "reposition">;
|
1216
|
+
type: vue.PropType<"none" | "block" | "close" | ((data: ScrollStrategyData, props: StrategyProps$1, scope: vue.EffectScope) => void) | "reposition">;
|
1194
1217
|
default: string;
|
1195
1218
|
validator: (val: any) => boolean;
|
1196
1219
|
};
|
@@ -1392,12 +1415,12 @@ declare const VMenu: {
|
|
1392
1415
|
} | undefined);
|
1393
1416
|
};
|
1394
1417
|
scrollStrategy: Omit<{
|
1395
|
-
type: vue.PropType<"none" | "block" | "close" | ((data: ScrollStrategyData, props: StrategyProps$1) => void) | "reposition">;
|
1418
|
+
type: vue.PropType<"none" | "block" | "close" | ((data: ScrollStrategyData, props: StrategyProps$1, scope: vue.EffectScope) => void) | "reposition">;
|
1396
1419
|
default: string;
|
1397
1420
|
validator: (val: any) => boolean;
|
1398
1421
|
}, "type" | "default"> & {
|
1399
|
-
type: vue.PropType<"none" | "block" | "close" | ((data: ScrollStrategyData, props: StrategyProps$1) => void) | "reposition">;
|
1400
|
-
default: "none" | "block" | "close" | ((data: ScrollStrategyData, props: StrategyProps$1) => void) | "reposition";
|
1422
|
+
type: vue.PropType<"none" | "block" | "close" | ((data: ScrollStrategyData, props: StrategyProps$1, scope: vue.EffectScope) => void) | "reposition">;
|
1423
|
+
default: "none" | "block" | "close" | ((data: ScrollStrategyData, props: StrategyProps$1, scope: vue.EffectScope) => void) | "reposition";
|
1401
1424
|
};
|
1402
1425
|
closeOnBack: {
|
1403
1426
|
type: BooleanConstructor;
|
@@ -1442,7 +1465,7 @@ declare const VMenu: {
|
|
1442
1465
|
locationStrategy: "connected" | "static" | ((data: LocationStrategyData, props: StrategyProps, contentStyles: vue.Ref<Record<string, string>>) => {
|
1443
1466
|
updateLocation: (e: Event) => void;
|
1444
1467
|
} | undefined);
|
1445
|
-
scrollStrategy: "none" | "block" | "close" | ((data: ScrollStrategyData, props: StrategyProps$1) => void) | "reposition";
|
1468
|
+
scrollStrategy: "none" | "block" | "close" | ((data: ScrollStrategyData, props: StrategyProps$1, scope: vue.EffectScope) => void) | "reposition";
|
1446
1469
|
closeOnBack: boolean;
|
1447
1470
|
contained: boolean;
|
1448
1471
|
noClickAnimation: boolean;
|
@@ -1459,7 +1482,7 @@ declare const VMenu: {
|
|
1459
1482
|
};
|
1460
1483
|
theme: StringConstructor;
|
1461
1484
|
scrollStrategy: {
|
1462
|
-
type: vue.PropType<"none" | "block" | "close" | ((data: ScrollStrategyData, props: StrategyProps$1) => void) | "reposition">;
|
1485
|
+
type: vue.PropType<"none" | "block" | "close" | ((data: ScrollStrategyData, props: StrategyProps$1, scope: vue.EffectScope) => void) | "reposition">;
|
1463
1486
|
default: string;
|
1464
1487
|
validator: (val: any) => boolean;
|
1465
1488
|
};
|
@@ -1553,7 +1576,7 @@ declare const VMenu: {
|
|
1553
1576
|
};
|
1554
1577
|
theme: StringConstructor;
|
1555
1578
|
scrollStrategy: {
|
1556
|
-
type: vue.PropType<"none" | "block" | "close" | ((data: ScrollStrategyData, props: StrategyProps$1) => void) | "reposition">;
|
1579
|
+
type: vue.PropType<"none" | "block" | "close" | ((data: ScrollStrategyData, props: StrategyProps$1, scope: vue.EffectScope) => void) | "reposition">;
|
1557
1580
|
default: string;
|
1558
1581
|
validator: (val: any) => boolean;
|
1559
1582
|
};
|
@@ -1653,7 +1676,7 @@ declare const VMenu: {
|
|
1653
1676
|
locationStrategy: "connected" | "static" | ((data: LocationStrategyData, props: StrategyProps, contentStyles: vue.Ref<Record<string, string>>) => {
|
1654
1677
|
updateLocation: (e: Event) => void;
|
1655
1678
|
} | undefined);
|
1656
|
-
scrollStrategy: "none" | "block" | "close" | ((data: ScrollStrategyData, props: StrategyProps$1) => void) | "reposition";
|
1679
|
+
scrollStrategy: "none" | "block" | "close" | ((data: ScrollStrategyData, props: StrategyProps$1, scope: vue.EffectScope) => void) | "reposition";
|
1657
1680
|
closeOnBack: boolean;
|
1658
1681
|
contained: boolean;
|
1659
1682
|
noClickAnimation: boolean;
|
@@ -1690,7 +1713,7 @@ declare const VMenu: {
|
|
1690
1713
|
};
|
1691
1714
|
theme: StringConstructor;
|
1692
1715
|
scrollStrategy: {
|
1693
|
-
type: vue.PropType<"none" | "block" | "close" | ((data: ScrollStrategyData, props: StrategyProps$1) => void) | "reposition">;
|
1716
|
+
type: vue.PropType<"none" | "block" | "close" | ((data: ScrollStrategyData, props: StrategyProps$1, scope: vue.EffectScope) => void) | "reposition">;
|
1694
1717
|
default: string;
|
1695
1718
|
validator: (val: any) => boolean;
|
1696
1719
|
};
|
@@ -1824,7 +1847,7 @@ declare const VMenu: {
|
|
1824
1847
|
locationStrategy: "connected" | "static" | ((data: LocationStrategyData, props: StrategyProps, contentStyles: vue.Ref<Record<string, string>>) => {
|
1825
1848
|
updateLocation: (e: Event) => void;
|
1826
1849
|
} | undefined);
|
1827
|
-
scrollStrategy: "none" | "block" | "close" | ((data: ScrollStrategyData, props: StrategyProps$1) => void) | "reposition";
|
1850
|
+
scrollStrategy: "none" | "block" | "close" | ((data: ScrollStrategyData, props: StrategyProps$1, scope: vue.EffectScope) => void) | "reposition";
|
1828
1851
|
closeOnBack: boolean;
|
1829
1852
|
contained: boolean;
|
1830
1853
|
noClickAnimation: boolean;
|
@@ -20,7 +20,7 @@ import { useSticky } from "./sticky.mjs";
|
|
20
20
|
import { useTouch } from "./touch.mjs"; // Utilities
|
21
21
|
import { computed, nextTick, onBeforeMount, ref, toRef, Transition, watch } from 'vue';
|
22
22
|
import { convertToUnit, defineComponent, toPhysical, useRender } from "../../util/index.mjs"; // Types
|
23
|
-
const locations = ['start', 'end', 'left', 'right', 'bottom'];
|
23
|
+
const locations = ['start', 'end', 'left', 'right', 'top', 'bottom'];
|
24
24
|
export const VNavigationDrawer = defineComponent({
|
25
25
|
name: 'VNavigationDrawer',
|
26
26
|
props: {
|