52 lines
1.1 KiB
Vue
52 lines
1.1 KiB
Vue
![]() |
<script lang="ts" setup>
|
||
|
import { footerEmits, footerProps } from './footer'
|
||
|
import { useFooter, useFooterCustomStyle } from './composables'
|
||
|
|
||
|
const props = defineProps(footerProps)
|
||
|
const emits = defineEmits(footerEmits)
|
||
|
|
||
|
const { navigatorData, footerClickEvent, navigatorClickEvent } = useFooter(
|
||
|
props,
|
||
|
emits
|
||
|
)
|
||
|
const {
|
||
|
ns,
|
||
|
footerClass,
|
||
|
footerStyle,
|
||
|
contentClass,
|
||
|
contentStyle,
|
||
|
navigatorClass,
|
||
|
navigatorStyle,
|
||
|
} = useFooterCustomStyle(props)
|
||
|
</script>
|
||
|
|
||
|
<template>
|
||
|
<view
|
||
|
:class="[footerClass]"
|
||
|
:style="footerStyle"
|
||
|
@tap.stop="footerClickEvent"
|
||
|
>
|
||
|
<!-- 导航内容 -->
|
||
|
<view v-if="navigatorData.length" :class="[ns.e('navigators')]">
|
||
|
<view
|
||
|
v-for="(item, index) in navigatorData"
|
||
|
:key="index"
|
||
|
:class="[navigatorClass(item)]"
|
||
|
:style="navigatorStyle(item)"
|
||
|
@tap.stop="navigatorClickEvent(item)"
|
||
|
>
|
||
|
{{ item.title }}
|
||
|
</view>
|
||
|
</view>
|
||
|
|
||
|
<!-- 页脚内容 -->
|
||
|
<view v-if="content" :class="[contentClass]" :style="contentStyle">
|
||
|
{{ content }}
|
||
|
</view>
|
||
|
</view>
|
||
|
</template>
|
||
|
|
||
|
<style lang="scss" scoped>
|
||
|
@import '../../../theme-chalk/src/footer.scss';
|
||
|
</style>
|