linear-react-components-ui 1.0.12-beta.1 → 1.0.12-beta.10

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 (66) hide show
  1. package/lib/@types/PointerEvents.d.ts +1 -1
  2. package/lib/assets/styles/icon.scss +8 -0
  3. package/lib/assets/styles/multiSelect.scss +28 -13
  4. package/lib/assets/styles/select.scss +34 -12
  5. package/lib/assets/styles/sidenav.scss +108 -43
  6. package/lib/buttons/button_container/index.js +1 -0
  7. package/lib/dialog/Custom.js +1 -1
  8. package/lib/dialog/form/index.js +1 -1
  9. package/lib/dialog/types.d.ts +2 -2
  10. package/lib/form/types.d.ts +2 -0
  11. package/lib/icons/helper.d.ts +8 -0
  12. package/lib/icons/helper.js +8 -0
  13. package/lib/icons/index.d.ts +6 -2
  14. package/lib/icons/index.js +44 -23
  15. package/lib/icons/types.d.ts +6 -0
  16. package/lib/inputs/mask/helpers.js +1 -1
  17. package/lib/inputs/mask/imaskHOC.js +24 -1
  18. package/lib/inputs/mask/types.d.ts +1 -0
  19. package/lib/inputs/textarea/index.js +1 -1
  20. package/lib/inputs/types.d.ts +1 -0
  21. package/lib/menus/sidenav/NavMenuItem.js +13 -1
  22. package/lib/table/HeaderColumn.d.ts +1 -1
  23. package/lib/table/HeaderColumn.js +3 -1
  24. package/lib/table/types.d.ts +1 -0
  25. package/package.json +1 -1
  26. package/lib/alerts/alert.spec.js +0 -133
  27. package/lib/avatar/avatar.spec.js +0 -190
  28. package/lib/badge/badge.spec.js +0 -127
  29. package/lib/buttons/SpinnerLoading.js +0 -230
  30. package/lib/buttons/buttons.spec.js +0 -504
  31. package/lib/calendar/calendar.spec.js +0 -171
  32. package/lib/checkbox/checkbox.spec.js +0 -215
  33. package/lib/dialog/dialog.spec.js +0 -488
  34. package/lib/drawer/Drawer.spec.js +0 -258
  35. package/lib/dropdown/dropdown.spec.js +0 -169
  36. package/lib/fieldset/fieldset.spec.js +0 -329
  37. package/lib/form/form.spec.js +0 -293
  38. package/lib/gridlayout/gridLayout.spec.js +0 -169
  39. package/lib/icons/icons.spec.js +0 -86
  40. package/lib/inputs/base/base.spec.js +0 -690
  41. package/lib/inputs/base/index.js +0 -1
  42. package/lib/inputs/color/color_input.spec.js +0 -174
  43. package/lib/inputs/date/date.spec.js +0 -354
  44. package/lib/inputs/mask/input_mask.spec.js +0 -607
  45. package/lib/inputs/number/numberfield.spec.js +0 -215
  46. package/lib/inputs/search/search_input.spec.js +0 -209
  47. package/lib/inputs/select/select.spec.js +0 -395
  48. package/lib/inputs/text/textfield.spec.js +0 -215
  49. package/lib/inputs/textarea/textarea.spec.js +0 -59
  50. package/lib/labelMessages/labelMessages.spec.js +0 -176
  51. package/lib/labels/label.spec.js +0 -162
  52. package/lib/list/list.spec.js +0 -769
  53. package/lib/menus/float/float-menu.spec.js +0 -221
  54. package/lib/menus/sidenav/sidenav.spec.js +0 -379
  55. package/lib/panel/panel.spec.js +0 -216
  56. package/lib/popover/popover.spec.js +0 -146
  57. package/lib/progress/progress.spec.js +0 -94
  58. package/lib/radio/radio.spec.js +0 -189
  59. package/lib/spinner/spinner.spec.js +0 -152
  60. package/lib/split/split.spec.js +0 -163
  61. package/lib/table/table.spec.js +0 -352
  62. package/lib/tabs/tabs.spec.js +0 -321
  63. package/lib/toolbar/toolbar.spec.js +0 -394
  64. package/lib/tooltip/tooltip.spec.js +0 -215
  65. package/lib/treeview/treeview.spec.js +0 -279
  66. package/lib/uitour/uitour.spec.js +0 -176
@@ -80,6 +80,8 @@ interface IFieldProps extends WithFieldProps {
80
80
  min?: number;
81
81
  max?: number;
82
82
  autoFocus?: boolean;
83
+ autoCompleteMask?: 'left' | 'right';
84
+ mask?: string;
83
85
  }
84
86
  interface CustomEvent {
85
87
  target: {
@@ -591,6 +591,14 @@ declare const _default: {
591
591
  viewbox: string;
592
592
  paths: string[];
593
593
  };
594
+ videoCamFill: {
595
+ viewbox: string;
596
+ paths: string[];
597
+ };
598
+ videoCamOutline: {
599
+ viewbox: string;
600
+ paths: string[];
601
+ };
594
602
  };
595
603
 
596
604
  export { _default as default };
@@ -596,6 +596,14 @@ var _default = {
596
596
  download: {
597
597
  viewbox: '0 0 16 16',
598
598
  paths: ['M12.5 6h-3.5v-4h-2v4h-3.5l4.5 4zM11.611 8.322l-0.525 0.462c1.746 0.35 2.914 0.987 2.914 1.716 0 1.105-2.686 2-6 2s-6-0.895-6-2c0-0.728 1.168-1.366 2.914-1.716l-0.525-0.462c-2.604 0.495-4.389 1.508-4.389 2.678 0 1.657 3.582 3 8 3s8-1.343 8-3c0-1.17-1.785-2.183-4.389-2.678z']
599
+ },
600
+ videoCamFill: {
601
+ viewbox: '0 0 16 16',
602
+ paths: ['M15.294 4.004c-0.165 0-0.335 0.058-0.491 0.168l-2.803 1.978v-1.651c0-0.825-0.675-1.5-1.5-1.5h-9c-0.825 0-1.5 0.675-1.5 1.5v7c0 0.825 0.675 1.5 1.5 1.5h9c0.825 0 1.5-0.675 1.5-1.5v-1.65l2.803 1.978c0.156 0.11 0.326 0.168 0.491 0.168 0 0 0 0 0 0 0.22 0 0.421-0.101 0.551-0.278 0.101-0.137 0.154-0.313 0.154-0.51v-6.415c-0-0.518-0.355-0.788-0.706-0.788zM4 11v-6l5 3-5 3z']
603
+ },
604
+ videoCamOutline: {
605
+ viewbox: '0 0 16 16',
606
+ paths: ['M15.294 4.004c-0.165 0-0.335 0.058-0.491 0.168l-2.803 1.978v-1.651c0-0.825-0.675-1.5-1.5-1.5h-9c-0.825 0-1.5 0.675-1.5 1.5v7c0 0.825 0.675 1.5 1.5 1.5h9c0.825 0 1.5-0.675 1.5-1.5v-1.65l2.803 1.978c0.156 0.11 0.326 0.168 0.491 0.168 0 0 0 0 0 0 0.22 0 0.421-0.101 0.551-0.278 0.101-0.137 0.154-0.313 0.154-0.51v-6.415c-0-0.518-0.355-0.788-0.706-0.788zM15 10.743l-2.469-1.743h-1.531v2.5c0 0.271-0.229 0.5-0.5 0.5h-9c-0.271 0-0.5-0.229-0.5-0.5v-7c0-0.271 0.229-0.5 0.5-0.5h9c0.271 0 0.5 0.229 0.5 0.5v2.5h1.531l2.469-1.743v5.486z', 'M4 5l5 3-5 3z']
599
607
  }
600
608
  };
601
609
  exports.default = _default;
@@ -4,7 +4,11 @@ import '../@types/PointerEvents.js';
4
4
  import '../@types/SizePixels.js';
5
5
  import '../@types/Icon.js';
6
6
  import './helper.js';
7
+ import '../@types/Position.js';
7
8
 
8
- declare const Icon: ({ name, onClick, svgStruct, size, style, visible, disabled, customClass, color, pointerEvents, }: IIconProps) => JSX.Element | null;
9
+ declare const _default: {
10
+ (props: IIconProps): JSX.Element;
11
+ displayName: string;
12
+ };
9
13
 
10
- export { Icon as default };
14
+ export { _default as default };
@@ -1,17 +1,20 @@
1
1
  "use strict";
2
2
 
3
+ function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); }
3
4
  Object.defineProperty(exports, "__esModule", {
4
5
  value: true
5
6
  });
6
7
  exports.default = void 0;
7
- var _react = _interopRequireDefault(require("react"));
8
+ var _react = _interopRequireWildcard(require("react"));
8
9
  var _helper = _interopRequireDefault(require("./helper"));
10
+ var _withTooltip = _interopRequireDefault(require("../internals/withTooltip"));
9
11
  require("../assets/styles/icon.scss");
10
12
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
13
+ 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); }
14
+ 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; }
11
15
  var listIcon = _helper.default;
12
16
  var disabledIconColor = 'rgb(193, 193, 193)';
13
17
  var Icon = function Icon(_ref) {
14
- var _getPaths;
15
18
  var name = _ref.name,
16
19
  _onClick = _ref.onClick,
17
20
  svgStruct = _ref.svgStruct,
@@ -25,34 +28,52 @@ var Icon = function Icon(_ref) {
25
28
  disabled = _ref$disabled === void 0 ? false : _ref$disabled,
26
29
  _ref$customClass = _ref.customClass,
27
30
  customClass = _ref$customClass === void 0 ? '' : _ref$customClass,
31
+ _ref$customClassForCo = _ref.customClassForContainer,
32
+ customClassForContainer = _ref$customClassForCo === void 0 ? '' : _ref$customClassForCo,
28
33
  _ref$color = _ref.color,
29
34
  color = _ref$color === void 0 ? '#676464' : _ref$color,
30
35
  _ref$pointerEvents = _ref.pointerEvents,
31
- pointerEvents = _ref$pointerEvents === void 0 ? 'none' : _ref$pointerEvents;
36
+ pointerEvents = _ref$pointerEvents === void 0 ? 'none' : _ref$pointerEvents,
37
+ targetRef = _ref.targetRef,
38
+ tooltip = _ref.tooltip;
39
+ var refSvg = (0, _react.useRef)(null);
32
40
  var getPaths = function getPaths() {
33
41
  return name ? listIcon[name].paths : svgStruct === null || svgStruct === void 0 ? void 0 : svgStruct.paths;
34
42
  };
43
+ var getSvg = function getSvg() {
44
+ var _getPaths;
45
+ return /*#__PURE__*/_react.default.createElement("svg", {
46
+ "data-testid": "icon",
47
+ onClick: function onClick() {
48
+ if (_onClick && !disabled) _onClick();
49
+ },
50
+ ref: function ref(r) {
51
+ refSvg.current = r;
52
+ },
53
+ width: "".concat(size, "px"),
54
+ height: "".concat(size, "px"),
55
+ fill: disabled ? disabledIconColor : color,
56
+ viewBox: name ? listIcon[name].viewbox : svgStruct === null || svgStruct === void 0 ? void 0 : svgStruct.viewbox,
57
+ className: "icon-component ".concat(customClass),
58
+ pointerEvents: pointerEvents,
59
+ style: style
60
+ }, (_getPaths = getPaths()) === null || _getPaths === void 0 ? void 0 : _getPaths.map(function (value) {
61
+ return /*#__PURE__*/_react.default.createElement("path", {
62
+ "data-testid": "icon-path",
63
+ d: value,
64
+ key: value
65
+ });
66
+ }));
67
+ };
35
68
  if (!name && !svgStruct) throw new Error('One of the "name" and "svgStruct" props must be filled');
36
69
  if (!visible) return null;
37
- return /*#__PURE__*/_react.default.createElement("svg", {
38
- "data-testid": "icon",
39
- onClick: function onClick() {
40
- if (_onClick && !disabled) _onClick();
41
- },
42
- width: "".concat(size, "px"),
43
- height: "".concat(size, "px"),
44
- fill: disabled ? disabledIconColor : color,
45
- viewBox: name ? listIcon[name].viewbox : svgStruct === null || svgStruct === void 0 ? void 0 : svgStruct.viewbox,
46
- className: "icon-component ".concat(customClass),
47
- pointerEvents: pointerEvents,
48
- style: style
49
- }, (_getPaths = getPaths()) === null || _getPaths === void 0 ? void 0 : _getPaths.map(function (value) {
50
- return /*#__PURE__*/_react.default.createElement("path", {
51
- "data-testid": "icon-path",
52
- d: value,
53
- key: value
54
- });
55
- }));
70
+ if (!tooltip) return getSvg();
71
+ return /*#__PURE__*/_react.default.createElement("div", {
72
+ className: "icon-component-container ".concat(customClassForContainer),
73
+ ref: function ref(r) {
74
+ if (targetRef && r) targetRef(r);
75
+ }
76
+ }, getSvg());
56
77
  };
57
- var _default = Icon;
78
+ var _default = (0, _withTooltip.default)(Icon);
58
79
  exports.default = _default;
@@ -2,6 +2,7 @@ import { CSSProperties } from 'react';
2
2
  import { PointerEvents } from '../@types/PointerEvents.js';
3
3
  import { SizePixels } from '../@types/SizePixels.js';
4
4
  import { IconNames } from '../@types/Icon.js';
5
+ import { Position } from '../@types/Position.js';
5
6
  import './helper.js';
6
7
 
7
8
  type ListIconType = {
@@ -14,6 +15,7 @@ interface IIconProps {
14
15
  size?: SizePixels;
15
16
  color?: string;
16
17
  customClass?: string;
18
+ customClassForContainer?: string;
17
19
  style?: CSSProperties;
18
20
  visible?: boolean;
19
21
  disabled?: boolean;
@@ -25,6 +27,10 @@ interface IIconProps {
25
27
  paths: Array<string>;
26
28
  };
27
29
  onClick?: () => void;
30
+ tooltipPosition?: Exclude<Position, 'center'>;
31
+ tooltipWidth?: string | number;
32
+ tooltip?: string;
33
+ targetRef?: (ref: HTMLDivElement) => void;
28
34
  }
29
35
 
30
36
  export { IIconProps, ListIconType };
@@ -12,7 +12,7 @@ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (O
12
12
  function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
13
13
  function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
14
14
  function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return _typeof(key) === "symbol" ? key : String(key); }
15
- function _toPrimitive(input, hint) { if (_typeof(input) !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (_typeof(res) !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); } /* eslint-disable @typescript-eslint/no-explicit-any */
15
+ function _toPrimitive(input, hint) { if (_typeof(input) !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (_typeof(res) !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
16
16
  /* eslint-disable no-plusplus */
17
17
  function extractNonMaskProps(props, maskProps) {
18
18
  var nonMask = _objectSpread({}, props);
@@ -60,7 +60,8 @@ var IMaskHOC = function IMaskHOC(ComposedComponent) {
60
60
  value = _props$value === void 0 ? '' : _props$value,
61
61
  onChange = props.onChange,
62
62
  _props$isDateField = props.isDateField,
63
- isDateField = _props$isDateField === void 0 ? false : _props$isDateField;
63
+ isDateField = _props$isDateField === void 0 ? false : _props$isDateField,
64
+ autoCompleteMask = props.autoCompleteMask;
64
65
  var maskOptions = {
65
66
  placeholderChar: placeholderChar === '' ? ' ' : placeholderChar,
66
67
  lazy: lazy,
@@ -127,6 +128,24 @@ var IMaskHOC = function IMaskHOC(ComposedComponent) {
127
128
  }, props.unmask ? unmaskedValue : maskRef.current.value);
128
129
  }
129
130
  }, [props.onComplete]);
131
+ var autoCompleteMaskValue = (0, _react.useCallback)(function (eventTargetValue) {
132
+ if (autoCompleteMask && eventTargetValue.length && maskRef.current && elementRef.current) {
133
+ var sizeMask = maskRef.current.mask.toString().replace(/\D+/g, '').length;
134
+ if (sizeMask > eventTargetValue.length) {
135
+ switch (autoCompleteMask) {
136
+ case 'left':
137
+ setValue(eventTargetValue.padStart(sizeMask, '0'));
138
+ break;
139
+ case 'right':
140
+ setValue(eventTargetValue.padEnd(sizeMask, '0'));
141
+ break;
142
+ default:
143
+ setValue(eventTargetValue);
144
+ break;
145
+ }
146
+ }
147
+ }
148
+ }, [autoCompleteMask, maskRef.current, elementRef.current]);
130
149
  var getMask = function getMask() {
131
150
  var element = elementRef.current;
132
151
  if (element) {
@@ -182,6 +201,10 @@ var IMaskHOC = function IMaskHOC(ComposedComponent) {
182
201
  return /*#__PURE__*/_react.default.createElement(ComposedComponent, _extends({}, helpers.extractNonMaskProps(props, maskOptions), {
183
202
  onDeniedActions: onDenied,
184
203
  defaultValue: value,
204
+ onBlur: function onBlur(e) {
205
+ autoCompleteMaskValue(e.target.value);
206
+ if (props.onBlur) props.onBlur(e);
207
+ },
185
208
  onChange: function onChange(e) {
186
209
  return setValue(e.target.value);
187
210
  },
@@ -46,6 +46,7 @@ interface IBaseMaskProps {
46
46
  returnFormattedValueOnBlur?: boolean;
47
47
  returnFormattedValueOnKeyDown?: boolean;
48
48
  isDateField?: boolean;
49
+ autoCompleteMask?: 'left' | 'right';
49
50
  }
50
51
  interface ICnpjFieldProps extends IBaseMaskProps {
51
52
  value?: string;
@@ -7,7 +7,7 @@ exports.default = void 0;
7
7
  var _react = _interopRequireDefault(require("react"));
8
8
  var _InputTextBase = _interopRequireDefault(require("../base/InputTextBase"));
9
9
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
10
- function _extends() { _extends = Object.assign ? Object.assign.bind() : 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); } // eslint-disable-next-line import/no-named-as-default
10
+ function _extends() { _extends = Object.assign ? Object.assign.bind() : 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); }
11
11
  var TextArea = function TextArea(props) {
12
12
  var rows = props.rows,
13
13
  cols = props.cols,
@@ -99,6 +99,7 @@ interface IMaskHOCProps {
99
99
  skeletonize?: boolean;
100
100
  mask?: string | NumberConstructor;
101
101
  isDateField?: boolean;
102
+ autoCompleteMask?: 'left' | 'right';
102
103
  }
103
104
  interface IDropdownSelectProps {
104
105
  idKey: string;
@@ -6,11 +6,11 @@ Object.defineProperty(exports, "__esModule", {
6
6
  });
7
7
  exports.default = void 0;
8
8
  var _react = _interopRequireWildcard(require("react"));
9
+ var _withTooltip = _interopRequireDefault(require("../../internals/withTooltip"));
9
10
  var _icons = _interopRequireDefault(require("../../icons"));
10
11
  var _MenuLink = _interopRequireDefault(require("./MenuLink"));
11
12
  var _helpers = require("./helpers");
12
13
  var _permissionValidations = require("../../permissionValidations");
13
- var _withTooltip = _interopRequireDefault(require("../../internals/withTooltip"));
14
14
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
15
15
  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); }
16
16
  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; }
@@ -44,6 +44,8 @@ var NavMenuItem = function NavMenuItem(props) {
44
44
  _useState4 = _slicedToArray(_useState3, 2),
45
45
  targetDimensions = _useState4[0],
46
46
  setTargetDimensions = _useState4[1];
47
+ var submenuContainerRef = (0, _react.useRef)(null);
48
+ var submenuContentRef = (0, _react.useRef)(null);
47
49
  var options = [_permissionValidations.OPTIONS_ON_DENIED.disabled, _permissionValidations.OPTIONS_ON_DENIED.unvisible];
48
50
  var _useState5 = (0, _react.useState)((0, _permissionValidations.actionsOnPermissionDenied)(options, permissionAttr)),
49
51
  _useState6 = _slicedToArray(_useState5, 1),
@@ -65,6 +67,13 @@ var NavMenuItem = function NavMenuItem(props) {
65
67
  var contextValues = {
66
68
  toggleSubMenu: toggleSubMenu
67
69
  };
70
+ (0, _react.useEffect)(function () {
71
+ var _submenuContainerRef$, _submenuContentRef$cu, _submenuContentRef$cu2;
72
+ var heigthSubmenuContainer = ((_submenuContainerRef$ = submenuContainerRef.current) === null || _submenuContainerRef$ === void 0 ? void 0 : _submenuContainerRef$.clientHeight) || 0;
73
+ var heigthSubmenuContent = ((_submenuContentRef$cu = submenuContentRef.current) === null || _submenuContentRef$cu === void 0 ? void 0 : _submenuContentRef$cu.clientHeight) || 0;
74
+ var maxHeigthSubMenu = (window.innerHeight - targetDimensions.top - (heigthSubmenuContainer - heigthSubmenuContent) - 1).toString().concat('px') || '0px';
75
+ (_submenuContentRef$cu2 = submenuContentRef.current) === null || _submenuContentRef$cu2 === void 0 ? void 0 : _submenuContentRef$cu2.style.setProperty('max-height', maxHeigthSubMenu);
76
+ }, [showSubMenu]);
68
77
  if (unvisible) return null;
69
78
  return /*#__PURE__*/_react.default.createElement(_helpers.SubMenuContext.Provider, {
70
79
  value: contextValues
@@ -84,10 +93,12 @@ var NavMenuItem = function NavMenuItem(props) {
84
93
  }), /*#__PURE__*/_react.default.createElement(_react.Fragment, null, iconName && /*#__PURE__*/_react.default.createElement(_icons.default, {
85
94
  name: iconName,
86
95
  size: menuSize === 'small' && 16 || menuSize === 'medium' && 24 || menuSize === 'large' && 32 || 16,
96
+ customClassForContainer: "menuicon-container",
87
97
  customClass: "menuicon"
88
98
  }), isExpanded && /*#__PURE__*/_react.default.createElement("span", {
89
99
  className: "title"
90
100
  }, title), !childrenIsSubMenu && children)), showSubMenu && children && childrenIsSubMenu && !disabled && !openSearchMenuPopup && /*#__PURE__*/_react.default.createElement("div", {
101
+ ref: submenuContainerRef,
91
102
  className: "submenu-container",
92
103
  style: {
93
104
  marginLeft: targetDimensions.width,
@@ -98,6 +109,7 @@ var NavMenuItem = function NavMenuItem(props) {
98
109
  }, /*#__PURE__*/_react.default.createElement("h1", {
99
110
  className: "title"
100
111
  }, title), /*#__PURE__*/_react.default.createElement("div", {
112
+ ref: submenuContentRef,
101
113
  className: "submenu",
102
114
  style: {
103
115
  gridTemplateColumns: "repeat(".concat(columnsQtty, ", 1fr)")
@@ -1,6 +1,6 @@
1
1
  import { ITableHeaderProps } from './types.js';
2
2
  import 'react';
3
3
 
4
- declare const HeaderColumn: ({ customClass, style, children, textAlign, visible, }: ITableHeaderProps) => JSX.Element | null;
4
+ declare const HeaderColumn: ({ customClass, style, children, textAlign, visible, id, }: ITableHeaderProps) => JSX.Element | null;
5
5
 
6
6
  export { HeaderColumn as default };
@@ -17,7 +17,8 @@ var HeaderColumn = function HeaderColumn(_ref) {
17
17
  children = _ref.children,
18
18
  textAlign = _ref.textAlign,
19
19
  _ref$visible = _ref.visible,
20
- visible = _ref$visible === void 0 ? true : _ref$visible;
20
+ visible = _ref$visible === void 0 ? true : _ref$visible,
21
+ id = _ref.id;
21
22
  var _useContext = (0, _react.useContext)(_helpers.default),
22
23
  skeletonize = _useContext.skeletonize,
23
24
  vertical = _useContext.vertical,
@@ -26,6 +27,7 @@ var HeaderColumn = function HeaderColumn(_ref) {
26
27
  skeletonInRows = _useContext$skeletonI === void 0 ? 10 : _useContext$skeletonI;
27
28
  if (!visible) return null;
28
29
  return /*#__PURE__*/_react.default.createElement("th", {
30
+ id: id,
29
31
  className: "headercolumn ".concat(customClass, " text-align-").concat(textAlign),
30
32
  style: style
31
33
  }, skeletonize && (skeletonInHeader || !skeletonInRows) && !vertical ? /*#__PURE__*/_react.default.createElement(_skeleton.default, {
@@ -24,6 +24,7 @@ interface ITableHeaderProps extends TableHTMLAttributes<HTMLTableElement> {
24
24
  customClass?: string;
25
25
  textAlign?: string;
26
26
  visible?: boolean;
27
+ id?: string;
27
28
  }
28
29
  interface ITableBodyProps extends TableHTMLAttributes<HTMLTableElement> {
29
30
  children?: ReactNode;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "linear-react-components-ui",
3
- "version": "1.0.12-beta.1",
3
+ "version": "1.0.12-beta.10",
4
4
  "description": "Linear Sistemas ReactJs Components",
5
5
  "main": "lib/index.js",
6
6
  "module": "lib/index.cjs",
@@ -1,133 +0,0 @@
1
- "use strict";
2
-
3
- var _react = _interopRequireDefault(require("react"));
4
-
5
- require("babel-polyfill");
6
-
7
- require("@testing-library/jest-dom");
8
-
9
- var _react2 = require("@testing-library/react");
10
-
11
- var _Message = _interopRequireDefault(require("./Message"));
12
-
13
- var _icons = _interopRequireDefault(require("../icons"));
14
-
15
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
16
-
17
- function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }
18
-
19
- function _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; }
20
-
21
- 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); }
22
-
23
- var mockAlert = function mockAlert(props) {
24
- return /*#__PURE__*/_react.default.createElement(_Message.default, _extends({
25
- id: 3,
26
- message: "Alerta",
27
- position: "rightTop",
28
- closeButton: true,
29
- customClass: "mock-alert",
30
- timeout: 500
31
- }, props));
32
- };
33
-
34
- describe('Alert', function () {
35
- describe('Message', function () {
36
- it('should render correctly', function () {
37
- var mockHandleClose = jest.fn();
38
-
39
- var _render = (0, _react2.render)(mockAlert({
40
- handleClose: mockHandleClose
41
- })),
42
- container = _render.container;
43
-
44
- expect(container.firstChild).toBeTruthy();
45
- expect(container.firstChild).toHaveTextContent('Alerta');
46
- });
47
- it('should close with timeout 500ms', /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee() {
48
- var mockHandleClose;
49
- return regeneratorRuntime.wrap(function _callee$(_context) {
50
- while (1) {
51
- switch (_context.prev = _context.next) {
52
- case 0:
53
- mockHandleClose = jest.fn();
54
- (0, _react2.render)(mockAlert({
55
- handleClose: mockHandleClose
56
- }));
57
- _context.next = 4;
58
- return (0, _react2.waitFor)(function () {
59
- return expect(mockHandleClose).toBeCalledTimes(1);
60
- });
61
-
62
- case 4:
63
- case "end":
64
- return _context.stop();
65
- }
66
- }
67
- }, _callee);
68
- })));
69
- it('should apply custom class', function () {
70
- var mockHandleClose = jest.fn();
71
-
72
- var _render2 = (0, _react2.render)(mockAlert({
73
- handleClose: mockHandleClose
74
- })),
75
- container = _render2.container;
76
-
77
- expect(container.firstChild).toHaveClass('mock-alert');
78
- });
79
- it('should render icon', function () {
80
- var mockHandleClose = jest.fn();
81
-
82
- var _render3 = (0, _react2.render)(mockAlert({
83
- handleClose: mockHandleClose,
84
- icon: /*#__PURE__*/_react.default.createElement(_icons.default, {
85
- name: "user"
86
- })
87
- })),
88
- container = _render3.container,
89
- getByTestId = _render3.getByTestId;
90
-
91
- expect(container.querySelector('.-icon')).toContainElement(getByTestId('icon'));
92
- });
93
- it('should render icon by iconName', function () {
94
- var mockHandleClose = jest.fn();
95
-
96
- var _render4 = (0, _react2.render)(mockAlert({
97
- handleClose: mockHandleClose,
98
- iconName: 'user'
99
- })),
100
- container = _render4.container,
101
- getByTestId = _render4.getByTestId;
102
-
103
- expect(container.querySelector('.-icon')).toContainElement(getByTestId('icon'));
104
- });
105
- it('should change icon color', function () {
106
- var mockHandleClose = jest.fn();
107
-
108
- var _render5 = (0, _react2.render)(mockAlert({
109
- handleClose: mockHandleClose,
110
- iconName: 'user',
111
- color: 'red'
112
- })),
113
- getByTestId = _render5.getByTestId;
114
-
115
- expect(getByTestId('icon')).toHaveAttribute('fill', 'red');
116
- });
117
- it('should fire event on click', function () {
118
- var mockHandleClose = jest.fn();
119
-
120
- var _render6 = (0, _react2.render)(mockAlert({
121
- handleClose: mockHandleClose
122
- })),
123
- container = _render6.container,
124
- getByRole = _render6.getByRole;
125
-
126
- _react2.fireEvent.click(getByRole('button'));
127
-
128
- expect(container.querySelector('.close')).toBeInTheDocument();
129
- expect(container.querySelector('.close-button')).toBeInTheDocument();
130
- expect(mockHandleClose).toBeCalledTimes(1);
131
- });
132
- });
133
- });