1 | 'use strict';
|
2 |
|
3 | Object.defineProperty(exports, "__esModule", {
|
4 | value: true
|
5 | });
|
6 |
|
7 | var _get2 = require('lodash/get');
|
8 |
|
9 | var _get3 = _interopRequireDefault(_get2);
|
10 |
|
11 | var _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 |
|
13 | var _react = require('react');
|
14 |
|
15 | var _react2 = _interopRequireDefault(_react);
|
16 |
|
17 | var _getLevel = require('./get-level');
|
18 |
|
19 | var _getLevel2 = _interopRequireDefault(_getLevel);
|
20 |
|
21 | var _hasChildren = require('./has-children');
|
22 |
|
23 | var _hasChildren2 = _interopRequireDefault(_hasChildren);
|
24 |
|
25 | function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
26 |
|
27 | function _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 |
|
29 | function _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 |
|
31 | var 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']);
|
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 |
|
103 | exports.default = toggleChildren; |
\ | No newline at end of file |