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