linear-react-components-ui 0.4.76-beta.32 → 0.4.76-beta.33
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 +5 -7
- package/lib/assets/styles/select.scss +3 -3
- package/lib/assets/styles/sidenav.scss +11 -1
- package/lib/assets/styles/table.scss +0 -3
- package/lib/assets/styles/treeview.scss +0 -4
- package/lib/dropdown/Popup.js +2 -3
- package/lib/form/form.spec.js +0 -8
- package/lib/form/index.js +21 -40
- package/lib/icons/helper.js +0 -4
- package/lib/inputs/mask/Phone.js +1 -10
- package/lib/inputs/mask/input_mask.spec.js +4 -21
- package/lib/inputs/search/index.js +2 -0
- package/lib/inputs/select/Dropdown.js +62 -49
- package/lib/inputs/select/helper.js +2 -65
- package/lib/inputs/select/multiple/index.js +4 -7
- package/lib/inputs/select/simple/index.js +6 -9
- package/lib/internals/constants.js +4 -3
- package/lib/list/Item.js +31 -7
- package/lib/list/index.js +88 -10
- package/lib/list/list.spec.js +230 -102
- package/lib/menus/sidenav/NavMenuItem.js +15 -6
- package/lib/menus/sidenav/index.js +53 -84
- package/lib/menus/sidenav/popup_menu_search/index.js +24 -16
- package/lib/menus/sidenav/sidenav.spec.js +86 -19
- package/lib/table/Body.js +23 -31
- package/lib/table/Header.js +3 -3
- package/lib/table/index.js +3 -5
- package/lib/treeview/Node.js +5 -25
- package/lib/treeview/index.js +3 -11
- package/lib/treeview/treeview.spec.js +0 -18
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -71,16 +71,14 @@ 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
|
|
78
74
|
|
|
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
|
+
|
|
79
80
|
Fazer login no Heroku
|
|
80
81
|
`heroku login`
|
|
81
|
-
|
|
82
|
-
No diretorio da aplicação clonar
|
|
83
|
-
`heroku git:clone -a linear-react-comp-demo demo`
|
|
84
82
|
|
|
85
83
|
Executar o comando
|
|
86
84
|
`npm run deploy:heroku`
|
|
@@ -48,7 +48,7 @@
|
|
|
48
48
|
}
|
|
49
49
|
}
|
|
50
50
|
|
|
51
|
-
.
|
|
51
|
+
.select-component > .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;
|
|
61
62
|
margin-top: 2px;
|
|
63
|
+
z-index: 99999999999;
|
|
62
64
|
> .filtercontainer {
|
|
63
65
|
display: grid;
|
|
64
66
|
grid-template-columns: 1fr 20px;
|
|
65
|
-
align-items: center;
|
|
66
67
|
border: 1px solid $component-border-color;
|
|
67
68
|
margin: 4px;
|
|
68
69
|
}
|
|
69
70
|
> .filtercontainer > .filterinput {
|
|
70
71
|
border: 0;
|
|
71
|
-
width: 100%;
|
|
72
72
|
font-size: 13px;
|
|
73
73
|
text-indent: 4px;
|
|
74
74
|
padding: 10px 5px;
|
|
@@ -12,6 +12,10 @@ que utilizam. Em caso de mudança, ficar atento para os refatores.
|
|
|
12
12
|
overflow: hidden;
|
|
13
13
|
background-color: transparent;
|
|
14
14
|
border: 1px solid #eee;
|
|
15
|
+
&.-blocked {
|
|
16
|
+
opacity: 0.4;
|
|
17
|
+
pointer-events: none;
|
|
18
|
+
}
|
|
15
19
|
> .expandedmenu,
|
|
16
20
|
> .collapsedmenu {
|
|
17
21
|
height: auto;
|
|
@@ -26,10 +30,16 @@ que utilizam. Em caso de mudança, ficar atento para os refatores.
|
|
|
26
30
|
align-items: center;
|
|
27
31
|
justify-content: center;
|
|
28
32
|
padding-left: 0px;
|
|
33
|
+
> .searchmenubutton {
|
|
34
|
+
width: 100%;
|
|
35
|
+
height: 100%;
|
|
36
|
+
display: flex;
|
|
37
|
+
align-items: center;
|
|
38
|
+
justify-content: center;
|
|
39
|
+
}
|
|
29
40
|
}
|
|
30
41
|
&.-customsidenavitem:hover {
|
|
31
42
|
background-color: white;
|
|
32
|
-
cursor: text;
|
|
33
43
|
}
|
|
34
44
|
&.-disabled {
|
|
35
45
|
@extend %component-disabled;
|
|
@@ -45,8 +45,6 @@
|
|
|
45
45
|
display: flex;
|
|
46
46
|
justify-content: flex-start;
|
|
47
47
|
align-items: center;
|
|
48
|
-
min-height: 25px;
|
|
49
|
-
color: $font-color-soft;
|
|
50
48
|
>.node-menu {
|
|
51
49
|
animation: revealelement 0.3s forwards ease-in-out;
|
|
52
50
|
margin-left: 10px;
|
|
@@ -64,9 +62,7 @@
|
|
|
64
62
|
margin-left: 10px;
|
|
65
63
|
}
|
|
66
64
|
&:hover {
|
|
67
|
-
cursor: pointer;
|
|
68
65
|
background-color: rgb(209, 209, 209);
|
|
69
|
-
text-decoration: underline;
|
|
70
66
|
}
|
|
71
67
|
}
|
|
72
68
|
> .nodelist {
|
package/lib/dropdown/Popup.js
CHANGED
|
@@ -18,9 +18,8 @@ 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
|
-
|
|
23
|
-
var style = "top: ".concat(topPosition + (isFloatMenu ? 6 : 2), "px; min-width: ").concat(minWidth, "px;");
|
|
21
|
+
isFloatMenu = _ref.isFloatMenu;
|
|
22
|
+
var style = "top: ".concat(topPosition + (isFloatMenu ? 6 : 2), "px;");
|
|
24
23
|
|
|
25
24
|
if (align === 'left') {
|
|
26
25
|
style += "left: ".concat(leftPosition, "px;");
|
package/lib/form/form.spec.js
CHANGED
|
@@ -189,14 +189,6 @@ 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
|
-
});
|
|
200
192
|
});
|
|
201
193
|
describe('Field', function () {
|
|
202
194
|
describe('Default & Number', function () {
|
package/lib/form/index.js
CHANGED
|
@@ -91,8 +91,7 @@ var Form = function Form(_ref) {
|
|
|
91
91
|
onValidateForm = _ref.onValidateForm,
|
|
92
92
|
externalFieldErrors = _ref.externalFieldErrors,
|
|
93
93
|
onSubmit = _ref.onSubmit,
|
|
94
|
-
skeletonize = _ref.skeletonize
|
|
95
|
-
disabled = _ref.disabled;
|
|
94
|
+
skeletonize = _ref.skeletonize;
|
|
96
95
|
|
|
97
96
|
var _useState = (0, _react.useState)(dataSource),
|
|
98
97
|
_useState2 = _slicedToArray(_useState, 2),
|
|
@@ -232,29 +231,10 @@ var Form = function Form(_ref) {
|
|
|
232
231
|
};
|
|
233
232
|
};
|
|
234
233
|
|
|
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
|
-
|
|
252
234
|
(0, _react.useEffect)(function () {
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
if (handlerValidates) handlerValidates(checkIsValid);
|
|
257
|
-
}
|
|
235
|
+
handlerSubmit(onFormSubmit);
|
|
236
|
+
if (handlerReset) handlerReset(onReset);
|
|
237
|
+
if (handlerValidates) handlerValidates(checkIsValid);
|
|
258
238
|
}, [data]);
|
|
259
239
|
(0, _react.useEffect)(function () {
|
|
260
240
|
if (securityBeforeUnload) {
|
|
@@ -267,24 +247,27 @@ var Form = function Form(_ref) {
|
|
|
267
247
|
};
|
|
268
248
|
}, [securityBeforeUnload, onBeforeUnload]);
|
|
269
249
|
(0, _react.useEffect)(function () {
|
|
270
|
-
if (
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
setSubmitFormOnEnter(submitOnPressEnterKey);
|
|
277
|
-
}
|
|
250
|
+
if (submitOnPressEnterKey !== submitFormOnEnter || dataSource !== originalData) {
|
|
251
|
+
setData(dataSource);
|
|
252
|
+
setOriginalData(function (prevState) {
|
|
253
|
+
return prevState || dataSource;
|
|
254
|
+
});
|
|
255
|
+
setSubmitFormOnEnter(submitOnPressEnterKey);
|
|
278
256
|
}
|
|
279
257
|
}, [submitOnPressEnterKey, dataSource]);
|
|
280
258
|
return /*#__PURE__*/_react["default"].createElement(_react.Fragment, null, /*#__PURE__*/_react["default"].createElement(_helpers.FormContext.Provider, {
|
|
281
259
|
value: getContextValue()
|
|
282
|
-
}, /*#__PURE__*/_react["default"].createElement("form",
|
|
283
|
-
style: style
|
|
284
|
-
|
|
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
|
+
},
|
|
285
268
|
role: "presentation",
|
|
286
269
|
className: "form-component ".concat(customClass)
|
|
287
|
-
}
|
|
270
|
+
}, children)), /*#__PURE__*/_react["default"].createElement(_dialog.DialogQuestion, {
|
|
288
271
|
zIndex: "99999999",
|
|
289
272
|
title: securityTitle || 'Dados Alterados',
|
|
290
273
|
text: securityText || 'Você possui dados alterados, confirma o fechamento?',
|
|
@@ -310,8 +293,7 @@ Form.propTypes = {
|
|
|
310
293
|
securityTitle: _propTypes["default"].string,
|
|
311
294
|
securityText: _propTypes["default"].string,
|
|
312
295
|
externalFieldErrors: _propTypes["default"].object,
|
|
313
|
-
skeletonize: _propTypes["default"].bool
|
|
314
|
-
disabled: _propTypes["default"].bool
|
|
296
|
+
skeletonize: _propTypes["default"].bool
|
|
315
297
|
};
|
|
316
298
|
Form.defaultProps = {
|
|
317
299
|
onValidateForm: undefined,
|
|
@@ -325,8 +307,7 @@ Form.defaultProps = {
|
|
|
325
307
|
securityTitle: null,
|
|
326
308
|
securityText: null,
|
|
327
309
|
externalFieldErrors: {},
|
|
328
|
-
skeletonize: false
|
|
329
|
-
disabled: false
|
|
310
|
+
skeletonize: false
|
|
330
311
|
};
|
|
331
312
|
var _default = Form;
|
|
332
313
|
exports["default"] = _default;
|
package/lib/icons/helper.js
CHANGED
|
@@ -558,10 +558,6 @@ 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']
|
|
565
561
|
}
|
|
566
562
|
};
|
|
567
563
|
return icons;
|
package/lib/inputs/mask/Phone.js
CHANGED
|
@@ -7,8 +7,6 @@ exports["default"] = void 0;
|
|
|
7
7
|
|
|
8
8
|
var _react = _interopRequireDefault(require("react"));
|
|
9
9
|
|
|
10
|
-
var _propTypes = _interopRequireDefault(require("prop-types"));
|
|
11
|
-
|
|
12
10
|
var _BaseMask = _interopRequireDefault(require("./BaseMask"));
|
|
13
11
|
|
|
14
12
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
|
|
@@ -16,17 +14,10 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "d
|
|
|
16
14
|
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); }
|
|
17
15
|
|
|
18
16
|
var PhoneField = function PhoneField(props) {
|
|
19
|
-
var cellNumber = props.cellNumber;
|
|
20
17
|
return /*#__PURE__*/_react["default"].createElement(_BaseMask["default"], _extends({}, props, {
|
|
21
|
-
mask:
|
|
18
|
+
mask: "(00) 0000-0000"
|
|
22
19
|
}));
|
|
23
20
|
};
|
|
24
21
|
|
|
25
|
-
PhoneField.propTypes = {
|
|
26
|
-
cellNumber: _propTypes["default"].bool
|
|
27
|
-
};
|
|
28
|
-
PhoneField.defaultProps = {
|
|
29
|
-
cellNumber: false
|
|
30
|
-
};
|
|
31
22
|
var _default = PhoneField;
|
|
32
23
|
exports["default"] = _default;
|
|
@@ -562,35 +562,18 @@ 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
|
-
});
|
|
582
565
|
});
|
|
583
566
|
describe('Zip Code', function () {
|
|
584
567
|
it('should render correctly', function () {
|
|
585
|
-
var
|
|
586
|
-
container =
|
|
568
|
+
var _render38 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_.ZipCodeField, null)),
|
|
569
|
+
container = _render38.container;
|
|
587
570
|
|
|
588
571
|
expect(container.firstChild).toBeTruthy();
|
|
589
572
|
expect(container.firstChild).toHaveClass('input-base-component');
|
|
590
573
|
});
|
|
591
574
|
it('should apply zipcode mask', function () {
|
|
592
|
-
var
|
|
593
|
-
container =
|
|
575
|
+
var _render39 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_.ZipCodeField, null)),
|
|
576
|
+
container = _render39.container;
|
|
594
577
|
|
|
595
578
|
var input = container.querySelector('.input-base-component .inputwrapper .inputcontent input.textinput');
|
|
596
579
|
expect(input).toHaveValue('_____-___');
|
|
@@ -301,6 +301,7 @@ SearchField.propTypes = {
|
|
|
301
301
|
disabled: _propTypes["default"].bool,
|
|
302
302
|
readOnly: _propTypes["default"].bool,
|
|
303
303
|
value: _propTypes["default"].string,
|
|
304
|
+
placeHolder: _propTypes["default"].string,
|
|
304
305
|
permissionAttr: _propTypes["default"].oneOfType([_propTypes["default"].object, _propTypes["default"].arrayOf(_propTypes["default"].object)])
|
|
305
306
|
};
|
|
306
307
|
SearchField.defaultProps = {
|
|
@@ -312,6 +313,7 @@ SearchField.defaultProps = {
|
|
|
312
313
|
disabled: false,
|
|
313
314
|
readOnly: false,
|
|
314
315
|
value: undefined,
|
|
316
|
+
placeHolder: '',
|
|
315
317
|
permissionAttr: undefined
|
|
316
318
|
};
|
|
317
319
|
var _default = SearchField;
|
|
@@ -17,8 +17,6 @@ var _avatar = _interopRequireDefault(require("../../avatar"));
|
|
|
17
17
|
|
|
18
18
|
var helper = _interopRequireWildcard(require("./helper"));
|
|
19
19
|
|
|
20
|
-
var _Popup = _interopRequireDefault(require("../../dropdown/Popup"));
|
|
21
|
-
|
|
22
20
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
|
|
23
21
|
|
|
24
22
|
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
@@ -39,50 +37,67 @@ function _iterableToArrayLimit(arr, i) { var _i = arr && (typeof Symbol !== "und
|
|
|
39
37
|
|
|
40
38
|
function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
|
|
41
39
|
|
|
42
|
-
var
|
|
43
|
-
var
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
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)));
|
|
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;
|
|
72
53
|
}
|
|
73
|
-
}
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
}, /*#__PURE__*/_react["default"].createElement("div", {
|
|
79
|
-
className: "select-dropdown",
|
|
80
|
-
ref: dropdownRef,
|
|
81
|
-
style: {
|
|
82
|
-
width: dropdownWidth,
|
|
83
|
-
marginLeft: gridWrapperStyle ? gridWrapperStyle.paddingLeft : '0',
|
|
84
|
-
maxHeight: dropdownDynamicStyles.maxHeight
|
|
54
|
+
} else {
|
|
55
|
+
maxDropdownBottomDistance = height;
|
|
56
|
+
|
|
57
|
+
if (dropdownBottomDistance < maxDropdownBottomDistance) {
|
|
58
|
+
dropdownPosition = window.innerHeight - selectFieldRef.current.offsetTop + 10;
|
|
85
59
|
}
|
|
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({
|
|
98
|
+
width: dropdownWidth,
|
|
99
|
+
marginLeft: gridWrapperStyle ? gridWrapperStyle.paddingLeft : '0'
|
|
100
|
+
}, dropdownDynamicStyles)
|
|
86
101
|
}, searchOnDropdown && /*#__PURE__*/_react["default"].createElement("div", {
|
|
87
102
|
className: "filtercontainer"
|
|
88
103
|
}, /*#__PURE__*/_react["default"].createElement("input", {
|
|
@@ -138,7 +153,7 @@ var Dropdown = function Dropdown(props) {
|
|
|
138
153
|
}, item[descriptionKey])));
|
|
139
154
|
}), dataCombo.length === 0 && /*#__PURE__*/_react["default"].createElement("div", {
|
|
140
155
|
className: "notfound"
|
|
141
|
-
}, searchNotFoundText))
|
|
156
|
+
}, searchNotFoundText));
|
|
142
157
|
};
|
|
143
158
|
|
|
144
159
|
Dropdown.propTypes = {
|
|
@@ -156,14 +171,13 @@ Dropdown.propTypes = {
|
|
|
156
171
|
handleOnBlur: _propTypes["default"].func.isRequired,
|
|
157
172
|
handleOnFocus: _propTypes["default"].func.isRequired,
|
|
158
173
|
opened: _propTypes["default"].bool.isRequired,
|
|
159
|
-
dropdownRef: _propTypes["default"].object.isRequired,
|
|
160
174
|
currents: _propTypes["default"].arrayOf(_propTypes["default"].object),
|
|
161
175
|
imageAlign: _propTypes["default"].oneOf(['left', 'right']),
|
|
162
176
|
striped: _propTypes["default"].bool,
|
|
163
177
|
gridWrapperStyle: _propTypes["default"].object,
|
|
164
178
|
selectFieldRef: _propTypes["default"].object,
|
|
165
179
|
dropdownMaxHeight: _propTypes["default"].number,
|
|
166
|
-
inputValue: _propTypes["default"].string
|
|
180
|
+
inputValue: _propTypes["default"].string.isRequired
|
|
167
181
|
};
|
|
168
182
|
Dropdown.defaultProps = {
|
|
169
183
|
selected: null,
|
|
@@ -173,8 +187,7 @@ Dropdown.defaultProps = {
|
|
|
173
187
|
imgSrcKey: undefined,
|
|
174
188
|
gridWrapperStyle: undefined,
|
|
175
189
|
selectFieldRef: undefined,
|
|
176
|
-
dropdownMaxHeight: undefined
|
|
177
|
-
inputValue: undefined
|
|
190
|
+
dropdownMaxHeight: undefined
|
|
178
191
|
};
|
|
179
192
|
var _default = Dropdown;
|
|
180
193
|
exports["default"] = _default;
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
exports.
|
|
6
|
+
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,67 +42,4 @@ var getFilteredMultipleDataCombo = function getFilteredMultipleDataCombo(_ref2)
|
|
|
42
42
|
});
|
|
43
43
|
};
|
|
44
44
|
|
|
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;
|
|
45
|
+
exports.getFilteredMultipleDataCombo = getFilteredMultipleDataCombo;
|
|
@@ -83,7 +83,6 @@ 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();
|
|
87
86
|
_this.state = {
|
|
88
87
|
valueFromProps: null,
|
|
89
88
|
dataCombo: props.dataSource,
|
|
@@ -143,11 +142,10 @@ var MultipleSelect = /*#__PURE__*/function (_Component) {
|
|
|
143
142
|
}, {
|
|
144
143
|
key: "onClickOutside",
|
|
145
144
|
value: function onClickOutside(event) {
|
|
146
|
-
var selectWrapper = this.selectWrapper
|
|
147
|
-
dropdownRef = this.dropdownRef;
|
|
145
|
+
var selectWrapper = this.selectWrapper;
|
|
148
146
|
var target = event.target;
|
|
149
147
|
|
|
150
|
-
if (target !== selectWrapper && !selectWrapper.contains(target)
|
|
148
|
+
if (target !== selectWrapper && !selectWrapper.contains(target)) {
|
|
151
149
|
this.setState({
|
|
152
150
|
opened: false
|
|
153
151
|
});
|
|
@@ -272,12 +270,12 @@ var MultipleSelect = /*#__PURE__*/function (_Component) {
|
|
|
272
270
|
|
|
273
271
|
if (e.keyCode === constants.keyCodes.ENTER) {
|
|
274
272
|
this.onSelect(selected);
|
|
275
|
-
} else if ([constants.keyCodes.
|
|
273
|
+
} else if ([constants.keyCodes.ARROW_UP, constants.keyCodes.ARROW_DOWN].includes(e.keyCode)) {
|
|
276
274
|
var index = dataSource.findIndex(function (d) {
|
|
277
275
|
return d === selected;
|
|
278
276
|
});
|
|
279
277
|
|
|
280
|
-
if (e.keyCode === constants.keyCodes.
|
|
278
|
+
if (e.keyCode === constants.keyCodes.ARROW_DOWN) {
|
|
281
279
|
index = index === dataSource.length - 1 ? 0 : index + 1;
|
|
282
280
|
} else {
|
|
283
281
|
index = index === 0 ? dataSource.length - 1 : index - 1;
|
|
@@ -365,7 +363,6 @@ var MultipleSelect = /*#__PURE__*/function (_Component) {
|
|
|
365
363
|
handleOnUnselect: this.onUnselect
|
|
366
364
|
}))), opened && /*#__PURE__*/_react["default"].createElement(_Dropdown["default"], _extends({}, this.state, this.props, {
|
|
367
365
|
selectFieldRef: this.componentRef,
|
|
368
|
-
dropdownRef: this.dropdownRef,
|
|
369
366
|
gridWrapperStyle: gridLayout ? window.getComputedStyle(this.gridEl) : undefined,
|
|
370
367
|
handleOnSelect: this.onSelect,
|
|
371
368
|
handleOnFilter: this.onFilter,
|