linear-react-components-ui 0.4.76-beta.3 → 0.4.76-beta.32

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.
Files changed (77) hide show
  1. package/.husky/pre-commit +2 -2
  2. package/README.md +19 -7
  3. package/lib/assets/styles/button.scss +17 -10
  4. package/lib/assets/styles/checkbox.scss +92 -70
  5. package/lib/assets/styles/commons.scss +26 -0
  6. package/lib/assets/styles/drawers.scss +22 -6
  7. package/lib/assets/styles/dropdown.scss +3 -0
  8. package/lib/assets/styles/effects.scss +20 -0
  9. package/lib/assets/styles/gridlayout.scss +2 -1
  10. package/lib/assets/styles/input.scss +21 -0
  11. package/lib/assets/styles/label.scss +9 -1
  12. package/lib/assets/styles/panel.scss +4 -1
  13. package/lib/assets/styles/radio.scss +19 -0
  14. package/lib/assets/styles/select.scss +3 -3
  15. package/lib/assets/styles/skeleton.scss +48 -0
  16. package/lib/assets/styles/table.scss +22 -5
  17. package/lib/assets/styles/tabs.scss +51 -44
  18. package/lib/assets/styles/treeview.scss +4 -0
  19. package/lib/assets/styles/uitour.scss +112 -0
  20. package/lib/buttons/DefaultButton.js +7 -4
  21. package/lib/buttons/split_button/index.js +8 -4
  22. package/lib/checkbox/Label.js +1 -1
  23. package/lib/checkbox/checkbox.spec.js +16 -16
  24. package/lib/checkbox/index.js +16 -9
  25. package/lib/dialog/form/index.js +10 -3
  26. package/lib/drawer/Drawer.js +9 -5
  27. package/lib/drawer/Header.js +15 -5
  28. package/lib/dropdown/Popup.js +3 -2
  29. package/lib/form/form.spec.js +8 -0
  30. package/lib/form/helpers.js +12 -1
  31. package/lib/form/index.js +61 -47
  32. package/lib/form/withFieldHOC.js +3 -1
  33. package/lib/icons/helper.js +8 -0
  34. package/lib/inputs/base/InputTextBase.js +40 -6
  35. package/lib/inputs/base/helpers.js +15 -3
  36. package/lib/inputs/date/Dropdown.js +3 -3
  37. package/lib/inputs/date/date.spec.js +46 -36
  38. package/lib/inputs/date/helpers.js +36 -0
  39. package/lib/inputs/date/index.js +12 -10
  40. package/lib/inputs/mask/Phone.js +10 -1
  41. package/lib/inputs/mask/imaskHOC.js +2 -1
  42. package/lib/inputs/mask/input_mask.spec.js +21 -4
  43. package/lib/inputs/select/Dropdown.js +51 -61
  44. package/lib/inputs/select/helper.js +65 -2
  45. package/lib/inputs/select/multiple/index.js +6 -3
  46. package/lib/inputs/select/simple/index.js +7 -4
  47. package/lib/internals/withTooltip.js +14 -11
  48. package/lib/labels/DefaultLabel.js +7 -4
  49. package/lib/menus/sidenav/NavMenuItem.js +2 -2
  50. package/lib/radio/index.js +9 -6
  51. package/lib/skeleton/SkeletonContainer.js +42 -0
  52. package/lib/skeleton/index.js +84 -0
  53. package/lib/table/Body.js +53 -11
  54. package/lib/table/Header.js +12 -1
  55. package/lib/table/HeaderColumn.js +26 -3
  56. package/lib/table/Row.js +18 -7
  57. package/lib/table/RowColumn.js +23 -3
  58. package/lib/table/helpers.js +11 -1
  59. package/lib/table/index.js +41 -8
  60. package/lib/tabs/Menu.js +1 -11
  61. package/lib/tabs/MenuItems.js +9 -3
  62. package/lib/tabs/index.js +78 -53
  63. package/lib/tabs/tabs.spec.js +8 -5
  64. package/lib/toolbar/ButtonBar.js +30 -24
  65. package/lib/toolbar/LabelBar.js +22 -27
  66. package/lib/toolbar/helpers.js +12 -0
  67. package/lib/toolbar/index.js +23 -12
  68. package/lib/tooltip/index.js +8 -7
  69. package/lib/treeview/Node.js +252 -203
  70. package/lib/treeview/index.js +50 -22
  71. package/lib/treeview/treeview.spec.js +18 -0
  72. package/lib/uitour/helpers.js +15 -0
  73. package/lib/uitour/index.js +271 -0
  74. package/lib/uitour/uitour.spec.js +176 -0
  75. package/package.json +1 -1
  76. package/.DS_Store +0 -0
  77. package/lib/inputs/date/helper.js +0 -16
package/lib/table/Row.js CHANGED
@@ -19,6 +19,8 @@ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "functio
19
19
 
20
20
  function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
21
21
 
22
+ 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); }
23
+
22
24
  var Row = function Row(props) {
23
25
  var customClass = props.customClass,
24
26
  children = props.children,
@@ -26,18 +28,25 @@ var Row = function Row(props) {
26
28
  dataId = props.dataId,
27
29
  _onClick = props.onClick,
28
30
  height = props.height,
29
- rowBorder = props.rowBorder;
31
+ rowBorder = props.rowBorder,
32
+ style = props.style;
30
33
 
31
34
  var _useContext = (0, _react.useContext)(_helpers["default"]),
32
35
  selectedRowId = _useContext.selectedRowId,
33
36
  handleSelectRow = _useContext.handleSelectRow,
34
37
  handleTableRowClick = _useContext.handleTableRowClick,
35
- handleTableColClick = _useContext.handleTableColClick;
38
+ handleTableColClick = _useContext.handleTableColClick,
39
+ vertical = _useContext.vertical,
40
+ skeletonize = _useContext.skeletonize,
41
+ skeletonInRows = _useContext.skeletonInRows;
36
42
 
37
43
  var contextValues = {
38
44
  dataId: dataId,
39
45
  rowBorder: rowBorder,
40
- handleTableColClick: handleTableColClick
46
+ handleTableColClick: handleTableColClick,
47
+ vertical: vertical,
48
+ skeletonize: skeletonize,
49
+ skeletonInRows: skeletonInRows
41
50
  };
42
51
  return /*#__PURE__*/_react["default"].createElement(_helpers.RowContext.Provider, {
43
52
  value: contextValues
@@ -49,9 +58,9 @@ var Row = function Row(props) {
49
58
  if (_onClick) _onClick(e, dataId);
50
59
  },
51
60
  id: rowId,
52
- style: {
61
+ style: _extends({}, style, {
53
62
  height: height
54
- }
63
+ })
55
64
  }, children));
56
65
  };
57
66
 
@@ -62,7 +71,8 @@ Row.propTypes = {
62
71
  dataId: _propTypes["default"].oneOfType([_propTypes["default"].number, _propTypes["default"].string]),
63
72
  onClick: _propTypes["default"].func,
64
73
  rowBorder: _propTypes["default"].bool,
65
- height: _propTypes["default"].string
74
+ height: _propTypes["default"].string,
75
+ style: _propTypes["default"].object
66
76
  };
67
77
  Row.defaultProps = {
68
78
  customClass: '',
@@ -70,7 +80,8 @@ Row.defaultProps = {
70
80
  onClick: undefined,
71
81
  rowId: undefined,
72
82
  rowBorder: true,
73
- height: undefined
83
+ height: undefined,
84
+ style: null
74
85
  };
75
86
  var _default = Row;
76
87
  exports["default"] = _default;
@@ -13,6 +13,8 @@ var _propTypes = _interopRequireDefault(require("prop-types"));
13
13
 
14
14
  var _helpers = require("./helpers");
15
15
 
16
+ var _skeleton = _interopRequireDefault(require("../skeleton"));
17
+
16
18
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
17
19
 
18
20
  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); }
@@ -49,8 +51,28 @@ var RowColumn = function RowColumn(props) {
49
51
  textAlign = props.textAlign,
50
52
  visible = props.visible;
51
53
  var context = (0, _react.useContext)(_helpers.RowContext);
54
+ var skeletonize = context.skeletonize,
55
+ vertical = context.vertical,
56
+ skeletonInRows = context.skeletonInRows;
52
57
  var hiddenContent = displayContent !== 'always';
58
+
59
+ var renderContent = function renderContent() {
60
+ if (skeletonize && vertical) {
61
+ return /*#__PURE__*/_react["default"].createElement(_skeleton["default"], {
62
+ height: 16,
63
+ style: {
64
+ marginBottom: 0
65
+ }
66
+ });
67
+ }
68
+
69
+ return hiddenContent ? /*#__PURE__*/_react["default"].createElement("span", {
70
+ className: displayClass[displayContent]
71
+ }, props.children) : props.children;
72
+ };
73
+
53
74
  if (!visible) return null;
75
+ if (skeletonize && !skeletonInRows && !vertical) return null;
54
76
  return /*#__PURE__*/_react["default"].createElement("td", {
55
77
  className: "rowcolumn ".concat(customClass, " text-align-").concat(textAlign, " ").concat(!context.rowBorder && ' -noborder'),
56
78
  style: style,
@@ -59,9 +81,7 @@ var RowColumn = function RowColumn(props) {
59
81
  },
60
82
  role: "presentation",
61
83
  tabIndex: "-1"
62
- }, hiddenContent ? /*#__PURE__*/_react["default"].createElement("span", {
63
- className: displayClass[displayContent]
64
- }, props.children) : props.children);
84
+ }, renderContent());
65
85
  };
66
86
 
67
87
  RowColumn.propTypes = {
@@ -3,7 +3,7 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.RowContext = exports["default"] = void 0;
6
+ exports.getArrayFromNumber = exports.RowContext = exports["default"] = void 0;
7
7
 
8
8
  var _react = _interopRequireDefault(require("react"));
9
9
 
@@ -14,5 +14,15 @@ var TableContext = /*#__PURE__*/_react["default"].createContext();
14
14
  var RowContext = /*#__PURE__*/_react["default"].createContext();
15
15
 
16
16
  exports.RowContext = RowContext;
17
+
18
+ var getArrayFromNumber = function getArrayFromNumber(number) {
19
+ return Array.from({
20
+ length: number
21
+ }, function (_, i) {
22
+ return i + 1;
23
+ });
24
+ };
25
+
26
+ exports.getArrayFromNumber = getArrayFromNumber;
17
27
  var _default = TableContext;
18
28
  exports["default"] = _default;
@@ -63,6 +63,8 @@ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "functio
63
63
 
64
64
  function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
65
65
 
66
+ 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); }
67
+
66
68
  function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
67
69
 
68
70
  function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
@@ -81,18 +83,23 @@ var getClass = function getClass(_ref) {
81
83
  striped = _ref.striped,
82
84
  bordered = _ref.bordered,
83
85
  hovered = _ref.hovered,
86
+ skeletonize = _ref.skeletonize,
84
87
  headerColored = _ref.headerColored,
85
88
  condensed = _ref.condensed,
86
89
  vertical = _ref.vertical,
87
- bodyScrollable = _ref.bodyScrollable;
88
- return "table-component ".concat(customClass, " ").concat(striped && '-striped', " \n ").concat(bordered && '-bordered', " ").concat(hovered && '-hovered', " ").concat(headerColored && '-headercolor', "\n ").concat(condensed && '-condensed', "\n ").concat(vertical && '-vertical', "\n ").concat(bodyScrollable && '-scrollable');
90
+ bodyScrollable = _ref.bodyScrollable,
91
+ skeletonInRows = _ref.skeletonInRows;
92
+ return "table-component ".concat(customClass, " ").concat(striped && '-striped', " \n ").concat(bordered && '-bordered', " ").concat(hovered && '-hovered', " ").concat(headerColored && '-headercolor', "\n ").concat(condensed && '-condensed', "\n ").concat(vertical && '-vertical', "\n ").concat(skeletonize && !skeletonInRows ? '-skeletonized' : '', "\n ").concat(bodyScrollable ? '-scrollable' : '');
89
93
  };
90
94
 
91
95
  var Table = function Table(props) {
92
96
  var onColClick = props.onColClick,
93
97
  onRowClick = props.onRowClick,
94
98
  bodyScrollable = props.bodyScrollable,
95
- children = props.children;
99
+ children = props.children,
100
+ vertical = props.vertical,
101
+ skeletonize = props.skeletonize,
102
+ strict = props.strict;
96
103
 
97
104
  var _useState = (0, _react.useState)(props.selectedRowId),
98
105
  _useState2 = _slicedToArray(_useState, 2),
@@ -109,6 +116,11 @@ var Table = function Table(props) {
109
116
  columnsWidth = _useState6[0],
110
117
  setColumnsWidth = _useState6[1];
111
118
 
119
+ var _useState7 = (0, _react.useState)(undefined),
120
+ _useState8 = _slicedToArray(_useState7, 2),
121
+ columnsCount = _useState8[0],
122
+ setColumnsCount = _useState8[1];
123
+
112
124
  var bodyContainerRef = (0, _react.useRef)(undefined);
113
125
  (0, _react.useEffect)(function () {
114
126
  if (bodyScrollable && bodyContainerRef && bodyContainerRef.current) {
@@ -122,11 +134,15 @@ var Table = function Table(props) {
122
134
  (0, _react.useEffect)(function () {
123
135
  setSelectedRowId(props.selectedRowId);
124
136
  }, [props.selectedRowId]);
125
- var contextValues = {
137
+
138
+ var contextValues = _extends({}, props, {
126
139
  bodyContainerRef: bodyContainerRef,
127
- bodyScrollable: bodyScrollable,
128
140
  bodyScrollWidth: bodyScrollWidth,
129
141
  selectedRowId: selectedRowId,
142
+ vertical: vertical,
143
+ skeletonize: skeletonize,
144
+ strict: strict,
145
+ columnsCount: columnsCount,
130
146
  handleSelectRow: function handleSelectRow(selectedId) {
131
147
  setSelectedRowId(selectedId);
132
148
  },
@@ -134,13 +150,20 @@ var Table = function Table(props) {
134
150
  handleTableRowClick: onRowClick,
135
151
  handlerSetColumnsWidth: function handlerSetColumnsWidth(widths) {
136
152
  if (!_lodash["default"].isEmpty(widths) && _lodash["default"].isEmpty(columnsWidth)) setColumnsWidth(widths);
153
+ },
154
+ handlerSetColumnsCount: function handlerSetColumnsCount(count) {
155
+ return setColumnsCount(count);
137
156
  }
138
- };
157
+ });
158
+
139
159
  return /*#__PURE__*/_react["default"].createElement(_helpers["default"].Provider, {
140
160
  value: contextValues
141
161
  }, bodyScrollable ? /*#__PURE__*/_react["default"].createElement("div", {
142
162
  className: getClass(props)
143
163
  }, children) : /*#__PURE__*/_react["default"].createElement("table", {
164
+ style: {
165
+ contain: strict ? 'strict' : 'size layout style'
166
+ },
144
167
  className: getClass(props)
145
168
  }, children));
146
169
  };
@@ -157,7 +180,12 @@ Table.propTypes = {
157
180
  onColClick: _propTypes["default"].func,
158
181
  vertical: _propTypes["default"].bool,
159
182
  selectedRowId: _propTypes["default"].string,
160
- bodyScrollable: _propTypes["default"].bool
183
+ bodyScrollable: _propTypes["default"].bool,
184
+ skeletonize: _propTypes["default"].bool,
185
+ strict: _propTypes["default"].bool,
186
+ skeletonInRows: _propTypes["default"].number,
187
+ skeletonInHeader: _propTypes["default"].bool,
188
+ skeletonHeight: _propTypes["default"].number
161
189
  };
162
190
  Table.defaultProps = {
163
191
  striped: false,
@@ -170,7 +198,12 @@ Table.defaultProps = {
170
198
  onColClick: undefined,
171
199
  vertical: false,
172
200
  selectedRowId: null,
173
- bodyScrollable: false
201
+ bodyScrollable: false,
202
+ skeletonize: false,
203
+ strict: false,
204
+ skeletonInRows: 10,
205
+ skeletonInHeader: false,
206
+ skeletonHeight: 16
174
207
  };
175
208
  var _default = Table;
176
209
  exports["default"] = _default;
package/lib/tabs/Menu.js CHANGED
@@ -20,22 +20,12 @@ var Menu = function Menu(props) {
20
20
  customClassForToolBar = props.customClassForToolBar,
21
21
  menuRef = props.menuRef,
22
22
  toolBarRef = props.toolBarRef;
23
-
24
- if (!toolbar) {
25
- return /*#__PURE__*/_react["default"].createElement("div", {
26
- className: "menucontainer",
27
- ref: function ref(r) {
28
- menuRef(r);
29
- }
30
- }, /*#__PURE__*/_react["default"].createElement(_MenuItems["default"], props), /*#__PURE__*/_react["default"].createElement(_DropdownItems["default"], props));
31
- }
32
-
33
23
  return /*#__PURE__*/_react["default"].createElement("div", {
34
24
  className: "menucontainer",
35
25
  ref: function ref(r) {
36
26
  menuRef(r);
37
27
  }
38
- }, /*#__PURE__*/_react["default"].createElement(_MenuItems["default"], props), /*#__PURE__*/_react["default"].createElement(_DropdownItems["default"], props), /*#__PURE__*/_react["default"].cloneElement(toolbar, {
28
+ }, /*#__PURE__*/_react["default"].createElement(_MenuItems["default"], props), /*#__PURE__*/_react["default"].createElement(_DropdownItems["default"], props), toolbar && /*#__PURE__*/_react["default"].cloneElement(toolbar, {
39
29
  customClass: "menubar ".concat(customClassForToolBar),
40
30
  innerRef: toolBarRef ? function (r) {
41
31
  toolBarRef(r);
@@ -30,7 +30,8 @@ var MenuItems = function MenuItems(_ref) {
30
30
  tabMenuAlign = _ref.tabMenuAlign,
31
31
  firstTabIdent = _ref.firstTabIdent,
32
32
  tabMenuSize = _ref.tabMenuSize,
33
- currentPanels = _ref.currentPanels;
33
+ currentPanels = _ref.currentPanels,
34
+ tabWidth = _ref.tabWidth;
34
35
  return /*#__PURE__*/_react["default"].createElement("ul", {
35
36
  className: "menu ".concat(firstTabIdent && '-firsttabident'),
36
37
  style: helpers.menuStyles(tabMenuAlign)
@@ -50,6 +51,9 @@ var MenuItems = function MenuItems(_ref) {
50
51
  var onDenied = (0, _permissionValidations.actionsOnPermissionDenied)(permissionAttr, helpers.onDeniedOptions);
51
52
  return onDenied.unvisible ? null : /*#__PURE__*/_react["default"].createElement("li", {
52
53
  key: id,
54
+ style: {
55
+ width: tabWidth
56
+ },
53
57
  className: "menuitem ".concat(selectedTabId === id && 'selected')
54
58
  }, /*#__PURE__*/_react["default"].createElement(_buttons["default"], {
55
59
  className: "btn menubutton",
@@ -82,13 +86,15 @@ MenuItems.propTypes = {
82
86
  handlerRemovePanel: _propTypes["default"].func,
83
87
  tabMenuAlign: _propTypes["default"].string.isRequired,
84
88
  tabMenuSize: _propTypes["default"].string,
85
- firstTabIdent: _propTypes["default"].bool
89
+ firstTabIdent: _propTypes["default"].bool,
90
+ tabWidth: _propTypes["default"].oneOfType([_propTypes["default"].string, _propTypes["default"].number])
86
91
  };
87
92
  MenuItems.defaultProps = {
88
93
  handlerRemovePanel: null,
89
94
  selectedTabId: '',
90
95
  firstTabIdent: false,
91
- tabMenuSize: 'medium'
96
+ tabMenuSize: 'medium',
97
+ tabWidth: 'auto'
92
98
  };
93
99
  var _default = MenuItems;
94
100
  exports["default"] = _default;
package/lib/tabs/index.js CHANGED
@@ -53,6 +53,8 @@ function _iterableToArrayLimit(arr, i) { var _i = arr && (typeof Symbol !== "und
53
53
 
54
54
  function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
55
55
 
56
+ var DROPDOWN_WIDTH = 26;
57
+
56
58
  var Tabs = function Tabs(props) {
57
59
  var handlerTabClick = props.handlerTabClick,
58
60
  children = props.children,
@@ -60,7 +62,8 @@ var Tabs = function Tabs(props) {
60
62
  tabMenuPosition = props.tabMenuPosition,
61
63
  style = props.style,
62
64
  selectedTab = props.selectedTab,
63
- toolbar = props.toolbar;
65
+ toolbar = props.toolbar,
66
+ tabsWidthOnExceedCount = props.tabsWidthOnExceedCount;
64
67
 
65
68
  var _useState = (0, _react.useState)((0, _tabHelpers.buildPanels)(children) || []),
66
69
  _useState2 = _slicedToArray(_useState, 2),
@@ -96,18 +99,76 @@ var Tabs = function Tabs(props) {
96
99
  tabsContentWidth = _useState14[0],
97
100
  setTabsContentWidth = _useState14[1];
98
101
 
99
- var componentRef = (0, _react.useRef)();
102
+ var _useState15 = (0, _react.useState)(false),
103
+ _useState16 = _slicedToArray(_useState15, 2),
104
+ hasMenuAttributes = _useState16[0],
105
+ setHasMenuAttributes = _useState16[1];
106
+
107
+ var _useState17 = (0, _react.useState)('auto'),
108
+ _useState18 = _slicedToArray(_useState17, 2),
109
+ tabWidth = _useState18[0],
110
+ setTabWidth = _useState18[1];
111
+
112
+ var componentRef = (0, _react.useRef)(null);
113
+
114
+ var _menuRef = (0, _react.useRef)(null);
100
115
 
101
- var _menuRef = (0, _react.useRef)();
116
+ var _toolBarRef = (0, _react.useRef)(null);
117
+
118
+ var getTabListWidth = function getTabListWidth() {
119
+ var tabMenu = _menuRef.current.children[0];
120
+
121
+ var tabList = _toConsumableArray(tabMenu.children);
122
+
123
+ var tabsListWidth = tabList.reduce(function (total, tab) {
124
+ return total + tab.clientWidth;
125
+ }, 0);
126
+ return tabsListWidth;
127
+ };
128
+
129
+ var getMenuAttributes = function getMenuAttributes() {
130
+ var menuSize = _menuRef.current.clientWidth;
131
+ var toolbarSize = toolbar && _toolBarRef.current ? _toolBarRef.current.clientWidth : 0;
132
+ var contentWidth = (toolbar ? menuSize - toolbarSize : menuSize) - DROPDOWN_WIDTH;
133
+ setTabsContentWidth(contentWidth);
134
+ };
135
+
136
+ var getTabsList = function getTabsList() {
137
+ var tabsListWidth = getTabListWidth();
138
+
139
+ var newDropdownPanels = _toConsumableArray(dropdownPanels);
140
+
141
+ var newCurrentPanels = _toConsumableArray(panels);
142
+
143
+ if (newDropdownPanels.length) {
144
+ var newDropdownPanelsIds = newDropdownPanels.map(function (dd) {
145
+ return dd.props.id;
146
+ });
147
+ newCurrentPanels = newCurrentPanels.filter(function (tab) {
148
+ return !newDropdownPanelsIds.includes(tab.props.id);
149
+ });
150
+ }
151
+
152
+ if (tabsListWidth > tabsContentWidth) {
153
+ var lastPanel = newCurrentPanels[newCurrentPanels.length - 1];
154
+ newDropdownPanels.push(lastPanel);
155
+ newCurrentPanels.pop();
156
+ if (tabsWidthOnExceedCount) setTabWidth(tabsWidthOnExceedCount);
157
+ } else if (tabsListWidth + (tabsWidthOnExceedCount || 110) < tabsContentWidth && newDropdownPanels.length) {
158
+ newCurrentPanels.push(newDropdownPanels[0]);
159
+ newDropdownPanels.shift();
160
+ }
102
161
 
103
- var _toolBarRef = (0, _react.useRef)();
162
+ setCurrentPanels(newCurrentPanels);
163
+ setDropdownPanels(newDropdownPanels);
164
+ };
104
165
 
105
166
  var onMenuClick = function onMenuClick(tabId) {
106
167
  var includedInDropdown = dropdownPanels.filter(function (item) {
107
168
  return item.props.id === tabId;
108
169
  });
109
170
 
110
- if (includedInDropdown.length > 0) {
171
+ if (includedInDropdown.length > 0 && getTabListWidth() > 0) {
111
172
  var newDropdownPanels = dropdownPanels.filter(function (item) {
112
173
  return item.props.id !== tabId;
113
174
  });
@@ -148,58 +209,20 @@ var Tabs = function Tabs(props) {
148
209
  if (handlerCloseTab) handlerCloseTab(closedPanelId, newSelectedTabId);
149
210
  };
150
211
 
151
- var getMenuAttributes = function getMenuAttributes() {
152
- var menuSize = _menuRef.current.clientWidth;
153
- var dropdownWidth = dropdownPanels.length > 0 ? _menuRef.current.children[1].clientWidth : 0;
154
- var toolbarSize = toolbar && _toolBarRef ? _toolBarRef.current.clientWidth : 0;
155
- var contentWidth = (toolbar ? menuSize - toolbarSize : menuSize) - dropdownWidth;
156
- setTabsContentWidth(contentWidth);
157
- };
158
-
159
- var getTabsList = function getTabsList() {
160
- var tabMenu = _menuRef.current.children[0];
161
-
162
- var tabList = _toConsumableArray(tabMenu.children);
163
-
164
- var tabsListWidth = tabList.reduce(function (total, tab) {
165
- return total + tab.clientWidth;
166
- }, 0);
167
-
168
- var dropdownTabs = _toConsumableArray(dropdownPanels);
169
-
170
- var currentTabs = _toConsumableArray(panels);
171
-
172
- if (dropdownTabs.length) {
173
- var dropDownTabsIds = dropdownTabs.map(function (dd) {
174
- return dd.props.id;
175
- });
176
- currentTabs = currentTabs.filter(function (tab) {
177
- return !dropDownTabsIds.includes(tab.props.id);
178
- });
179
- }
180
-
181
- if (tabsListWidth > tabsContentWidth) {
182
- var lastPanel = currentTabs[currentTabs.length - 1];
183
- dropdownTabs.push(lastPanel);
184
- currentTabs.pop();
185
- } else if (tabsListWidth + 110 < tabsContentWidth && dropdownTabs.length) {
186
- currentTabs.push(dropdownTabs[0]);
187
- dropdownTabs.shift();
188
- }
189
-
190
- setCurrentPanels(currentTabs);
191
- setDropdownPanels(dropdownTabs);
192
- };
193
-
194
212
  var onResize = function onResize() {
195
213
  if (componentRef.current && _menuRef.current) {
196
214
  setContentHeight(componentRef.current.offsetHeight - _menuRef.current.offsetHeight);
197
- getMenuAttributes();
215
+
216
+ if (!hasMenuAttributes && _menuRef.current && _menuRef.current.clientWidth > 0) {
217
+ getMenuAttributes();
218
+ setHasMenuAttributes(true);
219
+ }
198
220
  }
199
221
  };
200
222
 
201
223
  var renderContent = function renderContent() {
202
224
  var menu = /*#__PURE__*/_react["default"].createElement(_Menu["default"], _extends({}, props, {
225
+ tabWidth: tabWidth,
203
226
  menuRef: function menuRef(ref) {
204
227
  _menuRef.current = ref;
205
228
  },
@@ -231,14 +254,14 @@ var Tabs = function Tabs(props) {
231
254
  return function () {
232
255
  return window.removeEventListener('resize', onResize);
233
256
  };
234
- }, []);
257
+ }, [_menuRef.current, tabMenuPosition]);
235
258
  (0, _react.useEffect)(function () {
236
259
  if (selectedTab) setSelectedTabId(selectedTab);
237
260
  if (children) setPanels((0, _tabHelpers.buildPanels)(children));
238
261
  }, [selectedTab, children]);
239
262
  (0, _react.useEffect)(function () {
240
263
  getTabsList();
241
- }, [panels.length, currentPanels.length]);
264
+ }, [panels.length, currentPanels.length, tabsContentWidth]);
242
265
 
243
266
  var getContextValues = function getContextValues() {
244
267
  return {
@@ -268,7 +291,8 @@ Tabs.propTypes = {
268
291
  children: _propTypes["default"].any.isRequired,
269
292
  toolbar: _propTypes["default"].object,
270
293
  customClassForToolBar: _propTypes["default"].string,
271
- style: _propTypes["default"].object
294
+ style: _propTypes["default"].object,
295
+ tabsWidthOnExceedCount: _propTypes["default"].number
272
296
  };
273
297
  Tabs.defaultProps = {
274
298
  selectedTab: null,
@@ -279,7 +303,8 @@ Tabs.defaultProps = {
279
303
  handlerCloseTab: null,
280
304
  toolbar: undefined,
281
305
  customClassForToolBar: '',
282
- style: {}
306
+ style: {},
307
+ tabsWidthOnExceedCount: 0
283
308
  };
284
309
  var _default = Tabs;
285
310
  exports["default"] = _default;
@@ -135,7 +135,7 @@ describe('Tabs', function () {
135
135
  container = _render10.container;
136
136
 
137
137
  expect(container.querySelector('.tabs-component')).toHaveClass('menu-bottom');
138
- expect(container.querySelector('.tabs-component').lastChild).toHaveClass('menu');
138
+ expect(container.querySelector('.tabs-component').lastChild).toHaveClass('menucontainer');
139
139
  });
140
140
  it('should apply tabMenuAlign', function () {
141
141
  var _render11 = (0, _react2.render)(tabsMockRender({
@@ -328,7 +328,8 @@ describe('Tabs', function () {
328
328
  })),
329
329
  container = _render23.container;
330
330
 
331
- expect(container.querySelector('ul.menu li.menuitem button')).not.toHaveAttribute('disabled');
331
+ var noPermissionComponent = container.querySelector('.no-permission-component');
332
+ expect(noPermissionComponent).toBeFalsy();
332
333
  });
333
334
  it('should check permission and be unavailable', function () {
334
335
  Object.defineProperty(window, 'sessionStorage', {
@@ -336,11 +337,13 @@ describe('Tabs', function () {
336
337
  });
337
338
 
338
339
  var _render24 = (0, _react2.render)(tabsMockRender({}, {
339
- permissionAttr: (0, _storageMock.permissionAttrMockUnauthorized)('disabled')
340
+ permissionAttr: (0, _storageMock.permissionAttrMockUnauthorized)('hideContent')
340
341
  })),
341
- container = _render24.container;
342
+ container = _render24.container; // debug();
342
343
 
343
- expect(container.querySelector('ul.menu li.menuitem button')).toHaveAttribute('disabled');
344
+
345
+ var noPermissionComponent = container.querySelector('.no-permission-component');
346
+ expect(noPermissionComponent).toBeTruthy();
344
347
  });
345
348
  });
346
349
  });
@@ -7,43 +7,49 @@ Object.defineProperty(exports, "__esModule", {
7
7
  });
8
8
  exports["default"] = void 0;
9
9
 
10
- var _react = _interopRequireDefault(require("react"));
10
+ var _react = _interopRequireWildcard(require("react"));
11
11
 
12
12
  var _propTypes = _interopRequireDefault(require("prop-types"));
13
13
 
14
14
  var _buttons = _interopRequireWildcard(require("../buttons"));
15
15
 
16
+ var _helpers = _interopRequireDefault(require("./helpers"));
17
+
18
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
19
+
16
20
  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); }
17
21
 
18
22
  function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
19
23
 
20
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
21
-
22
24
  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); }
23
25
 
24
- var getProps = function getProps(props) {
25
- return _extends({}, props, {
26
- boxShadow: false,
27
- customClass: "buttonbar ".concat(props.customClass)
28
- });
29
- };
30
-
31
26
  var ButtonBar = function ButtonBar(props) {
27
+ var _useContext = (0, _react.useContext)(_helpers["default"]),
28
+ skeletonize = _useContext.skeletonize;
29
+
30
+ var getProps = function getProps() {
31
+ return _extends({}, props, {
32
+ skeletonize: skeletonize,
33
+ boxShadow: false,
34
+ customClass: "buttonbar ".concat(props.customClass)
35
+ });
36
+ };
37
+
32
38
  return {
33
- "default": /*#__PURE__*/_react["default"].createElement(_buttons["default"], getProps(props)),
34
- primary: /*#__PURE__*/_react["default"].createElement(_buttons.PrimaryButton, getProps(props)),
35
- danger: /*#__PURE__*/_react["default"].createElement(_buttons.DangerButton, getProps(props)),
36
- info: /*#__PURE__*/_react["default"].createElement(_buttons.InfoButton, getProps(props)),
37
- success: /*#__PURE__*/_react["default"].createElement(_buttons.SuccessButton, getProps(props)),
38
- warning: /*#__PURE__*/_react["default"].createElement(_buttons.WarningButton, getProps(props)),
39
- add: /*#__PURE__*/_react["default"].createElement(_buttons.AddButton, getProps(props)),
40
- cancel: /*#__PURE__*/_react["default"].createElement(_buttons.CancelButton, getProps(props)),
41
- destroy: /*#__PURE__*/_react["default"].createElement(_buttons.DestroyButton, getProps(props)),
42
- edit: /*#__PURE__*/_react["default"].createElement(_buttons.EditButton, getProps(props)),
43
- save: /*#__PURE__*/_react["default"].createElement(_buttons.SaveButton, getProps(props)),
44
- activate: /*#__PURE__*/_react["default"].createElement(_buttons.ActivateButton, getProps(props)),
45
- inactivate: /*#__PURE__*/_react["default"].createElement(_buttons.InactivateButton, getProps(props)),
46
- restore: /*#__PURE__*/_react["default"].createElement(_buttons.RestoreButton, getProps(props))
39
+ "default": /*#__PURE__*/_react["default"].createElement(_buttons["default"], getProps()),
40
+ primary: /*#__PURE__*/_react["default"].createElement(_buttons.PrimaryButton, getProps()),
41
+ danger: /*#__PURE__*/_react["default"].createElement(_buttons.DangerButton, getProps()),
42
+ info: /*#__PURE__*/_react["default"].createElement(_buttons.InfoButton, getProps()),
43
+ success: /*#__PURE__*/_react["default"].createElement(_buttons.SuccessButton, getProps()),
44
+ warning: /*#__PURE__*/_react["default"].createElement(_buttons.WarningButton, getProps()),
45
+ add: /*#__PURE__*/_react["default"].createElement(_buttons.AddButton, getProps()),
46
+ cancel: /*#__PURE__*/_react["default"].createElement(_buttons.CancelButton, getProps()),
47
+ destroy: /*#__PURE__*/_react["default"].createElement(_buttons.DestroyButton, getProps()),
48
+ edit: /*#__PURE__*/_react["default"].createElement(_buttons.EditButton, getProps()),
49
+ save: /*#__PURE__*/_react["default"].createElement(_buttons.SaveButton, getProps()),
50
+ activate: /*#__PURE__*/_react["default"].createElement(_buttons.ActivateButton, getProps()),
51
+ inactivate: /*#__PURE__*/_react["default"].createElement(_buttons.InactivateButton, getProps()),
52
+ restore: /*#__PURE__*/_react["default"].createElement(_buttons.RestoreButton, getProps())
47
53
  }[props.type];
48
54
  };
49
55