choerodon-ui
Version:
An enterprise-class UI design language and React-based implementation
262 lines (212 loc) • 7.43 kB
JavaScript
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
;