linear-react-components-ui 0.4.76-rc.11 → 0.4.76-rc.12

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 (69) hide show
  1. package/.tool-versions +1 -0
  2. package/.vscode/settings.json +1 -2
  3. package/README.md +23 -0
  4. package/lib/assets/styles/dropdown.scss +25 -2
  5. package/lib/assets/styles/effects.scss +12 -0
  6. package/lib/assets/styles/floatMenu.scss +0 -1
  7. package/lib/assets/styles/multiSelect.scss +105 -0
  8. package/lib/assets/styles/panel.scss +0 -1
  9. package/lib/assets/styles/periodpicker.scss +65 -0
  10. package/lib/assets/styles/progress.scss +8 -1
  11. package/lib/assets/styles/select.scss +1 -0
  12. package/lib/assets/styles/table.scss +13 -5
  13. package/lib/assets/styles/tabs.scss +79 -46
  14. package/lib/assets/styles/treeview.scss +32 -0
  15. package/lib/avatar/avatar.spec.js +17 -6
  16. package/lib/avatar/index.js +1 -1
  17. package/lib/buttons/DefaultButton.js +7 -1
  18. package/lib/checkbox/Label.js +37 -0
  19. package/lib/checkbox/index.js +20 -6
  20. package/lib/dialog/base/index.js +15 -6
  21. package/lib/dialog/form/index.js +16 -3
  22. package/lib/drawer/index.js +4 -1
  23. package/lib/form/Field.js +2 -0
  24. package/lib/form/FieldNumber.js +10 -2
  25. package/lib/form/FieldPeriod.js +100 -0
  26. package/lib/form/helpers.js +9 -1
  27. package/lib/form/index.js +76 -10
  28. package/lib/form/withFieldHOC.js +2 -0
  29. package/lib/form/withFormSecurity.js +106 -0
  30. package/lib/icons/helper.js +16 -0
  31. package/lib/inputs/base/InputTextBase.js +1 -10
  32. package/lib/inputs/base/helpers.js +3 -11
  33. package/lib/inputs/multiSelect/ActionButtons.js +68 -0
  34. package/lib/inputs/multiSelect/Dropdown.js +200 -0
  35. package/lib/inputs/multiSelect/helper.js +18 -0
  36. package/lib/inputs/multiSelect/index.js +343 -0
  37. package/lib/inputs/number/BaseNumber.js +1 -1
  38. package/lib/inputs/number/index.js +7 -5
  39. package/lib/inputs/period/Dialog.js +38 -0
  40. package/lib/inputs/period/Dropdown.js +90 -0
  41. package/lib/inputs/period/PeriodList.js +79 -0
  42. package/lib/inputs/period/helper.js +118 -0
  43. package/lib/inputs/period/index.js +490 -0
  44. package/lib/inputs/select/Dropdown.js +4 -4
  45. package/lib/inputs/select/index.js +26 -3
  46. package/lib/inputs/select/multiple/index.js +9 -7
  47. package/lib/inputs/select/simple/index.js +30 -18
  48. package/lib/internals/withTooltip.js +83 -82
  49. package/lib/list/Item.js +3 -3
  50. package/lib/list/index.js +20 -10
  51. package/lib/list/list.spec.js +129 -85
  52. package/lib/menus/float/MenuItem.js +25 -8
  53. package/lib/menus/sidenav/index.js +7 -3
  54. package/lib/menus/sidenav/popup_menu_search/index.js +1 -1
  55. package/lib/progress/Bar.js +40 -9
  56. package/lib/progress/index.js +12 -4
  57. package/lib/spinner/index.js +6 -1
  58. package/lib/split/Split.js +5 -11
  59. package/lib/table/Row.js +1 -1
  60. package/lib/tabs/DropdownItems.js +84 -0
  61. package/lib/tabs/Menu.js +18 -5
  62. package/lib/tabs/MenuItems.js +7 -7
  63. package/lib/tabs/Panel.js +1 -3
  64. package/lib/tabs/index.js +153 -20
  65. package/lib/toolbar/index.js +8 -4
  66. package/lib/tooltip/index.js +12 -0
  67. package/lib/treeview/Node.js +288 -18
  68. package/lib/treeview/index.js +448 -35
  69. package/package.json +9 -8
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."); }
@@ -51,48 +59,162 @@ var Tabs = function Tabs(props) {
51
59
  handlerCloseTab = props.handlerCloseTab,
52
60
  tabMenuPosition = props.tabMenuPosition,
53
61
  style = props.style,
54
- selectedTab = props.selectedTab;
62
+ selectedTab = props.selectedTab,
63
+ toolbar = props.toolbar;
55
64
 
56
65
  var _useState = (0, _react.useState)((0, _tabHelpers.buildPanels)(children) || []),
57
66
  _useState2 = _slicedToArray(_useState, 2),
58
67
  panels = _useState2[0],
59
68
  setPanels = _useState2[1];
60
69
 
61
- var _useState3 = (0, _react.useState)(selectedTab || panels[0].props.id),
70
+ var _useState3 = (0, _react.useState)([]),
62
71
  _useState4 = _slicedToArray(_useState3, 2),
63
- selectedTabId = _useState4[0],
64
- setSelectedTabId = _useState4[1];
72
+ currentPanels = _useState4[0],
73
+ setCurrentPanels = _useState4[1];
65
74
 
66
- var _useState5 = (0, _react.useState)(''),
67
- _useState6 = _slicedToArray(_useState5, 1),
68
- customClass = _useState6[0];
75
+ var _useState5 = (0, _react.useState)([]),
76
+ _useState6 = _slicedToArray(_useState5, 2),
77
+ dropdownPanels = _useState6[0],
78
+ setDropdownPanels = _useState6[1];
69
79
 
70
- var _useState7 = (0, _react.useState)(undefined),
80
+ var _useState7 = (0, _react.useState)(selectedTab || panels[0].props.id),
71
81
  _useState8 = _slicedToArray(_useState7, 2),
72
- contentHeight = _useState8[0],
73
- setContentHeight = _useState8[1];
82
+ selectedTabId = _useState8[0],
83
+ setSelectedTabId = _useState8[1];
84
+
85
+ var _useState9 = (0, _react.useState)(''),
86
+ _useState10 = _slicedToArray(_useState9, 1),
87
+ customClass = _useState10[0];
88
+
89
+ var _useState11 = (0, _react.useState)(undefined),
90
+ _useState12 = _slicedToArray(_useState11, 2),
91
+ contentHeight = _useState12[0],
92
+ setContentHeight = _useState12[1];
93
+
94
+ var _useState13 = (0, _react.useState)(0),
95
+ _useState14 = _slicedToArray(_useState13, 2),
96
+ tabsContentWidth = _useState14[0],
97
+ setTabsContentWidth = _useState14[1];
98
+
99
+ var _useState15 = (0, _react.useState)(false),
100
+ _useState16 = _slicedToArray(_useState15, 2),
101
+ hasMenuAttributes = _useState16[0],
102
+ setHasMenuAttributes = _useState16[1];
103
+
104
+ var _useState17 = (0, _react.useState)(0),
105
+ _useState18 = _slicedToArray(_useState17, 2),
106
+ dropdownWidth = _useState18[0],
107
+ setDropdownWidth = _useState18[1];
108
+
109
+ var componentRef = (0, _react.useRef)(null);
74
110
 
75
- var componentRef = (0, _react.useRef)();
111
+ var _menuRef = (0, _react.useRef)(null);
76
112
 
77
- var _menuRef = (0, _react.useRef)();
113
+ var _toolBarRef = (0, _react.useRef)(null);
114
+
115
+ var getTabListWidth = function getTabListWidth() {
116
+ var tabMenu = _menuRef.current.children[0];
117
+
118
+ var tabList = _toConsumableArray(tabMenu.children);
119
+
120
+ var tabsListWidth = tabList.reduce(function (total, tab) {
121
+ return total + tab.clientWidth;
122
+ }, 0);
123
+ return tabsListWidth;
124
+ };
125
+
126
+ var getMenuAttributes = function getMenuAttributes() {
127
+ var menuSize = _menuRef.current.clientWidth;
128
+ var toolbarSize = toolbar && _toolBarRef ? _toolBarRef.current.clientWidth : 0;
129
+ var contentWidth = (toolbar ? menuSize - toolbarSize : menuSize) - dropdownWidth;
130
+ setTabsContentWidth(contentWidth);
131
+ };
132
+
133
+ var getTabsList = function getTabsList() {
134
+ var tabsListWidth = getTabListWidth();
135
+
136
+ var dropdownTabs = _toConsumableArray(dropdownPanels);
137
+
138
+ var currentTabs = _toConsumableArray(panels);
139
+
140
+ if (dropdownTabs.length) {
141
+ var dropDownTabsIds = dropdownTabs.map(function (dd) {
142
+ return dd.props.id;
143
+ });
144
+ currentTabs = currentTabs.filter(function (tab) {
145
+ return !dropDownTabsIds.includes(tab.props.id);
146
+ });
147
+ }
148
+
149
+ console.log(tabsListWidth, tabsContentWidth);
150
+
151
+ if (tabsListWidth > tabsContentWidth) {
152
+ var lastPanel = currentTabs[currentTabs.length - 1];
153
+ dropdownTabs.push(lastPanel);
154
+ currentTabs.pop();
155
+ } else if (tabsListWidth + 110 < tabsContentWidth && dropdownTabs.length) {
156
+ currentTabs.push(dropdownTabs[0]);
157
+ dropdownTabs.shift();
158
+ }
159
+
160
+ setCurrentPanels(currentTabs);
161
+ setDropdownPanels(dropdownTabs);
162
+ };
78
163
 
79
164
  var onMenuClick = function onMenuClick(tabId) {
80
- setSelectedTabId(tabId);
165
+ var includedInDropdown = dropdownPanels.filter(function (item) {
166
+ return item.props.id === tabId;
167
+ });
168
+
169
+ if (includedInDropdown.length > 0 && getTabListWidth() > 0) {
170
+ var newDropdownPanels = dropdownPanels.filter(function (item) {
171
+ return item.props.id !== tabId;
172
+ });
173
+ var newPanels = panels.filter(function (item) {
174
+ return item.props.id !== tabId;
175
+ });
176
+ var newCurrentPanels = currentPanels.slice(0, -1);
177
+ newDropdownPanels.push(currentPanels.pop());
178
+ newPanels.unshift(includedInDropdown[0]);
179
+ newCurrentPanels.unshift(includedInDropdown[0]);
180
+ setPanels(newPanels);
181
+ setDropdownPanels(newDropdownPanels);
182
+ setCurrentPanels(newCurrentPanels);
183
+ }
184
+
81
185
  if (handlerTabClick) handlerTabClick(tabId);
186
+ setSelectedTabId(tabId);
82
187
  };
83
188
 
84
189
  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);
190
+ var fromDropdownPanels = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
191
+ var newSelectedTabId = selectedTabId;
192
+ var remainPanels;
193
+
194
+ if (!fromDropdownPanels) {
195
+ remainPanels = panels.filter(function (panel) {
196
+ return panel.props.id !== closedPanelId;
197
+ });
198
+ newSelectedTabId = selectedTabId === closedPanelId ? remainPanels[panelIndex - (panelIndex === 0 ? 0 : 1)].props.id : selectedTabId;
199
+ setSelectedTabId(newSelectedTabId);
200
+ } else {
201
+ remainPanels = dropdownPanels.filter(function (panel) {
202
+ return panel.props.id !== closedPanelId;
203
+ });
204
+ setDropdownPanels(remainPanels);
205
+ }
206
+
90
207
  if (handlerCloseTab) handlerCloseTab(closedPanelId, newSelectedTabId);
91
208
  };
92
209
 
93
210
  var onResize = function onResize() {
94
211
  if (componentRef.current && _menuRef.current) {
95
212
  setContentHeight(componentRef.current.offsetHeight - _menuRef.current.offsetHeight);
213
+
214
+ if (!hasMenuAttributes && _menuRef.current && _menuRef.current.clientWidth > 0 && dropdownWidth) {
215
+ getMenuAttributes();
216
+ setHasMenuAttributes(true);
217
+ }
96
218
  }
97
219
  };
98
220
 
@@ -101,8 +223,12 @@ var Tabs = function Tabs(props) {
101
223
  menuRef: function menuRef(ref) {
102
224
  _menuRef.current = ref;
103
225
  },
226
+ toolBarRef: function toolBarRef(ref) {
227
+ _toolBarRef.current = ref;
228
+ },
104
229
  customClass: customClass,
105
- panels: panels,
230
+ currentPanels: currentPanels,
231
+ dropdownPanels: dropdownPanels,
106
232
  selectedTabId: selectedTabId,
107
233
  handlerClick: onMenuClick,
108
234
  handlerRemovePanel: onRemovePanel
@@ -125,11 +251,18 @@ var Tabs = function Tabs(props) {
125
251
  return function () {
126
252
  return window.removeEventListener('resize', onResize);
127
253
  };
128
- }, []);
254
+ }, [_menuRef.current, dropdownWidth]);
129
255
  (0, _react.useEffect)(function () {
130
256
  if (selectedTab) setSelectedTabId(selectedTab);
131
257
  if (children) setPanels((0, _tabHelpers.buildPanels)(children));
132
258
  }, [selectedTab, children]);
259
+ (0, _react.useEffect)(function () {
260
+ getTabsList();
261
+ }, [panels.length, currentPanels.length, tabsContentWidth]);
262
+ (0, _react.useEffect)(function () {
263
+ var currentDropdownWidth = dropdownPanels.length > 0 ? _menuRef.current.children[1].clientWidth : 0;
264
+ setDropdownWidth(currentDropdownWidth);
265
+ }, [dropdownPanels.length]);
133
266
 
134
267
  var getContextValues = function getContextValues() {
135
268
  return {
@@ -49,10 +49,12 @@ var ToolBar = function ToolBar(_ref) {
49
49
  var size = _ref.size,
50
50
  customClass = _ref.customClass,
51
51
  style = _ref.style,
52
- children = _ref.children;
52
+ children = _ref.children,
53
+ innerRef = _ref.innerRef;
53
54
  return /*#__PURE__*/_react["default"].createElement("div", {
54
55
  className: "toolbar-component ".concat(size && "".concat(size, "-bar"), " ").concat(customClass),
55
- style: style
56
+ style: style,
57
+ ref: innerRef
56
58
  }, children);
57
59
  };
58
60
 
@@ -60,12 +62,14 @@ ToolBar.propTypes = {
60
62
  size: _propTypes["default"].oneOf(['small', 'large']),
61
63
  style: _propTypes["default"].object,
62
64
  children: _propTypes["default"].any.isRequired,
63
- customClass: _propTypes["default"].string
65
+ customClass: _propTypes["default"].string,
66
+ innerRef: _propTypes["default"].func
64
67
  };
65
68
  ToolBar.defaultProps = {
66
69
  size: null,
67
70
  style: {},
68
- customClass: ''
71
+ customClass: '',
72
+ innerRef: null
69
73
  };
70
74
  var _default = ToolBar;
71
75
  exports["default"] = _default;
@@ -25,6 +25,7 @@ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj &&
25
25
 
26
26
  var Tooltip = function Tooltip(props) {
27
27
  var className = props.className,
28
+ tooltipDimensions = props.tooltipDimensions,
28
29
  handlerSetDimensions = props.handlerSetDimensions,
29
30
  style = props.style,
30
31
  text = props.text;
@@ -34,9 +35,17 @@ var Tooltip = function Tooltip(props) {
34
35
  tooltipComponent.current.dataset.testid = 'tooltip-component';
35
36
  tooltipComponent.current.style = style;
36
37
  (0, _react.useEffect)(function () {
38
+ tooltipComponent.current.id = "tooltip-".concat(_uuid["default"].v1());
39
+ tooltipComponent.current.className = "tooltip-component ".concat(className, " ");
40
+ tooltipComponent.current.style = style;
37
41
  document.body.appendChild(tooltipComponent.current);
38
42
  var tooltipEl = document.querySelector("div#".concat(tooltipComponent.current.id));
39
43
  var width = tooltipEl.offsetWidth;
44
+
45
+ if (tooltipDimensions.width) {
46
+ width = tooltipDimensions.width;
47
+ }
48
+
40
49
  var height = tooltipEl.offsetHeight;
41
50
  handlerSetDimensions({
42
51
  width: width,
@@ -46,6 +55,9 @@ var Tooltip = function Tooltip(props) {
46
55
  return document.body.removeChild(tooltipComponent.current);
47
56
  };
48
57
  }, []);
58
+ (0, _react.useEffect)(function () {
59
+ tooltipComponent.current.className = "tooltip-component ".concat(className, " ");
60
+ }, [className]);
49
61
  (0, _react.useEffect)(function () {
50
62
  tooltipComponent.current.style = style;
51
63
  }, [style]);