UNPKG

3.83 kBJavaScriptView Raw
1'use strict';
2
3Object.defineProperty(exports, "__esModule", {
4 value: true
5});
6
7var _get2 = require('lodash/get');
8
9var _get3 = _interopRequireDefault(_get2);
10
11var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
12
13var _react = require('react');
14
15var _react2 = _interopRequireDefault(_react);
16
17var _getLevel = require('./get-level');
18
19var _getLevel2 = _interopRequireDefault(_getLevel);
20
21var _hasChildren = require('./has-children');
22
23var _hasChildren2 = _interopRequireDefault(_hasChildren);
24
25function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
26
27function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
28
29function _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }
30
31var toggleChildren = function toggleChildren() {
32 var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
33 _ref$getIndex = _ref.getIndex,
34 getIndex = _ref$getIndex === undefined ? function (rowData) {
35 return rowData._index;
36 } : _ref$getIndex,
37 getRows = _ref.getRows,
38 getShowingChildren = _ref.getShowingChildren,
39 toggleShowingChildren = _ref.toggleShowingChildren,
40 props = _ref.props,
41 _ref$idField = _ref.idField,
42 idField = _ref$idField === undefined ? 'id' : _ref$idField,
43 parentField = _ref.parentField,
44 _ref$toggleEvent = _ref.toggleEvent,
45 toggleEvent = _ref$toggleEvent === undefined ? 'DoubleClick' : _ref$toggleEvent;
46
47 if (!getRows) {
48 throw new Error('tree.toggleChildren - Missing getRows!');
49 }
50
51 if (!getShowingChildren) {
52 throw new Error('tree.toggleChildren - Missing getShowingChildren!');
53 }
54
55 if (!toggleShowingChildren) {
56 throw new Error('tree.toggleChildren - Missing toggleShowingChildren!');
57 }
58
59 var toggle = function toggle(e, index) {
60 e.stopPropagation();
61 e.preventDefault();
62
63 toggleShowingChildren(index);
64 };
65
66 return function (value, extra) {
67 var _ref2 = props || {},
68 className = _ref2.className,
69 restProps = _objectWithoutProperties(_ref2, ['className']); // eslint-disable-line react/prop-types
70
71
72 var rows = getRows();
73 var showingChildren = getShowingChildren(extra);
74 var index = getIndex(extra.rowData);
75 var containsChildren = (0, _hasChildren2.default)({ index: index, idField: idField, parentField: parentField })(rows) ? 'has-children' : '';
76 var level = (0, _getLevel2.default)({ index: index, idField: idField, parentField: parentField })(rows);
77 var hasParent = level > 0 ? 'has-parent' : '';
78
79 var hasAutomaticIndentation = (0, _get3.default)(props, 'indent', true);
80
81 var events = _defineProperty({}, 'on' + toggleEvent, function undefined(e) {
82 toggle(e, index);
83 window.getSelection && window.getSelection().removeAllRanges();
84 });
85
86 return _react2.default.createElement(
87 'div',
88 _extends({
89 style: !!hasAutomaticIndentation && { paddingLeft: level + 'em' },
90 className: containsChildren + ' ' + hasParent + ' ' + (className || '')
91 }, events, restProps),
92 containsChildren && _react2.default.createElement('span', {
93 className: showingChildren ? 'show-less' : 'show-more',
94 onClick: function onClick(e) {
95 return toggle(e, index);
96 }
97 }),
98 value
99 );
100 };
101};
102
103exports.default = toggleChildren;
\No newline at end of file