UNPKG

choerodon-ui

Version:

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

756 lines (581 loc) 22.6 kB
"use strict"; var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard")["default"]; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault")["default"]; Object.defineProperty(exports, "__esModule", { value: true }); exports.copyToClipboard = copyToClipboard; exports.findCell = findCell; exports.findIndexedSibling = findIndexedSibling; exports.findRow = findRow; exports.getCachedRecords = getCachedRecords; exports.getCachedSelectableCounts = getCachedSelectableCounts; exports.getCachedSelectableRecords = getCachedSelectableRecords; exports.getCellVerticalSize = getCellVerticalSize; exports.getColumnKey = getColumnKey; exports.getColumnLock = getColumnLock; exports.getCount = getCount; exports.getCurrentSelectableCounts = getCurrentSelectableCounts; exports.getDateByISOWeek = getDateByISOWeek; exports.getEditorByColumnAndRecord = getEditorByColumnAndRecord; exports.getEditorByField = getEditorByField; exports.getHeader = getHeader; exports.getHeight = getHeight; exports.getMaxClientWidth = getMaxClientWidth; exports.getPaginationPosition = getPaginationPosition; exports.getPlaceholderByField = getPlaceholderByField; exports.getTableHeaderRows = getTableHeaderRows; exports.isCanEdictingRow = isCanEdictingRow; exports.isDisabledRow = isDisabledRow; exports.isDraggingStyle = isDraggingStyle; exports.isDropresult = isDropresult; exports.isInCellEditor = isInCellEditor; exports.isJsonString = isJsonString; exports.isSelectedRow = isSelectedRow; Object.defineProperty(exports, "isStickySupport", { enumerable: true, get: function get() { return _isStickySupport["default"]; } }); exports.onlyCustomizedColumn = onlyCustomizedColumn; exports.pasteFromClipboard = pasteFromClipboard; var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator")); var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator")); var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray")); var _typeof2 = _interopRequireDefault(require("@babel/runtime/helpers/typeof")); var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends")); var _react = _interopRequireWildcard(require("react")); var _moment = _interopRequireDefault(require("moment")); var _isString = _interopRequireDefault(require("lodash/isString")); var _attempt = _interopRequireDefault(require("lodash/attempt")); var _isError = _interopRequireDefault(require("lodash/isError")); var _warning = _interopRequireDefault(require("../../../lib/_util/warning")); var _UnitConvertor = require("../../../lib/_util/UnitConvertor"); var _isStickySupport = _interopRequireDefault(require("../../../lib/_util/isStickySupport")); 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 _Attachment = _interopRequireDefault(require("../attachment/Attachment")); var _SecretField = _interopRequireDefault(require("../secret-field/SecretField")); var _TableStore = require("./TableStore"); var _localeContext = require("../locale-context"); var _measureTextWidth = _interopRequireDefault(require("../_util/measureTextWidth")); var _enum3 = require("../button/enum"); function getEditorByField(field, record, isQueryField, isFlat) { var type = field.get('type', record); var name = field.name; var flatProps = isFlat ? { isFlat: isFlat, maxTagCount: 3 } : {}; if (field.get('lookupCode', record) || (0, _isString["default"])(field.get('lookupUrl', record)) || type !== _enum.FieldType.object && (field.get('lovCode', record) || field.getLookup(record) || field.get('options', record))) { if (field.get('parentField', record)) { return /*#__PURE__*/_react["default"].createElement(_TreeSelect["default"], (0, _extends2["default"])({}, flatProps)); } return /*#__PURE__*/_react["default"].createElement(_Select["default"], (0, _extends2["default"])({}, flatProps)); } if (field.get('lovCode', record)) { return /*#__PURE__*/_react["default"].createElement(_Lov["default"], (0, _extends2["default"])({}, flatProps)); } if (field.get('multiLine', record)) { return /*#__PURE__*/_react["default"].createElement(_Output["default"], null); } if (type === _enum.FieldType.bigNumber) { if (field.get('currency', record)) { return /*#__PURE__*/_react["default"].createElement(_Currency["default"], { isFlat: isFlat }); } return /*#__PURE__*/_react["default"].createElement(_NumberField["default"], (0, _extends2["default"])({}, flatProps)); } switch (type) { case _enum.FieldType["boolean"]: return isQueryField ? /*#__PURE__*/_react["default"].createElement(_Select["default"], (0, _extends2["default"])({ clearButton: true }, flatProps), /*#__PURE__*/_react["default"].createElement(_Option["default"], { value: field.get('trueValue', record) }, (0, _localeContext.$l)('Table', 'query_option_yes')), /*#__PURE__*/_react["default"].createElement(_Option["default"], { value: field.get('falseValue', record) }, (0, _localeContext.$l)('Table', 'query_option_no'))) : /*#__PURE__*/_react["default"].createElement(_CheckBox["default"], null); case _enum.FieldType.number: return /*#__PURE__*/_react["default"].createElement(_NumberField["default"], (0, _extends2["default"])({}, flatProps)); case _enum.FieldType.currency: return /*#__PURE__*/_react["default"].createElement(_Currency["default"], { isFlat: isFlat }); case _enum.FieldType.date: return /*#__PURE__*/_react["default"].createElement(_DatePicker["default"], { isFlat: isFlat }); case _enum.FieldType.dateTime: return /*#__PURE__*/_react["default"].createElement(_DateTimePicker["default"], { isFlat: isFlat }); case _enum.FieldType.time: return /*#__PURE__*/_react["default"].createElement(_TimePicker["default"], { isFlat: isFlat }); case _enum.FieldType.week: return /*#__PURE__*/_react["default"].createElement(_WeekPicker["default"], { isFlat: isFlat }); case _enum.FieldType.month: return /*#__PURE__*/_react["default"].createElement(_MonthPicker["default"], { isFlat: isFlat }); case _enum.FieldType.year: return /*#__PURE__*/_react["default"].createElement(_YearPicker["default"], { isFlat: isFlat }); case _enum.FieldType.intl: return /*#__PURE__*/_react["default"].createElement(_IntlField["default"], { isFlat: isFlat }); case _enum.FieldType.email: return /*#__PURE__*/_react["default"].createElement(_EmailField["default"], { isFlat: isFlat }); case _enum.FieldType.url: return /*#__PURE__*/_react["default"].createElement(_UrlField["default"], { isFlat: isFlat }); case _enum.FieldType.color: return /*#__PURE__*/_react["default"].createElement(_ColorPicker["default"], { isFlat: isFlat }); case _enum.FieldType.attachment: return /*#__PURE__*/_react["default"].createElement(_Attachment["default"], { viewMode: "popup", funcType: _enum3.FuncType.link }); case _enum.FieldType.secret: return /*#__PURE__*/_react["default"].createElement(_SecretField["default"], { isFlat: isFlat }); case _enum.FieldType.string: return /*#__PURE__*/_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 /*#__PURE__*/_react["default"].createElement(_TextField["default"], { isFlat: isFlat }); } } function getPlaceholderByField(field, record) { if (field) { var type = field.get('type', record); if (field.get('lookupCode', record) || (0, _isString["default"])(field.get('lookupUrl', record)) || type !== _enum.FieldType.object && (field.get('lovCode', record) || field.getLookup(record) || field.get('options', record))) { return undefined; } switch (type) { case _enum.FieldType.number: case _enum.FieldType.bigNumber: case _enum.FieldType.currency: case _enum.FieldType.string: case _enum.FieldType.intl: case _enum.FieldType.email: case _enum.FieldType.url: return (0, _localeContext.$l)('Table', 'please_enter'); default: } } } 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.dataSet.getField(name); if (field) { if (!field.get('unique', record) || field.get('multiple', record) || field.get('range', record) || record.status === _enum.RecordStatus.add) { return getEditorByField(field, record); } } else { return /*#__PURE__*/_react["default"].createElement(_TextField["default"], null); } } if ( /*#__PURE__*/(0, _react.isValidElement)(cellEditor)) { return cellEditor; } } if ( /*#__PURE__*/(0, _react.isValidElement)(editor)) { return editor; } } function isInCellEditor(element) { if (element) { return !!element.type.__IS_IN_CELL_EDITOR; } return false; } function findRow(tableStore, record) { var node = tableStore.node; var selector = "tr[data-index=\"".concat(record.id, "\"]"); return node.element.querySelector(selector); } function findCell(tableStore, name, lock, record, extra) { 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 = !(0, _isStickySupport["default"])() && 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, "\"]"); var td = node.element.querySelector(selector); if (td) { var cell = td.querySelector("span.".concat(prefixCls, "-cell-inner")); if (cell) { return cell; } if (!extra && tableStore.virtualCell && !td.childElementCount) { return td; } } return undefined; } } 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.status === _enum.RecordStatus["delete"] || record.disabled; } function isSelectedRow(record) { return record.isSelected; } function getLabel(dataSet, name) { var field = dataSet.getField(name); if (field) { return field.get('label'); } } function getHeader(column) { var header = column.header, name = column.name, title = column.title, dataSet = column.dataSet, aggregation = column.aggregation, group = column.group, groups = column.groups, aggregationTree = column.aggregationTree; if (typeof header === 'function') { var $title = title === undefined ? getLabel(dataSet, name) : title; var options = { dataSet: dataSet, name: name, title: $title, aggregation: aggregation, group: group, groups: groups, aggregationTree: aggregationTree }; try { return header(options, name, $title, aggregation); } catch (e) { return header(dataSet, name, $title, aggregation); } } if (title !== undefined) { return title; } if (header !== undefined) { return header; } return getLabel(dataSet, name); } 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 Math.round(el.getBoundingClientRect().height); } function getTableHeaderRows(columns) { var currentRow = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0; var rows = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : []; rows[currentRow] = rows[currentRow] || []; columns.forEach(function (column) { var hidden = column.hidden, rowSpan = column.rowSpan, colSpan = column.colSpan, children = column.children; if (!hidden) { if (rowSpan && rows.length < rowSpan) { while (rows.length < rowSpan) { rows.push([]); } } if (children) { getTableHeaderRows(children.columns, currentRow + rowSpan, rows); } if (colSpan !== 0) { rows[currentRow].push(column); } } }); return rows; } 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; } function getMaxClientWidth(element) { var textContent = element.textContent, ownerDocument = element.ownerDocument, clientWidth = element.clientWidth; if (textContent && ownerDocument) { var scrollWidth = element.scrollWidth; if (scrollWidth > clientWidth) { return scrollWidth; } var defaultView = ownerDocument.defaultView; if (defaultView) { var computedStyle = defaultView.getComputedStyle(element); var paddingLeft = computedStyle.paddingLeft, paddingRight = computedStyle.paddingRight; var pl = paddingLeft ? parseFloat(paddingLeft) : 0; var pr = paddingRight ? parseFloat(paddingRight) : 0; if (pl || pr) { var textWidth = (0, _measureTextWidth["default"])(textContent, computedStyle) + pl + pr; if (textWidth > clientWidth) { return textWidth; } } } } return clientWidth; } function onlyCustomizedColumn(tableStore) { var rightLeafs = tableStore.columnGroups.rightLeafs; return rightLeafs.length === 0 || rightLeafs[0].key === _TableStore.CUSTOMIZED_KEY; } function getCellVerticalSize(element, prefixCls) { var ownerDocument = element.ownerDocument; if (ownerDocument) { var defaultView = ownerDocument.defaultView; if (defaultView) { var cell = element.querySelector(".".concat(prefixCls, "-cell")); if (cell) { var style = defaultView.getComputedStyle(cell); return ((0, _UnitConvertor.toPx)(style.paddingTop) || 0) + ((0, _UnitConvertor.toPx)(style.paddingBottom) || 0) + ((0, _UnitConvertor.toPx)(style.borderTopWidth) || 0) + ((0, _UnitConvertor.toPx)(style.borderBottomWidth) || 0); } } } } function getCachedRecords(dataSet, type, showCachedTips) { if (showCachedTips) { switch (type) { case _enum.RecordCachedType.selected: return dataSet.cachedSelected; case _enum.RecordCachedType.add: return dataSet.cachedCreated; case _enum.RecordCachedType.update: return dataSet.cachedUpdated; case _enum.RecordCachedType["delete"]: return dataSet.cachedDestroyed; default: return []; } } return dataSet.cachedRecords; } function isRecordSelectable(record, filter) { return record.selectable && (!filter || filter(record)); } function getCachedSelectableRecords(dataSet, type, showCachedTips, filter) { return getCachedRecords(dataSet, type, showCachedTips).filter(function (r) { return isRecordSelectable(r, filter); }); } function getCurrentSelectableCounts(dataSet, filter) { return dataSet.records.reduce(function (_ref2, r) { var _ref3 = (0, _slicedToArray2["default"])(_ref2, 2), selectedLength = _ref3[0], recordLength = _ref3[1]; if (isRecordSelectable(r, filter)) { recordLength += 1; if (r.isSelected) { selectedLength += 1; } } return [selectedLength, recordLength]; }, [0, 0]); } function getCachedSelectableCounts(dataSet, type, showCachedTips, filter) { var cachedRecords = getCachedRecords(dataSet, type, showCachedTips); return cachedRecords.reduce(function (_ref4, r) { var _ref5 = (0, _slicedToArray2["default"])(_ref4, 2), selectedLength = _ref5[0], recordLength = _ref5[1]; if (isRecordSelectable(r, filter)) { recordLength += 1; if (r.isSelected) { selectedLength += 1; } } return [selectedLength, recordLength]; }, [0, 0]); } function getCount(dataSet, type) { switch (type) { case _enum.RecordCachedType.selected: return dataSet.isAllPageSelection ? dataSet.totalCount - dataSet.unSelected.length : dataSet.selected.length; case _enum.RecordCachedType.add: return dataSet.created.length; case _enum.RecordCachedType.update: return dataSet.updated.length; case _enum.RecordCachedType["delete"]: return dataSet.destroyed.length; default: return 0; } } /** * 是否是 JSON 字符串 * @param str * @returns */ function isJsonString(str) { var result = (0, _attempt["default"])(JSON.parse, str); return !(0, _isError["default"])(result); } /** * 将某一周转换对应周的第一天 * @param week * @returns */ function getDateByISOWeek(week) { var matches = String(week).match(/\d+/g); if (matches && matches.length > 1) { week = Number(matches[1]); var year = Number(matches[0]); var weekday = (0, _moment["default"])().isoWeekYear(year).isoWeek(week).isoWeekday(1); return weekday; } return (0, _moment["default"])(); } // 复制文本到剪贴板 function copyToClipboard() { if (navigator.clipboard) { return navigator.clipboard; } return { writeText: function writeText(text) { return new Promise(function (resolve) { var textArea = document.createElement("textarea"); textArea.value = text; // 将文本框添加到文档并选中文本 document.body.appendChild(textArea); textArea.select(); // 执行复制命令 document.execCommand('copy'); // 清理并删除文本框 document.body.removeChild(textArea); resolve(true); }); } }; } // 从剪贴板中粘贴文本 function pasteFromClipboard(_x) { return _pasteFromClipboard.apply(this, arguments); } function _pasteFromClipboard() { _pasteFromClipboard = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee(rootEl) { return _regenerator["default"].wrap(function _callee$(_context) { while (1) { switch (_context.prev = _context.next) { case 0: if (!navigator.clipboard) { _context.next = 2; break; } return _context.abrupt("return", navigator.clipboard.readText()); case 2: return _context.abrupt("return", new Promise(function (resolve) { var focusedCell = document.activeElement; var el = document.createElement('input'); var handlePasteEvent = function handlePasteEvent(event) { el.removeEventListener('paste', handlePasteEvent); var text = event.clipboardData && event.clipboardData.getData('text/plain'); if (focusedCell instanceof HTMLElement) { focusedCell.focus({ preventScroll: true }); } el.remove(); resolve(text || ''); }; el.addEventListener('paste', handlePasteEvent); rootEl.appendChild(el); el.focus({ preventScroll: true }); })); case 3: case "end": return _context.stop(); } } }, _callee); })); return _pasteFromClipboard.apply(this, arguments); } //# sourceMappingURL=utils.js.map