linear-react-components-ui 0.4.75-beta.0 → 0.4.75-beta.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -49,12 +49,18 @@
49
49
  animation: revealelement 0.3s forwards ease-in-out;
50
50
  margin-left: 10px;
51
51
  }
52
- >.node-elements {
52
+ >.node-rightelements {
53
53
  animation: revealelement 0.3s forwards ease-in-out;
54
54
  display: flex;
55
55
  justify-content: flex-start;
56
56
  align-items: center;
57
57
  }
58
+ >.node-toolbarelements {
59
+ animation: revealelement 0.3s forwards ease-in-out;
60
+ width: auto;
61
+ height: 100%;
62
+ margin-left: 10px;
63
+ }
58
64
  &:hover {
59
65
  background-color: rgb(209, 209, 209);
60
66
  }
@@ -67,10 +73,15 @@
67
73
  }
68
74
  }
69
75
 
70
- .nodelist > .treeviewitem > .label > .node-elements > .element,
71
- .treeview-component > .treeviewcontainer > .treeviewitem > .label > .node-elements > .element {
76
+ .nodelist > .treeviewitem > .label > .node-rightelements > .element,
77
+ .treeview-component > .treeviewcontainer > .treeviewitem > .label > .node-rightelements > .element {
72
78
  margin-left: 10px;
73
79
  display: flex;
74
80
  align-items: center;
75
81
  height: 100%;
76
82
  }
83
+
84
+ .nodelist > .treeviewitem > .label > .node-toolbarelements > .toolbar-group > .buttonbar,
85
+ .treeview-component > .treeviewcontainer > .treeviewitem > .label > .node-toolbarelements > .toolbar-group > .buttonbar {
86
+ border: none;
87
+ }
@@ -13,6 +13,8 @@ var _propTypes = _interopRequireDefault(require("prop-types"));
13
13
 
14
14
  var _uuid = _interopRequireDefault(require("uuid"));
15
15
 
16
+ var _lodash = _interopRequireDefault(require("lodash"));
17
+
16
18
  var _checkbox = _interopRequireDefault(require("../checkbox"));
17
19
 
18
20
  var _icons = _interopRequireDefault(require("../icons"));
@@ -23,6 +25,8 @@ var _buttons = _interopRequireDefault(require("../buttons"));
23
25
 
24
26
  var _list = _interopRequireWildcard(require("../list"));
25
27
 
28
+ var _toolbar = _interopRequireWildcard(require("../toolbar"));
29
+
26
30
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
27
31
 
28
32
  function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
@@ -41,6 +45,8 @@ function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToAr
41
45
 
42
46
  function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
43
47
 
48
+ function _extends() { _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; }; return _extends.apply(this, arguments); }
49
+
44
50
  function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
45
51
 
46
52
  function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
@@ -124,40 +130,117 @@ var TreeNode = /*#__PURE__*/function (_Component) {
124
130
  }
125
131
  }
126
132
  });
127
- Object.defineProperty(_assertThisInitialized(_this), "returnNodeElements", {
133
+ Object.defineProperty(_assertThisInitialized(_this), "updateElements", {
128
134
  configurable: true,
129
135
  enumerable: true,
130
136
  writable: true,
131
- value: function value() {
137
+ value: function value(elements) {
132
138
  var _this$props = _this.props,
133
- nodeElements = _this$props.nodeElements,
134
- node = _this$props.node;
135
- var result;
136
-
137
- if (nodeElements) {
138
- result = _react["default"].Children.map(nodeElements, function (element) {
139
- if ( /*#__PURE__*/_react["default"].isValidElement(element) && element.props && element.props.onNodeElementClick) {
140
- var onNodeElementClick = element.props.onNodeElementClick;
141
- return /*#__PURE__*/_react["default"].cloneElement(element, {
142
- onClick: function onClick() {
143
- return onNodeElementClick(node);
144
- },
145
- onNodeElementClick: null
146
- });
139
+ node = _this$props.node,
140
+ nodeElementsValidations = _this$props.nodeElementsValidations;
141
+ var updatedElements = [];
142
+
143
+ if (elements) {
144
+ updatedElements = _react["default"].Children.map(elements, function (element) {
145
+ if ( /*#__PURE__*/_react["default"].isValidElement(element) && element.props) {
146
+ var _element$props = element.props,
147
+ validationKey = _element$props.validationKey,
148
+ onNodeElementClick = _element$props.onNodeElementClick;
149
+ var elementBehavior;
150
+ var newProps = {};
151
+
152
+ if (nodeElementsValidations && validationKey) {
153
+ elementBehavior = _this.validateNodeElement(validationKey);
154
+ }
155
+
156
+ if (onNodeElementClick) {
157
+ newProps = _extends({}, newProps, {
158
+ onClick: function onClick() {
159
+ return onNodeElementClick(node);
160
+ },
161
+ onNodeElementClick: null
162
+ });
163
+ }
164
+
165
+ return /*#__PURE__*/_react["default"].cloneElement(element, _extends({}, elementBehavior, newProps));
147
166
  }
148
167
 
149
168
  return element;
150
- }).map(function (element) {
151
- return /*#__PURE__*/_react["default"].createElement("div", {
152
- key: "element-".concat(_uuid["default"].v1()),
153
- className: "element"
154
- }, element);
155
169
  });
156
170
  }
157
171
 
158
- return /*#__PURE__*/_react["default"].createElement("div", {
159
- className: "node-elements"
160
- }, result);
172
+ return updatedElements;
173
+ }
174
+ });
175
+ Object.defineProperty(_assertThisInitialized(_this), "returnNodeRightElements", {
176
+ configurable: true,
177
+ enumerable: true,
178
+ writable: true,
179
+ value: function value() {
180
+ var nodeRightElements = _this.props.nodeRightElements;
181
+
182
+ var updatedNodeRightElements = _this.updateElements(nodeRightElements).map(function (element) {
183
+ var unvisible = element.props && 'visible' in element.props && !element.props.visible;
184
+ var style = unvisible ? {
185
+ display: 'none'
186
+ } : {};
187
+ return /*#__PURE__*/_react["default"].createElement("div", {
188
+ style: style,
189
+ key: "element-".concat(_uuid["default"].v1()),
190
+ className: "element"
191
+ }, element);
192
+ });
193
+
194
+ return updatedNodeRightElements.length > 0 ? /*#__PURE__*/_react["default"].createElement("div", {
195
+ className: "node-rightelements"
196
+ }, updatedNodeRightElements) : null;
197
+ }
198
+ });
199
+ Object.defineProperty(_assertThisInitialized(_this), "returnNodeToolbarElements", {
200
+ configurable: true,
201
+ enumerable: true,
202
+ writable: true,
203
+ value: function value() {
204
+ var nodeToolbarElements = _this.props.nodeToolbarElements;
205
+
206
+ var updatedNodeRightElements = _this.updateElements(nodeToolbarElements);
207
+
208
+ return updatedNodeRightElements.length > 0 ? /*#__PURE__*/_react["default"].createElement(_toolbar["default"], {
209
+ customClass: "node-toolbarelements"
210
+ }, /*#__PURE__*/_react["default"].createElement(_toolbar.ToolBarGroup, null, updatedNodeRightElements)) : null;
211
+ }
212
+ });
213
+ Object.defineProperty(_assertThisInitialized(_this), "validateNodeElement", {
214
+ configurable: true,
215
+ enumerable: true,
216
+ writable: true,
217
+ value: function value(validationKey) {
218
+ var _this$props2 = _this.props,
219
+ nodeElementsValidations = _this$props2.nodeElementsValidations,
220
+ node = _this$props2.node;
221
+ var validations = nodeElementsValidations[validationKey];
222
+ var options = {
223
+ disabled: {
224
+ disabled: true
225
+ },
226
+ unvisible: {
227
+ visible: false
228
+ }
229
+ };
230
+ var elementBehavior = {};
231
+
232
+ if (validations) {
233
+ validations.forEach(function (validation) {
234
+ var validator = validation.validator,
235
+ applyBehavior = validation.applyBehavior;
236
+
237
+ if (_lodash["default"].isEmpty(elementBehavior) && validator && validator(node)) {
238
+ elementBehavior = options[applyBehavior] || options.unvisible;
239
+ }
240
+ });
241
+ }
242
+
243
+ return elementBehavior;
161
244
  }
162
245
  });
163
246
  _this.labelRef = /*#__PURE__*/_react["default"].createRef();
@@ -172,11 +255,12 @@ var TreeNode = /*#__PURE__*/function (_Component) {
172
255
  _createClass(TreeNode, [{
173
256
  key: "componentDidMount",
174
257
  value: function componentDidMount() {
175
- var _this$props2 = this.props,
176
- isParent = _this$props2.isParent,
177
- nodeElements = _this$props2.nodeElements;
258
+ var _this$props3 = this.props,
259
+ isParent = _this$props3.isParent,
260
+ nodeToolbarElements = _this$props3.nodeToolbarElements,
261
+ nodeRightElements = _this$props3.nodeRightElements;
178
262
 
179
- if (isParent || nodeElements) {
263
+ if (isParent || nodeRightElements || nodeToolbarElements) {
180
264
  this.labelRef.current.addEventListener('mouseenter', this.handleShowNodeElements);
181
265
  this.labelRef.current.addEventListener('mouseleave', this.handleShowNodeElements);
182
266
  }
@@ -184,11 +268,12 @@ var TreeNode = /*#__PURE__*/function (_Component) {
184
268
  }, {
185
269
  key: "componentWillUnmount",
186
270
  value: function componentWillUnmount() {
187
- var _this$props3 = this.props,
188
- isParent = _this$props3.isParent,
189
- nodeElements = _this$props3.nodeElements;
271
+ var _this$props4 = this.props,
272
+ isParent = _this$props4.isParent,
273
+ nodeToolbarElements = _this$props4.nodeToolbarElements,
274
+ nodeRightElements = _this$props4.nodeRightElements;
190
275
 
191
- if (isParent || nodeElements) {
276
+ if (isParent || nodeRightElements || nodeToolbarElements) {
192
277
  this.labelRef.current.removeEventListener('mouseenter', this.handleShowNodeElements);
193
278
  this.labelRef.current.removeEventListener('mouseleave', this.handleShowNodeElements);
194
279
  }
@@ -198,11 +283,12 @@ var TreeNode = /*#__PURE__*/function (_Component) {
198
283
  value: function render() {
199
284
  var _this2 = this;
200
285
 
201
- var _this$props4 = this.props,
202
- node = _this$props4.node,
203
- children = _this$props4.children,
204
- isParent = _this$props4.isParent,
205
- onNodeClick = _this$props4.onNodeClick;
286
+ var _this$props5 = this.props,
287
+ node = _this$props5.node,
288
+ children = _this$props5.children,
289
+ isParent = _this$props5.isParent,
290
+ onNodeClick = _this$props5.onNodeClick,
291
+ nodeMenuButtonSize = _this$props5.nodeMenuButtonSize;
206
292
  var showNodeElements = this.state.showNodeElements;
207
293
  return /*#__PURE__*/_react["default"].createElement(_constants.TreeviewContext.Consumer, null, function (_ref) {
208
294
  var valuePropName = _ref.valuePropName,
@@ -242,7 +328,7 @@ var TreeNode = /*#__PURE__*/function (_Component) {
242
328
  }) : node[labelPropName], allowCheckAllChildren && showNodeElements && isParent ? /*#__PURE__*/_react["default"].createElement(_buttons["default"], {
243
329
  dropdown: true,
244
330
  dropdownAlign: "left",
245
- size: "mini",
331
+ size: nodeMenuButtonSize,
246
332
  onClick: function onClick() {
247
333
  _this2.setState({
248
334
  keepMenuOpened: !_this2.state.keepMenuOpened
@@ -274,7 +360,7 @@ var TreeNode = /*#__PURE__*/function (_Component) {
274
360
  keepMenuOpened: false
275
361
  });
276
362
  }
277
- }))) : null, showNodeElements && _this2.returnNodeElements()), /*#__PURE__*/_react["default"].createElement("ul", {
363
+ }))) : null, showNodeElements && _this2.returnNodeRightElements(), showNodeElements && _this2.returnNodeToolbarElements()), /*#__PURE__*/_react["default"].createElement("ul", {
278
364
  className: "nodelist"
279
365
  }, _this2.state.isVisible && children));
280
366
  });
@@ -291,16 +377,22 @@ TreeNode.propTypes = {
291
377
  parentId: _propTypes["default"].number,
292
378
  disabled: _propTypes["default"].bool,
293
379
  isParent: _propTypes["default"].bool,
294
- nodeElements: _propTypes["default"].oneOfType([_propTypes["default"].arrayOf(_propTypes["default"].object), _propTypes["default"].element, _propTypes["default"].object]),
295
- onNodeClick: _propTypes["default"].func
380
+ nodeRightElements: _propTypes["default"].oneOfType([_propTypes["default"].arrayOf(_propTypes["default"].object), _propTypes["default"].element, _propTypes["default"].object]),
381
+ nodeToolbarElements: _propTypes["default"].oneOfType([_propTypes["default"].arrayOf(_propTypes["default"].object), _propTypes["default"].element, _propTypes["default"].object]),
382
+ nodeMenuButtonSize: _propTypes["default"].oneOf(['mini', 'small', 'medium', 'large', 'default']),
383
+ onNodeClick: _propTypes["default"].func,
384
+ nodeElementsValidations: _propTypes["default"].object
296
385
  };
297
386
  TreeNode.defaultProps = {
298
387
  childrenIds: [],
299
388
  parentId: undefined,
300
389
  disabled: false,
301
390
  isParent: false,
302
- nodeElements: undefined,
303
- onNodeClick: undefined
391
+ nodeRightElements: undefined,
392
+ nodeToolbarElements: undefined,
393
+ nodeMenuButtonSize: 'small',
394
+ onNodeClick: undefined,
395
+ nodeElementsValidations: undefined
304
396
  };
305
397
  TreeNode.contextType = _constants.TreeviewContext;
306
398
  var _default = TreeNode;
@@ -415,8 +415,11 @@ var TreeView = /*#__PURE__*/function (_Component) {
415
415
  var parentId = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : undefined;
416
416
  var ids = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : undefined;
417
417
  var _this$props3 = _this.props,
418
- nodeElements = _this$props3.nodeElements,
419
- onNodeClick = _this$props3.onNodeClick;
418
+ nodeRightElements = _this$props3.nodeRightElements,
419
+ onNodeClick = _this$props3.onNodeClick,
420
+ nodeElementsValidations = _this$props3.nodeElementsValidations,
421
+ nodeToolbarElements = _this$props3.nodeToolbarElements,
422
+ nodeMenuButtonSize = _this$props3.nodeMenuButtonSize;
420
423
  var childrenIds = [];
421
424
 
422
425
  if (node.itens && node.itens.length > 0) {
@@ -437,7 +440,10 @@ var TreeView = /*#__PURE__*/function (_Component) {
437
440
  childrenIds: childrenIds,
438
441
  isParent: node.itens && node.itens.length > 0,
439
442
  parentId: parentId,
440
- nodeElements: nodeElements,
443
+ nodeRightElements: nodeRightElements,
444
+ nodeToolbarElements: nodeToolbarElements,
445
+ nodeElementsValidations: nodeElementsValidations,
446
+ nodeMenuButtonSize: nodeMenuButtonSize,
441
447
  onNodeClick: onNodeClick
442
448
  }, childrenIds.length > 0 && node.itens.map(function (nodeitem) {
443
449
  return _this.buildTree(nodeitem, node.id, ids);
@@ -477,6 +483,15 @@ var TreeView = /*#__PURE__*/function (_Component) {
477
483
  className: "treeviewcontainer ".concat(bordered && '-bordered')
478
484
  }, this.buildTree(data))));
479
485
  }
486
+ }], [{
487
+ key: "getDerivedStateFromProps",
488
+ value: function getDerivedStateFromProps(props, state) {
489
+ var data = props.data;
490
+ if (data !== state.data) return {
491
+ data: data
492
+ };
493
+ return null;
494
+ }
480
495
  }]);
481
496
 
482
497
  return TreeView;
@@ -499,8 +514,11 @@ TreeView.propTypes = {
499
514
  allowCheckAllChildren: _propTypes["default"].bool,
500
515
  allowCheckAllAncestry: _propTypes["default"].bool,
501
516
  defaultDisabledTooltip: _propTypes["default"].string,
502
- nodeElements: _propTypes["default"].oneOfType([_propTypes["default"].arrayOf(_propTypes["default"].object), _propTypes["default"].element, _propTypes["default"].object]),
503
- onNodeClick: _propTypes["default"].func
517
+ nodeRightElements: _propTypes["default"].oneOfType([_propTypes["default"].arrayOf(_propTypes["default"].object), _propTypes["default"].element, _propTypes["default"].object]),
518
+ nodeToolbarElements: _propTypes["default"].oneOfType([_propTypes["default"].arrayOf(_propTypes["default"].object), _propTypes["default"].element, _propTypes["default"].object]),
519
+ nodeMenuButtonSize: _propTypes["default"].oneOf(['mini', 'small', 'medium', 'large', 'default']),
520
+ onNodeClick: _propTypes["default"].func,
521
+ nodeElementsValidations: _propTypes["default"].object
504
522
  };
505
523
  TreeView.defaultProps = {
506
524
  customClass: '',
@@ -515,8 +533,11 @@ TreeView.defaultProps = {
515
533
  allowCheckAllChildren: false,
516
534
  allowCheckAllAncestry: false,
517
535
  defaultDisabledTooltip: '',
518
- nodeElements: undefined,
519
- onNodeClick: undefined
536
+ nodeRightElements: undefined,
537
+ nodeToolbarElements: undefined,
538
+ nodeMenuButtonSize: 'small',
539
+ onNodeClick: undefined,
540
+ nodeElementsValidations: undefined
520
541
  };
521
542
  var _default = TreeView;
522
543
  exports["default"] = _default;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "linear-react-components-ui",
3
- "version": "0.4.75-beta.0",
3
+ "version": "0.4.75-beta.4",
4
4
  "description": "Linear Sistemas ReactJs Components",
5
5
  "main": "lib/index.js",
6
6
  "scripts": {