armtek-uikit-react 1.0.260 → 1.0.264

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 (84) hide show
  1. package/assets/Accordion.scss +123 -123
  2. package/assets/Adornment.scss +22 -22
  3. package/assets/Alert.scss +56 -56
  4. package/assets/Avatar.scss +111 -111
  5. package/assets/AvatarGroup.scss +47 -47
  6. package/assets/BackDrop.scss +39 -39
  7. package/assets/Badge.scss +96 -96
  8. package/assets/Button.scss +750 -750
  9. package/assets/ButtonGroup.scss +37 -37
  10. package/assets/ButtonIcon.scss +59 -32
  11. package/assets/Card.scss +13 -13
  12. package/assets/Checkbox.scss +313 -313
  13. package/assets/Chip.scss +327 -327
  14. package/assets/DateField.scss +2 -2
  15. package/assets/DatePicker.scss +72 -72
  16. package/assets/Dropdown.scss +42 -42
  17. package/assets/FormControls.scss +14 -14
  18. package/assets/HelperText.scss +11 -11
  19. package/assets/Icon.scss +30 -30
  20. package/assets/Interval.scss +34 -34
  21. package/assets/Link.scss +96 -96
  22. package/assets/ListItem.scss +76 -76
  23. package/assets/Loader.scss +56 -56
  24. package/assets/Logo.scss +28 -28
  25. package/assets/Modal.scss +103 -103
  26. package/assets/Pagination.scss +3 -3
  27. package/assets/Paper.scss +22 -22
  28. package/assets/Period.scss +8 -8
  29. package/assets/Popper.scss +2 -2
  30. package/assets/Rating.scss +26 -26
  31. package/assets/Select.scss +85 -85
  32. package/assets/Skeleton.scss +25 -25
  33. package/assets/Slider.scss +5 -5
  34. package/assets/Stack.scss +27 -27
  35. package/assets/Status.scss +69 -69
  36. package/assets/StepItem.scss +89 -89
  37. package/assets/StepItemIcon.scss +47 -47
  38. package/assets/Stepper.scss +30 -30
  39. package/assets/Switch.scss +67 -67
  40. package/assets/Table.scss +52 -52
  41. package/assets/TextArea.scss +23 -18
  42. package/assets/TextField.scss +206 -198
  43. package/assets/Tooltip.scss +17 -17
  44. package/assets/classes.scss +422 -422
  45. package/assets/fonts.scss +24 -24
  46. package/assets/global.scss +222 -222
  47. package/assets/styles.min.css +1 -1
  48. package/assets/styles.min.css.map +1 -1
  49. package/assets/styles.scss +46 -46
  50. package/assets/variables.scss +13 -13
  51. package/lib/helpers/helpers.d.ts +1 -1
  52. package/lib/helpers/helpers.js +1 -1
  53. package/lib/hooks/useEnhancedEffect.js +6 -6
  54. package/lib/hooks/useTimeout.js +2 -2
  55. package/package.json +1 -1
  56. package/ui/Avatar/Avatar.d.ts +10 -1
  57. package/ui/Avatar/Avatar.js +4 -2
  58. package/ui/ButtonIcon/ButtonIcon.js +5 -2
  59. package/ui/Card/Card.d.ts +1 -1
  60. package/ui/Card/Card.js +4 -2
  61. package/ui/Chip/Chip.d.ts +3 -2
  62. package/ui/Chip/Chip.js +4 -2
  63. package/ui/Form/DateField/DateField.js +2 -2
  64. package/ui/Form/DatePicker/styles.css +802 -802
  65. package/ui/Form/Password/Password.d.ts +4 -0
  66. package/ui/Form/TextArea/TextArea.d.ts +11 -1
  67. package/ui/Form/TextArea/TextArea.js +15 -7
  68. package/ui/Form/TextField/TextField.d.ts +11 -0
  69. package/ui/Form/TextField/TextField.js +53 -4
  70. package/ui/Icon/Mi.d.ts +17 -1
  71. package/ui/Icon/Mi.js +5 -3
  72. package/ui/Icon/Mis.d.ts +1 -1
  73. package/ui/Icon/Mis.js +4 -3
  74. package/ui/Link/Link.d.ts +3 -2
  75. package/ui/Link/Link.js +4 -2
  76. package/ui/Popper/Popper.d.ts +1 -1
  77. package/ui/Popper/Popper.js +4 -3
  78. package/ui/Popper/PopperBase.d.ts +1 -1
  79. package/ui/Popper/PopperBase.js +5 -4
  80. package/ui/Slider/style.scss +346 -346
  81. package/ui/Stack/Stack.d.ts +1 -1
  82. package/ui/Stack/Stack.js +3 -2
  83. package/ui/Status/Status.d.ts +4 -3
  84. package/ui/Status/Status.js +4 -2
@@ -6,8 +6,12 @@ export declare const Password: import("react").ForwardRefExoticComponent<{
6
6
  errorTooltip?: string;
7
7
  success?: boolean;
8
8
  helperText?: string | import("react").ReactNode;
9
+ startAdornment?: string | import("react").ReactNode;
9
10
  endAdornment?: string | import("react").ReactNode;
10
11
  multiline?: boolean;
12
+ rows?: number;
13
+ minRows?: number;
14
+ maxRows?: number;
11
15
  focused?: boolean;
12
16
  editable?: boolean;
13
17
  classes?: Partial<{
@@ -1,6 +1,12 @@
1
1
  import { TextFieldProps } from '../TextField/TextField';
2
- export type TextAreaProps = {} & TextFieldProps;
2
+ export type TextAreaProps = {
3
+ minRows?: number;
4
+ maxRows?: number;
5
+ } & TextFieldProps;
3
6
  declare const TextArea: import("react").ForwardRefExoticComponent<{
7
+ minRows?: number;
8
+ maxRows?: number;
9
+ } & {
4
10
  label?: string;
5
11
  size?: Exclude<import("../../../types/theme").SizeType, "extraLarge" | "medium">;
6
12
  variant?: import("../../../types/theme").VariantType;
@@ -8,8 +14,12 @@ declare const TextArea: import("react").ForwardRefExoticComponent<{
8
14
  errorTooltip?: string;
9
15
  success?: boolean;
10
16
  helperText?: string | import("react").ReactNode;
17
+ startAdornment?: string | import("react").ReactNode;
11
18
  endAdornment?: string | import("react").ReactNode;
12
19
  multiline?: boolean;
20
+ rows?: number;
21
+ minRows?: number;
22
+ maxRows?: number;
13
23
  focused?: boolean;
14
24
  editable?: boolean;
15
25
  classes?: Partial<{
@@ -9,24 +9,32 @@ var _react = require("react");
9
9
  var _clsx = _interopRequireDefault(require("clsx"));
10
10
  var _jsxRuntime = require("react/jsx-runtime");
11
11
  const TextArea = /*#__PURE__*/(0, _react.forwardRef)((props, ref) => {
12
- var _textareaRef$current, _textareaRef$current2;
13
12
  let {
14
13
  className,
14
+ style,
15
+ minRows = 3,
16
+ maxRows = 10,
17
+ rows,
15
18
  ...restProps
16
19
  } = props;
17
- let [minHeight, setMinHeight] = (0, _react.useState)(0);
18
20
  let textareaRef = (0, _react.useRef)(null);
21
+ const getRowsCount = value => {
22
+ if (typeof value !== 'number' || !Number.isFinite(value)) return undefined;
23
+ return Math.max(1, Math.floor(value));
24
+ };
25
+ const normalizedRows = getRowsCount(rows);
26
+ const normalizedMinRows = getRowsCount(minRows);
27
+ const initialRows = normalizedRows !== undefined ? normalizedRows : normalizedMinRows;
19
28
  (0, _react.useImperativeHandle)(ref, () => {
20
29
  return textareaRef.current;
21
30
  }, []);
22
- (0, _react.useEffect)(() => {
23
- if (textareaRef.current && 'clientHeight' in textareaRef.current) setMinHeight(textareaRef.current.clientHeight);
24
- }, [textareaRef]);
25
- let textHeight = (((_textareaRef$current = textareaRef.current) == null ? void 0 : _textareaRef$current.scrollHeight) || 0) < minHeight ? minHeight : (_textareaRef$current2 = textareaRef.current) == null ? void 0 : _textareaRef$current2.scrollHeight;
26
31
  return /*#__PURE__*/(0, _jsxRuntime.jsx)(_jsxRuntime.Fragment, {
27
32
  children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_TextField.default, {
28
33
  ref: textareaRef,
29
34
  ...restProps,
35
+ rows: initialRows,
36
+ minRows: normalizedMinRows,
37
+ maxRows: maxRows,
30
38
  className: (0, _clsx.default)('arm-textarea', ['arm-textarea_size_' + restProps.size], className),
31
39
  multiline: true,
32
40
  classes: {
@@ -34,7 +42,7 @@ const TextArea = /*#__PURE__*/(0, _react.forwardRef)((props, ref) => {
34
42
  ...restProps.classes
35
43
  },
36
44
  style: {
37
- height: textHeight + 'px'
45
+ ...style
38
46
  }
39
47
  })
40
48
  });
@@ -9,8 +9,12 @@ export type TextFieldProps = {
9
9
  errorTooltip?: string;
10
10
  success?: boolean;
11
11
  helperText?: string | ReactNode;
12
+ startAdornment?: string | ReactNode;
12
13
  endAdornment?: string | ReactNode;
13
14
  multiline?: boolean;
15
+ rows?: number;
16
+ minRows?: number;
17
+ maxRows?: number;
14
18
  focused?: boolean;
15
19
  editable?: boolean;
16
20
  classes?: Partial<Classes>;
@@ -24,8 +28,12 @@ export declare const TextField: import("react").ForwardRefExoticComponent<{
24
28
  errorTooltip?: string;
25
29
  success?: boolean;
26
30
  helperText?: string | ReactNode;
31
+ startAdornment?: string | ReactNode;
27
32
  endAdornment?: string | ReactNode;
28
33
  multiline?: boolean;
34
+ rows?: number;
35
+ minRows?: number;
36
+ maxRows?: number;
29
37
  focused?: boolean;
30
38
  editable?: boolean;
31
39
  classes?: Partial<Classes>;
@@ -46,6 +54,9 @@ export declare const TextFieldInput: import("react").ForwardRefExoticComponent<{
46
54
  size?: TextFieldProps["size"];
47
55
  variant?: TextFieldProps["variant"];
48
56
  multiline?: boolean;
57
+ rows?: number;
58
+ minRows?: number;
59
+ maxRows?: number;
49
60
  error?: boolean;
50
61
  label?: string;
51
62
  wrapperClass?: string;
@@ -22,6 +22,7 @@ const TextField = exports.TextField = /*#__PURE__*/(0, _react.forwardRef)((props
22
22
  helperText,
23
23
  size = 'large',
24
24
  variant = 'solid',
25
+ startAdornment,
25
26
  endAdornment,
26
27
  className,
27
28
  classes,
@@ -54,6 +55,10 @@ const TextField = exports.TextField = /*#__PURE__*/(0, _react.forwardRef)((props
54
55
  setFocused(false);
55
56
  if (inputProps.onBlur) inputProps.onBlur(e);
56
57
  };
58
+ let startContent = /*#__PURE__*/(0, _jsxRuntime.jsx)(_Adornment.AdornmentContainer, {
59
+ className: 'arm-textfield__adornment arm-textfield__adornment_start',
60
+ children: startAdornment
61
+ });
57
62
  let endContent = /*#__PURE__*/(0, _jsxRuntime.jsxs)(_Adornment.AdornmentContainer, {
58
63
  className: 'arm-textfield__adornment',
59
64
  children: [endAdornment, error && /*#__PURE__*/(0, _jsxRuntime.jsx)(_Tooltip.default, {
@@ -91,7 +96,7 @@ const TextField = exports.TextField = /*#__PURE__*/(0, _react.forwardRef)((props
91
96
  error: error,
92
97
  success: success,
93
98
  className: classes == null ? void 0 : classes.root,
94
- children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(TextFieldInput, {
99
+ children: [startAdornment && startContent, /*#__PURE__*/(0, _jsxRuntime.jsx)(TextFieldInput, {
95
100
  WrapperProps: WrapperProps,
96
101
  wrapperClass: classes == null ? void 0 : classes.wrapper,
97
102
  className: classes == null ? void 0 : classes.input,
@@ -143,20 +148,62 @@ const TextFieldContainer = props => {
143
148
  };
144
149
  exports.TextFieldContainer = TextFieldContainer;
145
150
  const TextFieldInput = exports.TextFieldInput = /*#__PURE__*/(0, _react.forwardRef)((props, ref) => {
146
- var _ref$current, _ref$current2;
151
+ var _inputElementRef$curr, _inputElementRef$curr2;
147
152
  let {
148
153
  Component = 'input',
149
154
  size,
150
155
  variant,
151
156
  multiline,
157
+ rows,
158
+ minRows,
159
+ maxRows,
152
160
  error,
153
161
  focused,
154
162
  label,
155
163
  wrapperClass,
156
164
  WrapperProps,
157
165
  className,
166
+ onInput,
158
167
  ...inputProps
159
168
  } = props;
169
+ const inputElementRef = (0, _react.useRef)(null);
170
+ const setInputRef = node => {
171
+ inputElementRef.current = node;
172
+ if (typeof ref === 'function') ref(node);else if (ref) ref.current = node;
173
+ };
174
+ const getRowsCount = rows => {
175
+ if (typeof rows !== 'number' || !Number.isFinite(rows)) return undefined;
176
+ return Math.max(1, Math.floor(rows));
177
+ };
178
+ const getHeightByRows = (rows, textarea) => {
179
+ const style = window.getComputedStyle(textarea);
180
+ const parsedLineHeight = parseFloat(style.lineHeight);
181
+ const lineHeight = Number.isFinite(parsedLineHeight) ? parsedLineHeight : 20;
182
+ const verticalPadding = (parseFloat(style.paddingTop) || 0) + (parseFloat(style.paddingBottom) || 0);
183
+ const verticalBorders = (parseFloat(style.borderTopWidth) || 0) + (parseFloat(style.borderBottomWidth) || 0);
184
+ return lineHeight * rows + verticalPadding + verticalBorders;
185
+ };
186
+ const resizeTextarea = () => {
187
+ if (!multiline || !(inputElementRef.current instanceof HTMLTextAreaElement)) return;
188
+ const textarea = inputElementRef.current;
189
+ const minRowsValue = getRowsCount(minRows) || 1;
190
+ const maxRowsValue = getRowsCount(maxRows);
191
+ const resolvedMaxRows = maxRowsValue !== undefined ? Math.max(minRowsValue, maxRowsValue) : undefined;
192
+ const minHeight = getHeightByRows(minRowsValue, textarea);
193
+ const maxHeight = resolvedMaxRows !== undefined ? getHeightByRows(resolvedMaxRows, textarea) : undefined;
194
+ textarea.style.height = 'auto';
195
+ const hasValue = textarea.value.length > 0;
196
+ let nextHeight = hasValue ? Math.max(textarea.scrollHeight, minHeight) : minHeight;
197
+ if (maxHeight !== undefined) nextHeight = Math.min(nextHeight, maxHeight);
198
+ textarea.style.height = nextHeight + 'px';
199
+ };
200
+ (0, _react.useEffect)(() => {
201
+ resizeTextarea();
202
+ }, [multiline, minRows, maxRows, inputProps.value, inputProps.defaultValue, size]);
203
+ const handleInput = event => {
204
+ if (multiline) resizeTextarea();
205
+ if (onInput) onInput(event);
206
+ };
160
207
  const handleWheel = e => {
161
208
  if (inputProps.type === 'number' && e.target instanceof HTMLElement) e.target.blur();else if (props.onWheel) props.onWheel(e);
162
209
  };
@@ -168,8 +215,10 @@ const TextFieldInput = exports.TextFieldInput = /*#__PURE__*/(0, _react.forwardR
168
215
  'arm-textfield__wrapper_outlined': variant === 'outlined'
169
216
  }),
170
217
  children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(Component, {
171
- ref: ref,
218
+ ref: setInputRef,
172
219
  ...inputProps,
220
+ rows: multiline ? rows : undefined,
221
+ onInput: handleInput,
173
222
  onWheel: handleWheel,
174
223
  className: (0, _clsx.default)('arm-textfield__input', ['arm-textfield__input_size_' + size], ['arm-textfield__input_' + variant], {
175
224
  'arm-textfield__input_label': !!label,
@@ -179,7 +228,7 @@ const TextFieldInput = exports.TextFieldInput = /*#__PURE__*/(0, _react.forwardR
179
228
  }, className)
180
229
  }), label && /*#__PURE__*/(0, _jsxRuntime.jsx)("span", {
181
230
  className: (0, _clsx.default)('arm-textfield__label', {
182
- 'arm-textfield__label_focused': focused || !!props.value || typeof ((_ref$current = ref.current) == null ? void 0 : _ref$current.value) === 'string' && !!((_ref$current2 = ref.current) != null && _ref$current2.value),
231
+ 'arm-textfield__label_focused': focused || !!props.value || typeof ((_inputElementRef$curr = inputElementRef.current) == null ? void 0 : _inputElementRef$curr.value) === 'string' && !!((_inputElementRef$curr2 = inputElementRef.current) != null && _inputElementRef$curr2.value),
183
232
  'arm-textfield__label_small': size === 'small',
184
233
  'arm-textfield__label_error': error
185
234
  }),
package/ui/Icon/Mi.d.ts CHANGED
@@ -3,4 +3,20 @@ import { TooltipProps } from '../../ui/Tooltip';
3
3
  export type MiProps = {
4
4
  tooltipProps?: Omit<TooltipProps, 'text' | 'children'>;
5
5
  } & IconProps;
6
- export declare const Mi: (props: MiProps) => import("react/jsx-runtime").JSX.Element;
6
+ export declare const Mi: import("react").ForwardRefExoticComponent<{
7
+ tooltipProps?: Omit<TooltipProps, "text" | "children">;
8
+ } & {
9
+ icon: string;
10
+ variant?: import("../../types/theme").VariantType;
11
+ color?: import("../../types/theme").ColorType | import("../../types/theme").ColorStatusType;
12
+ size?: import("../../types/theme").SizeType;
13
+ theme?: import("../../types/theme").ThemeType;
14
+ fs?: number;
15
+ } & Omit<Omit<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLSpanElement>, HTMLSpanElement>, "ref">, keyof {
16
+ icon: string;
17
+ variant?: import("../../types/theme").VariantType;
18
+ color?: import("../../types/theme").ColorType | import("../../types/theme").ColorStatusType;
19
+ size?: import("../../types/theme").SizeType;
20
+ theme?: import("../../types/theme").ThemeType;
21
+ fs?: number;
22
+ }> & import("react").RefAttributes<HTMLSpanElement>>;
package/ui/Icon/Mi.js CHANGED
@@ -5,8 +5,9 @@ exports.__esModule = true;
5
5
  exports.Mi = void 0;
6
6
  var _Icon = _interopRequireDefault(require("./Icon"));
7
7
  var _Tooltip = _interopRequireDefault(require("../Tooltip"));
8
+ var _react = require("react");
8
9
  var _jsxRuntime = require("react/jsx-runtime");
9
- const Mi = props => {
10
+ const Mi = exports.Mi = /*#__PURE__*/(0, _react.forwardRef)((props, ref) => {
10
11
  const {
11
12
  tooltipProps,
12
13
  title,
@@ -17,13 +18,14 @@ const Mi = props => {
17
18
  ...tooltipProps,
18
19
  text: title,
19
20
  children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_Icon.default, {
21
+ ref: ref,
20
22
  variant: 'outlined',
21
23
  ...iconProps
22
24
  })
23
25
  }) : /*#__PURE__*/(0, _jsxRuntime.jsx)(_Icon.default, {
26
+ ref: ref,
24
27
  variant: 'outlined',
25
28
  ...iconProps
26
29
  })
27
30
  });
28
- };
29
- exports.Mi = Mi;
31
+ });
package/ui/Icon/Mis.d.ts CHANGED
@@ -1,2 +1,2 @@
1
1
  import { MiProps } from './Mi';
2
- export declare const Mis: (props: Omit<MiProps, "variant">) => import("react/jsx-runtime").JSX.Element;
2
+ export declare const Mis: import("react").ForwardRefExoticComponent<Omit<MiProps, "variant"> & import("react").RefAttributes<HTMLSpanElement>>;
package/ui/Icon/Mis.js CHANGED
@@ -3,13 +3,14 @@
3
3
  exports.__esModule = true;
4
4
  exports.Mis = void 0;
5
5
  var _Mi = require("./Mi");
6
+ var _react = require("react");
6
7
  var _jsxRuntime = require("react/jsx-runtime");
7
- const Mis = props => {
8
+ const Mis = exports.Mis = /*#__PURE__*/(0, _react.forwardRef)((props, ref) => {
8
9
  return /*#__PURE__*/(0, _jsxRuntime.jsx)(_jsxRuntime.Fragment, {
9
10
  children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_Mi.Mi, {
10
11
  ...props,
12
+ ref: ref,
11
13
  variant: 'contained'
12
14
  })
13
15
  });
14
- };
15
- exports.Mis = Mis;
16
+ });
package/ui/Link/Link.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import { ComponentPropsWithoutRef, ElementType } from 'react';
1
+ import { ComponentPropsWithoutRef, ElementType, ReactElement, RefAttributes } from 'react';
2
2
  import { ColorStatusType, ColorType, SizeType, ThemeType } from '../../types/theme';
3
3
  type LinkType = 'a';
4
4
  type OwnProps<T extends ElementType = LinkType> = {
@@ -11,5 +11,6 @@ type OwnProps<T extends ElementType = LinkType> = {
11
11
  disablestyles?: string;
12
12
  };
13
13
  export type LinkProps<T extends ElementType = LinkType> = OwnProps<T> & Omit<ComponentPropsWithoutRef<T>, keyof OwnProps<T>>;
14
- declare const Link: <T extends ElementType = LinkType>(props: LinkProps<T>) => import("react/jsx-runtime").JSX.Element;
14
+ type LinkComponent = <T extends ElementType = LinkType>(props: LinkProps<T> & RefAttributes<HTMLElement>) => ReactElement | null;
15
+ declare const Link: LinkComponent;
15
16
  export default Link;
package/ui/Link/Link.js CHANGED
@@ -3,9 +3,10 @@
3
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
4
  exports.__esModule = true;
5
5
  exports.default = void 0;
6
+ var _react = require("react");
6
7
  var _clsx = _interopRequireDefault(require("clsx"));
7
8
  var _jsxRuntime = require("react/jsx-runtime");
8
- const Link = props => {
9
+ const Link = /*#__PURE__*/(0, _react.forwardRef)((props, ref) => {
9
10
  let {
10
11
  border,
11
12
  children,
@@ -32,12 +33,13 @@ const Link = props => {
32
33
  } : {};
33
34
  return /*#__PURE__*/(0, _jsxRuntime.jsx)(_jsxRuntime.Fragment, {
34
35
  children: /*#__PURE__*/(0, _jsxRuntime.jsx)(Component, {
36
+ ref: ref,
35
37
  ...restProps,
36
38
  ...polymorphProps,
37
39
  className: !disablestyles ? classNames : className,
38
40
  children: children
39
41
  })
40
42
  });
41
- };
43
+ });
42
44
  var _default = exports.default = Link;
43
45
  module.exports = exports.default;
@@ -1,4 +1,4 @@
1
1
  import { PopperBaseProps } from './PopperBase';
2
2
  export type PopperProps = {} & PopperBaseProps;
3
- export declare const Popper: (props: PopperProps) => import("react/jsx-runtime").JSX.Element | null;
3
+ export declare const Popper: (props: PopperBaseProps & import("react").RefAttributes<HTMLDivElement>) => JSX.Element;
4
4
  export default Popper;
@@ -4,17 +4,18 @@ exports.__esModule = true;
4
4
  exports.default = exports.Popper = void 0;
5
5
  var _reactDom = require("react-dom");
6
6
  var _PopperBase = require("./PopperBase");
7
+ var _helpers = require("../../lib/helpers");
7
8
  var _jsxRuntime = require("react/jsx-runtime");
8
9
  //TODO TESTS
9
10
 
10
- const Popper = props => {
11
+ const Popper = exports.Popper = (0, _helpers.fixedForwardRef)((props, ref) => {
11
12
  if (!props.open) return null;
12
13
  return /*#__PURE__*/(0, _jsxRuntime.jsx)(_jsxRuntime.Fragment, {
13
14
  children: /*#__PURE__*/(0, _reactDom.createPortal)(/*#__PURE__*/(0, _jsxRuntime.jsx)(_PopperBase.PopperBase, {
15
+ ref: ref,
14
16
  ...props,
15
17
  children: props.children
16
18
  }), document.body)
17
19
  });
18
- };
19
- exports.Popper = Popper;
20
+ });
20
21
  var _default = exports.default = Popper;
@@ -10,5 +10,5 @@ export type PopperBaseProps = {
10
10
  className?: string;
11
11
  placement?: 'bottom-end' | 'bottom-start' | 'bottom' | 'left-end' | 'left-start' | 'left' | 'right-end' | 'right-start' | 'right' | 'top-end' | 'top-start' | 'top';
12
12
  };
13
- export declare const PopperBase: (props: PopperBaseProps) => import("react/jsx-runtime").JSX.Element;
13
+ export declare const PopperBase: (props: PopperBaseProps & import("react").RefAttributes<HTMLDivElement>) => JSX.Element;
14
14
  export default PopperBase;
@@ -7,17 +7,19 @@ exports.default = exports.PopperBase = void 0;
7
7
  var _react = require("react");
8
8
  var _core = require("@popperjs/core");
9
9
  var _clsx = _interopRequireDefault(require("clsx"));
10
+ var _helpers = require("../../lib/helpers");
10
11
  var _jsxRuntime = require("react/jsx-runtime");
11
- const PopperBase = props => {
12
+ const PopperBase = exports.PopperBase = (0, _helpers.fixedForwardRef)((props, ref) => {
12
13
  const {
13
14
  anchorEl,
14
15
  children,
15
- placement,
16
+ placement = 'top',
16
17
  className,
17
18
  anchorPosition,
18
19
  open
19
20
  } = props;
20
21
  const tooltipRef = (0, _react.useRef)(null);
22
+ (0, _react.useImperativeHandle)(ref, () => tooltipRef.current, []);
21
23
  (0, _react.useEffect)(() => {
22
24
  let modifiers = [{
23
25
  name: 'offset',
@@ -54,6 +56,5 @@ const PopperBase = props => {
54
56
  children: children
55
57
  })
56
58
  });
57
- };
58
- exports.PopperBase = PopperBase;
59
+ });
59
60
  var _default = exports.default = PopperBase;