UNPKG

element-plus

Version:

A Component Library for Vue 3

1 lines 7.79 kB
{"version":3,"file":"description.vue2.mjs","sources":["../../../../../../packages/components/descriptions/src/description.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\" setup>\nimport { computed, provide, useSlots } from 'vue'\nimport { flattedChildren } from '@element-plus/utils'\nimport { useNamespace } from '@element-plus/hooks'\nimport { useFormSize } from '@element-plus/components/form'\nimport ElDescriptionsRow from './descriptions-row.vue'\nimport { descriptionsKey } from './token'\nimport { COMPONENT_NAME } from './constants'\n\nimport type { DescriptionProps } from './description'\nimport type { IDescriptionsInject } from './descriptions.type'\nimport type { DescriptionItemVNode } from './description-item'\n\ndefineOptions({\n name: 'ElDescriptions',\n})\n\nconst props = withDefaults(defineProps<DescriptionProps>(), {\n column: 3,\n direction: 'horizontal',\n title: '',\n extra: '',\n})\n\nconst ns = useNamespace('descriptions')\n\nconst descriptionsSize = useFormSize()\n\nconst slots = useSlots()\n\nprovide(descriptionsKey, props as IDescriptionsInject)\n\nconst descriptionKls = computed(() => [ns.b(), ns.m(descriptionsSize.value)])\n\nconst filledNode = (\n node: DescriptionItemVNode,\n span: number,\n count: number,\n isLast = false\n) => {\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\nconst getRows = () => {\n if (!slots.default) return []\n\n const children = flattedChildren(slots.default()).filter(\n (node): node is DescriptionItemVNode =>\n (node as any)?.type?.name === COMPONENT_NAME\n )\n const rows: DescriptionItemVNode[][] = []\n let temp: DescriptionItemVNode[] = []\n let count = props.column\n let totalSpan = 0 // all spans number of item\n const rowspanTemp: number[] = [] // the number of row spans\n\n children.forEach((node, index) => {\n const span = node.props?.span || 1\n const rowspan = node.props?.rowspan || 1\n const rowNo = rows.length\n rowspanTemp[rowNo] ||= 0\n\n if (rowspan > 1) {\n for (let i = 1; i < rowspan; i++) {\n rowspanTemp[rowNo + i] ||= 0\n rowspanTemp[rowNo + i]++\n totalSpan++\n }\n }\n if (rowspanTemp[rowNo] > 0) {\n count -= rowspanTemp[rowNo]\n rowspanTemp[rowNo] = 0\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</script>\n"],"names":["_createElementBlock","$slots","_normalizeClass","_unref","_createElementVNode","_renderSlot","_openBlock","_Fragment","_renderList","_createBlock","ElDescriptionsRow"],"mappings":"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"}