linear-react-components-ui 0.4.75-beta.8 → 0.4.76-beta.0

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.
Files changed (125) hide show
  1. package/.eslintrc.js +2 -5
  2. package/.tool-versions +1 -0
  3. package/.vscode/settings.json +8 -9
  4. package/README.md +33 -0
  5. package/config/jest/cssTransform.js +14 -0
  6. package/config/jest/fileTransform.js +12 -0
  7. package/config/jest/storageMock.js +40 -0
  8. package/jest.config.js +18 -0
  9. package/lib/alerts/alert.spec.js +133 -0
  10. package/lib/assets/styles/dropdown.scss +25 -2
  11. package/lib/assets/styles/effects.scss +12 -0
  12. package/lib/assets/styles/floatMenu.scss +0 -1
  13. package/lib/assets/styles/multiSelect.scss +105 -0
  14. package/lib/assets/styles/panel.scss +0 -1
  15. package/lib/assets/styles/periodpicker.scss +65 -0
  16. package/lib/assets/styles/popover.scss +9 -11
  17. package/lib/assets/styles/progress.scss +8 -1
  18. package/lib/assets/styles/select.scss +1 -0
  19. package/lib/assets/styles/table.scss +13 -5
  20. package/lib/assets/styles/tabs.scss +77 -43
  21. package/lib/avatar/avatar.spec.js +190 -0
  22. package/lib/avatar/index.js +6 -2
  23. package/lib/badge/badge.spec.js +127 -0
  24. package/lib/badge/index.js +3 -5
  25. package/lib/buttons/buttons.spec.js +504 -0
  26. package/lib/calendar/calendar.spec.js +171 -0
  27. package/lib/checkbox/checkbox.spec.js +215 -0
  28. package/lib/checkbox/index.js +1 -0
  29. package/lib/dialog/Custom.js +7 -1
  30. package/lib/dialog/base/index.js +18 -6
  31. package/lib/dialog/dialog.spec.js +488 -0
  32. package/lib/dialog/form/index.js +23 -4
  33. package/lib/drawer/Drawer.js +3 -0
  34. package/lib/drawer/Drawer.spec.js +258 -0
  35. package/lib/drawer/Header.js +4 -1
  36. package/lib/drawer/index.js +4 -1
  37. package/lib/dropdown/Popup.js +1 -0
  38. package/lib/dropdown/dropdown.spec.js +168 -0
  39. package/lib/dropdown/withDropdown.js +10 -4
  40. package/lib/fieldset/fieldset.spec.js +329 -0
  41. package/lib/form/Field.js +2 -0
  42. package/lib/form/FieldNumber.js +10 -2
  43. package/lib/form/FieldPeriod.js +100 -0
  44. package/lib/form/form.spec.js +285 -0
  45. package/lib/form/helpers.js +9 -1
  46. package/lib/form/index.js +76 -10
  47. package/lib/form/withFieldHOC.js +2 -0
  48. package/lib/form/withFormSecurity.js +106 -0
  49. package/lib/gridlayout/GridRow.js +1 -1
  50. package/lib/gridlayout/gridLayout.spec.js +169 -0
  51. package/lib/icons/helper.js +16 -0
  52. package/lib/icons/icons.spec.js +86 -0
  53. package/lib/icons/index.js +2 -0
  54. package/lib/inputs/base/InputTextBase.js +15 -5
  55. package/lib/inputs/base/base.spec.js +690 -0
  56. package/lib/inputs/color/color_input.spec.js +174 -0
  57. package/lib/inputs/color/index.js +2 -2
  58. package/lib/inputs/date/date.spec.js +344 -0
  59. package/lib/inputs/date/index.js +7 -6
  60. package/lib/inputs/mask/Cpf.js +9 -9
  61. package/lib/inputs/mask/input_mask.spec.js +590 -0
  62. package/lib/inputs/multiSelect/ActionButtons.js +68 -0
  63. package/lib/inputs/multiSelect/Dropdown.js +200 -0
  64. package/lib/inputs/multiSelect/helper.js +18 -0
  65. package/lib/inputs/multiSelect/index.js +343 -0
  66. package/lib/inputs/number/BaseNumber.js +1 -1
  67. package/lib/inputs/number/index.js +7 -5
  68. package/lib/inputs/number/numberfield.spec.js +215 -0
  69. package/lib/inputs/period/Dialog.js +38 -0
  70. package/lib/inputs/period/Dropdown.js +90 -0
  71. package/lib/inputs/period/PeriodList.js +79 -0
  72. package/lib/inputs/period/helper.js +118 -0
  73. package/lib/inputs/period/index.js +490 -0
  74. package/lib/inputs/search/search_input.spec.js +209 -0
  75. package/lib/inputs/select/Dropdown.js +4 -4
  76. package/lib/inputs/select/index.js +26 -3
  77. package/lib/inputs/select/multiple/index.js +9 -7
  78. package/lib/inputs/select/select.spec.js +391 -0
  79. package/lib/inputs/select/simple/index.js +30 -18
  80. package/lib/inputs/text/textfield.spec.js +215 -0
  81. package/lib/inputs/textarea/textarea.spec.js +59 -0
  82. package/lib/internals/withTooltip.js +84 -82
  83. package/lib/labelMessages/index.js +3 -2
  84. package/lib/labelMessages/labelMessages.spec.js +176 -0
  85. package/lib/labels/label.spec.js +162 -0
  86. package/lib/list/Item.js +3 -3
  87. package/lib/list/index.js +21 -10
  88. package/lib/list/list.spec.js +611 -0
  89. package/lib/menus/float/MenuItem.js +25 -8
  90. package/lib/menus/float/float-menu.spec.js +221 -0
  91. package/lib/menus/sidenav/index.js +7 -3
  92. package/lib/menus/sidenav/popup_menu_search/index.js +1 -1
  93. package/lib/menus/sidenav/sidenav.spec.js +312 -0
  94. package/lib/noPermission/index.js +2 -1
  95. package/lib/panel/panel.spec.js +216 -0
  96. package/lib/popover/index.js +2 -1
  97. package/lib/popover/popover.spec.js +146 -0
  98. package/lib/progress/Bar.js +40 -9
  99. package/lib/progress/index.js +12 -4
  100. package/lib/progress/progress.spec.js +86 -0
  101. package/lib/radio/radio.spec.js +189 -0
  102. package/lib/spinner/SpinnerLoading.js +14 -24
  103. package/lib/spinner/index.js +6 -1
  104. package/lib/spinner/spinner.spec.js +152 -0
  105. package/lib/split/Split.js +10 -12
  106. package/lib/split/split.spec.js +151 -0
  107. package/lib/table/Header.js +3 -1
  108. package/lib/table/Row.js +2 -5
  109. package/lib/table/index.js +1 -4
  110. package/lib/table/table.spec.js +352 -0
  111. package/lib/tabs/DropdownItems.js +84 -0
  112. package/lib/tabs/Menu.js +18 -5
  113. package/lib/tabs/MenuItems.js +7 -7
  114. package/lib/tabs/Panel.js +1 -3
  115. package/lib/tabs/index.js +126 -17
  116. package/lib/tabs/tabs.spec.js +346 -0
  117. package/lib/toolbar/index.js +8 -4
  118. package/lib/toolbar/toolbar.spec.js +394 -0
  119. package/lib/tooltip/index.js +13 -0
  120. package/lib/tooltip/tooltip.spec.js +203 -0
  121. package/lib/treeview/Node.js +55 -32
  122. package/lib/treeview/index.js +30 -3
  123. package/lib/treeview/treeview.spec.js +261 -0
  124. package/package.json +19 -9
  125. package/.DS_Store +0 -0
@@ -83,17 +83,21 @@ var TreeNode = /*#__PURE__*/function (_Component) {
83
83
  enumerable: true,
84
84
  writable: true,
85
85
  value: function value() {
86
- var node = _this.props.node;
86
+ var _this$props = _this.props,
87
+ node = _this$props.node,
88
+ alwaysShowArrow = _this$props.alwaysShowArrow;
87
89
 
88
90
  var span = /*#__PURE__*/_react["default"].createElement("noscript", null);
89
91
 
90
- if (node.itens && node.itens.length > 0) {
92
+ if (node.itens && node.itens.length > 0 || alwaysShowArrow) {
91
93
  span = /*#__PURE__*/_react["default"].createElement("span", {
92
94
  onKeyPress: null,
93
95
  tabIndex: 0,
94
96
  role: "button",
95
97
  className: "opencloseicon",
96
- onClick: _this.openCloseTree
98
+ onClick: function onClick() {
99
+ return _this.openCloseTree(node);
100
+ }
97
101
  }, /*#__PURE__*/_react["default"].createElement(_icons["default"], {
98
102
  name: _this.state.isVisible ? 'up' : 'down',
99
103
  size: 10
@@ -107,10 +111,23 @@ var TreeNode = /*#__PURE__*/function (_Component) {
107
111
  configurable: true,
108
112
  enumerable: true,
109
113
  writable: true,
110
- value: function value() {
111
- _this.setState({
112
- isVisible: !_this.state.isVisible
113
- });
114
+ value: function value(node) {
115
+ var _this$state = _this.state,
116
+ isVisible = _this$state.isVisible,
117
+ wasOpened = _this$state.wasOpened;
118
+ var handlerOnNodeOpen = _this.props.handlerOnNodeOpen;
119
+ var nextState = {
120
+ isVisible: !isVisible
121
+ };
122
+
123
+ if (!wasOpened && handlerOnNodeOpen) {
124
+ nextState = _extends({}, nextState, {
125
+ wasOpened: true
126
+ });
127
+ handlerOnNodeOpen(node);
128
+ }
129
+
130
+ _this.setState(nextState);
114
131
  }
115
132
  });
116
133
  Object.defineProperty(_assertThisInitialized(_this), "handleShowNodeElements", {
@@ -118,9 +135,9 @@ var TreeNode = /*#__PURE__*/function (_Component) {
118
135
  enumerable: true,
119
136
  writable: true,
120
137
  value: function value() {
121
- var _this$state = _this.state,
122
- showNodeElements = _this$state.showNodeElements,
123
- keepMenuOpened = _this$state.keepMenuOpened;
138
+ var _this$state2 = _this.state,
139
+ showNodeElements = _this$state2.showNodeElements,
140
+ keepMenuOpened = _this$state2.keepMenuOpened;
124
141
  if (!showNodeElements) _this.setState({
125
142
  showNodeElements: true
126
143
  });else if (showNodeElements && !keepMenuOpened) {
@@ -135,9 +152,9 @@ var TreeNode = /*#__PURE__*/function (_Component) {
135
152
  enumerable: true,
136
153
  writable: true,
137
154
  value: function value(elements) {
138
- var _this$props = _this.props,
139
- node = _this$props.node,
140
- nodeElementsValidations = _this$props.nodeElementsValidations;
155
+ var _this$props2 = _this.props,
156
+ node = _this$props2.node,
157
+ nodeElementsValidations = _this$props2.nodeElementsValidations;
141
158
  var updatedElements = [];
142
159
 
143
160
  if (elements) {
@@ -155,8 +172,9 @@ var TreeNode = /*#__PURE__*/function (_Component) {
155
172
 
156
173
  if (onNodeElementClick) {
157
174
  newProps = _extends({}, newProps, {
158
- onClick: function onClick() {
159
- return onNodeElementClick(node);
175
+ onClick: function onClick(e) {
176
+ onNodeElementClick(node);
177
+ if (e.stopPropagation) e.stopPropagation();
160
178
  },
161
179
  onNodeElementClick: null
162
180
  });
@@ -215,9 +233,9 @@ var TreeNode = /*#__PURE__*/function (_Component) {
215
233
  enumerable: true,
216
234
  writable: true,
217
235
  value: function value(validationKey) {
218
- var _this$props2 = _this.props,
219
- nodeElementsValidations = _this$props2.nodeElementsValidations,
220
- node = _this$props2.node;
236
+ var _this$props3 = _this.props,
237
+ nodeElementsValidations = _this$props3.nodeElementsValidations,
238
+ node = _this$props3.node;
221
239
  var validations = nodeElementsValidations[validationKey];
222
240
  var options = {
223
241
  disabled: {
@@ -246,6 +264,7 @@ var TreeNode = /*#__PURE__*/function (_Component) {
246
264
  _this.labelRef = /*#__PURE__*/_react["default"].createRef();
247
265
  _this.state = {
248
266
  isVisible: context.startNodesOpened,
267
+ wasOpened: context.startNodesOpened,
249
268
  showNodeElements: false,
250
269
  keepMenuOpened: false
251
270
  };
@@ -255,10 +274,10 @@ var TreeNode = /*#__PURE__*/function (_Component) {
255
274
  _createClass(TreeNode, [{
256
275
  key: "componentDidMount",
257
276
  value: function componentDidMount() {
258
- var _this$props3 = this.props,
259
- isParent = _this$props3.isParent,
260
- nodeToolbarElements = _this$props3.nodeToolbarElements,
261
- nodeRightElements = _this$props3.nodeRightElements;
277
+ var _this$props4 = this.props,
278
+ isParent = _this$props4.isParent,
279
+ nodeToolbarElements = _this$props4.nodeToolbarElements,
280
+ nodeRightElements = _this$props4.nodeRightElements;
262
281
 
263
282
  if (isParent || nodeRightElements || nodeToolbarElements) {
264
283
  this.labelRef.current.addEventListener('mouseenter', this.handleShowNodeElements);
@@ -268,10 +287,10 @@ var TreeNode = /*#__PURE__*/function (_Component) {
268
287
  }, {
269
288
  key: "componentWillUnmount",
270
289
  value: function componentWillUnmount() {
271
- var _this$props4 = this.props,
272
- isParent = _this$props4.isParent,
273
- nodeToolbarElements = _this$props4.nodeToolbarElements,
274
- nodeRightElements = _this$props4.nodeRightElements;
290
+ var _this$props5 = this.props,
291
+ isParent = _this$props5.isParent,
292
+ nodeToolbarElements = _this$props5.nodeToolbarElements,
293
+ nodeRightElements = _this$props5.nodeRightElements;
275
294
 
276
295
  if (isParent || nodeRightElements || nodeToolbarElements) {
277
296
  this.labelRef.current.removeEventListener('mouseenter', this.handleShowNodeElements);
@@ -283,12 +302,12 @@ var TreeNode = /*#__PURE__*/function (_Component) {
283
302
  value: function render() {
284
303
  var _this2 = this;
285
304
 
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;
305
+ var _this$props6 = this.props,
306
+ node = _this$props6.node,
307
+ children = _this$props6.children,
308
+ isParent = _this$props6.isParent,
309
+ onNodeClick = _this$props6.onNodeClick,
310
+ nodeMenuButtonSize = _this$props6.nodeMenuButtonSize;
292
311
  var showNodeElements = this.state.showNodeElements;
293
312
  return /*#__PURE__*/_react["default"].createElement(_constants.TreeviewContext.Consumer, null, function (_ref) {
294
313
  var valuePropName = _ref.valuePropName,
@@ -377,10 +396,12 @@ TreeNode.propTypes = {
377
396
  parentId: _propTypes["default"].number,
378
397
  disabled: _propTypes["default"].bool,
379
398
  isParent: _propTypes["default"].bool,
399
+ alwaysShowArrow: _propTypes["default"].bool,
380
400
  nodeRightElements: _propTypes["default"].oneOfType([_propTypes["default"].arrayOf(_propTypes["default"].object), _propTypes["default"].element, _propTypes["default"].object]),
381
401
  nodeToolbarElements: _propTypes["default"].oneOfType([_propTypes["default"].arrayOf(_propTypes["default"].object), _propTypes["default"].element, _propTypes["default"].object]),
382
402
  nodeMenuButtonSize: _propTypes["default"].oneOf(['mini', 'small', 'medium', 'large', 'default']),
383
403
  onNodeClick: _propTypes["default"].func,
404
+ handlerOnNodeOpen: _propTypes["default"].func,
384
405
  nodeElementsValidations: _propTypes["default"].object
385
406
  };
386
407
  TreeNode.defaultProps = {
@@ -388,10 +409,12 @@ TreeNode.defaultProps = {
388
409
  parentId: undefined,
389
410
  disabled: false,
390
411
  isParent: false,
412
+ alwaysShowArrow: false,
391
413
  nodeRightElements: undefined,
392
414
  nodeToolbarElements: undefined,
393
415
  nodeMenuButtonSize: 'small',
394
416
  onNodeClick: undefined,
417
+ handlerOnNodeOpen: undefined,
395
418
  nodeElementsValidations: undefined
396
419
  };
397
420
  TreeNode.contextType = _constants.TreeviewContext;
@@ -348,6 +348,25 @@ var TreeView = /*#__PURE__*/function (_Component) {
348
348
  });
349
349
  }
350
350
  });
351
+ Object.defineProperty(_assertThisInitialized(_this), "handleOnNodeOpen", {
352
+ configurable: true,
353
+ enumerable: true,
354
+ writable: true,
355
+ value: function value(node) {
356
+ var id = node.id;
357
+ var onNodeOpen = _this.props.onNodeOpen;
358
+ var alreadyOpenedIds = _this.state.alreadyOpenedIds;
359
+
360
+ if (!alreadyOpenedIds.includes(id) && onNodeOpen) {
361
+ alreadyOpenedIds = [].concat(_toConsumableArray(alreadyOpenedIds), [id]);
362
+ onNodeOpen(node);
363
+ }
364
+
365
+ _this.setState({
366
+ alreadyOpenedIds: alreadyOpenedIds
367
+ });
368
+ }
369
+ });
351
370
  Object.defineProperty(_assertThisInitialized(_this), "handleCheck", {
352
371
  configurable: true,
353
372
  enumerable: true,
@@ -442,7 +461,8 @@ var TreeView = /*#__PURE__*/function (_Component) {
442
461
  onNodeClick = _this$props3.onNodeClick,
443
462
  nodeElementsValidations = _this$props3.nodeElementsValidations,
444
463
  nodeToolbarElements = _this$props3.nodeToolbarElements,
445
- nodeMenuButtonSize = _this$props3.nodeMenuButtonSize;
464
+ nodeMenuButtonSize = _this$props3.nodeMenuButtonSize,
465
+ alwaysShowArrow = _this$props3.alwaysShowArrow;
446
466
  var childrenIds = [];
447
467
 
448
468
  if (node.itens && node.itens.length > 0) {
@@ -460,6 +480,7 @@ var TreeView = /*#__PURE__*/function (_Component) {
460
480
  return /*#__PURE__*/_react["default"].createElement(_Node["default"], {
461
481
  key: "node-".concat(node.id),
462
482
  node: node,
483
+ alwaysShowArrow: alwaysShowArrow,
463
484
  childrenIds: childrenIds,
464
485
  isParent: node.itens && node.itens.length > 0,
465
486
  parentId: parentId,
@@ -467,7 +488,8 @@ var TreeView = /*#__PURE__*/function (_Component) {
467
488
  nodeToolbarElements: nodeToolbarElements,
468
489
  nodeElementsValidations: nodeElementsValidations,
469
490
  nodeMenuButtonSize: nodeMenuButtonSize,
470
- onNodeClick: onNodeClick
491
+ onNodeClick: onNodeClick,
492
+ handlerOnNodeOpen: _this.handleOnNodeOpen
471
493
  }, childrenIds.length > 0 && node.itens.map(function (nodeitem) {
472
494
  return _this.buildTree(nodeitem, node.id, ids);
473
495
  }));
@@ -479,7 +501,8 @@ var TreeView = /*#__PURE__*/function (_Component) {
479
501
  propSelectedIds: _this.props.selectedIds,
480
502
  selectedIds: _this.props.selectedIds,
481
503
  isHandlingSelectedIds: false,
482
- requiredParentsIds: []
504
+ requiredParentsIds: [],
505
+ alreadyOpenedIds: []
483
506
  };
484
507
  return _this;
485
508
  }
@@ -551,6 +574,7 @@ TreeView.propTypes = {
551
574
  labelPropName: _propTypes["default"].string.isRequired,
552
575
  parentPropName: _propTypes["default"].string.isRequired,
553
576
  startNodesOpened: _propTypes["default"].bool,
577
+ alwaysShowArrow: _propTypes["default"].bool,
554
578
  selectedIds: _propTypes["default"].arrayOf(_propTypes["default"].number),
555
579
  requiredIds: _propTypes["default"].arrayOf(_propTypes["default"].number),
556
580
  showCheckBox: _propTypes["default"].bool,
@@ -564,12 +588,14 @@ TreeView.propTypes = {
564
588
  nodeToolbarElements: _propTypes["default"].oneOfType([_propTypes["default"].arrayOf(_propTypes["default"].object), _propTypes["default"].element, _propTypes["default"].object]),
565
589
  nodeMenuButtonSize: _propTypes["default"].oneOf(['mini', 'small', 'medium', 'large', 'default']),
566
590
  onNodeClick: _propTypes["default"].func,
591
+ onNodeOpen: _propTypes["default"].func,
567
592
  nodeElementsValidations: _propTypes["default"].object
568
593
  };
569
594
  TreeView.defaultProps = {
570
595
  customClass: '',
571
596
  bordered: false,
572
597
  startNodesOpened: false,
598
+ alwaysShowArrow: false,
573
599
  selectedIds: [],
574
600
  requiredIds: [],
575
601
  showCheckBox: false,
@@ -583,6 +609,7 @@ TreeView.defaultProps = {
583
609
  nodeToolbarElements: undefined,
584
610
  nodeMenuButtonSize: 'small',
585
611
  onNodeClick: undefined,
612
+ onNodeOpen: undefined,
586
613
  nodeElementsValidations: undefined
587
614
  };
588
615
  var _default = TreeView;
@@ -0,0 +1,261 @@
1
+ "use strict";
2
+
3
+ var _react = require("@testing-library/react");
4
+
5
+ var _react2 = _interopRequireDefault(require("react"));
6
+
7
+ require("@testing-library/jest-dom");
8
+
9
+ require("babel-polyfill");
10
+
11
+ var _ = _interopRequireDefault(require("."));
12
+
13
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
14
+
15
+ function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }
16
+
17
+ function _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; }
18
+
19
+ 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); }
20
+
21
+ var dataMock = {
22
+ id: 1,
23
+ titulo: 'SG Linear',
24
+ codigo: 'SG_Linear',
25
+ permissoes: [{
26
+ codigo: 'ACESSO'
27
+ }, {
28
+ codigo: 'GRAVAR'
29
+ }],
30
+ itens: [{
31
+ id: 2,
32
+ titulo: 'Segurança',
33
+ codigo: 'seguranca',
34
+ permissoes: [{
35
+ codigo: 'ACESSO'
36
+ }, {
37
+ codigo: 'GRAVAR'
38
+ }],
39
+ itens: [{
40
+ id: 4,
41
+ titulo: 'Perfis',
42
+ codigo: 'perfis',
43
+ itens: [{
44
+ titulo: 'Editar',
45
+ codigo: 'Editar',
46
+ itens: [{
47
+ titulo: 'Editar permissão ERP',
48
+ codigo: 'Editar permissão ERP'
49
+ }]
50
+ }]
51
+ }]
52
+ }, {
53
+ id: 3,
54
+ titulo: 'Cadastros',
55
+ codigo: 'cadastros',
56
+ permissoes: [{
57
+ codigo: 'ACESSO'
58
+ }, {
59
+ codigo: 'GRAVAR'
60
+ }],
61
+ itens: [{
62
+ id: 5,
63
+ titulo: 'Empresas',
64
+ codigo: 'empresas'
65
+ }]
66
+ }]
67
+ };
68
+
69
+ var treeviewRenderMock = function treeviewRenderMock(props) {
70
+ return /*#__PURE__*/_react2["default"].createElement(_["default"], _extends({
71
+ data: dataMock,
72
+ valuePropName: "id",
73
+ labelPropName: "titulo",
74
+ parentPropName: "0"
75
+ }, props));
76
+ };
77
+
78
+ describe('Treeview', function () {
79
+ describe('Default', function () {
80
+ it('should render', function () {
81
+ var _render = (0, _react.render)(treeviewRenderMock()),
82
+ container = _render.container;
83
+
84
+ expect(container.firstChild).toBeTruthy();
85
+ });
86
+ it('should have start node visible', function () {
87
+ var _render2 = (0, _react.render)(treeviewRenderMock()),
88
+ queryByText = _render2.queryByText;
89
+
90
+ expect(queryByText(dataMock.titulo)).toBeTruthy();
91
+ });
92
+ it('should not have second node visible', function () {
93
+ var _render3 = (0, _react.render)(treeviewRenderMock()),
94
+ queryByText = _render3.queryByText;
95
+
96
+ expect(queryByText(dataMock.itens[0].titulo)).not.toBeTruthy();
97
+ });
98
+ it('should open on click', /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee() {
99
+ var _render4, queryByText, getByRole;
100
+
101
+ return regeneratorRuntime.wrap(function _callee$(_context) {
102
+ while (1) {
103
+ switch (_context.prev = _context.next) {
104
+ case 0:
105
+ _render4 = (0, _react.render)(treeviewRenderMock()), queryByText = _render4.queryByText, getByRole = _render4.getByRole;
106
+
107
+ _react.fireEvent.click(getByRole('button'));
108
+
109
+ _context.next = 4;
110
+ return (0, _react.waitFor)(function () {
111
+ return queryByText(dataMock.itens[0].titulo);
112
+ });
113
+
114
+ case 4:
115
+ expect(queryByText(dataMock.itens[0].titulo)).toBeTruthy();
116
+ expect(queryByText(dataMock.itens[1].titulo)).toBeTruthy();
117
+
118
+ case 6:
119
+ case "end":
120
+ return _context.stop();
121
+ }
122
+ }
123
+ }, _callee);
124
+ })));
125
+ it('should open all layers', /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee2() {
126
+ var _render5, queryByText, getByRole, queryAllByRole;
127
+
128
+ return regeneratorRuntime.wrap(function _callee2$(_context2) {
129
+ while (1) {
130
+ switch (_context2.prev = _context2.next) {
131
+ case 0:
132
+ _render5 = (0, _react.render)(treeviewRenderMock()), queryByText = _render5.queryByText, getByRole = _render5.getByRole, queryAllByRole = _render5.queryAllByRole;
133
+
134
+ _react.fireEvent.click(getByRole('button'));
135
+
136
+ _context2.next = 4;
137
+ return (0, _react.waitFor)(function () {
138
+ return queryByText(dataMock.itens[0].titulo);
139
+ });
140
+
141
+ case 4:
142
+ _react.fireEvent.click(queryAllByRole('button')[1]);
143
+
144
+ _context2.next = 7;
145
+ return (0, _react.waitFor)(function () {
146
+ return queryByText(dataMock.itens[0].itens[0].titulo);
147
+ });
148
+
149
+ case 7:
150
+ _react.fireEvent.click(queryAllByRole('button')[2]);
151
+
152
+ _context2.next = 10;
153
+ return (0, _react.waitFor)(function () {
154
+ return queryByText(dataMock.itens[0].itens[0].itens[0].titulo);
155
+ });
156
+
157
+ case 10:
158
+ _react.fireEvent.click(queryAllByRole('button')[3]);
159
+
160
+ _context2.next = 13;
161
+ return (0, _react.waitFor)(function () {
162
+ return queryByText(dataMock.itens[0].itens[0].itens[0].itens[0].titulo);
163
+ });
164
+
165
+ case 13:
166
+ _react.fireEvent.click(queryAllByRole('button')[4]);
167
+
168
+ _context2.next = 16;
169
+ return (0, _react.waitFor)(function () {
170
+ return queryByText(dataMock.itens[1].itens[0].titulo);
171
+ });
172
+
173
+ case 16:
174
+ expect(queryByText(dataMock.itens[0].titulo)).toBeTruthy();
175
+ expect(queryByText(dataMock.itens[0].itens[0].titulo)).toBeTruthy();
176
+ expect(queryByText(dataMock.itens[0].itens[0].itens[0].titulo)).toBeTruthy();
177
+ expect(queryByText(dataMock.itens[0].itens[0].itens[0].itens[0].titulo)).toBeTruthy();
178
+ expect(queryByText(dataMock.itens[1].titulo)).toBeTruthy();
179
+ expect(queryByText(dataMock.itens[1].itens[0].titulo)).toBeTruthy();
180
+
181
+ case 22:
182
+ case "end":
183
+ return _context2.stop();
184
+ }
185
+ }
186
+ }, _callee2);
187
+ })));
188
+ it('should render checkbox', function () {
189
+ var _render6 = (0, _react.render)(treeviewRenderMock({
190
+ showCheckBox: true
191
+ })),
192
+ container = _render6.container;
193
+
194
+ expect(container.querySelector('.checkbox-component')).toBeTruthy();
195
+ });
196
+ it('should call onSelectedIdsChange callback', function () {
197
+ var mockCallback = jest.fn(function (x) {
198
+ return x;
199
+ });
200
+
201
+ var _render7 = (0, _react.render)(treeviewRenderMock({
202
+ showCheckBox: true,
203
+ onSelectedIdsChange: mockCallback
204
+ })),
205
+ container = _render7.container;
206
+
207
+ _react.fireEvent.click(container.querySelector('.checkbox-component'));
208
+
209
+ expect(mockCallback.mock.calls.length).toBe(1);
210
+ expect(mockCallback.mock.calls[0][0]).toStrictEqual([1]);
211
+ });
212
+ it('should control checkbox by selectedIds', function () {
213
+ var _render8 = (0, _react.render)(treeviewRenderMock({
214
+ showCheckBox: true,
215
+ selectedIds: [1]
216
+ })),
217
+ container = _render8.container;
218
+
219
+ expect(container.querySelector('input.checkbox-component')).toBeChecked();
220
+ });
221
+ it('should start checkbox unchecked', function () {
222
+ var _render9 = (0, _react.render)(treeviewRenderMock({
223
+ showCheckBox: true
224
+ })),
225
+ container = _render9.container;
226
+
227
+ expect(container.querySelector('input.checkbox-component')).not.toBeChecked();
228
+ });
229
+ it('should start nodes open', function () {
230
+ var _render10 = (0, _react.render)(treeviewRenderMock({
231
+ startNodesOpened: true
232
+ })),
233
+ queryByText = _render10.queryByText;
234
+
235
+ expect(queryByText(dataMock.itens[0].titulo)).toBeTruthy();
236
+ expect(queryByText(dataMock.itens[0].itens[0].titulo)).toBeTruthy();
237
+ expect(queryByText(dataMock.itens[0].itens[0].itens[0].titulo)).toBeTruthy();
238
+ expect(queryByText(dataMock.itens[0].itens[0].itens[0].itens[0].titulo)).toBeTruthy();
239
+ expect(queryByText(dataMock.itens[1].titulo)).toBeTruthy();
240
+ expect(queryByText(dataMock.itens[1].itens[0].titulo)).toBeTruthy();
241
+ });
242
+ it('should apply customClass', function () {
243
+ var _render11 = (0, _react.render)(treeviewRenderMock({
244
+ customClass: 'customClass'
245
+ })),
246
+ container = _render11.container;
247
+
248
+ expect(container.firstChild).toHaveClass('customClass');
249
+ });
250
+ it('should apply style', function () {
251
+ var _render12 = (0, _react.render)(treeviewRenderMock({
252
+ styleForContainer: {
253
+ backgroundColor: '#000'
254
+ }
255
+ })),
256
+ container = _render12.container;
257
+
258
+ expect(container.querySelector('ul')).toHaveStyle('background-color: #000');
259
+ });
260
+ });
261
+ });
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "linear-react-components-ui",
3
- "version": "0.4.75-beta.8",
3
+ "version": "0.4.76-beta.0",
4
4
  "description": "Linear Sistemas ReactJs Components",
5
5
  "main": "lib/index.js",
6
6
  "scripts": {
@@ -11,15 +11,19 @@
11
11
  "check:js": "./node_modules/.bin/eslint ./src/* --ext .js, --ext .jsx",
12
12
  "deploy:heroku": "npm run demo:prod && cd demo && git commit -am 'Deploy' && git push heroku master",
13
13
  "publish:npm": "npm run lib && npm publish",
14
- "prepare": "husky install"
14
+ "publish:npm:beta": "npm run lib && npm publish --tag beta",
15
+ "prepare": "husky install",
16
+ "test": "jest --env=jsdom",
17
+ "test:watch": "jest --watchAll --env=jsdom",
18
+ "test:coverage": "jest --coverage --colors --env=jsdom"
15
19
  },
16
20
  "keywords": [],
17
21
  "license": "MIT",
18
22
  "peerDependencies": {
19
- "react": "^16.6.0",
20
- "react-dom": "^16.6.0",
21
- "react-router-dom": "^4.2.2",
22
- "react-transition-group": "^2.2.1"
23
+ "react": "^17.0.2",
24
+ "react-dom": "^17.0.2",
25
+ "react-router-dom": "^5.2.0",
26
+ "react-transition-group": "^4.4.2"
23
27
  },
24
28
  "devDependencies": {
25
29
  "@babel/cli": "^7.5.5",
@@ -28,8 +32,12 @@
28
32
  "@babel/plugin-proposal-object-rest-spread": "7.0.0-beta.36",
29
33
  "@babel/preset-env": "^7.0.0-beta.36",
30
34
  "@babel/preset-react": "^7.0.0-beta.36",
35
+ "@testing-library/jest-dom": "^5.14.1",
36
+ "@testing-library/react": "^12.0.0",
31
37
  "babel-eslint": "^7.2.3",
38
+ "babel-jest": "^27.0.5",
32
39
  "babel-loader": "^8.0.0-beta.0",
40
+ "babel-polyfill": "^6.26.0",
33
41
  "css-loader": "^0.28.8",
34
42
  "eslint": "4.18.0",
35
43
  "eslint-config-airbnb": "16.1.0",
@@ -40,6 +48,8 @@
40
48
  "file-loader": "^1.1.6",
41
49
  "html-webpack-plugin": "^2.30.1",
42
50
  "husky": "^6.0.0",
51
+ "identity-obj-proxy": "^3.0.0",
52
+ "jest": "^27.0.5",
43
53
  "react": "^16.12.0",
44
54
  "react-dom": "^16.12.0",
45
55
  "react-router-dom": "^5.1.2",
@@ -56,11 +66,11 @@
56
66
  },
57
67
  "dependencies": {
58
68
  "attach-dom-events": "^1.0.0",
59
- "history": "^4.10.1",
69
+ "history": "^5.0.0",
60
70
  "imask": "^3.1.1",
61
71
  "init": "^0.1.2",
62
- "lodash": "^4.17.15",
63
- "moment": "^2.24.0",
72
+ "lodash": "^4.17.21",
73
+ "moment": "^2.29.1",
64
74
  "node-sass": "^4.13.0",
65
75
  "prop-types": "^15.7.2",
66
76
  "react-syntax-highlighter": "^6.1.1",
package/.DS_Store DELETED
Binary file