linear-react-components-ui 0.4.76-beta.3 → 0.4.76-beta.32

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 (77) hide show
  1. package/.husky/pre-commit +2 -2
  2. package/README.md +19 -7
  3. package/lib/assets/styles/button.scss +17 -10
  4. package/lib/assets/styles/checkbox.scss +92 -70
  5. package/lib/assets/styles/commons.scss +26 -0
  6. package/lib/assets/styles/drawers.scss +22 -6
  7. package/lib/assets/styles/dropdown.scss +3 -0
  8. package/lib/assets/styles/effects.scss +20 -0
  9. package/lib/assets/styles/gridlayout.scss +2 -1
  10. package/lib/assets/styles/input.scss +21 -0
  11. package/lib/assets/styles/label.scss +9 -1
  12. package/lib/assets/styles/panel.scss +4 -1
  13. package/lib/assets/styles/radio.scss +19 -0
  14. package/lib/assets/styles/select.scss +3 -3
  15. package/lib/assets/styles/skeleton.scss +48 -0
  16. package/lib/assets/styles/table.scss +22 -5
  17. package/lib/assets/styles/tabs.scss +51 -44
  18. package/lib/assets/styles/treeview.scss +4 -0
  19. package/lib/assets/styles/uitour.scss +112 -0
  20. package/lib/buttons/DefaultButton.js +7 -4
  21. package/lib/buttons/split_button/index.js +8 -4
  22. package/lib/checkbox/Label.js +1 -1
  23. package/lib/checkbox/checkbox.spec.js +16 -16
  24. package/lib/checkbox/index.js +16 -9
  25. package/lib/dialog/form/index.js +10 -3
  26. package/lib/drawer/Drawer.js +9 -5
  27. package/lib/drawer/Header.js +15 -5
  28. package/lib/dropdown/Popup.js +3 -2
  29. package/lib/form/form.spec.js +8 -0
  30. package/lib/form/helpers.js +12 -1
  31. package/lib/form/index.js +61 -47
  32. package/lib/form/withFieldHOC.js +3 -1
  33. package/lib/icons/helper.js +8 -0
  34. package/lib/inputs/base/InputTextBase.js +40 -6
  35. package/lib/inputs/base/helpers.js +15 -3
  36. package/lib/inputs/date/Dropdown.js +3 -3
  37. package/lib/inputs/date/date.spec.js +46 -36
  38. package/lib/inputs/date/helpers.js +36 -0
  39. package/lib/inputs/date/index.js +12 -10
  40. package/lib/inputs/mask/Phone.js +10 -1
  41. package/lib/inputs/mask/imaskHOC.js +2 -1
  42. package/lib/inputs/mask/input_mask.spec.js +21 -4
  43. package/lib/inputs/select/Dropdown.js +51 -61
  44. package/lib/inputs/select/helper.js +65 -2
  45. package/lib/inputs/select/multiple/index.js +6 -3
  46. package/lib/inputs/select/simple/index.js +7 -4
  47. package/lib/internals/withTooltip.js +14 -11
  48. package/lib/labels/DefaultLabel.js +7 -4
  49. package/lib/menus/sidenav/NavMenuItem.js +2 -2
  50. package/lib/radio/index.js +9 -6
  51. package/lib/skeleton/SkeletonContainer.js +42 -0
  52. package/lib/skeleton/index.js +84 -0
  53. package/lib/table/Body.js +53 -11
  54. package/lib/table/Header.js +12 -1
  55. package/lib/table/HeaderColumn.js +26 -3
  56. package/lib/table/Row.js +18 -7
  57. package/lib/table/RowColumn.js +23 -3
  58. package/lib/table/helpers.js +11 -1
  59. package/lib/table/index.js +41 -8
  60. package/lib/tabs/Menu.js +1 -11
  61. package/lib/tabs/MenuItems.js +9 -3
  62. package/lib/tabs/index.js +78 -53
  63. package/lib/tabs/tabs.spec.js +8 -5
  64. package/lib/toolbar/ButtonBar.js +30 -24
  65. package/lib/toolbar/LabelBar.js +22 -27
  66. package/lib/toolbar/helpers.js +12 -0
  67. package/lib/toolbar/index.js +23 -12
  68. package/lib/tooltip/index.js +8 -7
  69. package/lib/treeview/Node.js +252 -203
  70. package/lib/treeview/index.js +50 -22
  71. package/lib/treeview/treeview.spec.js +18 -0
  72. package/lib/uitour/helpers.js +15 -0
  73. package/lib/uitour/index.js +271 -0
  74. package/lib/uitour/uitour.spec.js +176 -0
  75. package/package.json +1 -1
  76. package/.DS_Store +0 -0
  77. package/lib/inputs/date/helper.js +0 -16
@@ -100,20 +100,26 @@ var TreeView = /*#__PURE__*/function (_Component) {
100
100
  enumerable: true,
101
101
  writable: true,
102
102
  value: function value(selectedIds) {
103
- var requiredIds = [];
104
- var newSelectedIds = [];
105
- selectedIds.forEach(function (id) {
106
- var _this$checkAllAncestr = _this.checkAllAncestry(id, [], true, false),
107
- requiredParentsIds = _this$checkAllAncestr.requiredParentsIds,
108
- updatedIdsWithAncestryIds = _this$checkAllAncestr.updatedIdsWithAncestryIds;
109
-
110
- newSelectedIds = [].concat(_toConsumableArray(newSelectedIds), _toConsumableArray(updatedIdsWithAncestryIds));
111
- requiredIds = [].concat(_toConsumableArray(requiredIds), _toConsumableArray(requiredParentsIds));
112
- });
113
-
114
103
  _this.setState({
115
- requiredParentsIds: _lodash["default"].uniq(requiredIds),
116
- selectedIds: _lodash["default"].uniq(newSelectedIds)
104
+ requiredParentsIds: []
105
+ }, function () {
106
+ var requiredIds = [];
107
+ var newSelectedIds = [];
108
+ var selectedIdsUpdatedOnMount = _this.state.selectedIdsUpdatedOnMount;
109
+ selectedIds.forEach(function (id) {
110
+ var _this$checkAllAncestr = _this.checkAllAncestry(id, [], true, false),
111
+ requiredParentsIds = _this$checkAllAncestr.requiredParentsIds,
112
+ updatedIdsWithAncestryIds = _this$checkAllAncestr.updatedIdsWithAncestryIds;
113
+
114
+ newSelectedIds = [].concat(_toConsumableArray(newSelectedIds), _toConsumableArray(updatedIdsWithAncestryIds));
115
+ requiredIds = [].concat(_toConsumableArray(requiredIds), _toConsumableArray(requiredParentsIds));
116
+ });
117
+
118
+ _this.setState({
119
+ requiredParentsIds: _lodash["default"].uniq(requiredIds),
120
+ selectedIds: _lodash["default"].uniq(newSelectedIds),
121
+ selectedIdsUpdatedOnMount: selectedIdsUpdatedOnMount || true
122
+ });
117
123
  });
118
124
  }
119
125
  });
@@ -462,7 +468,10 @@ var TreeView = /*#__PURE__*/function (_Component) {
462
468
  nodeElementsValidations = _this$props3.nodeElementsValidations,
463
469
  nodeToolbarElements = _this$props3.nodeToolbarElements,
464
470
  nodeMenuButtonSize = _this$props3.nodeMenuButtonSize,
465
- alwaysShowArrow = _this$props3.alwaysShowArrow;
471
+ alwaysShowArrow = _this$props3.alwaysShowArrow,
472
+ startNodesOpened = _this$props3.startNodesOpened,
473
+ idsInLoading = _this$props3.idsInLoading,
474
+ selectedNodeId = _this$props3.selectedNodeId;
466
475
  var childrenIds = [];
467
476
 
468
477
  if (node.itens && node.itens.length > 0) {
@@ -480,6 +489,8 @@ var TreeView = /*#__PURE__*/function (_Component) {
480
489
  return /*#__PURE__*/_react["default"].createElement(_Node["default"], {
481
490
  key: "node-".concat(node.id),
482
491
  node: node,
492
+ idsInLoading: idsInLoading,
493
+ startNodesOpened: startNodesOpened,
483
494
  alwaysShowArrow: alwaysShowArrow,
484
495
  childrenIds: childrenIds,
485
496
  isParent: node.itens && node.itens.length > 0,
@@ -489,6 +500,7 @@ var TreeView = /*#__PURE__*/function (_Component) {
489
500
  nodeElementsValidations: nodeElementsValidations,
490
501
  nodeMenuButtonSize: nodeMenuButtonSize,
491
502
  onNodeClick: onNodeClick,
503
+ selectedNodeId: selectedNodeId,
492
504
  handlerOnNodeOpen: _this.handleOnNodeOpen
493
505
  }, childrenIds.length > 0 && node.itens.map(function (nodeitem) {
494
506
  return _this.buildTree(nodeitem, node.id, ids);
@@ -502,7 +514,8 @@ var TreeView = /*#__PURE__*/function (_Component) {
502
514
  selectedIds: _this.props.selectedIds,
503
515
  isHandlingSelectedIds: false,
504
516
  requiredParentsIds: [],
505
- alreadyOpenedIds: []
517
+ alreadyOpenedIds: [],
518
+ selectedIdsUpdatedOnMount: false
506
519
  };
507
520
  return _this;
508
521
  }
@@ -517,12 +530,15 @@ var TreeView = /*#__PURE__*/function (_Component) {
517
530
  value: function componentDidUpdate(prevProps, prevState) {
518
531
  var _this$state3 = this.state,
519
532
  selectedIds = _this$state3.selectedIds,
520
- propSelectedIds = _this$state3.propSelectedIds;
533
+ propSelectedIds = _this$state3.propSelectedIds,
534
+ selectedIdsUpdatedOnMount = _this$state3.selectedIdsUpdatedOnMount;
521
535
  var allowCheckAllAncestry = this.props.allowCheckAllAncestry;
522
536
 
523
537
  var isSameSelectedIds = _lodash["default"].isEqual(propSelectedIds.sort(), prevState.propSelectedIds.sort());
524
538
 
525
- if (allowCheckAllAncestry && !isSameSelectedIds) this.handleNewSelectedIds(selectedIds);
539
+ if (allowCheckAllAncestry && (!selectedIdsUpdatedOnMount || !isSameSelectedIds)) {
540
+ this.handleNewSelectedIds(selectedIds);
541
+ }
526
542
  }
527
543
  }, {
528
544
  key: "render",
@@ -545,12 +561,18 @@ var TreeView = /*#__PURE__*/function (_Component) {
545
561
  }], [{
546
562
  key: "getDerivedStateFromProps",
547
563
  value: function getDerivedStateFromProps(props, state) {
548
- var selectedIds = props.selectedIds;
564
+ var data = props.data,
565
+ selectedIds = props.selectedIds,
566
+ enableDynamicData = props.enableDynamicData;
549
567
  var propSelectedIds = state.propSelectedIds;
550
568
 
551
569
  var isSameSelectedIds = _lodash["default"].isEqual(propSelectedIds.sort(), selectedIds.sort());
552
570
 
553
- if (!isSameSelectedIds) {
571
+ if (enableDynamicData && data !== state.data) {
572
+ return {
573
+ data: data
574
+ };
575
+ } else if (!isSameSelectedIds) {
554
576
  return {
555
577
  selectedIds: selectedIds,
556
578
  propSelectedIds: selectedIds
@@ -574,7 +596,7 @@ TreeView.propTypes = {
574
596
  startNodesOpened: _propTypes["default"].bool,
575
597
  alwaysShowArrow: _propTypes["default"].bool,
576
598
  selectedIds: _propTypes["default"].arrayOf(_propTypes["default"].number),
577
- requiredIds: _propTypes["default"].arrayOf(_propTypes["default"].number),
599
+ requiredIds: _propTypes["default"].arrayOf(_propTypes["default"].oneOfType([_propTypes["default"].string, _propTypes["default"].number])),
578
600
  showCheckBox: _propTypes["default"].bool,
579
601
  onSelectedIdsChange: _propTypes["default"].func,
580
602
  children: _propTypes["default"].instanceOf(Object),
@@ -587,7 +609,10 @@ TreeView.propTypes = {
587
609
  nodeMenuButtonSize: _propTypes["default"].oneOf(['mini', 'small', 'medium', 'large', 'default']),
588
610
  onNodeClick: _propTypes["default"].func,
589
611
  onNodeOpen: _propTypes["default"].func,
590
- nodeElementsValidations: _propTypes["default"].object
612
+ nodeElementsValidations: _propTypes["default"].object,
613
+ enableDynamicData: _propTypes["default"].bool,
614
+ idsInLoading: _propTypes["default"].arrayOf(_propTypes["default"].number),
615
+ selectedNodeId: _propTypes["default"].number
591
616
  };
592
617
  TreeView.defaultProps = {
593
618
  customClass: '',
@@ -608,7 +633,10 @@ TreeView.defaultProps = {
608
633
  nodeMenuButtonSize: 'small',
609
634
  onNodeClick: undefined,
610
635
  onNodeOpen: undefined,
611
- nodeElementsValidations: undefined
636
+ nodeElementsValidations: undefined,
637
+ enableDynamicData: false,
638
+ idsInLoading: [],
639
+ selectedNodeId: undefined
612
640
  };
613
641
  var _default = TreeView;
614
642
  exports["default"] = _default;
@@ -257,5 +257,23 @@ describe('Treeview', function () {
257
257
 
258
258
  expect(container.querySelector('ul')).toHaveStyle('background-color: #000');
259
259
  });
260
+ it('should apply idsInLoading', function () {
261
+ var _render13 = (0, _react.render)(treeviewRenderMock({
262
+ idsInLoading: [1]
263
+ })),
264
+ container = _render13.container;
265
+
266
+ var li = container.querySelector('li').firstChild;
267
+ expect(li.firstChild).toHaveClass('spinnerloading');
268
+ });
269
+ it('should apply selectedNodeId', function () {
270
+ var _render14 = (0, _react.render)(treeviewRenderMock({
271
+ selectedNodeId: 1
272
+ })),
273
+ container = _render14.container;
274
+
275
+ var filhosLi = container.querySelector('li').children;
276
+ expect(filhosLi[1]).toHaveStyle('background-color: rgb(209, 209, 209)');
277
+ });
260
278
  });
261
279
  });
@@ -0,0 +1,15 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.STEP_POSITIONS = exports.ARROW_HEIGHT = exports.ARROW_WIDTH = void 0;
7
+ var ARROW_WIDTH = 26;
8
+ exports.ARROW_WIDTH = ARROW_WIDTH;
9
+ var ARROW_HEIGHT = 20;
10
+ exports.ARROW_HEIGHT = ARROW_HEIGHT;
11
+ var STEP_POSITIONS = {
12
+ right: 'right',
13
+ left: 'left'
14
+ };
15
+ exports.STEP_POSITIONS = STEP_POSITIONS;
@@ -0,0 +1,271 @@
1
+ "use strict";
2
+
3
+ function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
4
+
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports["default"] = void 0;
9
+
10
+ var _react = _interopRequireWildcard(require("react"));
11
+
12
+ var _propTypes = _interopRequireDefault(require("prop-types"));
13
+
14
+ var _buttons = _interopRequireWildcard(require("../buttons"));
15
+
16
+ require("../assets/styles/uitour.scss");
17
+
18
+ var _helpers = require("./helpers");
19
+
20
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
21
+
22
+ 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); }
23
+
24
+ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
25
+
26
+ 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); }
27
+
28
+ function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
29
+
30
+ function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
31
+
32
+ function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
33
+
34
+ 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; }
35
+
36
+ function _iterableToArrayLimit(arr, i) { var _i = arr && (typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"]); if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; }
37
+
38
+ function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
39
+
40
+ var UiTour = function UiTour(props) {
41
+ var data = props.data,
42
+ nextButtonLabel = props.nextButtonLabel,
43
+ backButtonLabel = props.backButtonLabel,
44
+ finishButtonLabel = props.finishButtonLabel,
45
+ showCloseButton = props.showCloseButton,
46
+ showBackButton = props.showBackButton,
47
+ visible = props.visible,
48
+ onFinish = props.onFinish;
49
+
50
+ var _useState = (0, _react.useState)(undefined),
51
+ _useState2 = _slicedToArray(_useState, 2),
52
+ currentStep = _useState2[0],
53
+ setCurrentStep = _useState2[1];
54
+
55
+ var _useState3 = (0, _react.useState)(false),
56
+ _useState4 = _slicedToArray(_useState3, 2),
57
+ hasNextStep = _useState4[0],
58
+ setHasNextStep = _useState4[1];
59
+
60
+ var _useState5 = (0, _react.useState)(false),
61
+ _useState6 = _slicedToArray(_useState5, 2),
62
+ hasBackStep = _useState6[0],
63
+ setHasBackStep = _useState6[1];
64
+
65
+ var _useState7 = (0, _react.useState)(false),
66
+ _useState8 = _slicedToArray(_useState7, 2),
67
+ isLastStep = _useState8[0],
68
+ setIsLastStep = _useState8[1];
69
+
70
+ var _useState9 = (0, _react.useState)(null),
71
+ _useState10 = _slicedToArray(_useState9, 2),
72
+ stepDimensions = _useState10[0],
73
+ setStepDimensions = _useState10[1];
74
+
75
+ var _useState11 = (0, _react.useState)(visible),
76
+ _useState12 = _slicedToArray(_useState11, 2),
77
+ showTour = _useState12[0],
78
+ setShowTour = _useState12[1];
79
+
80
+ var _useState13 = (0, _react.useState)(_helpers.STEP_POSITIONS.left),
81
+ _useState14 = _slicedToArray(_useState13, 2),
82
+ stepPosition = _useState14[0],
83
+ setStepPosition = _useState14[1];
84
+
85
+ var stepRef = (0, _react.useRef)();
86
+ var descriptionRef = (0, _react.useRef)();
87
+
88
+ var handleNextStep = function handleNextStep() {
89
+ if (hasNextStep) {
90
+ var currentStepIndex = data.findIndex(function (item) {
91
+ return item.id === currentStep.id;
92
+ });
93
+ var nextStep = data[currentStepIndex + 1];
94
+ var nextStepIndex = data.findIndex(function (item) {
95
+ return item.id === nextStep.id;
96
+ });
97
+ var target = document.getElementById(nextStep.targetId);
98
+
99
+ if (target) {
100
+ setCurrentStep(_extends({}, nextStep, {
101
+ number: nextStepIndex + 1
102
+ }));
103
+ }
104
+ }
105
+ };
106
+
107
+ var handleBackStep = function handleBackStep() {
108
+ if (hasBackStep) {
109
+ var currentStepIndex = data.findIndex(function (item) {
110
+ return item.id === currentStep.id;
111
+ });
112
+ var backStep = data[currentStepIndex - 1];
113
+ var backStepIndex = data.findIndex(function (item) {
114
+ return item.id === backStep.id;
115
+ });
116
+ var target = document.getElementById(backStep.targetId);
117
+
118
+ if (target) {
119
+ setCurrentStep(_extends({}, backStep, {
120
+ number: backStepIndex + 1
121
+ }));
122
+ }
123
+ }
124
+ };
125
+
126
+ var onCloseTour = function onCloseTour() {
127
+ setShowTour(false);
128
+ if (onFinish) onFinish(true);
129
+ };
130
+
131
+ var getStepPosition = function getStepPosition(target) {
132
+ if (stepRef.current) {
133
+ var stepRect = stepRef.current.getBoundingClientRect();
134
+ var windowWidth = window.innerWidth;
135
+
136
+ if (stepRect.right >= windowWidth || currentStep.position === _helpers.STEP_POSITIONS.right) {
137
+ setStepPosition(_helpers.STEP_POSITIONS.right);
138
+ setStepDimensions({
139
+ top: target.top - _helpers.ARROW_HEIGHT,
140
+ left: target.left - stepRect.width - _helpers.ARROW_WIDTH
141
+ });
142
+ } else {
143
+ setStepPosition(_helpers.STEP_POSITIONS.left);
144
+ setStepDimensions({
145
+ top: target.top - _helpers.ARROW_HEIGHT,
146
+ left: target.left + target.width + _helpers.ARROW_WIDTH
147
+ });
148
+ }
149
+ }
150
+ };
151
+
152
+ (0, _react.useEffect)(function () {
153
+ if (currentStep) {
154
+ var target = document.getElementById(currentStep.targetId);
155
+
156
+ if (target) {
157
+ var targetRect = target.getBoundingClientRect();
158
+ var currentStepIndex = data.findIndex(function (item) {
159
+ return item.id === currentStep.id;
160
+ });
161
+ var lastDataIndex = data.length - 1;
162
+ var initialDataIndex = 0;
163
+
164
+ switch (currentStepIndex) {
165
+ case lastDataIndex:
166
+ setHasNextStep(false);
167
+ setHasBackStep(true);
168
+ setIsLastStep(true);
169
+ break;
170
+
171
+ case initialDataIndex:
172
+ setHasNextStep(true);
173
+ setIsLastStep(false);
174
+ setHasBackStep(false);
175
+ break;
176
+
177
+ default:
178
+ setHasNextStep(true);
179
+ setHasBackStep(true);
180
+ setIsLastStep(false);
181
+ }
182
+
183
+ getStepPosition(targetRect);
184
+ }
185
+
186
+ if (descriptionRef.current) {
187
+ descriptionRef.current.innerHTML = currentStep.description;
188
+ }
189
+ }
190
+ }, [currentStep, stepRef.current]);
191
+ (0, _react.useEffect)(function () {
192
+ if (data && visible) {
193
+ var initialNumber = 1;
194
+
195
+ var initialStep = _extends({}, data[0], {
196
+ number: initialNumber
197
+ });
198
+
199
+ setShowTour(visible);
200
+ setCurrentStep(initialStep);
201
+ }
202
+ }, [visible, data]);
203
+ if (!showTour) return null;
204
+ return /*#__PURE__*/_react["default"].createElement("div", {
205
+ className: "uitour-component"
206
+ }, currentStep && /*#__PURE__*/_react["default"].createElement("div", {
207
+ ref: stepRef,
208
+ className: "step -".concat(stepPosition),
209
+ key: currentStep.id,
210
+ style: _extends({}, stepDimensions)
211
+ }, showCloseButton && /*#__PURE__*/_react["default"].createElement("div", {
212
+ className: "closebutton"
213
+ }, /*#__PURE__*/_react["default"].createElement(_buttons["default"], {
214
+ iconName: "cancel2",
215
+ iconAlign: "center",
216
+ size: "large",
217
+ transparent: true,
218
+ boxShadow: false,
219
+ style: {
220
+ padding: 0
221
+ },
222
+ onClick: onCloseTour
223
+ })), /*#__PURE__*/_react["default"].createElement("div", {
224
+ className: "content"
225
+ }, /*#__PURE__*/_react["default"].createElement("span", {
226
+ className: "number"
227
+ }, currentStep.number), /*#__PURE__*/_react["default"].createElement("div", {
228
+ className: "about"
229
+ }, /*#__PURE__*/_react["default"].createElement("h3", null, currentStep.title), /*#__PURE__*/_react["default"].createElement("p", {
230
+ className: "description",
231
+ ref: descriptionRef
232
+ }))), /*#__PURE__*/_react["default"].createElement("div", {
233
+ className: "footer"
234
+ }, /*#__PURE__*/_react["default"].createElement(_buttons.PrimaryButton, {
235
+ label: backButtonLabel,
236
+ onClick: handleBackStep,
237
+ disabled: !hasBackStep,
238
+ visible: showBackButton,
239
+ customClass: "back-button"
240
+ }), /*#__PURE__*/_react["default"].createElement(_buttons.PrimaryButton, {
241
+ label: nextButtonLabel,
242
+ onClick: handleNextStep,
243
+ disabled: !hasNextStep,
244
+ visible: !isLastStep,
245
+ customClass: "next-button"
246
+ }), /*#__PURE__*/_react["default"].createElement(_buttons.PrimaryButton, {
247
+ label: finishButtonLabel,
248
+ visible: isLastStep,
249
+ onClick: onCloseTour,
250
+ customClass: "finish-button"
251
+ }))));
252
+ };
253
+
254
+ UiTour.propTypes = {
255
+ data: _propTypes["default"].arrayOf(_propTypes["default"].object).isRequired,
256
+ nextButtonLabel: _propTypes["default"].string.isRequired,
257
+ backButtonLabel: _propTypes["default"].string.isRequired,
258
+ finishButtonLabel: _propTypes["default"].string.isRequired,
259
+ showCloseButton: _propTypes["default"].bool,
260
+ showBackButton: _propTypes["default"].bool,
261
+ visible: _propTypes["default"].bool,
262
+ onFinish: _propTypes["default"].func
263
+ };
264
+ UiTour.defaultProps = {
265
+ showCloseButton: true,
266
+ showBackButton: true,
267
+ visible: true,
268
+ onFinish: undefined
269
+ };
270
+ var _default = UiTour;
271
+ exports["default"] = _default;
@@ -0,0 +1,176 @@
1
+ "use strict";
2
+
3
+ var _react = _interopRequireDefault(require("react"));
4
+
5
+ var _propTypes = _interopRequireDefault(require("prop-types"));
6
+
7
+ require("@testing-library/jest-dom");
8
+
9
+ require("babel-polyfill");
10
+
11
+ var _react2 = require("@testing-library/react");
12
+
13
+ var _ = _interopRequireDefault(require("."));
14
+
15
+ var _helpers = require("./helpers");
16
+
17
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
18
+
19
+ var data = [{
20
+ id: '1',
21
+ targetId: 'uitour-teste',
22
+ title: 'Título',
23
+ description: 'Lorem ipsum dolor sit <strong>amet</strong> consectetur adipisicing elit.'
24
+ }, {
25
+ id: '2',
26
+ targetId: 'uitour-button',
27
+ title: 'Botão',
28
+ description: 'Lorem ipsum, dolor sit adipisicing elit. Repellendus, fuga.'
29
+ }];
30
+ var backButtonLabel = 'Voltar';
31
+ var nextButtonLabel = 'Avançar';
32
+ var finishButtonLabel = 'Finalizar';
33
+
34
+ var UiTourMock = function UiTourMock(_ref) {
35
+ var onFinish = _ref.onFinish,
36
+ visible = _ref.visible,
37
+ showCloseButton = _ref.showCloseButton,
38
+ showBackButton = _ref.showBackButton;
39
+ return /*#__PURE__*/_react["default"].createElement("div", null, /*#__PURE__*/_react["default"].createElement("h1", {
40
+ style: {
41
+ width: 100
42
+ },
43
+ id: "uitour-teste"
44
+ }, "Teste UiTour"), /*#__PURE__*/_react["default"].createElement("button", {
45
+ id: "uitour-button"
46
+ }, "Teste button"), /*#__PURE__*/_react["default"].createElement(_["default"], {
47
+ data: data,
48
+ backButtonLabel: backButtonLabel,
49
+ nextButtonLabel: nextButtonLabel,
50
+ finishButtonLabel: finishButtonLabel,
51
+ onFinish: onFinish,
52
+ showCloseButton: showCloseButton,
53
+ showBackButton: showBackButton,
54
+ visible: visible
55
+ }));
56
+ };
57
+
58
+ UiTourMock.propTypes = {
59
+ onFinish: _propTypes["default"].func,
60
+ visible: _propTypes["default"].bool,
61
+ showCloseButton: _propTypes["default"].bool,
62
+ showBackButton: _propTypes["default"].bool
63
+ };
64
+ UiTourMock.defaultProps = {
65
+ onFinish: undefined,
66
+ visible: true,
67
+ showCloseButton: true,
68
+ showBackButton: true
69
+ };
70
+ describe('UiTour', function () {
71
+ it('should render correctly', function () {
72
+ var _render = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(UiTourMock, null)),
73
+ container = _render.container;
74
+
75
+ var uitourComponent = container.querySelector('.uitour-component');
76
+ expect(container.firstChild).toContainElement(uitourComponent);
77
+ });
78
+ it('should go to next step', function () {
79
+ var _render2 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(UiTourMock, null)),
80
+ container = _render2.container;
81
+
82
+ var nextButton = container.querySelector('.next-button');
83
+
84
+ _react2.fireEvent.click(nextButton);
85
+
86
+ expect(container.querySelector('.content .number')).toHaveTextContent('2');
87
+ });
88
+ it('should execute callback on finish and close', function () {
89
+ var mockFinish = jest.fn();
90
+
91
+ var _render3 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(UiTourMock, {
92
+ onFinish: mockFinish
93
+ })),
94
+ container = _render3.container;
95
+
96
+ var nextButton = container.querySelector('.next-button');
97
+
98
+ _react2.fireEvent.click(nextButton);
99
+
100
+ var finishButton = container.querySelector('.finish-button');
101
+
102
+ _react2.fireEvent.click(finishButton);
103
+
104
+ expect(mockFinish).toHaveBeenCalledTimes(1);
105
+ expect(container.querySelector('.uitour-component')).not.toBeInTheDocument();
106
+ });
107
+ it('should step render aside target position', function () {
108
+ var _render4 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(UiTourMock, null)),
109
+ container = _render4.container;
110
+
111
+ var targetRect = container.querySelector('#uitour-teste');
112
+ var targetDimensions = targetRect.getBoundingClientRect();
113
+ var stepDimensions = container.querySelector('.uitour-component .step');
114
+ expect(stepDimensions.style.left).toBe("".concat(targetDimensions.left + targetDimensions.width + _helpers.ARROW_WIDTH, "px"));
115
+ expect(stepDimensions.style.top).toBe("".concat(targetDimensions.top - _helpers.ARROW_HEIGHT, "px"));
116
+ });
117
+ it('should render with backButtonLabel', function () {
118
+ var _render5 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(UiTourMock, null)),
119
+ getByText = _render5.getByText;
120
+
121
+ expect(getByText(backButtonLabel)).toBeInTheDocument();
122
+ });
123
+ it('should render with nextButtonLabel', function () {
124
+ var _render6 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(UiTourMock, null)),
125
+ getByText = _render6.getByText;
126
+
127
+ expect(getByText(nextButtonLabel)).toBeInTheDocument();
128
+ });
129
+ it('should render with finishButtonLabel', function () {
130
+ var _render7 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(UiTourMock, null)),
131
+ container = _render7.container,
132
+ getByText = _render7.getByText;
133
+
134
+ var nextButton = container.querySelector('.next-button');
135
+
136
+ _react2.fireEvent.click(nextButton);
137
+
138
+ expect(getByText(finishButtonLabel)).toBeInTheDocument();
139
+ });
140
+ it('should render close button', function () {
141
+ var _render8 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(UiTourMock, null)),
142
+ container = _render8.container;
143
+
144
+ expect(container.querySelector('.close-button')).toBeInTheDocument();
145
+ });
146
+ it('should not render close button', function () {
147
+ var _render9 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(UiTourMock, {
148
+ showCloseButton: false
149
+ })),
150
+ container = _render9.container;
151
+
152
+ expect(container.querySelector('.close-button')).not.toBeInTheDocument();
153
+ });
154
+ it('should render back button', function () {
155
+ var _render10 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(UiTourMock, null)),
156
+ getByText = _render10.getByText;
157
+
158
+ expect(getByText(backButtonLabel)).toBeInTheDocument();
159
+ });
160
+ it('should not render back button', function () {
161
+ var _render11 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(UiTourMock, {
162
+ showBackButton: false
163
+ })),
164
+ container = _render11.container;
165
+
166
+ expect(container.querySelector('.back-button')).not.toBeInTheDocument();
167
+ });
168
+ it('should not visible', function () {
169
+ var _render12 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(UiTourMock, {
170
+ visible: false
171
+ })),
172
+ container = _render12.container;
173
+
174
+ expect(container.querySelector('.uitour-component')).not.toBeInTheDocument();
175
+ });
176
+ });
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "linear-react-components-ui",
3
- "version": "0.4.76-beta.3",
3
+ "version": "0.4.76-beta.32",
4
4
  "description": "Linear Sistemas ReactJs Components",
5
5
  "main": "lib/index.js",
6
6
  "scripts": {
package/.DS_Store DELETED
Binary file
@@ -1,16 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports["default"] = void 0;
7
-
8
- var getCalendarDropdownStyle = function getCalendarDropdownStyle(_ref) {
9
- var topPosition = _ref.topPosition,
10
- leftPosition = _ref.leftPosition,
11
- width = _ref.width;
12
- return "top: ".concat(topPosition, "px;\n left: ").concat(leftPosition, "px;\n width:").concat(width, "px");
13
- };
14
-
15
- var _default = getCalendarDropdownStyle;
16
- exports["default"] = _default;