Nie możesz wybrać więcej, niż 25 tematów Tematy muszą się zaczynać od litery lub cyfry, mogą zawierać myślniki ('-') i mogą mieć do 35 znaków.
 
 
 
 

258 wiersze
7.5 KiB

  1. 'use strict';
  2. Object.defineProperty(exports, "__esModule", {
  3. value: true
  4. });
  5. var _getPrototypeOf = require('babel-runtime/core-js/object/get-prototype-of');
  6. var _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);
  7. var _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');
  8. var _classCallCheck3 = _interopRequireDefault(_classCallCheck2);
  9. var _createClass2 = require('babel-runtime/helpers/createClass');
  10. var _createClass3 = _interopRequireDefault(_createClass2);
  11. var _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');
  12. var _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);
  13. var _inherits2 = require('babel-runtime/helpers/inherits');
  14. var _inherits3 = _interopRequireDefault(_inherits2);
  15. var _simpleAssign = require('simple-assign');
  16. var _simpleAssign2 = _interopRequireDefault(_simpleAssign);
  17. var _react = require('react');
  18. var _react2 = _interopRequireDefault(_react);
  19. var _propTypes = require('prop-types');
  20. var _propTypes2 = _interopRequireDefault(_propTypes);
  21. var _Checkbox = require('../Checkbox');
  22. var _Checkbox2 = _interopRequireDefault(_Checkbox);
  23. var _TableHeaderColumn = require('./TableHeaderColumn');
  24. var _TableHeaderColumn2 = _interopRequireDefault(_TableHeaderColumn);
  25. function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
  26. function getStyles(props, context) {
  27. var tableHeader = context.muiTheme.tableHeader;
  28. return {
  29. root: {
  30. borderBottom: '1px solid ' + tableHeader.borderColor
  31. }
  32. };
  33. }
  34. var TableHeader = function (_Component) {
  35. (0, _inherits3.default)(TableHeader, _Component);
  36. function TableHeader() {
  37. var _ref;
  38. var _temp, _this, _ret;
  39. (0, _classCallCheck3.default)(this, TableHeader);
  40. for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {
  41. args[_key] = arguments[_key];
  42. }
  43. return _ret = (_temp = (_this = (0, _possibleConstructorReturn3.default)(this, (_ref = TableHeader.__proto__ || (0, _getPrototypeOf2.default)(TableHeader)).call.apply(_ref, [this].concat(args))), _this), _this.handleCheckAll = function (event, checked) {
  44. if (_this.props.onSelectAll) {
  45. _this.props.onSelectAll(checked);
  46. }
  47. }, _temp), (0, _possibleConstructorReturn3.default)(_this, _ret);
  48. }
  49. (0, _createClass3.default)(TableHeader, [{
  50. key: 'createSuperHeaderRows',
  51. value: function createSuperHeaderRows() {
  52. var numChildren = _react2.default.Children.count(this.props.children);
  53. if (numChildren === 1) return undefined;
  54. var superHeaders = [];
  55. for (var index = 0; index < numChildren - 1; index++) {
  56. var child = this.props.children[index];
  57. if (!_react2.default.isValidElement(child)) continue;
  58. var props = {
  59. key: 'sh' + index,
  60. rowNumber: index
  61. };
  62. superHeaders.push(this.createSuperHeaderRow(child, props));
  63. }
  64. if (superHeaders.length) return superHeaders;
  65. }
  66. }, {
  67. key: 'createSuperHeaderRow',
  68. value: function createSuperHeaderRow(child, props) {
  69. var children = [];
  70. if (this.props.adjustForCheckbox) {
  71. children.push(this.getCheckboxPlaceholder(props));
  72. }
  73. _react2.default.Children.forEach(child.props.children, function (child) {
  74. children.push(child);
  75. });
  76. return _react2.default.cloneElement(child, props, children);
  77. }
  78. }, {
  79. key: 'createBaseHeaderRow',
  80. value: function createBaseHeaderRow() {
  81. var childrenArray = _react2.default.Children.toArray(this.props.children);
  82. var numChildren = childrenArray.length;
  83. if (numChildren < 1) {
  84. return null;
  85. }
  86. var child = childrenArray[numChildren - 1];
  87. var props = {
  88. key: 'h' + numChildren,
  89. rowNumber: numChildren
  90. };
  91. var children = [this.getSelectAllCheckboxColumn(props)];
  92. _react2.default.Children.forEach(child.props.children, function (child) {
  93. children.push(child);
  94. });
  95. return _react2.default.cloneElement(child, props, children);
  96. }
  97. }, {
  98. key: 'getCheckboxPlaceholder',
  99. value: function getCheckboxPlaceholder(props) {
  100. if (!this.props.adjustForCheckbox) return null;
  101. var disabled = !this.props.enableSelectAll;
  102. var key = 'hpcb' + props.rowNumber;
  103. return _react2.default.createElement(_TableHeaderColumn2.default, {
  104. key: key,
  105. style: {
  106. width: 24,
  107. cursor: disabled ? 'default' : 'inherit'
  108. }
  109. });
  110. }
  111. }, {
  112. key: 'getSelectAllCheckboxColumn',
  113. value: function getSelectAllCheckboxColumn(props) {
  114. if (!this.props.displaySelectAll) return this.getCheckboxPlaceholder(props);
  115. var disabled = !this.props.enableSelectAll;
  116. var checkbox = _react2.default.createElement(_Checkbox2.default, {
  117. key: 'selectallcb',
  118. name: 'selectallcb',
  119. value: 'selected',
  120. disabled: disabled,
  121. checked: this.props.selectAllSelected,
  122. onCheck: this.handleCheckAll
  123. });
  124. var key = 'hpcb' + props.rowNumber;
  125. return _react2.default.createElement(
  126. _TableHeaderColumn2.default,
  127. {
  128. key: key,
  129. style: {
  130. width: 24,
  131. cursor: disabled ? 'not-allowed' : 'inherit'
  132. }
  133. },
  134. checkbox
  135. );
  136. }
  137. }, {
  138. key: 'render',
  139. value: function render() {
  140. var _props = this.props,
  141. className = _props.className,
  142. style = _props.style;
  143. var prepareStyles = this.context.muiTheme.prepareStyles;
  144. var styles = getStyles(this.props, this.context);
  145. var superHeaderRows = this.createSuperHeaderRows();
  146. var baseHeaderRow = this.createBaseHeaderRow();
  147. return _react2.default.createElement(
  148. 'thead',
  149. { className: className, style: prepareStyles((0, _simpleAssign2.default)(styles.root, style)) },
  150. superHeaderRows,
  151. baseHeaderRow
  152. );
  153. }
  154. }]);
  155. return TableHeader;
  156. }(_react.Component);
  157. TableHeader.muiName = 'TableHeader';
  158. TableHeader.defaultProps = {
  159. adjustForCheckbox: true,
  160. displaySelectAll: true,
  161. enableSelectAll: true,
  162. selectAllSelected: false
  163. };
  164. TableHeader.contextTypes = {
  165. muiTheme: _propTypes2.default.object.isRequired
  166. };
  167. TableHeader.propTypes = process.env.NODE_ENV !== "production" ? {
  168. /**
  169. * Controls whether or not header rows should be
  170. * adjusted for a checkbox column. If the select all
  171. * checkbox is true, this property will not influence
  172. * the number of columns. This is mainly useful for
  173. * "super header" rows so that the checkbox column
  174. * does not create an offset that needs to be accounted
  175. * for manually.
  176. */
  177. adjustForCheckbox: _propTypes2.default.bool,
  178. /**
  179. * Children passed to table header.
  180. */
  181. children: _propTypes2.default.node,
  182. /**
  183. * The css class name of the root element.
  184. */
  185. className: _propTypes2.default.string,
  186. /**
  187. * Controls whether or not the select all checkbox is displayed.
  188. */
  189. displaySelectAll: _propTypes2.default.bool,
  190. /**
  191. * If set to true, the select all button will be interactable.
  192. * If set to false, the button will not be interactable.
  193. * To hide the checkbox, set displaySelectAll to false.
  194. */
  195. enableSelectAll: _propTypes2.default.bool,
  196. /**
  197. * @ignore
  198. * Callback when select all has been checked.
  199. */
  200. onSelectAll: _propTypes2.default.func,
  201. /**
  202. * @ignore
  203. * True when select all has been checked.
  204. */
  205. selectAllSelected: _propTypes2.default.bool,
  206. /**
  207. * Override the inline-styles of the root element.
  208. */
  209. style: _propTypes2.default.object
  210. } : {};
  211. exports.default = TableHeader;