tdesign-vue-next
Version:
TDesign Component for vue-next
1 lines • 7.38 kB
Source Map (JSON)
{"version":3,"file":"space.mjs","sources":["../../../components/space/space.tsx"],"sourcesContent":["import { defineComponent, computed, CSSProperties, Fragment } from 'vue';\nimport props from './props';\nimport { useTNodeJSX, useChildSlots, usePrefixClass, useFlatChildrenSlots } from '@tdesign/shared-hooks';\n\nimport { isArray, isNumber, isString } from 'lodash-es';\n\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 const getFlatChildren = useFlatChildrenSlots();\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 function renderChildren() {\n const children = getFlatChildren(getChildSlots());\n const separatorContent = renderTNodeJSX('separator');\n return children.map((child, index) => {\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","getFlatChildren","useFlatChildrenSlots","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","child","index","showSeparator","length","_createVNode","_Fragment","spaceClassNames","_defineProperty","align","direction","breakLine"],"mappings":"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"}