element-plus
Version:
A Component Library for Vue 3
1 lines • 8.23 kB
Source Map (JSON)
{"version":3,"file":"description2.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 { descriptionProps } from './description'\nimport { COMPONENT_NAME } from './constants'\n\nimport type { IDescriptionsInject } from './descriptions.type'\nimport type { DescriptionItemVNode } from './description-item'\n\ndefineOptions({\n name: 'ElDescriptions',\n})\n\nconst props = defineProps(descriptionProps)\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":["_openBlock","_createElementBlock","_normalizeClass","title","extra","$slots","_unref","_createElementVNode","_renderSlot","_createTextVNode","border","_Fragment","_renderList","_createBlock"],"mappings":"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"}