UNPKG

tdesign-vue-next

Version:
1 lines 7.6 kB
{"version":3,"file":"space.mjs","sources":["../../../components/space/space.tsx"],"sourcesContent":["import { defineComponent, computed, CSSProperties, Fragment, Comment, isVNode } from 'vue';\nimport props from './props';\nimport { usePrefixClass } from '../hooks/useConfig';\nimport { useTNodeJSX } from '../hooks/tnode';\nimport { useChildSlots } from '../hooks/slot';\nimport { isNumber } from 'lodash-es';\nimport { isString } from 'lodash-es';\nimport { isArray } from 'lodash-es';\nimport { getFlexGapPolyFill } from '@tdesign/common-js/utils/helper';\nimport { SizeEnum } from '../common';\n\nconst sizeMap = { small: '8px', medium: '16px', large: '24px' };\nconst defaultNeedPolyfill = getFlexGapPolyFill();\n\nexport default defineComponent({\n name: 'TSpace',\n props: {\n ...props,\n /** 强制使用 margin 间距代替 gap 属性间距(某些浏览器不支持 gap 属性) */\n forceFlexGapPolyfill: Boolean,\n },\n setup(props) {\n const COMPONENT_NAME = usePrefixClass('space');\n const renderTNodeJSX = useTNodeJSX();\n const getChildSlots = useChildSlots();\n\n const needPolyfill = computed(() => props.forceFlexGapPolyfill || defaultNeedPolyfill);\n\n const renderStyle = computed<CSSProperties>(() => {\n let renderGap = '';\n if (isArray(props.size)) {\n renderGap = props.size\n .map((s) => {\n if (isNumber(s)) return `${s}px`;\n if (isString(s) && ['small', 'medium', 'large'].includes(s)) return sizeMap[s as SizeEnum];\n return s;\n })\n .join(' ');\n } else if (isString(props.size)) {\n renderGap = ['small', 'medium', 'large'].includes(props.size) ? sizeMap[props.size as SizeEnum] : props.size;\n } else if (isNumber(props.size)) {\n renderGap = `${props.size}px`;\n }\n\n const style: { [key: string]: string | number } = {};\n if (needPolyfill.value) {\n const [columnGap, rowGap] = renderGap.split(' ');\n style['--td-space-column-gap'] = columnGap;\n style['--td-space-row-gap'] = rowGap || columnGap;\n } else {\n style.gap = renderGap;\n }\n return style;\n });\n\n function renderChildren() {\n const children = getChildSlots();\n const separatorContent = renderTNodeJSX('separator');\n return children\n .filter((child) => (isVNode(child) ? child.type !== Comment : true))\n .map((child, index) => {\n // filter last child\n const showSeparator = index + 1 !== children.length && separatorContent;\n return (\n <Fragment>\n <div class={`${COMPONENT_NAME.value}-item`}>{child}</div>\n {showSeparator && <div class={`${COMPONENT_NAME.value}-item-separator`}>{separatorContent}</div>}\n </Fragment>\n );\n });\n }\n\n return () => {\n const spaceClassNames = [\n `${COMPONENT_NAME.value}`,\n {\n [`${COMPONENT_NAME.value}-align-${props.align}`]: props.align,\n [`${COMPONENT_NAME.value}-${props.direction}`]: props.direction,\n [`${COMPONENT_NAME.value}--break-line`]: props.breakLine,\n [`${COMPONENT_NAME.value}--polyfill`]: needPolyfill.value,\n },\n ];\n\n return (\n <div class={spaceClassNames} style={renderStyle.value}>\n {renderChildren()}\n </div>\n );\n };\n },\n});\n"],"names":["sizeMap","small","medium","large","defaultNeedPolyfill","getFlexGapPolyFill","defineComponent","name","props","_objectSpread","forceFlexGapPolyfill","Boolean","setup","COMPONENT_NAME","usePrefixClass","renderTNodeJSX","useTNodeJSX","getChildSlots","useChildSlots","needPolyfill","computed","renderStyle","renderGap","isArray","size","map","s","isNumber","concat","isString","includes","join","style","value","_renderGap$split","split","_renderGap$split2","_slicedToArray","columnGap","rowGap","gap","renderChildren","children","separatorContent","filter","child","isVNode","type","Comment","index","showSeparator","length","_createVNode","_Fragment","spaceClassNames","_defineProperty","align","direction","breakLine"],"mappings":"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"}