choerodon-ui
Version:
An enterprise-class UI design language and React-based implementation
431 lines (326 loc) • 12.2 kB
JavaScript
"use strict";
var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard");
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.getEditorByField = getEditorByField;
exports.getAlignByField = getAlignByField;
exports.getPlacementByAlign = getPlacementByAlign;
exports.getEditorByColumnAndRecord = getEditorByColumnAndRecord;
exports.isInCellEditor = isInCellEditor;
exports.isStickySupport = isStickySupport;
exports.findCell = findCell;
exports.findFirstFocusableElement = findFirstFocusableElement;
exports.findFirstFocusableInvalidElement = findFirstFocusableInvalidElement;
exports.isCanEdictingRow = isCanEdictingRow;
exports.findIndexedSibling = findIndexedSibling;
exports.isDisabledRow = isDisabledRow;
exports.isSelectedRow = isSelectedRow;
exports.getHeader = getHeader;
exports.getColumnKey = getColumnKey;
exports.getColumnLock = getColumnLock;
exports.getPaginationPosition = getPaginationPosition;
exports.getHeight = getHeight;
exports.isDropresult = isDropresult;
exports.isDraggingStyle = isDraggingStyle;
var _typeof2 = _interopRequireDefault(require("@babel/runtime/helpers/typeof"));
var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
var _react = _interopRequireWildcard(require("react"));
var _isString = _interopRequireDefault(require("lodash/isString"));
var _warning = _interopRequireDefault(require("../../../lib/_util/warning"));
var _CheckBox = _interopRequireDefault(require("../check-box/CheckBox"));
var _enum = require("../data-set/enum");
var _Select = _interopRequireDefault(require("../select/Select"));
var _TreeSelect = _interopRequireDefault(require("../tree-select/TreeSelect"));
var _Option = _interopRequireDefault(require("../option/Option"));
var _Lov = _interopRequireDefault(require("../lov/Lov"));
var _NumberField = _interopRequireDefault(require("../number-field/NumberField"));
var _Currency = _interopRequireDefault(require("../currency/Currency"));
var _DatePicker = _interopRequireDefault(require("../date-picker/DatePicker"));
var _DateTimePicker = _interopRequireDefault(require("../date-time-picker/DateTimePicker"));
var _TimePicker = _interopRequireDefault(require("../time-picker/TimePicker"));
var _WeekPicker = _interopRequireDefault(require("../week-picker/WeekPicker"));
var _MonthPicker = _interopRequireDefault(require("../month-picker/MonthPicker"));
var _YearPicker = _interopRequireDefault(require("../year-picker/YearPicker"));
var _TextField = _interopRequireDefault(require("../text-field/TextField"));
var _enum2 = require("./enum");
var _IntlField = _interopRequireDefault(require("../intl-field/IntlField"));
var _UrlField = _interopRequireDefault(require("../url-field/UrlField"));
var _EmailField = _interopRequireDefault(require("../email-field/EmailField"));
var _ColorPicker = _interopRequireDefault(require("../color-picker/ColorPicker"));
var _Output = _interopRequireDefault(require("../output/Output"));
var _localeContext = require("../locale-context");
function getEditorByField(field, isQueryField, isFlat) {
var lookupCode = field.get('lookupCode');
var lookupUrl = field.get('lookupUrl');
var lovCode = field.get('lovCode');
var multiLine = field.get('multiLine');
var type = field.type,
name = field.name;
var flatProps = isFlat ? {
isFlat: isFlat,
maxTagCount: 2,
maxTagTextLength: 4
} : {};
if (lookupCode || (0, _isString["default"])(lookupUrl) || type !== _enum.FieldType.object && (lovCode || field.options)) {
if (field.get('parentField')) {
return _react["default"].createElement(_TreeSelect["default"], (0, _extends2["default"])({}, flatProps));
}
return _react["default"].createElement(_Select["default"], (0, _extends2["default"])({}, flatProps));
}
if (lovCode) {
return _react["default"].createElement(_Lov["default"], (0, _extends2["default"])({}, flatProps));
}
if (multiLine) {
return _react["default"].createElement(_Output["default"], null);
}
switch (type) {
case _enum.FieldType["boolean"]:
return isQueryField ? _react["default"].createElement(_Select["default"], {
clearButton: true
}, _react["default"].createElement(_Option["default"], {
value: true
}, (0, _localeContext.$l)('Table', 'query_option_yes')), _react["default"].createElement(_Option["default"], {
value: false
}, (0, _localeContext.$l)('Table', 'query_option_no'))) : _react["default"].createElement(_CheckBox["default"], null);
case _enum.FieldType.number:
return _react["default"].createElement(_NumberField["default"], (0, _extends2["default"])({}, flatProps));
case _enum.FieldType.currency:
return _react["default"].createElement(_Currency["default"], {
isFlat: isFlat
});
case _enum.FieldType.date:
return _react["default"].createElement(_DatePicker["default"], {
isFlat: isFlat
});
case _enum.FieldType.dateTime:
return _react["default"].createElement(_DateTimePicker["default"], {
isFlat: isFlat
});
case _enum.FieldType.time:
return _react["default"].createElement(_TimePicker["default"], {
isFlat: isFlat
});
case _enum.FieldType.week:
return _react["default"].createElement(_WeekPicker["default"], {
isFlat: isFlat
});
case _enum.FieldType.month:
return _react["default"].createElement(_MonthPicker["default"], {
isFlat: isFlat
});
case _enum.FieldType.year:
return _react["default"].createElement(_YearPicker["default"], {
isFlat: isFlat
});
case _enum.FieldType.intl:
return _react["default"].createElement(_IntlField["default"], {
isFlat: isFlat
});
case _enum.FieldType.email:
return _react["default"].createElement(_EmailField["default"], {
isFlat: isFlat
});
case _enum.FieldType.url:
return _react["default"].createElement(_UrlField["default"], {
isFlat: isFlat
});
case _enum.FieldType.color:
return _react["default"].createElement(_ColorPicker["default"], {
isFlat: isFlat
});
case _enum.FieldType.string:
return _react["default"].createElement(_TextField["default"], {
isFlat: isFlat
});
default:
(0, _warning["default"])(false, "Table auto editor: No editor exists on the field<".concat(name, ">'s type<").concat(type, ">, so use the TextField as default editor"));
return _react["default"].createElement(_TextField["default"], {
isFlat: isFlat
});
}
}
function getAlignByField(field) {
if (field) {
var type = field.type;
switch (type) {
case _enum.FieldType.number:
return _enum2.ColumnAlign.right;
case _enum.FieldType["boolean"]:
return _enum2.ColumnAlign.center;
default:
}
}
}
function getPlacementByAlign(align) {
if (align === _enum2.ColumnAlign.center) {
return 'bottom';
}
if (align === _enum2.ColumnAlign.right) {
return 'bottomRight';
}
return 'bottomLeft';
}
function getEditorByColumnAndRecord(column, record) {
var name = column.name,
editor = column.editor;
if (record) {
var cellEditor = editor;
if (typeof editor === 'function') {
cellEditor = editor(record, name);
}
if (cellEditor === true) {
var field = record.getField(name);
if (field) {
if (!field.get('unique') || field.get('multiple') || field.get('range') || record.status === _enum.RecordStatus.add) {
return getEditorByField(field);
}
}
}
if ((0, _react.isValidElement)(cellEditor)) {
return cellEditor;
}
}
}
function isInCellEditor(element) {
if (element) {
return !!element.type.__IS_IN_CELL_EDITOR;
}
return false;
}
var STICKY_SUPPORT;
function isStickySupport() {
if (STICKY_SUPPORT !== undefined) {
return STICKY_SUPPORT;
}
if (typeof window !== 'undefined') {
var vendorList = ['', '-webkit-', '-ms-', '-moz-', '-o-'];
var stickyElement = document.createElement('div');
STICKY_SUPPORT = vendorList.some(function (vendor) {
stickyElement.style.position = "".concat(vendor, "sticky");
if (stickyElement.style.position !== '') {
return true;
}
return false;
});
return STICKY_SUPPORT;
}
return true;
}
function findCell(tableStore, name, lock, record) {
var node = tableStore.node,
dataSet = tableStore.dataSet,
overflowX = tableStore.overflowX,
currentEditRecord = tableStore.currentEditRecord,
prefixCls = tableStore.prefixCls;
var current = record || currentEditRecord || dataSet.current;
if (name !== undefined && current && node.element) {
var wrapperSelector = !isStickySupport() && overflowX && lock ? ".".concat(prefixCls, "-fixed-").concat(lock === true ? _enum2.ColumnLock.left : lock, " ") : '';
var selector = "".concat(wrapperSelector, "tr[data-index=\"").concat(current.id, "\"] td[data-index=\"").concat(name, "\"] span.").concat(prefixCls, "-cell-inner");
return node.element.querySelector(selector);
}
}
function findFirstFocusableElement(node) {
if (node.children) {
var found;
(0, _toConsumableArray2["default"])(node.children).some(function (child) {
if (child.tabIndex > -1) {
found = child;
} else {
found = findFirstFocusableElement(child);
}
return !!found;
});
return found;
}
} // 用于校验定位 focus 第一个非法单元格
function findFirstFocusableInvalidElement(node) {
if (node.children) {
var found;
(0, _toConsumableArray2["default"])(node.children).some(function (child) {
if (child.tabIndex > -1 && child.className.includes('invalid')) {
found = child;
} else {
found = findFirstFocusableInvalidElement(child);
}
return !!found;
});
return found;
}
}
function isCanEdictingRow(element) {
var sibling = element;
if (!sibling || 'index' in sibling.dataset && !sibling.getAttributeNodeNS('', 'disabled') && (!document.defaultView || document.defaultView.getComputedStyle(sibling).display !== 'none')) {
return true;
}
return false;
}
function findIndexedSibling(element, direction) {
var sibling = direction > 0 ? element.nextElementSibling : element.previousElementSibling;
if (isCanEdictingRow(element)) {
return sibling;
}
return findIndexedSibling(sibling, direction);
}
function isDisabledRow(record) {
return record.isCached || record.status === _enum.RecordStatus["delete"];
}
function isSelectedRow(record) {
return record.isSelected;
}
function getHeader(column, dataSet) {
var header = column.header,
name = column.name,
title = column.title;
if (typeof header === 'function') {
return header(dataSet, name, title);
}
if (title !== undefined) {
return title;
}
if (header !== undefined) {
return header;
}
var field = dataSet.getField(name);
if (field) {
return field.get('label');
}
}
function getColumnKey(_ref) {
var name = _ref.name,
key = _ref.key;
return key || name;
}
function getColumnLock(lock) {
if (lock === true) {
return _enum2.ColumnLock.left;
}
if (lock) {
return lock;
}
return false;
}
function getPaginationPosition(pagination) {
if (pagination) {
var position = pagination.position;
if (position) {
return position;
}
}
return _enum2.TablePaginationPosition.bottom;
}
function getHeight(el) {
return el.getBoundingClientRect().height;
}
function isDropresult(dropResult) {
if (dropResult && dropResult.destination) {
return typeof dropResult.source.index === 'number' && (0, _typeof2["default"])(dropResult.destination) === 'object' && typeof dropResult.destination.index === 'number';
}
return false;
}
function isDraggingStyle(style) {
return style ? 'left' in style : false;
}
//# sourceMappingURL=utils.js.map