@vuetify/nightly 3.0.0-beta.10 → 3.0.0-beta.13
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 +13 -2
- package/dist/json/attributes.json +37 -29
- package/dist/json/importMap.json +46 -46
- package/dist/json/tags.json +10 -8
- package/dist/json/web-types.json +101 -87
- package/dist/vuetify.css +545 -441
- package/dist/vuetify.d.ts +12095 -10059
- package/dist/vuetify.esm.js +401 -266
- package/dist/vuetify.esm.js.map +1 -1
- package/dist/vuetify.js +371 -236
- package/dist/vuetify.js.map +1 -1
- package/dist/vuetify.min.css +3 -3
- package/dist/vuetify.min.js +496 -490
- package/dist/vuetify.min.js.map +1 -1
- package/lib/blueprints/index.d.ts +171 -0
- package/lib/blueprints/md1.d.ts +167 -0
- package/lib/blueprints/md2.d.ts +167 -0
- package/lib/blueprints/md3.d.ts +167 -0
- package/lib/components/VAlert/index.d.ts +185 -0
- package/lib/components/VApp/index.d.ts +83 -0
- package/lib/components/VAppBar/VAppBar.css +3 -0
- package/lib/components/VAppBar/VAppBar.sass +3 -0
- package/lib/components/VAppBar/index.d.ts +156 -0
- package/lib/components/VAutocomplete/VAutocomplete.mjs +1 -1
- package/lib/components/VAutocomplete/VAutocomplete.mjs.map +1 -1
- package/lib/components/VAutocomplete/index.d.ts +1569 -0
- package/lib/components/VAvatar/VAvatar.css +44 -2
- package/lib/components/VAvatar/VAvatar.mjs +16 -12
- package/lib/components/VAvatar/VAvatar.mjs.map +1 -1
- package/lib/components/VAvatar/VAvatar.sass +5 -1
- package/lib/components/VAvatar/_variables.scss +9 -4
- package/lib/components/VAvatar/index.d.ts +80 -0
- package/lib/components/VBadge/index.d.ts +123 -0
- package/lib/components/VBanner/index.d.ts +122 -0
- package/lib/components/VBottomNavigation/index.d.ts +143 -0
- package/lib/components/VBreadcrumbs/VBreadcrumbsItem.mjs +2 -2
- package/lib/components/VBreadcrumbs/VBreadcrumbsItem.mjs.map +1 -1
- package/lib/components/VBreadcrumbs/index.d.ts +301 -0
- package/lib/components/VBtn/VBtn.css +8 -3
- package/lib/components/VBtn/VBtn.mjs +16 -6
- package/lib/components/VBtn/VBtn.mjs.map +1 -1
- package/lib/components/VBtn/index.d.ts +210 -0
- package/lib/components/VBtnGroup/index.d.ts +65 -0
- package/lib/components/VBtnToggle/VBtnToggle.mjs +1 -3
- package/lib/components/VBtnToggle/VBtnToggle.mjs.map +1 -1
- package/lib/components/VBtnToggle/index.d.ts +175 -0
- package/lib/components/VCard/VCard.css +8 -3
- package/lib/components/VCard/index.d.ts +230 -0
- package/lib/components/VCarousel/VCarousel.mjs +3 -3
- package/lib/components/VCarousel/VCarousel.mjs.map +1 -1
- package/lib/components/VCarousel/index.d.ts +80 -0
- package/lib/components/VCheckbox/index.d.ts +291 -0
- package/lib/components/VChip/index.d.ts +195 -0
- package/lib/components/VChipGroup/index.d.ts +89 -0
- package/lib/components/VCode/index.d.ts +19 -0
- package/lib/components/VColorPicker/index.d.ts +116 -0
- package/lib/components/VCombobox/VCombobox.mjs +1 -1
- package/lib/components/VCombobox/VCombobox.mjs.map +1 -1
- package/lib/components/VCombobox/index.d.ts +1590 -0
- package/lib/components/VCounter/index.d.ts +223 -0
- package/lib/components/VDefaultsProvider/index.d.ts +26 -0
- package/lib/components/VDialog/VDialog.css +2 -0
- package/lib/components/VDialog/VDialog.mjs +17 -12
- package/lib/components/VDialog/VDialog.mjs.map +1 -1
- package/lib/components/VDialog/VDialog.sass +2 -0
- package/lib/components/VDialog/index.d.ts +859 -0
- package/lib/components/VDivider/index.d.ts +22 -0
- package/lib/components/VExpansionPanel/VExpansionPanel.css +8 -3
- package/lib/components/VExpansionPanel/index.d.ts +206 -0
- package/lib/components/VField/VField.css +27 -24
- package/lib/components/VField/VField.mjs +1 -1
- package/lib/components/VField/VField.mjs.map +1 -1
- package/lib/components/VField/VField.sass +23 -21
- package/lib/components/VField/index.d.ts +332 -0
- package/lib/components/VFileInput/VFileInput.mjs +3 -3
- package/lib/components/VFileInput/VFileInput.mjs.map +1 -1
- package/lib/components/VFileInput/index.d.ts +236 -0
- package/lib/components/VFooter/VFooter.css +7 -0
- package/lib/components/VFooter/VFooter.sass +1 -1
- package/lib/components/VFooter/_variables.scss +11 -0
- package/lib/components/VFooter/index.d.ts +76 -0
- package/lib/components/VForm/index.d.ts +72 -0
- package/lib/components/VGrid/index.d.ts +154 -0
- package/lib/components/VHover/index.d.ts +30 -0
- package/lib/components/VIcon/index.d.ts +124 -0
- package/lib/components/VImg/VImg.mjs +29 -27
- package/lib/components/VImg/VImg.mjs.map +1 -1
- package/lib/components/VImg/index.d.ts +89 -0
- package/lib/components/VInput/VInput.mjs +4 -4
- package/lib/components/VInput/VInput.mjs.map +1 -1
- package/lib/components/VInput/index.d.ts +325 -0
- package/lib/components/VItemGroup/index.d.ts +210 -0
- package/lib/components/VKbd/index.d.ts +19 -0
- package/lib/components/VLabel/VLabel.css +4 -1
- package/lib/components/VLabel/VLabel.mjs +4 -1
- package/lib/components/VLabel/VLabel.mjs.map +1 -1
- package/lib/components/VLabel/VLabel.sass +3 -1
- package/lib/components/VLabel/index.d.ts +16 -0
- package/lib/components/VLayout/index.d.ts +75 -0
- package/lib/components/VLazy/index.d.ts +85 -0
- package/lib/components/VList/VListItem.css +8 -3
- package/lib/components/VList/VListItem.mjs +4 -4
- package/lib/components/VList/VListItem.mjs.map +1 -1
- package/lib/components/VList/index.d.ts +1250 -0
- package/lib/components/VLocaleProvider/index.d.ts +23 -0
- package/lib/components/VMain/index.d.ts +26 -0
- package/lib/components/VMenu/VMenu.mjs +16 -3
- package/lib/components/VMenu/VMenu.mjs.map +1 -1
- package/lib/components/VMenu/index.d.ts +817 -0
- package/lib/components/VMessages/index.d.ts +234 -0
- package/lib/components/VNavigationDrawer/index.d.ts +148 -0
- package/lib/components/VNoSsr/index.d.ts +7 -0
- package/lib/components/VOverlay/VOverlay.mjs +4 -3
- package/lib/components/VOverlay/VOverlay.mjs.map +1 -1
- package/lib/components/VOverlay/index.d.ts +579 -0
- package/lib/components/VOverlay/useActivator.mjs +27 -1
- package/lib/components/VOverlay/useActivator.mjs.map +1 -1
- package/lib/components/VPagination/VPagination.mjs +6 -3
- package/lib/components/VPagination/VPagination.mjs.map +1 -1
- package/lib/components/VPagination/index.d.ts +247 -0
- package/lib/components/VParallax/VParallax.mjs +24 -10
- package/lib/components/VParallax/VParallax.mjs.map +1 -1
- package/lib/components/VParallax/index.d.ts +18 -0
- package/lib/components/VProgressCircular/index.d.ts +68 -0
- package/lib/components/VProgressLinear/index.d.ts +101 -0
- package/lib/components/VRadio/index.d.ts +103 -0
- package/lib/components/VRadioGroup/VRadioGroup.css +2 -3
- package/lib/components/VRadioGroup/VRadioGroup.mjs +2 -1
- package/lib/components/VRadioGroup/VRadioGroup.mjs.map +1 -1
- package/lib/components/VRadioGroup/VRadioGroup.sass +2 -2
- package/lib/components/VRadioGroup/_variables.scss +0 -1
- package/lib/components/VRadioGroup/index.d.ts +186 -0
- package/lib/components/VRangeSlider/VRangeSlider.mjs +12 -2
- package/lib/components/VRangeSlider/VRangeSlider.mjs.map +1 -1
- package/lib/components/VRangeSlider/index.d.ts +242 -0
- package/lib/components/VRating/index.d.ts +356 -0
- package/lib/components/VResponsive/index.d.ts +23 -0
- package/lib/components/VSelect/VSelect.mjs +1 -1
- package/lib/components/VSelect/VSelect.mjs.map +1 -1
- package/lib/components/VSelect/index.d.ts +1521 -0
- package/lib/components/VSelectionControl/VSelectionControl.mjs +2 -1
- package/lib/components/VSelectionControl/VSelectionControl.mjs.map +1 -1
- package/lib/components/VSelectionControl/index.d.ts +275 -0
- package/lib/components/VSelectionControlGroup/VSelectionControlGroup.css +5 -0
- package/lib/components/VSelectionControlGroup/VSelectionControlGroup.mjs +3 -1
- package/lib/components/VSelectionControlGroup/VSelectionControlGroup.mjs.map +1 -1
- package/lib/components/VSelectionControlGroup/VSelectionControlGroup.sass +5 -0
- package/lib/components/VSelectionControlGroup/index.d.ts +47 -0
- package/lib/components/VSheet/index.d.ts +68 -0
- package/lib/components/VSlideGroup/index.d.ts +151 -0
- package/lib/components/VSlider/VSlider.css +7 -2
- package/lib/components/VSlider/VSlider.mjs +14 -4
- package/lib/components/VSlider/VSlider.mjs.map +1 -1
- package/lib/components/VSlider/VSlider.sass +6 -2
- package/lib/components/VSlider/VSliderTrack.css +20 -20
- package/lib/components/VSlider/VSliderTrack.mjs +7 -3
- package/lib/components/VSlider/VSliderTrack.mjs.map +1 -1
- package/lib/components/VSlider/VSliderTrack.sass +14 -14
- package/lib/components/VSlider/_variables.scss +2 -2
- package/lib/components/VSlider/index.d.ts +239 -0
- package/lib/components/VSlider/slider.mjs +2 -2
- package/lib/components/VSlider/slider.mjs.map +1 -1
- package/lib/components/VSnackbar/VSnackbar.mjs +3 -2
- package/lib/components/VSnackbar/VSnackbar.mjs.map +1 -1
- package/lib/components/VSnackbar/index.d.ts +892 -0
- package/lib/components/VSwitch/index.d.ts +175 -0
- package/lib/components/VSystemBar/index.d.ts +61 -0
- package/lib/components/VTable/index.d.ts +39 -0
- package/lib/components/VTabs/VTab.mjs +1 -0
- package/lib/components/VTabs/VTab.mjs.map +1 -1
- package/lib/components/VTabs/index.d.ts +178 -0
- package/lib/components/VTextField/VTextField.css +2 -3
- package/lib/components/VTextField/VTextField.sass +2 -4
- package/lib/components/VTextField/index.d.ts +582 -0
- package/lib/components/VTextarea/VTextarea.css +5 -3
- package/lib/components/VTextarea/VTextarea.mjs +2 -1
- package/lib/components/VTextarea/VTextarea.mjs.map +1 -1
- package/lib/components/VTextarea/VTextarea.sass +5 -4
- package/lib/components/VTextarea/index.d.ts +218 -0
- package/lib/components/VThemeProvider/index.d.ts +24 -0
- package/lib/components/VTimeline/VTimeline.css +21 -6
- package/lib/components/VTimeline/VTimeline.mjs +6 -1
- package/lib/components/VTimeline/VTimeline.mjs.map +1 -1
- package/lib/components/VTimeline/VTimeline.sass +16 -2
- package/lib/components/VTimeline/_variables.scss +4 -3
- package/lib/components/VTimeline/index.d.ts +154 -0
- package/lib/components/VToolbar/VToolbar.css +0 -1
- package/lib/components/VToolbar/VToolbar.sass +0 -1
- package/lib/components/VToolbar/index.d.ts +414 -0
- package/lib/components/VTooltip/VTooltip.mjs.map +1 -1
- package/lib/components/VTooltip/index.d.ts +799 -0
- package/lib/components/VValidation/index.d.ts +61 -0
- package/lib/components/VWindow/index.d.ts +428 -0
- package/lib/components/index.d.ts +12037 -10009
- package/lib/components/transitions/index.d.ts +454 -0
- package/lib/composables/display.mjs +3 -3
- package/lib/composables/display.mjs.map +1 -1
- package/lib/composables/items.mjs.map +1 -1
- package/lib/composables/locale.mjs +10 -3
- package/lib/composables/locale.mjs.map +1 -1
- package/lib/composables/proxiedModel.mjs +28 -10
- package/lib/composables/proxiedModel.mjs.map +1 -1
- package/lib/composables/router.mjs +10 -2
- package/lib/composables/router.mjs.map +1 -1
- package/lib/composables/selectLink.mjs +4 -4
- package/lib/composables/selectLink.mjs.map +1 -1
- package/lib/composables/theme.mjs +37 -33
- package/lib/composables/theme.mjs.map +1 -1
- package/lib/composables/validation.mjs +1 -1
- package/lib/composables/validation.mjs.map +1 -1
- package/lib/entry-bundler.mjs +1 -1
- package/lib/framework.mjs +46 -51
- package/lib/framework.mjs.map +1 -1
- package/lib/index.d.ts +31 -22
- package/lib/locale/adapters/vue-i18n.d.ts +35 -0
- package/lib/locale/adapters/vue-intl.d.ts +42 -0
- package/lib/styles/main.css +73 -73
- package/lib/styles/settings/_colors.scss +84 -84
- package/lib/styles/tools/_states.sass +8 -3
- package/lib/util/getCurrentInstance.mjs +2 -3
- package/lib/util/getCurrentInstance.mjs.map +1 -1
- package/lib/util/helpers.mjs +6 -11
- package/lib/util/helpers.mjs.map +1 -1
- package/package.json +4 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useActivator.mjs","names":["makeDelayProps","useDelay","VMenuSymbol","getCurrentInstance","IN_BROWSER","isComponentInstance","propsFactory","SUPPORTS_FOCUS_VISIBLE","computed","effectScope","inject","nextTick","onScopeDispose","ref","watch","watchEffect","makeActivatorProps","activator","String","Object","activatorProps","type","default","openOnClick","Boolean","undefined","openOnHover","openOnFocus","closeOnContentClick","useActivator","props","isActive","isTop","activatorEl","isHovered","isFocused","value","runOpenDelay","runCloseDelay","availableEvents","click","e","stopPropagation","currentTarget","target","mouseenter","mouseleave","focus","matches","blur","activatorEvents","events","contentEvents","menu","closeParents","val","activatorRef","$el","vm","scope","run","_useActivator","stop","flush","immediate","oldVal","getActivator","unbindActivatorProps","bindActivatorProps","el","_props","entries","forEach","name","cb","addEventListener","keys","k","removeAttribute","setAttribute","removeEventListener","selector","proxy","parentNode","hasAttribute","document","querySelector","nodeType","Node","ELEMENT_NODE"],"sources":["../../../src/components/VOverlay/useActivator.tsx"],"sourcesContent":["// Composables\nimport { makeDelayProps, useDelay } from '@/composables/delay'\nimport { VMenuSymbol } from '@/components/VMenu/shared'\n\n// Utilities\nimport { getCurrentInstance, IN_BROWSER, isComponentInstance, propsFactory, SUPPORTS_FOCUS_VISIBLE } from '@/util'\nimport {\n computed,\n effectScope,\n inject,\n nextTick,\n onScopeDispose,\n ref,\n watch,\n watchEffect,\n} from 'vue'\n\n// Types\nimport type { DelayProps } from '@/composables/delay'\nimport type {\n ComponentInternalInstance,\n ComponentPublicInstance,\n EffectScope,\n PropType,\n Ref,\n} from 'vue'\n\ninterface ActivatorProps extends DelayProps {\n activator?: 'parent' | string | Element | ComponentPublicInstance\n activatorProps: Record<string, any>\n\n openOnClick: boolean | undefined\n openOnHover: boolean\n openOnFocus: boolean | undefined\n\n closeOnContentClick: boolean\n}\n\nexport const makeActivatorProps = propsFactory({\n activator: [String, Object] as PropType<ActivatorProps['activator']>,\n activatorProps: {\n type: Object as PropType<ActivatorProps['activatorProps']>,\n default: () => ({}),\n },\n\n openOnClick: {\n type: Boolean,\n default: undefined,\n },\n openOnHover: Boolean,\n openOnFocus: {\n type: Boolean,\n default: undefined,\n },\n\n closeOnContentClick: Boolean,\n\n ...makeDelayProps(),\n})\n\nexport function useActivator (\n props: ActivatorProps,\n { isActive, isTop }: { isActive: Ref<boolean>, isTop: Ref<boolean> }\n) {\n const activatorEl = ref<HTMLElement>()\n\n let isHovered = false\n let isFocused = false\n\n const openOnFocus = computed(() => props.openOnFocus || (props.openOnFocus == null && props.openOnHover))\n const openOnClick = computed(() => props.openOnClick || (props.openOnClick == null && !props.openOnHover && !openOnFocus.value))\n\n const { runOpenDelay, runCloseDelay } = useDelay(props, value => {\n if (\n value === (\n (props.openOnHover && isHovered) ||\n (openOnFocus.value && isFocused)\n ) && !(props.openOnHover && isActive.value && !isTop.value)\n ) {\n isActive.value = value\n }\n })\n\n const availableEvents = {\n click: (e: MouseEvent) => {\n e.stopPropagation()\n activatorEl.value = (e.currentTarget || e.target) as HTMLElement\n isActive.value = !isActive.value\n },\n mouseenter: (e: MouseEvent) => {\n isHovered = true\n activatorEl.value = (e.currentTarget || e.target) as HTMLElement\n runOpenDelay()\n },\n mouseleave: (e: MouseEvent) => {\n isHovered = false\n runCloseDelay()\n },\n focus: (e: FocusEvent) => {\n if (\n SUPPORTS_FOCUS_VISIBLE &&\n !(e.target as HTMLElement).matches(':focus-visible')\n ) return\n\n isFocused = true\n e.stopPropagation()\n activatorEl.value = (e.currentTarget || e.target) as HTMLElement\n\n runOpenDelay()\n },\n blur: (e: FocusEvent) => {\n isFocused = false\n e.stopPropagation()\n\n runCloseDelay()\n },\n }\n\n const activatorEvents = computed(() => {\n const events: Partial<typeof availableEvents> = {}\n\n if (openOnClick.value) {\n events.click = availableEvents.click\n }\n if (props.openOnHover) {\n events.mouseenter = availableEvents.mouseenter\n events.mouseleave = availableEvents.mouseleave\n }\n if (openOnFocus.value) {\n events.focus = availableEvents.focus\n events.blur = availableEvents.blur\n }\n\n return events\n })\n\n const contentEvents = computed(() => {\n const events: Partial<typeof availableEvents> = {}\n\n if (props.openOnHover) {\n events.mouseenter = () => {\n isHovered = true\n runOpenDelay()\n }\n events.mouseleave = () => {\n isHovered = false\n runCloseDelay()\n }\n }\n\n if (props.closeOnContentClick) {\n const menu = inject(VMenuSymbol, null)\n events.click = () => {\n isActive.value = false\n menu?.closeParents()\n }\n }\n\n return events\n })\n\n watch(isTop, val => {\n if (val && (\n (props.openOnHover && !isHovered && (!openOnFocus.value || !isFocused)) ||\n (openOnFocus.value && !isFocused && (!props.openOnHover || !isHovered))\n )) {\n isActive.value = false\n }\n })\n\n const activatorRef = ref()\n watchEffect(() => {\n if (!activatorRef.value) return\n\n nextTick(() => {\n const activator = activatorRef.value\n activatorEl.value = isComponentInstance(activator) ? activator.$el : activator\n })\n })\n\n const vm = getCurrentInstance('useActivator')\n let scope: EffectScope\n watch(() => !!props.activator, val => {\n if (val && IN_BROWSER) {\n scope = effectScope()\n scope.run(() => {\n _useActivator(props, vm, { activatorEl, activatorEvents })\n })\n } else if (scope) {\n scope.stop()\n }\n }, { flush: 'post', immediate: true })\n\n return { activatorEl, activatorRef, activatorEvents, contentEvents }\n}\n\nfunction _useActivator (\n props: ActivatorProps,\n vm: ComponentInternalInstance,\n { activatorEl, activatorEvents }: Pick<ReturnType<typeof useActivator>, 'activatorEl' | 'activatorEvents'>\n) {\n watch(() => props.activator, (val, oldVal) => {\n if (oldVal && val !== oldVal) {\n const activator = getActivator(oldVal)\n activator && unbindActivatorProps(activator)\n }\n if (val) {\n nextTick(() => bindActivatorProps())\n }\n }, { immediate: true })\n\n watch(() => props.activatorProps, () => {\n bindActivatorProps()\n })\n\n onScopeDispose(() => {\n unbindActivatorProps()\n })\n\n function bindActivatorProps (el = getActivator(), _props = props.activatorProps) {\n if (!el) return\n\n Object.entries(activatorEvents.value).forEach(([name, cb]) => {\n el.addEventListener(name, cb as (e: Event) => void)\n })\n\n Object.keys(_props).forEach(k => {\n if (_props[k] == null) {\n el.removeAttribute(k)\n } else {\n el.setAttribute(k, _props[k])\n }\n })\n }\n\n function unbindActivatorProps (el = getActivator(), _props = props.activatorProps) {\n if (!el) return\n\n Object.entries(activatorEvents.value).forEach(([name, cb]) => {\n el.removeEventListener(name, cb as (e: Event) => void)\n })\n\n Object.keys(_props).forEach(k => {\n el.removeAttribute(k)\n })\n }\n\n function getActivator (selector = props.activator): HTMLElement | undefined {\n let activator\n if (selector) {\n if (selector === 'parent') {\n let el = vm?.proxy?.$el?.parentNode\n while (el.hasAttribute('data-no-activator')) {\n el = el.parentNode\n }\n activator = el\n } else if (typeof selector === 'string') {\n // Selector\n activator = document.querySelector(selector)\n } else if ('$el' in selector) {\n // Component (ref)\n activator = selector.$el\n } else {\n // HTMLElement | Element\n activator = selector\n }\n }\n\n // The activator should only be a valid element (Ignore comments and text nodes)\n activatorEl.value = activator?.nodeType === Node.ELEMENT_NODE ? activator : null\n\n return activatorEl.value\n }\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"useActivator.mjs","names":["makeDelayProps","useDelay","VMenuSymbol","getCurrentInstance","IN_BROWSER","isComponentInstance","propsFactory","SUPPORTS_FOCUS_VISIBLE","computed","effectScope","inject","nextTick","onScopeDispose","ref","watch","watchEffect","makeActivatorProps","activator","String","Object","activatorProps","type","default","openOnClick","Boolean","undefined","openOnHover","openOnFocus","closeOnContentClick","useActivator","props","isActive","isTop","activatorEl","isHovered","isFocused","firstEnter","value","runOpenDelay","runCloseDelay","availableEvents","click","e","stopPropagation","currentTarget","target","mouseenter","mouseleave","focus","matches","blur","activatorEvents","events","contentEvents","menu","closeParents","scrimEvents","val","activatorRef","$el","vm","scope","run","_useActivator","stop","flush","immediate","oldVal","getActivator","unbindActivatorProps","bindActivatorProps","el","_props","entries","forEach","name","cb","addEventListener","keys","k","removeAttribute","setAttribute","removeEventListener","selector","proxy","parentNode","hasAttribute","document","querySelector","nodeType","Node","ELEMENT_NODE"],"sources":["../../../src/components/VOverlay/useActivator.tsx"],"sourcesContent":["// Composables\nimport { makeDelayProps, useDelay } from '@/composables/delay'\nimport { VMenuSymbol } from '@/components/VMenu/shared'\n\n// Utilities\nimport { getCurrentInstance, IN_BROWSER, isComponentInstance, propsFactory, SUPPORTS_FOCUS_VISIBLE } from '@/util'\nimport {\n computed,\n effectScope,\n inject,\n nextTick,\n onScopeDispose,\n ref,\n watch,\n watchEffect,\n} from 'vue'\n\n// Types\nimport type { DelayProps } from '@/composables/delay'\nimport type {\n ComponentInternalInstance,\n ComponentPublicInstance,\n EffectScope,\n PropType,\n Ref,\n} from 'vue'\n\ninterface ActivatorProps extends DelayProps {\n activator?: 'parent' | string | Element | ComponentPublicInstance\n activatorProps: Record<string, any>\n\n openOnClick: boolean | undefined\n openOnHover: boolean\n openOnFocus: boolean | undefined\n\n closeOnContentClick: boolean\n}\n\nexport const makeActivatorProps = propsFactory({\n activator: [String, Object] as PropType<ActivatorProps['activator']>,\n activatorProps: {\n type: Object as PropType<ActivatorProps['activatorProps']>,\n default: () => ({}),\n },\n\n openOnClick: {\n type: Boolean,\n default: undefined,\n },\n openOnHover: Boolean,\n openOnFocus: {\n type: Boolean,\n default: undefined,\n },\n\n closeOnContentClick: Boolean,\n\n ...makeDelayProps(),\n})\n\nexport function useActivator (\n props: ActivatorProps,\n { isActive, isTop }: { isActive: Ref<boolean>, isTop: Ref<boolean> }\n) {\n const activatorEl = ref<HTMLElement>()\n\n let isHovered = false\n let isFocused = false\n let firstEnter = true\n\n const openOnFocus = computed(() => props.openOnFocus || (props.openOnFocus == null && props.openOnHover))\n const openOnClick = computed(() => props.openOnClick || (props.openOnClick == null && !props.openOnHover && !openOnFocus.value))\n\n const { runOpenDelay, runCloseDelay } = useDelay(props, value => {\n if (\n value === (\n (props.openOnHover && isHovered) ||\n (openOnFocus.value && isFocused)\n ) && !(props.openOnHover && isActive.value && !isTop.value)\n ) {\n if (isActive.value !== value) {\n firstEnter = true\n }\n isActive.value = value\n }\n })\n\n const availableEvents = {\n click: (e: MouseEvent) => {\n e.stopPropagation()\n activatorEl.value = (e.currentTarget || e.target) as HTMLElement\n isActive.value = !isActive.value\n },\n mouseenter: (e: MouseEvent) => {\n isHovered = true\n activatorEl.value = (e.currentTarget || e.target) as HTMLElement\n runOpenDelay()\n },\n mouseleave: (e: MouseEvent) => {\n isHovered = false\n runCloseDelay()\n },\n focus: (e: FocusEvent) => {\n if (\n SUPPORTS_FOCUS_VISIBLE &&\n !(e.target as HTMLElement).matches(':focus-visible')\n ) return\n\n isFocused = true\n e.stopPropagation()\n activatorEl.value = (e.currentTarget || e.target) as HTMLElement\n\n runOpenDelay()\n },\n blur: (e: FocusEvent) => {\n isFocused = false\n e.stopPropagation()\n\n runCloseDelay()\n },\n }\n\n const activatorEvents = computed(() => {\n const events: Partial<typeof availableEvents> = {}\n\n if (openOnClick.value) {\n events.click = availableEvents.click\n }\n if (props.openOnHover) {\n events.mouseenter = availableEvents.mouseenter\n events.mouseleave = availableEvents.mouseleave\n }\n if (openOnFocus.value) {\n events.focus = availableEvents.focus\n events.blur = availableEvents.blur\n }\n\n return events\n })\n\n const contentEvents = computed(() => {\n const events: Partial<typeof availableEvents> = {}\n\n if (props.openOnHover) {\n events.mouseenter = () => {\n isHovered = true\n runOpenDelay()\n }\n events.mouseleave = () => {\n isHovered = false\n runCloseDelay()\n }\n }\n\n if (props.closeOnContentClick) {\n const menu = inject(VMenuSymbol, null)\n events.click = () => {\n isActive.value = false\n menu?.closeParents()\n }\n }\n\n return events\n })\n\n const scrimEvents = computed(() => {\n const events: Partial<typeof availableEvents> = {}\n if (props.openOnHover) {\n events.mouseenter = () => {\n if (firstEnter) {\n isHovered = true\n firstEnter = false\n runOpenDelay()\n }\n }\n events.mouseleave = () => {\n isHovered = false\n runCloseDelay()\n }\n }\n\n return events\n })\n\n watch(isTop, val => {\n if (val && (\n (props.openOnHover && !isHovered && (!openOnFocus.value || !isFocused)) ||\n (openOnFocus.value && !isFocused && (!props.openOnHover || !isHovered))\n )) {\n isActive.value = false\n }\n })\n\n const activatorRef = ref()\n watchEffect(() => {\n if (!activatorRef.value) return\n\n nextTick(() => {\n const activator = activatorRef.value\n activatorEl.value = isComponentInstance(activator) ? activator.$el : activator\n })\n })\n\n const vm = getCurrentInstance('useActivator')\n let scope: EffectScope\n watch(() => !!props.activator, val => {\n if (val && IN_BROWSER) {\n scope = effectScope()\n scope.run(() => {\n _useActivator(props, vm, { activatorEl, activatorEvents })\n })\n } else if (scope) {\n scope.stop()\n }\n }, { flush: 'post', immediate: true })\n\n return { activatorEl, activatorRef, activatorEvents, contentEvents, scrimEvents }\n}\n\nfunction _useActivator (\n props: ActivatorProps,\n vm: ComponentInternalInstance,\n { activatorEl, activatorEvents }: Pick<ReturnType<typeof useActivator>, 'activatorEl' | 'activatorEvents'>\n) {\n watch(() => props.activator, (val, oldVal) => {\n if (oldVal && val !== oldVal) {\n const activator = getActivator(oldVal)\n activator && unbindActivatorProps(activator)\n }\n if (val) {\n nextTick(() => bindActivatorProps())\n }\n }, { immediate: true })\n\n watch(() => props.activatorProps, () => {\n bindActivatorProps()\n })\n\n onScopeDispose(() => {\n unbindActivatorProps()\n })\n\n function bindActivatorProps (el = getActivator(), _props = props.activatorProps) {\n if (!el) return\n\n Object.entries(activatorEvents.value).forEach(([name, cb]) => {\n el.addEventListener(name, cb as (e: Event) => void)\n })\n\n Object.keys(_props).forEach(k => {\n if (_props[k] == null) {\n el.removeAttribute(k)\n } else {\n el.setAttribute(k, _props[k])\n }\n })\n }\n\n function unbindActivatorProps (el = getActivator(), _props = props.activatorProps) {\n if (!el) return\n\n Object.entries(activatorEvents.value).forEach(([name, cb]) => {\n el.removeEventListener(name, cb as (e: Event) => void)\n })\n\n Object.keys(_props).forEach(k => {\n el.removeAttribute(k)\n })\n }\n\n function getActivator (selector = props.activator): HTMLElement | undefined {\n let activator\n if (selector) {\n if (selector === 'parent') {\n let el = vm?.proxy?.$el?.parentNode\n while (el.hasAttribute('data-no-activator')) {\n el = el.parentNode\n }\n activator = el\n } else if (typeof selector === 'string') {\n // Selector\n activator = document.querySelector(selector)\n } else if ('$el' in selector) {\n // Component (ref)\n activator = selector.$el\n } else {\n // HTMLElement | Element\n activator = selector\n }\n }\n\n // The activator should only be a valid element (Ignore comments and text nodes)\n activatorEl.value = activator?.nodeType === Node.ELEMENT_NODE ? activator : null\n\n return activatorEl.value\n }\n}\n"],"mappings":"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"}
|
|
@@ -143,9 +143,10 @@ export const VPagination = defineComponent({
|
|
|
143
143
|
const firstItem = target.querySelector('.v-pagination__list > *');
|
|
144
144
|
if (!firstItem) return;
|
|
145
145
|
const totalWidth = contentRect.width;
|
|
146
|
-
const itemWidth = firstItem.
|
|
146
|
+
const itemWidth = firstItem.offsetWidth + parseFloat(getComputedStyle(firstItem).marginRight) * 2;
|
|
147
147
|
const minButtons = props.showFirstLastPage ? 5 : 3;
|
|
148
|
-
maxButtons.value = Math.max(0, Math.floor(
|
|
148
|
+
maxButtons.value = Math.max(0, Math.floor( // Round to two decimal places to avoid floating point errors
|
|
149
|
+
+((totalWidth - itemWidth * minButtons) / itemWidth).toFixed(2)));
|
|
149
150
|
});
|
|
150
151
|
const length = computed(() => parseInt(props.length, 10));
|
|
151
152
|
const start = computed(() => parseInt(props.start, 10));
|
|
@@ -205,6 +206,7 @@ export const VPagination = defineComponent({
|
|
|
205
206
|
if (typeof item === 'string') {
|
|
206
207
|
return {
|
|
207
208
|
isActive: false,
|
|
209
|
+
key: `ellipsis-${index}`,
|
|
208
210
|
page: item,
|
|
209
211
|
props: {
|
|
210
212
|
ref,
|
|
@@ -217,6 +219,7 @@ export const VPagination = defineComponent({
|
|
|
217
219
|
const isActive = item === page.value;
|
|
218
220
|
return {
|
|
219
221
|
isActive,
|
|
222
|
+
key: item,
|
|
220
223
|
page: n(item),
|
|
221
224
|
props: {
|
|
222
225
|
ref,
|
|
@@ -309,7 +312,7 @@ export const VPagination = defineComponent({
|
|
|
309
312
|
}, [slots.prev ? slots.prev(controls.value.prev) : _createVNode(VBtn, _mergeProps({
|
|
310
313
|
"_as": "VPaginationBtn"
|
|
311
314
|
}, controls.value.prev), null)]), items.value.map((item, index) => _createVNode("li", {
|
|
312
|
-
"key": item.
|
|
315
|
+
"key": item.key,
|
|
313
316
|
"class": ['v-pagination__item', {
|
|
314
317
|
'v-pagination__item--is-active': item.isActive
|
|
315
318
|
}],
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"VPagination.mjs","names":["VBtn","IconValue","makeBorderProps","makeDensityProps","makeElevationProps","makeRoundedProps","makeSizeProps","makeTagProps","makeThemeProps","provideTheme","makeVariantProps","provideDefaults","useLocale","useProxiedModel","useRefs","useResizeObserver","useRtl","computed","nextTick","ref","toRef","createRange","defineComponent","keyValues","useRender","VPagination","name","props","activeColor","String","start","type","Number","default","modelValue","disabled","Boolean","length","validator","val","totalVisible","firstIcon","prevIcon","nextIcon","lastIcon","ariaLabel","pageAriaLabel","currentPageAriaLabel","firstAriaLabel","previousAriaLabel","nextAriaLabel","lastAriaLabel","ellipsis","showFirstLastPage","tag","variant","emits","value","first","prev","next","last","setup","slots","emit","page","t","n","isRtl","themeClasses","maxButtons","undefined","scoped","resizeRef","entries","target","contentRect","firstItem","querySelector","totalWidth","width","itemWidth","getBoundingClientRect","parseFloat","getComputedStyle","marginRight","minButtons","Math","max","floor","parseInt","range","isNaN","MAX_SAFE_INTEGER","even","middle","left","right","rangeLength","rangeStart","ceil","setValue","e","event","preventDefault","refs","updateRef","VPaginationBtn","color","border","density","size","items","map","item","index","isActive","icon","elevation","rounded","ariaCurrent","onClick","controls","prevDisabled","nextDisabled","ariaDisabled","updateFocus","currentIndex","$el","focus","onKeydown","key"],"sources":["../../../src/components/VPagination/VPagination.tsx"],"sourcesContent":["// Styles\nimport './VPagination.sass'\n\n// Components\nimport { VBtn } from '../VBtn'\n\n// Composables\nimport { IconValue } from '@/composables/icons'\nimport { makeBorderProps } from '@/composables/border'\nimport { makeDensityProps } from '@/composables/density'\nimport { makeElevationProps } from '@/composables/elevation'\nimport { makeRoundedProps } from '@/composables/rounded'\nimport { makeSizeProps } from '@/composables/size'\nimport { makeTagProps } from '@/composables/tag'\nimport { makeThemeProps, provideTheme } from '@/composables/theme'\nimport { makeVariantProps } from '@/composables/variant'\nimport { provideDefaults } from '@/composables/defaults'\nimport { useLocale } from '@/composables/locale'\nimport { useProxiedModel } from '@/composables/proxiedModel'\nimport { useRefs } from '@/composables/refs'\nimport { useResizeObserver } from '@/composables/resizeObserver'\nimport { useRtl } from '@/composables/rtl'\n\n// Utilities\nimport { computed, nextTick, ref, toRef } from 'vue'\nimport { createRange, defineComponent, keyValues, useRender } from '@/util'\n\n// Types\nimport type { ComponentPublicInstance } from 'vue'\n\nexport const VPagination = defineComponent({\n name: 'VPagination',\n\n props: {\n activeColor: String,\n start: {\n type: [Number, String],\n default: 1,\n },\n modelValue: {\n type: Number,\n default: (props: any) => props.start,\n },\n disabled: Boolean,\n length: {\n type: [Number, String],\n default: 1,\n validator: (val: number) => val % 1 === 0,\n },\n totalVisible: [Number, String],\n firstIcon: {\n type: IconValue,\n default: '$first',\n },\n prevIcon: {\n type: IconValue,\n default: '$prev',\n },\n nextIcon: {\n type: IconValue,\n default: '$next',\n },\n lastIcon: {\n type: IconValue,\n default: '$last',\n },\n ariaLabel: {\n type: String,\n default: '$vuetify.pagination.ariaLabel.root',\n },\n pageAriaLabel: {\n type: String,\n default: '$vuetify.pagination.ariaLabel.page',\n },\n currentPageAriaLabel: {\n type: String,\n default: '$vuetify.pagination.ariaLabel.currentPage',\n },\n firstAriaLabel: {\n type: String,\n default: '$vuetify.pagination.ariaLabel.first',\n },\n previousAriaLabel: {\n type: String,\n default: '$vuetify.pagination.ariaLabel.previous',\n },\n nextAriaLabel: {\n type: String,\n default: '$vuetify.pagination.ariaLabel.next',\n },\n lastAriaLabel: {\n type: String,\n default: '$vuetify.pagination.ariaLabel.last',\n },\n ellipsis: {\n type: String,\n default: '...',\n },\n showFirstLastPage: Boolean,\n\n ...makeBorderProps(),\n ...makeDensityProps(),\n ...makeElevationProps(),\n ...makeRoundedProps(),\n ...makeSizeProps(),\n ...makeTagProps({ tag: 'nav' }),\n ...makeThemeProps(),\n ...makeVariantProps({ variant: 'text' } as const),\n },\n\n emits: {\n 'update:modelValue': (value: number) => true,\n first: (value: number) => true,\n prev: (value: number) => true,\n next: (value: number) => true,\n last: (value: number) => true,\n },\n\n setup (props, { slots, emit }) {\n const page = useProxiedModel(props, 'modelValue')\n const { t, n } = useLocale()\n const { isRtl } = useRtl()\n const { themeClasses } = provideTheme(props)\n const maxButtons = ref(-1)\n\n provideDefaults(undefined, { scoped: true })\n\n const { resizeRef } = useResizeObserver((entries: ResizeObserverEntry[]) => {\n if (!entries.length) return\n\n const { target, contentRect } = entries[0]\n\n const firstItem = target.querySelector('.v-pagination__list > *')\n\n if (!firstItem) return\n\n const totalWidth = contentRect.width\n const itemWidth =\n firstItem.getBoundingClientRect().width +\n parseFloat(getComputedStyle(firstItem).marginRight) * 2\n const minButtons = props.showFirstLastPage ? 5 : 3\n\n maxButtons.value = Math.max(0, Math.floor((totalWidth - itemWidth * minButtons) / itemWidth))\n })\n\n const length = computed(() => parseInt(props.length, 10))\n const start = computed(() => parseInt(props.start, 10))\n\n const totalVisible = computed(() => {\n if (props.totalVisible) return parseInt(props.totalVisible, 10)\n else if (maxButtons.value >= 0) return maxButtons.value\n return length.value\n })\n\n const range = computed(() => {\n if (length.value <= 0 || isNaN(length.value) || length.value > Number.MAX_SAFE_INTEGER) return []\n\n if (totalVisible.value <= 1) return [page.value]\n\n if (length.value <= totalVisible.value) {\n return createRange(length.value, start.value)\n }\n\n const even = totalVisible.value % 2 === 0\n const middle = even ? totalVisible.value / 2 : Math.floor(totalVisible.value / 2)\n const left = even ? middle : middle + 1\n const right = length.value - middle\n\n if (left - page.value >= 0) {\n return [...createRange(Math.max(1, totalVisible.value - 1), start.value), props.ellipsis, length.value]\n } else if (page.value - right >= (even ? 1 : 0)) {\n const rangeLength = totalVisible.value - 1\n const rangeStart = length.value - rangeLength + start.value\n return [start.value, props.ellipsis, ...createRange(rangeLength, rangeStart)]\n } else {\n const rangeLength = Math.max(1, totalVisible.value - 3)\n const rangeStart = rangeLength === 1 ? page.value : page.value - Math.ceil(rangeLength / 2) + start.value\n return [start.value, props.ellipsis, ...createRange(rangeLength, rangeStart), props.ellipsis, length.value]\n }\n })\n\n // TODO: 'first' | 'prev' | 'next' | 'last' does not work here?\n function setValue (e: Event, value: number, event?: any) {\n e.preventDefault()\n page.value = value\n event && emit(event, value)\n }\n\n const { refs, updateRef } = useRefs<ComponentPublicInstance>()\n\n provideDefaults({\n VPaginationBtn: {\n color: toRef(props, 'color'),\n border: toRef(props, 'border'),\n density: toRef(props, 'density'),\n size: toRef(props, 'size'),\n variant: toRef(props, 'variant'),\n },\n })\n\n const items = computed(() => {\n return range.value.map((item, index) => {\n const ref = (e: any) => updateRef(e, index)\n\n if (typeof item === 'string') {\n return {\n isActive: false,\n page: item,\n props: {\n ref,\n ellipsis: true,\n icon: true,\n disabled: true,\n },\n }\n } else {\n const isActive = item === page.value\n return {\n isActive,\n page: n(item),\n props: {\n ref,\n ellipsis: false,\n icon: true,\n disabled: !!props.disabled || props.length < 2,\n elevation: props.elevation,\n rounded: props.rounded,\n color: isActive ? props.activeColor : props.color,\n ariaCurrent: isActive,\n ariaLabel: t(isActive ? props.currentPageAriaLabel : props.pageAriaLabel, index + 1),\n onClick: (e: Event) => setValue(e, item),\n },\n }\n }\n })\n })\n\n const controls = computed(() => {\n const prevDisabled = !!props.disabled || page.value <= start.value\n const nextDisabled = !!props.disabled || page.value >= start.value + length.value - 1\n\n return {\n first: props.showFirstLastPage ? {\n icon: isRtl.value ? props.lastIcon : props.firstIcon,\n onClick: (e: Event) => setValue(e, start.value, 'first'),\n disabled: prevDisabled,\n ariaLabel: t(props.firstAriaLabel),\n ariaDisabled: prevDisabled,\n } : undefined,\n prev: {\n icon: isRtl.value ? props.nextIcon : props.prevIcon,\n onClick: (e: Event) => setValue(e, page.value - 1, 'prev'),\n disabled: prevDisabled,\n ariaLabel: t(props.previousAriaLabel),\n ariaDisabled: prevDisabled,\n },\n next: {\n icon: isRtl.value ? props.prevIcon : props.nextIcon,\n onClick: (e: Event) => setValue(e, page.value + 1, 'next'),\n disabled: nextDisabled,\n ariaLabel: t(props.nextAriaLabel),\n ariaDisabled: nextDisabled,\n },\n last: props.showFirstLastPage ? {\n icon: isRtl.value ? props.firstIcon : props.lastIcon,\n onClick: (e: Event) => setValue(e, start.value + length.value - 1, 'last'),\n disabled: nextDisabled,\n ariaLabel: t(props.lastAriaLabel),\n ariaDisabled: nextDisabled,\n } : undefined,\n }\n })\n\n function updateFocus () {\n const currentIndex = page.value - start.value\n refs.value[currentIndex]?.$el.focus()\n }\n\n function onKeydown (e: KeyboardEvent) {\n if (e.key === keyValues.left && !props.disabled && page.value > props.start) {\n page.value = page.value - 1\n nextTick(updateFocus)\n } else if (e.key === keyValues.right && !props.disabled && page.value < start.value + length.value - 1) {\n page.value = page.value + 1\n nextTick(updateFocus)\n }\n }\n\n useRender(() => (\n <props.tag\n ref={ resizeRef }\n class={[\n 'v-pagination',\n themeClasses.value,\n ]}\n role=\"navigation\"\n aria-label={ t(props.ariaLabel) }\n onKeydown={ onKeydown }\n data-test=\"v-pagination-root\"\n >\n <ul class=\"v-pagination__list\">\n { props.showFirstLastPage && (\n <li key=\"first\" class=\"v-pagination__first\" data-test=\"v-pagination-first\">\n { slots.first ? slots.first(controls.value.first) : (\n <VBtn _as=\"VPaginationBtn\" {...controls.value.first} />\n ) }\n </li>\n ) }\n\n <li key=\"prev\" class=\"v-pagination__prev\" data-test=\"v-pagination-prev\">\n { slots.prev ? slots.prev(controls.value.prev) : (\n <VBtn _as=\"VPaginationBtn\" {...controls.value.prev} />\n ) }\n </li>\n\n { items.value.map((item, index) => (\n <li\n key={ item.page }\n class={[\n 'v-pagination__item',\n {\n 'v-pagination__item--is-active': item.isActive,\n },\n ]}\n data-test=\"v-pagination-item\"\n >\n { slots.item ? slots.item(item) : (\n <VBtn _as=\"VPaginationBtn\" {...item.props}>{ item.page }</VBtn>\n ) }\n </li>\n )) }\n\n <li\n key=\"next\"\n class=\"v-pagination__next\"\n data-test=\"v-pagination-next\"\n >\n { slots.next ? slots.next(controls.value.next) : (\n <VBtn _as=\"VPaginationBtn\" {...controls.value.next} />\n ) }\n </li>\n\n { props.showFirstLastPage && (\n <li\n key=\"last\"\n class=\"v-pagination__last\"\n data-test=\"v-pagination-last\"\n >\n { slots.last ? slots.last(controls.value.last) : (\n <VBtn _as=\"VPaginationBtn\" {...controls.value.last} />\n ) }\n </li>\n ) }\n </ul>\n </props.tag>\n ))\n\n return {}\n },\n})\n\nexport type VPagination = InstanceType<typeof VPagination>\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"VPagination.mjs","names":["VBtn","IconValue","makeBorderProps","makeDensityProps","makeElevationProps","makeRoundedProps","makeSizeProps","makeTagProps","makeThemeProps","provideTheme","makeVariantProps","provideDefaults","useLocale","useProxiedModel","useRefs","useResizeObserver","useRtl","computed","nextTick","ref","toRef","createRange","defineComponent","keyValues","useRender","VPagination","name","props","activeColor","String","start","type","Number","default","modelValue","disabled","Boolean","length","validator","val","totalVisible","firstIcon","prevIcon","nextIcon","lastIcon","ariaLabel","pageAriaLabel","currentPageAriaLabel","firstAriaLabel","previousAriaLabel","nextAriaLabel","lastAriaLabel","ellipsis","showFirstLastPage","tag","variant","emits","value","first","prev","next","last","setup","slots","emit","page","t","n","isRtl","themeClasses","maxButtons","undefined","scoped","resizeRef","entries","target","contentRect","firstItem","querySelector","totalWidth","width","itemWidth","offsetWidth","parseFloat","getComputedStyle","marginRight","minButtons","Math","max","floor","toFixed","parseInt","range","isNaN","MAX_SAFE_INTEGER","even","middle","left","right","rangeLength","rangeStart","ceil","setValue","e","event","preventDefault","refs","updateRef","VPaginationBtn","color","border","density","size","items","map","item","index","isActive","key","icon","elevation","rounded","ariaCurrent","onClick","controls","prevDisabled","nextDisabled","ariaDisabled","updateFocus","currentIndex","$el","focus","onKeydown"],"sources":["../../../src/components/VPagination/VPagination.tsx"],"sourcesContent":["// Styles\nimport './VPagination.sass'\n\n// Components\nimport { VBtn } from '../VBtn'\n\n// Composables\nimport { IconValue } from '@/composables/icons'\nimport { makeBorderProps } from '@/composables/border'\nimport { makeDensityProps } from '@/composables/density'\nimport { makeElevationProps } from '@/composables/elevation'\nimport { makeRoundedProps } from '@/composables/rounded'\nimport { makeSizeProps } from '@/composables/size'\nimport { makeTagProps } from '@/composables/tag'\nimport { makeThemeProps, provideTheme } from '@/composables/theme'\nimport { makeVariantProps } from '@/composables/variant'\nimport { provideDefaults } from '@/composables/defaults'\nimport { useLocale } from '@/composables/locale'\nimport { useProxiedModel } from '@/composables/proxiedModel'\nimport { useRefs } from '@/composables/refs'\nimport { useResizeObserver } from '@/composables/resizeObserver'\nimport { useRtl } from '@/composables/rtl'\n\n// Utilities\nimport { computed, nextTick, ref, toRef } from 'vue'\nimport { createRange, defineComponent, keyValues, useRender } from '@/util'\n\n// Types\nimport type { ComponentPublicInstance } from 'vue'\n\nexport const VPagination = defineComponent({\n name: 'VPagination',\n\n props: {\n activeColor: String,\n start: {\n type: [Number, String],\n default: 1,\n },\n modelValue: {\n type: Number,\n default: (props: any) => props.start,\n },\n disabled: Boolean,\n length: {\n type: [Number, String],\n default: 1,\n validator: (val: number) => val % 1 === 0,\n },\n totalVisible: [Number, String],\n firstIcon: {\n type: IconValue,\n default: '$first',\n },\n prevIcon: {\n type: IconValue,\n default: '$prev',\n },\n nextIcon: {\n type: IconValue,\n default: '$next',\n },\n lastIcon: {\n type: IconValue,\n default: '$last',\n },\n ariaLabel: {\n type: String,\n default: '$vuetify.pagination.ariaLabel.root',\n },\n pageAriaLabel: {\n type: String,\n default: '$vuetify.pagination.ariaLabel.page',\n },\n currentPageAriaLabel: {\n type: String,\n default: '$vuetify.pagination.ariaLabel.currentPage',\n },\n firstAriaLabel: {\n type: String,\n default: '$vuetify.pagination.ariaLabel.first',\n },\n previousAriaLabel: {\n type: String,\n default: '$vuetify.pagination.ariaLabel.previous',\n },\n nextAriaLabel: {\n type: String,\n default: '$vuetify.pagination.ariaLabel.next',\n },\n lastAriaLabel: {\n type: String,\n default: '$vuetify.pagination.ariaLabel.last',\n },\n ellipsis: {\n type: String,\n default: '...',\n },\n showFirstLastPage: Boolean,\n\n ...makeBorderProps(),\n ...makeDensityProps(),\n ...makeElevationProps(),\n ...makeRoundedProps(),\n ...makeSizeProps(),\n ...makeTagProps({ tag: 'nav' }),\n ...makeThemeProps(),\n ...makeVariantProps({ variant: 'text' } as const),\n },\n\n emits: {\n 'update:modelValue': (value: number) => true,\n first: (value: number) => true,\n prev: (value: number) => true,\n next: (value: number) => true,\n last: (value: number) => true,\n },\n\n setup (props, { slots, emit }) {\n const page = useProxiedModel(props, 'modelValue')\n const { t, n } = useLocale()\n const { isRtl } = useRtl()\n const { themeClasses } = provideTheme(props)\n const maxButtons = ref(-1)\n\n provideDefaults(undefined, { scoped: true })\n\n const { resizeRef } = useResizeObserver((entries: ResizeObserverEntry[]) => {\n if (!entries.length) return\n\n const { target, contentRect } = entries[0]\n\n const firstItem = target.querySelector('.v-pagination__list > *') as HTMLElement\n\n if (!firstItem) return\n\n const totalWidth = contentRect.width\n const itemWidth =\n firstItem.offsetWidth +\n parseFloat(getComputedStyle(firstItem).marginRight) * 2\n const minButtons = props.showFirstLastPage ? 5 : 3\n\n maxButtons.value = Math.max(0, Math.floor(\n // Round to two decimal places to avoid floating point errors\n +((totalWidth - itemWidth * minButtons) / itemWidth).toFixed(2)\n ))\n })\n\n const length = computed(() => parseInt(props.length, 10))\n const start = computed(() => parseInt(props.start, 10))\n\n const totalVisible = computed(() => {\n if (props.totalVisible) return parseInt(props.totalVisible, 10)\n else if (maxButtons.value >= 0) return maxButtons.value\n return length.value\n })\n\n const range = computed(() => {\n if (length.value <= 0 || isNaN(length.value) || length.value > Number.MAX_SAFE_INTEGER) return []\n\n if (totalVisible.value <= 1) return [page.value]\n\n if (length.value <= totalVisible.value) {\n return createRange(length.value, start.value)\n }\n\n const even = totalVisible.value % 2 === 0\n const middle = even ? totalVisible.value / 2 : Math.floor(totalVisible.value / 2)\n const left = even ? middle : middle + 1\n const right = length.value - middle\n\n if (left - page.value >= 0) {\n return [...createRange(Math.max(1, totalVisible.value - 1), start.value), props.ellipsis, length.value]\n } else if (page.value - right >= (even ? 1 : 0)) {\n const rangeLength = totalVisible.value - 1\n const rangeStart = length.value - rangeLength + start.value\n return [start.value, props.ellipsis, ...createRange(rangeLength, rangeStart)]\n } else {\n const rangeLength = Math.max(1, totalVisible.value - 3)\n const rangeStart = rangeLength === 1 ? page.value : page.value - Math.ceil(rangeLength / 2) + start.value\n return [start.value, props.ellipsis, ...createRange(rangeLength, rangeStart), props.ellipsis, length.value]\n }\n })\n\n // TODO: 'first' | 'prev' | 'next' | 'last' does not work here?\n function setValue (e: Event, value: number, event?: any) {\n e.preventDefault()\n page.value = value\n event && emit(event, value)\n }\n\n const { refs, updateRef } = useRefs<ComponentPublicInstance>()\n\n provideDefaults({\n VPaginationBtn: {\n color: toRef(props, 'color'),\n border: toRef(props, 'border'),\n density: toRef(props, 'density'),\n size: toRef(props, 'size'),\n variant: toRef(props, 'variant'),\n },\n })\n\n const items = computed(() => {\n return range.value.map((item, index) => {\n const ref = (e: any) => updateRef(e, index)\n\n if (typeof item === 'string') {\n return {\n isActive: false,\n key: `ellipsis-${index}`,\n page: item,\n props: {\n ref,\n ellipsis: true,\n icon: true,\n disabled: true,\n },\n }\n } else {\n const isActive = item === page.value\n return {\n isActive,\n key: item,\n page: n(item),\n props: {\n ref,\n ellipsis: false,\n icon: true,\n disabled: !!props.disabled || props.length < 2,\n elevation: props.elevation,\n rounded: props.rounded,\n color: isActive ? props.activeColor : props.color,\n ariaCurrent: isActive,\n ariaLabel: t(isActive ? props.currentPageAriaLabel : props.pageAriaLabel, index + 1),\n onClick: (e: Event) => setValue(e, item),\n },\n }\n }\n })\n })\n\n const controls = computed(() => {\n const prevDisabled = !!props.disabled || page.value <= start.value\n const nextDisabled = !!props.disabled || page.value >= start.value + length.value - 1\n\n return {\n first: props.showFirstLastPage ? {\n icon: isRtl.value ? props.lastIcon : props.firstIcon,\n onClick: (e: Event) => setValue(e, start.value, 'first'),\n disabled: prevDisabled,\n ariaLabel: t(props.firstAriaLabel),\n ariaDisabled: prevDisabled,\n } : undefined,\n prev: {\n icon: isRtl.value ? props.nextIcon : props.prevIcon,\n onClick: (e: Event) => setValue(e, page.value - 1, 'prev'),\n disabled: prevDisabled,\n ariaLabel: t(props.previousAriaLabel),\n ariaDisabled: prevDisabled,\n },\n next: {\n icon: isRtl.value ? props.prevIcon : props.nextIcon,\n onClick: (e: Event) => setValue(e, page.value + 1, 'next'),\n disabled: nextDisabled,\n ariaLabel: t(props.nextAriaLabel),\n ariaDisabled: nextDisabled,\n },\n last: props.showFirstLastPage ? {\n icon: isRtl.value ? props.firstIcon : props.lastIcon,\n onClick: (e: Event) => setValue(e, start.value + length.value - 1, 'last'),\n disabled: nextDisabled,\n ariaLabel: t(props.lastAriaLabel),\n ariaDisabled: nextDisabled,\n } : undefined,\n }\n })\n\n function updateFocus () {\n const currentIndex = page.value - start.value\n refs.value[currentIndex]?.$el.focus()\n }\n\n function onKeydown (e: KeyboardEvent) {\n if (e.key === keyValues.left && !props.disabled && page.value > props.start) {\n page.value = page.value - 1\n nextTick(updateFocus)\n } else if (e.key === keyValues.right && !props.disabled && page.value < start.value + length.value - 1) {\n page.value = page.value + 1\n nextTick(updateFocus)\n }\n }\n\n useRender(() => (\n <props.tag\n ref={ resizeRef }\n class={[\n 'v-pagination',\n themeClasses.value,\n ]}\n role=\"navigation\"\n aria-label={ t(props.ariaLabel) }\n onKeydown={ onKeydown }\n data-test=\"v-pagination-root\"\n >\n <ul class=\"v-pagination__list\">\n { props.showFirstLastPage && (\n <li key=\"first\" class=\"v-pagination__first\" data-test=\"v-pagination-first\">\n { slots.first ? slots.first(controls.value.first) : (\n <VBtn _as=\"VPaginationBtn\" {...controls.value.first} />\n ) }\n </li>\n ) }\n\n <li key=\"prev\" class=\"v-pagination__prev\" data-test=\"v-pagination-prev\">\n { slots.prev ? slots.prev(controls.value.prev) : (\n <VBtn _as=\"VPaginationBtn\" {...controls.value.prev} />\n ) }\n </li>\n\n { items.value.map((item, index) => (\n <li\n key={ item.key }\n class={[\n 'v-pagination__item',\n {\n 'v-pagination__item--is-active': item.isActive,\n },\n ]}\n data-test=\"v-pagination-item\"\n >\n { slots.item ? slots.item(item) : (\n <VBtn _as=\"VPaginationBtn\" {...item.props}>{ item.page }</VBtn>\n ) }\n </li>\n )) }\n\n <li\n key=\"next\"\n class=\"v-pagination__next\"\n data-test=\"v-pagination-next\"\n >\n { slots.next ? slots.next(controls.value.next) : (\n <VBtn _as=\"VPaginationBtn\" {...controls.value.next} />\n ) }\n </li>\n\n { props.showFirstLastPage && (\n <li\n key=\"last\"\n class=\"v-pagination__last\"\n data-test=\"v-pagination-last\"\n >\n { slots.last ? slots.last(controls.value.last) : (\n <VBtn _as=\"VPaginationBtn\" {...controls.value.last} />\n ) }\n </li>\n ) }\n </ul>\n </props.tag>\n ))\n\n return {}\n },\n})\n\nexport type VPagination = InstanceType<typeof VPagination>\n"],"mappings":"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"}
|
|
@@ -0,0 +1,247 @@
|
|
|
1
|
+
import * as vue from 'vue';
|
|
2
|
+
import { JSXComponent, PropType } from 'vue';
|
|
3
|
+
|
|
4
|
+
declare type IconValue = string | JSXComponent;
|
|
5
|
+
declare const IconValue: PropType<IconValue>;
|
|
6
|
+
|
|
7
|
+
declare const VPagination: vue.DefineComponent<{
|
|
8
|
+
color: StringConstructor;
|
|
9
|
+
variant: Omit<{
|
|
10
|
+
type: vue.PropType<"flat" | "text" | "elevated" | "tonal" | "outlined" | "plain">;
|
|
11
|
+
default: string;
|
|
12
|
+
validator: (v: any) => boolean;
|
|
13
|
+
}, "type" | "default"> & {
|
|
14
|
+
type: vue.PropType<"flat" | "text" | "elevated" | "tonal" | "outlined" | "plain">;
|
|
15
|
+
default: "flat" | "text" | "elevated" | "tonal" | "outlined" | "plain";
|
|
16
|
+
};
|
|
17
|
+
theme: StringConstructor;
|
|
18
|
+
tag: Omit<{
|
|
19
|
+
type: StringConstructor;
|
|
20
|
+
default: string;
|
|
21
|
+
}, "type" | "default"> & {
|
|
22
|
+
type: vue.PropType<string>;
|
|
23
|
+
default: string;
|
|
24
|
+
};
|
|
25
|
+
size: {
|
|
26
|
+
type: (StringConstructor | NumberConstructor)[];
|
|
27
|
+
default: string;
|
|
28
|
+
};
|
|
29
|
+
rounded: {
|
|
30
|
+
type: (StringConstructor | BooleanConstructor | NumberConstructor)[];
|
|
31
|
+
default: undefined;
|
|
32
|
+
};
|
|
33
|
+
elevation: {
|
|
34
|
+
type: (StringConstructor | NumberConstructor)[];
|
|
35
|
+
validator(v: any): boolean;
|
|
36
|
+
};
|
|
37
|
+
density: {
|
|
38
|
+
type: vue.PropType<"default" | "compact" | "comfortable" | null>;
|
|
39
|
+
default: string;
|
|
40
|
+
validator: (v: any) => boolean;
|
|
41
|
+
};
|
|
42
|
+
border: (StringConstructor | BooleanConstructor | NumberConstructor)[];
|
|
43
|
+
activeColor: StringConstructor;
|
|
44
|
+
start: {
|
|
45
|
+
type: (StringConstructor | NumberConstructor)[];
|
|
46
|
+
default: number;
|
|
47
|
+
};
|
|
48
|
+
modelValue: {
|
|
49
|
+
type: NumberConstructor;
|
|
50
|
+
default: (props: any) => any;
|
|
51
|
+
};
|
|
52
|
+
disabled: BooleanConstructor;
|
|
53
|
+
length: {
|
|
54
|
+
type: (StringConstructor | NumberConstructor)[];
|
|
55
|
+
default: number;
|
|
56
|
+
validator: (val: number) => boolean;
|
|
57
|
+
};
|
|
58
|
+
totalVisible: (StringConstructor | NumberConstructor)[];
|
|
59
|
+
firstIcon: {
|
|
60
|
+
type: vue.PropType<IconValue>;
|
|
61
|
+
default: string;
|
|
62
|
+
};
|
|
63
|
+
prevIcon: {
|
|
64
|
+
type: vue.PropType<IconValue>;
|
|
65
|
+
default: string;
|
|
66
|
+
};
|
|
67
|
+
nextIcon: {
|
|
68
|
+
type: vue.PropType<IconValue>;
|
|
69
|
+
default: string;
|
|
70
|
+
};
|
|
71
|
+
lastIcon: {
|
|
72
|
+
type: vue.PropType<IconValue>;
|
|
73
|
+
default: string;
|
|
74
|
+
};
|
|
75
|
+
ariaLabel: {
|
|
76
|
+
type: StringConstructor;
|
|
77
|
+
default: string;
|
|
78
|
+
};
|
|
79
|
+
pageAriaLabel: {
|
|
80
|
+
type: StringConstructor;
|
|
81
|
+
default: string;
|
|
82
|
+
};
|
|
83
|
+
currentPageAriaLabel: {
|
|
84
|
+
type: StringConstructor;
|
|
85
|
+
default: string;
|
|
86
|
+
};
|
|
87
|
+
firstAriaLabel: {
|
|
88
|
+
type: StringConstructor;
|
|
89
|
+
default: string;
|
|
90
|
+
};
|
|
91
|
+
previousAriaLabel: {
|
|
92
|
+
type: StringConstructor;
|
|
93
|
+
default: string;
|
|
94
|
+
};
|
|
95
|
+
nextAriaLabel: {
|
|
96
|
+
type: StringConstructor;
|
|
97
|
+
default: string;
|
|
98
|
+
};
|
|
99
|
+
lastAriaLabel: {
|
|
100
|
+
type: StringConstructor;
|
|
101
|
+
default: string;
|
|
102
|
+
};
|
|
103
|
+
ellipsis: {
|
|
104
|
+
type: StringConstructor;
|
|
105
|
+
default: string;
|
|
106
|
+
};
|
|
107
|
+
showFirstLastPage: BooleanConstructor;
|
|
108
|
+
}, {}, unknown, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, {
|
|
109
|
+
'update:modelValue': (value: number) => true;
|
|
110
|
+
first: (value: number) => true;
|
|
111
|
+
prev: (value: number) => true;
|
|
112
|
+
next: (value: number) => true;
|
|
113
|
+
last: (value: number) => true;
|
|
114
|
+
}, string, vue.VNodeProps & vue.AllowedComponentProps & vue.ComponentCustomProps, Readonly<vue.ExtractPropTypes<{
|
|
115
|
+
color: StringConstructor;
|
|
116
|
+
variant: Omit<{
|
|
117
|
+
type: vue.PropType<"flat" | "text" | "elevated" | "tonal" | "outlined" | "plain">;
|
|
118
|
+
default: string;
|
|
119
|
+
validator: (v: any) => boolean;
|
|
120
|
+
}, "type" | "default"> & {
|
|
121
|
+
type: vue.PropType<"flat" | "text" | "elevated" | "tonal" | "outlined" | "plain">;
|
|
122
|
+
default: "flat" | "text" | "elevated" | "tonal" | "outlined" | "plain";
|
|
123
|
+
};
|
|
124
|
+
theme: StringConstructor;
|
|
125
|
+
tag: Omit<{
|
|
126
|
+
type: StringConstructor;
|
|
127
|
+
default: string;
|
|
128
|
+
}, "type" | "default"> & {
|
|
129
|
+
type: vue.PropType<string>;
|
|
130
|
+
default: string;
|
|
131
|
+
};
|
|
132
|
+
size: {
|
|
133
|
+
type: (StringConstructor | NumberConstructor)[];
|
|
134
|
+
default: string;
|
|
135
|
+
};
|
|
136
|
+
rounded: {
|
|
137
|
+
type: (StringConstructor | BooleanConstructor | NumberConstructor)[];
|
|
138
|
+
default: undefined;
|
|
139
|
+
};
|
|
140
|
+
elevation: {
|
|
141
|
+
type: (StringConstructor | NumberConstructor)[];
|
|
142
|
+
validator(v: any): boolean;
|
|
143
|
+
};
|
|
144
|
+
density: {
|
|
145
|
+
type: vue.PropType<"default" | "compact" | "comfortable" | null>;
|
|
146
|
+
default: string;
|
|
147
|
+
validator: (v: any) => boolean;
|
|
148
|
+
};
|
|
149
|
+
border: (StringConstructor | BooleanConstructor | NumberConstructor)[];
|
|
150
|
+
activeColor: StringConstructor;
|
|
151
|
+
start: {
|
|
152
|
+
type: (StringConstructor | NumberConstructor)[];
|
|
153
|
+
default: number;
|
|
154
|
+
};
|
|
155
|
+
modelValue: {
|
|
156
|
+
type: NumberConstructor;
|
|
157
|
+
default: (props: any) => any;
|
|
158
|
+
};
|
|
159
|
+
disabled: BooleanConstructor;
|
|
160
|
+
length: {
|
|
161
|
+
type: (StringConstructor | NumberConstructor)[];
|
|
162
|
+
default: number;
|
|
163
|
+
validator: (val: number) => boolean;
|
|
164
|
+
};
|
|
165
|
+
totalVisible: (StringConstructor | NumberConstructor)[];
|
|
166
|
+
firstIcon: {
|
|
167
|
+
type: vue.PropType<IconValue>;
|
|
168
|
+
default: string;
|
|
169
|
+
};
|
|
170
|
+
prevIcon: {
|
|
171
|
+
type: vue.PropType<IconValue>;
|
|
172
|
+
default: string;
|
|
173
|
+
};
|
|
174
|
+
nextIcon: {
|
|
175
|
+
type: vue.PropType<IconValue>;
|
|
176
|
+
default: string;
|
|
177
|
+
};
|
|
178
|
+
lastIcon: {
|
|
179
|
+
type: vue.PropType<IconValue>;
|
|
180
|
+
default: string;
|
|
181
|
+
};
|
|
182
|
+
ariaLabel: {
|
|
183
|
+
type: StringConstructor;
|
|
184
|
+
default: string;
|
|
185
|
+
};
|
|
186
|
+
pageAriaLabel: {
|
|
187
|
+
type: StringConstructor;
|
|
188
|
+
default: string;
|
|
189
|
+
};
|
|
190
|
+
currentPageAriaLabel: {
|
|
191
|
+
type: StringConstructor;
|
|
192
|
+
default: string;
|
|
193
|
+
};
|
|
194
|
+
firstAriaLabel: {
|
|
195
|
+
type: StringConstructor;
|
|
196
|
+
default: string;
|
|
197
|
+
};
|
|
198
|
+
previousAriaLabel: {
|
|
199
|
+
type: StringConstructor;
|
|
200
|
+
default: string;
|
|
201
|
+
};
|
|
202
|
+
nextAriaLabel: {
|
|
203
|
+
type: StringConstructor;
|
|
204
|
+
default: string;
|
|
205
|
+
};
|
|
206
|
+
lastAriaLabel: {
|
|
207
|
+
type: StringConstructor;
|
|
208
|
+
default: string;
|
|
209
|
+
};
|
|
210
|
+
ellipsis: {
|
|
211
|
+
type: StringConstructor;
|
|
212
|
+
default: string;
|
|
213
|
+
};
|
|
214
|
+
showFirstLastPage: BooleanConstructor;
|
|
215
|
+
}>> & {
|
|
216
|
+
"onUpdate:modelValue"?: ((value: number) => any) | undefined;
|
|
217
|
+
onNext?: ((value: number) => any) | undefined;
|
|
218
|
+
onPrev?: ((value: number) => any) | undefined;
|
|
219
|
+
onFirst?: ((value: number) => any) | undefined;
|
|
220
|
+
onLast?: ((value: number) => any) | undefined;
|
|
221
|
+
}, {
|
|
222
|
+
length: string | number;
|
|
223
|
+
start: string | number;
|
|
224
|
+
ariaLabel: string;
|
|
225
|
+
disabled: boolean;
|
|
226
|
+
size: string | number;
|
|
227
|
+
tag: string;
|
|
228
|
+
ellipsis: string;
|
|
229
|
+
rounded: string | number | boolean;
|
|
230
|
+
density: "default" | "compact" | "comfortable" | null;
|
|
231
|
+
variant: "flat" | "text" | "elevated" | "tonal" | "outlined" | "plain";
|
|
232
|
+
modelValue: number;
|
|
233
|
+
nextIcon: IconValue;
|
|
234
|
+
prevIcon: IconValue;
|
|
235
|
+
firstIcon: IconValue;
|
|
236
|
+
lastIcon: IconValue;
|
|
237
|
+
pageAriaLabel: string;
|
|
238
|
+
currentPageAriaLabel: string;
|
|
239
|
+
firstAriaLabel: string;
|
|
240
|
+
previousAriaLabel: string;
|
|
241
|
+
nextAriaLabel: string;
|
|
242
|
+
lastAriaLabel: string;
|
|
243
|
+
showFirstLastPage: boolean;
|
|
244
|
+
}>;
|
|
245
|
+
declare type VPagination = InstanceType<typeof VPagination>;
|
|
246
|
+
|
|
247
|
+
export { VPagination };
|
|
@@ -6,8 +6,10 @@ import { VImg } from "../VImg/index.mjs"; // Composables
|
|
|
6
6
|
|
|
7
7
|
import { useIntersectionObserver } from "../../composables/intersectionObserver.mjs"; // Utilities
|
|
8
8
|
|
|
9
|
-
import { defineComponent, getScrollParent, useRender } from "../../util/index.mjs";
|
|
10
|
-
import { onBeforeUnmount, ref, watch, watchEffect } from 'vue';
|
|
9
|
+
import { clamp, defineComponent, getScrollParent, useRender } from "../../util/index.mjs";
|
|
10
|
+
import { computed, onBeforeUnmount, ref, watch, watchEffect } from 'vue';
|
|
11
|
+
import { useResizeObserver } from "../../composables/resizeObserver.mjs";
|
|
12
|
+
import { useDisplay } from "../../composables/index.mjs";
|
|
11
13
|
|
|
12
14
|
function floor(val) {
|
|
13
15
|
return Math.floor(Math.abs(val)) * Math.sign(val);
|
|
@@ -18,7 +20,7 @@ export const VParallax = defineComponent({
|
|
|
18
20
|
props: {
|
|
19
21
|
scale: {
|
|
20
22
|
type: [Number, String],
|
|
21
|
-
default:
|
|
23
|
+
default: 0.5
|
|
22
24
|
}
|
|
23
25
|
},
|
|
24
26
|
|
|
@@ -30,11 +32,18 @@ export const VParallax = defineComponent({
|
|
|
30
32
|
intersectionRef,
|
|
31
33
|
isIntersecting
|
|
32
34
|
} = useIntersectionObserver();
|
|
35
|
+
const {
|
|
36
|
+
resizeRef,
|
|
37
|
+
contentRect
|
|
38
|
+
} = useResizeObserver();
|
|
39
|
+
const {
|
|
40
|
+
height: displayHeight
|
|
41
|
+
} = useDisplay();
|
|
33
42
|
const root = ref();
|
|
34
43
|
watchEffect(() => {
|
|
35
44
|
var _root$value;
|
|
36
45
|
|
|
37
|
-
intersectionRef.value = (_root$value = root.value) == null ? void 0 : _root$value.$el;
|
|
46
|
+
intersectionRef.value = resizeRef.value = (_root$value = root.value) == null ? void 0 : _root$value.$el;
|
|
38
47
|
});
|
|
39
48
|
let scrollParent;
|
|
40
49
|
watch(isIntersecting, val => {
|
|
@@ -54,6 +63,10 @@ export const VParallax = defineComponent({
|
|
|
54
63
|
|
|
55
64
|
(_scrollParent = scrollParent) == null ? void 0 : _scrollParent.removeEventListener('scroll', onScroll);
|
|
56
65
|
});
|
|
66
|
+
watch(displayHeight, onScroll);
|
|
67
|
+
const scale = computed(() => {
|
|
68
|
+
return 1 - clamp(+props.scale);
|
|
69
|
+
});
|
|
57
70
|
let frame = -1;
|
|
58
71
|
|
|
59
72
|
function onScroll() {
|
|
@@ -64,13 +77,14 @@ export const VParallax = defineComponent({
|
|
|
64
77
|
|
|
65
78
|
const el = ((_root$value2 = root.value) == null ? void 0 : _root$value2.$el).querySelector('.v-img__img');
|
|
66
79
|
if (!el) return;
|
|
67
|
-
const
|
|
68
|
-
const scrollHeight = scrollParent.clientHeight ?? window.innerHeight;
|
|
80
|
+
const scrollHeight = scrollParent.clientHeight ?? document.documentElement.clientHeight;
|
|
69
81
|
const scrollPos = scrollParent.scrollTop ?? window.scrollY;
|
|
70
|
-
const top =
|
|
71
|
-
const
|
|
72
|
-
const
|
|
73
|
-
|
|
82
|
+
const top = intersectionRef.value.offsetTop;
|
|
83
|
+
const height = contentRect.value.height;
|
|
84
|
+
const center = top + (height - scrollHeight) / 2;
|
|
85
|
+
const translate = floor((scrollPos - center) * scale.value);
|
|
86
|
+
const sizeScale = Math.max(1, (scale.value * (scrollHeight - height) + height) / height);
|
|
87
|
+
el.style.setProperty('transform', `translateY(${translate}px) scale(${sizeScale})`);
|
|
74
88
|
});
|
|
75
89
|
}
|
|
76
90
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"VParallax.mjs","names":["VImg","useIntersectionObserver","defineComponent","getScrollParent","useRender","onBeforeUnmount","ref","watch","watchEffect","floor","val","Math","abs","sign","VParallax","name","props","scale","type","Number","String","default","setup","slots","intersectionRef","isIntersecting","root","value","$el","scrollParent","document","scrollingElement","addEventListener","onScroll","passive","removeEventListener","frame","cancelAnimationFrame","requestAnimationFrame","el","querySelector","
|
|
1
|
+
{"version":3,"file":"VParallax.mjs","names":["VImg","useIntersectionObserver","clamp","defineComponent","getScrollParent","useRender","computed","onBeforeUnmount","ref","watch","watchEffect","useResizeObserver","useDisplay","floor","val","Math","abs","sign","VParallax","name","props","scale","type","Number","String","default","setup","slots","intersectionRef","isIntersecting","resizeRef","contentRect","height","displayHeight","root","value","$el","scrollParent","document","scrollingElement","addEventListener","onScroll","passive","removeEventListener","frame","cancelAnimationFrame","requestAnimationFrame","el","querySelector","scrollHeight","clientHeight","documentElement","scrollPos","scrollTop","window","scrollY","top","offsetTop","center","translate","sizeScale","max","style","setProperty"],"sources":["../../../src/components/VParallax/VParallax.tsx"],"sourcesContent":["// Styles\nimport './VParallax.sass'\n\n// Components\nimport { VImg } from '@/components/VImg'\n\n// Composables\nimport { useIntersectionObserver } from '@/composables/intersectionObserver'\n\n// Utilities\nimport { clamp, defineComponent, getScrollParent, useRender } from '@/util'\nimport { computed, onBeforeUnmount, ref, watch, watchEffect } from 'vue'\nimport { useResizeObserver } from '@/composables/resizeObserver'\nimport { useDisplay } from '@/composables'\n\nfunction floor (val: number) {\n return Math.floor(Math.abs(val)) * Math.sign(val)\n}\n\nexport const VParallax = defineComponent({\n name: 'VParallax',\n\n props: {\n scale: {\n type: [Number, String],\n default: 0.5,\n },\n },\n\n setup (props, { slots }) {\n const { intersectionRef, isIntersecting } = useIntersectionObserver()\n const { resizeRef, contentRect } = useResizeObserver()\n const { height: displayHeight } = useDisplay()\n\n const root = ref<VImg>()\n\n watchEffect(() => {\n intersectionRef.value = resizeRef.value = root.value?.$el\n })\n\n let scrollParent: Element\n watch(isIntersecting, val => {\n if (val) {\n scrollParent = getScrollParent(intersectionRef.value)\n scrollParent = scrollParent === document.scrollingElement ? document as any : scrollParent\n scrollParent.addEventListener('scroll', onScroll, { passive: true })\n onScroll()\n } else {\n scrollParent.removeEventListener('scroll', onScroll)\n }\n })\n\n onBeforeUnmount(() => {\n scrollParent?.removeEventListener('scroll', onScroll)\n })\n\n watch(displayHeight, onScroll)\n\n const scale = computed(() => {\n return 1 - clamp(+props.scale)\n })\n\n let frame = -1\n function onScroll () {\n if (!isIntersecting.value) return\n\n cancelAnimationFrame(frame)\n frame = requestAnimationFrame(() => {\n const el: HTMLElement | null = (root.value?.$el as Element).querySelector('.v-img__img')\n if (!el) return\n\n const scrollHeight = scrollParent.clientHeight ?? document.documentElement.clientHeight\n const scrollPos = scrollParent.scrollTop ?? window.scrollY\n const top = intersectionRef.value!.offsetTop\n const height = contentRect.value!.height\n\n const center = top + (height - scrollHeight) / 2\n const translate = floor((scrollPos - center) * scale.value)\n const sizeScale = Math.max(1, (scale.value * (scrollHeight - height) + height) / height)\n\n el.style.setProperty('transform', `translateY(${translate}px) scale(${sizeScale})`)\n })\n }\n\n useRender(() => (\n <VImg\n class={[\n 'v-parallax',\n { 'v-parallax--active': isIntersecting.value },\n ]}\n ref={ root }\n cover\n onLoadstart={ onScroll }\n onLoad={ onScroll }\n v-slots={ slots }\n />\n ))\n\n return {}\n },\n})\n\nexport type VParallax = InstanceType<typeof VParallax>\n"],"mappings":"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"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import * as vue from 'vue';
|
|
2
|
+
|
|
3
|
+
declare const VParallax: vue.DefineComponent<{
|
|
4
|
+
scale: {
|
|
5
|
+
type: (StringConstructor | NumberConstructor)[];
|
|
6
|
+
default: number;
|
|
7
|
+
};
|
|
8
|
+
}, {}, unknown, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, {}, string, vue.VNodeProps & vue.AllowedComponentProps & vue.ComponentCustomProps, Readonly<vue.ExtractPropTypes<{
|
|
9
|
+
scale: {
|
|
10
|
+
type: (StringConstructor | NumberConstructor)[];
|
|
11
|
+
default: number;
|
|
12
|
+
};
|
|
13
|
+
}>>, {
|
|
14
|
+
scale: string | number;
|
|
15
|
+
}>;
|
|
16
|
+
declare type VParallax = InstanceType<typeof VParallax>;
|
|
17
|
+
|
|
18
|
+
export { VParallax };
|