@ozen-ui/kit 0.32.2 → 0.34.0

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 (99) hide show
  1. package/Autocomplete/package.json +5 -0
  2. package/__inner__/cjs/components/Autocomplete/Autocomplete.css +46 -0
  3. package/__inner__/cjs/components/Autocomplete/Autocomplete.d.ts +4 -0
  4. package/__inner__/cjs/components/Autocomplete/Autocomplete.js +202 -0
  5. package/__inner__/cjs/components/Autocomplete/components/AutocompleteLoading/AutocompleteLoading.d.ts +6 -0
  6. package/__inner__/cjs/components/Autocomplete/components/AutocompleteLoading/AutocompleteLoading.js +23 -0
  7. package/__inner__/cjs/components/Autocomplete/components/AutocompleteLoading/index.d.ts +1 -0
  8. package/__inner__/cjs/components/Autocomplete/components/AutocompleteLoading/index.js +4 -0
  9. package/__inner__/cjs/components/Autocomplete/components/AutocompleteNoOptions/AutocompleteNoOptions.d.ts +6 -0
  10. package/__inner__/cjs/components/Autocomplete/components/AutocompleteNoOptions/AutocompleteNoOptions.js +17 -0
  11. package/__inner__/cjs/components/Autocomplete/components/AutocompleteNoOptions/index.d.ts +1 -0
  12. package/__inner__/cjs/components/Autocomplete/components/AutocompleteNoOptions/index.js +4 -0
  13. package/__inner__/cjs/components/Autocomplete/components/AutocompleteRenderRight/AutocompleteRenderRight.d.ts +10 -0
  14. package/__inner__/cjs/components/Autocomplete/components/AutocompleteRenderRight/AutocompleteRenderRight.js +26 -0
  15. package/__inner__/cjs/components/Autocomplete/components/AutocompleteRenderRight/index.d.ts +1 -0
  16. package/__inner__/cjs/components/Autocomplete/components/AutocompleteRenderRight/index.js +4 -0
  17. package/__inner__/cjs/components/Autocomplete/components/index.d.ts +3 -0
  18. package/__inner__/cjs/components/Autocomplete/components/index.js +6 -0
  19. package/__inner__/cjs/components/Autocomplete/constants.d.ts +10 -0
  20. package/__inner__/cjs/components/Autocomplete/constants.js +13 -0
  21. package/__inner__/cjs/components/Autocomplete/helper.d.ts +166 -0
  22. package/__inner__/cjs/components/Autocomplete/helper.js +14 -0
  23. package/__inner__/cjs/components/Autocomplete/index.d.ts +2 -0
  24. package/__inner__/cjs/components/Autocomplete/index.js +5 -0
  25. package/__inner__/cjs/components/Autocomplete/types.d.ts +105 -0
  26. package/__inner__/cjs/components/Autocomplete/types.js +2 -0
  27. package/__inner__/cjs/components/DataList/DataList.js +1 -1
  28. package/__inner__/cjs/components/DataList/components/DataListOption/DataListOption.css +10 -2
  29. package/__inner__/cjs/components/DataList/helpers/useDataListNavigation.js +4 -12
  30. package/__inner__/cjs/components/List/List.css +5 -0
  31. package/__inner__/cjs/components/List/List.js +2 -2
  32. package/__inner__/cjs/components/List/constants.d.ts +1 -0
  33. package/__inner__/cjs/components/List/constants.js +2 -1
  34. package/__inner__/cjs/components/List/types.d.ts +2 -0
  35. package/__inner__/cjs/components/Popover/Popover.js +8 -7
  36. package/__inner__/cjs/components/Popover/constants.d.ts +2 -0
  37. package/__inner__/cjs/components/Popover/constants.js +3 -1
  38. package/__inner__/cjs/components/Popover/types.d.ts +6 -0
  39. package/__inner__/cjs/components/Popover/types.js +2 -1
  40. package/__inner__/cjs/components/ThemeProvider/types.d.ts +2 -0
  41. package/__inner__/cjs/components/Tooltip/Tooltip.js +1 -1
  42. package/__inner__/cjs/hooks/useEventListener/useEventListener.js +2 -4
  43. package/__inner__/cjs/hooks/useHover/useHover.d.ts +2 -2
  44. package/__inner__/cjs/hooks/useHover/useHover.js +2 -2
  45. package/__inner__/cjs/hooks/useMutableRef/index.d.ts +1 -0
  46. package/__inner__/cjs/hooks/useMutableRef/index.js +4 -0
  47. package/__inner__/cjs/hooks/useMutableRef/useMutableRef.d.ts +2 -0
  48. package/__inner__/cjs/hooks/useMutableRef/useMutableRef.js +10 -0
  49. package/__inner__/cjs/locale/locale.js +21 -0
  50. package/__inner__/esm/components/Autocomplete/Autocomplete.css +46 -0
  51. package/__inner__/esm/components/Autocomplete/Autocomplete.d.ts +4 -0
  52. package/__inner__/esm/components/Autocomplete/Autocomplete.js +199 -0
  53. package/__inner__/esm/components/Autocomplete/components/AutocompleteLoading/AutocompleteLoading.d.ts +6 -0
  54. package/__inner__/esm/components/Autocomplete/components/AutocompleteLoading/AutocompleteLoading.js +18 -0
  55. package/__inner__/esm/components/Autocomplete/components/AutocompleteLoading/index.d.ts +1 -0
  56. package/__inner__/esm/components/Autocomplete/components/AutocompleteLoading/index.js +1 -0
  57. package/__inner__/esm/components/Autocomplete/components/AutocompleteNoOptions/AutocompleteNoOptions.d.ts +6 -0
  58. package/__inner__/esm/components/Autocomplete/components/AutocompleteNoOptions/AutocompleteNoOptions.js +12 -0
  59. package/__inner__/esm/components/Autocomplete/components/AutocompleteNoOptions/index.d.ts +1 -0
  60. package/__inner__/esm/components/Autocomplete/components/AutocompleteNoOptions/index.js +1 -0
  61. package/__inner__/esm/components/Autocomplete/components/AutocompleteRenderRight/AutocompleteRenderRight.d.ts +10 -0
  62. package/__inner__/esm/components/Autocomplete/components/AutocompleteRenderRight/AutocompleteRenderRight.js +22 -0
  63. package/__inner__/esm/components/Autocomplete/components/AutocompleteRenderRight/index.d.ts +1 -0
  64. package/__inner__/esm/components/Autocomplete/components/AutocompleteRenderRight/index.js +1 -0
  65. package/__inner__/esm/components/Autocomplete/components/index.d.ts +3 -0
  66. package/__inner__/esm/components/Autocomplete/components/index.js +3 -0
  67. package/__inner__/esm/components/Autocomplete/constants.d.ts +10 -0
  68. package/__inner__/esm/components/Autocomplete/constants.js +10 -0
  69. package/__inner__/esm/components/Autocomplete/helper.d.ts +166 -0
  70. package/__inner__/esm/components/Autocomplete/helper.js +7 -0
  71. package/__inner__/esm/components/Autocomplete/index.d.ts +2 -0
  72. package/__inner__/esm/components/Autocomplete/index.js +2 -0
  73. package/__inner__/esm/components/Autocomplete/types.d.ts +105 -0
  74. package/__inner__/esm/components/Autocomplete/types.js +1 -0
  75. package/__inner__/esm/components/DataList/DataList.js +1 -1
  76. package/__inner__/esm/components/DataList/components/DataListOption/DataListOption.css +10 -2
  77. package/__inner__/esm/components/DataList/helpers/useDataListNavigation.js +5 -13
  78. package/__inner__/esm/components/List/List.css +5 -0
  79. package/__inner__/esm/components/List/List.js +3 -3
  80. package/__inner__/esm/components/List/constants.d.ts +1 -0
  81. package/__inner__/esm/components/List/constants.js +1 -0
  82. package/__inner__/esm/components/List/types.d.ts +2 -0
  83. package/__inner__/esm/components/Popover/Popover.js +9 -8
  84. package/__inner__/esm/components/Popover/constants.d.ts +2 -0
  85. package/__inner__/esm/components/Popover/constants.js +2 -0
  86. package/__inner__/esm/components/Popover/types.d.ts +6 -0
  87. package/__inner__/esm/components/Popover/types.js +1 -0
  88. package/__inner__/esm/components/ThemeProvider/types.d.ts +2 -0
  89. package/__inner__/esm/components/Tooltip/Tooltip.js +1 -1
  90. package/__inner__/esm/hooks/useEventListener/useEventListener.js +3 -5
  91. package/__inner__/esm/hooks/useHover/useHover.d.ts +2 -2
  92. package/__inner__/esm/hooks/useHover/useHover.js +2 -2
  93. package/__inner__/esm/hooks/useMutableRef/index.d.ts +1 -0
  94. package/__inner__/esm/hooks/useMutableRef/index.js +1 -0
  95. package/__inner__/esm/hooks/useMutableRef/useMutableRef.d.ts +2 -0
  96. package/__inner__/esm/hooks/useMutableRef/useMutableRef.js +6 -0
  97. package/__inner__/esm/locale/locale.js +21 -0
  98. package/package.json +1 -1
  99. package/useMutableRef/package.json +5 -0
@@ -131,7 +131,7 @@ var DataListRender = function (inProps, ref) {
131
131
  return cloneElement(elementChild, props);
132
132
  });
133
133
  }, [resolvedChildren, selectedState, focused, onClick]);
134
- return (React.createElement(Popover, __assign({ as: as, open: open, placement: "bottom-start", disableReturnFocus: true, disableEnforceFocus: true, offset: [0, 4], onClose: onClose, anchorRef: anchorRef, className: cnDataList('', [className]), transitionProps: {
134
+ return (React.createElement(Popover, __assign({ as: as, open: open, placement: "bottom-start", strategy: "absolute", disableReturnFocus: true, disableEnforceFocus: true, offset: [0, 4], onClose: onClose, anchorRef: anchorRef, className: cnDataList('', [className]), transitionProps: {
135
135
  classNames: 'DataList-animation',
136
136
  } }, other, { onEntered: function () {
137
137
  onEntered();
@@ -15,11 +15,19 @@
15
15
  box-shadow: inset var(--shadow-outline-focused);
16
16
  }
17
17
 
18
- .DataListOption_disabled {
18
+ .DataListOption_disabled,
19
+ .DataListOption_disabled:hover,
20
+ .DataListOption_disabled:active {
19
21
  cursor: not-allowed;
22
+
23
+ background-color: unset;
20
24
  }
21
25
 
22
26
  .DataListOption_disabled .ListItemText-TextPrimary,
23
- .DataListOption_disabled .ListItemText-TextSecondary {
27
+ .DataListOption_disabled .ListItemText-TextSecondary,
28
+ .DataListOption_disabled:hover .ListItemText-TextPrimary,
29
+ .DataListOption_disabled:hover .ListItemText-TextSecondary,
30
+ .DataListOption_disabled:active .ListItemText-TextPrimary,
31
+ .DataListOption_disabled:active .ListItemText-TextSecondary {
24
32
  color: var(--color-content-tertiary);
25
33
  }
@@ -1,5 +1,6 @@
1
1
  import { __assign, __read } from "tslib";
2
- import { useEffect, useState, useRef, useCallback } from 'react';
2
+ import { useEffect, useState, useCallback } from 'react';
3
+ import { useMutableRef } from '../../../hooks/useMutableRef';
3
4
  import { getNextIndex } from '../../../utils/getNextIndex';
4
5
  import { getPrevIndex } from '../../../utils/getPrevIndex';
5
6
  import { isKey } from '../../../utils/isKey';
@@ -7,19 +8,10 @@ import { isKeys } from '../../../utils/isKeys';
7
8
  /** Навигация по элементам списка без перехвата фокуса с элемента контроля */
8
9
  export function useDataListNavigation(_a) {
9
10
  var selected = _a.selected, onSelect = _a.onSelect, _b = _a.active, active = _b === void 0 ? false : _b, itemsProps = _a.items;
10
- var savedItems = useRef(itemsProps);
11
- var savedSelected = useRef();
12
- var savedOnSelect = useRef();
11
+ var savedItems = useMutableRef(itemsProps);
12
+ var savedSelected = useMutableRef(selected);
13
+ var savedOnSelect = useMutableRef(onSelect);
13
14
  var _c = __read(useState({}), 2), state = _c[0], setState = _c[1];
14
- useEffect(function () {
15
- savedItems.current = itemsProps;
16
- }, [itemsProps]);
17
- useEffect(function () {
18
- savedOnSelect.current = onSelect;
19
- }, [onSelect]);
20
- useEffect(function () {
21
- savedSelected.current = selected;
22
- }, [selected]);
23
15
  var findInItems = function (value) { var _a; return (_a = savedItems.current) === null || _a === void 0 ? void 0 : _a.find(function (item) { return item === value; }); };
24
16
  useEffect(function () {
25
17
  if (!active) {
@@ -82,3 +82,8 @@
82
82
  --list-pipka-height: 48px;
83
83
  --list-pipka-width: 4px;
84
84
  }
85
+
86
+ .List_disablePadding,
87
+ .List:empty {
88
+ --list-gutter: 0;
89
+ }
@@ -4,13 +4,13 @@ import React from 'react';
4
4
  import { useThemeProps } from '../../hooks/useThemeProps';
5
5
  import { cn } from '../../utils/classname';
6
6
  import { polymorphicComponentWithRef } from '../../utils/polymorphicComponentWithRef';
7
- import { LIST_DEFAULT_SIZE, LIST_DEFAULT_TAG } from './constants';
7
+ import { LIST_DEFAULT_SIZE, LIST_DEFAULT_TAG, LIST_DEFAULT_DISABLE_PADDING, } from './constants';
8
8
  import { ListContext } from './ListContext';
9
9
  export var cnList = cn('List');
10
10
  export var List = polymorphicComponentWithRef(function (inProps, ref) {
11
11
  var props = useThemeProps({ props: inProps, name: 'List' });
12
- var _a = props.as, Tag = _a === void 0 ? LIST_DEFAULT_TAG : _a, _b = props.size, size = _b === void 0 ? LIST_DEFAULT_SIZE : _b, children = props.children, className = props.className, other = __rest(props, ["as", "size", "children", "className"]);
12
+ var _a = props.as, Tag = _a === void 0 ? LIST_DEFAULT_TAG : _a, _b = props.size, size = _b === void 0 ? LIST_DEFAULT_SIZE : _b, _c = props.disablePadding, disablePadding = _c === void 0 ? LIST_DEFAULT_DISABLE_PADDING : _c, children = props.children, className = props.className, other = __rest(props, ["as", "size", "disablePadding", "children", "className"]);
13
13
  return (React.createElement(ListContext.Provider, { value: { size: size } },
14
- React.createElement(Tag, __assign({ className: cnList({ size: size }, [className]) }, other, { ref: ref }), children)));
14
+ React.createElement(Tag, __assign({ className: cnList({ size: size, disablePadding: disablePadding }, [className]) }, other, { ref: ref }), children)));
15
15
  });
16
16
  List.displayName = 'List';
@@ -1,4 +1,5 @@
1
1
  export declare const LIST_DEFAULT_SIZE = "m";
2
+ export declare const LIST_DEFAULT_DISABLE_PADDING = false;
2
3
  export declare const LIST_DEFAULT_TAG = "ul";
3
4
  export declare const LIST_ITEM_DEFAULT_TAG = "li";
4
5
  export declare const LIST_ITEM_DEFAULT_ALIGN = "center";
@@ -1,4 +1,5 @@
1
1
  export var LIST_DEFAULT_SIZE = 'm';
2
+ export var LIST_DEFAULT_DISABLE_PADDING = false;
2
3
  export var LIST_DEFAULT_TAG = 'ul';
3
4
  export var LIST_ITEM_DEFAULT_TAG = 'li';
4
5
  export var LIST_ITEM_DEFAULT_ALIGN = 'center';
@@ -11,6 +11,8 @@ export type ListBaseProps = {
11
11
  children?: ReactNode;
12
12
  /** Размер компонента */
13
13
  size?: ListSizeVariant;
14
+ /** Если {true} отключает боковые отступы */
15
+ disablePadding?: boolean;
14
16
  /** Идентификатор компонента для тестов */
15
17
  'data-testid'?: string;
16
18
  };
@@ -13,17 +13,17 @@ import { isKey } from '../../utils/isKey';
13
13
  import { polymorphicComponentWithRef } from '../../utils/polymorphicComponentWithRef';
14
14
  import { Portal } from '../Portal';
15
15
  import { PopoverArrow } from './components';
16
- import { POPOVER_DEFAULT_TAG, POPOVER_DEFAULT_ARROW, POPOVER_DEFAULT_DISABLE_CLICK_OUTSIDE, POPOVER_DEFAULT_DISABLE_ENFORCE_FOCUS, POPOVER_DEFAULT_DISABLE_INTERACTIVE, POPOVER_DEFAULT_DISABLE_RETURN_FOCUS, POPOVER_DEFAULT_OPEN, POPOVER_DEFAULT_PLACEMENT, } from './constants';
16
+ import { POPOVER_DEFAULT_TAG, POPOVER_DEFAULT_ARROW, POPOVER_DEFAULT_DISABLE_CLICK_OUTSIDE, POPOVER_DEFAULT_DISABLE_ENFORCE_FOCUS, POPOVER_DEFAULT_DISABLE_INTERACTIVE, POPOVER_DEFAULT_DISABLE_RETURN_FOCUS, POPOVER_DEFAULT_OPEN, POPOVER_DEFAULT_PLACEMENT, POPOVER_DEFAULT_STRATEGY, POPOVER_DEFAULT_DISABLE_PREVENT_OVERFLOW, } from './constants';
17
17
  import { usePopoverManager } from './index';
18
18
  import { PopoverContext } from './PopoverContext';
19
19
  export var cnPopover = cn('Popover');
20
20
  export var Popover = polymorphicComponentWithRef(function (inProps, ref) {
21
21
  var props = useThemeProps({ props: inProps, name: 'Popover' });
22
- var _a = props.arrow, arrow = _a === void 0 ? POPOVER_DEFAULT_ARROW : _a, _b = props.open, open = _b === void 0 ? POPOVER_DEFAULT_OPEN : _b, _c = props.disableInteractive, disableInteractive = _c === void 0 ? POPOVER_DEFAULT_DISABLE_INTERACTIVE : _c, _d = props.disableEnforceFocus, disableEnforceFocus = _d === void 0 ? POPOVER_DEFAULT_DISABLE_ENFORCE_FOCUS : _d, _e = props.disableReturnFocus, disableReturnFocus = _e === void 0 ? POPOVER_DEFAULT_DISABLE_RETURN_FOCUS : _e, _f = props.disableClickOutside, disableClickOutside = _f === void 0 ? POPOVER_DEFAULT_DISABLE_CLICK_OUTSIDE : _f, _g = props.placement, placement = _g === void 0 ? POPOVER_DEFAULT_PLACEMENT : _g, ignoreClickOutsideRefs = props.ignoreClickOutsideRefs, arrowProps = props.arrowProps, anchorRef = props.anchorRef, equalAnchorWidth = props.equalAnchorWidth, offset = props.offset, children = props.children, transitionProps = props.transitionProps, onClose = props.onClose, onEnter = props.onEnter, onEntered = props.onEntered, onExit = props.onExit, onExitedProp = props.onExited, className = props.className, position = props.position, style = props.style, setUpdate = props.setUpdate, _h = props.as, as = _h === void 0 ? POPOVER_DEFAULT_TAG : _h, other = __rest(props, ["arrow", "open", "disableInteractive", "disableEnforceFocus", "disableReturnFocus", "disableClickOutside", "placement", "ignoreClickOutsideRefs", "arrowProps", "anchorRef", "equalAnchorWidth", "offset", "children", "transitionProps", "onClose", "onEnter", "onEntered", "onExit", "onExited", "className", "position", "style", "setUpdate", "as"]);
23
- var _j = __read(useState(false), 2), openState = _j[0], setOpenState = _j[1];
22
+ var _a = props.arrow, arrow = _a === void 0 ? POPOVER_DEFAULT_ARROW : _a, _b = props.open, open = _b === void 0 ? POPOVER_DEFAULT_OPEN : _b, _c = props.disableInteractive, disableInteractive = _c === void 0 ? POPOVER_DEFAULT_DISABLE_INTERACTIVE : _c, _d = props.disableEnforceFocus, disableEnforceFocus = _d === void 0 ? POPOVER_DEFAULT_DISABLE_ENFORCE_FOCUS : _d, _e = props.disableReturnFocus, disableReturnFocus = _e === void 0 ? POPOVER_DEFAULT_DISABLE_RETURN_FOCUS : _e, _f = props.disableClickOutside, disableClickOutside = _f === void 0 ? POPOVER_DEFAULT_DISABLE_CLICK_OUTSIDE : _f, _g = props.placement, placement = _g === void 0 ? POPOVER_DEFAULT_PLACEMENT : _g, _h = props.strategy, strategy = _h === void 0 ? POPOVER_DEFAULT_STRATEGY : _h, _j = props.disablePreventOverflow, disablePreventOverflow = _j === void 0 ? POPOVER_DEFAULT_DISABLE_PREVENT_OVERFLOW : _j, ignoreClickOutsideRefs = props.ignoreClickOutsideRefs, arrowProps = props.arrowProps, anchorRef = props.anchorRef, equalAnchorWidth = props.equalAnchorWidth, offset = props.offset, children = props.children, transitionProps = props.transitionProps, onClose = props.onClose, onEnter = props.onEnter, onEntered = props.onEntered, onExit = props.onExit, onExitedProp = props.onExited, className = props.className, position = props.position, style = props.style, setUpdate = props.setUpdate, _k = props.as, as = _k === void 0 ? POPOVER_DEFAULT_TAG : _k, other = __rest(props, ["arrow", "open", "disableInteractive", "disableEnforceFocus", "disableReturnFocus", "disableClickOutside", "placement", "strategy", "disablePreventOverflow", "ignoreClickOutsideRefs", "arrowProps", "anchorRef", "equalAnchorWidth", "offset", "children", "transitionProps", "onClose", "onEnter", "onEntered", "onExit", "onExited", "className", "position", "style", "setUpdate", "as"]);
23
+ var _l = __read(useState(false), 2), openState = _l[0], setOpenState = _l[1];
24
24
  var focusedElement = useRef(null);
25
25
  var popoverRef = useRef(null);
26
- var _k = usePopoverManager(popoverRef, 1000, openState), refsClickOutside = _k.refsClickOutside, isTop = _k.isTop;
26
+ var _m = usePopoverManager(popoverRef, 1000, openState), refsClickOutside = _m.refsClickOutside, isTop = _m.isTop;
27
27
  // Ловушка фокуса
28
28
  var trapRef = useFocusTrap({
29
29
  active: !disableEnforceFocus && isTop,
@@ -69,6 +69,7 @@ export var Popover = polymorphicComponentWithRef(function (inProps, ref) {
69
69
  gpuAcceleration: false,
70
70
  },
71
71
  },
72
+ { name: 'preventOverflow', enabled: disablePreventOverflow },
72
73
  // Ширина всплывающего элемента
73
74
  {
74
75
  name: 'sameWidth',
@@ -116,12 +117,12 @@ export var Popover = polymorphicComponentWithRef(function (inProps, ref) {
116
117
  };
117
118
  return undefined;
118
119
  }, [anchorRef === null || anchorRef === void 0 ? void 0 : anchorRef.current, position]);
119
- var _l = __read(useState(null), 2), popperElement = _l[0], setPopperElement = _l[1];
120
- var _m = usePopper(resolveReferenceElement, popperElement, {
120
+ var _o = __read(useState(null), 2), popperElement = _o[0], setPopperElement = _o[1];
121
+ var _p = usePopper(resolveReferenceElement, popperElement, {
121
122
  placement: placement,
122
- strategy: 'fixed',
123
+ strategy: strategy,
123
124
  modifiers: modifiers,
124
- }), styles = _m.styles, attributes = _m.attributes, update = _m.update;
125
+ }), styles = _p.styles, attributes = _p.attributes, update = _p.update;
125
126
  // Передача метода по перерасчету расположения компонента Popover в родительский компонент
126
127
  useEffect(function () {
127
128
  setUpdate === null || setUpdate === void 0 ? void 0 : setUpdate(update);
@@ -6,3 +6,5 @@ export declare const POPOVER_DEFAULT_DISABLE_ENFORCE_FOCUS = false;
6
6
  export declare const POPOVER_DEFAULT_DISABLE_RETURN_FOCUS = false;
7
7
  export declare const POPOVER_DEFAULT_DISABLE_CLICK_OUTSIDE = false;
8
8
  export declare const POPOVER_DEFAULT_PLACEMENT = "auto";
9
+ export declare const POPOVER_DEFAULT_STRATEGY = "fixed";
10
+ export declare const POPOVER_DEFAULT_DISABLE_PREVENT_OVERFLOW = false;
@@ -7,3 +7,5 @@ export var POPOVER_DEFAULT_DISABLE_ENFORCE_FOCUS = false;
7
7
  export var POPOVER_DEFAULT_DISABLE_RETURN_FOCUS = false;
8
8
  export var POPOVER_DEFAULT_DISABLE_CLICK_OUTSIDE = false;
9
9
  export var POPOVER_DEFAULT_PLACEMENT = 'auto';
10
+ export var POPOVER_DEFAULT_STRATEGY = 'fixed';
11
+ export var POPOVER_DEFAULT_DISABLE_PREVENT_OVERFLOW = false;
@@ -11,6 +11,8 @@ export type VirtualElement = {
11
11
  };
12
12
  export declare const popoverPlacementVariant: readonly ["top-start", "top-end", "bottom-start", "bottom-end", "right-start", "right-end", "left-start", "left-end", "auto", "auto-start", "auto-end", "top", "bottom", "right", "left"];
13
13
  export type PopoverPlacementVariant = (typeof popoverPlacementVariant)[number];
14
+ export declare const popoverStrategyVariant: readonly ["absolute", "fixed"];
15
+ export type PopoverStrategyVariant = (typeof popoverStrategyVariant)[number];
14
16
  export type PopoverBaseProps = {
15
17
  /** Признак по которому компонент будет представлен */
16
18
  open?: boolean;
@@ -70,6 +72,10 @@ export type PopoverBaseProps = {
70
72
  setUpdate?: (update: PopperJS.Instance['update'] | null) => void;
71
73
  /** Контейнер для монтирования всплывающего окна */
72
74
  container?: PortalProps['container'];
75
+ /** Стратегия позиционирования */
76
+ strategy?: PopoverStrategyVariant;
77
+ /** Если {true} позволяет смещаться по границе якорного элемента компонента */
78
+ disablePreventOverflow?: boolean;
73
79
  };
74
80
  export type PopoverRef = ComponentRef<typeof POPOVER_DEFAULT_TAG>;
75
81
  export type PopoverProps<As extends ElementType = typeof POPOVER_DEFAULT_TAG> = PolymorphicComponentPropsWithRef<PopoverBaseProps, As>;
@@ -15,3 +15,4 @@ export var popoverPlacementVariant = [
15
15
  'right',
16
16
  'left',
17
17
  ];
18
+ export var popoverStrategyVariant = ['absolute', 'fixed'];
@@ -1,5 +1,6 @@
1
1
  import type { AccordionProps, AccordionSummaryProps } from '../Accordion';
2
2
  import type { AlertProps } from '../Alert';
3
+ import type { AutocompleteProps } from '../Autocomplete';
3
4
  import type { AvatarProps } from '../Avatar';
4
5
  import type { BackdropProps } from '../Backdrop';
5
6
  import type { BadgeProps } from '../Badge';
@@ -64,6 +65,7 @@ export type Theme = {
64
65
  Accordion?: Partial<AccordionProps>;
65
66
  AccordionSummary?: Partial<AccordionSummaryProps>;
66
67
  Alert?: Partial<AlertProps>;
68
+ Autocomplete?: Partial<AutocompleteProps>;
67
69
  Avatar?: Partial<AvatarProps>;
68
70
  Backdrop?: Partial<BackdropProps>;
69
71
  Badge?: Partial<BadgeProps>;
@@ -112,7 +112,7 @@ export var Tooltip = polymorphicComponentWithRef(function (inProps, ref) {
112
112
  ]);
113
113
  return (React.createElement(React.Fragment, null,
114
114
  React.cloneElement(resolveChildren, composeChildrenProps),
115
- React.createElement(Popover, __assign({ anchorRef: anchorRef, as: as, background: variant === 'light' ? 'main' : 'main-inverse', radius: size }, other, { ref: ref, offset: offset, placement: placement, open: openState && !disabled, onClose: handleClose, className: cnTooltip({ size: size, variant: variant }, [className]), disableInteractive: disableInteractive, onMouseEnter: handleMouseEnter, onMouseLeave: handleMouseLeave, arrow: arrow, arrowProps: {
115
+ React.createElement(Popover, __assign({ anchorRef: anchorRef, strategy: "absolute", as: as, background: variant === 'light' ? 'main' : 'main-inverse', radius: size }, other, { ref: ref, offset: offset, placement: placement, open: openState && !disabled, onClose: handleClose, className: cnTooltip({ size: size, variant: variant }, [className]), disableInteractive: disableInteractive, onMouseEnter: handleMouseEnter, onMouseLeave: handleMouseLeave, arrow: arrow, arrowProps: {
116
116
  size: size,
117
117
  }, disableEnforceFocus: true, disableReturnFocus: true }), label)));
118
118
  });
@@ -1,11 +1,9 @@
1
- import { useRef, useEffect, useCallback } from 'react';
1
+ import { useEffect, useCallback } from 'react';
2
+ import { useMutableRef } from '../../hooks/useMutableRef';
2
3
  /** Хук добавляющий обработчики событий и удаляющий их на выходе */
3
4
  export function useEventListener(_a) {
4
5
  var eventName = _a.eventName, handler = _a.handler, element = _a.element, options = _a.options, _b = _a.active, active = _b === void 0 ? true : _b;
5
- var savedListener = useRef();
6
- useEffect(function () {
7
- savedListener.current = handler;
8
- }, [handler]);
6
+ var savedListener = useMutableRef(handler);
9
7
  var handleEventListener = useCallback(function (event) {
10
8
  var _a;
11
9
  (_a = savedListener.current) === null || _a === void 0 ? void 0 : _a.call(savedListener, event);
@@ -1,9 +1,9 @@
1
1
  import type { RefObject } from 'react';
2
2
  export type UseHoverOptions = {
3
3
  /** Функция обратного вызова на событие перехода курсора на целевой элемент */
4
- onEnter?: (e: PointerEvent) => void;
4
+ onEnter?: (e: MouseEvent) => void;
5
5
  /** Функция обратного вызова на событие покидания курсора с целевого элемента */
6
- onLeave?: (e: PointerEvent) => void;
6
+ onLeave?: (e: MouseEvent) => void;
7
7
  /** Признак активности обработчика события, используется для повышения производительности. */
8
8
  active?: boolean;
9
9
  };
@@ -20,13 +20,13 @@ options) {
20
20
  useEventListener({
21
21
  handler: handleEnter,
22
22
  element: elRef,
23
- eventName: 'pointerenter',
23
+ eventName: 'mouseenter',
24
24
  active: active,
25
25
  });
26
26
  useEventListener({
27
27
  handler: handleLeave,
28
28
  element: elRef,
29
- eventName: 'pointerleave',
29
+ eventName: 'mouseleave',
30
30
  active: active,
31
31
  });
32
32
  return value;
@@ -0,0 +1 @@
1
+ export * from './useMutableRef';
@@ -0,0 +1 @@
1
+ export * from './useMutableRef';
@@ -0,0 +1,2 @@
1
+ /// <reference types="react" />
2
+ export declare function useMutableRef<T>(value: T): import("react").MutableRefObject<T>;
@@ -0,0 +1,6 @@
1
+ import { useRef } from 'react';
2
+ export function useMutableRef(value) {
3
+ var ref = useRef(value);
4
+ ref.current = value;
5
+ return ref;
6
+ }
@@ -1,5 +1,12 @@
1
1
  export var ruRU = {
2
2
  defaultProps: {
3
+ Autocomplete: {
4
+ noOptionsText: 'Ничего не найдено',
5
+ closeText: 'Закрыть',
6
+ openText: 'Открыть',
7
+ clearText: 'Очистить',
8
+ loadingText: 'Загрузка…',
9
+ },
3
10
  Loader: {
4
11
  'aria-label': 'Загрузка',
5
12
  },
@@ -15,6 +22,13 @@ export var ruRU = {
15
22
  };
16
23
  export var kkKZ = {
17
24
  defaultProps: {
25
+ Autocomplete: {
26
+ noOptionsText: 'Ештеңе табылған жоқ',
27
+ closeText: 'Жабу',
28
+ openText: 'Ашу',
29
+ clearText: 'Тазалау',
30
+ loadingText: 'Жүктеу…',
31
+ },
18
32
  Loader: {
19
33
  'aria-label': 'Жүктеу',
20
34
  },
@@ -30,6 +44,13 @@ export var kkKZ = {
30
44
  };
31
45
  export var enUS = {
32
46
  defaultProps: {
47
+ Autocomplete: {
48
+ noOptionsText: 'No options',
49
+ closeText: 'Close',
50
+ openText: 'Open',
51
+ clearText: 'Clear',
52
+ loadingText: 'Loading…',
53
+ },
33
54
  Loader: {
34
55
  'aria-label': 'Loading',
35
56
  },
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ozen-ui/kit",
3
- "version": "0.32.2",
3
+ "version": "0.34.0",
4
4
  "description": "React component library",
5
5
  "files": [
6
6
  "*"
@@ -0,0 +1,5 @@
1
+ {
2
+ "main": "../__inner__/cjs/hooks/useMutableRef/index.js",
3
+ "module": "../__inner__/esm/hooks/useMutableRef/index.js",
4
+ "types": "../__inner__/esm/hooks/useMutableRef/index.d.ts"
5
+ }