UNPKG

choerodon-ui

Version:

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

455 lines (384 loc) 13.4 kB
import _typeof from "@babel/runtime/helpers/typeof"; import _extends from "@babel/runtime/helpers/extends"; import React, { isValidElement } from 'react'; import isString from 'lodash/isString'; import { global } from 'choerodon-ui/shared'; import warning from '../../../es/_util/warning'; import ObserverCheckBox from '../check-box/CheckBox'; import { FieldType, RecordStatus } from '../data-set/enum'; import ObserverSelect from '../select/Select'; import TreeSelect from '../tree-select/TreeSelect'; import Option from '../option/Option'; import Lov from '../lov/Lov'; import ObserverNumberField from '../number-field/NumberField'; import Currency from '../currency/Currency'; import DatePicker from '../date-picker/DatePicker'; import DateTimePicker from '../date-time-picker/DateTimePicker'; import TimePicker from '../time-picker/TimePicker'; import WeekPicker from '../week-picker/WeekPicker'; import MonthPicker from '../month-picker/MonthPicker'; import YearPicker from '../year-picker/YearPicker'; import ObserverTextField from '../text-field/TextField'; import { ColumnLock, TablePaginationPosition } from './enum'; import IntlField from '../intl-field/IntlField'; import UrlField from '../url-field/UrlField'; import EmailField from '../email-field/EmailField'; import ColorPicker from '../color-picker/ColorPicker'; import Output from '../output/Output'; import Attachment from '../attachment/Attachment'; import SecretField from '../secret-field/SecretField'; import { CUSTOMIZED_KEY } from './TableStore'; import { $l } from '../locale-context'; import measureTextWidth from '../_util/measureTextWidth'; import { FuncType } from '../button/enum'; export function getEditorByField(field, record, isQueryField, isFlat) { var type = field.get('type', record); var name = field.name; var flatProps = isFlat ? { isFlat: isFlat, maxTagCount: 4, maxTagTextLength: 4 } : {}; if (field.get('lookupCode', record) || isString(field.get('lookupUrl', record)) || type !== FieldType.object && (field.get('lovCode', record) || field.getLookup(record) || field.get('options', record))) { if (field.get('parentField', record)) { return /*#__PURE__*/React.createElement(TreeSelect, _extends({}, flatProps)); } return /*#__PURE__*/React.createElement(ObserverSelect, _extends({}, flatProps)); } if (field.get('lovCode', record)) { return /*#__PURE__*/React.createElement(Lov, _extends({}, flatProps)); } if (field.get('multiLine', record)) { return /*#__PURE__*/React.createElement(Output, null); } if (type === FieldType.bigNumber) { if (field.get('currency', record)) { return /*#__PURE__*/React.createElement(Currency, { isFlat: isFlat }); } return /*#__PURE__*/React.createElement(ObserverNumberField, _extends({}, flatProps)); } switch (type) { case FieldType["boolean"]: return isQueryField ? /*#__PURE__*/React.createElement(ObserverSelect, _extends({ clearButton: true }, flatProps), /*#__PURE__*/React.createElement(Option, { value: field.get('trueValue', record) }, $l('Table', 'query_option_yes')), /*#__PURE__*/React.createElement(Option, { value: field.get('falseValue', record) }, $l('Table', 'query_option_no'))) : /*#__PURE__*/React.createElement(ObserverCheckBox, null); case FieldType.number: return /*#__PURE__*/React.createElement(ObserverNumberField, _extends({}, flatProps)); case FieldType.currency: return /*#__PURE__*/React.createElement(Currency, { isFlat: isFlat }); case FieldType.date: return /*#__PURE__*/React.createElement(DatePicker, { isFlat: isFlat }); case FieldType.dateTime: return /*#__PURE__*/React.createElement(DateTimePicker, { isFlat: isFlat }); case FieldType.time: return /*#__PURE__*/React.createElement(TimePicker, { isFlat: isFlat }); case FieldType.week: return /*#__PURE__*/React.createElement(WeekPicker, { isFlat: isFlat }); case FieldType.month: return /*#__PURE__*/React.createElement(MonthPicker, { isFlat: isFlat }); case FieldType.year: return /*#__PURE__*/React.createElement(YearPicker, { isFlat: isFlat }); case FieldType.intl: return /*#__PURE__*/React.createElement(IntlField, { isFlat: isFlat }); case FieldType.email: return /*#__PURE__*/React.createElement(EmailField, { isFlat: isFlat }); case FieldType.url: return /*#__PURE__*/React.createElement(UrlField, { isFlat: isFlat }); case FieldType.color: return /*#__PURE__*/React.createElement(ColorPicker, { isFlat: isFlat }); case FieldType.attachment: return /*#__PURE__*/React.createElement(Attachment, { viewMode: "popup", funcType: FuncType.link }); case FieldType.secret: return /*#__PURE__*/React.createElement(SecretField, { isFlat: isFlat }); case FieldType.string: return /*#__PURE__*/React.createElement(ObserverTextField, { isFlat: isFlat }); default: warning(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.createElement(ObserverTextField, { isFlat: isFlat }); } } export function getPlaceholderByField(field, record) { if (field) { var type = field.get('type', record); if (field.get('lookupCode', record) || isString(field.get('lookupUrl', record)) || type !== FieldType.object && (field.get('lovCode', record) || field.getLookup(record) || field.get('options', record))) { return undefined; } switch (type) { case FieldType.number: case FieldType.bigNumber: case FieldType.currency: case FieldType.string: case FieldType.intl: case FieldType.email: case FieldType.url: return $l('Table', 'please_enter'); default: } } } export 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 === RecordStatus.add) { return getEditorByField(field, record); } } else { return /*#__PURE__*/React.createElement(ObserverTextField, null); } } if ( /*#__PURE__*/isValidElement(cellEditor)) { return cellEditor; } } if ( /*#__PURE__*/isValidElement(editor)) { return editor; } } export function isInCellEditor(element) { if (element) { return !!element.type.__IS_IN_CELL_EDITOR; } return false; } export function isStickySupport() { var STICKY_SUPPORT = global.STICKY_SUPPORT; if (STICKY_SUPPORT !== undefined) { return STICKY_SUPPORT; } if (typeof window !== 'undefined') { var vendorList = ['', '-webkit-', '-ms-', '-moz-', '-o-']; var stickyElement = document.createElement('div'); var support = vendorList.some(function (vendor) { stickyElement.style.position = "".concat(vendor, "sticky"); if (stickyElement.style.position !== '') { return true; } return false; }); global.STICKY_SUPPORT = support; return support; } return true; } export function findRow(tableStore, record) { var node = tableStore.node; var selector = "tr[data-index=\"".concat(record.id, "\"]"); return node.element.querySelector(selector); } export 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 ? 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 (tableStore.virtualCell && !td.childElementCount) { return td; } } return undefined; } } export 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; } export function findIndexedSibling(element, direction) { var sibling = direction > 0 ? element.nextElementSibling : element.previousElementSibling; if (isCanEdictingRow(element)) { return sibling; } return findIndexedSibling(sibling, direction); } export function isDisabledRow(record) { return record.status === RecordStatus["delete"] || record.disabled; } export function isSelectedRow(record) { return record.isSelected; } function getLabel(dataSet, name) { var field = dataSet.getField(name); if (field) { return field.get('label'); } } export function getHeader(column) { var header = column.header, name = column.name, title = column.title, dataSet = column.dataSet, aggregation = column.aggregation, group = column.group, 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, 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); } export function getColumnKey(_ref) { var name = _ref.name, key = _ref.key; return key || name; } export function getColumnLock(lock) { if (lock === true) { return ColumnLock.left; } if (lock) { return lock; } return false; } export function getPaginationPosition(pagination) { if (pagination) { var position = pagination.position; if (position) { return position; } } return TablePaginationPosition.bottom; } export function getHeight(el) { return el.getBoundingClientRect().height; } export 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; } export function isDropresult(dropResult) { if (dropResult && dropResult.destination) { return typeof dropResult.source.index === 'number' && _typeof(dropResult.destination) === 'object' && typeof dropResult.destination.index === 'number'; } return false; } export function isDraggingStyle(style) { return style ? 'left' in style : false; } export 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 = measureTextWidth(textContent, computedStyle) + pl + pr; if (textWidth > clientWidth) { return textWidth; } } } } return clientWidth; } export function onlyCustomizedColumn(tableStore) { var rightLeafs = tableStore.columnGroups.rightLeafs; return rightLeafs.length === 0 || rightLeafs[0].key === CUSTOMIZED_KEY; } //# sourceMappingURL=utils.js.map