UNPKG

choerodon-ui

Version:

An enterprise-class UI design language and React-based implementation

254 lines (219 loc) 6.66 kB
import { isArrayLike } from 'mobx'; import isNumber from 'lodash/isNumber'; import isString from 'lodash/isString'; import isObject from 'lodash/isObject'; import { pxToRem } from '../../../es/_util/UnitConvertor'; import { LabelLayout, RequiredMarkAlign, SpacingType } from './enum'; export var defaultLabelWidth = 100; export var defaultLabelLayout = LabelLayout.horizontal; export var defaultColumns = 1; export var FIELD_SUFFIX = 'field'; export function normalizeLabelWidth(labelWidth, columns) { if (isNumber(labelWidth) || labelWidth === 'auto') { return new Array(columns).fill(labelWidth); } var labelWidths = new Array(columns).fill(defaultLabelWidth); labelWidth.slice(0, columns).forEach(function (width, index) { return labelWidths[index] = width; }); return labelWidths; } export function getProperty(props, key, dataSet, record) { if (props[key]) { return props[key]; } var name = props.name; var field = dataSet && dataSet.getField(name); if (field) { var fieldProperty = field.get(key, record); if (fieldProperty) { return fieldProperty; } } } /** * 有ds时,仅以ds field属性为准;无ds则以组件属性为准 * @param props * @param key * @param dataSet * @param record * @returns */ export function getPropertyDSFirst(props, key, dataSet, record) { var name = props.name; var field = dataSet && dataSet.getField(name); if (field) { var fieldProperty = field.get(key, record); if (fieldProperty) { return fieldProperty; } } else if (props[key]) { return props[key]; } } export var defaultExcludeUseColonTag = ['div', 'button', 'Button']; export function hasParentElement(parentElement, tagName) { while (parentElement) { if (parentElement.tagName.toLowerCase() === tagName) { return true; } parentElement = parentElement.parentElement; } return false; } export function normalizeSeparateSpacing(separateSpacing) { if (isNumber(separateSpacing)) { return { width: separateSpacing, height: separateSpacing }; } if (isArrayLike(separateSpacing)) { return { width: separateSpacing[0] || 0, height: separateSpacing[1] || 0 }; } return separateSpacing; } var defaultSpacingType = SpacingType.between; export function normalizeSpacingType(spacingType) { if (isString(spacingType) && [SpacingType.around, SpacingType.evenly, SpacingType.between].includes(spacingType)) { return { width: spacingType, height: spacingType }; } if (isArrayLike(spacingType)) { return { width: spacingType[0] || defaultSpacingType, height: spacingType[1] || defaultSpacingType }; } if (isObject(spacingType)) { return spacingType; } return { width: defaultSpacingType, height: defaultSpacingType }; } export function getSpacingProperties(separateSpacing, spacingType, isHorizontal) { var properties = { paddingHorizontal: 0, paddingVertical: 0, marginHorizontal: 0, marginVertical: 0, style: {} }; var style = properties.style; var width = separateSpacing.width, height = separateSpacing.height; var spacingTypeH = spacingType.width, spacingTypeV = spacingType.height; var borderSpacing = []; var spacingWidth = width / 2; var spacingHeight = height / 2; switch (spacingTypeH) { case SpacingType.evenly: { if (isHorizontal) { properties.paddingHorizontal = spacingWidth; properties.marginHorizontal = spacingWidth; } else { borderSpacing[0] = width; } break; } case SpacingType.around: properties.paddingHorizontal = spacingWidth; break; default: properties.paddingHorizontal = spacingWidth; properties.marginHorizontal = -spacingWidth; break; } switch (spacingTypeV) { case SpacingType.evenly: borderSpacing[1] = height; break; case SpacingType.around: properties.paddingVertical = spacingHeight; break; default: properties.paddingVertical = spacingHeight; properties.marginVertical = -spacingHeight; break; } if (borderSpacing.length) { style.borderCollapse = 'separate'; style.borderSpacing = "".concat(pxToRem(borderSpacing[0] || 0), " ").concat(pxToRem(borderSpacing[1] || 0)); } var marginHorizontal = properties.marginHorizontal; if (marginHorizontal < 0) { style.marginRight = pxToRem(marginHorizontal); style.marginLeft = pxToRem(marginHorizontal); style.width = "calc(100% + ".concat(pxToRem(-marginHorizontal * 2), ")"); } else if (marginHorizontal > 0) { style.paddingRight = pxToRem(marginHorizontal); style.paddingLeft = pxToRem(marginHorizontal); } return properties; } export function getSpacingLabelStyle(properties, isHorizontal, rowIndex) { if (properties) { var paddingHorizontal = properties.paddingHorizontal, paddingVertical = properties.paddingVertical, marginVertical = properties.marginVertical; var style = {}; if (paddingHorizontal) { style.paddingLeft = pxToRem(paddingHorizontal); if (!isHorizontal) { style.paddingRight = pxToRem(paddingHorizontal); } } if (paddingVertical) { if (marginVertical && marginVertical === -paddingVertical) { if (rowIndex !== 0) { style.paddingTop = pxToRem(paddingVertical * 2); } } else { style.paddingTop = pxToRem(paddingVertical); style.paddingBottom = pxToRem(paddingVertical); } } return style; } } export function getSpacingFieldStyle(properties, isHorizontal, rowIndex) { if (properties) { var paddingHorizontal = properties.paddingHorizontal, paddingVertical = properties.paddingVertical, marginVertical = properties.marginVertical; var style = {}; if (paddingHorizontal) { style.paddingRight = pxToRem(paddingHorizontal); if (!isHorizontal) { style.paddingLeft = pxToRem(paddingHorizontal); } } if (paddingVertical) { if (marginVertical && marginVertical === -paddingVertical) { if (rowIndex !== 0) { style.paddingTop = pxToRem(paddingVertical * 2); } } else { style.paddingTop = pxToRem(paddingVertical); style.paddingBottom = pxToRem(paddingVertical); } } return style; } } export function getRequiredMarkAlign(align) { if ([RequiredMarkAlign.left, RequiredMarkAlign.right].includes(align)) { return align; } return RequiredMarkAlign.left; } //# sourceMappingURL=utils.js.map