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
@@ -84,6 +84,7 @@ var MultipleSelect = /*#__PURE__*/function (_Component) {
84
84
  _this.componentId = "select-component".concat(_uuid["default"].v1());
85
85
  _this.componentRef = /*#__PURE__*/_react["default"].createRef();
86
86
  _this.state = {
87
+ valueFromProps: null,
87
88
  dataCombo: props.dataSource,
88
89
  currents: [],
89
90
  selected: null,
@@ -385,18 +386,19 @@ Object.defineProperty(MultipleSelect, "getDerivedStateFromProps", {
385
386
  value = props.value,
386
387
  idKey = props.idKey;
387
388
 
388
- if (dataSource !== state.dataCombo) {
389
- var dataCombo = remoteSearch ? dataSource : (0, _helper.getFilteredMultipleDataCombo)(_extends({}, props, state));
390
- return {
391
- dataCombo: dataCombo,
392
- selected: dataSource.length > 0 && remoteSearch ? dataSource[0] : null
393
- };
394
- } else if (value !== null && dataSource.length > 0) {
389
+ if (value !== state.valueFromProps && dataSource.length > 0) {
395
390
  return {
391
+ valueFromProps: value,
396
392
  currents: dataSource.filter(function (item) {
397
393
  return value.includes(item[idKey]);
398
394
  })
399
395
  };
396
+ } else if (dataSource !== state.dataCombo) {
397
+ var dataCombo = remoteSearch ? dataSource : (0, _helper.getFilteredMultipleDataCombo)(_extends({}, props, state));
398
+ return {
399
+ dataCombo: dataCombo,
400
+ selected: dataSource.length > 0 && remoteSearch ? dataSource[0] : null
401
+ };
400
402
  }
401
403
 
402
404
  return null;
@@ -127,9 +127,6 @@ var SimpleSelect = /*#__PURE__*/function (_Component) {
127
127
  onFocus: function onFocus() {
128
128
  _this2.onFocus();
129
129
  },
130
- onBlur: function onBlur(e) {
131
- _this2.onBlur(e);
132
- },
133
130
  onChange: function onChange(e) {
134
131
  _this2.onFilter(e.target.value);
135
132
  },
@@ -293,18 +290,11 @@ var _initialiseProps = function _initialiseProps() {
293
290
  enumerable: true,
294
291
  writable: true,
295
292
  value: function value(selected) {
296
- var _this3$props2 = _this3.props,
297
- onChange = _this3$props2.onChange,
298
- idKey = _this3$props2.idKey,
299
- name = _this3$props2.name;
293
+ var onChange = _this3.props.onChange;
300
294
 
301
295
  if (onChange) {
302
- var event = {
303
- target: {
304
- name: name,
305
- value: selected ? selected[idKey] : undefined
306
- }
307
- };
296
+ var event = _this3.getSelectEvent(selected);
297
+
308
298
  onChange(event);
309
299
  }
310
300
  }
@@ -364,9 +354,15 @@ var _initialiseProps = function _initialiseProps() {
364
354
  configurable: true,
365
355
  enumerable: true,
366
356
  writable: true,
367
- value: function value(e) {
357
+ value: function value(selected) {
368
358
  var onBlur = _this3.props.onBlur;
369
- if (onBlur) onBlur(e);
359
+
360
+ if (onBlur) {
361
+ var event = _this3.getSelectEvent(selected);
362
+
363
+ onBlur(event);
364
+ }
365
+
370
366
  if (!_this3.state.insideComponent) _this3.setState({
371
367
  opened: false,
372
368
  isTyping: false
@@ -378,9 +374,9 @@ var _initialiseProps = function _initialiseProps() {
378
374
  enumerable: true,
379
375
  writable: true,
380
376
  value: function value(e) {
381
- var _this3$props3 = _this3.props,
382
- dataSource = _this3$props3.dataSource,
383
- idKey = _this3$props3.idKey;
377
+ var _this3$props2 = _this3.props,
378
+ dataSource = _this3$props2.dataSource,
379
+ idKey = _this3$props2.idKey;
384
380
  var _this3$state = _this3.state,
385
381
  selected = _this3$state.selected,
386
382
  isTyping = _this3$state.isTyping;
@@ -421,6 +417,22 @@ var _initialiseProps = function _initialiseProps() {
421
417
  });
422
418
  }
423
419
  });
420
+ Object.defineProperty(this, "getSelectEvent", {
421
+ configurable: true,
422
+ enumerable: true,
423
+ writable: true,
424
+ value: function value(selected) {
425
+ var _this3$props3 = _this3.props,
426
+ idKey = _this3$props3.idKey,
427
+ name = _this3$props3.name;
428
+ return {
429
+ target: {
430
+ name: name,
431
+ value: selected ? selected[idKey] : undefined
432
+ }
433
+ };
434
+ }
435
+ });
424
436
  Object.defineProperty(this, "setOnDenied", {
425
437
  configurable: true,
426
438
  enumerable: true,
@@ -33,6 +33,8 @@ function _iterableToArrayLimit(arr, i) { var _i = arr && (typeof Symbol !== "und
33
33
 
34
34
  function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
35
35
 
36
+ var TOOLTIP_INITIAL_HEIGHT = 40;
37
+
36
38
  var hasTooltip = function hasTooltip(_ref) {
37
39
  var tooltip = _ref.tooltip;
38
40
  return tooltip;
@@ -45,38 +47,36 @@ var getDisplayName = function getDisplayName(WrappedComponent) {
45
47
  var withTooltip = function withTooltip(WrappedComponent) {
46
48
  var EnhancedComponent = function EnhancedComponent(props) {
47
49
  var tooltip = props.tooltip,
48
- tooltipPosition = props.tooltipPosition,
49
50
  tooltipWidth = props.tooltipWidth,
50
51
  space = props.space;
51
52
 
52
- var _useState = (0, _react.useState)(false),
53
+ var _useState = (0, _react.useState)(props.tooltipPosition),
53
54
  _useState2 = _slicedToArray(_useState, 2),
54
- showTooltip = _useState2[0],
55
- setShowTooltip = _useState2[1];
55
+ tooltipPosition = _useState2[0],
56
+ setTooltipPosition = _useState2[1];
56
57
 
57
- var _useState3 = (0, _react.useState)({
58
- width: tooltipWidth,
59
- height: undefined
60
- }),
58
+ var _useState3 = (0, _react.useState)(''),
61
59
  _useState4 = _slicedToArray(_useState3, 2),
62
- tooltipDimensions = _useState4[0],
63
- setTooltipDimensions = _useState4[1];
60
+ tooltipStyle = _useState4[0],
61
+ setTooltipStyle = _useState4[1];
64
62
 
65
- var _useState5 = (0, _react.useState)(true),
63
+ var _useState5 = (0, _react.useState)(false),
66
64
  _useState6 = _slicedToArray(_useState5, 2),
67
- findScrollableParent = _useState6[0],
68
- setFindScrollableParent = _useState6[1];
65
+ showTooltip = _useState6[0],
66
+ setShowTooltip = _useState6[1];
69
67
 
70
- var _useState7 = (0, _react.useState)(undefined),
68
+ var _useState7 = (0, _react.useState)({
69
+ width: tooltipWidth,
70
+ height: TOOLTIP_INITIAL_HEIGHT
71
+ }),
71
72
  _useState8 = _slicedToArray(_useState7, 2),
72
- dimensionsTargetElement = _useState8[0],
73
- setDimensionsTargetElement = _useState8[1];
73
+ tooltipDimensions = _useState8[0],
74
+ setTooltipDimensions = _useState8[1];
74
75
 
75
- var scrollableParent = (0, _react.useRef)();
76
76
  var targetElement = (0, _react.useRef)();
77
77
 
78
78
  var onMouseOver = function onMouseOver(e) {
79
- if (targetElement && targetElement.current && targetElement.current.contains(e.target)) {
79
+ if (targetElement.current.contains(e.target)) {
80
80
  setShowTooltip(true);
81
81
  } else setShowTooltip(false);
82
82
  };
@@ -85,58 +85,24 @@ var withTooltip = function withTooltip(WrappedComponent) {
85
85
  setShowTooltip(false);
86
86
  };
87
87
 
88
- var onParentScroll = function onParentScroll() {
89
- var currentDimensions = targetElement.current.getBoundingClientRect();
90
-
91
- if (targetElement.current && dimensionsTargetElement !== currentDimensions) {
92
- return setDimensionsTargetElement(currentDimensions);
93
- }
94
-
95
- return null;
96
- };
97
-
98
- var getScrollableParent = function getScrollableParent(node) {
99
- if (node === null || node.nodeName === '#document') {
100
- return setFindScrollableParent(false);
101
- }
102
-
103
- var _window$getComputedSt = window.getComputedStyle(node),
104
- overflowY = _window$getComputedSt.overflowY;
105
-
106
- var isScrollable = overflowY !== 'visible' && overflowY !== 'hidden';
107
-
108
- if (isScrollable && node.scrollHeight > node.clientHeight) {
109
- scrollableParent.current = node;
110
- return setFindScrollableParent(false);
111
- }
112
-
113
- return getScrollableParent(node.parentNode);
88
+ var onAnyScroll = function onAnyScroll() {
89
+ setShowTooltip(false);
114
90
  };
115
91
 
116
92
  (0, _react.useEffect)(function () {
117
93
  if (hasTooltip(props)) {
118
94
  document.addEventListener('mouseover', onMouseOver);
95
+ document.addEventListener('scroll', onAnyScroll, true);
119
96
 
120
97
  if (targetElement && targetElement.current) {
121
98
  targetElement.current.addEventListener('mouseout', onMouseOut);
122
99
  }
123
-
124
- if (targetElement && targetElement.current && findScrollableParent) {
125
- getScrollableParent(targetElement.current);
126
- }
127
-
128
- if (scrollableParent && scrollableParent.current) {
129
- scrollableParent.current.addEventListener('scroll', onParentScroll);
130
- }
131
100
  }
132
101
 
133
102
  return function () {
134
103
  if (hasTooltip(props)) {
135
104
  document.removeEventListener('mouseover', onMouseOver);
136
-
137
- if (scrollableParent && scrollableParent.current) {
138
- scrollableParent.current.removeEventListener('scroll', onParentScroll);
139
- }
105
+ document.removeEventListener('scroll', onAnyScroll, true);
140
106
 
141
107
  if (targetElement && targetElement.current) {
142
108
  targetElement.current.removeEventListener('mouseout', onMouseOut);
@@ -144,39 +110,74 @@ var withTooltip = function withTooltip(WrappedComponent) {
144
110
  }
145
111
  };
146
112
  }, []);
113
+ (0, _react.useEffect)(function () {
114
+ if (targetElement.current) {
115
+ var width = tooltipDimensions.width,
116
+ height = tooltipDimensions.height;
117
+ var targetDimensions = targetElement.current.getBoundingClientRect();
118
+ var targetVerticalCenter = (targetDimensions.top + targetDimensions.bottom) / 2;
119
+ var style = "width: ".concat(width, "px");
120
+ var left = targetDimensions.left + targetDimensions.width / 2 - width / 2;
121
+ left = Math.min(left, document.body.clientWidth - width - space);
122
+ style += "; left: ".concat(Math.max(space, left), "px");
123
+
124
+ switch (tooltipPosition) {
125
+ case 'top':
126
+ if (targetDimensions.top < height) {
127
+ setTooltipPosition('bottom');
128
+ } else {
129
+ style += "; top: ".concat(targetDimensions.top + window.scrollY - height - 5, "px");
130
+ }
131
+
132
+ break;
133
+
134
+ case 'bottom':
135
+ if (window.innerHeight - targetDimensions.bottom < height) {
136
+ setTooltipPosition('top');
137
+ } else {
138
+ style += "; top: ".concat(targetDimensions.top + window.scrollY + targetDimensions.height + 5, "px");
139
+ }
140
+
141
+ break;
142
+
143
+ case 'left':
144
+ if (targetDimensions.left < width) {
145
+ setTooltipPosition('right');
146
+ } else {
147
+ style += "; top: ".concat(targetVerticalCenter + window.scrollY - height / 2, "px");
148
+ style += "; left: ".concat(targetDimensions.left - width - 6, "px");
149
+ }
150
+
151
+ break;
152
+
153
+ case 'right':
154
+ if (window.innerWidth - targetDimensions.right < width) {
155
+ setTooltipPosition('left');
156
+ } else {
157
+ style += "; top: ".concat(targetVerticalCenter + window.scrollY - height / 2, "px");
158
+ style += "; left: ".concat(targetDimensions.left + targetDimensions.width + 5, "px");
159
+ }
160
+
161
+ break;
162
+
163
+ default:
164
+ style += '';
165
+ }
147
166
 
148
- var getStyle = function getStyle() {
149
- // where on the screen is the target
150
- var width = tooltipDimensions.width,
151
- height = tooltipDimensions.height;
152
- var targetDimensions = dimensionsTargetElement || targetElement.current.getBoundingClientRect();
153
- var targetVerticalCenter = (targetDimensions.top + targetDimensions.bottom) / 2;
154
- var style = "width: ".concat(width + 2, "px");
155
- var left = targetDimensions.left + targetDimensions.width / 2 - width / 2;
156
- left = Math.min(left, document.body.clientWidth - width - space);
157
- style += "; left: ".concat(Math.max(space, left), "px"); // when the position is informed
158
-
159
- if (tooltipPosition === 'top') {
160
- style += "; top: ".concat(targetDimensions.top + window.scrollY - height - 5, "px");
161
- } else if (tooltipPosition === 'bottom') {
162
- style += "; top: ".concat(targetDimensions.top + window.scrollY + targetDimensions.height + 5, "px");
163
- } else if (tooltipPosition === 'left') {
164
- style += "; top: ".concat(targetVerticalCenter + window.scrollY - height / 2, "px");
165
- style += "; left: ".concat(targetDimensions.left - width - 6, "px");
166
- } else if (tooltipPosition === 'right') {
167
- style += "; top: ".concat(targetVerticalCenter + window.scrollY - height / 2, "px");
168
- style += "; left: ".concat(targetDimensions.left + targetDimensions.width + 5, "px");
167
+ setTooltipStyle(style);
169
168
  }
170
-
171
- return style;
172
- };
169
+ }, [tooltipDimensions, targetElement.current, tooltipPosition]);
170
+ (0, _react.useEffect)(function () {
171
+ setTooltipPosition(props.tooltipPosition);
172
+ }, [window.scrollY, window.scrollX, window.innerWidth]);
173
173
 
174
174
  var getTooltip = function getTooltip() {
175
175
  if (tooltip) {
176
176
  return /*#__PURE__*/_react["default"].createElement(_tooltip["default"], {
177
177
  text: tooltip,
178
- style: getStyle(),
178
+ style: tooltipStyle,
179
179
  className: tooltipPosition,
180
+ tooltipDimensions: tooltipDimensions,
180
181
  handlerSetDimensions: setTooltipDimensions
181
182
  });
182
183
  }
@@ -201,7 +202,7 @@ var withTooltip = function withTooltip(WrappedComponent) {
201
202
  tooltipPosition: _propTypes["default"].string
202
203
  };
203
204
  EnhancedComponent.defaultProps = {
204
- tooltipWidth: 'auto',
205
+ tooltipWidth: undefined,
205
206
  space: 20,
206
207
  tooltip: '',
207
208
  tooltipPosition: 'bottom'
package/lib/list/Item.js CHANGED
@@ -99,12 +99,12 @@ var Item = function Item(props) {
99
99
 
100
100
  var getProps = function getProps() {
101
101
  if (shouldDisable()) return undefined;
102
- if (_onClick === undefined && dropdownContext === undefined) return null;
102
+ if (_onClick === undefined && dropdownContext === undefined && !selectable) return null;
103
103
  return {
104
104
  onClick: function onClick(e) {
105
- if (_onClick !== undefined) _onClick(e);
105
+ if (_onClick !== undefined) _onClick(e, itemId);
106
106
  if (dropdownContext) dropdownContext.handleDropdownClose();
107
- if (selectable && handleSelectItem(itemId)) ;
107
+ if (selectable) handleSelectItem(itemId, _onClick);
108
108
  },
109
109
  onKeyDown: null,
110
110
  role: 'button',
package/lib/list/index.js CHANGED
@@ -58,24 +58,30 @@ function _iterableToArrayLimit(arr, i) { var _i = arr && (typeof Symbol !== "und
58
58
  function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
59
59
 
60
60
  var List = function List(props) {
61
- var _useState = (0, _react.useState)(''),
62
- _useState2 = _slicedToArray(_useState, 2),
63
- selectedItemId = _useState2[0],
64
- setSelectedItemId = _useState2[1];
65
-
66
61
  var children = props.children,
67
62
  customClass = props.customClass,
68
63
  condensed = props.condensed,
69
64
  transparent = props.transparent,
70
65
  style = props.style,
71
- selectable = props.selectable;
66
+ selectable = props.selectable,
67
+ onSelectItem = props.onSelectItem;
68
+
69
+ var _useState = (0, _react.useState)(''),
70
+ _useState2 = _slicedToArray(_useState, 2),
71
+ selectedItemId = _useState2[0],
72
+ setSelectedItemId = _useState2[1];
73
+
72
74
  var contextValues = {
73
75
  selectable: selectable,
74
76
  selectedItemId: selectedItemId,
75
- handleSelectItem: function handleSelectItem(selectedId) {
76
- setSelectedItemId(selectedId);
77
+ handleSelectItem: function handleSelectItem(selectedId, onClick) {
78
+ if (!onSelectItem && onClick) setSelectedItemId(selectedId);
79
+ if (onSelectItem) onSelectItem(selectedId);
77
80
  }
78
81
  };
82
+ (0, _react.useEffect)(function () {
83
+ if (onSelectItem && props.selectedItemId) setSelectedItemId(props.selectedItemId);
84
+ }, [props.selectedItemId]);
79
85
  return /*#__PURE__*/_react["default"].createElement(_helpers["default"].Provider, {
80
86
  value: contextValues
81
87
  }, /*#__PURE__*/_react["default"].createElement("ul", {
@@ -91,14 +97,18 @@ List.propTypes = {
91
97
  customClass: _propTypes["default"].string,
92
98
  condensed: _propTypes["default"].bool,
93
99
  selectable: _propTypes["default"].bool,
94
- style: _propTypes["default"].object
100
+ style: _propTypes["default"].object,
101
+ onSelectItem: _propTypes["default"].func,
102
+ selectedItemId: _propTypes["default"].string
95
103
  };
96
104
  List.defaultProps = {
97
105
  customClass: '',
98
106
  condensed: false,
99
107
  transparent: false,
100
108
  selectable: false,
101
- style: {}
109
+ style: {},
110
+ onSelectItem: undefined,
111
+ selectedItemId: ''
102
112
  };
103
113
  var _default = List;
104
114
  exports["default"] = _default;