linear-react-components-ui 0.4.76-beta.12 → 0.4.76-beta.13

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 (101) hide show
  1. package/.husky/pre-commit +2 -2
  2. package/.tool-versions +1 -0
  3. package/.vscode/settings.json +1 -2
  4. package/README.md +33 -0
  5. package/lib/assets/styles/button.scss +17 -10
  6. package/lib/assets/styles/checkbox.scss +92 -70
  7. package/lib/assets/styles/commons.scss +26 -0
  8. package/lib/assets/styles/drawers.scss +22 -6
  9. package/lib/assets/styles/dropdown.scss +28 -2
  10. package/lib/assets/styles/effects.scss +12 -0
  11. package/lib/assets/styles/floatMenu.scss +0 -1
  12. package/lib/assets/styles/gridlayout.scss +2 -1
  13. package/lib/assets/styles/input.scss +21 -0
  14. package/lib/assets/styles/label.scss +9 -1
  15. package/lib/assets/styles/multiSelect.scss +105 -0
  16. package/lib/assets/styles/panel.scss +5 -2
  17. package/lib/assets/styles/periodpicker.scss +65 -0
  18. package/lib/assets/styles/progress.scss +8 -1
  19. package/lib/assets/styles/radio.scss +19 -0
  20. package/lib/assets/styles/select.scss +1 -0
  21. package/lib/assets/styles/skeleton.scss +48 -0
  22. package/lib/assets/styles/table.scss +14 -5
  23. package/lib/assets/styles/tabs.scss +79 -43
  24. package/lib/assets/styles/treeview.scss +32 -0
  25. package/lib/avatar/avatar.spec.js +17 -6
  26. package/lib/avatar/index.js +1 -1
  27. package/lib/buttons/DefaultButton.js +13 -4
  28. package/lib/buttons/split_button/index.js +8 -4
  29. package/lib/checkbox/Label.js +37 -0
  30. package/lib/checkbox/checkbox.spec.js +16 -16
  31. package/lib/checkbox/index.js +33 -12
  32. package/lib/dialog/base/index.js +15 -6
  33. package/lib/dialog/form/index.js +24 -4
  34. package/lib/drawer/Drawer.js +9 -5
  35. package/lib/drawer/Header.js +15 -5
  36. package/lib/drawer/index.js +4 -1
  37. package/lib/form/Field.js +2 -0
  38. package/lib/form/FieldNumber.js +10 -2
  39. package/lib/form/FieldPeriod.js +100 -0
  40. package/lib/form/helpers.js +20 -1
  41. package/lib/form/index.js +207 -224
  42. package/lib/form/withFieldHOC.js +5 -1
  43. package/lib/form/withFormSecurity.js +106 -0
  44. package/lib/icons/helper.js +16 -0
  45. package/lib/inputs/base/InputTextBase.js +10 -5
  46. package/lib/inputs/base/helpers.js +2 -1
  47. package/lib/inputs/date/Dropdown.js +3 -3
  48. package/lib/inputs/date/date.spec.js +46 -36
  49. package/lib/inputs/date/helpers.js +36 -0
  50. package/lib/inputs/date/index.js +12 -10
  51. package/lib/inputs/mask/imaskHOC.js +2 -1
  52. package/lib/inputs/multiSelect/ActionButtons.js +68 -0
  53. package/lib/inputs/multiSelect/Dropdown.js +200 -0
  54. package/lib/inputs/multiSelect/helper.js +18 -0
  55. package/lib/inputs/multiSelect/index.js +343 -0
  56. package/lib/inputs/number/BaseNumber.js +1 -1
  57. package/lib/inputs/number/index.js +7 -5
  58. package/lib/inputs/period/Dialog.js +38 -0
  59. package/lib/inputs/period/Dropdown.js +90 -0
  60. package/lib/inputs/period/PeriodList.js +79 -0
  61. package/lib/inputs/period/helper.js +118 -0
  62. package/lib/inputs/period/index.js +490 -0
  63. package/lib/inputs/select/Dropdown.js +4 -4
  64. package/lib/inputs/select/index.js +26 -3
  65. package/lib/inputs/select/multiple/index.js +9 -7
  66. package/lib/inputs/select/simple/index.js +30 -18
  67. package/lib/internals/withTooltip.js +85 -81
  68. package/lib/labels/DefaultLabel.js +7 -4
  69. package/lib/list/Item.js +3 -3
  70. package/lib/list/index.js +20 -10
  71. package/lib/list/list.spec.js +129 -85
  72. package/lib/menus/float/MenuItem.js +25 -8
  73. package/lib/menus/sidenav/NavMenuItem.js +2 -2
  74. package/lib/menus/sidenav/index.js +7 -3
  75. package/lib/menus/sidenav/popup_menu_search/index.js +1 -1
  76. package/lib/panel/Content.js +11 -4
  77. package/lib/progress/Bar.js +40 -9
  78. package/lib/progress/index.js +12 -4
  79. package/lib/radio/index.js +9 -6
  80. package/lib/skeleton/SkeletonContainer.js +42 -0
  81. package/lib/skeleton/index.js +84 -0
  82. package/lib/spinner/index.js +6 -1
  83. package/lib/split/Split.js +5 -11
  84. package/lib/table/HeaderColumn.js +24 -3
  85. package/lib/table/Row.js +7 -3
  86. package/lib/table/RowColumn.js +22 -3
  87. package/lib/table/index.js +11 -4
  88. package/lib/tabs/DropdownItems.js +84 -0
  89. package/lib/tabs/Menu.js +18 -5
  90. package/lib/tabs/MenuItems.js +15 -9
  91. package/lib/tabs/Panel.js +1 -3
  92. package/lib/tabs/index.js +156 -22
  93. package/lib/tabs/tabs.spec.js +8 -5
  94. package/lib/toolbar/ButtonBar.js +30 -24
  95. package/lib/toolbar/LabelBar.js +22 -27
  96. package/lib/toolbar/helpers.js +12 -0
  97. package/lib/toolbar/index.js +24 -9
  98. package/lib/tooltip/index.js +20 -7
  99. package/lib/treeview/Node.js +348 -49
  100. package/lib/treeview/index.js +457 -36
  101. package/package.json +9 -8
@@ -0,0 +1,84 @@
1
+ "use strict";
2
+
3
+ function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
4
+
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports["default"] = void 0;
9
+
10
+ var _react = _interopRequireDefault(require("react"));
11
+
12
+ var _propTypes = _interopRequireDefault(require("prop-types"));
13
+
14
+ var _buttons = _interopRequireDefault(require("./../buttons"));
15
+
16
+ var _list = _interopRequireWildcard(require("../list"));
17
+
18
+ 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); }
19
+
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
+
22
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
23
+
24
+ var DropdownItems = function DropdownItems(_ref) {
25
+ var dropdownPanels = _ref.dropdownPanels,
26
+ handlerRemovePanel = _ref.handlerRemovePanel,
27
+ tabMenuSize = _ref.tabMenuSize,
28
+ handlerClick = _ref.handlerClick;
29
+ return dropdownPanels.length > 0 && /*#__PURE__*/_react["default"].createElement(_buttons["default"], {
30
+ dropdown: true,
31
+ dropdownAlign: "right",
32
+ transparent: true,
33
+ boxShadow: false,
34
+ size: "large",
35
+ customClass: "dropdownbutton"
36
+ }, /*#__PURE__*/_react["default"].createElement(_list["default"], {
37
+ customClass: "dropdown-hide-tabs"
38
+ }, dropdownPanels.map(function (panel, index) {
39
+ var _panel$props = panel.props,
40
+ id = _panel$props.id,
41
+ title = _panel$props.title,
42
+ closeable = _panel$props.closeable,
43
+ iconAlign = _panel$props.iconAlign,
44
+ icon = _panel$props.icon,
45
+ iconName = _panel$props.iconName,
46
+ disabled = _panel$props.disabled;
47
+ return /*#__PURE__*/_react["default"].createElement(_list.ListItem, {
48
+ key: id
49
+ }, /*#__PURE__*/_react["default"].createElement("div", {
50
+ className: "menuitem"
51
+ }, /*#__PURE__*/_react["default"].createElement(_buttons["default"], {
52
+ className: "btn menubutton",
53
+ boxShadow: false,
54
+ onClick: function onClick() {
55
+ return handlerClick(id);
56
+ },
57
+ iconAlign: iconAlign,
58
+ iconName: iconName,
59
+ icon: icon,
60
+ disabled: disabled,
61
+ label: title,
62
+ size: tabMenuSize,
63
+ transparent: true
64
+ }), closeable && /*#__PURE__*/_react["default"].createElement("button", {
65
+ className: "closepanel",
66
+ onClick: function onClick() {
67
+ handlerRemovePanel(id, index, true);
68
+ }
69
+ })));
70
+ })));
71
+ };
72
+
73
+ DropdownItems.propTypes = {
74
+ dropdownPanels: _propTypes["default"].arrayOf(_propTypes["default"].element).isRequired,
75
+ handlerClick: _propTypes["default"].func.isRequired,
76
+ handlerRemovePanel: _propTypes["default"].func,
77
+ tabMenuSize: _propTypes["default"].string
78
+ };
79
+ DropdownItems.defaultProps = {
80
+ handlerRemovePanel: null,
81
+ tabMenuSize: 'medium'
82
+ };
83
+ var _default = DropdownItems;
84
+ exports["default"] = _default;
package/lib/tabs/Menu.js CHANGED
@@ -11,15 +11,23 @@ var _propTypes = _interopRequireDefault(require("prop-types"));
11
11
 
12
12
  var _MenuItems = _interopRequireDefault(require("./MenuItems"));
13
13
 
14
+ var _DropdownItems = _interopRequireDefault(require("./DropdownItems"));
15
+
14
16
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
15
17
 
16
18
  var Menu = function Menu(props) {
17
19
  var toolbar = props.toolbar,
18
20
  customClassForToolBar = props.customClassForToolBar,
19
- menuRef = props.menuRef;
21
+ menuRef = props.menuRef,
22
+ toolBarRef = props.toolBarRef;
20
23
 
21
24
  if (!toolbar) {
22
- return /*#__PURE__*/_react["default"].createElement(_MenuItems["default"], props);
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));
23
31
  }
24
32
 
25
33
  return /*#__PURE__*/_react["default"].createElement("div", {
@@ -27,18 +35,23 @@ var Menu = function Menu(props) {
27
35
  ref: function ref(r) {
28
36
  menuRef(r);
29
37
  }
30
- }, /*#__PURE__*/_react["default"].createElement(_MenuItems["default"], props), /*#__PURE__*/_react["default"].cloneElement(toolbar, {
31
- customClass: "menubar ".concat(customClassForToolBar)
38
+ }, /*#__PURE__*/_react["default"].createElement(_MenuItems["default"], props), /*#__PURE__*/_react["default"].createElement(_DropdownItems["default"], props), /*#__PURE__*/_react["default"].cloneElement(toolbar, {
39
+ customClass: "menubar ".concat(customClassForToolBar),
40
+ innerRef: toolBarRef ? function (r) {
41
+ toolBarRef(r);
42
+ } : undefined
32
43
  }));
33
44
  };
34
45
 
35
46
  Menu.propTypes = {
36
47
  toolbar: _propTypes["default"].object,
37
48
  customClassForToolBar: _propTypes["default"].string,
38
- menuRef: _propTypes["default"].func.isRequired
49
+ menuRef: _propTypes["default"].func.isRequired,
50
+ toolBarRef: _propTypes["default"].func
39
51
  };
40
52
  Menu.defaultProps = {
41
53
  toolbar: undefined,
54
+ toolBarRef: null,
42
55
  customClassForToolBar: ''
43
56
  };
44
57
  var _default = Menu;
@@ -24,17 +24,18 @@ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj &&
24
24
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
25
25
 
26
26
  var MenuItems = function MenuItems(_ref) {
27
- var panels = _ref.panels,
28
- selectedTabId = _ref.selectedTabId,
27
+ var selectedTabId = _ref.selectedTabId,
29
28
  handlerClick = _ref.handlerClick,
30
29
  handlerRemovePanel = _ref.handlerRemovePanel,
31
30
  tabMenuAlign = _ref.tabMenuAlign,
32
31
  firstTabIdent = _ref.firstTabIdent,
33
- tabMenuSize = _ref.tabMenuSize;
32
+ tabMenuSize = _ref.tabMenuSize,
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)
37
- }, panels.map(function (panel, index) {
38
+ }, currentPanels.map(function (panel, index) {
38
39
  var _panel$props = panel.props,
39
40
  id = _panel$props.id,
40
41
  title = _panel$props.title,
@@ -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",
@@ -63,10 +67,10 @@ var MenuItems = function MenuItems(_ref) {
63
67
  disabled: disabled || onDenied.disabled,
64
68
  label: title,
65
69
  size: tabMenuSize,
66
- tooltip: tooltip,
70
+ tooltip: tooltip || title,
67
71
  tooltipPosition: tooltipPosition,
68
72
  tooltipWidth: tooltipWidth
69
- }), closeable && panels.length > 1 && /*#__PURE__*/_react["default"].createElement("button", {
73
+ }), closeable && currentPanels.length > 1 && /*#__PURE__*/_react["default"].createElement("button", {
70
74
  className: "closepanel",
71
75
  onClick: function onClick() {
72
76
  handlerRemovePanel(id, index);
@@ -76,19 +80,21 @@ var MenuItems = function MenuItems(_ref) {
76
80
  };
77
81
 
78
82
  MenuItems.propTypes = {
79
- panels: _propTypes["default"].arrayOf(_propTypes["default"].element).isRequired,
83
+ currentPanels: _propTypes["default"].arrayOf(_propTypes["default"].element).isRequired,
80
84
  selectedTabId: _propTypes["default"].string,
81
85
  handlerClick: _propTypes["default"].func.isRequired,
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/Panel.js CHANGED
@@ -110,8 +110,7 @@ Panel.defaultProps = {
110
110
  iconAlign: 'left',
111
111
  customClass: '',
112
112
  children: undefined,
113
- tooltip: '',
114
- tooltipPosition: 'top',
113
+ tooltipPosition: 'bottom',
115
114
  tooltipWidth: 'auto',
116
115
  onEndReached: undefined,
117
116
  onEndReachedThreshold: 0.1,
@@ -131,7 +130,6 @@ Panel.propTypes = {
131
130
  icon: _propTypes["default"].instanceOf(Object),
132
131
  iconName: _propTypes["default"].string,
133
132
  iconAlign: _propTypes["default"].string,
134
- tooltip: _propTypes["default"].string,
135
133
  tooltipPosition: _propTypes["default"].string,
136
134
  tooltipWidth: _propTypes["default"].oneOfType([_propTypes["default"].string, _propTypes["default"].number]),
137
135
  onEndReached: _propTypes["default"].func,
package/lib/tabs/index.js CHANGED
@@ -33,6 +33,14 @@ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj &&
33
33
 
34
34
  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); }
35
35
 
36
+ function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }
37
+
38
+ function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
39
+
40
+ function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); }
41
+
42
+ function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }
43
+
36
44
  function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
37
45
 
38
46
  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."); }
@@ -45,64 +53,185 @@ function _iterableToArrayLimit(arr, i) { var _i = arr && (typeof Symbol !== "und
45
53
 
46
54
  function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
47
55
 
56
+ var DROPDOWN_WIDTH = 26;
57
+
48
58
  var Tabs = function Tabs(props) {
49
59
  var handlerTabClick = props.handlerTabClick,
50
60
  children = props.children,
51
61
  handlerCloseTab = props.handlerCloseTab,
52
62
  tabMenuPosition = props.tabMenuPosition,
53
63
  style = props.style,
54
- selectedTab = props.selectedTab;
64
+ selectedTab = props.selectedTab,
65
+ toolbar = props.toolbar,
66
+ tabsWidthOnExceedCount = props.tabsWidthOnExceedCount;
55
67
 
56
68
  var _useState = (0, _react.useState)((0, _tabHelpers.buildPanels)(children) || []),
57
69
  _useState2 = _slicedToArray(_useState, 2),
58
70
  panels = _useState2[0],
59
71
  setPanels = _useState2[1];
60
72
 
61
- var _useState3 = (0, _react.useState)(selectedTab || panels[0].props.id),
73
+ var _useState3 = (0, _react.useState)([]),
62
74
  _useState4 = _slicedToArray(_useState3, 2),
63
- selectedTabId = _useState4[0],
64
- setSelectedTabId = _useState4[1];
75
+ currentPanels = _useState4[0],
76
+ setCurrentPanels = _useState4[1];
65
77
 
66
- var _useState5 = (0, _react.useState)(''),
67
- _useState6 = _slicedToArray(_useState5, 1),
68
- customClass = _useState6[0];
78
+ var _useState5 = (0, _react.useState)([]),
79
+ _useState6 = _slicedToArray(_useState5, 2),
80
+ dropdownPanels = _useState6[0],
81
+ setDropdownPanels = _useState6[1];
69
82
 
70
- var _useState7 = (0, _react.useState)(undefined),
83
+ var _useState7 = (0, _react.useState)(selectedTab || panels[0].props.id),
71
84
  _useState8 = _slicedToArray(_useState7, 2),
72
- contentHeight = _useState8[0],
73
- setContentHeight = _useState8[1];
85
+ selectedTabId = _useState8[0],
86
+ setSelectedTabId = _useState8[1];
87
+
88
+ var _useState9 = (0, _react.useState)(''),
89
+ _useState10 = _slicedToArray(_useState9, 1),
90
+ customClass = _useState10[0];
91
+
92
+ var _useState11 = (0, _react.useState)(undefined),
93
+ _useState12 = _slicedToArray(_useState11, 2),
94
+ contentHeight = _useState12[0],
95
+ setContentHeight = _useState12[1];
96
+
97
+ var _useState13 = (0, _react.useState)(0),
98
+ _useState14 = _slicedToArray(_useState13, 2),
99
+ tabsContentWidth = _useState14[0],
100
+ setTabsContentWidth = _useState14[1];
101
+
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);
115
+
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
+ };
74
135
 
75
- var componentRef = (0, _react.useRef)();
136
+ var getTabsList = function getTabsList() {
137
+ var tabsListWidth = getTabListWidth();
76
138
 
77
- var _menuRef = (0, _react.useRef)();
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
+ }
161
+
162
+ setCurrentPanels(newCurrentPanels);
163
+ setDropdownPanels(newDropdownPanels);
164
+ };
78
165
 
79
166
  var onMenuClick = function onMenuClick(tabId) {
80
- setSelectedTabId(tabId);
167
+ var includedInDropdown = dropdownPanels.filter(function (item) {
168
+ return item.props.id === tabId;
169
+ });
170
+
171
+ if (includedInDropdown.length > 0 && getTabListWidth() > 0) {
172
+ var newDropdownPanels = dropdownPanels.filter(function (item) {
173
+ return item.props.id !== tabId;
174
+ });
175
+ var newPanels = panels.filter(function (item) {
176
+ return item.props.id !== tabId;
177
+ });
178
+ var newCurrentPanels = currentPanels.slice(0, -1);
179
+ newDropdownPanels.push(currentPanels.pop());
180
+ newPanels.unshift(includedInDropdown[0]);
181
+ newCurrentPanels.unshift(includedInDropdown[0]);
182
+ setPanels(newPanels);
183
+ setDropdownPanels(newDropdownPanels);
184
+ setCurrentPanels(newCurrentPanels);
185
+ }
186
+
81
187
  if (handlerTabClick) handlerTabClick(tabId);
188
+ setSelectedTabId(tabId);
82
189
  };
83
190
 
84
191
  var onRemovePanel = function onRemovePanel(closedPanelId, panelIndex) {
85
- var remainPanels = panels.filter(function (panel) {
86
- return panel.props.id !== closedPanelId;
87
- });
88
- var newSelectedTabId = selectedTabId === closedPanelId ? remainPanels[panelIndex - (panelIndex === 0 ? 0 : 1)].props.id : selectedTabId;
89
- setSelectedTabId(newSelectedTabId);
192
+ var fromDropdownPanels = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
193
+ var newSelectedTabId = selectedTabId;
194
+ var remainPanels;
195
+
196
+ if (!fromDropdownPanels) {
197
+ remainPanels = panels.filter(function (panel) {
198
+ return panel.props.id !== closedPanelId;
199
+ });
200
+ newSelectedTabId = selectedTabId === closedPanelId ? remainPanels[panelIndex - (panelIndex === 0 ? 0 : 1)].props.id : selectedTabId;
201
+ setSelectedTabId(newSelectedTabId);
202
+ } else {
203
+ remainPanels = dropdownPanels.filter(function (panel) {
204
+ return panel.props.id !== closedPanelId;
205
+ });
206
+ setDropdownPanels(remainPanels);
207
+ }
208
+
90
209
  if (handlerCloseTab) handlerCloseTab(closedPanelId, newSelectedTabId);
91
210
  };
92
211
 
93
212
  var onResize = function onResize() {
94
213
  if (componentRef.current && _menuRef.current) {
95
214
  setContentHeight(componentRef.current.offsetHeight - _menuRef.current.offsetHeight);
215
+
216
+ if (!hasMenuAttributes && _menuRef.current && _menuRef.current.clientWidth > 0) {
217
+ getMenuAttributes();
218
+ setHasMenuAttributes(true);
219
+ }
96
220
  }
97
221
  };
98
222
 
99
223
  var renderContent = function renderContent() {
100
224
  var menu = /*#__PURE__*/_react["default"].createElement(_Menu["default"], _extends({}, props, {
225
+ tabWidth: tabWidth,
101
226
  menuRef: function menuRef(ref) {
102
227
  _menuRef.current = ref;
103
228
  },
229
+ toolBarRef: function toolBarRef(ref) {
230
+ _toolBarRef.current = ref;
231
+ },
104
232
  customClass: customClass,
105
- panels: panels,
233
+ currentPanels: currentPanels,
234
+ dropdownPanels: dropdownPanels,
106
235
  selectedTabId: selectedTabId,
107
236
  handlerClick: onMenuClick,
108
237
  handlerRemovePanel: onRemovePanel
@@ -125,11 +254,14 @@ var Tabs = function Tabs(props) {
125
254
  return function () {
126
255
  return window.removeEventListener('resize', onResize);
127
256
  };
128
- }, []);
257
+ }, [_menuRef.current]);
129
258
  (0, _react.useEffect)(function () {
130
259
  if (selectedTab) setSelectedTabId(selectedTab);
131
260
  if (children) setPanels((0, _tabHelpers.buildPanels)(children));
132
261
  }, [selectedTab, children]);
262
+ (0, _react.useEffect)(function () {
263
+ getTabsList();
264
+ }, [panels.length, currentPanels.length, tabsContentWidth]);
133
265
 
134
266
  var getContextValues = function getContextValues() {
135
267
  return {
@@ -159,7 +291,8 @@ Tabs.propTypes = {
159
291
  children: _propTypes["default"].any.isRequired,
160
292
  toolbar: _propTypes["default"].object,
161
293
  customClassForToolBar: _propTypes["default"].string,
162
- style: _propTypes["default"].object
294
+ style: _propTypes["default"].object,
295
+ tabsWidthOnExceedCount: _propTypes["default"].number
163
296
  };
164
297
  Tabs.defaultProps = {
165
298
  selectedTab: null,
@@ -170,7 +303,8 @@ Tabs.defaultProps = {
170
303
  handlerCloseTab: null,
171
304
  toolbar: undefined,
172
305
  customClassForToolBar: '',
173
- style: {}
306
+ style: {},
307
+ tabsWidthOnExceedCount: 0
174
308
  };
175
309
  var _default = Tabs;
176
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