import { createVNode as _createVNode, resolveDirective as _resolveDirective } from "vue"; // Styles import "./VFooter.css"; // Composables import { makeBorderProps, useBorder } from "../../composables/border.mjs"; import { useBackgroundColor } from "../../composables/color.mjs"; import { makeComponentProps } from "../../composables/component.mjs"; import { makeElevationProps, useElevation } from "../../composables/elevation.mjs"; import { makeLayoutItemProps, useLayoutItem } from "../../composables/layout.mjs"; import { useResizeObserver } from "../../composables/resizeObserver.mjs"; import { makeRoundedProps, useRounded } from "../../composables/rounded.mjs"; import { makeTagProps } from "../../composables/tag.mjs"; import { makeThemeProps, provideTheme } from "../../composables/theme.mjs"; // Utilities import { computed, shallowRef, toRef } from 'vue'; import { convertToUnit, genericComponent, propsFactory, useRender } from "../../util/index.mjs"; export const makeVFooterProps = propsFactory({ app: Boolean, color: String, height: { type: [Number, String], default: 'auto' }, ...makeBorderProps(), ...makeComponentProps(), ...makeElevationProps(), ...makeLayoutItemProps(), ...makeRoundedProps(), ...makeTagProps({ tag: 'footer' }), ...makeThemeProps() }, 'VFooter'); export const VFooter = genericComponent()({ name: 'VFooter', props: makeVFooterProps(), setup(props, _ref) { let { slots } = _ref; const { themeClasses } = provideTheme(props); const { backgroundColorClasses, backgroundColorStyles } = useBackgroundColor(toRef(props, 'color')); const { borderClasses } = useBorder(props); const { elevationClasses } = useElevation(props); const { roundedClasses } = useRounded(props); const autoHeight = shallowRef(32); const { resizeRef } = useResizeObserver(entries => { if (!entries.length) return; autoHeight.value = entries[0].target.clientHeight; }); const height = computed(() => props.height === 'auto' ? autoHeight.value : parseInt(props.height, 10)); const { layoutItemStyles } = useLayoutItem({ id: props.name, order: computed(() => parseInt(props.order, 10)), position: computed(() => 'bottom'), layoutSize: height, elementSize: computed(() => props.height === 'auto' ? undefined : height.value), active: computed(() => props.app), absolute: toRef(props, 'absolute') }); useRender(() => _createVNode(props.tag, { "ref": resizeRef, "class": ['v-footer', themeClasses.value, backgroundColorClasses.value, borderClasses.value, elevationClasses.value, roundedClasses.value, props.class], "style": [backgroundColorStyles.value, props.app ? layoutItemStyles.value : { height: convertToUnit(props.height) }, props.style] }, slots)); return {}; } }); //# sourceMappingURL=VFooter.mjs.map