3233 lines
89 KiB
JavaScript
3233 lines
89 KiB
JavaScript
/**
|
|
* Bundle of @devexpress/dx-react-grid-material-ui
|
|
* Generated: 2017-11-10
|
|
* Version: 1.0.0-beta.1
|
|
* License: https://js.devexpress.com/Licensing
|
|
*/
|
|
|
|
import React from 'react';
|
|
import PropTypes from 'prop-types';
|
|
import { ColumnChooser, DragDropContext, Grid, GroupPanelLayout, GroupingPanel, PagingPanel, StaticTableLayout, TableColumnReordering, TableColumnResizing, TableColumnVisibility, TableEditColumn, TableEditRow, TableFilterRow, TableGroupRow, TableHeaderRow, TableLayout, TableRowDetail, TableSelection, TableView, VirtualTableLayout } from '@devexpress/dx-react-grid';
|
|
import { withStyles } from 'material-ui/styles';
|
|
import { Button, Checkbox, Chip, IconButton, Input, Paper, Table, TableBody, TableCell, TableHead, TableRow, TableSortLabel, Tooltip, Typography } from 'material-ui';
|
|
import List, { ListItem, ListItemText } from 'material-ui/List';
|
|
import Checkbox$1 from 'material-ui/Checkbox';
|
|
import Input$1 from 'material-ui/Input';
|
|
import { MenuItem } from 'material-ui/Menu';
|
|
import Select from 'material-ui/Select';
|
|
import classNames from 'classnames';
|
|
import ChevronLeft from 'material-ui-icons/ChevronLeft';
|
|
import ChevronRight from 'material-ui-icons/ChevronRight';
|
|
import { firstRowOnPage, lastRowOnPage } from '@devexpress/dx-grid-core';
|
|
import { DragSource, Draggable, DropTarget, combineTemplates } from '@devexpress/dx-react-core';
|
|
import List$1 from 'material-ui-icons/List';
|
|
import ExpandMore from 'material-ui-icons/ExpandMore';
|
|
import IconButton$1 from 'material-ui/IconButton';
|
|
import { TableCell as TableCell$1 } from 'material-ui/Table';
|
|
import Toolbar from 'material-ui/Toolbar';
|
|
import Typography$1 from 'material-ui/Typography';
|
|
|
|
var styles$1 = function styles$$1(theme) {
|
|
return {
|
|
headingPanel: {
|
|
paddingLeft: '12px',
|
|
paddingRight: '12px',
|
|
paddingTop: '12px',
|
|
borderBottom: '1px solid ' + theme.palette.text.lightDivider
|
|
},
|
|
footerPanel: {
|
|
padding: '12px'
|
|
}
|
|
};
|
|
};
|
|
|
|
var Root = function Root(_ref) {
|
|
var headerTemplate = _ref.headerTemplate,
|
|
bodyTemplate = _ref.bodyTemplate,
|
|
footerTemplate = _ref.footerTemplate;
|
|
return React.createElement(
|
|
Paper,
|
|
null,
|
|
headerTemplate(),
|
|
bodyTemplate(),
|
|
footerTemplate()
|
|
);
|
|
};
|
|
|
|
Root.propTypes = {
|
|
headerTemplate: PropTypes.func.isRequired,
|
|
bodyTemplate: PropTypes.func.isRequired,
|
|
footerTemplate: PropTypes.func.isRequired
|
|
};
|
|
|
|
var HeaderBase = function HeaderBase(_ref2) {
|
|
var children = _ref2.children,
|
|
classes = _ref2.classes;
|
|
return children && React.createElement(
|
|
'div',
|
|
{ className: classes.headingPanel },
|
|
children
|
|
);
|
|
};
|
|
|
|
HeaderBase.propTypes = {
|
|
children: PropTypes.node,
|
|
classes: PropTypes.object.isRequired
|
|
};
|
|
|
|
HeaderBase.defaultProps = {
|
|
children: null
|
|
};
|
|
|
|
var Header = withStyles(styles$1, { name: 'GridLayout' })(HeaderBase);
|
|
|
|
var FooterBase = function FooterBase(_ref3) {
|
|
var children = _ref3.children,
|
|
classes = _ref3.classes;
|
|
return children && React.createElement(
|
|
'div',
|
|
{ className: classes.footerPanel },
|
|
children
|
|
);
|
|
};
|
|
|
|
FooterBase.propTypes = {
|
|
children: PropTypes.node,
|
|
classes: PropTypes.object.isRequired
|
|
};
|
|
|
|
FooterBase.defaultProps = {
|
|
children: null
|
|
};
|
|
|
|
var Footer = withStyles(styles$1, { name: 'GridLayout' })(FooterBase);
|
|
|
|
var asyncGenerator = function () {
|
|
function AwaitValue(value) {
|
|
this.value = value;
|
|
}
|
|
|
|
function AsyncGenerator(gen) {
|
|
var front, back;
|
|
|
|
function send(key, arg) {
|
|
return new Promise(function (resolve, reject) {
|
|
var request = {
|
|
key: key,
|
|
arg: arg,
|
|
resolve: resolve,
|
|
reject: reject,
|
|
next: null
|
|
};
|
|
|
|
if (back) {
|
|
back = back.next = request;
|
|
} else {
|
|
front = back = request;
|
|
resume(key, arg);
|
|
}
|
|
});
|
|
}
|
|
|
|
function resume(key, arg) {
|
|
try {
|
|
var result = gen[key](arg);
|
|
var value = result.value;
|
|
|
|
if (value instanceof AwaitValue) {
|
|
Promise.resolve(value.value).then(function (arg) {
|
|
resume("next", arg);
|
|
}, function (arg) {
|
|
resume("throw", arg);
|
|
});
|
|
} else {
|
|
settle(result.done ? "return" : "normal", result.value);
|
|
}
|
|
} catch (err) {
|
|
settle("throw", err);
|
|
}
|
|
}
|
|
|
|
function settle(type, value) {
|
|
switch (type) {
|
|
case "return":
|
|
front.resolve({
|
|
value: value,
|
|
done: true
|
|
});
|
|
break;
|
|
|
|
case "throw":
|
|
front.reject(value);
|
|
break;
|
|
|
|
default:
|
|
front.resolve({
|
|
value: value,
|
|
done: false
|
|
});
|
|
break;
|
|
}
|
|
|
|
front = front.next;
|
|
|
|
if (front) {
|
|
resume(front.key, front.arg);
|
|
} else {
|
|
back = null;
|
|
}
|
|
}
|
|
|
|
this._invoke = send;
|
|
|
|
if (typeof gen.return !== "function") {
|
|
this.return = undefined;
|
|
}
|
|
}
|
|
|
|
if (typeof Symbol === "function" && Symbol.asyncIterator) {
|
|
AsyncGenerator.prototype[Symbol.asyncIterator] = function () {
|
|
return this;
|
|
};
|
|
}
|
|
|
|
AsyncGenerator.prototype.next = function (arg) {
|
|
return this._invoke("next", arg);
|
|
};
|
|
|
|
AsyncGenerator.prototype.throw = function (arg) {
|
|
return this._invoke("throw", arg);
|
|
};
|
|
|
|
AsyncGenerator.prototype.return = function (arg) {
|
|
return this._invoke("return", arg);
|
|
};
|
|
|
|
return {
|
|
wrap: function (fn) {
|
|
return function () {
|
|
return new AsyncGenerator(fn.apply(this, arguments));
|
|
};
|
|
},
|
|
await: function (value) {
|
|
return new AwaitValue(value);
|
|
}
|
|
};
|
|
}();
|
|
|
|
|
|
|
|
|
|
|
|
var classCallCheck = function (instance, Constructor) {
|
|
if (!(instance instanceof Constructor)) {
|
|
throw new TypeError("Cannot call a class as a function");
|
|
}
|
|
};
|
|
|
|
var createClass = function () {
|
|
function defineProperties(target, props) {
|
|
for (var i = 0; i < props.length; i++) {
|
|
var descriptor = props[i];
|
|
descriptor.enumerable = descriptor.enumerable || false;
|
|
descriptor.configurable = true;
|
|
if ("value" in descriptor) descriptor.writable = true;
|
|
Object.defineProperty(target, descriptor.key, descriptor);
|
|
}
|
|
}
|
|
|
|
return function (Constructor, protoProps, staticProps) {
|
|
if (protoProps) defineProperties(Constructor.prototype, protoProps);
|
|
if (staticProps) defineProperties(Constructor, staticProps);
|
|
return Constructor;
|
|
};
|
|
}();
|
|
|
|
|
|
|
|
|
|
|
|
var defineProperty = function (obj, key, value) {
|
|
if (key in obj) {
|
|
Object.defineProperty(obj, key, {
|
|
value: value,
|
|
enumerable: true,
|
|
configurable: true,
|
|
writable: true
|
|
});
|
|
} else {
|
|
obj[key] = value;
|
|
}
|
|
|
|
return obj;
|
|
};
|
|
|
|
var _extends = Object.assign || function (target) {
|
|
for (var i = 1; i < arguments.length; i++) {
|
|
var source = arguments[i];
|
|
|
|
for (var key in source) {
|
|
if (Object.prototype.hasOwnProperty.call(source, key)) {
|
|
target[key] = source[key];
|
|
}
|
|
}
|
|
}
|
|
|
|
return target;
|
|
};
|
|
|
|
|
|
|
|
var inherits = function (subClass, superClass) {
|
|
if (typeof superClass !== "function" && superClass !== null) {
|
|
throw new TypeError("Super expression must either be null or a function, not " + typeof superClass);
|
|
}
|
|
|
|
subClass.prototype = Object.create(superClass && superClass.prototype, {
|
|
constructor: {
|
|
value: subClass,
|
|
enumerable: false,
|
|
writable: true,
|
|
configurable: true
|
|
}
|
|
});
|
|
if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
var objectWithoutProperties = function (obj, keys) {
|
|
var target = {};
|
|
|
|
for (var i in obj) {
|
|
if (keys.indexOf(i) >= 0) continue;
|
|
if (!Object.prototype.hasOwnProperty.call(obj, i)) continue;
|
|
target[i] = obj[i];
|
|
}
|
|
|
|
return target;
|
|
};
|
|
|
|
var possibleConstructorReturn = function (self, call) {
|
|
if (!self) {
|
|
throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
|
|
}
|
|
|
|
return call && (typeof call === "object" || typeof call === "function") ? call : self;
|
|
};
|
|
|
|
var rootTemplate = function rootTemplate(props) {
|
|
return React.createElement(Root, props);
|
|
};
|
|
var headerPlaceholderTemplate = function headerPlaceholderTemplate(props) {
|
|
return React.createElement(Header, props);
|
|
};
|
|
var footerPlaceholderTemplate = function footerPlaceholderTemplate(props) {
|
|
return React.createElement(Footer, props);
|
|
};
|
|
|
|
var Grid$1 = function Grid$$1(_ref) {
|
|
var children = _ref.children,
|
|
props = objectWithoutProperties(_ref, ['children']);
|
|
return React.createElement(
|
|
Grid,
|
|
_extends({
|
|
rootTemplate: rootTemplate,
|
|
headerPlaceholderTemplate: headerPlaceholderTemplate,
|
|
footerPlaceholderTemplate: footerPlaceholderTemplate
|
|
}, props),
|
|
children
|
|
);
|
|
};
|
|
|
|
Grid$1.propTypes = {
|
|
children: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.node), PropTypes.node]).isRequired
|
|
};
|
|
|
|
var ColumnChooserContainer = function ColumnChooserContainer(_ref) {
|
|
var children = _ref.children;
|
|
return React.createElement(
|
|
List,
|
|
{ dense: true },
|
|
children
|
|
);
|
|
};
|
|
|
|
ColumnChooserContainer.propTypes = {
|
|
children: PropTypes.arrayOf(PropTypes.node).isRequired
|
|
};
|
|
|
|
var ColumnChooserItem = function ColumnChooserItem(_ref) {
|
|
var _ref$item = _ref.item,
|
|
column = _ref$item.column,
|
|
hidden = _ref$item.hidden,
|
|
onToggle = _ref.onToggle;
|
|
|
|
var handleClick = function handleClick() {
|
|
return onToggle();
|
|
};
|
|
return React.createElement(
|
|
ListItem,
|
|
{
|
|
key: column.name,
|
|
button: true,
|
|
onClick: handleClick
|
|
},
|
|
React.createElement(Checkbox$1, {
|
|
checked: !hidden,
|
|
tabIndex: -1,
|
|
disableRipple: true
|
|
}),
|
|
React.createElement(ListItemText, { primary: column.title || column.name })
|
|
);
|
|
};
|
|
|
|
ColumnChooserItem.propTypes = {
|
|
item: PropTypes.shape({
|
|
column: PropTypes.shape({
|
|
name: PropTypes.string
|
|
}),
|
|
hidden: PropTypes.bool
|
|
}).isRequired,
|
|
onToggle: PropTypes.func
|
|
};
|
|
|
|
ColumnChooserItem.defaultProps = {
|
|
onToggle: function onToggle() {}
|
|
};
|
|
|
|
var containerTemplate = function containerTemplate(props) {
|
|
return React.createElement(ColumnChooserContainer, props);
|
|
};
|
|
var itemTemplate = function itemTemplate(props) {
|
|
return React.createElement(ColumnChooserItem, props);
|
|
};
|
|
|
|
var ColumnChooser$1 = function ColumnChooser$$1(props) {
|
|
return React.createElement(ColumnChooser, _extends({
|
|
containerTemplate: containerTemplate,
|
|
itemTemplate: itemTemplate
|
|
}, props));
|
|
};
|
|
|
|
var styles$2 = function styles$$1(theme) {
|
|
return {
|
|
container: {
|
|
cursor: 'move',
|
|
position: 'fixed',
|
|
zIndex: 1000,
|
|
left: 0,
|
|
top: 0,
|
|
display: 'inline-block'
|
|
},
|
|
column: {
|
|
paddingTop: theme.spacing.unit,
|
|
paddingBottom: theme.spacing.unit,
|
|
paddingLeft: theme.spacing.unit * 2,
|
|
paddingRight: theme.spacing.unit * 2,
|
|
float: 'right'
|
|
}
|
|
};
|
|
};
|
|
|
|
var ContainerBase = function ContainerBase(_ref) {
|
|
var clientOffset = _ref.clientOffset,
|
|
columns = _ref.columns,
|
|
columnTemplate = _ref.columnTemplate,
|
|
classes = _ref.classes;
|
|
return React.createElement(
|
|
Paper,
|
|
{
|
|
className: classes.container,
|
|
style: {
|
|
transform: 'translate(calc(' + clientOffset.x + 'px - 50%), calc(' + clientOffset.y + 'px - 50%))'
|
|
}
|
|
},
|
|
columns.map(function (column) {
|
|
return React.cloneElement(columnTemplate({ column: column }), { key: column.name });
|
|
})
|
|
);
|
|
};
|
|
|
|
ContainerBase.propTypes = {
|
|
clientOffset: PropTypes.shape({
|
|
x: PropTypes.number.isRequired,
|
|
y: PropTypes.number.isRequired
|
|
}).isRequired,
|
|
columns: PropTypes.array.isRequired,
|
|
columnTemplate: PropTypes.func.isRequired,
|
|
classes: PropTypes.object.isRequired
|
|
};
|
|
|
|
var Container = withStyles(styles$2, { name: 'DragDrop' })(ContainerBase);
|
|
|
|
var ColumnBase = function ColumnBase(_ref2) {
|
|
var column = _ref2.column,
|
|
classes = _ref2.classes;
|
|
return React.createElement(
|
|
Typography,
|
|
{
|
|
className: classes.column,
|
|
type: 'body1',
|
|
component: 'p'
|
|
},
|
|
column.title
|
|
);
|
|
};
|
|
|
|
ColumnBase.propTypes = {
|
|
column: PropTypes.object.isRequired,
|
|
classes: PropTypes.object.isRequired
|
|
};
|
|
|
|
var Column = withStyles(styles$2, { name: 'DragDrop' })(ColumnBase);
|
|
|
|
var containerTemplate$1 = function containerTemplate(props) {
|
|
return React.createElement(Container, props);
|
|
};
|
|
var columnTemplate = function columnTemplate(props) {
|
|
return React.createElement(Column, props);
|
|
};
|
|
|
|
var DragDropContext$1 = function (_React$PureComponent) {
|
|
inherits(DragDropContext$$1, _React$PureComponent);
|
|
|
|
function DragDropContext$$1() {
|
|
classCallCheck(this, DragDropContext$$1);
|
|
return possibleConstructorReturn(this, (DragDropContext$$1.__proto__ || Object.getPrototypeOf(DragDropContext$$1)).apply(this, arguments));
|
|
}
|
|
|
|
createClass(DragDropContext$$1, [{
|
|
key: 'render',
|
|
value: function render() {
|
|
return React.createElement(DragDropContext, _extends({
|
|
containerTemplate: containerTemplate$1,
|
|
columnTemplate: columnTemplate
|
|
}, this.props));
|
|
}
|
|
}]);
|
|
return DragDropContext$$1;
|
|
}(React.PureComponent);
|
|
|
|
var styles$4 = function styles$$1(theme) {
|
|
return {
|
|
pageSizeSelector: _extends({}, theme.typography.caption, {
|
|
float: 'right',
|
|
paddingRight: theme.spacing.unit * 5
|
|
}),
|
|
label: {
|
|
paddingRight: theme.spacing.unit * 3,
|
|
lineHeight: theme.spacing.unit * 5 + 'px',
|
|
float: 'left'
|
|
},
|
|
pageSizes: {
|
|
display: 'inline-block'
|
|
},
|
|
pageSizeTitle: {
|
|
width: 'auto',
|
|
marginRight: theme.spacing.unit / 2
|
|
},
|
|
inputRoot: {
|
|
paddingTop: theme.spacing.unit * 0.75,
|
|
float: 'right',
|
|
fontSize: theme.spacing.unit * 1.75,
|
|
textAlign: 'right'
|
|
},
|
|
select: {
|
|
padding: '0 ' + theme.spacing.unit * 3.25 + 'px 0 0'
|
|
},
|
|
selectIcon: {
|
|
top: 2
|
|
},
|
|
'@media (max-width: 768px)': {
|
|
label: {
|
|
display: 'none'
|
|
},
|
|
pageSizeSelector: {
|
|
paddingRight: theme.spacing.unit * 2
|
|
}
|
|
}
|
|
};
|
|
};
|
|
|
|
var PageSizeSelectorBase = function PageSizeSelectorBase(_ref) {
|
|
var pageSize = _ref.pageSize,
|
|
onPageSizeChange = _ref.onPageSizeChange,
|
|
allowedPageSizes = _ref.allowedPageSizes,
|
|
getMessage = _ref.getMessage,
|
|
classes = _ref.classes;
|
|
|
|
var showAll = getMessage('showAll');
|
|
return React.createElement(
|
|
'div',
|
|
{ className: classes.pageSizeSelector },
|
|
React.createElement(
|
|
'span',
|
|
{ className: classes.label },
|
|
getMessage('rowsPerPage')
|
|
),
|
|
React.createElement(
|
|
Select,
|
|
{
|
|
value: pageSize,
|
|
onChange: function onChange(event) {
|
|
return onPageSizeChange(event.target.value);
|
|
},
|
|
classes: {
|
|
select: classes.select,
|
|
icon: classes.selectIcon
|
|
},
|
|
InputClasses: { root: classes.inputRoot },
|
|
input: React.createElement(Input$1, { disableUnderline: true })
|
|
},
|
|
allowedPageSizes.map(function (item) {
|
|
return React.createElement(
|
|
MenuItem,
|
|
{ key: item, value: item },
|
|
item !== 0 ? item : showAll
|
|
);
|
|
})
|
|
)
|
|
);
|
|
};
|
|
|
|
PageSizeSelectorBase.propTypes = {
|
|
pageSize: PropTypes.number.isRequired,
|
|
onPageSizeChange: PropTypes.func.isRequired,
|
|
allowedPageSizes: PropTypes.arrayOf(PropTypes.number).isRequired,
|
|
classes: PropTypes.object.isRequired,
|
|
getMessage: PropTypes.func.isRequired
|
|
};
|
|
|
|
var PageSizeSelector = withStyles(styles$4, { name: 'PageSizeSelector' })(PageSizeSelectorBase);
|
|
|
|
var styles$5 = function styles$$1(theme) {
|
|
return {
|
|
pagination: {
|
|
float: 'right',
|
|
margin: 0
|
|
},
|
|
rowsLabel: _extends({}, theme.typography.caption, {
|
|
paddingRight: theme.spacing.unit * 5,
|
|
lineHeight: theme.spacing.unit * 5 + 'px'
|
|
}),
|
|
button: {
|
|
minWidth: theme.spacing.unit * 2,
|
|
height: theme.spacing.unit * 5
|
|
},
|
|
activeButton: {
|
|
fontWeight: 'bold'
|
|
},
|
|
arrowButton: {
|
|
width: theme.spacing.unit * 4,
|
|
height: theme.spacing.unit * 4,
|
|
display: 'inline-block',
|
|
verticalAlign: 'middle'
|
|
},
|
|
prev: {
|
|
marginRight: 0
|
|
},
|
|
next: {
|
|
marginLeft: 0
|
|
},
|
|
'@media(max-width: 768px)': {
|
|
button: {
|
|
display: 'none'
|
|
},
|
|
prev: {
|
|
marginRight: theme.spacing.unit
|
|
},
|
|
next: {
|
|
marginLeft: theme.spacing.unit
|
|
},
|
|
rowsLabel: {
|
|
paddingRight: theme.spacing.unit * 2
|
|
}
|
|
}
|
|
};
|
|
};
|
|
|
|
var PageButton = function PageButton(_ref) {
|
|
var _classNames;
|
|
|
|
var text = _ref.text,
|
|
isActive = _ref.isActive,
|
|
isDisabled = _ref.isDisabled,
|
|
classes = _ref.classes,
|
|
onClick = _ref.onClick;
|
|
|
|
var buttonClasses = classNames((_classNames = {}, defineProperty(_classNames, classes.button, true), defineProperty(_classNames, classes.activeButton, isActive), _classNames));
|
|
|
|
return React.createElement(
|
|
Button,
|
|
{
|
|
className: buttonClasses,
|
|
disabled: isDisabled,
|
|
onClick: onClick
|
|
},
|
|
text
|
|
);
|
|
};
|
|
|
|
PageButton.propTypes = {
|
|
text: PropTypes.string.isRequired,
|
|
isActive: PropTypes.bool,
|
|
isDisabled: PropTypes.bool,
|
|
classes: PropTypes.object.isRequired,
|
|
onClick: PropTypes.func
|
|
};
|
|
|
|
PageButton.defaultProps = {
|
|
onClick: function onClick() {},
|
|
isDisabled: false,
|
|
isActive: false
|
|
};
|
|
|
|
var ellipsisSymbol = '\u2026';
|
|
|
|
var calculateStartPage = function calculateStartPage(currentPage, maxButtonCount, totalPageCount) {
|
|
return Math.max(Math.min(currentPage - Math.floor(maxButtonCount / 2, 10), totalPageCount - maxButtonCount + 1), 1);
|
|
};
|
|
|
|
var renderPageButtons = function renderPageButtons(currentPage, totalPageCount, classes, onCurrentPageChange) {
|
|
var pageButtons = [];
|
|
var maxButtonCount = 3;
|
|
var startPage = 1;
|
|
var endPage = totalPageCount || 1;
|
|
|
|
if (maxButtonCount < totalPageCount) {
|
|
startPage = calculateStartPage(currentPage + 1, maxButtonCount, totalPageCount);
|
|
endPage = startPage + maxButtonCount - 1;
|
|
}
|
|
if (startPage > 1) {
|
|
pageButtons.push(React.createElement(PageButton, {
|
|
key: 1,
|
|
text: String(1),
|
|
classes: classes,
|
|
onClick: function onClick() {
|
|
return onCurrentPageChange(0);
|
|
}
|
|
}));
|
|
|
|
if (startPage > 2) {
|
|
pageButtons.push(React.createElement(PageButton, {
|
|
key: 'ellipsisStart',
|
|
text: ellipsisSymbol,
|
|
classes: classes,
|
|
isDisabled: true
|
|
}));
|
|
}
|
|
}
|
|
|
|
var _loop = function _loop(page) {
|
|
pageButtons.push(React.createElement(PageButton, {
|
|
key: page,
|
|
text: String(page),
|
|
isActive: page === currentPage + 1,
|
|
classes: classes,
|
|
onClick: function onClick() {
|
|
return onCurrentPageChange(page - 1);
|
|
},
|
|
isDisabled: startPage === endPage
|
|
}));
|
|
};
|
|
|
|
for (var page = startPage; page <= endPage; page += 1) {
|
|
_loop(page);
|
|
}
|
|
|
|
if (endPage < totalPageCount) {
|
|
if (endPage < totalPageCount - 1) {
|
|
pageButtons.push(React.createElement(PageButton, {
|
|
key: 'ellipsisEnd',
|
|
text: ellipsisSymbol,
|
|
classes: classes,
|
|
isDisabled: true
|
|
}));
|
|
}
|
|
|
|
pageButtons.push(React.createElement(PageButton, {
|
|
key: totalPageCount,
|
|
text: String(totalPageCount),
|
|
classes: classes,
|
|
onClick: function onClick() {
|
|
return onCurrentPageChange(totalPageCount - 1);
|
|
}
|
|
}));
|
|
}
|
|
|
|
return pageButtons;
|
|
};
|
|
|
|
var PaginationBase = function PaginationBase(_ref2) {
|
|
var totalPages = _ref2.totalPages,
|
|
totalCount = _ref2.totalCount,
|
|
pageSize = _ref2.pageSize,
|
|
currentPage = _ref2.currentPage,
|
|
onCurrentPageChange = _ref2.onCurrentPageChange,
|
|
getMessage = _ref2.getMessage,
|
|
classes = _ref2.classes;
|
|
|
|
var from = firstRowOnPage(currentPage, pageSize, totalCount);
|
|
var to = lastRowOnPage(currentPage, pageSize, totalCount);
|
|
|
|
return React.createElement(
|
|
'div',
|
|
{ className: classes.pagination },
|
|
React.createElement(
|
|
'span',
|
|
{ className: classes.rowsLabel },
|
|
getMessage('info', { from: from, to: to, count: totalCount })
|
|
),
|
|
React.createElement(
|
|
IconButton,
|
|
{
|
|
className: classNames(classes.arrowButton, classes.prev),
|
|
disabled: currentPage === 0,
|
|
onClick: function onClick() {
|
|
return currentPage > 0 && onCurrentPageChange(currentPage - 1);
|
|
}
|
|
},
|
|
React.createElement(ChevronLeft, null)
|
|
),
|
|
renderPageButtons(currentPage, totalPages, classes, onCurrentPageChange),
|
|
React.createElement(
|
|
IconButton,
|
|
{
|
|
className: classNames(classes.arrowButton, classes.next),
|
|
disabled: currentPage === totalPages - 1 || totalCount === 0,
|
|
onClick: function onClick() {
|
|
return currentPage < totalPages - 1 && onCurrentPageChange(currentPage + 1);
|
|
}
|
|
},
|
|
React.createElement(ChevronRight, null)
|
|
)
|
|
);
|
|
};
|
|
|
|
PaginationBase.propTypes = {
|
|
totalPages: PropTypes.number.isRequired,
|
|
currentPage: PropTypes.number.isRequired,
|
|
onCurrentPageChange: PropTypes.func.isRequired,
|
|
classes: PropTypes.object.isRequired,
|
|
totalCount: PropTypes.number.isRequired,
|
|
pageSize: PropTypes.number.isRequired,
|
|
getMessage: PropTypes.func.isRequired
|
|
};
|
|
|
|
var Pagination = withStyles(styles$5, { name: 'Pagination' })(PaginationBase);
|
|
|
|
var styles$3 = {
|
|
pager: {
|
|
overflow: 'hidden'
|
|
}
|
|
};
|
|
|
|
var PagerBase = function PagerBase(_ref) {
|
|
var currentPage = _ref.currentPage,
|
|
allowedPageSizes = _ref.allowedPageSizes,
|
|
totalPages = _ref.totalPages,
|
|
pageSize = _ref.pageSize,
|
|
classes = _ref.classes,
|
|
_onCurrentPageChange = _ref.onCurrentPageChange,
|
|
onPageSizeChange = _ref.onPageSizeChange,
|
|
totalCount = _ref.totalCount,
|
|
getMessage = _ref.getMessage;
|
|
return React.createElement(
|
|
'div',
|
|
{ className: classes.pager },
|
|
React.createElement(Pagination, {
|
|
totalPages: totalPages,
|
|
totalCount: totalCount,
|
|
currentPage: currentPage,
|
|
onCurrentPageChange: function onCurrentPageChange(page) {
|
|
return _onCurrentPageChange(page);
|
|
},
|
|
pageSize: pageSize,
|
|
getMessage: getMessage
|
|
}),
|
|
!!allowedPageSizes.length && React.createElement(PageSizeSelector, {
|
|
pageSize: pageSize,
|
|
onPageSizeChange: onPageSizeChange,
|
|
allowedPageSizes: allowedPageSizes,
|
|
getMessage: getMessage
|
|
})
|
|
);
|
|
};
|
|
|
|
PagerBase.propTypes = {
|
|
currentPage: PropTypes.number.isRequired,
|
|
totalPages: PropTypes.number.isRequired,
|
|
allowedPageSizes: PropTypes.arrayOf(PropTypes.number).isRequired,
|
|
pageSize: PropTypes.number.isRequired,
|
|
classes: PropTypes.object.isRequired,
|
|
onCurrentPageChange: PropTypes.func.isRequired,
|
|
onPageSizeChange: PropTypes.func.isRequired,
|
|
totalCount: PropTypes.number.isRequired,
|
|
getMessage: PropTypes.func.isRequired
|
|
};
|
|
|
|
var Pager = withStyles(styles$3, { name: 'Pager' })(PagerBase);
|
|
|
|
var pagerTemplate = function pagerTemplate(props) {
|
|
return React.createElement(Pager, props);
|
|
};
|
|
|
|
var defaultMessages = {
|
|
showAll: 'All',
|
|
rowsPerPage: 'Rows per page:',
|
|
info: function info(_ref) {
|
|
var from = _ref.from,
|
|
to = _ref.to,
|
|
count = _ref.count;
|
|
return '' + from + (from < to ? '-' + to : '') + ' of ' + count;
|
|
}
|
|
};
|
|
|
|
var PagingPanel$1 = function (_React$PureComponent) {
|
|
inherits(PagingPanel$$1, _React$PureComponent);
|
|
|
|
function PagingPanel$$1() {
|
|
classCallCheck(this, PagingPanel$$1);
|
|
return possibleConstructorReturn(this, (PagingPanel$$1.__proto__ || Object.getPrototypeOf(PagingPanel$$1)).apply(this, arguments));
|
|
}
|
|
|
|
createClass(PagingPanel$$1, [{
|
|
key: 'render',
|
|
value: function render() {
|
|
var _props = this.props,
|
|
messages = _props.messages,
|
|
restProps = objectWithoutProperties(_props, ['messages']);
|
|
|
|
|
|
return React.createElement(PagingPanel, _extends({
|
|
pagerTemplate: pagerTemplate,
|
|
messages: _extends({}, defaultMessages, messages)
|
|
}, restProps));
|
|
}
|
|
}]);
|
|
return PagingPanel$$1;
|
|
}(React.PureComponent);
|
|
|
|
PagingPanel$1.propTypes = {
|
|
messages: PropTypes.shape({
|
|
showAll: PropTypes.string,
|
|
rowsPerPage: PropTypes.string,
|
|
info: PropTypes.oneOfType([PropTypes.string, PropTypes.func])
|
|
})
|
|
};
|
|
|
|
PagingPanel$1.defaultProps = {
|
|
messages: {}
|
|
};
|
|
|
|
var styles$6 = function styles$$1(theme) {
|
|
return {
|
|
panel: {
|
|
display: 'flex',
|
|
flexWrap: 'wrap',
|
|
width: '100%'
|
|
},
|
|
groupInfo: {
|
|
padding: theme.spacing.unit * 0.75 + 'px 0',
|
|
marginBottom: theme.spacing.unit * 1.5,
|
|
display: 'inline-block',
|
|
color: theme.typography.title.color
|
|
},
|
|
groupIcon: {
|
|
display: 'inline-block',
|
|
verticalAlign: 'middle'
|
|
}
|
|
};
|
|
};
|
|
|
|
var GroupPanelTextBase = function GroupPanelTextBase(_ref) {
|
|
var classes = _ref.classes,
|
|
allowDragging = _ref.allowDragging,
|
|
allowUngroupingByClick = _ref.allowUngroupingByClick,
|
|
getMessage = _ref.getMessage;
|
|
|
|
var message = getMessage('groupByColumn');
|
|
if (message) {
|
|
return React.createElement(
|
|
'span',
|
|
{ className: classes.groupInfo },
|
|
message
|
|
);
|
|
}
|
|
if (allowDragging) {
|
|
return React.createElement(
|
|
'span',
|
|
{ className: classes.groupInfo },
|
|
'Drag a column header here to group by that column'
|
|
);
|
|
}
|
|
if (allowUngroupingByClick) {
|
|
return React.createElement(
|
|
'span',
|
|
{ className: classes.groupInfo },
|
|
'Click \xA0',
|
|
React.createElement(
|
|
'span',
|
|
{ className: classes.groupIcon },
|
|
React.createElement(List$1, null)
|
|
),
|
|
'\xA0 icon in the column header to group by that column'
|
|
);
|
|
}
|
|
return React.createElement(
|
|
'span',
|
|
{ className: classes.groupInfo },
|
|
'Grouping is not available'
|
|
);
|
|
};
|
|
|
|
GroupPanelTextBase.propTypes = {
|
|
classes: PropTypes.object.isRequired,
|
|
allowDragging: PropTypes.bool,
|
|
allowUngroupingByClick: PropTypes.bool,
|
|
getMessage: PropTypes.func.isRequired
|
|
};
|
|
|
|
GroupPanelTextBase.defaultProps = {
|
|
allowDragging: false,
|
|
allowUngroupingByClick: false
|
|
};
|
|
|
|
var GroupPanelText = withStyles(styles$6, { name: 'GroupPanel' })(GroupPanelTextBase);
|
|
|
|
var PanelTemplateBase = function PanelTemplateBase(_ref2) {
|
|
var classes = _ref2.classes,
|
|
items = _ref2.items;
|
|
return React.createElement(
|
|
'div',
|
|
{ className: classes.panel },
|
|
items
|
|
);
|
|
};
|
|
|
|
PanelTemplateBase.propTypes = {
|
|
classes: PropTypes.object.isRequired,
|
|
items: PropTypes.arrayOf(PropTypes.node).isRequired
|
|
};
|
|
|
|
var PanelTemplate = withStyles(styles$6, { name: 'GroupPanel' })(PanelTemplateBase);
|
|
|
|
var panelTemplate = function panelTemplate(props) {
|
|
return React.createElement(PanelTemplate, props);
|
|
};
|
|
|
|
var GroupPanelBase = function GroupPanelBase(_ref3) {
|
|
var getMessage = _ref3.getMessage,
|
|
classes = _ref3.classes,
|
|
restProps = objectWithoutProperties(_ref3, ['getMessage', 'classes']);
|
|
|
|
var groupPanelText = React.createElement(GroupPanelText, {
|
|
allowDragging: restProps.allowDragging,
|
|
allowUngroupingByClick: restProps.allowUngroupingByClick,
|
|
getMessage: getMessage
|
|
});
|
|
return React.createElement(
|
|
'div',
|
|
{ className: classes.panel },
|
|
React.createElement(GroupPanelLayout, _extends({
|
|
groupByColumnText: groupPanelText,
|
|
panelTemplate: panelTemplate
|
|
}, restProps))
|
|
);
|
|
};
|
|
|
|
GroupPanelBase.propTypes = {
|
|
getMessage: PropTypes.func.isRequired,
|
|
classes: PropTypes.object.isRequired
|
|
};
|
|
|
|
var GroupPanel = withStyles(styles$6, { name: 'GroupPanel' })(GroupPanelBase);
|
|
|
|
var ENTER_KEY_CODE = 13;
|
|
var SPACE_KEY_CODE = 32;
|
|
|
|
var styles$7 = function styles$$1(theme) {
|
|
return {
|
|
button: {
|
|
marginRight: theme.spacing.unit,
|
|
marginBottom: '12px'
|
|
},
|
|
draftCell: {
|
|
opacity: 0.3
|
|
}
|
|
};
|
|
};
|
|
|
|
var label = function label(allowSorting, sortingDirection, column) {
|
|
var title = column.title || column.name;
|
|
return allowSorting ? React.createElement(
|
|
TableSortLabel,
|
|
{
|
|
active: !!sortingDirection,
|
|
direction: sortingDirection,
|
|
tabIndex: -1
|
|
},
|
|
title
|
|
) : title;
|
|
};
|
|
|
|
var GroupPanelItemBase = function GroupPanelItemBase(_ref) {
|
|
var _classNames;
|
|
|
|
var column = _ref.column,
|
|
draft = _ref.draft,
|
|
groupByColumn = _ref.groupByColumn,
|
|
allowUngroupingByClick = _ref.allowUngroupingByClick,
|
|
allowSorting = _ref.allowSorting,
|
|
sortingDirection = _ref.sortingDirection,
|
|
changeSortingDirection = _ref.changeSortingDirection,
|
|
classes = _ref.classes;
|
|
|
|
var chipClassNames = classNames((_classNames = {}, defineProperty(_classNames, classes.button, true), defineProperty(_classNames, classes.draftCell, draft), _classNames));
|
|
var onClick = function onClick(e) {
|
|
if (!allowSorting) return;
|
|
var isActionKeyDown = e.keyCode === ENTER_KEY_CODE || e.keyCode === SPACE_KEY_CODE;
|
|
var isMouseClick = e.keyCode === undefined;
|
|
var cancelSortingRelatedKey = e.metaKey || e.ctrlKey;
|
|
var cancel = isMouseClick && cancelSortingRelatedKey || isActionKeyDown && cancelSortingRelatedKey;
|
|
|
|
changeSortingDirection({
|
|
keepOther: cancelSortingRelatedKey,
|
|
cancel: cancel,
|
|
columnName: column.name
|
|
});
|
|
};
|
|
|
|
return React.createElement(Chip, _extends({
|
|
label: label(allowSorting, sortingDirection, column),
|
|
className: chipClassNames
|
|
}, allowUngroupingByClick ? { onRequestDelete: function onRequestDelete() {
|
|
return groupByColumn({ columnName: column.name });
|
|
} } : null, {
|
|
onClick: onClick
|
|
}));
|
|
};
|
|
|
|
GroupPanelItemBase.propTypes = {
|
|
column: PropTypes.shape({
|
|
title: PropTypes.string
|
|
}).isRequired,
|
|
draft: PropTypes.bool,
|
|
allowSorting: PropTypes.bool,
|
|
sortingDirection: PropTypes.oneOf(['asc', 'desc', null]),
|
|
changeSortingDirection: PropTypes.func,
|
|
groupByColumn: PropTypes.func,
|
|
allowUngroupingByClick: PropTypes.bool,
|
|
classes: PropTypes.object.isRequired
|
|
};
|
|
|
|
GroupPanelItemBase.defaultProps = {
|
|
draft: false,
|
|
allowSorting: false,
|
|
sortingDirection: undefined,
|
|
changeSortingDirection: undefined,
|
|
groupByColumn: undefined,
|
|
allowUngroupingByClick: false
|
|
};
|
|
|
|
var GroupPanelItem = withStyles(styles$7, { name: 'GroupPanelItem' })(GroupPanelItemBase);
|
|
|
|
var defaultCellTemplate = function defaultCellTemplate(props) {
|
|
return React.createElement(GroupPanelItem, props);
|
|
};
|
|
|
|
var defaultMessages$1 = {
|
|
groupByColumn: ''
|
|
};
|
|
|
|
var GroupingPanel$1 = function (_React$PureComponent) {
|
|
inherits(GroupingPanel$$1, _React$PureComponent);
|
|
|
|
function GroupingPanel$$1() {
|
|
classCallCheck(this, GroupingPanel$$1);
|
|
return possibleConstructorReturn(this, (GroupingPanel$$1.__proto__ || Object.getPrototypeOf(GroupingPanel$$1)).apply(this, arguments));
|
|
}
|
|
|
|
createClass(GroupingPanel$$1, [{
|
|
key: 'render',
|
|
value: function render() {
|
|
var _props = this.props,
|
|
groupPanelItemTemplate = _props.groupPanelItemTemplate,
|
|
messages = _props.messages,
|
|
restProps = objectWithoutProperties(_props, ['groupPanelItemTemplate', 'messages']);
|
|
|
|
|
|
return React.createElement(GroupingPanel, _extends({
|
|
groupPanelTemplate: function groupPanelTemplate(props) {
|
|
return React.createElement(GroupPanel, _extends({
|
|
groupPanelItemTemplate: combineTemplates(groupPanelItemTemplate, defaultCellTemplate)
|
|
}, props));
|
|
},
|
|
messages: _extends({}, defaultMessages$1, messages)
|
|
}, restProps));
|
|
}
|
|
}]);
|
|
return GroupingPanel$$1;
|
|
}(React.PureComponent);
|
|
|
|
GroupingPanel$1.propTypes = {
|
|
allowSorting: PropTypes.bool,
|
|
groupPanelItemTemplate: PropTypes.func,
|
|
messages: PropTypes.shape({
|
|
groupByColumn: PropTypes.string
|
|
})
|
|
};
|
|
|
|
GroupingPanel$1.defaultProps = {
|
|
allowSorting: false,
|
|
groupPanelItemTemplate: undefined,
|
|
messages: {}
|
|
};
|
|
|
|
var styles$8 = function styles$$1(theme) {
|
|
return {
|
|
toggleCell: {
|
|
textAlign: 'center',
|
|
textOverflow: 'initial',
|
|
paddingTop: 0,
|
|
paddingBottom: 0,
|
|
paddingLeft: theme.spacing.unit
|
|
},
|
|
toggleCellButton: {
|
|
verticalAlign: 'middle',
|
|
display: 'inline-block',
|
|
height: theme.spacing.unit * 5,
|
|
width: theme.spacing.unit * 5
|
|
}
|
|
};
|
|
};
|
|
|
|
var TableDetailToggleCellBase = function TableDetailToggleCellBase(_ref) {
|
|
var style = _ref.style,
|
|
expanded = _ref.expanded,
|
|
classes = _ref.classes,
|
|
toggleExpanded = _ref.toggleExpanded;
|
|
|
|
var handleClick = function handleClick() {
|
|
toggleExpanded();
|
|
};
|
|
return React.createElement(
|
|
TableCell,
|
|
{
|
|
className: classes.toggleCell,
|
|
style: style
|
|
},
|
|
React.createElement(
|
|
IconButton$1,
|
|
{
|
|
className: classes.toggleCellButton,
|
|
onClick: handleClick
|
|
},
|
|
expanded ? React.createElement(ExpandMore, null) : React.createElement(ChevronRight, null)
|
|
)
|
|
);
|
|
};
|
|
|
|
TableDetailToggleCellBase.propTypes = {
|
|
style: PropTypes.object,
|
|
expanded: PropTypes.bool,
|
|
classes: PropTypes.object.isRequired,
|
|
toggleExpanded: PropTypes.func
|
|
};
|
|
|
|
TableDetailToggleCellBase.defaultProps = {
|
|
style: null,
|
|
expanded: false,
|
|
toggleExpanded: function toggleExpanded() {}
|
|
};
|
|
|
|
var TableDetailToggleCell = withStyles(styles$8, { name: 'TableDetailToggleCell' })(TableDetailToggleCellBase);
|
|
|
|
var styles$9 = function styles$$1(theme) {
|
|
return {
|
|
active: {
|
|
backgroundColor: theme.palette.background.contentFrame
|
|
}
|
|
};
|
|
};
|
|
|
|
var TableDetailCellBase = function TableDetailCellBase(_ref) {
|
|
var colSpan = _ref.colSpan,
|
|
style = _ref.style,
|
|
template = _ref.template,
|
|
classes = _ref.classes;
|
|
return React.createElement(
|
|
TableCell,
|
|
{
|
|
style: style,
|
|
colSpan: colSpan,
|
|
className: classes.active
|
|
},
|
|
template()
|
|
);
|
|
};
|
|
|
|
TableDetailCellBase.propTypes = {
|
|
style: PropTypes.object,
|
|
colSpan: PropTypes.number,
|
|
template: PropTypes.func.isRequired,
|
|
classes: PropTypes.object.isRequired
|
|
};
|
|
|
|
TableDetailCellBase.defaultProps = {
|
|
style: null,
|
|
colSpan: 1
|
|
};
|
|
|
|
var TableDetailCell = withStyles(styles$9, { name: 'TableDetailCell' })(TableDetailCellBase);
|
|
|
|
var TableRow$1 = function TableRow$$1(_ref) {
|
|
var children = _ref.children,
|
|
style = _ref.style;
|
|
return React.createElement(
|
|
TableRow,
|
|
{
|
|
style: style
|
|
},
|
|
children
|
|
);
|
|
};
|
|
|
|
TableRow$1.propTypes = {
|
|
children: PropTypes.node,
|
|
style: PropTypes.object
|
|
};
|
|
|
|
TableRow$1.defaultProps = {
|
|
children: null,
|
|
style: null
|
|
};
|
|
|
|
var defaultDetailToggleCellTemplate = function defaultDetailToggleCellTemplate(props) {
|
|
return React.createElement(TableDetailToggleCell, props);
|
|
};
|
|
var defaultDetailCellTemplate = function defaultDetailCellTemplate(props) {
|
|
return React.createElement(TableDetailCell, props);
|
|
};
|
|
var defaultDetailRowTemplate = function defaultDetailRowTemplate(props) {
|
|
return React.createElement(TableRow$1, props);
|
|
};
|
|
|
|
var TableRowDetail$1 = function (_React$PureComponent) {
|
|
inherits(TableRowDetail$$1, _React$PureComponent);
|
|
|
|
function TableRowDetail$$1() {
|
|
classCallCheck(this, TableRowDetail$$1);
|
|
return possibleConstructorReturn(this, (TableRowDetail$$1.__proto__ || Object.getPrototypeOf(TableRowDetail$$1)).apply(this, arguments));
|
|
}
|
|
|
|
createClass(TableRowDetail$$1, [{
|
|
key: 'render',
|
|
value: function render() {
|
|
var _props = this.props,
|
|
detailCellTemplate = _props.detailCellTemplate,
|
|
detailRowTemplate = _props.detailRowTemplate,
|
|
detailToggleCellTemplate = _props.detailToggleCellTemplate,
|
|
restProps = objectWithoutProperties(_props, ['detailCellTemplate', 'detailRowTemplate', 'detailToggleCellTemplate']);
|
|
|
|
|
|
return React.createElement(TableRowDetail, _extends({
|
|
detailToggleCellTemplate: combineTemplates(detailToggleCellTemplate, defaultDetailToggleCellTemplate),
|
|
detailCellTemplate: combineTemplates(detailCellTemplate, defaultDetailCellTemplate),
|
|
detailRowTemplate: combineTemplates(detailRowTemplate, defaultDetailRowTemplate),
|
|
detailToggleCellWidth: 32
|
|
}, restProps));
|
|
}
|
|
}]);
|
|
return TableRowDetail$$1;
|
|
}(React.PureComponent);
|
|
|
|
TableRowDetail$1.propTypes = {
|
|
detailRowTemplate: PropTypes.func,
|
|
detailCellTemplate: PropTypes.func,
|
|
detailToggleCellTemplate: PropTypes.func
|
|
};
|
|
|
|
TableRowDetail$1.defaultProps = {
|
|
detailRowTemplate: undefined,
|
|
detailCellTemplate: undefined,
|
|
detailToggleCellTemplate: undefined
|
|
};
|
|
|
|
var styles$10 = function styles$$1(theme) {
|
|
return {
|
|
cell: {
|
|
cursor: 'pointer',
|
|
paddingLeft: theme.spacing.unit,
|
|
paddingRight: theme.spacing.unit,
|
|
paddingTop: theme.spacing.unit / 2 - 1
|
|
},
|
|
indentCell: {
|
|
padding: 0
|
|
},
|
|
groupButton: {
|
|
verticalAlign: 'middle',
|
|
display: 'inline-block',
|
|
marginRight: theme.spacing.unit,
|
|
height: theme.spacing.unit * 5,
|
|
width: theme.spacing.unit * 5
|
|
},
|
|
columnTitle: {
|
|
verticalAlign: 'middle'
|
|
}
|
|
};
|
|
};
|
|
|
|
var TableGroupCellBase = function TableGroupCellBase(_ref) {
|
|
var style = _ref.style,
|
|
colSpan = _ref.colSpan,
|
|
row = _ref.row,
|
|
column = _ref.column,
|
|
isExpanded = _ref.isExpanded,
|
|
toggleGroupExpanded = _ref.toggleGroupExpanded,
|
|
classes = _ref.classes,
|
|
children = _ref.children;
|
|
|
|
var handleClick = function handleClick() {
|
|
return toggleGroupExpanded();
|
|
};
|
|
|
|
return React.createElement(
|
|
TableCell$1,
|
|
{
|
|
colSpan: colSpan,
|
|
style: style,
|
|
className: classes.cell,
|
|
onClick: handleClick
|
|
},
|
|
React.createElement(
|
|
IconButton$1,
|
|
{
|
|
className: classes.groupButton
|
|
},
|
|
isExpanded ? React.createElement(ExpandMore, null) : React.createElement(ChevronRight, null)
|
|
),
|
|
React.createElement(
|
|
'span',
|
|
{ className: classes.columnTitle },
|
|
React.createElement(
|
|
'strong',
|
|
null,
|
|
column.title || column.name,
|
|
': '
|
|
),
|
|
children || row.value
|
|
)
|
|
);
|
|
};
|
|
|
|
TableGroupCellBase.propTypes = {
|
|
style: PropTypes.object,
|
|
colSpan: PropTypes.number,
|
|
row: PropTypes.object,
|
|
column: PropTypes.object,
|
|
isExpanded: PropTypes.bool,
|
|
toggleGroupExpanded: PropTypes.func,
|
|
classes: PropTypes.object.isRequired,
|
|
children: PropTypes.oneOfType([PropTypes.node, PropTypes.arrayOf(PropTypes.node)])
|
|
};
|
|
|
|
TableGroupCellBase.defaultProps = {
|
|
style: null,
|
|
colSpan: 1,
|
|
row: {},
|
|
column: {},
|
|
isExpanded: false,
|
|
toggleGroupExpanded: function toggleGroupExpanded() {},
|
|
children: undefined
|
|
};
|
|
|
|
var TableGroupCell = withStyles(styles$10, { name: 'TableGroupCell' })(TableGroupCellBase);
|
|
|
|
var defaultGroupCellTemplate = function defaultGroupCellTemplate(props) {
|
|
return React.createElement(TableGroupCell, props);
|
|
};
|
|
var defaultGroupRowTemplate = function defaultGroupRowTemplate(props) {
|
|
return React.createElement(TableRow$1, props);
|
|
};
|
|
|
|
var TableGroupRow$1 = function (_React$PureComponent) {
|
|
inherits(TableGroupRow$$1, _React$PureComponent);
|
|
|
|
function TableGroupRow$$1() {
|
|
classCallCheck(this, TableGroupRow$$1);
|
|
return possibleConstructorReturn(this, (TableGroupRow$$1.__proto__ || Object.getPrototypeOf(TableGroupRow$$1)).apply(this, arguments));
|
|
}
|
|
|
|
createClass(TableGroupRow$$1, [{
|
|
key: 'render',
|
|
value: function render() {
|
|
var _props = this.props,
|
|
groupCellTemplate = _props.groupCellTemplate,
|
|
groupRowTemplate = _props.groupRowTemplate,
|
|
restProps = objectWithoutProperties(_props, ['groupCellTemplate', 'groupRowTemplate']);
|
|
|
|
|
|
return React.createElement(TableGroupRow, _extends({
|
|
groupCellTemplate: combineTemplates(groupCellTemplate, defaultGroupCellTemplate),
|
|
groupRowTemplate: combineTemplates(groupRowTemplate, defaultGroupRowTemplate),
|
|
groupIndentColumnWidth: 32
|
|
}, restProps));
|
|
}
|
|
}]);
|
|
return TableGroupRow$$1;
|
|
}(React.PureComponent);
|
|
|
|
TableGroupRow$1.propTypes = {
|
|
groupRowTemplate: PropTypes.func,
|
|
groupCellTemplate: PropTypes.func
|
|
};
|
|
|
|
TableGroupRow$1.defaultProps = {
|
|
groupRowTemplate: undefined,
|
|
groupCellTemplate: undefined
|
|
};
|
|
|
|
var styles$11 = function styles$$1(theme) {
|
|
return {
|
|
cell: {
|
|
overflow: 'visible',
|
|
paddingRight: 0,
|
|
paddingLeft: theme.spacing.unit
|
|
},
|
|
pointer: {
|
|
cursor: 'pointer'
|
|
}
|
|
};
|
|
};
|
|
|
|
var TableSelectAllCellBase = function TableSelectAllCellBase(_ref) {
|
|
var _classNames;
|
|
|
|
var style = _ref.style,
|
|
allSelected = _ref.allSelected,
|
|
someSelected = _ref.someSelected,
|
|
selectionAvailable = _ref.selectionAvailable,
|
|
toggleAll = _ref.toggleAll,
|
|
classes = _ref.classes;
|
|
|
|
var cellClasses = classNames((_classNames = {}, defineProperty(_classNames, classes.cell, true), defineProperty(_classNames, classes.pointer, selectionAvailable), _classNames));
|
|
|
|
return React.createElement(
|
|
TableCell,
|
|
{
|
|
padding: 'checkbox',
|
|
style: style,
|
|
className: cellClasses,
|
|
onClick: function onClick(e) {
|
|
if (!selectionAvailable) return;
|
|
|
|
e.stopPropagation();
|
|
toggleAll();
|
|
}
|
|
},
|
|
React.createElement(Checkbox, {
|
|
checked: allSelected,
|
|
indeterminate: someSelected,
|
|
disabled: !selectionAvailable
|
|
})
|
|
);
|
|
};
|
|
|
|
TableSelectAllCellBase.propTypes = {
|
|
style: PropTypes.object,
|
|
allSelected: PropTypes.bool,
|
|
someSelected: PropTypes.bool,
|
|
selectionAvailable: PropTypes.bool,
|
|
toggleAll: PropTypes.func,
|
|
classes: PropTypes.object.isRequired
|
|
};
|
|
|
|
TableSelectAllCellBase.defaultProps = {
|
|
style: null,
|
|
allSelected: false,
|
|
someSelected: false,
|
|
selectionAvailable: false,
|
|
toggleAll: function toggleAll() {}
|
|
};
|
|
|
|
var TableSelectAllCell = withStyles(styles$11, { name: 'TableSelectAllCell' })(TableSelectAllCellBase);
|
|
|
|
var styles$12 = function styles$$1(theme) {
|
|
return {
|
|
cell: {
|
|
overflow: 'visible',
|
|
paddingRight: 0,
|
|
paddingLeft: theme.spacing.unit * 1.5
|
|
},
|
|
checkbox: {
|
|
marginTop: '-1px',
|
|
marginBottom: '-1px',
|
|
width: theme.spacing.unit * 5,
|
|
height: theme.spacing.unit * 5
|
|
}
|
|
};
|
|
};
|
|
|
|
var TableSelectCellBase = function TableSelectCellBase(_ref) {
|
|
var style = _ref.style,
|
|
selected = _ref.selected,
|
|
changeSelected = _ref.changeSelected,
|
|
classes = _ref.classes;
|
|
return React.createElement(
|
|
TableCell,
|
|
{
|
|
padding: 'checkbox',
|
|
style: style,
|
|
className: classes.cell,
|
|
onClick: function onClick(e) {
|
|
e.stopPropagation();
|
|
changeSelected();
|
|
}
|
|
},
|
|
React.createElement(Checkbox, {
|
|
className: classes.checkbox,
|
|
checked: selected
|
|
})
|
|
);
|
|
};
|
|
|
|
TableSelectCellBase.defaultProps = {
|
|
style: null,
|
|
selected: false,
|
|
changeSelected: function changeSelected() {}
|
|
};
|
|
|
|
TableSelectCellBase.propTypes = {
|
|
style: PropTypes.object,
|
|
selected: PropTypes.bool,
|
|
changeSelected: PropTypes.func,
|
|
classes: PropTypes.object.isRequired
|
|
};
|
|
|
|
var TableSelectCell = withStyles(styles$12, { name: 'TableSelectCell' })(TableSelectCellBase);
|
|
|
|
var TableSelectRow = function TableSelectRow(_ref) {
|
|
var selected = _ref.selected,
|
|
children = _ref.children,
|
|
style = _ref.style,
|
|
changeSelected = _ref.changeSelected,
|
|
selectByRowClick = _ref.selectByRowClick;
|
|
return React.createElement(
|
|
TableRow,
|
|
{
|
|
style: style,
|
|
selected: selected,
|
|
onClick: function onClick(e) {
|
|
if (!selectByRowClick) return;
|
|
e.stopPropagation();
|
|
changeSelected();
|
|
}
|
|
},
|
|
children
|
|
);
|
|
};
|
|
|
|
TableSelectRow.propTypes = {
|
|
children: PropTypes.node,
|
|
changeSelected: PropTypes.func,
|
|
selected: PropTypes.bool,
|
|
selectByRowClick: PropTypes.bool,
|
|
style: PropTypes.object
|
|
};
|
|
|
|
TableSelectRow.defaultProps = {
|
|
children: null,
|
|
changeSelected: function changeSelected() {},
|
|
selected: false,
|
|
selectByRowClick: false,
|
|
style: null
|
|
};
|
|
|
|
var selectCellTemplate = function selectCellTemplate(props) {
|
|
return React.createElement(TableSelectCell, props);
|
|
};
|
|
var selectAllCellTemplate = function selectAllCellTemplate(props) {
|
|
return React.createElement(TableSelectAllCell, props);
|
|
};
|
|
var selectRowTemplate = function selectRowTemplate(props) {
|
|
return React.createElement(TableSelectRow, props);
|
|
};
|
|
|
|
var TableSelection$1 = function (_React$PureComponent) {
|
|
inherits(TableSelection$$1, _React$PureComponent);
|
|
|
|
function TableSelection$$1() {
|
|
classCallCheck(this, TableSelection$$1);
|
|
return possibleConstructorReturn(this, (TableSelection$$1.__proto__ || Object.getPrototypeOf(TableSelection$$1)).apply(this, arguments));
|
|
}
|
|
|
|
createClass(TableSelection$$1, [{
|
|
key: 'render',
|
|
value: function render() {
|
|
return React.createElement(TableSelection, _extends({
|
|
selectCellTemplate: selectCellTemplate,
|
|
selectRowTemplate: selectRowTemplate,
|
|
selectAllCellTemplate: selectAllCellTemplate,
|
|
selectionColumnWidth: 40
|
|
}, this.props));
|
|
}
|
|
}]);
|
|
return TableSelection$$1;
|
|
}(React.PureComponent);
|
|
|
|
var styles$13 = {
|
|
root: {
|
|
overflow: 'auto',
|
|
WebkitOverflowScrolling: 'touch'
|
|
}
|
|
};
|
|
|
|
var TableContainerBase = function TableContainerBase(_ref) {
|
|
var children = _ref.children,
|
|
classes = _ref.classes,
|
|
restProps = objectWithoutProperties(_ref, ['children', 'classes']);
|
|
return React.createElement(
|
|
'div',
|
|
_extends({
|
|
className: classes.root
|
|
}, restProps),
|
|
children
|
|
);
|
|
};
|
|
|
|
TableContainerBase.propTypes = {
|
|
children: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.node), PropTypes.node]).isRequired,
|
|
classes: PropTypes.object.isRequired
|
|
};
|
|
|
|
var TableContainer = withStyles(styles$13, { name: 'TableContainer' })(TableContainerBase);
|
|
|
|
var styles$14 = {
|
|
table: {
|
|
tableLayout: 'fixed'
|
|
},
|
|
headTable: {
|
|
position: 'sticky',
|
|
top: 0,
|
|
zIndex: 1,
|
|
background: 'white',
|
|
overflow: 'visible',
|
|
fallbacks: {
|
|
position: '-webkit-sticky'
|
|
}
|
|
}
|
|
};
|
|
|
|
var TableBase = function TableBase(_ref) {
|
|
var _classNames;
|
|
|
|
var children = _ref.children,
|
|
classes = _ref.classes,
|
|
use = _ref.use,
|
|
restProps = objectWithoutProperties(_ref, ['children', 'classes', 'use']);
|
|
return React.createElement(
|
|
Table,
|
|
_extends({
|
|
className: classNames((_classNames = {}, defineProperty(_classNames, classes.table, true), defineProperty(_classNames, classes.headTable, use === 'head'), _classNames))
|
|
}, restProps),
|
|
children
|
|
);
|
|
};
|
|
|
|
TableBase.propTypes = {
|
|
use: PropTypes.oneOf(['head']),
|
|
children: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.node), PropTypes.node]).isRequired,
|
|
classes: PropTypes.object.isRequired
|
|
};
|
|
|
|
TableBase.defaultProps = {
|
|
use: undefined
|
|
};
|
|
|
|
var Table$2 = withStyles(styles$14, { name: 'Table' })(TableBase);
|
|
|
|
var MINIMAL_COLUMN_WIDTH = 120;
|
|
|
|
var containerTemplate$2 = function containerTemplate(props) {
|
|
return React.createElement(TableContainer, props);
|
|
};
|
|
var tableTemplate = function tableTemplate(props) {
|
|
return React.createElement(Table$2, props);
|
|
};
|
|
var headTemplate = function headTemplate(props) {
|
|
return React.createElement(TableHead, props);
|
|
};
|
|
var bodyTemplate = function bodyTemplate(props) {
|
|
return React.createElement(TableBody, props);
|
|
};
|
|
|
|
var TableLayout$1 = function TableLayout$$1(_ref) {
|
|
var headerRows = _ref.headerRows,
|
|
bodyRows = _ref.bodyRows,
|
|
columns = _ref.columns,
|
|
cellTemplate = _ref.cellTemplate,
|
|
rowTemplate = _ref.rowTemplate;
|
|
return React.createElement(TableLayout, {
|
|
layoutComponent: StaticTableLayout,
|
|
headerRows: headerRows,
|
|
rows: bodyRows,
|
|
columns: columns,
|
|
minColumnWidth: MINIMAL_COLUMN_WIDTH,
|
|
containerTemplate: containerTemplate$2,
|
|
tableTemplate: tableTemplate,
|
|
headTemplate: headTemplate,
|
|
bodyTemplate: bodyTemplate,
|
|
rowTemplate: rowTemplate,
|
|
cellTemplate: cellTemplate
|
|
});
|
|
};
|
|
|
|
TableLayout$1.propTypes = {
|
|
headerRows: PropTypes.array.isRequired,
|
|
bodyRows: PropTypes.array.isRequired,
|
|
columns: PropTypes.array.isRequired,
|
|
cellTemplate: PropTypes.func.isRequired,
|
|
rowTemplate: PropTypes.func.isRequired
|
|
};
|
|
|
|
var styles$15 = function styles$$1(theme) {
|
|
return {
|
|
cell: {
|
|
paddingRight: theme.spacing.unit,
|
|
'& ~ $cell': {
|
|
paddingLeft: theme.spacing.unit
|
|
},
|
|
overflow: 'hidden',
|
|
textOverflow: 'ellipsis',
|
|
whiteSpace: 'nowrap'
|
|
},
|
|
cellRightAlign: {
|
|
textAlign: 'right'
|
|
}
|
|
};
|
|
};
|
|
|
|
var TableCellBase = function TableCellBase(_ref) {
|
|
var _classNames;
|
|
|
|
var style = _ref.style,
|
|
column = _ref.column,
|
|
value = _ref.value,
|
|
children = _ref.children,
|
|
classes = _ref.classes;
|
|
return React.createElement(
|
|
TableCell,
|
|
{
|
|
style: _extends({}, style),
|
|
className: classNames((_classNames = {}, defineProperty(_classNames, classes.cell, true), defineProperty(_classNames, classes.cellRightAlign, column.align === 'right'), _classNames))
|
|
},
|
|
children || value
|
|
);
|
|
};
|
|
|
|
TableCellBase.propTypes = {
|
|
style: PropTypes.object,
|
|
value: PropTypes.any,
|
|
column: PropTypes.object,
|
|
classes: PropTypes.object.isRequired,
|
|
children: PropTypes.oneOfType([PropTypes.node, PropTypes.arrayOf(PropTypes.node)])
|
|
};
|
|
|
|
TableCellBase.defaultProps = {
|
|
style: null,
|
|
value: undefined,
|
|
column: {},
|
|
children: undefined
|
|
};
|
|
|
|
var TableCell$2 = withStyles(styles$15, { name: 'TableCell' })(TableCellBase);
|
|
|
|
var styles$16 = {
|
|
cell: {
|
|
padding: 0
|
|
}
|
|
};
|
|
|
|
var TableStubCellBase = function TableStubCellBase(_ref) {
|
|
var style = _ref.style,
|
|
classes = _ref.classes;
|
|
return React.createElement(TableCell, {
|
|
style: style,
|
|
className: classes.cell
|
|
});
|
|
};
|
|
|
|
TableStubCellBase.propTypes = {
|
|
style: PropTypes.object,
|
|
classes: PropTypes.object.isRequired
|
|
};
|
|
|
|
TableStubCellBase.defaultProps = {
|
|
style: {}
|
|
};
|
|
|
|
var TableStubCell = withStyles(styles$16, { name: 'TableStubCell' })(TableStubCellBase);
|
|
|
|
var styles$17 = function styles$$1(theme) {
|
|
return {
|
|
cell: {
|
|
textAlign: 'center',
|
|
padding: theme.spacing.unit * 5 + 'px 0'
|
|
}
|
|
};
|
|
};
|
|
|
|
var TableNoDataCellBase = function TableNoDataCellBase(_ref) {
|
|
var style = _ref.style,
|
|
colSpan = _ref.colSpan,
|
|
getMessage = _ref.getMessage,
|
|
classes = _ref.classes;
|
|
return React.createElement(
|
|
TableCell,
|
|
{
|
|
style: style,
|
|
className: classes.cell,
|
|
colSpan: colSpan
|
|
},
|
|
React.createElement(
|
|
'big',
|
|
{ className: 'text-muted' },
|
|
getMessage('noData')
|
|
)
|
|
);
|
|
};
|
|
|
|
TableNoDataCellBase.propTypes = {
|
|
style: PropTypes.object,
|
|
colSpan: PropTypes.number,
|
|
getMessage: PropTypes.func.isRequired,
|
|
classes: PropTypes.object.isRequired
|
|
};
|
|
|
|
TableNoDataCellBase.defaultProps = {
|
|
style: null,
|
|
colSpan: 1
|
|
};
|
|
|
|
var TableNoDataCell = withStyles(styles$17, { name: 'TableNoDataCell' })(TableNoDataCellBase);
|
|
|
|
var tableLayoutTemplate = function tableLayoutTemplate(props) {
|
|
return React.createElement(TableLayout$1, props);
|
|
};
|
|
var defaultRowTemplate = function defaultRowTemplate(props) {
|
|
return React.createElement(TableRow$1, props);
|
|
};
|
|
var defaultNoDataRowTemplate = function defaultNoDataRowTemplate(props) {
|
|
return React.createElement(TableRow$1, props);
|
|
};
|
|
var defaultCellTemplate$1 = function defaultCellTemplate(props) {
|
|
return React.createElement(TableCell$2, props);
|
|
};
|
|
var defaultStubCellTemplate = function defaultStubCellTemplate(props) {
|
|
return React.createElement(TableStubCell, props);
|
|
};
|
|
var defaultNoDataCellTemplate = function defaultNoDataCellTemplate(props) {
|
|
return React.createElement(TableNoDataCell, props);
|
|
};
|
|
|
|
var defaultMessages$2 = {
|
|
noData: 'No data'
|
|
};
|
|
|
|
var TableView$1 = function (_React$PureComponent) {
|
|
inherits(TableView$$1, _React$PureComponent);
|
|
|
|
function TableView$$1() {
|
|
classCallCheck(this, TableView$$1);
|
|
return possibleConstructorReturn(this, (TableView$$1.__proto__ || Object.getPrototypeOf(TableView$$1)).apply(this, arguments));
|
|
}
|
|
|
|
createClass(TableView$$1, [{
|
|
key: 'render',
|
|
value: function render() {
|
|
var _props = this.props,
|
|
tableCellTemplate = _props.tableCellTemplate,
|
|
tableRowTemplate = _props.tableRowTemplate,
|
|
tableNoDataRowTemplate = _props.tableNoDataRowTemplate,
|
|
tableStubCellTemplate = _props.tableStubCellTemplate,
|
|
tableStubHeaderCellTemplate = _props.tableStubHeaderCellTemplate,
|
|
tableNoDataCellTemplate = _props.tableNoDataCellTemplate,
|
|
messages = _props.messages,
|
|
restProps = objectWithoutProperties(_props, ['tableCellTemplate', 'tableRowTemplate', 'tableNoDataRowTemplate', 'tableStubCellTemplate', 'tableStubHeaderCellTemplate', 'tableNoDataCellTemplate', 'messages']);
|
|
|
|
|
|
return React.createElement(TableView, _extends({
|
|
tableLayoutTemplate: tableLayoutTemplate,
|
|
tableRowTemplate: combineTemplates(tableRowTemplate, defaultRowTemplate),
|
|
tableNoDataRowTemplate: combineTemplates(tableNoDataRowTemplate, defaultNoDataRowTemplate),
|
|
tableCellTemplate: combineTemplates(tableCellTemplate, defaultCellTemplate$1),
|
|
tableStubCellTemplate: combineTemplates(tableStubCellTemplate, defaultStubCellTemplate),
|
|
tableStubHeaderCellTemplate: combineTemplates(tableStubHeaderCellTemplate, defaultStubCellTemplate),
|
|
tableNoDataCellTemplate: combineTemplates(tableNoDataCellTemplate, defaultNoDataCellTemplate),
|
|
messages: _extends({}, defaultMessages$2, messages)
|
|
}, restProps));
|
|
}
|
|
}]);
|
|
return TableView$$1;
|
|
}(React.PureComponent);
|
|
|
|
TableView$1.propTypes = {
|
|
tableCellTemplate: PropTypes.func,
|
|
tableRowTemplate: PropTypes.func,
|
|
tableNoDataRowTemplate: PropTypes.func,
|
|
tableStubCellTemplate: PropTypes.func,
|
|
tableStubHeaderCellTemplate: PropTypes.func,
|
|
tableNoDataCellTemplate: PropTypes.func,
|
|
messages: PropTypes.shape({
|
|
noData: PropTypes.string
|
|
})
|
|
};
|
|
|
|
TableView$1.defaultProps = {
|
|
tableCellTemplate: undefined,
|
|
tableRowTemplate: undefined,
|
|
tableNoDataRowTemplate: undefined,
|
|
tableStubCellTemplate: undefined,
|
|
tableStubHeaderCellTemplate: undefined,
|
|
tableNoDataCellTemplate: undefined,
|
|
messages: {}
|
|
};
|
|
|
|
var MINIMAL_COLUMN_WIDTH$1 = 120;
|
|
|
|
var containerTemplate$3 = function containerTemplate(props) {
|
|
return React.createElement(TableContainer, props);
|
|
};
|
|
var headTableTemplate = function headTableTemplate(props) {
|
|
return React.createElement(Table$2, _extends({ use: 'head' }, props));
|
|
};
|
|
var tableTemplate$1 = function tableTemplate(props) {
|
|
return React.createElement(Table$2, props);
|
|
};
|
|
var headTemplate$1 = function headTemplate(props) {
|
|
return React.createElement(TableHead, props);
|
|
};
|
|
var bodyTemplate$1 = function bodyTemplate(props) {
|
|
return React.createElement(TableBody, props);
|
|
};
|
|
|
|
var VirtualTableLayout$1 = function VirtualTableLayout$$1(_ref) {
|
|
var headerRows = _ref.headerRows,
|
|
bodyRows = _ref.bodyRows,
|
|
columns = _ref.columns,
|
|
cellTemplate = _ref.cellTemplate,
|
|
rowTemplate = _ref.rowTemplate,
|
|
height = _ref.height,
|
|
estimatedRowHeight = _ref.estimatedRowHeight;
|
|
return React.createElement(TableLayout, {
|
|
layoutComponent: VirtualTableLayout,
|
|
headerRows: headerRows,
|
|
rows: bodyRows,
|
|
columns: columns,
|
|
cellTemplate: cellTemplate,
|
|
rowTemplate: rowTemplate,
|
|
bodyTemplate: bodyTemplate$1,
|
|
headTemplate: headTemplate$1,
|
|
tableTemplate: tableTemplate$1,
|
|
headTableTemplate: headTableTemplate,
|
|
containerTemplate: containerTemplate$3,
|
|
estimatedRowHeight: estimatedRowHeight,
|
|
minColumnWidth: MINIMAL_COLUMN_WIDTH$1,
|
|
height: height
|
|
});
|
|
};
|
|
|
|
VirtualTableLayout$1.propTypes = {
|
|
headerRows: PropTypes.array.isRequired,
|
|
bodyRows: PropTypes.array.isRequired,
|
|
columns: PropTypes.array.isRequired,
|
|
cellTemplate: PropTypes.func.isRequired,
|
|
rowTemplate: PropTypes.func.isRequired,
|
|
height: PropTypes.number.isRequired,
|
|
estimatedRowHeight: PropTypes.number.isRequired
|
|
};
|
|
|
|
var _tableLayoutTemplate = function _tableLayoutTemplate(props) {
|
|
return React.createElement(VirtualTableLayout$1, props);
|
|
};
|
|
var defaultRowTemplate$1 = function defaultRowTemplate(props) {
|
|
return React.createElement(TableRow$1, props);
|
|
};
|
|
var defaultNoDataRowTemplate$1 = function defaultNoDataRowTemplate(props) {
|
|
return React.createElement(TableRow$1, props);
|
|
};
|
|
var defaultCellTemplate$2 = function defaultCellTemplate(props) {
|
|
return React.createElement(TableCell$2, props);
|
|
};
|
|
var defaultStubCellTemplate$1 = function defaultStubCellTemplate(props) {
|
|
return React.createElement(TableStubCell, props);
|
|
};
|
|
var defaultNoDataCellTemplate$1 = function defaultNoDataCellTemplate(props) {
|
|
return React.createElement(TableNoDataCell, props);
|
|
};
|
|
|
|
var defaultMessages$3 = {
|
|
noData: 'No data'
|
|
};
|
|
|
|
var VirtualTableView = function (_React$PureComponent) {
|
|
inherits(VirtualTableView, _React$PureComponent);
|
|
|
|
function VirtualTableView() {
|
|
classCallCheck(this, VirtualTableView);
|
|
return possibleConstructorReturn(this, (VirtualTableView.__proto__ || Object.getPrototypeOf(VirtualTableView)).apply(this, arguments));
|
|
}
|
|
|
|
createClass(VirtualTableView, [{
|
|
key: 'render',
|
|
value: function render() {
|
|
var _props = this.props,
|
|
tableCellTemplate = _props.tableCellTemplate,
|
|
tableRowTemplate = _props.tableRowTemplate,
|
|
tableNoDataRowTemplate = _props.tableNoDataRowTemplate,
|
|
tableStubCellTemplate = _props.tableStubCellTemplate,
|
|
tableStubHeaderCellTemplate = _props.tableStubHeaderCellTemplate,
|
|
tableNoDataCellTemplate = _props.tableNoDataCellTemplate,
|
|
height = _props.height,
|
|
estimatedRowHeight = _props.estimatedRowHeight,
|
|
messages = _props.messages,
|
|
restProps = objectWithoutProperties(_props, ['tableCellTemplate', 'tableRowTemplate', 'tableNoDataRowTemplate', 'tableStubCellTemplate', 'tableStubHeaderCellTemplate', 'tableNoDataCellTemplate', 'height', 'estimatedRowHeight', 'messages']);
|
|
|
|
|
|
return React.createElement(TableView, _extends({
|
|
tableLayoutTemplate: function tableLayoutTemplate(props) {
|
|
return _tableLayoutTemplate(_extends({}, props, {
|
|
height: height,
|
|
estimatedRowHeight: estimatedRowHeight
|
|
}));
|
|
},
|
|
tableRowTemplate: combineTemplates(tableRowTemplate, defaultRowTemplate$1),
|
|
tableNoDataRowTemplate: combineTemplates(tableNoDataRowTemplate, defaultNoDataRowTemplate$1),
|
|
tableCellTemplate: combineTemplates(tableCellTemplate, defaultCellTemplate$2),
|
|
tableStubCellTemplate: combineTemplates(tableStubCellTemplate, defaultStubCellTemplate$1),
|
|
tableStubHeaderCellTemplate: combineTemplates(tableStubHeaderCellTemplate, defaultStubCellTemplate$1),
|
|
tableNoDataCellTemplate: combineTemplates(tableNoDataCellTemplate, defaultNoDataCellTemplate$1),
|
|
messages: _extends({}, defaultMessages$3, messages)
|
|
}, restProps));
|
|
}
|
|
}]);
|
|
return VirtualTableView;
|
|
}(React.PureComponent);
|
|
|
|
VirtualTableView.propTypes = {
|
|
tableCellTemplate: PropTypes.func,
|
|
tableRowTemplate: PropTypes.func,
|
|
tableNoDataRowTemplate: PropTypes.func,
|
|
tableStubCellTemplate: PropTypes.func,
|
|
tableStubHeaderCellTemplate: PropTypes.func,
|
|
tableNoDataCellTemplate: PropTypes.func,
|
|
estimatedRowHeight: PropTypes.number,
|
|
height: PropTypes.number,
|
|
messages: PropTypes.shape({
|
|
noData: PropTypes.string
|
|
})
|
|
};
|
|
|
|
VirtualTableView.defaultProps = {
|
|
tableCellTemplate: undefined,
|
|
tableRowTemplate: undefined,
|
|
tableNoDataRowTemplate: undefined,
|
|
tableStubCellTemplate: undefined,
|
|
tableStubHeaderCellTemplate: undefined,
|
|
tableNoDataCellTemplate: undefined,
|
|
estimatedRowHeight: 48,
|
|
height: 530,
|
|
messages: {}
|
|
};
|
|
|
|
var styles$18 = function styles$$1(theme) {
|
|
return {
|
|
cell: {
|
|
verticalAlign: 'top',
|
|
paddingTop: theme.spacing.unit + 4,
|
|
paddingRight: theme.spacing.unit,
|
|
'& ~ $cell': {
|
|
paddingLeft: theme.spacing.unit
|
|
}
|
|
},
|
|
input: {
|
|
width: '100%'
|
|
}
|
|
};
|
|
};
|
|
|
|
var TableFilterCellBase = function TableFilterCellBase(_ref) {
|
|
var style = _ref.style,
|
|
filter = _ref.filter,
|
|
getMessage = _ref.getMessage,
|
|
setFilter = _ref.setFilter,
|
|
classes = _ref.classes,
|
|
children = _ref.children;
|
|
return React.createElement(
|
|
TableCell,
|
|
{
|
|
className: classes.cell,
|
|
style: style
|
|
},
|
|
children || React.createElement(Input, {
|
|
className: classes.input,
|
|
value: filter ? filter.value : '',
|
|
placeholder: getMessage('filterPlaceholder'),
|
|
onChange: function onChange(e) {
|
|
return setFilter(e.target.value ? { value: e.target.value } : null);
|
|
}
|
|
})
|
|
);
|
|
};
|
|
|
|
TableFilterCellBase.propTypes = {
|
|
style: PropTypes.object,
|
|
filter: PropTypes.object,
|
|
setFilter: PropTypes.func,
|
|
classes: PropTypes.object.isRequired,
|
|
children: PropTypes.oneOfType([PropTypes.node, PropTypes.arrayOf(PropTypes.node)]),
|
|
getMessage: PropTypes.func.isRequired
|
|
};
|
|
|
|
TableFilterCellBase.defaultProps = {
|
|
style: null,
|
|
filter: null,
|
|
setFilter: function setFilter() {},
|
|
children: undefined
|
|
};
|
|
|
|
var TableFilterCell = withStyles(styles$18, { name: 'TableFilterCell' })(TableFilterCellBase);
|
|
|
|
var defaultFilterCellTemplate = function defaultFilterCellTemplate(props) {
|
|
return React.createElement(TableFilterCell, props);
|
|
};
|
|
var defaultFilterRowTemplate = function defaultFilterRowTemplate(props) {
|
|
return React.createElement(TableRow$1, props);
|
|
};
|
|
|
|
var defaultMessages$4 = {
|
|
filterPlaceholder: 'Filter...'
|
|
};
|
|
|
|
var TableFilterRow$1 = function (_React$PureComponent) {
|
|
inherits(TableFilterRow$$1, _React$PureComponent);
|
|
|
|
function TableFilterRow$$1() {
|
|
classCallCheck(this, TableFilterRow$$1);
|
|
return possibleConstructorReturn(this, (TableFilterRow$$1.__proto__ || Object.getPrototypeOf(TableFilterRow$$1)).apply(this, arguments));
|
|
}
|
|
|
|
createClass(TableFilterRow$$1, [{
|
|
key: 'render',
|
|
value: function render() {
|
|
var _props = this.props,
|
|
filterCellTemplate = _props.filterCellTemplate,
|
|
filterRowTemplate = _props.filterRowTemplate,
|
|
messages = _props.messages,
|
|
restProps = objectWithoutProperties(_props, ['filterCellTemplate', 'filterRowTemplate', 'messages']);
|
|
|
|
|
|
return React.createElement(TableFilterRow, _extends({
|
|
filterCellTemplate: combineTemplates(filterCellTemplate, defaultFilterCellTemplate),
|
|
filterRowTemplate: combineTemplates(filterRowTemplate, defaultFilterRowTemplate),
|
|
messages: _extends({}, defaultMessages$4, messages)
|
|
}, restProps));
|
|
}
|
|
}]);
|
|
return TableFilterRow$$1;
|
|
}(React.PureComponent);
|
|
|
|
TableFilterRow$1.propTypes = {
|
|
filterCellTemplate: PropTypes.func,
|
|
filterRowTemplate: PropTypes.func,
|
|
messages: PropTypes.shape({
|
|
filterPlaceholder: PropTypes.string
|
|
})
|
|
};
|
|
|
|
TableFilterRow$1.defaultProps = {
|
|
filterCellTemplate: undefined,
|
|
filterRowTemplate: undefined,
|
|
messages: {}
|
|
};
|
|
|
|
var styles$20 = function styles$$1(theme) {
|
|
return {
|
|
groupingControl: {
|
|
cursor: 'pointer',
|
|
paddingLeft: 0,
|
|
height: theme.spacing.unit * 3
|
|
},
|
|
floatLeft: {
|
|
float: 'left',
|
|
textAlign: 'left'
|
|
},
|
|
floatRight: {
|
|
float: 'right',
|
|
textAlign: 'right'
|
|
}
|
|
};
|
|
};
|
|
|
|
var GroupingControlBase = function GroupingControlBase(_ref) {
|
|
var _classNames;
|
|
|
|
var align = _ref.align,
|
|
groupByColumn = _ref.groupByColumn,
|
|
classes = _ref.classes;
|
|
|
|
var invertedAlign = align === 'left' ? 'right' : 'left';
|
|
var groupingControlClasses = classNames((_classNames = {}, defineProperty(_classNames, classes.groupingControl, true), defineProperty(_classNames, classes.floatLeft, invertedAlign === 'left'), defineProperty(_classNames, classes.floatRight, invertedAlign === 'right'), _classNames));
|
|
|
|
return React.createElement(
|
|
'div',
|
|
{
|
|
onClick: function onClick(e) {
|
|
e.stopPropagation();
|
|
groupByColumn(e);
|
|
},
|
|
className: groupingControlClasses
|
|
},
|
|
React.createElement(List$1, null)
|
|
);
|
|
};
|
|
|
|
GroupingControlBase.propTypes = {
|
|
align: PropTypes.string.isRequired,
|
|
groupByColumn: PropTypes.func.isRequired,
|
|
classes: PropTypes.object.isRequired
|
|
};
|
|
|
|
var GroupingControl = withStyles(styles$20, { name: 'GroupingControl' })(GroupingControlBase);
|
|
|
|
var styles$21 = function styles$$1(theme) {
|
|
return {
|
|
resizeHandle: {
|
|
position: 'absolute',
|
|
userSelect: 'none',
|
|
MozUserSelect: 'none',
|
|
WebkitUserSelect: 'none',
|
|
width: theme.spacing.unit * 2 + 'px',
|
|
top: 0,
|
|
right: '-' + theme.spacing.unit + 'px',
|
|
height: '100%',
|
|
cursor: 'col-resize',
|
|
zIndex: 100
|
|
},
|
|
resizeHandleLine: {
|
|
position: 'absolute',
|
|
backgroundColor: theme.palette.grey[300],
|
|
height: '50%',
|
|
width: '1px',
|
|
top: '25%',
|
|
transition: 'all linear 100ms'
|
|
},
|
|
resizeHandleFirstLine: {
|
|
left: theme.spacing.unit - 3 + 'px'
|
|
},
|
|
resizeHandleSecondLine: {
|
|
left: theme.spacing.unit - 1 + 'px'
|
|
},
|
|
resizeHandleActive: {
|
|
'& $resizeHandleLine': {
|
|
backgroundColor: theme.palette.primary[300]
|
|
}
|
|
},
|
|
'@media (pointer: fine)': {
|
|
resizeHandleLine: {
|
|
opacity: 0
|
|
},
|
|
resizeHandleActive: {
|
|
'& $resizeHandleLine': {
|
|
opacity: 1
|
|
}
|
|
},
|
|
resizeHandle: {
|
|
'&:hover $resizeHandleLine': {
|
|
opacity: 1
|
|
}
|
|
}
|
|
}
|
|
};
|
|
};
|
|
|
|
var ResizingControlBase = function (_React$PureComponent) {
|
|
inherits(ResizingControlBase, _React$PureComponent);
|
|
|
|
function ResizingControlBase(props) {
|
|
classCallCheck(this, ResizingControlBase);
|
|
|
|
var _this = possibleConstructorReturn(this, (ResizingControlBase.__proto__ || Object.getPrototypeOf(ResizingControlBase)).call(this, props));
|
|
|
|
_this.state = {
|
|
resizing: false
|
|
};
|
|
|
|
_this.onResizeStart = function (_ref) {
|
|
var x = _ref.x;
|
|
|
|
_this.resizeStartingX = x;
|
|
_this.setState({ resizing: true });
|
|
};
|
|
_this.onResizeUpdate = function (_ref2) {
|
|
var x = _ref2.x;
|
|
var changeDraftColumnWidth = _this.props.changeDraftColumnWidth;
|
|
|
|
changeDraftColumnWidth({ shift: x - _this.resizeStartingX });
|
|
};
|
|
_this.onResizeEnd = function (_ref3) {
|
|
var x = _ref3.x;
|
|
var changeColumnWidth = _this.props.changeColumnWidth;
|
|
|
|
changeColumnWidth({ shift: x - _this.resizeStartingX });
|
|
_this.setState({ resizing: false });
|
|
};
|
|
return _this;
|
|
}
|
|
|
|
createClass(ResizingControlBase, [{
|
|
key: 'render',
|
|
value: function render() {
|
|
var _classNames, _classNames2, _classNames3;
|
|
|
|
var classes = this.props.classes;
|
|
var resizing = this.state.resizing;
|
|
|
|
|
|
return React.createElement(
|
|
Draggable,
|
|
{
|
|
onStart: this.onResizeStart,
|
|
onUpdate: this.onResizeUpdate,
|
|
onEnd: this.onResizeEnd
|
|
},
|
|
React.createElement(
|
|
'div',
|
|
{
|
|
className: classNames((_classNames = {}, defineProperty(_classNames, classes.resizeHandle, true), defineProperty(_classNames, classes.resizeHandleActive, resizing), _classNames))
|
|
},
|
|
React.createElement('div', {
|
|
className: classNames((_classNames2 = {}, defineProperty(_classNames2, classes.resizeHandleLine, true), defineProperty(_classNames2, classes.resizeHandleFirstLine, true), _classNames2))
|
|
}),
|
|
React.createElement('div', {
|
|
className: classNames((_classNames3 = {}, defineProperty(_classNames3, classes.resizeHandleLine, true), defineProperty(_classNames3, classes.resizeHandleSecondLine, true), _classNames3))
|
|
})
|
|
)
|
|
);
|
|
}
|
|
}]);
|
|
return ResizingControlBase;
|
|
}(React.PureComponent);
|
|
|
|
ResizingControlBase.propTypes = {
|
|
changeColumnWidth: PropTypes.func.isRequired,
|
|
changeDraftColumnWidth: PropTypes.func.isRequired,
|
|
classes: PropTypes.object.isRequired
|
|
};
|
|
|
|
var ResizingControl = withStyles(styles$21, { name: 'ResizingControl' })(ResizingControlBase);
|
|
|
|
var styles$22 = function styles$$1(theme) {
|
|
return {
|
|
tooltipRoot: {
|
|
display: 'block',
|
|
whiteSpace: 'nowrap',
|
|
overflow: 'hidden',
|
|
textOverflow: 'ellipsis'
|
|
},
|
|
sortLabelRoot: {
|
|
height: theme.spacing.unit * 3
|
|
},
|
|
sortLabelActive: {
|
|
color: 'inherit'
|
|
}
|
|
};
|
|
};
|
|
|
|
var SortingControlBase = function SortingControlBase(_ref) {
|
|
var align = _ref.align,
|
|
sortingDirection = _ref.sortingDirection,
|
|
columnTitle = _ref.columnTitle,
|
|
onClick = _ref.onClick,
|
|
classes = _ref.classes,
|
|
text = _ref.text;
|
|
return React.createElement(
|
|
Tooltip,
|
|
{
|
|
title: text,
|
|
placement: align === 'right' ? 'bottom-end' : 'bottom-start',
|
|
enterDelay: 300,
|
|
classes: {
|
|
root: classes.tooltipRoot
|
|
}
|
|
},
|
|
React.createElement(
|
|
TableSortLabel,
|
|
{
|
|
active: !!sortingDirection,
|
|
direction: sortingDirection,
|
|
onClick: onClick,
|
|
classes: {
|
|
root: classes.sortLabelRoot,
|
|
active: classes.sortLabelActive
|
|
}
|
|
},
|
|
columnTitle
|
|
)
|
|
);
|
|
};
|
|
|
|
SortingControlBase.propTypes = {
|
|
align: PropTypes.string.isRequired,
|
|
sortingDirection: PropTypes.oneOf(['asc', 'desc']),
|
|
columnTitle: PropTypes.string.isRequired,
|
|
classes: PropTypes.object.isRequired,
|
|
onClick: PropTypes.func.isRequired,
|
|
text: PropTypes.string
|
|
};
|
|
|
|
SortingControlBase.defaultProps = {
|
|
sortingDirection: null,
|
|
text: 'Sort'
|
|
};
|
|
|
|
var SortingControl = withStyles(styles$22, { name: 'SortingControl' })(SortingControlBase);
|
|
|
|
var ENTER_KEY_CODE$1 = 13;
|
|
var SPACE_KEY_CODE$1 = 32;
|
|
|
|
var styles$19 = function styles$$1(theme) {
|
|
return {
|
|
plainTitle: {
|
|
overflow: 'hidden',
|
|
textOverflow: 'ellipsis',
|
|
height: theme.spacing.unit * 3,
|
|
lineHeight: theme.spacing.unit * 3 + 'px'
|
|
},
|
|
cell: {
|
|
outline: 'none',
|
|
position: 'relative',
|
|
overflow: 'visible',
|
|
paddingRight: theme.spacing.unit,
|
|
'& ~ $cell': {
|
|
paddingLeft: theme.spacing.unit
|
|
}
|
|
},
|
|
cellNoUserSelect: {
|
|
userSelect: 'none',
|
|
MozUserSelect: 'none',
|
|
WebkitUserSelect: 'none',
|
|
width: '100%'
|
|
},
|
|
cellDraggable: {
|
|
cursor: 'pointer'
|
|
},
|
|
cellDimmed: {
|
|
opacity: 0.3
|
|
},
|
|
cellRight: {
|
|
paddingLeft: theme.spacing.unit,
|
|
paddingRight: theme.spacing.unit
|
|
},
|
|
clearPadding: {
|
|
padding: 0
|
|
}
|
|
};
|
|
};
|
|
|
|
var TableHeaderCellBase = function (_React$PureComponent) {
|
|
inherits(TableHeaderCellBase, _React$PureComponent);
|
|
|
|
function TableHeaderCellBase(props) {
|
|
classCallCheck(this, TableHeaderCellBase);
|
|
|
|
var _this = possibleConstructorReturn(this, (TableHeaderCellBase.__proto__ || Object.getPrototypeOf(TableHeaderCellBase)).call(this, props));
|
|
|
|
_this.state = {
|
|
dragging: false
|
|
};
|
|
|
|
_this.onClick = function (e) {
|
|
var changeSortingDirection = _this.props.changeSortingDirection;
|
|
|
|
var isActionKeyDown = e.keyCode === ENTER_KEY_CODE$1 || e.keyCode === SPACE_KEY_CODE$1;
|
|
var isMouseClick = e.keyCode === undefined;
|
|
|
|
var cancelSortingRelatedKey = e.metaKey || e.ctrlKey;
|
|
var cancel = isMouseClick && cancelSortingRelatedKey || isActionKeyDown && cancelSortingRelatedKey;
|
|
|
|
e.preventDefault();
|
|
changeSortingDirection({
|
|
keepOther: e.shiftKey || cancelSortingRelatedKey,
|
|
cancel: cancel
|
|
});
|
|
};
|
|
return _this;
|
|
}
|
|
|
|
createClass(TableHeaderCellBase, [{
|
|
key: 'render',
|
|
value: function render() {
|
|
var _classNames,
|
|
_this2 = this;
|
|
|
|
var _props = this.props,
|
|
style = _props.style,
|
|
column = _props.column,
|
|
tableColumn = _props.tableColumn,
|
|
allowSorting = _props.allowSorting,
|
|
sortingDirection = _props.sortingDirection,
|
|
allowGroupingByClick = _props.allowGroupingByClick,
|
|
groupByColumn = _props.groupByColumn,
|
|
allowDragging = _props.allowDragging,
|
|
dragPayload = _props.dragPayload,
|
|
allowResizing = _props.allowResizing,
|
|
changeColumnWidth = _props.changeColumnWidth,
|
|
changeDraftColumnWidth = _props.changeDraftColumnWidth,
|
|
classes = _props.classes,
|
|
getMessage = _props.getMessage;
|
|
var dragging = this.state.dragging;
|
|
|
|
var align = column.align || 'left';
|
|
var columnTitle = column.title || column.name;
|
|
var tooltipText = getMessage('sortingHint');
|
|
|
|
var tableCellClasses = classNames((_classNames = {}, defineProperty(_classNames, classes.cell, true), defineProperty(_classNames, classes.cellRight, align === 'right'), defineProperty(_classNames, classes.cellNoUserSelect, allowDragging || allowSorting), defineProperty(_classNames, classes.cellDraggable, allowDragging), defineProperty(_classNames, classes.cellDimmed, dragging || tableColumn.draft), _classNames));
|
|
var cellLayout = React.createElement(
|
|
TableCell,
|
|
{
|
|
style: style,
|
|
className: tableCellClasses,
|
|
numeric: align === 'right'
|
|
},
|
|
allowGroupingByClick && React.createElement(GroupingControl, {
|
|
align: align,
|
|
groupByColumn: groupByColumn
|
|
}),
|
|
allowSorting ? React.createElement(SortingControl, {
|
|
align: align,
|
|
sortingDirection: sortingDirection,
|
|
columnTitle: columnTitle,
|
|
onClick: this.onClick,
|
|
allowGroupingByClick: allowGroupingByClick,
|
|
text: tooltipText
|
|
}) : React.createElement(
|
|
'div',
|
|
{ className: classes.plainTitle },
|
|
columnTitle
|
|
),
|
|
allowResizing && React.createElement(ResizingControl, {
|
|
changeColumnWidth: changeColumnWidth,
|
|
changeDraftColumnWidth: changeDraftColumnWidth
|
|
})
|
|
);
|
|
|
|
return allowDragging ? React.createElement(
|
|
DragSource,
|
|
{
|
|
ref: function ref(element) {
|
|
_this2.cellRef = element;
|
|
},
|
|
getPayload: function getPayload() {
|
|
return dragPayload;
|
|
},
|
|
onStart: function onStart() {
|
|
return _this2.setState({ dragging: true });
|
|
},
|
|
onEnd: function onEnd() {
|
|
return _this2.cellRef && _this2.setState({ dragging: false });
|
|
}
|
|
},
|
|
cellLayout
|
|
) : cellLayout;
|
|
}
|
|
}]);
|
|
return TableHeaderCellBase;
|
|
}(React.PureComponent);
|
|
|
|
TableHeaderCellBase.propTypes = {
|
|
tableColumn: PropTypes.object,
|
|
column: PropTypes.shape({
|
|
title: PropTypes.string
|
|
}).isRequired,
|
|
style: PropTypes.object,
|
|
allowSorting: PropTypes.bool,
|
|
sortingDirection: PropTypes.oneOf(['asc', 'desc', null]),
|
|
changeSortingDirection: PropTypes.func,
|
|
allowGroupingByClick: PropTypes.bool,
|
|
groupByColumn: PropTypes.func,
|
|
allowDragging: PropTypes.bool,
|
|
dragPayload: PropTypes.any,
|
|
allowResizing: PropTypes.bool,
|
|
changeColumnWidth: PropTypes.func,
|
|
changeDraftColumnWidth: PropTypes.func,
|
|
classes: PropTypes.object.isRequired,
|
|
getMessage: PropTypes.func.isRequired
|
|
};
|
|
|
|
TableHeaderCellBase.defaultProps = {
|
|
tableColumn: {},
|
|
style: null,
|
|
allowSorting: false,
|
|
sortingDirection: undefined,
|
|
changeSortingDirection: undefined,
|
|
allowGroupingByClick: false,
|
|
groupByColumn: undefined,
|
|
allowDragging: false,
|
|
dragPayload: null,
|
|
allowResizing: false,
|
|
changeColumnWidth: undefined,
|
|
changeDraftColumnWidth: undefined
|
|
};
|
|
|
|
var TableHeaderCell = withStyles(styles$19, { name: 'TableHeaderCell' })(TableHeaderCellBase);
|
|
|
|
var defaultHeaderCellTemplate = function defaultHeaderCellTemplate(props) {
|
|
return React.createElement(TableHeaderCell, props);
|
|
};
|
|
var defaultHeaderRowTemplate = function defaultHeaderRowTemplate(props) {
|
|
return React.createElement(TableRow$1, props);
|
|
};
|
|
var defaultMessages$5 = {
|
|
sortingHint: 'Sort'
|
|
};
|
|
|
|
var TableHeaderRow$1 = function (_React$PureComponent) {
|
|
inherits(TableHeaderRow$$1, _React$PureComponent);
|
|
|
|
function TableHeaderRow$$1() {
|
|
classCallCheck(this, TableHeaderRow$$1);
|
|
return possibleConstructorReturn(this, (TableHeaderRow$$1.__proto__ || Object.getPrototypeOf(TableHeaderRow$$1)).apply(this, arguments));
|
|
}
|
|
|
|
createClass(TableHeaderRow$$1, [{
|
|
key: 'render',
|
|
value: function render() {
|
|
var _props = this.props,
|
|
headerCellTemplate = _props.headerCellTemplate,
|
|
headerRowTemplate = _props.headerRowTemplate,
|
|
messages = _props.messages,
|
|
restProps = objectWithoutProperties(_props, ['headerCellTemplate', 'headerRowTemplate', 'messages']);
|
|
|
|
|
|
return React.createElement(TableHeaderRow, _extends({
|
|
headerCellTemplate: combineTemplates(headerCellTemplate, defaultHeaderCellTemplate),
|
|
headerRowTemplate: combineTemplates(headerRowTemplate, defaultHeaderRowTemplate),
|
|
messages: _extends({}, defaultMessages$5, messages)
|
|
}, restProps));
|
|
}
|
|
}]);
|
|
return TableHeaderRow$$1;
|
|
}(React.PureComponent);
|
|
|
|
TableHeaderRow$1.propTypes = {
|
|
headerCellTemplate: PropTypes.func,
|
|
headerRowTemplate: PropTypes.func,
|
|
messages: PropTypes.shape({
|
|
sortingHint: PropTypes.string
|
|
})
|
|
};
|
|
|
|
TableHeaderRow$1.defaultProps = {
|
|
headerCellTemplate: undefined,
|
|
headerRowTemplate: undefined,
|
|
messages: {}
|
|
};
|
|
|
|
var styles$23 = function styles$$1(theme) {
|
|
return {
|
|
button: {
|
|
padding: theme.spacing.unit,
|
|
minWidth: 40
|
|
},
|
|
headingCell: {
|
|
whiteSpace: 'nowrap',
|
|
textAlign: 'center',
|
|
paddingLeft: theme.spacing.unit * 3,
|
|
paddingRight: 0
|
|
},
|
|
cell: {
|
|
whiteSpace: 'nowrap',
|
|
textAlign: 'center',
|
|
paddingLeft: theme.spacing.unit * 3,
|
|
paddingRight: 0
|
|
}
|
|
};
|
|
};
|
|
|
|
var withEditColumnStyles = withStyles(styles$23, { name: 'EditColumn' });
|
|
|
|
var CommandButtonBase = function CommandButtonBase(_ref) {
|
|
var executeCommand = _ref.executeCommand,
|
|
text = _ref.text,
|
|
classes = _ref.classes;
|
|
return React.createElement(
|
|
Button,
|
|
{
|
|
color: 'primary',
|
|
className: classes.button,
|
|
onClick: function onClick(e) {
|
|
executeCommand();
|
|
e.stopPropagation();
|
|
}
|
|
},
|
|
text
|
|
);
|
|
};
|
|
CommandButtonBase.propTypes = {
|
|
executeCommand: PropTypes.func.isRequired,
|
|
text: PropTypes.string.isRequired,
|
|
classes: PropTypes.object.isRequired
|
|
};
|
|
|
|
var CommandButton = withEditColumnStyles(CommandButtonBase);
|
|
|
|
var EditCommandHeadingCellBase = function EditCommandHeadingCellBase(_ref2) {
|
|
var addRow = _ref2.addRow,
|
|
commandTemplate = _ref2.commandTemplate,
|
|
allowAdding = _ref2.allowAdding,
|
|
_ref2$style = _ref2.style,
|
|
style = _ref2$style === undefined ? {} : _ref2$style,
|
|
getMessage = _ref2.getMessage,
|
|
classes = _ref2.classes;
|
|
return React.createElement(
|
|
TableCell,
|
|
{
|
|
className: classes.headingCell,
|
|
style: style
|
|
},
|
|
allowAdding && commandTemplate({
|
|
id: 'add',
|
|
executeCommand: addRow,
|
|
text: getMessage('addCommand')
|
|
})
|
|
);
|
|
};
|
|
EditCommandHeadingCellBase.propTypes = {
|
|
addRow: PropTypes.func,
|
|
allowAdding: PropTypes.bool,
|
|
style: PropTypes.object,
|
|
commandTemplate: PropTypes.func.isRequired,
|
|
getMessage: PropTypes.func.isRequired,
|
|
classes: PropTypes.object.isRequired
|
|
};
|
|
EditCommandHeadingCellBase.defaultProps = {
|
|
addRow: function addRow() {},
|
|
allowAdding: false,
|
|
style: undefined
|
|
};
|
|
|
|
var EditCommandHeadingCell = withEditColumnStyles(EditCommandHeadingCellBase);
|
|
|
|
var EditCommandCellBase = function EditCommandCellBase(_ref3) {
|
|
var startEditing = _ref3.startEditing,
|
|
deleteRow = _ref3.deleteRow,
|
|
cancelEditing = _ref3.cancelEditing,
|
|
commitChanges = _ref3.commitChanges,
|
|
isEditing = _ref3.isEditing,
|
|
commandTemplate = _ref3.commandTemplate,
|
|
allowEditing = _ref3.allowEditing,
|
|
allowDeleting = _ref3.allowDeleting,
|
|
_ref3$style = _ref3.style,
|
|
style = _ref3$style === undefined ? {} : _ref3$style,
|
|
classes = _ref3.classes,
|
|
getMessage = _ref3.getMessage;
|
|
|
|
var commands = [];
|
|
if (!isEditing) {
|
|
if (allowEditing) {
|
|
commands.push({
|
|
id: 'edit',
|
|
executeCommand: startEditing,
|
|
text: getMessage('editCommand')
|
|
});
|
|
}
|
|
if (allowDeleting) {
|
|
commands.push({
|
|
id: 'delete',
|
|
executeCommand: deleteRow,
|
|
text: getMessage('deleteCommand')
|
|
});
|
|
}
|
|
} else {
|
|
commands = [{
|
|
id: 'commit',
|
|
executeCommand: commitChanges,
|
|
text: getMessage('commitCommand')
|
|
}, {
|
|
id: 'cancel',
|
|
executeCommand: cancelEditing,
|
|
text: getMessage('cancelCommand')
|
|
}];
|
|
}
|
|
return React.createElement(
|
|
TableCell,
|
|
{
|
|
className: classes.cell,
|
|
style: style
|
|
},
|
|
commands.map(function (command) {
|
|
return React.createElement(
|
|
'span',
|
|
{ key: command.id },
|
|
commandTemplate(command)
|
|
);
|
|
})
|
|
);
|
|
};
|
|
EditCommandCellBase.propTypes = {
|
|
startEditing: PropTypes.func,
|
|
deleteRow: PropTypes.func,
|
|
cancelEditing: PropTypes.func,
|
|
commitChanges: PropTypes.func,
|
|
isEditing: PropTypes.bool,
|
|
allowEditing: PropTypes.bool,
|
|
allowDeleting: PropTypes.bool,
|
|
commandTemplate: PropTypes.func,
|
|
style: PropTypes.object,
|
|
getMessage: PropTypes.func.isRequired,
|
|
classes: PropTypes.object.isRequired
|
|
};
|
|
EditCommandCellBase.defaultProps = {
|
|
startEditing: function startEditing() {},
|
|
deleteRow: function deleteRow() {},
|
|
cancelEditing: function cancelEditing() {},
|
|
commitChanges: function commitChanges() {},
|
|
isEditing: false,
|
|
allowEditing: false,
|
|
allowDeleting: false,
|
|
commandTemplate: PropTypes.func,
|
|
style: undefined
|
|
};
|
|
|
|
var EditCommandCell = withEditColumnStyles(EditCommandCellBase);
|
|
|
|
var defaultCellTemplate$3 = function defaultCellTemplate(props) {
|
|
return React.createElement(EditCommandCell, props);
|
|
};
|
|
var defaultHeadingCellTemplate = function defaultHeadingCellTemplate(props) {
|
|
return React.createElement(EditCommandHeadingCell, props);
|
|
};
|
|
var defaultCommandTemplate = function defaultCommandTemplate(props) {
|
|
return React.createElement(CommandButton, props);
|
|
};
|
|
|
|
var defaultMessages$6 = {
|
|
addCommand: 'New',
|
|
editCommand: 'Edit',
|
|
deleteCommand: 'Delete',
|
|
commitCommand: 'Save',
|
|
cancelCommand: 'Cancel'
|
|
};
|
|
|
|
var TableEditColumn$1 = function (_React$PureComponent) {
|
|
inherits(TableEditColumn$$1, _React$PureComponent);
|
|
|
|
function TableEditColumn$$1() {
|
|
classCallCheck(this, TableEditColumn$$1);
|
|
return possibleConstructorReturn(this, (TableEditColumn$$1.__proto__ || Object.getPrototypeOf(TableEditColumn$$1)).apply(this, arguments));
|
|
}
|
|
|
|
createClass(TableEditColumn$$1, [{
|
|
key: 'render',
|
|
value: function render() {
|
|
var _props = this.props,
|
|
cellTemplate = _props.cellTemplate,
|
|
headingCellTemplate = _props.headingCellTemplate,
|
|
commandTemplate = _props.commandTemplate,
|
|
messages = _props.messages,
|
|
restProps = objectWithoutProperties(_props, ['cellTemplate', 'headingCellTemplate', 'commandTemplate', 'messages']);
|
|
|
|
|
|
return React.createElement(TableEditColumn, _extends({
|
|
cellTemplate: combineTemplates(cellTemplate, defaultCellTemplate$3),
|
|
headingCellTemplate: combineTemplates(headingCellTemplate, defaultHeadingCellTemplate),
|
|
commandTemplate: combineTemplates(commandTemplate, defaultCommandTemplate),
|
|
messages: _extends({}, defaultMessages$6, messages)
|
|
}, restProps));
|
|
}
|
|
}]);
|
|
return TableEditColumn$$1;
|
|
}(React.PureComponent);
|
|
|
|
TableEditColumn$1.propTypes = {
|
|
cellTemplate: PropTypes.func,
|
|
headingCellTemplate: PropTypes.func,
|
|
commandTemplate: PropTypes.func,
|
|
messages: PropTypes.shape({
|
|
addCommand: PropTypes.string,
|
|
editCommand: PropTypes.string,
|
|
deleteCommand: PropTypes.string,
|
|
commitCommand: PropTypes.string,
|
|
cancelCommand: PropTypes.string
|
|
})
|
|
};
|
|
|
|
TableEditColumn$1.defaultProps = {
|
|
cellTemplate: undefined,
|
|
headingCellTemplate: undefined,
|
|
commandTemplate: undefined,
|
|
messages: {}
|
|
};
|
|
|
|
var styles$24 = function styles$$1(theme) {
|
|
return {
|
|
cell: {
|
|
verticalAlign: 'top',
|
|
paddingTop: theme.spacing.unit + 2,
|
|
paddingRight: theme.spacing.unit,
|
|
'& ~ $cell': {
|
|
paddingLeft: theme.spacing.unit
|
|
}
|
|
},
|
|
inputRoot: {
|
|
width: '100%'
|
|
},
|
|
inputRight: {
|
|
textAlign: 'right'
|
|
}
|
|
};
|
|
};
|
|
|
|
var EditCellBase = function EditCellBase(_ref) {
|
|
var column = _ref.column,
|
|
value = _ref.value,
|
|
onValueChange = _ref.onValueChange,
|
|
style = _ref.style,
|
|
classes = _ref.classes,
|
|
children = _ref.children;
|
|
|
|
var inputClasses = classNames(defineProperty({}, classes.inputRight, column.align === 'right'));
|
|
|
|
return React.createElement(
|
|
TableCell,
|
|
{
|
|
className: classes.cell,
|
|
style: style
|
|
},
|
|
children || React.createElement(Input, {
|
|
className: classes.inputRoot,
|
|
classes: { input: inputClasses },
|
|
value: value || '',
|
|
onChange: function onChange(e) {
|
|
return onValueChange(e.target.value);
|
|
}
|
|
})
|
|
);
|
|
};
|
|
|
|
EditCellBase.propTypes = {
|
|
column: PropTypes.object,
|
|
value: PropTypes.any,
|
|
onValueChange: PropTypes.func.isRequired,
|
|
style: PropTypes.object,
|
|
classes: PropTypes.object.isRequired,
|
|
children: PropTypes.oneOfType([PropTypes.node, PropTypes.arrayOf(PropTypes.node)])
|
|
};
|
|
|
|
EditCellBase.defaultProps = {
|
|
column: {},
|
|
value: '',
|
|
style: {},
|
|
children: undefined
|
|
};
|
|
|
|
var EditCell = withStyles(styles$24, { name: 'EditCell' })(EditCellBase);
|
|
|
|
var defaultEditCellTemplate = function defaultEditCellTemplate(props) {
|
|
return React.createElement(EditCell, props);
|
|
};
|
|
var defaultEditRowTemplate = function defaultEditRowTemplate(props) {
|
|
return React.createElement(TableRow$1, props);
|
|
};
|
|
|
|
var TableEditRow$1 = function (_React$PureComponent) {
|
|
inherits(TableEditRow$$1, _React$PureComponent);
|
|
|
|
function TableEditRow$$1() {
|
|
classCallCheck(this, TableEditRow$$1);
|
|
return possibleConstructorReturn(this, (TableEditRow$$1.__proto__ || Object.getPrototypeOf(TableEditRow$$1)).apply(this, arguments));
|
|
}
|
|
|
|
createClass(TableEditRow$$1, [{
|
|
key: 'render',
|
|
value: function render() {
|
|
var _props = this.props,
|
|
editCellTemplate = _props.editCellTemplate,
|
|
editRowTemplate = _props.editRowTemplate,
|
|
restProps = objectWithoutProperties(_props, ['editCellTemplate', 'editRowTemplate']);
|
|
|
|
|
|
return React.createElement(TableEditRow, _extends({
|
|
editCellTemplate: combineTemplates(editCellTemplate, defaultEditCellTemplate),
|
|
editRowTemplate: combineTemplates(editRowTemplate, defaultEditRowTemplate)
|
|
}, restProps));
|
|
}
|
|
}]);
|
|
return TableEditRow$$1;
|
|
}(React.PureComponent);
|
|
|
|
TableEditRow$1.propTypes = {
|
|
editCellTemplate: PropTypes.func,
|
|
editRowTemplate: PropTypes.func
|
|
};
|
|
|
|
TableEditRow$1.defaultProps = {
|
|
editCellTemplate: undefined,
|
|
editRowTemplate: undefined
|
|
};
|
|
|
|
var EmptyMessage = function EmptyMessage(_ref) {
|
|
var getMessage = _ref.getMessage;
|
|
return React.createElement(
|
|
Toolbar,
|
|
null,
|
|
React.createElement(
|
|
Typography$1,
|
|
null,
|
|
getMessage('noColumns')
|
|
)
|
|
);
|
|
};
|
|
|
|
EmptyMessage.propTypes = {
|
|
getMessage: PropTypes.func.isRequired
|
|
};
|
|
|
|
var emptyMessageTemplate = function emptyMessageTemplate(props) {
|
|
return React.createElement(EmptyMessage, props);
|
|
};
|
|
|
|
var defaultMessages$7 = {
|
|
noColumns: 'Nothing to show'
|
|
};
|
|
|
|
var TableColumnVisibility$1 = function (_React$PureComponent) {
|
|
inherits(TableColumnVisibility$$1, _React$PureComponent);
|
|
|
|
function TableColumnVisibility$$1() {
|
|
classCallCheck(this, TableColumnVisibility$$1);
|
|
return possibleConstructorReturn(this, (TableColumnVisibility$$1.__proto__ || Object.getPrototypeOf(TableColumnVisibility$$1)).apply(this, arguments));
|
|
}
|
|
|
|
createClass(TableColumnVisibility$$1, [{
|
|
key: 'render',
|
|
value: function render() {
|
|
var _props = this.props,
|
|
messages = _props.messages,
|
|
restProps = objectWithoutProperties(_props, ['messages']);
|
|
|
|
|
|
return React.createElement(TableColumnVisibility, _extends({
|
|
emptyMessageTemplate: emptyMessageTemplate,
|
|
messages: _extends({}, defaultMessages$7, messages)
|
|
}, restProps));
|
|
}
|
|
}]);
|
|
return TableColumnVisibility$$1;
|
|
}(React.PureComponent);
|
|
|
|
TableColumnVisibility$1.propTypes = {
|
|
messages: PropTypes.shape({
|
|
noColumns: PropTypes.string
|
|
})
|
|
};
|
|
|
|
TableColumnVisibility$1.defaultProps = {
|
|
messages: {}
|
|
};
|
|
|
|
var TableReorderingCell = function TableReorderingCell(_ref) {
|
|
var style = _ref.style,
|
|
getCellDimensions = _ref.getCellDimensions;
|
|
|
|
var refHandler = function refHandler(node) {
|
|
return node && getCellDimensions(function () {
|
|
var _node$getBoundingClie = node.getBoundingClientRect(),
|
|
left = _node$getBoundingClie.left,
|
|
right = _node$getBoundingClie.right;
|
|
|
|
return { left: left, right: right };
|
|
});
|
|
};
|
|
return React.createElement('td', {
|
|
ref: refHandler,
|
|
style: _extends({}, style, { padding: 0 })
|
|
});
|
|
};
|
|
|
|
TableReorderingCell.propTypes = {
|
|
getCellDimensions: PropTypes.func.isRequired,
|
|
style: PropTypes.object
|
|
};
|
|
|
|
TableReorderingCell.defaultProps = {
|
|
style: {}
|
|
};
|
|
|
|
var tableContainerTemplate = function tableContainerTemplate(_ref) {
|
|
var onOver = _ref.onOver,
|
|
onLeave = _ref.onLeave,
|
|
onDrop = _ref.onDrop,
|
|
children = _ref.children;
|
|
return React.createElement(
|
|
DropTarget,
|
|
{
|
|
onOver: onOver,
|
|
onLeave: onLeave,
|
|
onDrop: onDrop
|
|
},
|
|
children
|
|
);
|
|
};
|
|
|
|
// eslint-disable-next-line react/prop-types
|
|
var reorderingRowTemplate = function reorderingRowTemplate(_ref2) {
|
|
var style = _ref2.style,
|
|
restParams = objectWithoutProperties(_ref2, ['style']);
|
|
return React.createElement(TableRow$1, _extends({
|
|
style: _extends({}, style, {
|
|
visibility: 'hidden'
|
|
})
|
|
}, restParams));
|
|
};
|
|
var reorderingCellTemplate = function reorderingCellTemplate(params) {
|
|
return React.createElement(TableReorderingCell, params);
|
|
};
|
|
|
|
var TableColumnReordering$1 = function TableColumnReordering$$1(props) {
|
|
return React.createElement(TableColumnReordering, _extends({
|
|
tableContainerTemplate: tableContainerTemplate,
|
|
reorderingRowTemplate: reorderingRowTemplate,
|
|
reorderingCellTemplate: reorderingCellTemplate
|
|
}, props));
|
|
};
|
|
|
|
var TableColumnResizing$1 = function (_React$PureComponent) {
|
|
inherits(TableColumnResizing$$1, _React$PureComponent);
|
|
|
|
function TableColumnResizing$$1() {
|
|
classCallCheck(this, TableColumnResizing$$1);
|
|
return possibleConstructorReturn(this, (TableColumnResizing$$1.__proto__ || Object.getPrototypeOf(TableColumnResizing$$1)).apply(this, arguments));
|
|
}
|
|
|
|
createClass(TableColumnResizing$$1, [{
|
|
key: 'render',
|
|
value: function render() {
|
|
return React.createElement(TableColumnResizing, this.props);
|
|
}
|
|
}]);
|
|
return TableColumnResizing$$1;
|
|
}(React.PureComponent);
|
|
|
|
export { Grid$1 as Grid, ColumnChooser$1 as ColumnChooser, DragDropContext$1 as DragDropContext, PagingPanel$1 as PagingPanel, GroupingPanel$1 as GroupingPanel, TableRowDetail$1 as TableRowDetail, TableGroupRow$1 as TableGroupRow, TableSelection$1 as TableSelection, TableView$1 as TableView, VirtualTableView, TableFilterRow$1 as TableFilterRow, TableHeaderRow$1 as TableHeaderRow, TableEditColumn$1 as TableEditColumn, TableEditRow$1 as TableEditRow, TableColumnVisibility$1 as TableColumnVisibility, TableColumnReordering$1 as TableColumnReordering, TableColumnResizing$1 as TableColumnResizing };
|
|
//# sourceMappingURL=dx-react-grid-material-ui.es.js.map
|