linear-react-components-ui 0.4.76-rc.7 → 0.4.76
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/.husky/pre-commit +2 -2
- package/README.md +19 -7
- package/lib/assets/styles/button.scss +19 -10
- package/lib/assets/styles/checkbox.scss +92 -70
- package/lib/assets/styles/commons.scss +36 -0
- package/lib/assets/styles/drawers.scss +22 -6
- package/lib/assets/styles/dropdown.scss +3 -0
- package/lib/assets/styles/effects.scss +20 -0
- package/lib/assets/styles/gridlayout.scss +2 -1
- package/lib/assets/styles/input.scss +21 -0
- package/lib/assets/styles/label.scss +9 -1
- package/lib/assets/styles/list.scss +8 -0
- package/lib/assets/styles/panel.scss +4 -1
- package/lib/assets/styles/radio.scss +19 -0
- package/lib/assets/styles/select.scss +3 -3
- package/lib/assets/styles/sidenav.scss +11 -1
- package/lib/assets/styles/skeleton.scss +48 -0
- package/lib/assets/styles/table.scss +17 -5
- package/lib/assets/styles/tabs.scss +51 -44
- package/lib/assets/styles/treeview.scss +9 -0
- package/lib/assets/styles/uitour.scss +112 -0
- package/lib/buttons/DefaultButton.js +7 -4
- package/lib/buttons/split_button/index.js +8 -4
- package/lib/checkbox/Label.js +1 -1
- package/lib/checkbox/checkbox.spec.js +16 -16
- package/lib/checkbox/index.js +16 -9
- package/lib/dialog/form/index.js +10 -3
- package/lib/drawer/Drawer.js +9 -5
- package/lib/drawer/Header.js +15 -5
- package/lib/dropdown/Popup.js +3 -2
- package/lib/form/FieldNumber.js +1 -1
- package/lib/form/FieldPeriod.js +1 -1
- package/lib/form/form.spec.js +8 -0
- package/lib/form/helpers.js +12 -1
- package/lib/form/index.js +61 -47
- package/lib/form/withFieldHOC.js +3 -1
- package/lib/icons/helper.js +8 -0
- package/lib/inputs/base/InputTextBase.js +40 -6
- package/lib/inputs/base/helpers.js +15 -3
- package/lib/inputs/date/Dropdown.js +3 -3
- package/lib/inputs/date/date.spec.js +46 -36
- package/lib/inputs/date/helpers.js +36 -0
- package/lib/inputs/date/index.js +12 -10
- package/lib/inputs/mask/Phone.js +10 -1
- package/lib/inputs/mask/imaskHOC.js +2 -1
- package/lib/inputs/mask/input_mask.spec.js +21 -4
- package/lib/inputs/search/index.js +2 -0
- package/lib/inputs/select/Dropdown.js +51 -61
- package/lib/inputs/select/helper.js +65 -2
- package/lib/inputs/select/multiple/index.js +8 -5
- package/lib/inputs/select/simple/index.js +9 -6
- package/lib/internals/constants.js +4 -3
- package/lib/internals/withTooltip.js +14 -11
- package/lib/labels/DefaultLabel.js +7 -4
- package/lib/list/Item.js +35 -9
- package/lib/list/helpers.js +8 -3
- package/lib/list/index.js +161 -13
- package/lib/list/list.spec.js +259 -102
- package/lib/menus/sidenav/NavMenuItem.js +17 -8
- package/lib/menus/sidenav/index.js +53 -84
- package/lib/menus/sidenav/popup_menu_search/index.js +25 -16
- package/lib/menus/sidenav/sidenav.spec.js +86 -19
- package/lib/panel/Header.js +4 -3
- package/lib/radio/index.js +9 -6
- package/lib/skeleton/SkeletonContainer.js +42 -0
- package/lib/skeleton/index.js +84 -0
- package/lib/table/Body.js +55 -11
- package/lib/table/Header.js +14 -1
- package/lib/table/HeaderColumn.js +26 -3
- package/lib/table/Row.js +18 -7
- package/lib/table/RowColumn.js +23 -3
- package/lib/table/helpers.js +11 -1
- package/lib/table/index.js +41 -8
- package/lib/tabs/Menu.js +1 -11
- package/lib/tabs/MenuItems.js +9 -3
- package/lib/tabs/index.js +78 -53
- package/lib/tabs/tabs.spec.js +8 -5
- package/lib/toolbar/ButtonBar.js +30 -24
- package/lib/toolbar/LabelBar.js +22 -27
- package/lib/toolbar/helpers.js +12 -0
- package/lib/toolbar/index.js +23 -12
- package/lib/tooltip/index.js +8 -7
- package/lib/treeview/Node.js +248 -203
- package/lib/treeview/index.js +40 -20
- package/lib/treeview/treeview.spec.js +18 -0
- package/lib/uitour/helpers.js +15 -0
- package/lib/uitour/index.js +271 -0
- package/lib/uitour/uitour.spec.js +176 -0
- package/package.json +1 -1
- package/.DS_Store +0 -0
|
@@ -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
|
});
|
|
@@ -270,12 +272,12 @@ var MultipleSelect = /*#__PURE__*/function (_Component) {
|
|
|
270
272
|
|
|
271
273
|
if (e.keyCode === constants.keyCodes.ENTER) {
|
|
272
274
|
this.onSelect(selected);
|
|
273
|
-
} else if ([constants.keyCodes.
|
|
275
|
+
} else if ([constants.keyCodes.ARROW_UP, constants.keyCodes.ARROW_DOWN].includes(e.keyCode)) {
|
|
274
276
|
var index = dataSource.findIndex(function (d) {
|
|
275
277
|
return d === selected;
|
|
276
278
|
});
|
|
277
279
|
|
|
278
|
-
if (e.keyCode === constants.keyCodes.
|
|
280
|
+
if (e.keyCode === constants.keyCodes.ARROW_DOWN) {
|
|
279
281
|
index = index === dataSource.length - 1 ? 0 : index + 1;
|
|
280
282
|
} else {
|
|
281
283
|
index = index === 0 ? dataSource.length - 1 : index - 1;
|
|
@@ -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,
|
|
@@ -397,7 +400,7 @@ Object.defineProperty(MultipleSelect, "getDerivedStateFromProps", {
|
|
|
397
400
|
var dataCombo = remoteSearch ? dataSource : (0, _helper.getFilteredMultipleDataCombo)(_extends({}, props, state));
|
|
398
401
|
return {
|
|
399
402
|
dataCombo: dataCombo,
|
|
400
|
-
selected:
|
|
403
|
+
selected: dataCombo.length > 0 ? dataCombo[0] : null
|
|
401
404
|
};
|
|
402
405
|
}
|
|
403
406
|
|
|
@@ -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
|
});
|
|
@@ -385,12 +388,12 @@ var _initialiseProps = function _initialiseProps() {
|
|
|
385
388
|
e.preventDefault();
|
|
386
389
|
|
|
387
390
|
_this3.onSelect(selected);
|
|
388
|
-
} else if ([constants.keyCodes.
|
|
391
|
+
} else if ([constants.keyCodes.ARROW_UP, constants.keyCodes.ARROW_DOWN].includes(e.keyCode)) {
|
|
389
392
|
var index = dataSource.findIndex(function (d) {
|
|
390
393
|
return d[idKey] === selected[idKey];
|
|
391
394
|
});
|
|
392
395
|
|
|
393
|
-
if (e.keyCode === constants.keyCodes.
|
|
396
|
+
if (e.keyCode === constants.keyCodes.ARROW_DOWN) {
|
|
394
397
|
index = index === dataSource.length - 1 ? 0 : index + 1;
|
|
395
398
|
} else {
|
|
396
399
|
index = index === 0 ? dataSource.length - 1 : index - 1;
|
|
@@ -7,9 +7,10 @@ exports.PARA_ENGANAR_O_ESLINT_JA_QUE_TENHO_SO_UMA_CONSTANTE = exports.keyCodes =
|
|
|
7
7
|
var keyCodes = {
|
|
8
8
|
TAB: 9,
|
|
9
9
|
ENTER: 13,
|
|
10
|
-
ARROW_UP:
|
|
11
|
-
ARROW_DOWN:
|
|
12
|
-
BACKSPACE: 8
|
|
10
|
+
ARROW_UP: 38,
|
|
11
|
+
ARROW_DOWN: 40,
|
|
12
|
+
BACKSPACE: 8,
|
|
13
|
+
F: 70
|
|
13
14
|
};
|
|
14
15
|
exports.keyCodes = keyCodes;
|
|
15
16
|
var PARA_ENGANAR_O_ESLINT_JA_QUE_TENHO_SO_UMA_CONSTANTE = 1;
|
|
@@ -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
|
};
|
|
@@ -111,14 +112,15 @@ var withTooltip = function withTooltip(WrappedComponent) {
|
|
|
111
112
|
};
|
|
112
113
|
}, []);
|
|
113
114
|
(0, _react.useEffect)(function () {
|
|
114
|
-
if (targetElement.current) {
|
|
115
|
+
if (targetElement.current && tooltipElement.current) {
|
|
115
116
|
var width = tooltipDimensions.width,
|
|
116
117
|
height = tooltipDimensions.height;
|
|
117
118
|
var targetDimensions = targetElement.current.getBoundingClientRect();
|
|
118
119
|
var targetVerticalCenter = (targetDimensions.top + targetDimensions.bottom) / 2;
|
|
119
|
-
var
|
|
120
|
-
var
|
|
121
|
-
left =
|
|
120
|
+
var tooltipClientWidth = 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 <
|
|
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 -
|
|
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 <
|
|
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:
|
|
208
|
+
tooltipWidth: 'auto',
|
|
206
209
|
space: 20,
|
|
207
210
|
tooltip: '',
|
|
208
211
|
tooltipPosition: 'bottom'
|
|
@@ -48,7 +48,8 @@ var DefaultLabel = function DefaultLabel(props) {
|
|
|
48
48
|
size = props.size,
|
|
49
49
|
iconAlign = props.iconAlign,
|
|
50
50
|
bordered = props.bordered,
|
|
51
|
-
permissionAttr = props.permissionAttr
|
|
51
|
+
permissionAttr = props.permissionAttr,
|
|
52
|
+
skeletonize = props.skeletonize;
|
|
52
53
|
var options = [_permissionValidations.OPTIONS_ON_DENIED.unvisible];
|
|
53
54
|
|
|
54
55
|
var _useState = (0, _react.useState)((0, _permissionValidations.actionsOnPermissionDenied)(permissionAttr, options)),
|
|
@@ -56,7 +57,7 @@ var DefaultLabel = function DefaultLabel(props) {
|
|
|
56
57
|
onDenied = _useState2[0];
|
|
57
58
|
|
|
58
59
|
var getClass = function getClass() {
|
|
59
|
-
return "label-component ".concat(className, " ").concat(customClass, " ").concat(bordered
|
|
60
|
+
return "label-component ".concat(className, " ").concat(customClass, " ").concat(bordered ? '-bordered' : '', " ").concat(disabled ? '-disabled' : '', "\n ").concat(skeletonize ? '-skeletonized' : '', "\n ").concat(size ? "-".concat(size) : '', "\n ").concat(iconAlign ? "icon-".concat(iconAlign) : '');
|
|
60
61
|
};
|
|
61
62
|
|
|
62
63
|
var getIcon = function getIcon() {
|
|
@@ -94,7 +95,8 @@ DefaultLabel.defaultProps = {
|
|
|
94
95
|
style: {},
|
|
95
96
|
visible: true,
|
|
96
97
|
disabled: false,
|
|
97
|
-
permissionAttr: undefined
|
|
98
|
+
permissionAttr: undefined,
|
|
99
|
+
skeletonize: false
|
|
98
100
|
};
|
|
99
101
|
DefaultLabel.propTypes = {
|
|
100
102
|
customClass: _propTypes["default"].string,
|
|
@@ -109,7 +111,8 @@ DefaultLabel.propTypes = {
|
|
|
109
111
|
style: _propTypes["default"].object,
|
|
110
112
|
visible: _propTypes["default"].bool,
|
|
111
113
|
disabled: _propTypes["default"].bool,
|
|
112
|
-
permissionAttr: _propTypes["default"].oneOfType([_propTypes["default"].object, _propTypes["default"].arrayOf(_propTypes["default"].object)])
|
|
114
|
+
permissionAttr: _propTypes["default"].oneOfType([_propTypes["default"].object, _propTypes["default"].arrayOf(_propTypes["default"].object)]),
|
|
115
|
+
skeletonize: _propTypes["default"].bool
|
|
113
116
|
};
|
|
114
117
|
|
|
115
118
|
var _default = (0, _withTooltip["default"])(DefaultLabel);
|
package/lib/list/Item.js
CHANGED
|
@@ -17,10 +17,12 @@ var _icons = _interopRequireDefault(require("../icons"));
|
|
|
17
17
|
|
|
18
18
|
var _checkbox = _interopRequireDefault(require("../checkbox"));
|
|
19
19
|
|
|
20
|
-
var _helpers =
|
|
20
|
+
var _helpers = require("./helpers");
|
|
21
21
|
|
|
22
22
|
var _withDropdown = require("../dropdown/withDropdown");
|
|
23
23
|
|
|
24
|
+
var constants = _interopRequireWildcard(require("../internals/constants"));
|
|
25
|
+
|
|
24
26
|
var _permissionValidations = require("../permissionValidations");
|
|
25
27
|
|
|
26
28
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
|
|
@@ -44,7 +46,7 @@ function _iterableToArrayLimit(arr, i) { var _i = arr && (typeof Symbol !== "und
|
|
|
44
46
|
function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
|
|
45
47
|
|
|
46
48
|
var Item = function Item(props) {
|
|
47
|
-
var
|
|
49
|
+
var onClick = props.onClick,
|
|
48
50
|
leftIconName = props.leftIconName,
|
|
49
51
|
leftIcon = props.leftIcon,
|
|
50
52
|
displayCheckbox = props.displayCheckbox,
|
|
@@ -65,10 +67,13 @@ var Item = function Item(props) {
|
|
|
65
67
|
visible = props.visible,
|
|
66
68
|
permissionAttr = props.permissionAttr;
|
|
67
69
|
|
|
68
|
-
var _useContext = (0, _react.useContext)(_helpers
|
|
70
|
+
var _useContext = (0, _react.useContext)(_helpers.ListContext),
|
|
69
71
|
handleSelectItem = _useContext.handleSelectItem,
|
|
70
72
|
selectable = _useContext.selectable,
|
|
71
|
-
selectedItemId = _useContext.selectedItemId
|
|
73
|
+
selectedItemId = _useContext.selectedItemId,
|
|
74
|
+
selectedItemRef = _useContext.selectedItemRef,
|
|
75
|
+
skeletonize = _useContext.skeletonize,
|
|
76
|
+
selectOnEnter = _useContext.selectOnEnter;
|
|
72
77
|
|
|
73
78
|
var dropdownContext = (0, _react.useContext)(_withDropdown.WithDropdownContext);
|
|
74
79
|
var options = [_permissionValidations.OPTIONS_ON_DENIED.disabled, _permissionValidations.OPTIONS_ON_DENIED.unvisible];
|
|
@@ -77,6 +82,8 @@ var Item = function Item(props) {
|
|
|
77
82
|
_useState2 = _slicedToArray(_useState, 1),
|
|
78
83
|
onDenied = _useState2[0];
|
|
79
84
|
|
|
85
|
+
var history = (0, _reactRouterDom.useHistory)();
|
|
86
|
+
|
|
80
87
|
var shouldDisable = function shouldDisable() {
|
|
81
88
|
return disabled || onDenied.disabled;
|
|
82
89
|
};
|
|
@@ -97,23 +104,42 @@ var Item = function Item(props) {
|
|
|
97
104
|
return null;
|
|
98
105
|
};
|
|
99
106
|
|
|
107
|
+
var handleOnSelectItem = function handleOnSelectItem(e) {
|
|
108
|
+
if (onClick !== undefined) onClick(e, itemId);
|
|
109
|
+
if (dropdownContext) dropdownContext.handleDropdownClose();
|
|
110
|
+
if (selectable) handleSelectItem(itemId, onClick);
|
|
111
|
+
};
|
|
112
|
+
|
|
113
|
+
var onKeyDown = (0, _react.useCallback)(function (e) {
|
|
114
|
+
if ([constants.keyCodes.ENTER].includes(e.keyCode) && !skeletonize) {
|
|
115
|
+
e.preventDefault();
|
|
116
|
+
handleOnSelectItem(e);
|
|
117
|
+
if (url) history.push(url);
|
|
118
|
+
}
|
|
119
|
+
}, [url]);
|
|
120
|
+
|
|
100
121
|
var getProps = function getProps() {
|
|
101
122
|
if (shouldDisable()) return undefined;
|
|
102
|
-
if (
|
|
123
|
+
if (onClick === undefined && dropdownContext === undefined && !selectable) return null;
|
|
103
124
|
return {
|
|
104
125
|
onClick: function onClick(e) {
|
|
105
|
-
|
|
106
|
-
if (dropdownContext) dropdownContext.handleDropdownClose();
|
|
107
|
-
if (selectable) handleSelectItem(itemId, _onClick);
|
|
126
|
+
handleOnSelectItem(e);
|
|
108
127
|
},
|
|
109
|
-
onKeyDown: null,
|
|
110
128
|
role: 'button',
|
|
129
|
+
onKeyDown: selectOnEnter && onKeyDown,
|
|
111
130
|
tabIndex: '0'
|
|
112
131
|
};
|
|
113
132
|
};
|
|
114
133
|
|
|
134
|
+
(0, _react.useEffect)(function () {
|
|
135
|
+
if (selectOnEnter) document.addEventListener('keydown', onKeyDown);
|
|
136
|
+
return function () {
|
|
137
|
+
document.removeEventListener('keydown', onKeyDown);
|
|
138
|
+
};
|
|
139
|
+
}, []);
|
|
115
140
|
if (!visible || onDenied.unvisible) return null;
|
|
116
141
|
return /*#__PURE__*/_react["default"].createElement("li", _extends({
|
|
142
|
+
ref: itemId && selectedItemId === itemId ? selectedItemRef : null,
|
|
117
143
|
style: style,
|
|
118
144
|
className: "item-container ".concat(hovered && 'hovered', "\n ").concat(itemId && selectedItemId === itemId ? '-activedlist' : '')
|
|
119
145
|
}, getProps(), {
|
package/lib/list/helpers.js
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
exports
|
|
6
|
+
exports.LIST_ITEMS_TYPES = exports.ListContext = void 0;
|
|
7
7
|
|
|
8
8
|
var _react = _interopRequireDefault(require("react"));
|
|
9
9
|
|
|
@@ -11,5 +11,10 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "d
|
|
|
11
11
|
|
|
12
12
|
var ListContext = /*#__PURE__*/_react["default"].createContext();
|
|
13
13
|
|
|
14
|
-
|
|
15
|
-
|
|
14
|
+
exports.ListContext = ListContext;
|
|
15
|
+
var LIST_ITEMS_TYPES = {
|
|
16
|
+
listHeader: 'Header',
|
|
17
|
+
listItem: 'Item',
|
|
18
|
+
listSeparator: 'Separator'
|
|
19
|
+
};
|
|
20
|
+
exports.LIST_ITEMS_TYPES = LIST_ITEMS_TYPES;
|
package/lib/list/index.js
CHANGED
|
@@ -33,11 +33,15 @@ var _Header = _interopRequireDefault(require("./Header"));
|
|
|
33
33
|
|
|
34
34
|
var _Item = _interopRequireDefault(require("./Item"));
|
|
35
35
|
|
|
36
|
+
var constants = _interopRequireWildcard(require("../internals/constants"));
|
|
37
|
+
|
|
38
|
+
var _skeleton = _interopRequireDefault(require("../skeleton"));
|
|
39
|
+
|
|
36
40
|
var _Separator = _interopRequireDefault(require("./Separator"));
|
|
37
41
|
|
|
38
42
|
require("../assets/styles/list.scss");
|
|
39
43
|
|
|
40
|
-
var _helpers =
|
|
44
|
+
var _helpers = require("./helpers");
|
|
41
45
|
|
|
42
46
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
|
|
43
47
|
|
|
@@ -58,37 +62,173 @@ function _iterableToArrayLimit(arr, i) { var _i = arr && (typeof Symbol !== "und
|
|
|
58
62
|
function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
|
|
59
63
|
|
|
60
64
|
var List = function List(props) {
|
|
61
|
-
var
|
|
62
|
-
customClass = props.customClass,
|
|
65
|
+
var customClass = props.customClass,
|
|
63
66
|
condensed = props.condensed,
|
|
64
67
|
transparent = props.transparent,
|
|
65
68
|
style = props.style,
|
|
66
69
|
selectable = props.selectable,
|
|
67
|
-
onSelectItem = props.onSelectItem
|
|
70
|
+
onSelectItem = props.onSelectItem,
|
|
71
|
+
skeletonize = props.skeletonize,
|
|
72
|
+
skeletonItens = props.skeletonItens,
|
|
73
|
+
skeletonHeight = props.skeletonHeight,
|
|
74
|
+
children = props.children,
|
|
75
|
+
selectOnEnter = props.selectOnEnter;
|
|
76
|
+
var selectedItemRef = (0, _react.useRef)(null);
|
|
77
|
+
var listRef = (0, _react.useRef)(null);
|
|
68
78
|
|
|
69
79
|
var _useState = (0, _react.useState)(''),
|
|
70
80
|
_useState2 = _slicedToArray(_useState, 2),
|
|
71
81
|
selectedItemId = _useState2[0],
|
|
72
82
|
setSelectedItemId = _useState2[1];
|
|
73
83
|
|
|
84
|
+
var _useState3 = (0, _react.useState)([]),
|
|
85
|
+
_useState4 = _slicedToArray(_useState3, 2),
|
|
86
|
+
itensId = _useState4[0],
|
|
87
|
+
setItensId = _useState4[1];
|
|
88
|
+
|
|
89
|
+
var _useState5 = (0, _react.useState)(children),
|
|
90
|
+
_useState6 = _slicedToArray(_useState5, 2),
|
|
91
|
+
newChildren = _useState6[0],
|
|
92
|
+
setNewChildren = _useState6[1];
|
|
93
|
+
|
|
74
94
|
var contextValues = {
|
|
75
95
|
selectable: selectable,
|
|
76
96
|
selectedItemId: selectedItemId,
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
97
|
+
selectedItemRef: selectedItemRef,
|
|
98
|
+
selectOnEnter: selectOnEnter,
|
|
99
|
+
children: children,
|
|
100
|
+
skeletonize: skeletonize,
|
|
101
|
+
handleSelectItem: function handleSelectItem(itemId, onClick) {
|
|
102
|
+
if (!onSelectItem && onClick) setSelectedItemId(itemId);
|
|
103
|
+
if (onSelectItem) onSelectItem(itemId);
|
|
80
104
|
}
|
|
81
105
|
};
|
|
106
|
+
|
|
107
|
+
var onKeyDown = function onKeyDown(e) {
|
|
108
|
+
if ([constants.keyCodes.ARROW_DOWN, constants.keyCodes.ARROW_UP].includes(e.keyCode) && !skeletonize) {
|
|
109
|
+
e.preventDefault();
|
|
110
|
+
|
|
111
|
+
if (e.keyCode === constants.keyCodes.ARROW_DOWN) {
|
|
112
|
+
if (selectedItemId === itensId[itensId.length - 1]) {
|
|
113
|
+
setSelectedItemId(itensId[0]);
|
|
114
|
+
} else {
|
|
115
|
+
var index = itensId.indexOf(selectedItemId === '' ? '0' : selectedItemId);
|
|
116
|
+
setSelectedItemId(itensId[index + 1]);
|
|
117
|
+
}
|
|
118
|
+
} else if (e.keyCode === constants.keyCodes.ARROW_UP) {
|
|
119
|
+
if (selectedItemId === itensId[0]) {
|
|
120
|
+
setSelectedItemId(itensId[itensId.length - 1]);
|
|
121
|
+
} else {
|
|
122
|
+
var _index = itensId.indexOf(selectedItemId);
|
|
123
|
+
|
|
124
|
+
setSelectedItemId(itensId[_index - 1]);
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
return selectedItemRef.current && selectedItemRef.current.focus();
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
return null;
|
|
132
|
+
};
|
|
133
|
+
|
|
134
|
+
var getSkeleton = function getSkeleton() {
|
|
135
|
+
var length = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 1;
|
|
136
|
+
var maxSkeletonsItensExceeded = 2;
|
|
137
|
+
var skeletonItensCount = length > skeletonItens ? maxSkeletonsItensExceeded : Math.floor(skeletonItens / length);
|
|
138
|
+
var skeletonItensList = Array.from(Array(skeletonItensCount).keys());
|
|
139
|
+
return /*#__PURE__*/_react["default"].createElement("div", {
|
|
140
|
+
className: "skeleton-transparency"
|
|
141
|
+
}, skeletonItensList.map(function (id) {
|
|
142
|
+
return /*#__PURE__*/_react["default"].createElement(_Item["default"], {
|
|
143
|
+
key: id,
|
|
144
|
+
hovered: false,
|
|
145
|
+
style: {
|
|
146
|
+
pointerEvents: 'none'
|
|
147
|
+
}
|
|
148
|
+
}, /*#__PURE__*/_react["default"].createElement(_skeleton["default"], {
|
|
149
|
+
height: skeletonHeight,
|
|
150
|
+
style: {
|
|
151
|
+
margin: '6px 0'
|
|
152
|
+
}
|
|
153
|
+
}));
|
|
154
|
+
}));
|
|
155
|
+
};
|
|
156
|
+
|
|
157
|
+
var getNewChildren = function getNewChildren(headersChildren) {
|
|
158
|
+
return headersChildren.length > 0 ? headersChildren.map(function (item) {
|
|
159
|
+
return /*#__PURE__*/_react["default"].createElement(_react.Fragment, {
|
|
160
|
+
key: item.props.title
|
|
161
|
+
}, item, getSkeleton(headersChildren.length));
|
|
162
|
+
}) : /*#__PURE__*/_react["default"].createElement(_react.Fragment, null, headersChildren, getSkeleton());
|
|
163
|
+
};
|
|
164
|
+
|
|
165
|
+
(0, _react.useEffect)(function () {
|
|
166
|
+
if (selectedItemRef.current && listRef.current && listRef.current.scroll) {
|
|
167
|
+
var selectedItemRect = selectedItemRef.current.getBoundingClientRect();
|
|
168
|
+
var listRect = listRef.current.getBoundingClientRect();
|
|
169
|
+
var defaultScrollTop = 0;
|
|
170
|
+
var defaultBottomOffset = 100;
|
|
171
|
+
|
|
172
|
+
if (selectedItemRect.top - selectedItemRect.height > listRect.bottom) {
|
|
173
|
+
listRef.current.scroll({
|
|
174
|
+
top: selectedItemRect.top
|
|
175
|
+
});
|
|
176
|
+
} else if (selectedItemRect.top + selectedItemRect.height - listRect.y >= listRect.height) {
|
|
177
|
+
listRef.current.scroll({
|
|
178
|
+
top: listRef.current.scrollTop + selectedItemRect.height
|
|
179
|
+
});
|
|
180
|
+
} else if (selectedItemRect.bottom < defaultBottomOffset) {
|
|
181
|
+
listRef.current.scroll({
|
|
182
|
+
top: defaultScrollTop
|
|
183
|
+
});
|
|
184
|
+
} else {
|
|
185
|
+
listRef.current.scroll({
|
|
186
|
+
top: listRef.current.scrollTop - selectedItemRect.height
|
|
187
|
+
});
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
}, [selectedItemRef.current]);
|
|
191
|
+
(0, _react.useEffect)(function () {
|
|
192
|
+
if (!skeletonize) document.addEventListener('keydown', onKeyDown);
|
|
193
|
+
return function () {
|
|
194
|
+
document.removeEventListener('keydown', onKeyDown);
|
|
195
|
+
};
|
|
196
|
+
}, [skeletonize, selectedItemId, itensId]);
|
|
82
197
|
(0, _react.useEffect)(function () {
|
|
83
|
-
if (onSelectItem && props.selectedItemId)
|
|
198
|
+
if (onSelectItem && props.selectedItemId) {
|
|
199
|
+
setSelectedItemId(props.selectedItemId);
|
|
200
|
+
if (selectedItemRef.current) selectedItemRef.current.focus();
|
|
201
|
+
}
|
|
84
202
|
}, [props.selectedItemId]);
|
|
85
|
-
|
|
203
|
+
(0, _react.useEffect)(function () {
|
|
204
|
+
var newItensIds = children.length > 0 ? children.map(function (item) {
|
|
205
|
+
return item.props && item.props.itemId;
|
|
206
|
+
}).filter(Boolean) : [children.props.itemId];
|
|
207
|
+
setItensId(newItensIds);
|
|
208
|
+
}, [children]);
|
|
209
|
+
(0, _react.useEffect)(function () {
|
|
210
|
+
if (skeletonize) {
|
|
211
|
+
var headersChildren = children.type && children.type === _helpers.LIST_ITEMS_TYPES.listHeader && children;
|
|
212
|
+
|
|
213
|
+
if (children.length > 0) {
|
|
214
|
+
headersChildren = children.filter(function (item) {
|
|
215
|
+
return item.type && item.type.name === _helpers.LIST_ITEMS_TYPES.listHeader;
|
|
216
|
+
});
|
|
217
|
+
}
|
|
218
|
+
|
|
219
|
+
setNewChildren(getNewChildren(headersChildren));
|
|
220
|
+
} else {
|
|
221
|
+
setNewChildren(children);
|
|
222
|
+
}
|
|
223
|
+
}, [skeletonize, children]);
|
|
224
|
+
return /*#__PURE__*/_react["default"].createElement(_helpers.ListContext.Provider, {
|
|
86
225
|
value: contextValues
|
|
87
226
|
}, /*#__PURE__*/_react["default"].createElement("ul", {
|
|
88
227
|
"data-testid": "list-component",
|
|
89
228
|
style: style,
|
|
90
|
-
|
|
91
|
-
|
|
229
|
+
ref: listRef,
|
|
230
|
+
className: "list-component ".concat(condensed && '-condensed', "\n ").concat(customClass, " ").concat(!transparent && '-listbackground')
|
|
231
|
+
}, newChildren));
|
|
92
232
|
};
|
|
93
233
|
|
|
94
234
|
List.propTypes = {
|
|
@@ -99,7 +239,11 @@ List.propTypes = {
|
|
|
99
239
|
selectable: _propTypes["default"].bool,
|
|
100
240
|
style: _propTypes["default"].object,
|
|
101
241
|
onSelectItem: _propTypes["default"].func,
|
|
102
|
-
selectedItemId: _propTypes["default"].string
|
|
242
|
+
selectedItemId: _propTypes["default"].string,
|
|
243
|
+
skeletonize: _propTypes["default"].bool,
|
|
244
|
+
skeletonItens: _propTypes["default"].number,
|
|
245
|
+
skeletonHeight: _propTypes["default"].number,
|
|
246
|
+
selectOnEnter: _propTypes["default"].bool
|
|
103
247
|
};
|
|
104
248
|
List.defaultProps = {
|
|
105
249
|
customClass: '',
|
|
@@ -108,7 +252,11 @@ List.defaultProps = {
|
|
|
108
252
|
selectable: false,
|
|
109
253
|
style: {},
|
|
110
254
|
onSelectItem: undefined,
|
|
111
|
-
selectedItemId: ''
|
|
255
|
+
selectedItemId: '',
|
|
256
|
+
skeletonize: false,
|
|
257
|
+
skeletonItens: 5,
|
|
258
|
+
skeletonHeight: 48,
|
|
259
|
+
selectOnEnter: false
|
|
112
260
|
};
|
|
113
261
|
var _default = List;
|
|
114
262
|
exports["default"] = _default;
|