@flexis/ui
Version:
Styleless React Components
77 lines • 6.16 kB
JavaScript
import { __decorate } from "tslib";
import React, { PureComponent } from 'react';
import PropTypes from 'prop-types';
import { Bind, omit, modulo } from '../../helpers';
import isKeyboardClick from '../common/isKeyboardClick';
import { style, classes } from './Table.st.css';
export var Order;
(function (Order) {
Order[Order["None"] = 0] = "None";
Order[Order["Asc"] = 1] = "Asc";
Order[Order["Desc"] = -1] = "Desc";
})(Order || (Order = {}));
export const OrderValues = Object.values(Order).filter(_ => typeof _ === 'number');
const buttonRole = {
role: 'button',
tabIndex: 0
};
let TableCell = /** @class */ (() => {
class TableCell extends PureComponent {
render() {
const { className, head, order, children, ...props } = this.props;
const Cell = head ? 'th' : 'td';
const isOrder = head && typeof order === 'number';
const buttonLikeProps = isOrder ? buttonRole : {};
const buttonLikeListeners = isOrder
? { onKeyPress: this.onKeyPress }
: {};
return (<Cell {...buttonLikeProps} {...omit(props, ['onOrderChange'])} className={style(classes.cell, {
head,
orderNone: isOrder && order === 0,
orderAsc: isOrder && order === 1,
orderDesc: isOrder && order === -1
}, className)} {...buttonLikeListeners} onClick={this.onOrderChange}>
{children}
</Cell>);
}
onOrderChange(event) {
const { onClick, onOrderChange, head, order } = this.props;
if (head
&& typeof order === 'number'
&& typeof onOrderChange === 'function') {
onOrderChange(OrderValues[modulo(OrderValues.indexOf(order) + 1, OrderValues.length)], event);
}
if (typeof onClick === 'function') {
onClick(event);
}
}
onKeyPress(event) {
const { onKeyPress } = this.props;
const { key } = event;
if (isKeyboardClick(key)) {
this.onOrderChange(null);
}
if (typeof onKeyPress === 'function') {
onKeyPress(event);
}
}
}
TableCell.propTypes = {
head: PropTypes.bool,
onOrderChange: PropTypes.func,
order: PropTypes.oneOf(OrderValues),
children: PropTypes.node
};
TableCell.defaultProps = {
head: false
};
__decorate([
Bind()
], TableCell.prototype, "onOrderChange", null);
__decorate([
Bind()
], TableCell.prototype, "onKeyPress", null);
return TableCell;
})();
export { TableCell };
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVGFibGVDZWxsLmpzeCIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21wb25lbnRzL1RhYmxlL1RhYmxlQ2VsbC50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sS0FBSyxFQUFFLEVBTWIsYUFBYSxFQUNiLE1BQU0sT0FBTyxDQUFDO0FBQ2YsT0FBTyxTQUFTLE1BQU0sWUFBWSxDQUFDO0FBQ25DLE9BQU8sRUFFTixJQUFJLEVBQ0osSUFBSSxFQUNKLE1BQU0sRUFDTixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLGVBQWUsTUFBTSwyQkFBMkIsQ0FBQztBQUN4RCxPQUFPLEVBQ04sS0FBSyxFQUNMLE9BQU8sRUFDUCxNQUFNLGdCQUFnQixDQUFDO0FBRXhCLE1BQU0sQ0FBTixJQUFZLEtBSVg7QUFKRCxXQUFZLEtBQUs7SUFDaEIsaUNBQVEsQ0FBQTtJQUNSLCtCQUFPLENBQUE7SUFDUCxrQ0FBUyxDQUFBO0FBQ1YsQ0FBQyxFQUpXLEtBQUssS0FBTCxLQUFLLFFBSWhCO0FBaUJELE1BQU0sQ0FBQyxNQUFNLFdBQVcsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxLQUFLLFFBQVEsQ0FBWSxDQUFDO0FBRTlGLE1BQU0sVUFBVSxHQUFHO0lBQ2xCLElBQUksRUFBTSxRQUFRO0lBQ2xCLFFBQVEsRUFBRSxDQUFDO0NBQ1gsQ0FBQztBQUVGO0lBQUEsTUFBYSxTQUFVLFNBQVEsYUFBOEI7UUFhNUQsTUFBTTtZQUVMLE1BQU0sRUFDTCxTQUFTLEVBQ1QsSUFBSSxFQUNKLEtBQUssRUFDTCxRQUFRLEVBQ1IsR0FBRyxLQUFLLEVBQ1IsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDO1lBQ2YsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztZQUNoQyxN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