linear-react-components-ui 0.4.76-beta.5 → 0.4.76-beta.9

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.
package/README.md CHANGED
@@ -53,8 +53,18 @@ Caso queira gerar uma build com versão beta e fazer a publicação no npm rode
53
53
 
54
54
  `npm run publish:npm --tag beta`
55
55
 
56
- no local onde esta denominado o campo versão, você deverá colocar a nova versão do pacote, um exemplo: 0.4.75 ou para o caso de uma
57
- versão beta siga o seguinte exemplo: 0.4.75-beta.1, ficando da seguinte maneira:
56
+ Caso queira gerar uma build com versão candidata e fazer a publicação no npm rode os comandos da seguinte forma:
57
+
58
+ `npm version <versão>`
59
+
60
+ `npm run publish:npm --tag rc`
61
+
62
+ no local onde esta denominado o campo versão, você deverá colocar a nova versão do pacote, alguns exemplos para o campo versão:
63
+ - release: 0.4.75
64
+ - beta: 0.4.75-beta.0
65
+ - candidata: 0.4.75-rc.0
66
+
67
+ ficando da seguinte maneira:
58
68
 
59
69
  `npm version 0.4.75`
60
70
 
@@ -129,6 +129,9 @@
129
129
  justify-content: center;
130
130
  flex: 1;
131
131
  width: 100%;
132
+ text-decoration: none;
133
+ color: #666666;
134
+ text-align: center;
132
135
  }
133
136
  &.iconcontainer {
134
137
  padding-bottom: 10px;
@@ -88,14 +88,14 @@
88
88
 
89
89
  .tabs-component {
90
90
  display: grid;
91
- grid-template-rows: auto 1fr;
92
91
  width: 100%;
93
92
  height: 100%;
94
93
  @extend %tab-component-menus;
95
94
  > .menucontainer {
96
95
  display: flex;
97
96
  flex-wrap: nowrap;
98
- width: 100%;
97
+ max-width: 100%;
98
+ overflow: hidden;
99
99
  @extend %tab-component-menus;
100
100
  > .dropdownbutton {
101
101
  border-bottom: 1px solid $component-border-color;
package/lib/form/index.js CHANGED
@@ -153,17 +153,17 @@ var Form = function Form(_ref) {
153
153
  name = _e$target.name,
154
154
  value = _e$target.value;
155
155
 
156
- var newData = _lodash["default"].set(data, name, value);
156
+ _lodash["default"].set(data, name, value);
157
157
 
158
- if (context) {
158
+ var newData = _extends({}, data);
159
+
160
+ if (context && context.onChangedData) {
159
161
  var onChangedData = context.onChangedData;
160
162
 
161
- if (onChangedData) {
162
- if (!_lodash["default"].isEqual(newData, originalData)) {
163
- onChangedData(true);
164
- } else {
165
- onChangedData(false);
166
- }
163
+ if (!_lodash["default"].isEqual(newData, originalData)) {
164
+ onChangedData(true);
165
+ } else {
166
+ onChangedData(false);
167
167
  }
168
168
  }
169
169
 
@@ -241,7 +241,7 @@ var Form = function Form(_ref) {
241
241
  handlerSubmit(onFormSubmit);
242
242
  if (handlerReset) handlerReset(onReset);
243
243
  if (handlerValidates) handlerValidates(checkIsValid);
244
- }, []);
244
+ }, [data]);
245
245
  (0, _react.useEffect)(function () {
246
246
  if (securityBeforeUnload) {
247
247
  if (context) context.setSecurityBeforeUnload(true);
@@ -275,9 +275,8 @@ var Form = function Form(_ref) {
275
275
  className: "form-component ".concat(customClass)
276
276
  }, children)), /*#__PURE__*/_react["default"].createElement(_dialog.DialogQuestion, {
277
277
  zIndex: "99999999",
278
- customClassName: "classTeste",
279
278
  title: securityTitle || 'Dados Alterados',
280
- text: securityText || 'Vocẽ possui dados alterados, confirma o fechamento?',
279
+ text: securityText || 'Você possui dados alterados, confirma o fechamento?',
281
280
  visible: !!context && context.showQuestion,
282
281
  onConfirmClick: context ? context.onConfirmClick : function () {},
283
282
  onUnconfirmClick: context ? context.onUnconfirmClick : function () {}
@@ -73,10 +73,11 @@ var withTooltip = function withTooltip(WrappedComponent) {
73
73
  tooltipDimensions = _useState8[0],
74
74
  setTooltipDimensions = _useState8[1];
75
75
 
76
- var targetElement = (0, _react.useRef)();
76
+ var targetElement = (0, _react.useRef)(null);
77
+ var tooltipElement = (0, _react.useRef)(null);
77
78
 
78
79
  var onMouseOver = function onMouseOver(e) {
79
- if (targetElement.current.contains(e.target)) {
80
+ if (targetElement && targetElement.current && targetElement.current.contains(e.target)) {
80
81
  setShowTooltip(true);
81
82
  } else setShowTooltip(false);
82
83
  };
@@ -116,9 +117,10 @@ var withTooltip = function withTooltip(WrappedComponent) {
116
117
  height = tooltipDimensions.height;
117
118
  var targetDimensions = targetElement.current.getBoundingClientRect();
118
119
  var targetVerticalCenter = (targetDimensions.top + targetDimensions.bottom) / 2;
119
- var style = "width: ".concat(width, "px");
120
- var left = targetDimensions.left + targetDimensions.width / 2 - width / 2;
121
- left = Math.min(left, document.body.clientWidth - width - space);
120
+ var tooltipClientWidth = tooltipElement.current && tooltipElement.current.clientWidth;
121
+ var style = "width: ".concat(typeof width === 'string' ? width : "".concat(width, "px"));
122
+ var left = targetDimensions.left + targetDimensions.width / 2 - tooltipClientWidth / 2;
123
+ left = Math.min(left, document.body.clientWidth - tooltipClientWidth - space);
122
124
  style += "; left: ".concat(Math.max(space, left), "px");
123
125
 
124
126
  switch (tooltipPosition) {
@@ -141,17 +143,17 @@ var withTooltip = function withTooltip(WrappedComponent) {
141
143
  break;
142
144
 
143
145
  case 'left':
144
- if (targetDimensions.left < width) {
146
+ if (targetDimensions.left < tooltipClientWidth) {
145
147
  setTooltipPosition('right');
146
148
  } else {
147
149
  style += "; top: ".concat(targetVerticalCenter + window.scrollY - height / 2, "px");
148
- style += "; left: ".concat(targetDimensions.left - width - 6, "px");
150
+ style += "; left: ".concat(targetDimensions.left - tooltipClientWidth - 6, "px");
149
151
  }
150
152
 
151
153
  break;
152
154
 
153
155
  case 'right':
154
- if (window.innerWidth - targetDimensions.right < width) {
156
+ if (window.innerWidth - targetDimensions.right < tooltipClientWidth) {
155
157
  setTooltipPosition('left');
156
158
  } else {
157
159
  style += "; top: ".concat(targetVerticalCenter + window.scrollY - height / 2, "px");
@@ -166,7 +168,7 @@ var withTooltip = function withTooltip(WrappedComponent) {
166
168
 
167
169
  setTooltipStyle(style);
168
170
  }
169
- }, [tooltipDimensions, targetElement.current, tooltipPosition]);
171
+ }, [tooltipDimensions, tooltipElement.current, targetElement.current, tooltipPosition]);
170
172
  (0, _react.useEffect)(function () {
171
173
  setTooltipPosition(props.tooltipPosition);
172
174
  }, [window.scrollY, window.scrollX, window.innerWidth]);
@@ -175,6 +177,7 @@ var withTooltip = function withTooltip(WrappedComponent) {
175
177
  if (tooltip) {
176
178
  return /*#__PURE__*/_react["default"].createElement(_tooltip["default"], {
177
179
  text: tooltip,
180
+ tooltipRef: tooltipElement,
178
181
  style: tooltipStyle,
179
182
  className: tooltipPosition,
180
183
  tooltipDimensions: tooltipDimensions,
@@ -202,7 +205,7 @@ var withTooltip = function withTooltip(WrappedComponent) {
202
205
  tooltipPosition: _propTypes["default"].string
203
206
  };
204
207
  EnhancedComponent.defaultProps = {
205
- tooltipWidth: undefined,
208
+ tooltipWidth: 'auto',
206
209
  space: 20,
207
210
  tooltip: '',
208
211
  tooltipPosition: 'bottom'
package/lib/tabs/index.js CHANGED
@@ -96,18 +96,75 @@ var Tabs = function Tabs(props) {
96
96
  tabsContentWidth = _useState14[0],
97
97
  setTabsContentWidth = _useState14[1];
98
98
 
99
- var componentRef = (0, _react.useRef)();
99
+ var _useState15 = (0, _react.useState)(false),
100
+ _useState16 = _slicedToArray(_useState15, 2),
101
+ hasMenuAttributes = _useState16[0],
102
+ setHasMenuAttributes = _useState16[1];
100
103
 
101
- var _menuRef = (0, _react.useRef)();
104
+ var _useState17 = (0, _react.useState)(0),
105
+ _useState18 = _slicedToArray(_useState17, 2),
106
+ dropdownWidth = _useState18[0],
107
+ setDropdownWidth = _useState18[1];
102
108
 
103
- var _toolBarRef = (0, _react.useRef)();
109
+ var componentRef = (0, _react.useRef)(null);
110
+
111
+ var _menuRef = (0, _react.useRef)(null);
112
+
113
+ var _toolBarRef = (0, _react.useRef)(null);
114
+
115
+ var getTabListWidth = function getTabListWidth() {
116
+ var tabMenu = _menuRef.current.children[0];
117
+
118
+ var tabList = _toConsumableArray(tabMenu.children);
119
+
120
+ var tabsListWidth = tabList.reduce(function (total, tab) {
121
+ return total + tab.clientWidth;
122
+ }, 0);
123
+ return tabsListWidth;
124
+ };
125
+
126
+ var getMenuAttributes = function getMenuAttributes() {
127
+ var menuSize = _menuRef.current.clientWidth;
128
+ var toolbarSize = toolbar && _toolBarRef ? _toolBarRef.current.clientWidth : 0;
129
+ var contentWidth = (toolbar ? menuSize - toolbarSize : menuSize) - dropdownWidth;
130
+ setTabsContentWidth(contentWidth);
131
+ };
132
+
133
+ var getTabsList = function getTabsList() {
134
+ var tabsListWidth = getTabListWidth();
135
+
136
+ var newDropdownPanels = _toConsumableArray(dropdownPanels);
137
+
138
+ var newCurrentPanels = _toConsumableArray(panels);
139
+
140
+ if (newDropdownPanels.length) {
141
+ var newDropdownPanelsIds = newDropdownPanels.map(function (dd) {
142
+ return dd.props.id;
143
+ });
144
+ newCurrentPanels = newCurrentPanels.filter(function (tab) {
145
+ return !newDropdownPanelsIds.includes(tab.props.id);
146
+ });
147
+ }
148
+
149
+ if (tabsListWidth > tabsContentWidth) {
150
+ var lastPanel = newCurrentPanels[newCurrentPanels.length - 1];
151
+ newDropdownPanels.push(lastPanel);
152
+ newCurrentPanels.pop();
153
+ } else if (tabsListWidth + 110 < tabsContentWidth && newDropdownPanels.length) {
154
+ newCurrentPanels.push(newDropdownPanels[0]);
155
+ newDropdownPanels.shift();
156
+ }
157
+
158
+ setCurrentPanels(newCurrentPanels);
159
+ setDropdownPanels(newDropdownPanels);
160
+ };
104
161
 
105
162
  var onMenuClick = function onMenuClick(tabId) {
106
163
  var includedInDropdown = dropdownPanels.filter(function (item) {
107
164
  return item.props.id === tabId;
108
165
  });
109
166
 
110
- if (includedInDropdown.length > 0) {
167
+ if (includedInDropdown.length > 0 && getTabListWidth() > 0) {
111
168
  var newDropdownPanels = dropdownPanels.filter(function (item) {
112
169
  return item.props.id !== tabId;
113
170
  });
@@ -148,53 +205,14 @@ var Tabs = function Tabs(props) {
148
205
  if (handlerCloseTab) handlerCloseTab(closedPanelId, newSelectedTabId);
149
206
  };
150
207
 
151
- var getMenuAttributes = function getMenuAttributes() {
152
- var menuSize = _menuRef.current.clientWidth;
153
- var dropdownWidth = dropdownPanels.length > 0 ? _menuRef.current.children[1].clientWidth : 0;
154
- var toolbarSize = toolbar && _toolBarRef ? _toolBarRef.current.clientWidth : 0;
155
- var contentWidth = (toolbar ? menuSize - toolbarSize : menuSize) - dropdownWidth;
156
- setTabsContentWidth(contentWidth);
157
- };
158
-
159
- var getTabsList = function getTabsList() {
160
- var tabMenu = _menuRef.current.children[0];
161
-
162
- var tabList = _toConsumableArray(tabMenu.children);
163
-
164
- var tabsListWidth = tabList.reduce(function (total, tab) {
165
- return total + tab.clientWidth;
166
- }, 0);
167
-
168
- var dropdownTabs = _toConsumableArray(dropdownPanels);
169
-
170
- var currentTabs = _toConsumableArray(panels);
171
-
172
- if (dropdownTabs.length) {
173
- var dropDownTabsIds = dropdownTabs.map(function (dd) {
174
- return dd.props.id;
175
- });
176
- currentTabs = currentTabs.filter(function (tab) {
177
- return !dropDownTabsIds.includes(tab.props.id);
178
- });
179
- }
180
-
181
- if (tabsListWidth > tabsContentWidth) {
182
- var lastPanel = currentTabs[currentTabs.length - 1];
183
- dropdownTabs.push(lastPanel);
184
- currentTabs.pop();
185
- } else if (tabsListWidth + 110 < tabsContentWidth && dropdownTabs.length) {
186
- currentTabs.push(dropdownTabs[0]);
187
- dropdownTabs.shift();
188
- }
189
-
190
- setCurrentPanels(currentTabs);
191
- setDropdownPanels(dropdownTabs);
192
- };
193
-
194
208
  var onResize = function onResize() {
195
209
  if (componentRef.current && _menuRef.current) {
196
210
  setContentHeight(componentRef.current.offsetHeight - _menuRef.current.offsetHeight);
197
- getMenuAttributes();
211
+
212
+ if (!hasMenuAttributes && _menuRef.current && _menuRef.current.clientWidth > 0 && dropdownWidth) {
213
+ getMenuAttributes();
214
+ setHasMenuAttributes(true);
215
+ }
198
216
  }
199
217
  };
200
218
 
@@ -231,14 +249,18 @@ var Tabs = function Tabs(props) {
231
249
  return function () {
232
250
  return window.removeEventListener('resize', onResize);
233
251
  };
234
- }, []);
252
+ }, [_menuRef.current, dropdownWidth]);
235
253
  (0, _react.useEffect)(function () {
236
254
  if (selectedTab) setSelectedTabId(selectedTab);
237
255
  if (children) setPanels((0, _tabHelpers.buildPanels)(children));
238
256
  }, [selectedTab, children]);
239
257
  (0, _react.useEffect)(function () {
240
258
  getTabsList();
241
- }, [panels.length, currentPanels.length]);
259
+ }, [panels.length, currentPanels.length, tabsContentWidth]);
260
+ (0, _react.useEffect)(function () {
261
+ var currentDropdownWidth = dropdownPanels.length > 0 ? _menuRef.current.children[1].clientWidth : 0;
262
+ setDropdownWidth(currentDropdownWidth);
263
+ }, [dropdownPanels.length]);
242
264
 
243
265
  var getContextValues = function getContextValues() {
244
266
  return {
@@ -135,7 +135,7 @@ describe('Tabs', function () {
135
135
  container = _render10.container;
136
136
 
137
137
  expect(container.querySelector('.tabs-component')).toHaveClass('menu-bottom');
138
- expect(container.querySelector('.tabs-component').lastChild).toHaveClass('menu');
138
+ expect(container.querySelector('.tabs-component').lastChild).toHaveClass('menucontainer');
139
139
  });
140
140
  it('should apply tabMenuAlign', function () {
141
141
  var _render11 = (0, _react2.render)(tabsMockRender({
@@ -328,7 +328,8 @@ describe('Tabs', function () {
328
328
  })),
329
329
  container = _render23.container;
330
330
 
331
- expect(container.querySelector('ul.menu li.menuitem button')).not.toHaveAttribute('disabled');
331
+ var noPermissionComponent = container.querySelector('.no-permission-component');
332
+ expect(noPermissionComponent).toBeFalsy();
332
333
  });
333
334
  it('should check permission and be unavailable', function () {
334
335
  Object.defineProperty(window, 'sessionStorage', {
@@ -336,11 +337,13 @@ describe('Tabs', function () {
336
337
  });
337
338
 
338
339
  var _render24 = (0, _react2.render)(tabsMockRender({}, {
339
- permissionAttr: (0, _storageMock.permissionAttrMockUnauthorized)('disabled')
340
+ permissionAttr: (0, _storageMock.permissionAttrMockUnauthorized)('hideContent')
340
341
  })),
341
- container = _render24.container;
342
+ container = _render24.container; // debug();
342
343
 
343
- expect(container.querySelector('ul.menu li.menuitem button')).toHaveAttribute('disabled');
344
+
345
+ var noPermissionComponent = container.querySelector('.no-permission-component');
346
+ expect(noPermissionComponent).toBeTruthy();
344
347
  });
345
348
  });
346
349
  });
@@ -28,15 +28,13 @@ var Tooltip = function Tooltip(props) {
28
28
  tooltipDimensions = props.tooltipDimensions,
29
29
  handlerSetDimensions = props.handlerSetDimensions,
30
30
  style = props.style,
31
- text = props.text;
31
+ text = props.text,
32
+ tooltipRef = props.tooltipRef;
32
33
  var tooltipComponent = (0, _react.useRef)(document.createElement('div'));
33
- tooltipComponent.current.id = "tooltip-".concat(_uuid["default"].v1());
34
- tooltipComponent.current.className = "tooltip-component ".concat(className, " ");
35
- tooltipComponent.current.dataset.testid = 'tooltip-component';
36
- tooltipComponent.current.style = style;
37
34
  (0, _react.useEffect)(function () {
38
35
  tooltipComponent.current.id = "tooltip-".concat(_uuid["default"].v1());
39
36
  tooltipComponent.current.className = "tooltip-component ".concat(className, " ");
37
+ tooltipComponent.current.dataset.testid = 'tooltip-component';
40
38
  tooltipComponent.current.style = style;
41
39
  document.body.appendChild(tooltipComponent.current);
42
40
  var tooltipEl = document.querySelector("div#".concat(tooltipComponent.current.id));
@@ -51,6 +49,7 @@ var Tooltip = function Tooltip(props) {
51
49
  width: width,
52
50
  height: height
53
51
  });
52
+ if (tooltipRef) tooltipRef.current = tooltipEl;
54
53
  return function () {
55
54
  return document.body.removeChild(tooltipComponent.current);
56
55
  };
@@ -75,13 +74,15 @@ Tooltip.propTypes = {
75
74
  text: _propTypes["default"].string,
76
75
  style: _propTypes["default"].string,
77
76
  className: _propTypes["default"].string,
78
- handlerSetDimensions: _propTypes["default"].func
77
+ handlerSetDimensions: _propTypes["default"].func,
78
+ tooltipRef: _propTypes["default"].object
79
79
  };
80
80
  Tooltip.defaultProps = {
81
81
  text: undefined,
82
82
  className: 'bottom',
83
83
  style: '',
84
- handlerSetDimensions: undefined
84
+ handlerSetDimensions: undefined,
85
+ tooltipRef: null
85
86
  };
86
87
  var _default = Tooltip;
87
88
  exports["default"] = _default;
@@ -33,6 +33,8 @@ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "functio
33
33
 
34
34
  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; }
35
35
 
36
+ 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); }
37
+
36
38
  function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }
37
39
 
38
40
  function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
@@ -45,8 +47,6 @@ function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToAr
45
47
 
46
48
  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; }
47
49
 
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
-
50
50
  function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
51
51
 
52
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); } }
@@ -78,193 +78,16 @@ var TreeNode = /*#__PURE__*/function (_Component) {
78
78
  _classCallCheck(this, TreeNode);
79
79
 
80
80
  _this = _super.call(this, props);
81
- Object.defineProperty(_assertThisInitialized(_this), "getSpan", {
82
- configurable: true,
83
- enumerable: true,
84
- writable: true,
85
- value: function value() {
86
- var _this$props = _this.props,
87
- node = _this$props.node,
88
- alwaysShowArrow = _this$props.alwaysShowArrow;
89
-
90
- var span = /*#__PURE__*/_react["default"].createElement("noscript", null);
91
-
92
- if (node.itens && node.itens.length > 0 || alwaysShowArrow) {
93
- span = /*#__PURE__*/_react["default"].createElement("span", {
94
- onKeyPress: null,
95
- tabIndex: 0,
96
- role: "button",
97
- className: "opencloseicon",
98
- onClick: function onClick() {
99
- return _this.openCloseTree(node);
100
- }
101
- }, /*#__PURE__*/_react["default"].createElement(_icons["default"], {
102
- name: _this.state.isVisible ? 'up' : 'down',
103
- size: 10
104
- }));
105
- }
106
-
107
- return span;
108
- }
109
- });
110
- Object.defineProperty(_assertThisInitialized(_this), "openCloseTree", {
111
- configurable: true,
112
- enumerable: true,
113
- writable: true,
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
81
 
130
- _this.setState(nextState);
131
- }
132
- });
133
- Object.defineProperty(_assertThisInitialized(_this), "handleShowNodeElements", {
134
- configurable: true,
135
- enumerable: true,
136
- writable: true,
137
- value: function value() {
138
- var _this$state2 = _this.state,
139
- showNodeElements = _this$state2.showNodeElements,
140
- keepMenuOpened = _this$state2.keepMenuOpened;
141
- if (!showNodeElements) _this.setState({
142
- showNodeElements: true
143
- });else if (showNodeElements && !keepMenuOpened) {
144
- _this.setState({
145
- showNodeElements: false
146
- });
147
- }
148
- }
149
- });
150
- Object.defineProperty(_assertThisInitialized(_this), "updateElements", {
151
- configurable: true,
152
- enumerable: true,
153
- writable: true,
154
- value: function value(elements) {
155
- var _this$props2 = _this.props,
156
- node = _this$props2.node,
157
- nodeElementsValidations = _this$props2.nodeElementsValidations;
158
- var updatedElements = [];
159
-
160
- if (elements) {
161
- updatedElements = _react["default"].Children.map(elements, function (element) {
162
- if ( /*#__PURE__*/_react["default"].isValidElement(element) && element.props) {
163
- var _element$props = element.props,
164
- validationKey = _element$props.validationKey,
165
- onNodeElementClick = _element$props.onNodeElementClick;
166
- var elementBehavior;
167
- var newProps = {};
168
-
169
- if (nodeElementsValidations && validationKey) {
170
- elementBehavior = _this.validateNodeElement(validationKey);
171
- }
172
-
173
- if (onNodeElementClick) {
174
- newProps = _extends({}, newProps, {
175
- onClick: function onClick(e) {
176
- onNodeElementClick(node);
177
- if (e.stopPropagation) e.stopPropagation();
178
- },
179
- onNodeElementClick: null
180
- });
181
- }
182
-
183
- return /*#__PURE__*/_react["default"].cloneElement(element, _extends({}, elementBehavior, newProps));
184
- }
185
-
186
- return element;
187
- });
188
- }
189
-
190
- return updatedElements;
191
- }
192
- });
193
- Object.defineProperty(_assertThisInitialized(_this), "returnNodeRightElements", {
194
- configurable: true,
195
- enumerable: true,
196
- writable: true,
197
- value: function value() {
198
- var nodeRightElements = _this.props.nodeRightElements;
199
-
200
- var updatedNodeRightElements = _this.updateElements(nodeRightElements).map(function (element) {
201
- var unvisible = element.props && 'visible' in element.props && !element.props.visible;
202
- var style = unvisible ? {
203
- display: 'none'
204
- } : {};
205
- return /*#__PURE__*/_react["default"].createElement("div", {
206
- style: style,
207
- key: "element-".concat(_uuid["default"].v1()),
208
- className: "element"
209
- }, element);
210
- });
82
+ _initialiseProps.call(_assertThisInitialized(_this));
211
83
 
212
- return updatedNodeRightElements.length > 0 ? /*#__PURE__*/_react["default"].createElement("div", {
213
- className: "node-rightelements"
214
- }, updatedNodeRightElements) : null;
215
- }
216
- });
217
- Object.defineProperty(_assertThisInitialized(_this), "returnNodeToolbarElements", {
218
- configurable: true,
219
- enumerable: true,
220
- writable: true,
221
- value: function value() {
222
- var nodeToolbarElements = _this.props.nodeToolbarElements;
223
-
224
- var updatedNodeRightElements = _this.updateElements(nodeToolbarElements);
225
-
226
- return updatedNodeRightElements.length > 0 ? /*#__PURE__*/_react["default"].createElement(_toolbar["default"], {
227
- customClass: "node-toolbarelements"
228
- }, /*#__PURE__*/_react["default"].createElement(_toolbar.ToolBarGroup, null, updatedNodeRightElements)) : null;
229
- }
230
- });
231
- Object.defineProperty(_assertThisInitialized(_this), "validateNodeElement", {
232
- configurable: true,
233
- enumerable: true,
234
- writable: true,
235
- value: function value(validationKey) {
236
- var _this$props3 = _this.props,
237
- nodeElementsValidations = _this$props3.nodeElementsValidations,
238
- node = _this$props3.node;
239
- var validations = nodeElementsValidations[validationKey];
240
- var options = {
241
- disabled: {
242
- disabled: true
243
- },
244
- unvisible: {
245
- visible: false
246
- }
247
- };
248
- var elementBehavior = {};
249
-
250
- if (validations) {
251
- validations.forEach(function (validation) {
252
- var validator = validation.validator,
253
- applyBehavior = validation.applyBehavior;
254
-
255
- if (_lodash["default"].isEmpty(elementBehavior) && validator && validator(node)) {
256
- elementBehavior = options[applyBehavior] || options.unvisible;
257
- }
258
- });
259
- }
260
-
261
- return elementBehavior;
262
- }
263
- });
264
84
  _this.labelRef = /*#__PURE__*/_react["default"].createRef();
85
+ var node = props.node;
86
+ var startNodesOpened = context.startNodesOpened;
87
+ var nodeHasItens = node.itens && node.itens.length > 0;
265
88
  _this.state = {
266
- isVisible: context.startNodesOpened,
267
- wasOpened: context.startNodesOpened,
89
+ isVisible: nodeHasItens && startNodesOpened,
90
+ wasOpened: nodeHasItens && startNodesOpened,
268
91
  showNodeElements: false,
269
92
  keepMenuOpened: false
270
93
  };
@@ -274,10 +97,10 @@ var TreeNode = /*#__PURE__*/function (_Component) {
274
97
  _createClass(TreeNode, [{
275
98
  key: "componentDidMount",
276
99
  value: function componentDidMount() {
277
- var _this$props4 = this.props,
278
- isParent = _this$props4.isParent,
279
- nodeToolbarElements = _this$props4.nodeToolbarElements,
280
- nodeRightElements = _this$props4.nodeRightElements;
100
+ var _this$props = this.props,
101
+ isParent = _this$props.isParent,
102
+ nodeToolbarElements = _this$props.nodeToolbarElements,
103
+ nodeRightElements = _this$props.nodeRightElements;
281
104
 
282
105
  if (isParent || nodeRightElements || nodeToolbarElements) {
283
106
  this.labelRef.current.addEventListener('mouseenter', this.handleShowNodeElements);
@@ -287,10 +110,10 @@ var TreeNode = /*#__PURE__*/function (_Component) {
287
110
  }, {
288
111
  key: "componentWillUnmount",
289
112
  value: function componentWillUnmount() {
290
- var _this$props5 = this.props,
291
- isParent = _this$props5.isParent,
292
- nodeToolbarElements = _this$props5.nodeToolbarElements,
293
- nodeRightElements = _this$props5.nodeRightElements;
113
+ var _this$props2 = this.props,
114
+ isParent = _this$props2.isParent,
115
+ nodeToolbarElements = _this$props2.nodeToolbarElements,
116
+ nodeRightElements = _this$props2.nodeRightElements;
294
117
 
295
118
  if (isParent || nodeRightElements || nodeToolbarElements) {
296
119
  this.labelRef.current.removeEventListener('mouseenter', this.handleShowNodeElements);
@@ -302,12 +125,12 @@ var TreeNode = /*#__PURE__*/function (_Component) {
302
125
  value: function render() {
303
126
  var _this2 = this;
304
127
 
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;
128
+ var _this$props3 = this.props,
129
+ node = _this$props3.node,
130
+ children = _this$props3.children,
131
+ isParent = _this$props3.isParent,
132
+ onNodeClick = _this$props3.onNodeClick,
133
+ nodeMenuButtonSize = _this$props3.nodeMenuButtonSize;
311
134
  var showNodeElements = this.state.showNodeElements;
312
135
  return /*#__PURE__*/_react["default"].createElement(_constants.TreeviewContext.Consumer, null, function (_ref) {
313
136
  var valuePropName = _ref.valuePropName,
@@ -389,6 +212,194 @@ var TreeNode = /*#__PURE__*/function (_Component) {
389
212
  return TreeNode;
390
213
  }(_react.Component);
391
214
 
215
+ var _initialiseProps = function _initialiseProps() {
216
+ var _this3 = this;
217
+
218
+ Object.defineProperty(this, "getSpan", {
219
+ configurable: true,
220
+ enumerable: true,
221
+ writable: true,
222
+ value: function value() {
223
+ var _this3$props = _this3.props,
224
+ node = _this3$props.node,
225
+ alwaysShowArrow = _this3$props.alwaysShowArrow;
226
+
227
+ var span = /*#__PURE__*/_react["default"].createElement("noscript", null);
228
+
229
+ if (node.itens && node.itens.length > 0 || alwaysShowArrow) {
230
+ span = /*#__PURE__*/_react["default"].createElement("span", {
231
+ onKeyPress: null,
232
+ tabIndex: 0,
233
+ role: "button",
234
+ className: "opencloseicon",
235
+ onClick: function onClick() {
236
+ return _this3.openCloseTree(node);
237
+ }
238
+ }, /*#__PURE__*/_react["default"].createElement(_icons["default"], {
239
+ name: _this3.state.isVisible ? 'up' : 'down',
240
+ size: 10
241
+ }));
242
+ }
243
+
244
+ return span;
245
+ }
246
+ });
247
+ Object.defineProperty(this, "openCloseTree", {
248
+ configurable: true,
249
+ enumerable: true,
250
+ writable: true,
251
+ value: function value(node) {
252
+ var _this3$state = _this3.state,
253
+ isVisible = _this3$state.isVisible,
254
+ wasOpened = _this3$state.wasOpened;
255
+ var handlerOnNodeOpen = _this3.props.handlerOnNodeOpen;
256
+ var nextState = {
257
+ isVisible: !isVisible
258
+ };
259
+
260
+ if (!wasOpened && handlerOnNodeOpen) {
261
+ nextState = _extends({}, nextState, {
262
+ wasOpened: true
263
+ });
264
+ handlerOnNodeOpen(node);
265
+ }
266
+
267
+ _this3.setState(nextState);
268
+ }
269
+ });
270
+ Object.defineProperty(this, "handleShowNodeElements", {
271
+ configurable: true,
272
+ enumerable: true,
273
+ writable: true,
274
+ value: function value() {
275
+ var _this3$state2 = _this3.state,
276
+ showNodeElements = _this3$state2.showNodeElements,
277
+ keepMenuOpened = _this3$state2.keepMenuOpened;
278
+ if (!showNodeElements) _this3.setState({
279
+ showNodeElements: true
280
+ });else if (showNodeElements && !keepMenuOpened) {
281
+ _this3.setState({
282
+ showNodeElements: false
283
+ });
284
+ }
285
+ }
286
+ });
287
+ Object.defineProperty(this, "updateElements", {
288
+ configurable: true,
289
+ enumerable: true,
290
+ writable: true,
291
+ value: function value(elements) {
292
+ var _this3$props2 = _this3.props,
293
+ node = _this3$props2.node,
294
+ nodeElementsValidations = _this3$props2.nodeElementsValidations;
295
+ var updatedElements = [];
296
+
297
+ if (elements) {
298
+ updatedElements = _react["default"].Children.map(elements, function (element) {
299
+ if ( /*#__PURE__*/_react["default"].isValidElement(element) && element.props) {
300
+ var _element$props = element.props,
301
+ validationKey = _element$props.validationKey,
302
+ onNodeElementClick = _element$props.onNodeElementClick;
303
+ var elementBehavior;
304
+ var newProps = {};
305
+
306
+ if (nodeElementsValidations && validationKey) {
307
+ elementBehavior = _this3.validateNodeElement(validationKey);
308
+ }
309
+
310
+ if (onNodeElementClick) {
311
+ newProps = _extends({}, newProps, {
312
+ onClick: function onClick(e) {
313
+ onNodeElementClick(node);
314
+ if (e.stopPropagation) e.stopPropagation();
315
+ },
316
+ onNodeElementClick: null
317
+ });
318
+ }
319
+
320
+ return /*#__PURE__*/_react["default"].cloneElement(element, _extends({}, elementBehavior, newProps));
321
+ }
322
+
323
+ return element;
324
+ });
325
+ }
326
+
327
+ return updatedElements;
328
+ }
329
+ });
330
+ Object.defineProperty(this, "returnNodeRightElements", {
331
+ configurable: true,
332
+ enumerable: true,
333
+ writable: true,
334
+ value: function value() {
335
+ var nodeRightElements = _this3.props.nodeRightElements;
336
+
337
+ var updatedNodeRightElements = _this3.updateElements(nodeRightElements).map(function (element) {
338
+ var unvisible = element.props && 'visible' in element.props && !element.props.visible;
339
+ var style = unvisible ? {
340
+ display: 'none'
341
+ } : {};
342
+ return /*#__PURE__*/_react["default"].createElement("div", {
343
+ style: style,
344
+ key: "element-".concat(_uuid["default"].v1()),
345
+ className: "element"
346
+ }, element);
347
+ });
348
+
349
+ return updatedNodeRightElements.length > 0 ? /*#__PURE__*/_react["default"].createElement("div", {
350
+ className: "node-rightelements"
351
+ }, updatedNodeRightElements) : null;
352
+ }
353
+ });
354
+ Object.defineProperty(this, "returnNodeToolbarElements", {
355
+ configurable: true,
356
+ enumerable: true,
357
+ writable: true,
358
+ value: function value() {
359
+ var nodeToolbarElements = _this3.props.nodeToolbarElements;
360
+
361
+ var updatedNodeRightElements = _this3.updateElements(nodeToolbarElements);
362
+
363
+ return updatedNodeRightElements.length > 0 ? /*#__PURE__*/_react["default"].createElement(_toolbar["default"], {
364
+ customClass: "node-toolbarelements"
365
+ }, /*#__PURE__*/_react["default"].createElement(_toolbar.ToolBarGroup, null, updatedNodeRightElements)) : null;
366
+ }
367
+ });
368
+ Object.defineProperty(this, "validateNodeElement", {
369
+ configurable: true,
370
+ enumerable: true,
371
+ writable: true,
372
+ value: function value(validationKey) {
373
+ var _this3$props3 = _this3.props,
374
+ nodeElementsValidations = _this3$props3.nodeElementsValidations,
375
+ node = _this3$props3.node;
376
+ var validations = nodeElementsValidations[validationKey];
377
+ var options = {
378
+ disabled: {
379
+ disabled: true
380
+ },
381
+ unvisible: {
382
+ visible: false
383
+ }
384
+ };
385
+ var elementBehavior = {};
386
+
387
+ if (validations) {
388
+ validations.forEach(function (validation) {
389
+ var validator = validation.validator,
390
+ applyBehavior = validation.applyBehavior;
391
+
392
+ if (_lodash["default"].isEmpty(elementBehavior) && validator && validator(node)) {
393
+ elementBehavior = options[applyBehavior] || options.unvisible;
394
+ }
395
+ });
396
+ }
397
+
398
+ return elementBehavior;
399
+ }
400
+ });
401
+ };
402
+
392
403
  TreeNode.propTypes = {
393
404
  node: _propTypes["default"].object.isRequired,
394
405
  children: _propTypes["default"].any.isRequired,
@@ -546,14 +546,18 @@ var TreeView = /*#__PURE__*/function (_Component) {
546
546
  key: "getDerivedStateFromProps",
547
547
  value: function getDerivedStateFromProps(props, state) {
548
548
  var data = props.data,
549
- selectedIds = props.selectedIds;
549
+ selectedIds = props.selectedIds,
550
+ enableDynamicData = props.enableDynamicData;
550
551
  var propSelectedIds = state.propSelectedIds;
551
552
 
552
553
  var isSameSelectedIds = _lodash["default"].isEqual(propSelectedIds.sort(), selectedIds.sort());
553
554
 
554
- if (data !== state.data || !isSameSelectedIds) {
555
+ if (enableDynamicData && data !== state.data) {
556
+ return {
557
+ data: data
558
+ };
559
+ } else if (!isSameSelectedIds) {
555
560
  return {
556
- data: data,
557
561
  selectedIds: selectedIds,
558
562
  propSelectedIds: selectedIds
559
563
  };
@@ -589,7 +593,8 @@ TreeView.propTypes = {
589
593
  nodeMenuButtonSize: _propTypes["default"].oneOf(['mini', 'small', 'medium', 'large', 'default']),
590
594
  onNodeClick: _propTypes["default"].func,
591
595
  onNodeOpen: _propTypes["default"].func,
592
- nodeElementsValidations: _propTypes["default"].object
596
+ nodeElementsValidations: _propTypes["default"].object,
597
+ enableDynamicData: _propTypes["default"].bool
593
598
  };
594
599
  TreeView.defaultProps = {
595
600
  customClass: '',
@@ -610,7 +615,8 @@ TreeView.defaultProps = {
610
615
  nodeMenuButtonSize: 'small',
611
616
  onNodeClick: undefined,
612
617
  onNodeOpen: undefined,
613
- nodeElementsValidations: undefined
618
+ nodeElementsValidations: undefined,
619
+ enableDynamicData: false
614
620
  };
615
621
  var _default = TreeView;
616
622
  exports["default"] = _default;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "linear-react-components-ui",
3
- "version": "0.4.76-beta.5",
3
+ "version": "0.4.76-beta.9",
4
4
  "description": "Linear Sistemas ReactJs Components",
5
5
  "main": "lib/index.js",
6
6
  "scripts": {