xdesign-vue-next
Version:
XDesign Component for vue-next
1 lines • 11.5 kB
Source Map (JSON)
{"version":3,"file":"common.mjs","sources":["../../src/grid/common.ts"],"sourcesContent":["import { ref } from 'vue';\nimport isUndefined from 'lodash/isUndefined';\nimport isNumber from 'lodash/isNumber';\nimport isObject from 'lodash/isObject';\nimport isArray from 'lodash/isArray';\n\nimport { TdColProps, TdRowProps } from './type';\nimport { calcSize } from '../utils/responsive';\nimport { useListener } from '../hooks/useListener';\nimport { isServer } from '../utils/dom';\n\nexport interface RowProviderType {\n gutter: TdRowProps['gutter'];\n}\n\n/**\n * rowSizeHook\n * @returns\n */\nexport function useRowSize() {\n const size = ref(calcSize(isServer ? 0 : window.innerWidth));\n const updateSize = () => {\n size.value = calcSize(isServer ? 0 : window.innerWidth);\n };\n\n useListener('resize', updateSize);\n\n return size;\n}\n\n/**\n *\n * @param name\n * @param props\n * @returns\n */\nexport function getRowClasses(name: string, props: TdRowProps) {\n const { justify, align } = props;\n return [\n name,\n {\n [`${name}--${justify}`]: justify,\n // 区分 justify 传值\n [`${name}--align-${align}`]: align,\n },\n ];\n}\n\n/**\n *\n * @param gutter\n * @param currentSize\n * @returns\n */\nexport function calcRowStyle(gutter: TdRowProps['gutter'], currentSize: string) {\n const rowStyle = {};\n const getMarginStyle = (gutter: number) =>\n Object.assign(rowStyle, {\n marginLeft: `${gutter / -2}px`,\n marginRight: `${gutter / -2}px`,\n });\n\n const getRowGapStyle = (gutter: number) =>\n Object.assign(rowStyle, {\n rowGap: `${gutter}px`,\n });\n\n const strategyMap = {\n isNumber: (gutter: TdRowProps['gutter']) => {\n if (isNumber(gutter)) {\n getMarginStyle(gutter);\n }\n },\n isArray: (gutter: TdRowProps['gutter']) => {\n if (isArray(gutter) && gutter.length) {\n strategyMap.isNumber(gutter[0]);\n\n if (isNumber(gutter[1])) {\n getRowGapStyle(gutter[1]);\n }\n\n if (isObject(gutter[0]) && !isUndefined(gutter[0][currentSize])) {\n getMarginStyle(gutter[0][currentSize]);\n }\n\n if (isObject(gutter[1]) && !isUndefined(gutter[1][currentSize])) {\n getRowGapStyle(gutter[1][currentSize]);\n }\n }\n },\n isObject: (gutter: TdRowProps['gutter']) => {\n if (isObject(gutter) && gutter[currentSize]) {\n if (isArray(gutter) && gutter.length) {\n getMarginStyle(gutter[currentSize][0]);\n getRowGapStyle(gutter[currentSize][1]);\n } else {\n getMarginStyle(gutter[currentSize]);\n }\n }\n },\n };\n\n Object.keys(strategyMap).forEach((item) => {\n strategyMap[item](gutter);\n });\n\n return rowStyle;\n}\n\n/**\n * 解析Flex\n * @param flex\n * @returns\n */\nexport function parseFlex(flex: TdColProps['flex']): string {\n if (isNumber(flex)) {\n return `${flex} ${flex} 0`;\n }\n // 判断是否是flex\n if (/^\\d+(\\.\\d+)?(px|r?em|%)$/.test(flex)) {\n return `0 0 ${flex}`;\n }\n return flex;\n}\n\n/**\n * 计算ColPadding\n * @param gutter\n * @param currentSize\n * @returns\n */\nexport function calcColPadding(gutter: TdRowProps['gutter'], currentSize: string) {\n const paddingObj = {};\n const getPaddingStyle = (gutter: number) =>\n Object.assign(paddingObj, {\n paddingLeft: `${gutter / 2}px`,\n paddingRight: `${gutter / 2}px`,\n });\n\n const strategyMap = {\n isNumber: (gutter: TdRowProps['gutter']) => {\n if (isNumber(gutter)) {\n getPaddingStyle(gutter);\n }\n },\n isArray: (gutter: TdRowProps['gutter']) => {\n if (isArray(gutter) && gutter.length) {\n if (isNumber(gutter[0])) {\n getPaddingStyle(gutter[0]);\n }\n if (isObject(gutter[0]) && gutter[0][currentSize]) {\n getPaddingStyle(gutter[0][currentSize]);\n }\n }\n },\n isObject: (gutter: TdRowProps['gutter']) => {\n if (isObject(gutter) && gutter[currentSize]) {\n getPaddingStyle(gutter[currentSize]);\n }\n },\n };\n\n Object.keys(strategyMap).forEach((item) => {\n strategyMap[item](gutter);\n });\n\n return paddingObj;\n}\n\n/**\n * 获取 col size\n * @param props\n * @returns\n */\nexport function getColClasses(name: string, props: TdColProps) {\n const { span, order, offset, push, pull } = props;\n const allSizes = ['xs', 'sm', 'md', 'lg', 'xl', 'xxl'];\n\n const ColSizeClasses = allSizes.reduce((acc, currSize) => {\n const sizeProp = props[currSize];\n let sizeObject: any = {};\n if (isNumber(sizeProp)) {\n sizeObject.span = sizeProp;\n } else if (isObject(sizeProp)) {\n sizeObject = sizeProp || {};\n }\n return {\n ...acc,\n [`${name}-${currSize}-${sizeObject.span}`]: !isUndefined(sizeObject.span),\n [`${name}-${currSize}-order-${sizeObject.order}`]: parseInt(sizeObject.order, 10) >= 0,\n [`${name}-${currSize}-offset-${sizeObject.offset}`]: parseInt(sizeObject.offset, 10) >= 0,\n [`${name}-${currSize}-push-${sizeObject.push}`]: parseInt(sizeObject.push, 10) >= 0,\n [`${name}-${currSize}-pull-${sizeObject.pull}`]: parseInt(sizeObject.pull, 10) >= 0,\n };\n }, {});\n\n return {\n [`${name}`]: true,\n [`${name}-${span}`]: !isUndefined(span),\n [`${name}-order-${order}`]: order,\n [`${name}-offset-${offset}`]: offset,\n [`${name}-push-${push}`]: push,\n [`${name}-pull-${pull}`]: pull,\n ...ColSizeClasses,\n };\n}\n"],"names":["size","useListener","marginLeft","marginRight","isNumber","_isNumber","isArray","strategyMap","getRowGapStyle","_isObject","isUndefined","isObject","getMarginStyle","paddingLeft","paddingRight","getPaddingStyle","sizeObject"],"mappings":"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"}