UNPKG

element-plus

Version:

A Component Library for Vue 3

1 lines 9.05 kB
{"version":3,"file":"index.mjs","sources":["../../../../../../packages/components/descriptions/src/index.vue"],"sourcesContent":["<template>\n <div :class=\"descriptionKls\">\n <div\n v-if=\"title || extra || $slots.title || $slots.extra\"\n :class=\"ns.e('header')\"\n >\n <div :class=\"ns.e('title')\">\n <slot name=\"title\">{{ title }}</slot>\n </div>\n <div :class=\"ns.e('extra')\">\n <slot name=\"extra\">{{ extra }}</slot>\n </div>\n </div>\n\n <div :class=\"ns.e('body')\">\n <table :class=\"[ns.e('table'), ns.is('bordered', border)]\">\n <tbody>\n <template v-for=\"(row, index) in getRows()\" :key=\"index\">\n <el-descriptions-row :row=\"row\" />\n </template>\n </tbody>\n </table>\n </div>\n </div>\n</template>\n\n<script lang=\"ts\">\nimport { computed, defineComponent, provide } from 'vue'\nimport { isValidComponentSize } from '@element-plus/utils'\nimport { useNamespace, useSize } from '@element-plus/hooks'\nimport DescriptionsRow from './descriptions-row.vue'\nimport { elDescriptionsKey } from './token'\n\nimport type { PropType } from 'vue'\nimport type { ComponentSize } from '@element-plus/constants'\n\nexport default defineComponent({\n name: 'ElDescriptions',\n components: {\n [DescriptionsRow.name]: DescriptionsRow,\n },\n props: {\n border: {\n type: Boolean,\n default: false,\n },\n column: {\n type: Number,\n default: 3,\n },\n direction: {\n type: String as PropType<'horizontal' | 'vertical'>,\n default: 'horizontal',\n },\n size: {\n type: String as PropType<ComponentSize>,\n validator: isValidComponentSize,\n },\n title: {\n type: String,\n default: '',\n },\n extra: {\n type: String,\n default: '',\n },\n },\n setup(props, { slots }) {\n provide(elDescriptionsKey, props)\n\n const descriptionsSize = useSize()\n const ns = useNamespace('descriptions')\n\n const descriptionKls = computed(() => [\n ns.b(),\n ns.is(ns.m(descriptionsSize.value), !!descriptionsSize.value),\n ])\n\n const flattedChildren = (children) => {\n const temp = Array.isArray(children) ? children : [children]\n const res = []\n temp.forEach((child) => {\n if (Array.isArray(child.children)) {\n res.push(...flattedChildren(child.children))\n } else {\n res.push(child)\n }\n })\n return res\n }\n\n const filledNode = (node, span, count, isLast = false) => {\n if (!node.props) {\n node.props = {}\n }\n if (span > count) {\n node.props.span = count\n }\n if (isLast) {\n // set the last span\n node.props.span = span\n }\n return node\n }\n\n const getRows = () => {\n const children = flattedChildren(slots.default?.()).filter(\n (node) => node?.type?.name === 'ElDescriptionsItem'\n )\n const rows = []\n let temp = []\n let count = props.column\n let totalSpan = 0 // all spans number of item\n\n children.forEach((node, index) => {\n const span = node.props?.span || 1\n\n if (index < children.length - 1) {\n totalSpan += span > count ? count : span\n }\n\n if (index === children.length - 1) {\n // calculate the last item span\n const lastSpan = props.column - (totalSpan % props.column)\n temp.push(filledNode(node, lastSpan, count, true))\n rows.push(temp)\n return\n }\n\n if (span < count) {\n count -= span\n temp.push(node)\n } else {\n temp.push(filledNode(node, span, count))\n rows.push(temp)\n count = props.column\n temp = []\n }\n })\n\n return rows\n }\n\n return {\n descriptionKls,\n getRows,\n ns,\n }\n },\n})\n</script>\n"],"names":["_resolveComponent","_openBlock","_createElementBlock","_normalizeClass","_createElementVNode","_renderSlot","_createTextVNode","_toDisplayString"],"mappings":"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"}