linear-react-components-ui 0.4.76-beta.33 → 0.4.76-beta.34

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`
@@ -116,6 +116,16 @@
116
116
  }
117
117
  }
118
118
 
119
+ %skeleton-transparency {
120
+ content: '';
121
+ position: absolute;
122
+ width: 100%;
123
+ height: 100%;
124
+ background: rgb(255,255,255);
125
+ background: linear-gradient( 180deg, rgba(255,255,255,0) 0%, rgba(255,255,255,0.2) 30%,
126
+ rgba(255,255,255,0.6) 70%,rgba(255,255,255,0.8) 100%);
127
+ }
128
+
119
129
  /* Efeito utilizado para o componente Skeleton */
120
130
  @keyframes shimmer {
121
131
  0% {
@@ -20,6 +20,14 @@ $item-height: 48px;
20
20
  line-height: 40px!important;
21
21
  }
22
22
  }
23
+ > .skeleton-transparency {
24
+ position: relative;
25
+ &::after {
26
+ @extend %skeleton-transparency;
27
+ top: 0;
28
+ left: 0;
29
+ }
30
+ }
23
31
  }
24
32
 
25
33
  .item-container {
@@ -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;
@@ -1,5 +1,6 @@
1
1
  @import "colors.scss";
2
2
  @import "effects.scss";
3
+ @import "commons.scss";
3
4
 
4
5
  .table-component {
5
6
  width: 100%;
@@ -23,13 +24,7 @@
23
24
  > .tbody {
24
25
  position: relative;
25
26
  &.skeleton-transparency::before {
26
- content: '';
27
- position: absolute;
28
- width: 100%;
29
- height: 100%;
30
- background: rgb(255,255,255);
31
- background: linear-gradient( 180deg, rgba(255,255,255,0) 0%, rgba(255,255,255,0.2) 30%,
32
- rgba(255,255,255,0.6) 70%,rgba(255,255,255,0.8) 100%);
27
+ @extend %skeleton-transparency;
33
28
  }
34
29
  }
35
30
  > .headercontainer > .innertable > .theader > .trow,
@@ -46,6 +41,9 @@
46
41
  vertical-align: middle;
47
42
  border-bottom: 1px solid $component-border-color-soft;
48
43
  line-height: 18px;
44
+ > .rowskeleton {
45
+ margin: 10px 0;
46
+ }
49
47
  > .hidden,
50
48
  > .rowhover {
51
49
  display: none;
@@ -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;
@@ -558,6 +558,10 @@ function getIcons() {
558
558
  tools: {
559
559
  viewbox: '0 0 20 16',
560
560
  paths: ['M7.696 11.009l2.295 2.295-1.823 2.341c-0.334 0.437-0.926 0.476-1.315 0.087l-1.586-1.586c-0.389-0.389-0.35-0.98 0.087-1.315l2.341-1.823zM19.899 4.101l-2.399 2.399-3-3 2.399-2.399c-0.289-0.066-0.59-0.101-0.899-0.101-2.209 0-4 1.791-4 4 0 0.797 0.233 1.539 0.635 2.163l-2.233 1.739-3.402-3.402 4.5-4.5h-5l-2.22 2.22-0.22-0.22h-1.061v1.061l0.22 0.22-3.22 3.22 2.5 2.5 3-3 9 9 1.5-1.5-3.902-3.902 1.739-2.233c0.624 0.402 1.366 0.635 2.163 0.635 2.209 0 4-1.791 4-4 0-0.309-0.035-0.61-0.101-0.899z']
561
+ },
562
+ checkmarkCircle: {
563
+ viewbox: '0 0 16 16',
564
+ paths: ['M8 0c-4.418 0-8 3.582-8 8s3.582 8 8 8 8-3.582 8-8-3.582-8-8-8zM6.5 12.031l-2.813-3.344 1.031-1.031 1.781 1.75 5.156-4.5 0.719 0.719-5.875 6.406z']
561
565
  }
562
566
  };
563
567
  return icons;
@@ -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
+ dropdownRef: _propTypes["default"].object.isRequired,
174
160
  currents: _propTypes["default"].arrayOf(_propTypes["default"].object),
175
161
  imageAlign: _propTypes["default"].oneOf(['left', 'right']),
176
162
  striped: _propTypes["default"].bool,
177
163
  gridWrapperStyle: _propTypes["default"].object,
178
164
  selectFieldRef: _propTypes["default"].object,
179
165
  dropdownMaxHeight: _propTypes["default"].number,
180
- inputValue: _propTypes["default"].string.isRequired
166
+ inputValue: _propTypes["default"].string
181
167
  };
182
168
  Dropdown.defaultProps = {
183
169
  selected: null,
@@ -187,7 +173,8 @@ Dropdown.defaultProps = {
187
173
  imgSrcKey: undefined,
188
174
  gridWrapperStyle: undefined,
189
175
  selectFieldRef: undefined,
190
- dropdownMaxHeight: undefined
176
+ dropdownMaxHeight: undefined,
177
+ inputValue: undefined
191
178
  };
192
179
  var _default = Dropdown;
193
180
  exports["default"] = _default;
@@ -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,
@@ -172,14 +174,14 @@ Object.defineProperty(SimpleSelect, "getDerivedStateFromProps", {
172
174
  value: function value(props, state) {
173
175
  var value = props.value,
174
176
  dataSource = props.dataSource,
177
+ descriptionKey = props.descriptionKey,
175
178
  idKey = props.idKey,
176
179
  selectFirstOnEnter = props.selectFirstOnEnter,
177
- descriptionKey = props.descriptionKey,
178
180
  remoteSearch = props.remoteSearch,
179
181
  undigitable = props.undigitable;
180
182
  var current = null;
181
183
 
182
- if (value !== state.valueFromProps) {
184
+ if (value !== state.valueFromProps && dataSource.length > 0) {
183
185
  if (value !== null) {
184
186
  current = dataSource.find(function (i) {
185
187
  return i[idKey].toString().toLowerCase() === value.toString().toLowerCase();
@@ -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
  });