UNPKG

@flexis/ui

Version:

Styleless React Components

77 lines 6.16 kB
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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