@extclp/vexip-ui
Version:
A Vue 3 UI library, Highly customizability, full TypeScript, performance pretty good
1 lines • 6.38 kB
Source Map (JSON)
{"version":3,"file":"layout-footer.mjs","sources":["../../../components/layout/layout-footer.tsx"],"sourcesContent":["import { Icon } from '@/components/icon'\nimport { Linker } from '@/components/linker'\n\nimport { computed, defineComponent, renderSlot, toRef } from 'vue'\n\nimport { useNameHelper, useProps } from '@vexip-ui/config'\nimport { layoutFooterProps } from './props'\nimport { useLayoutState, useMediaQuery } from './helper'\n\nexport default defineComponent({\n name: 'LayoutFooter',\n props: layoutFooterProps,\n setup(_props, { slots }) {\n const props = useProps('layoutFooter', _props, {\n tag: 'footer',\n copyright: '',\n links: () => [],\n verticalLinks: 'md'\n })\n\n const nh = useNameHelper('layout')\n const layoutState = useLayoutState()\n const horizontalMatched = useMediaQuery(toRef(props, 'verticalLinks'))\n\n const className = computed(() => {\n return [\n nh.be('footer'),\n {\n [nh.bs('vars')]: !layoutState.isLayout,\n [nh.bem('footer', 'inherit')]: layoutState.isLayout || props.inherit\n },\n layoutState.classes.footer\n ]\n })\n\n function renderLinks() {\n if (!props.links?.length) {\n return <div role={'none'} aria-hidden style={'display: none'}></div>\n }\n\n return (\n <div\n class={[\n nh.be('links'),\n !horizontalMatched.value && nh.bem('links', 'vertical'),\n layoutState.classes.footerLinks\n ]}\n >\n <div class={nh.be('links-row')}>\n {props.links.map((group, index) => (\n <div\n key={index}\n class={[\n nh.be('link-group'),\n !horizontalMatched.value && nh.bem('link-group', 'vertical')\n ]}\n >\n <div class={[nh.be('link-name'), nh.bem('link-name', 'group')]}>\n {group.to ? (\n <Linker icon={group.icon} to={group.to} target={group.target}>\n {group.name}\n </Linker>\n ) : (\n [group.icon && <Icon icon={group.icon}></Icon>, group.name]\n )}\n {group.subname && <div class={nh.be('link-subname')}>{`- ${group.subname}`}</div>}\n </div>\n {group.children?.length\n ? group.children.map((link, index) => (\n <div key={index} class={nh.be('link')}>\n <Linker icon={link.icon} to={link.to} target={link.target}>\n {link.name}\n </Linker>\n {link.subname && (\n <div class={nh.be('link-subname')}>{`- ${link.subname}`}</div>\n )}\n </div>\n ))\n : null}\n </div>\n ))}\n </div>\n </div>\n )\n }\n\n return () => {\n const CustomTag = (props.tag || 'footer') as any\n\n return (\n <CustomTag class={className.value}>\n {slots.links ? renderSlot(slots, 'links') : renderLinks()}\n <div class={[nh.be('copyright'), layoutState.classes.copyright]}>\n {slots.copyright ? slots.copyright() : props.copyright}\n </div>\n </CustomTag>\n )\n }\n }\n})\n"],"names":["defineComponent","name","props","layoutFooterProps","setup","_props","slots","useProps","tag","copyright","links","verticalLinks","nh","useNameHelper","layoutState","useLayoutState","horizontalMatched","useMediaQuery","toRef","className","computed","be","bs","isLayout","bem","inherit","classes","footer","renderLinks","length","_createVNode","value","footerLinks","map","group","index","to","Linker","icon","target","default","Icon","subname","children","link","CustomTag","renderSlot"],"mappings":"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"}