UNPKG

choerodon-ui

Version:

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

262 lines (212 loc) 7.43 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault")["default"]; Object.defineProperty(exports, "__esModule", { value: true }); exports.defaultLabelWidth = exports.defaultLabelLayout = exports.defaultExcludeUseColonTag = exports.defaultColumns = exports.FIELD_SUFFIX = void 0; exports.getProperty = getProperty; exports.getSpacingFieldStyle = getSpacingFieldStyle; exports.getSpacingLabelStyle = getSpacingLabelStyle; exports.getSpacingProperties = getSpacingProperties; exports.hasParentElement = hasParentElement; exports.normalizeLabelWidth = normalizeLabelWidth; exports.normalizeSeparateSpacing = normalizeSeparateSpacing; exports.normalizeSpacingType = normalizeSpacingType; var _mobx = require("mobx"); var _isNumber = _interopRequireDefault(require("lodash/isNumber")); var _isString = _interopRequireDefault(require("lodash/isString")); var _isObject = _interopRequireDefault(require("lodash/isObject")); var _UnitConvertor = require("../../../lib/_util/UnitConvertor"); var _enum = require("./enum"); var defaultLabelWidth = 100; exports.defaultLabelWidth = defaultLabelWidth; var defaultLabelLayout = _enum.LabelLayout.horizontal; exports.defaultLabelLayout = defaultLabelLayout; var defaultColumns = 1; exports.defaultColumns = defaultColumns; var FIELD_SUFFIX = 'field'; exports.FIELD_SUFFIX = FIELD_SUFFIX; function normalizeLabelWidth(labelWidth, columns) { if ((0, _isNumber["default"])(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; } 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; } } } var defaultExcludeUseColonTag = ['div', 'button', 'Button']; exports.defaultExcludeUseColonTag = defaultExcludeUseColonTag; function hasParentElement(parentElement, tagName) { while (parentElement) { if (parentElement.tagName.toLowerCase() === tagName) { return true; } parentElement = parentElement.parentElement; } return false; } function normalizeSeparateSpacing(separateSpacing) { if ((0, _isNumber["default"])(separateSpacing)) { return { width: separateSpacing, height: separateSpacing }; } if ((0, _mobx.isArrayLike)(separateSpacing)) { return { width: separateSpacing[0] || 0, height: separateSpacing[1] || 0 }; } return separateSpacing; } var defaultSpacingType = _enum.SpacingType.between; function normalizeSpacingType(spacingType) { if ((0, _isString["default"])(spacingType) && [_enum.SpacingType.around, _enum.SpacingType.evenly, _enum.SpacingType.between].includes(spacingType)) { return { width: spacingType, height: spacingType }; } if ((0, _mobx.isArrayLike)(spacingType)) { return { width: spacingType[0] || defaultSpacingType, height: spacingType[1] || defaultSpacingType }; } if ((0, _isObject["default"])(spacingType)) { return spacingType; } return { width: defaultSpacingType, height: defaultSpacingType }; } 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 _enum.SpacingType.evenly: { if (isHorizontal) { properties.paddingHorizontal = spacingWidth; properties.marginHorizontal = spacingWidth; } else { borderSpacing[0] = width; } break; } case _enum.SpacingType.around: properties.paddingHorizontal = spacingWidth; break; default: properties.paddingHorizontal = spacingWidth; properties.marginHorizontal = -spacingWidth; break; } switch (spacingTypeV) { case _enum.SpacingType.evenly: borderSpacing[1] = height; break; case _enum.SpacingType.around: properties.paddingVertical = spacingHeight; break; default: properties.paddingVertical = spacingHeight; properties.marginVertical = -spacingHeight; break; } if (borderSpacing.length) { style.borderCollapse = 'separate'; style.borderSpacing = "".concat((0, _UnitConvertor.pxToRem)(borderSpacing[0] || 0), " ").concat((0, _UnitConvertor.pxToRem)(borderSpacing[1] || 0)); } var marginHorizontal = properties.marginHorizontal; if (marginHorizontal < 0) { style.marginRight = (0, _UnitConvertor.pxToRem)(marginHorizontal); style.marginLeft = (0, _UnitConvertor.pxToRem)(marginHorizontal); style.width = "calc(100% + ".concat((0, _UnitConvertor.pxToRem)(-marginHorizontal * 2), ")"); } else if (marginHorizontal > 0) { style.paddingRight = (0, _UnitConvertor.pxToRem)(marginHorizontal); style.paddingLeft = (0, _UnitConvertor.pxToRem)(marginHorizontal); } return properties; } function getSpacingLabelStyle(properties, isHorizontal, rowIndex) { if (properties) { var paddingHorizontal = properties.paddingHorizontal, paddingVertical = properties.paddingVertical, marginVertical = properties.marginVertical; var style = {}; if (paddingHorizontal) { style.paddingLeft = (0, _UnitConvertor.pxToRem)(paddingHorizontal); if (!isHorizontal) { style.paddingRight = (0, _UnitConvertor.pxToRem)(paddingHorizontal); } } if (paddingVertical) { if (marginVertical && marginVertical === -paddingVertical) { if (rowIndex !== 0) { style.paddingTop = (0, _UnitConvertor.pxToRem)(paddingVertical * 2); } } else { style.paddingTop = (0, _UnitConvertor.pxToRem)(paddingVertical); style.paddingBottom = (0, _UnitConvertor.pxToRem)(paddingVertical); } } return style; } } function getSpacingFieldStyle(properties, isHorizontal, rowIndex) { if (properties) { var paddingHorizontal = properties.paddingHorizontal, paddingVertical = properties.paddingVertical, marginVertical = properties.marginVertical; var style = {}; if (paddingHorizontal) { style.paddingRight = (0, _UnitConvertor.pxToRem)(paddingHorizontal); if (!isHorizontal) { style.paddingLeft = (0, _UnitConvertor.pxToRem)(paddingHorizontal); } } if (paddingVertical) { if (marginVertical && marginVertical === -paddingVertical) { if (rowIndex !== 0) { style.paddingTop = (0, _UnitConvertor.pxToRem)(paddingVertical * 2); } } else { style.paddingTop = (0, _UnitConvertor.pxToRem)(paddingVertical); style.paddingBottom = (0, _UnitConvertor.pxToRem)(paddingVertical); } } return style; } } //# sourceMappingURL=utils.js.map