Вы не можете выбрать более 25 тем Темы должны начинаться с буквы или цифры, могут содержать дефисы(-) и должны содержать не более 35 символов.

3 лет назад
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283
  1. 'use strict';
  2. Object.defineProperty(exports, "__esModule", {
  3. value: true
  4. });
  5. var _extends2 = require('babel-runtime/helpers/extends');
  6. var _extends3 = _interopRequireDefault(_extends2);
  7. var _objectWithoutProperties2 = require('babel-runtime/helpers/objectWithoutProperties');
  8. var _objectWithoutProperties3 = _interopRequireDefault(_objectWithoutProperties2);
  9. var _getPrototypeOf = require('babel-runtime/core-js/object/get-prototype-of');
  10. var _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);
  11. var _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');
  12. var _classCallCheck3 = _interopRequireDefault(_classCallCheck2);
  13. var _createClass2 = require('babel-runtime/helpers/createClass');
  14. var _createClass3 = _interopRequireDefault(_createClass2);
  15. var _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');
  16. var _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);
  17. var _inherits2 = require('babel-runtime/helpers/inherits');
  18. var _inherits3 = _interopRequireDefault(_inherits2);
  19. var _simpleAssign = require('simple-assign');
  20. var _simpleAssign2 = _interopRequireDefault(_simpleAssign);
  21. var _react = require('react');
  22. var _react2 = _interopRequireDefault(_react);
  23. var _propTypes = require('prop-types');
  24. var _propTypes2 = _interopRequireDefault(_propTypes);
  25. function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
  26. function getStyles(props, context, state) {
  27. var tableRow = context.muiTheme.tableRow;
  28. var cellBgColor = 'inherit';
  29. if (props.hovered || state.hovered) {
  30. cellBgColor = tableRow.hoverColor;
  31. } else if (props.selected) {
  32. cellBgColor = tableRow.selectedColor;
  33. } else if (props.striped) {
  34. cellBgColor = tableRow.stripeColor;
  35. }
  36. return {
  37. root: {
  38. borderBottom: props.displayBorder && '1px solid ' + tableRow.borderColor,
  39. color: tableRow.textColor,
  40. height: tableRow.height
  41. },
  42. cell: {
  43. backgroundColor: cellBgColor
  44. }
  45. };
  46. }
  47. var TableRow = function (_Component) {
  48. (0, _inherits3.default)(TableRow, _Component);
  49. function TableRow() {
  50. var _ref;
  51. var _temp, _this, _ret;
  52. (0, _classCallCheck3.default)(this, TableRow);
  53. for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {
  54. args[_key] = arguments[_key];
  55. }
  56. return _ret = (_temp = (_this = (0, _possibleConstructorReturn3.default)(this, (_ref = TableRow.__proto__ || (0, _getPrototypeOf2.default)(TableRow)).call.apply(_ref, [this].concat(args))), _this), _this.state = {
  57. hovered: false
  58. }, _this.onCellClick = function (event, columnIndex) {
  59. if (_this.props.selectable && _this.props.onCellClick) {
  60. _this.props.onCellClick(event, _this.props.rowNumber, columnIndex);
  61. }
  62. event.ctrlKey = true;
  63. _this.onRowClick(event);
  64. }, _this.onCellHover = function (event, columnIndex) {
  65. if (_this.props.hoverable) {
  66. _this.setState({ hovered: true });
  67. if (_this.props.onCellHover) _this.props.onCellHover(event, _this.props.rowNumber, columnIndex);
  68. _this.onRowHover(event);
  69. }
  70. }, _this.onCellHoverExit = function (event, columnIndex) {
  71. if (_this.props.hoverable) {
  72. _this.setState({ hovered: false });
  73. if (_this.props.onCellHoverExit) _this.props.onCellHoverExit(event, _this.props.rowNumber, columnIndex);
  74. _this.onRowHoverExit(event);
  75. }
  76. }, _temp), (0, _possibleConstructorReturn3.default)(_this, _ret);
  77. }
  78. (0, _createClass3.default)(TableRow, [{
  79. key: 'onRowClick',
  80. value: function onRowClick(event) {
  81. if (this.props.selectable && this.props.onRowClick) {
  82. this.props.onRowClick(event, this.props.rowNumber);
  83. }
  84. }
  85. }, {
  86. key: 'onRowHover',
  87. value: function onRowHover(event) {
  88. if (this.props.onRowHover) {
  89. this.props.onRowHover(event, this.props.rowNumber);
  90. }
  91. }
  92. }, {
  93. key: 'onRowHoverExit',
  94. value: function onRowHoverExit(event) {
  95. if (this.props.onRowHoverExit) {
  96. this.props.onRowHoverExit(event, this.props.rowNumber);
  97. }
  98. }
  99. }, {
  100. key: 'render',
  101. value: function render() {
  102. var _this2 = this;
  103. var _props = this.props,
  104. className = _props.className,
  105. displayBorder = _props.displayBorder,
  106. hoverable = _props.hoverable,
  107. hovered = _props.hovered,
  108. onCellClick = _props.onCellClick,
  109. onCellHover = _props.onCellHover,
  110. onCellHoverExit = _props.onCellHoverExit,
  111. onRowClick = _props.onRowClick,
  112. onRowHover = _props.onRowHover,
  113. onRowHoverExit = _props.onRowHoverExit,
  114. rowNumber = _props.rowNumber,
  115. selectable = _props.selectable,
  116. selected = _props.selected,
  117. striped = _props.striped,
  118. style = _props.style,
  119. other = (0, _objectWithoutProperties3.default)(_props, ['className', 'displayBorder', 'hoverable', 'hovered', 'onCellClick', 'onCellHover', 'onCellHoverExit', 'onRowClick', 'onRowHover', 'onRowHoverExit', 'rowNumber', 'selectable', 'selected', 'striped', 'style']);
  120. var prepareStyles = this.context.muiTheme.prepareStyles;
  121. var styles = getStyles(this.props, this.context, this.state);
  122. var rowColumns = _react2.default.Children.map(this.props.children, function (child, columnNumber) {
  123. if (_react2.default.isValidElement(child)) {
  124. return _react2.default.cloneElement(child, {
  125. columnNumber: columnNumber,
  126. hoverable: _this2.props.hoverable,
  127. key: _this2.props.rowNumber + '-' + columnNumber,
  128. onClick: _this2.onCellClick,
  129. onHover: _this2.onCellHover,
  130. onHoverExit: _this2.onCellHoverExit,
  131. style: (0, _simpleAssign2.default)({}, styles.cell, child.props.style)
  132. });
  133. }
  134. });
  135. return _react2.default.createElement(
  136. 'tr',
  137. (0, _extends3.default)({
  138. className: className,
  139. style: prepareStyles((0, _simpleAssign2.default)(styles.root, style))
  140. }, other),
  141. rowColumns
  142. );
  143. }
  144. }]);
  145. return TableRow;
  146. }(_react.Component);
  147. TableRow.defaultProps = {
  148. displayBorder: true,
  149. hoverable: false,
  150. hovered: false,
  151. selectable: true,
  152. striped: false
  153. };
  154. TableRow.contextTypes = {
  155. muiTheme: _propTypes2.default.object.isRequired
  156. };
  157. TableRow.propTypes = process.env.NODE_ENV !== "production" ? {
  158. /**
  159. * Children passed to table row.
  160. */
  161. children: _propTypes2.default.node,
  162. /**
  163. * The css class name of the root element.
  164. */
  165. className: _propTypes2.default.string,
  166. /**
  167. * If true, row border will be displayed for the row.
  168. * If false, no border will be drawn.
  169. */
  170. displayBorder: _propTypes2.default.bool,
  171. /**
  172. * Controls whether or not the row responds to hover events.
  173. */
  174. hoverable: _propTypes2.default.bool,
  175. /**
  176. * Controls whether or not the row should be rendered as being
  177. * hovered. This property is evaluated in addition to this.state.hovered
  178. * and can be used to synchronize the hovered state with some other
  179. * external events.
  180. */
  181. hovered: _propTypes2.default.bool,
  182. /**
  183. * @ignore
  184. * Called when a row cell is clicked.
  185. * rowNumber is the row number and columnId is
  186. * the column number or the column key.
  187. */
  188. onCellClick: _propTypes2.default.func,
  189. /**
  190. * @ignore
  191. * Called when a table cell is hovered.
  192. * rowNumber is the row number of the hovered row
  193. * and columnId is the column number or the column key of the cell.
  194. */
  195. onCellHover: _propTypes2.default.func,
  196. /**
  197. * @ignore
  198. * Called when a table cell is no longer hovered.
  199. * rowNumber is the row number of the row and columnId
  200. * is the column number or the column key of the cell.
  201. */
  202. onCellHoverExit: _propTypes2.default.func,
  203. /**
  204. * @ignore
  205. * Called when row is clicked.
  206. */
  207. onRowClick: _propTypes2.default.func,
  208. /**
  209. * @ignore
  210. * Called when a table row is hovered.
  211. * rowNumber is the row number of the hovered row.
  212. */
  213. onRowHover: _propTypes2.default.func,
  214. /**
  215. * @ignore
  216. * Called when a table row is no longer hovered.
  217. * rowNumber is the row number of the row that is no longer hovered.
  218. */
  219. onRowHoverExit: _propTypes2.default.func,
  220. /**
  221. * Number to identify the row. This property is
  222. * automatically populated when used with the TableBody component.
  223. */
  224. rowNumber: _propTypes2.default.number,
  225. /**
  226. * If true, table rows can be selected. If multiple row
  227. * selection is desired, enable multiSelectable.
  228. * The default value is true.
  229. */
  230. selectable: _propTypes2.default.bool,
  231. /**
  232. * Indicates that a particular row is selected.
  233. * This property can be used to programmatically select rows.
  234. */
  235. selected: _propTypes2.default.bool,
  236. /**
  237. * Indicates whether or not the row is striped.
  238. */
  239. striped: _propTypes2.default.bool,
  240. /**
  241. * Override the inline-styles of the root element.
  242. */
  243. style: _propTypes2.default.object
  244. } : {};
  245. exports.default = TableRow;