12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091 |
- 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";
- import { useToggleScope } from "../../composables/toggleScope.mjs"; // Utilities
- import { computed, ref, shallowRef, toRef, watchEffect } 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 layoutItemStyles = 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));
- useToggleScope(() => props.app, () => {
- const layout = 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')
- });
- watchEffect(() => {
- layoutItemStyles.value = layout.layoutItemStyles.value;
- });
- });
- 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
|