element-plus
Version:
A Component Library for Vue 3
1 lines • 1.2 kB
Source Map (JSON)
{"version":3,"file":"container.mjs","names":[],"sources":["../../../../../../packages/components/container/src/container.vue"],"sourcesContent":["<template>\n <section :class=\"[ns.b(), ns.is('vertical', isVertical)]\">\n <slot />\n </section>\n</template>\n\n<script lang=\"ts\" setup>\nimport { computed, useSlots } from 'vue'\nimport { useNamespace } from '@element-plus/hooks'\n\nimport type { Component, VNode } from 'vue'\n\ninterface ContainerProps {\n /**\n * @description layout direction for child elements\n */\n direction?: 'horizontal' | 'vertical'\n}\n\ndefineOptions({\n name: 'ElContainer',\n})\n\nconst props = defineProps<ContainerProps>()\nconst slots = useSlots()\n\nconst ns = useNamespace('container')\n\nconst isVertical = computed(() => {\n if (props.direction === 'vertical') {\n return true\n } else if (props.direction === 'horizontal') {\n return false\n }\n if (slots && slots.default) {\n const vNodes: VNode[] = slots.default()\n return vNodes.some((vNode) => {\n const tag = (vNode.type as Component).name\n return tag === 'ElHeader' || tag === 'ElFooter'\n })\n } else {\n return false\n }\n})\n</script>\n"],"mappings":""}