linear-react-components-ui 0.4.76-beta.25 → 0.4.76-beta.28

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
@@ -71,14 +71,16 @@ ficando da seguinte maneira:
71
71
 
72
72
  ### Publicar versão de demonstração no Heroku
73
73
 
74
+ Pré-requesistos
75
+ - Ter um conta no heroku
76
+ - Ser um colaborador do projeto no Heroku
77
+ - Ter o heroku cli instalado: https://devcenter.heroku.com/articles/heroku-cli#install-the-heroku-cli
74
78
 
75
- No diretorio da aplicação clonar
76
- `heroku git:clone -a linear-react-comp-demo`
77
-
78
- Renomear a pastar `linear-react-comp-demo` para `demo`
79
-
80
79
  Fazer login no Heroku
81
80
  `heroku login`
81
+
82
+ No diretorio da aplicação clonar
83
+ `heroku git:clone -a linear-react-comp-demo demo`
82
84
 
83
85
  Executar o comando
84
86
  `npm run deploy:heroku`
@@ -48,7 +48,7 @@
48
48
  }
49
49
  }
50
50
 
51
- .select-component > .dropdown {
51
+ .dropdown-component > .select-dropdown {
52
52
  animation: 0.5s ease-in 0s 1 slideDown;
53
53
  background-color: #FFF;
54
54
  border: $component-border-color;
@@ -58,17 +58,17 @@
58
58
  height: auto;
59
59
  overflow-y: auto;
60
60
  overflow-x: hidden;
61
- position: absolute;
62
61
  margin-top: 2px;
63
- z-index: 99999999999;
64
62
  > .filtercontainer {
65
63
  display: grid;
66
64
  grid-template-columns: 1fr 20px;
65
+ align-items: center;
67
66
  border: 1px solid $component-border-color;
68
67
  margin: 4px;
69
68
  }
70
69
  > .filtercontainer > .filterinput {
71
70
  border: 0;
71
+ width: 100%;
72
72
  font-size: 13px;
73
73
  text-indent: 4px;
74
74
  padding: 10px 5px;
@@ -45,6 +45,8 @@
45
45
  display: flex;
46
46
  justify-content: flex-start;
47
47
  align-items: center;
48
+ min-height: 25px;
49
+ color: $font-color-soft;
48
50
  >.node-menu {
49
51
  animation: revealelement 0.3s forwards ease-in-out;
50
52
  margin-left: 10px;
@@ -62,7 +64,9 @@
62
64
  margin-left: 10px;
63
65
  }
64
66
  &:hover {
67
+ cursor: pointer;
65
68
  background-color: rgb(209, 209, 209);
69
+ text-decoration: underline;
66
70
  }
67
71
  }
68
72
  > .nodelist {
@@ -18,8 +18,9 @@ var getCalendarDropdownStyle = function getCalendarDropdownStyle(_ref) {
18
18
  leftPosition = _ref.leftPosition,
19
19
  rightPosition = _ref.rightPosition,
20
20
  align = _ref.align,
21
- isFloatMenu = _ref.isFloatMenu;
22
- var style = "top: ".concat(topPosition + (isFloatMenu ? 6 : 2), "px;");
21
+ isFloatMenu = _ref.isFloatMenu,
22
+ minWidth = _ref.minWidth;
23
+ var style = "top: ".concat(topPosition + (isFloatMenu ? 6 : 2), "px; min-width: ").concat(minWidth, "px;");
23
24
 
24
25
  if (align === 'left') {
25
26
  style += "left: ".concat(leftPosition, "px;");
@@ -189,6 +189,14 @@ describe('Form', function () {
189
189
  }));
190
190
  expect(mockHandlerReset).toHaveBeenCalled();
191
191
  });
192
+ it('should apply disabled', function () {
193
+ var mockHandlerReset = jest.fn();
194
+ (0, _react2.render)(mockForm({
195
+ disabled: true,
196
+ handlerReset: mockHandlerReset
197
+ }));
198
+ expect(mockHandlerReset).not.toHaveBeenCalled();
199
+ });
192
200
  });
193
201
  describe('Field', function () {
194
202
  describe('Default & Number', function () {
package/lib/form/index.js CHANGED
@@ -91,7 +91,8 @@ var Form = function Form(_ref) {
91
91
  onValidateForm = _ref.onValidateForm,
92
92
  externalFieldErrors = _ref.externalFieldErrors,
93
93
  onSubmit = _ref.onSubmit,
94
- skeletonize = _ref.skeletonize;
94
+ skeletonize = _ref.skeletonize,
95
+ disabled = _ref.disabled;
95
96
 
96
97
  var _useState = (0, _react.useState)(dataSource),
97
98
  _useState2 = _slicedToArray(_useState, 2),
@@ -231,10 +232,29 @@ var Form = function Form(_ref) {
231
232
  };
232
233
  };
233
234
 
235
+ var formProps = function formProps() {
236
+ var propsForm = null;
237
+
238
+ if (!disabled) {
239
+ propsForm = {
240
+ onSubmit: function onSubmit(e) {
241
+ return e.preventDefault();
242
+ },
243
+ onKeyPress: function onKeyPress(e) {
244
+ return submitOnEnter(e);
245
+ }
246
+ };
247
+ }
248
+
249
+ return propsForm;
250
+ };
251
+
234
252
  (0, _react.useEffect)(function () {
235
- handlerSubmit(onFormSubmit);
236
- if (handlerReset) handlerReset(onReset);
237
- if (handlerValidates) handlerValidates(checkIsValid);
253
+ if (!disabled) {
254
+ handlerSubmit(onFormSubmit);
255
+ if (handlerReset) handlerReset(onReset);
256
+ if (handlerValidates) handlerValidates(checkIsValid);
257
+ }
238
258
  }, [data]);
239
259
  (0, _react.useEffect)(function () {
240
260
  if (securityBeforeUnload) {
@@ -247,27 +267,24 @@ var Form = function Form(_ref) {
247
267
  };
248
268
  }, [securityBeforeUnload, onBeforeUnload]);
249
269
  (0, _react.useEffect)(function () {
250
- if (submitOnPressEnterKey !== submitFormOnEnter || dataSource !== originalData) {
251
- setData(dataSource);
252
- setOriginalData(function (prevState) {
253
- return prevState || dataSource;
254
- });
255
- setSubmitFormOnEnter(submitOnPressEnterKey);
270
+ if (!disabled) {
271
+ if (submitOnPressEnterKey !== submitFormOnEnter || dataSource !== originalData) {
272
+ setData(dataSource);
273
+ setOriginalData(function (prevState) {
274
+ return prevState || dataSource;
275
+ });
276
+ setSubmitFormOnEnter(submitOnPressEnterKey);
277
+ }
256
278
  }
257
279
  }, [submitOnPressEnterKey, dataSource]);
258
280
  return /*#__PURE__*/_react["default"].createElement(_react.Fragment, null, /*#__PURE__*/_react["default"].createElement(_helpers.FormContext.Provider, {
259
281
  value: getContextValue()
260
- }, /*#__PURE__*/_react["default"].createElement("form", {
261
- style: style,
262
- onSubmit: function onSubmit(e) {
263
- return e.preventDefault();
264
- },
265
- onKeyPress: function onKeyPress(e) {
266
- return submitOnEnter(e);
267
- },
282
+ }, /*#__PURE__*/_react["default"].createElement("form", _extends({
283
+ style: style
284
+ }, formProps(), {
268
285
  role: "presentation",
269
286
  className: "form-component ".concat(customClass)
270
- }, children)), /*#__PURE__*/_react["default"].createElement(_dialog.DialogQuestion, {
287
+ }), children)), /*#__PURE__*/_react["default"].createElement(_dialog.DialogQuestion, {
271
288
  zIndex: "99999999",
272
289
  title: securityTitle || 'Dados Alterados',
273
290
  text: securityText || 'Você possui dados alterados, confirma o fechamento?',
@@ -293,7 +310,8 @@ Form.propTypes = {
293
310
  securityTitle: _propTypes["default"].string,
294
311
  securityText: _propTypes["default"].string,
295
312
  externalFieldErrors: _propTypes["default"].object,
296
- skeletonize: _propTypes["default"].bool
313
+ skeletonize: _propTypes["default"].bool,
314
+ disabled: _propTypes["default"].bool
297
315
  };
298
316
  Form.defaultProps = {
299
317
  onValidateForm: undefined,
@@ -307,7 +325,8 @@ Form.defaultProps = {
307
325
  securityTitle: null,
308
326
  securityText: null,
309
327
  externalFieldErrors: {},
310
- skeletonize: false
328
+ skeletonize: false,
329
+ disabled: false
311
330
  };
312
331
  var _default = Form;
313
332
  exports["default"] = _default;
@@ -7,6 +7,8 @@ exports["default"] = void 0;
7
7
 
8
8
  var _react = _interopRequireDefault(require("react"));
9
9
 
10
+ var _propTypes = _interopRequireDefault(require("prop-types"));
11
+
10
12
  var _BaseMask = _interopRequireDefault(require("./BaseMask"));
11
13
 
12
14
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
@@ -14,10 +16,17 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "d
14
16
  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); }
15
17
 
16
18
  var PhoneField = function PhoneField(props) {
19
+ var cellNumber = props.cellNumber;
17
20
  return /*#__PURE__*/_react["default"].createElement(_BaseMask["default"], _extends({}, props, {
18
- mask: "(00) 0000-0000"
21
+ mask: cellNumber ? '(00) 00000-0000' : '(00) 0000-0000'
19
22
  }));
20
23
  };
21
24
 
25
+ PhoneField.propTypes = {
26
+ cellNumber: _propTypes["default"].bool
27
+ };
28
+ PhoneField.defaultProps = {
29
+ cellNumber: false
30
+ };
22
31
  var _default = PhoneField;
23
32
  exports["default"] = _default;
@@ -562,18 +562,35 @@ describe('Input Masked', function () {
562
562
 
563
563
  expect(input).toHaveValue('(11) 1111-1111');
564
564
  });
565
+ it('should apply cellNumber', function () {
566
+ var _render38 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_.PhoneField, {
567
+ cellNumber: true
568
+ })),
569
+ container = _render38.container;
570
+
571
+ var input = container.querySelector('.input-base-component .inputwrapper .inputcontent input.textinput');
572
+ expect(input).toHaveValue('(__) _____-____');
573
+
574
+ _react2.fireEvent.change(input, {
575
+ target: {
576
+ value: '11111111111'
577
+ }
578
+ });
579
+
580
+ expect(input).toHaveValue('(11) 11111-1111');
581
+ });
565
582
  });
566
583
  describe('Zip Code', function () {
567
584
  it('should render correctly', function () {
568
- var _render38 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_.ZipCodeField, null)),
569
- container = _render38.container;
585
+ var _render39 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_.ZipCodeField, null)),
586
+ container = _render39.container;
570
587
 
571
588
  expect(container.firstChild).toBeTruthy();
572
589
  expect(container.firstChild).toHaveClass('input-base-component');
573
590
  });
574
591
  it('should apply zipcode mask', function () {
575
- var _render39 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_.ZipCodeField, null)),
576
- container = _render39.container;
592
+ var _render40 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_.ZipCodeField, null)),
593
+ container = _render40.container;
577
594
 
578
595
  var input = container.querySelector('.input-base-component .inputwrapper .inputcontent input.textinput');
579
596
  expect(input).toHaveValue('_____-___');
@@ -17,6 +17,8 @@ var _avatar = _interopRequireDefault(require("../../avatar"));
17
17
 
18
18
  var helper = _interopRequireWildcard(require("./helper"));
19
19
 
20
+ var _Popup = _interopRequireDefault(require("../../dropdown/Popup"));
21
+
20
22
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
21
23
 
22
24
  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); }
@@ -37,67 +39,50 @@ function _iterableToArrayLimit(arr, i) { var _i = arr && (typeof Symbol !== "und
37
39
 
38
40
  function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
39
41
 
40
- var returnDropdownDynamicStyles = function returnDropdownDynamicStyles(selectFieldRef, dropdownMaxHeight) {
41
- var selectFieldRects = selectFieldRef.current.getBoundingClientRect();
42
- var dropdownBottomDistance = window.innerHeight - selectFieldRects.bottom;
43
- var maxDropdownBottomDistance = 200;
44
- var height = dropdownMaxHeight;
45
- var dropdownPosition;
46
-
47
- if (!height || height <= 0) {
48
- if (dropdownBottomDistance < maxDropdownBottomDistance) {
49
- height = selectFieldRects.top;
50
- dropdownPosition = window.innerHeight - selectFieldRef.current.offsetTop + 10;
51
- } else {
52
- height = dropdownBottomDistance;
53
- }
54
- } else {
55
- maxDropdownBottomDistance = height;
56
-
57
- if (dropdownBottomDistance < maxDropdownBottomDistance) {
58
- dropdownPosition = window.innerHeight - selectFieldRef.current.offsetTop + 10;
42
+ var Dropdown = function Dropdown(props) {
43
+ var dataCombo = props.dataCombo,
44
+ dropdownWidth = props.dropdownWidth,
45
+ selected = props.selected,
46
+ handleOnSelect = props.handleOnSelect,
47
+ handleOnFilter = props.handleOnFilter,
48
+ searchOnDropdown = props.searchOnDropdown,
49
+ handleOnKeydown = props.handleOnKeydown,
50
+ searchNotFoundText = props.searchNotFoundText,
51
+ handleOnBlur = props.handleOnBlur,
52
+ handleOnFocus = props.handleOnFocus,
53
+ opened = props.opened,
54
+ idKey = props.idKey,
55
+ descriptionKey = props.descriptionKey,
56
+ currents = props.currents,
57
+ imageAlign = props.imageAlign,
58
+ striped = props.striped,
59
+ imgSrcKey = props.imgSrcKey,
60
+ gridWrapperStyle = props.gridWrapperStyle,
61
+ inputValue = props.inputValue,
62
+ dropdownRef = props.dropdownRef;
63
+
64
+ var _useState = (0, _react.useState)(helper.returnDropdownDynamicStyles(_extends({}, props))),
65
+ _useState2 = _slicedToArray(_useState, 2),
66
+ dropdownDynamicStyles = _useState2[0],
67
+ setDropdownDynamicStyles = _useState2[1];
68
+
69
+ (0, _react.useEffect)(function () {
70
+ if (dropdownRef.current) {
71
+ setDropdownDynamicStyles(helper.returnDropdownDynamicStyles(_extends({}, props)));
59
72
  }
60
- }
61
-
62
- return {
63
- maxHeight: "".concat(height - 30, "px"),
64
- bottom: dropdownBottomDistance < maxDropdownBottomDistance && "".concat(dropdownPosition, "px")
65
- };
66
- };
67
-
68
- var Dropdown = function Dropdown(_ref) {
69
- var dataCombo = _ref.dataCombo,
70
- dropdownWidth = _ref.dropdownWidth,
71
- selected = _ref.selected,
72
- handleOnSelect = _ref.handleOnSelect,
73
- handleOnFilter = _ref.handleOnFilter,
74
- searchOnDropdown = _ref.searchOnDropdown,
75
- handleOnKeydown = _ref.handleOnKeydown,
76
- searchNotFoundText = _ref.searchNotFoundText,
77
- handleOnBlur = _ref.handleOnBlur,
78
- handleOnFocus = _ref.handleOnFocus,
79
- opened = _ref.opened,
80
- idKey = _ref.idKey,
81
- descriptionKey = _ref.descriptionKey,
82
- currents = _ref.currents,
83
- imageAlign = _ref.imageAlign,
84
- striped = _ref.striped,
85
- imgSrcKey = _ref.imgSrcKey,
86
- gridWrapperStyle = _ref.gridWrapperStyle,
87
- selectFieldRef = _ref.selectFieldRef,
88
- dropdownMaxHeight = _ref.dropdownMaxHeight,
89
- inputValue = _ref.inputValue;
90
-
91
- var _useState = (0, _react.useState)(returnDropdownDynamicStyles(selectFieldRef, dropdownMaxHeight)),
92
- _useState2 = _slicedToArray(_useState, 1),
93
- dropdownDynamicStyles = _useState2[0];
94
-
95
- return /*#__PURE__*/_react["default"].createElement("div", {
96
- className: "dropdown",
97
- style: _extends({
73
+ }, [dropdownRef.current, dataCombo]);
74
+ return /*#__PURE__*/_react["default"].createElement(_Popup["default"], {
75
+ leftPosition: dropdownDynamicStyles.left,
76
+ topPosition: dropdownDynamicStyles.top,
77
+ minWidth: dropdownWidth
78
+ }, /*#__PURE__*/_react["default"].createElement("div", {
79
+ className: "select-dropdown",
80
+ ref: dropdownRef,
81
+ style: {
98
82
  width: dropdownWidth,
99
- marginLeft: gridWrapperStyle ? gridWrapperStyle.paddingLeft : '0'
100
- }, dropdownDynamicStyles)
83
+ marginLeft: gridWrapperStyle ? gridWrapperStyle.paddingLeft : '0',
84
+ maxHeight: dropdownDynamicStyles.maxHeight
85
+ }
101
86
  }, searchOnDropdown && /*#__PURE__*/_react["default"].createElement("div", {
102
87
  className: "filtercontainer"
103
88
  }, /*#__PURE__*/_react["default"].createElement("input", {
@@ -153,7 +138,7 @@ var Dropdown = function Dropdown(_ref) {
153
138
  }, item[descriptionKey])));
154
139
  }), dataCombo.length === 0 && /*#__PURE__*/_react["default"].createElement("div", {
155
140
  className: "notfound"
156
- }, searchNotFoundText));
141
+ }, searchNotFoundText)));
157
142
  };
158
143
 
159
144
  Dropdown.propTypes = {
@@ -171,13 +156,14 @@ Dropdown.propTypes = {
171
156
  handleOnBlur: _propTypes["default"].func.isRequired,
172
157
  handleOnFocus: _propTypes["default"].func.isRequired,
173
158
  opened: _propTypes["default"].bool.isRequired,
159
+ inputValue: _propTypes["default"].string.isRequired,
160
+ dropdownRef: _propTypes["default"].object.isRequired,
174
161
  currents: _propTypes["default"].arrayOf(_propTypes["default"].object),
175
162
  imageAlign: _propTypes["default"].oneOf(['left', 'right']),
176
163
  striped: _propTypes["default"].bool,
177
164
  gridWrapperStyle: _propTypes["default"].object,
178
165
  selectFieldRef: _propTypes["default"].object,
179
- dropdownMaxHeight: _propTypes["default"].number,
180
- inputValue: _propTypes["default"].string.isRequired
166
+ dropdownMaxHeight: _propTypes["default"].number
181
167
  };
182
168
  Dropdown.defaultProps = {
183
169
  selected: null,
@@ -3,7 +3,7 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.getFilteredMultipleDataCombo = exports.getFilteredSimpleDataCombo = exports.getDropdownItemCssClass = exports.contentClass = void 0;
6
+ exports.returnDropdownDynamicStyles = exports.getFilteredMultipleDataCombo = exports.getFilteredSimpleDataCombo = exports.getDropdownItemCssClass = exports.contentClass = void 0;
7
7
 
8
8
  var contentClass = function contentClass(props) {
9
9
  return "content ".concat(props.showClearButton ? '' : 'noclear');
@@ -42,4 +42,67 @@ var getFilteredMultipleDataCombo = function getFilteredMultipleDataCombo(_ref2)
42
42
  });
43
43
  };
44
44
 
45
- exports.getFilteredMultipleDataCombo = getFilteredMultipleDataCombo;
45
+ exports.getFilteredMultipleDataCombo = getFilteredMultipleDataCombo;
46
+
47
+ var returnDropdownPosition = function returnDropdownPosition(_ref3) {
48
+ var selectFieldRects = _ref3.selectFieldRects,
49
+ dropdownRef = _ref3.dropdownRef,
50
+ dropdownRects = _ref3.dropdownRects;
51
+ var aboveDropdown = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
52
+ var DEFAULT_MARGIN_BOTTOM = 10;
53
+
54
+ if (aboveDropdown) {
55
+ return selectFieldRects.top + window.scrollY - (dropdownRef.current && dropdownRects.height) - DEFAULT_MARGIN_BOTTOM;
56
+ }
57
+
58
+ return selectFieldRects.top + window.scrollY + selectFieldRects.height;
59
+ };
60
+
61
+ var returnDropdownDynamicStyles = function returnDropdownDynamicStyles(_ref4) {
62
+ var selectFieldRef = _ref4.selectFieldRef,
63
+ dropdownMaxHeight = _ref4.dropdownMaxHeight,
64
+ dropdownRef = _ref4.dropdownRef;
65
+ var selectFieldRects = selectFieldRef.current.getBoundingClientRect();
66
+ var dropdownRects = dropdownRef.current && dropdownRef.current.getBoundingClientRect();
67
+ var dropdownBottomDistance = window.innerHeight - selectFieldRects.bottom;
68
+ var bottomOffset = 30;
69
+ var maxDropdownBottomDistance = 200;
70
+ var height = dropdownMaxHeight;
71
+ var dropdownPosition;
72
+
73
+ if (!height || height <= 0) {
74
+ if (dropdownBottomDistance < maxDropdownBottomDistance) {
75
+ height = selectFieldRects.top;
76
+ dropdownPosition = returnDropdownPosition({
77
+ selectFieldRects: selectFieldRects,
78
+ dropdownRef: dropdownRef,
79
+ dropdownRects: dropdownRects
80
+ }, true);
81
+ } else {
82
+ height = dropdownBottomDistance;
83
+ dropdownPosition = returnDropdownPosition({
84
+ selectFieldRects: selectFieldRects
85
+ });
86
+ }
87
+ } else {
88
+ maxDropdownBottomDistance = height;
89
+
90
+ if (dropdownBottomDistance < maxDropdownBottomDistance) {
91
+ dropdownPosition = returnDropdownPosition({
92
+ selectFieldRects: selectFieldRects,
93
+ dropdownRef: dropdownRef,
94
+ dropdownRects: dropdownRects
95
+ }, true);
96
+ } else {
97
+ dropdownPosition = returnDropdownPosition(selectFieldRects);
98
+ }
99
+ }
100
+
101
+ return {
102
+ maxHeight: height - bottomOffset,
103
+ top: dropdownPosition,
104
+ left: selectFieldRects.left
105
+ };
106
+ };
107
+
108
+ exports.returnDropdownDynamicStyles = returnDropdownDynamicStyles;
@@ -83,6 +83,7 @@ var MultipleSelect = /*#__PURE__*/function (_Component) {
83
83
 
84
84
  _this.componentId = "select-component".concat(_uuid["default"].v1());
85
85
  _this.componentRef = /*#__PURE__*/_react["default"].createRef();
86
+ _this.dropdownRef = /*#__PURE__*/_react["default"].createRef();
86
87
  _this.state = {
87
88
  valueFromProps: null,
88
89
  dataCombo: props.dataSource,
@@ -142,10 +143,11 @@ var MultipleSelect = /*#__PURE__*/function (_Component) {
142
143
  }, {
143
144
  key: "onClickOutside",
144
145
  value: function onClickOutside(event) {
145
- var selectWrapper = this.selectWrapper;
146
+ var selectWrapper = this.selectWrapper,
147
+ dropdownRef = this.dropdownRef;
146
148
  var target = event.target;
147
149
 
148
- if (target !== selectWrapper && !selectWrapper.contains(target)) {
150
+ if (target !== selectWrapper && !selectWrapper.contains(target) && dropdownRef.current && !dropdownRef.current.contains(target)) {
149
151
  this.setState({
150
152
  opened: false
151
153
  });
@@ -363,6 +365,7 @@ var MultipleSelect = /*#__PURE__*/function (_Component) {
363
365
  handleOnUnselect: this.onUnselect
364
366
  }))), opened && /*#__PURE__*/_react["default"].createElement(_Dropdown["default"], _extends({}, this.state, this.props, {
365
367
  selectFieldRef: this.componentRef,
368
+ dropdownRef: this.dropdownRef,
366
369
  gridWrapperStyle: gridLayout ? window.getComputedStyle(this.gridEl) : undefined,
367
370
  handleOnSelect: this.onSelect,
368
371
  handleOnFilter: this.onFilter,
@@ -78,6 +78,7 @@ var SimpleSelect = /*#__PURE__*/function (_Component) {
78
78
  onDenied: undefined,
79
79
  isTyping: false
80
80
  };
81
+ _this.dropdownRef = /*#__PURE__*/_react["default"].createRef();
81
82
  _this.componentId = "select-component".concat(_uuid["default"].v1());
82
83
  _this.componentRef = /*#__PURE__*/_react["default"].createRef();
83
84
  return _this;
@@ -152,6 +153,7 @@ var SimpleSelect = /*#__PURE__*/function (_Component) {
152
153
  }))
153
154
  })), opened && /*#__PURE__*/_react["default"].createElement(_Dropdown["default"], _extends({}, this.state, this.props, {
154
155
  selectFieldRef: this.componentRef,
156
+ dropdownRef: this.dropdownRef,
155
157
  gridWrapperStyle: gridLayout ? window.getComputedStyle(this.gridEl) : undefined,
156
158
  handleOnSelect: this.onSelect,
157
159
  handleOnFilter: this.onFilter,
@@ -227,10 +229,11 @@ var _initialiseProps = function _initialiseProps() {
227
229
  enumerable: true,
228
230
  writable: true,
229
231
  value: function value(event) {
230
- var selectWrapper = _this3.selectWrapper;
232
+ var selectWrapper = _this3.selectWrapper,
233
+ dropdownRef = _this3.dropdownRef;
231
234
  var target = event.target;
232
235
 
233
- if (target !== selectWrapper && !selectWrapper.contains(target)) {
236
+ if (target !== selectWrapper && !selectWrapper.contains(target) && dropdownRef.current && !dropdownRef.current.contains(target)) {
234
237
  _this3.setState({
235
238
  opened: false
236
239
  });
@@ -200,8 +200,8 @@ Table.defaultProps = {
200
200
  bodyScrollable: false,
201
201
  skeletonize: false,
202
202
  strict: false,
203
- skeletonInRows: 10,
204
- skeletonInHeader: false
203
+ skeletonInRows: undefined,
204
+ skeletonInHeader: true
205
205
  };
206
206
  var _default = Table;
207
207
  exports["default"] = _default;
@@ -27,6 +27,8 @@ var _list = _interopRequireWildcard(require("../list"));
27
27
 
28
28
  var _toolbar = _interopRequireWildcard(require("../toolbar"));
29
29
 
30
+ var _SpinnerLoading = _interopRequireDefault(require("../spinner/SpinnerLoading"));
31
+
30
32
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
31
33
 
32
34
  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); }
@@ -133,7 +135,8 @@ var TreeNode = /*#__PURE__*/function (_Component) {
133
135
  children = _this$props3.children,
134
136
  isParent = _this$props3.isParent,
135
137
  onNodeClick = _this$props3.onNodeClick,
136
- nodeMenuButtonSize = _this$props3.nodeMenuButtonSize;
138
+ nodeMenuButtonSize = _this$props3.nodeMenuButtonSize,
139
+ selectedNodeId = _this$props3.selectedNodeId;
137
140
  var node = this.state.node;
138
141
  var showNodeElements = this.state.showNodeElements;
139
142
  return /*#__PURE__*/_react["default"].createElement(_constants.TreeviewContext.Consumer, null, function (_ref) {
@@ -155,6 +158,10 @@ var TreeNode = /*#__PURE__*/function (_Component) {
155
158
  className: "treeviewitem"
156
159
  }, _this2.getSpan(), /*#__PURE__*/_react["default"].createElement("div", {
157
160
  className: "label",
161
+ style: {
162
+ textDecoration: !onNodeClick ? 'none' : null,
163
+ backgroundColor: selectedNodeId === node.id ? 'rgb(209, 209, 209)' : null
164
+ },
158
165
  ref: _this2.labelRef,
159
166
  role: "button",
160
167
  onKeyPress: null,
@@ -240,8 +247,11 @@ var _initialiseProps = function _initialiseProps() {
240
247
  enumerable: true,
241
248
  writable: true,
242
249
  value: function value() {
243
- var alwaysShowArrow = _this3.props.alwaysShowArrow;
250
+ var _this3$props = _this3.props,
251
+ alwaysShowArrow = _this3$props.alwaysShowArrow,
252
+ idsInLoading = _this3$props.idsInLoading;
244
253
  var node = _this3.state.node;
254
+ var isLoading = idsInLoading.includes(node.id);
245
255
 
246
256
  var span = /*#__PURE__*/_react["default"].createElement("noscript", null);
247
257
 
@@ -250,11 +260,17 @@ var _initialiseProps = function _initialiseProps() {
250
260
  onKeyPress: null,
251
261
  tabIndex: 0,
252
262
  role: "button",
263
+ style: isLoading ? {
264
+ marginLeft: '-30px',
265
+ marginTop: '-5px'
266
+ } : null,
253
267
  className: "opencloseicon",
254
268
  onClick: function onClick() {
255
269
  return _this3.openCloseTree(node);
256
270
  }
257
- }, /*#__PURE__*/_react["default"].createElement(_icons["default"], {
271
+ }, isLoading ? /*#__PURE__*/_react["default"].createElement(_SpinnerLoading["default"], {
272
+ size: "35px"
273
+ }) : /*#__PURE__*/_react["default"].createElement(_icons["default"], {
258
274
  name: _this3.state.isVisible ? 'up' : 'down',
259
275
  size: 10
260
276
  }));
@@ -431,7 +447,9 @@ TreeNode.propTypes = {
431
447
  onNodeClick: _propTypes["default"].func,
432
448
  handlerOnNodeOpen: _propTypes["default"].func,
433
449
  nodeElementsValidations: _propTypes["default"].object,
434
- startNodesOpened: _propTypes["default"].bool.isRequired
450
+ startNodesOpened: _propTypes["default"].bool.isRequired,
451
+ idsInLoading: _propTypes["default"].arrayOf(_propTypes["default"].number),
452
+ selectedNodeId: _propTypes["default"].number
435
453
  };
436
454
  TreeNode.defaultProps = {
437
455
  childrenIds: [],
@@ -444,7 +462,9 @@ TreeNode.defaultProps = {
444
462
  nodeMenuButtonSize: 'small',
445
463
  onNodeClick: undefined,
446
464
  handlerOnNodeOpen: undefined,
447
- nodeElementsValidations: undefined
465
+ nodeElementsValidations: undefined,
466
+ idsInLoading: [],
467
+ selectedNodeId: undefined
448
468
  };
449
469
  TreeNode.contextType = _constants.TreeviewContext;
450
470
  var _default = TreeNode;
@@ -469,7 +469,9 @@ var TreeView = /*#__PURE__*/function (_Component) {
469
469
  nodeToolbarElements = _this$props3.nodeToolbarElements,
470
470
  nodeMenuButtonSize = _this$props3.nodeMenuButtonSize,
471
471
  alwaysShowArrow = _this$props3.alwaysShowArrow,
472
- startNodesOpened = _this$props3.startNodesOpened;
472
+ startNodesOpened = _this$props3.startNodesOpened,
473
+ idsInLoading = _this$props3.idsInLoading,
474
+ selectedNodeId = _this$props3.selectedNodeId;
473
475
  var childrenIds = [];
474
476
 
475
477
  if (node.itens && node.itens.length > 0) {
@@ -487,6 +489,7 @@ var TreeView = /*#__PURE__*/function (_Component) {
487
489
  return /*#__PURE__*/_react["default"].createElement(_Node["default"], {
488
490
  key: "node-".concat(node.id),
489
491
  node: node,
492
+ idsInLoading: idsInLoading,
490
493
  startNodesOpened: startNodesOpened,
491
494
  alwaysShowArrow: alwaysShowArrow,
492
495
  childrenIds: childrenIds,
@@ -497,6 +500,7 @@ var TreeView = /*#__PURE__*/function (_Component) {
497
500
  nodeElementsValidations: nodeElementsValidations,
498
501
  nodeMenuButtonSize: nodeMenuButtonSize,
499
502
  onNodeClick: onNodeClick,
503
+ selectedNodeId: selectedNodeId,
500
504
  handlerOnNodeOpen: _this.handleOnNodeOpen
501
505
  }, childrenIds.length > 0 && node.itens.map(function (nodeitem) {
502
506
  return _this.buildTree(nodeitem, node.id, ids);
@@ -606,7 +610,9 @@ TreeView.propTypes = {
606
610
  onNodeClick: _propTypes["default"].func,
607
611
  onNodeOpen: _propTypes["default"].func,
608
612
  nodeElementsValidations: _propTypes["default"].object,
609
- enableDynamicData: _propTypes["default"].bool
613
+ enableDynamicData: _propTypes["default"].bool,
614
+ idsInLoading: _propTypes["default"].arrayOf(_propTypes["default"].number),
615
+ selectedNodeId: _propTypes["default"].number
610
616
  };
611
617
  TreeView.defaultProps = {
612
618
  customClass: '',
@@ -628,7 +634,9 @@ TreeView.defaultProps = {
628
634
  onNodeClick: undefined,
629
635
  onNodeOpen: undefined,
630
636
  nodeElementsValidations: undefined,
631
- enableDynamicData: false
637
+ enableDynamicData: false,
638
+ idsInLoading: [],
639
+ selectedNodeId: undefined
632
640
  };
633
641
  var _default = TreeView;
634
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
  });
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "linear-react-components-ui",
3
- "version": "0.4.76-beta.25",
3
+ "version": "0.4.76-beta.28",
4
4
  "description": "Linear Sistemas ReactJs Components",
5
5
  "main": "lib/index.js",
6
6
  "scripts": {