@6thquake/react-material
Version:
React components that implement Google's Material Design.
254 lines (212 loc) • 8.28 kB
JavaScript
"use strict";
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
var _react = _interopRequireDefault(require("react"));
var _ = _interopRequireDefault(require(".."));
var _Cell = _interopRequireDefault(require("./Cell"));
var _TableHead = _interopRequireDefault(require("../../TableHead"));
var _TableRow = _interopRequireDefault(require("../../TableRow"));
var _HeadCell = _interopRequireDefault(require("./HeadCell"));
var _DragHeadCell = _interopRequireDefault(require("./DragHeadCell"));
var _withDragAndDrop = _interopRequireDefault(require("../../DragAndDrop/withDragAndDrop"));
var _TableSortLabel = _interopRequireDefault(require("../../TableSortLabel"));
var _throttle = require("../../utils/throttle");
var _reactResizable = require("react-resizable");
var _styles = require("../../styles");
// import Resizable from 're-resizable';
var styles = function styles(theme) {
return {
root: {},
layoutFixed: {
tableLayout: 'fixed'
},
tableCell: {
position: 'relative',
'@global .react-resizable-handle': {
position: 'absolute',
width: 20,
height: 20,
bottom: 0,
right: 0,
background: "url('data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA2IDYiIHN0eWxlPSJiYWNrZ3JvdW5kLWNvbG9yOiNmZmZmZmYwMCIgeD0iMHB4IiB5PSIwcHgiIHdpZHRoPSI2cHgiIGhlaWdodD0iNnB4Ij48ZyBvcGFjaXR5PSIwLjMwMiI+PHBhdGggZD0iTSA2IDYgTCAwIDYgTCAwIDQuMiBMIDQgNC4yIEwgNC4yIDQuMiBMIDQuMiAwIEwgNiAwIEwgNiA2IEwgNiA2IFoiIGZpbGw9IiMwMDAwMDAiLz48L2c+PC9zdmc+')",
'background-position': 'bottom right',
padding: '0 3px 3px 0',
'background-repeat': 'no-repeat',
'background-origin': 'content-box',
'box-sizing': 'border-box',
cursor: 'se-resize'
}
}
};
};
var colStyle = {
// width: 150,
minWidth: 100
};
/**
* @ignore - internal component.
*/
var Head =
/*#__PURE__*/
function (_React$Component) {
(0, _inherits2.default)(Head, _React$Component);
function Head(props) {
var _this;
(0, _classCallCheck2.default)(this, Head);
_this = (0, _possibleConstructorReturn2.default)(this, (0, _getPrototypeOf2.default)(Head).call(this, props));
_this.dragIndex = {
targetIndex: '',
sourceIndex: ''
};
_this.handleResizeStart = function () {
// this.undragable = true
_this.setState({
undragable: true
});
};
_this.handleDragStop = function () {
_this.setState({
undragable: false
});
};
_this.handleResize = function () {
for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
args[_key] = arguments[_key];
}
return function (e, _ref) {
var size = _ref.size;
var onResize = _this.props.onResize;
onResize && onResize.apply(void 0, args.concat([size])); // this.throttleResize(...args,size)
};
};
_this.resize = function () {
var onResize = _this.props.onResize;
onResize && onResize.apply(void 0, arguments);
};
_this.handleChangeOrder = function (sort, column) {
return function (e) {
var onSort = _this.props.onSort;
onSort && onSort(sort, column);
};
};
_this.handleDoubleClick = function (e) {
e.stopPropagation();
};
_this.renderTableHeadCell = function (column, index) {
var _this$props = _this.props,
classes = _this$props.classes,
onDragStart = _this$props.onDragStart,
onDragEnd = _this$props.onDragEnd,
resizable = _this$props.resizable,
dragable = _this$props.dragable,
baseLength = _this$props.baseLength,
onColumnFixChange = _this$props.onColumnFixChange,
disableClickToFixColumn = _this$props.disableClickToFixColumn,
TableCellProps = _this$props.TableCellProps;
var sorts = _this.props.sorts;
var title = column.title,
key = column.key,
sortable = column.sortable,
renderTitle = column.renderTitle;
var sort = {
key: key,
order: '',
orderList: ['', 'asc', 'desc'],
index: 0
};
sorts.map(function (item) {
if (item.key === column.key) {
sort = item;
}
});
var titleNode = typeof renderTitle === 'function' ? renderTitle(column) : title;
var content = sortable ? _react.default.createElement(_TableSortLabel.default, {
active: sort.order,
direction: sort.order,
onClick: _this.handleChangeOrder(sort, column),
onDoubleClick: _this.handleDoubleClick
}, titleNode) : titleNode || '';
var cell = _react.default.createElement(_Cell.default, {
numeric: column.numeric,
sortDirection: true,
onDragStart: onDragStart,
onDragEnd: onDragEnd,
index: index + baseLength,
onColumnFixChange: onColumnFixChange,
disableClickToFixColumn: disableClickToFixColumn,
component: dragable && !_this.state.undragable ? _DragHeadCell.default : _HeadCell.default,
className: classes.tableCell,
key: column.key || column.title,
fixed: column.fixed,
TableCellProps: TableCellProps
}, content);
var C = resizable || column.resizable ? _react.default.createElement(_reactResizable.Resizable, {
key: column.key || column.title,
onResizeStart: _this.handleResizeStart,
onResizeStop: _this.handleDragStop,
width: column.width,
height: 0,
onResize: _this.handleResize(index, column) // axis = {'x'}
// minConstraints={[50, 500]}
}, cell) : cell;
return C;
};
_this.state = {
undragable: false
};
return _this;
}
(0, _createClass2.default)(Head, [{
key: "componentDidMount",
value: function componentDidMount() {// this.throttleResize = debounce(this.resize,1000)
}
}, {
key: "render",
value: function render() {
var _this2 = this;
var _this$props2 = this.props,
classes = _this$props2.classes,
columns = _this$props2.columns,
onDragStart = _this$props2.onDragStart,
onDragEnd = _this$props2.onDragEnd,
resizable = _this$props2.resizable,
headRef = _this$props2.headRef,
headRowHeight = _this$props2.headRowHeight,
TableRowProps = _this$props2.TableRowProps;
var rowStyle = {
height: headRowHeight
};
return _react.default.createElement("div", {
className: classes.root
}, _react.default.createElement(_.default, {
innerRef: headRef,
classes: {
root: classes.layoutFixed
},
className: classes.table
}, _react.default.createElement("colgroup", null, columns.map(function (item) {
return _react.default.createElement("col", {
key: item.key || item.title,
width: item.width,
style: colStyle
});
})), _react.default.createElement(_TableHead.default, null, _react.default.createElement(_TableRow.default, (0, _extends2.default)({
style: rowStyle
}, TableRowProps), columns.map(function (column, index) {
return _this2.renderTableHeadCell(column, index);
})))));
}
}]);
return Head;
}(_react.default.Component); // export default withDragAndDrop()(AbundantCrossTabulation);
var _default = (0, _styles.withStyles)(styles)((0, _withDragAndDrop.default)()(Head));
exports.default = _default;