@astral/ui 4.66.0 → 4.68.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.
- package/components/NewPopover/NewPopover.d.ts +2 -0
- package/components/NewPopover/NewPopover.js +23 -0
- package/components/NewPopover/constants.d.ts +6 -0
- package/components/NewPopover/constants.js +7 -0
- package/components/NewPopover/index.d.ts +2 -0
- package/components/NewPopover/index.js +1 -0
- package/components/NewPopover/public.d.ts +2 -0
- package/components/NewPopover/public.js +1 -0
- package/components/NewPopover/styles.d.ts +12 -0
- package/components/NewPopover/styles.js +80 -0
- package/components/NewPopover/types.d.ts +53 -0
- package/components/NewPopover/types.js +1 -0
- package/components/NewPopover/useLogic/index.d.ts +1 -0
- package/components/NewPopover/useLogic/index.js +1 -0
- package/components/NewPopover/useLogic/useLogic.d.ts +11 -0
- package/components/NewPopover/useLogic/useLogic.js +54 -0
- package/components/NewPopover/utils/index.d.ts +1 -0
- package/components/NewPopover/utils/index.js +1 -0
- package/components/NewPopover/utils/resolveAnchorNode.d.ts +6 -0
- package/components/NewPopover/utils/resolveAnchorNode.js +8 -0
- package/components/Popover/Popover.d.ts +4 -8
- package/components/Popover/Popover.js +3 -0
- package/components/Popover/index.d.ts +1 -0
- package/components/Popover/index.js +1 -0
- package/components/Popover/public.d.ts +2 -1
- package/components/Popover/public.js +1 -1
- package/components/Popover/types.d.ts +8 -0
- package/components/Popover/types.js +1 -0
- package/components/Tabs/Tab/Tab.d.ts +1 -13
- package/components/Tabs/Tab/index.d.ts +1 -0
- package/components/Tabs/Tab/types.d.ts +14 -0
- package/components/Tabs/Tab/types.js +1 -0
- package/components/Tabs/Tabs.js +3 -1
- package/components/Tabs/hooks/index.d.ts +1 -0
- package/components/Tabs/hooks/index.js +1 -0
- package/components/Tabs/hooks/useScrollToActiveTab/index.d.ts +1 -0
- package/components/Tabs/hooks/useScrollToActiveTab/index.js +1 -0
- package/components/Tabs/hooks/useScrollToActiveTab/useScrollToActiveTab.d.ts +4 -0
- package/components/Tabs/hooks/useScrollToActiveTab/useScrollToActiveTab.js +24 -0
- package/components/Tabs/styles.js +14 -0
- package/components/index.d.ts +0 -1
- package/components/index.js +0 -1
- package/components/useClickAwayEffect/useClickAwayEffect.d.ts +6 -1
- package/components/useClickAwayEffect/useClickAwayEffect.js +19 -9
- package/components/useFocusTrapEffect/index.d.ts +1 -0
- package/components/useFocusTrapEffect/index.js +1 -0
- package/components/useFocusTrapEffect/useFocusTrapEffect.d.ts +17 -0
- package/components/useFocusTrapEffect/useFocusTrapEffect.js +24 -0
- package/node/components/NewPopover/NewPopover.d.ts +2 -0
- package/node/components/NewPopover/NewPopover.js +27 -0
- package/node/components/NewPopover/constants.d.ts +6 -0
- package/node/components/NewPopover/constants.js +10 -0
- package/node/components/NewPopover/index.d.ts +2 -0
- package/node/components/NewPopover/index.js +5 -0
- package/node/components/NewPopover/public.d.ts +2 -0
- package/node/components/NewPopover/public.js +5 -0
- package/node/components/NewPopover/styles.d.ts +12 -0
- package/node/components/NewPopover/styles.js +86 -0
- package/node/components/NewPopover/types.d.ts +53 -0
- package/node/components/NewPopover/types.js +2 -0
- package/node/components/NewPopover/useLogic/index.d.ts +1 -0
- package/node/components/NewPopover/useLogic/index.js +17 -0
- package/node/components/NewPopover/useLogic/useLogic.d.ts +11 -0
- package/node/components/NewPopover/useLogic/useLogic.js +58 -0
- package/node/components/NewPopover/utils/index.d.ts +1 -0
- package/node/components/NewPopover/utils/index.js +17 -0
- package/node/components/NewPopover/utils/resolveAnchorNode.d.ts +6 -0
- package/node/components/NewPopover/utils/resolveAnchorNode.js +12 -0
- package/node/components/Popover/Popover.d.ts +4 -8
- package/node/components/Popover/Popover.js +3 -0
- package/node/components/Popover/index.d.ts +1 -0
- package/node/components/Popover/index.js +1 -0
- package/node/components/Popover/public.d.ts +2 -1
- package/node/components/Popover/public.js +3 -15
- package/node/components/Popover/types.d.ts +8 -0
- package/node/components/Popover/types.js +2 -0
- package/node/components/Tabs/Tab/Tab.d.ts +1 -13
- package/node/components/Tabs/Tab/index.d.ts +1 -0
- package/node/components/Tabs/Tab/types.d.ts +14 -0
- package/node/components/Tabs/Tab/types.js +2 -0
- package/node/components/Tabs/Tabs.js +3 -1
- package/node/components/Tabs/hooks/index.d.ts +1 -0
- package/node/components/Tabs/hooks/index.js +17 -0
- package/node/components/Tabs/hooks/useScrollToActiveTab/index.d.ts +1 -0
- package/node/components/Tabs/hooks/useScrollToActiveTab/index.js +17 -0
- package/node/components/Tabs/hooks/useScrollToActiveTab/useScrollToActiveTab.d.ts +4 -0
- package/node/components/Tabs/hooks/useScrollToActiveTab/useScrollToActiveTab.js +28 -0
- package/node/components/Tabs/styles.js +14 -0
- package/node/components/index.d.ts +0 -1
- package/node/components/index.js +0 -1
- package/node/components/useClickAwayEffect/useClickAwayEffect.d.ts +6 -1
- package/node/components/useClickAwayEffect/useClickAwayEffect.js +19 -9
- package/node/components/useFocusTrapEffect/index.d.ts +1 -0
- package/node/components/useFocusTrapEffect/index.js +17 -0
- package/node/components/useFocusTrapEffect/useFocusTrapEffect.d.ts +17 -0
- package/node/components/useFocusTrapEffect/useFocusTrapEffect.js +28 -0
- package/package.json +3 -2
|
@@ -2,29 +2,39 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.useClickAwayEffect = void 0;
|
|
4
4
|
const react_1 = require("react");
|
|
5
|
+
const resolveNode = (item) => {
|
|
6
|
+
if (!item) {
|
|
7
|
+
return null;
|
|
8
|
+
}
|
|
9
|
+
return item instanceof Node ? item : item.current;
|
|
10
|
+
};
|
|
5
11
|
/**
|
|
6
12
|
* хук позволяющий подписаться на клик вне указанного рефа,
|
|
7
13
|
* подойдет для использования в кастомных попперах
|
|
8
14
|
*/
|
|
9
|
-
const useClickAwayEffect = ({ ref, onClickAway, preventBubbling, isActive, }) => {
|
|
15
|
+
const useClickAwayEffect = ({ ref, onClickAway, preventBubbling, isActive, excludeNodes, }) => {
|
|
10
16
|
(0, react_1.useEffect)(() => {
|
|
11
17
|
const node = ref?.current;
|
|
12
18
|
if (!isActive || !node) {
|
|
13
19
|
return;
|
|
14
20
|
}
|
|
15
|
-
const onClick = (
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
21
|
+
const onClick = (event) => {
|
|
22
|
+
const target = event.target;
|
|
23
|
+
const isClickInside = node.contains(target);
|
|
24
|
+
const isClickOnExcluded = excludeNodes?.some((item) => resolveNode(item)?.contains(target));
|
|
25
|
+
const isClickAway = !isClickInside && !isClickOnExcluded;
|
|
26
|
+
if (preventBubbling) {
|
|
27
|
+
event.stopPropagation();
|
|
28
|
+
event.stopImmediatePropagation();
|
|
29
|
+
}
|
|
30
|
+
if (isClickAway) {
|
|
31
|
+
onClickAway(event, 'clickAway');
|
|
22
32
|
}
|
|
23
33
|
};
|
|
24
34
|
window.addEventListener('pointerdown', onClick);
|
|
25
35
|
return () => {
|
|
26
36
|
window.removeEventListener('pointerdown', onClick);
|
|
27
37
|
};
|
|
28
|
-
}, [isActive, ref]);
|
|
38
|
+
}, [isActive, ref, excludeNodes, onClickAway, preventBubbling]);
|
|
29
39
|
};
|
|
30
40
|
exports.useClickAwayEffect = useClickAwayEffect;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './useFocusTrapEffect';
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
__exportStar(require("./useFocusTrapEffect"), exports);
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { type Options } from 'focus-trap';
|
|
2
|
+
import { type RefObject } from 'react';
|
|
3
|
+
export type UseFocusTrapEffectOptions = {
|
|
4
|
+
/**
|
|
5
|
+
* Реф на DOM-ноду контейнера ловушки фокуса
|
|
6
|
+
*/
|
|
7
|
+
ref: RefObject<HTMLElement | null>;
|
|
8
|
+
/**
|
|
9
|
+
* Флаг активности ловушки
|
|
10
|
+
*/
|
|
11
|
+
isActive: boolean;
|
|
12
|
+
} & Pick<Options, 'initialFocus' | 'fallbackFocus' | 'escapeDeactivates' | 'clickOutsideDeactivates' | 'returnFocusOnDeactivate' | 'allowOutsideClick' | 'preventScroll' | 'delayInitialFocus'>;
|
|
13
|
+
/**
|
|
14
|
+
* Хук для удержания фокуса внутри указанного контейнера.
|
|
15
|
+
* Опции соответствуют конфигурации focus-trap.
|
|
16
|
+
*/
|
|
17
|
+
export declare const useFocusTrapEffect: ({ ref, isActive, ...options }: UseFocusTrapEffectOptions) => void;
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.useFocusTrapEffect = void 0;
|
|
4
|
+
const focus_trap_1 = require("focus-trap");
|
|
5
|
+
const react_1 = require("react");
|
|
6
|
+
/**
|
|
7
|
+
* Хук для удержания фокуса внутри указанного контейнера.
|
|
8
|
+
* Опции соответствуют конфигурации focus-trap.
|
|
9
|
+
*/
|
|
10
|
+
const useFocusTrapEffect = ({ ref, isActive, ...options }) => {
|
|
11
|
+
const trapRef = (0, react_1.useRef)(null);
|
|
12
|
+
(0, react_1.useEffect)(() => {
|
|
13
|
+
const node = ref.current;
|
|
14
|
+
if (!isActive || !node) {
|
|
15
|
+
trapRef.current?.deactivate();
|
|
16
|
+
trapRef.current = null;
|
|
17
|
+
return;
|
|
18
|
+
}
|
|
19
|
+
const trap = (0, focus_trap_1.createFocusTrap)(node, options);
|
|
20
|
+
trapRef.current = trap;
|
|
21
|
+
trap.activate();
|
|
22
|
+
return () => {
|
|
23
|
+
trap.deactivate();
|
|
24
|
+
trapRef.current = null;
|
|
25
|
+
};
|
|
26
|
+
}, [isActive, ref]);
|
|
27
|
+
};
|
|
28
|
+
exports.useFocusTrapEffect = useFocusTrapEffect;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@astral/ui",
|
|
3
|
-
"version": "4.
|
|
3
|
+
"version": "4.68.0",
|
|
4
4
|
"browser": "./index.js",
|
|
5
5
|
"main": "./node/index.js",
|
|
6
6
|
"dependencies": {
|
|
@@ -23,7 +23,8 @@
|
|
|
23
23
|
"react-virtuoso": "4.18.1",
|
|
24
24
|
"remeda": "^1.61.0",
|
|
25
25
|
"react-pdf": "9.2.1",
|
|
26
|
-
"react-hook-form": "^7.66.1"
|
|
26
|
+
"react-hook-form": "^7.66.1",
|
|
27
|
+
"focus-trap": "^7.8.0"
|
|
27
28
|
},
|
|
28
29
|
"peerDependencies": {
|
|
29
30
|
"react": "^17.0.0 || ^18.0.0 || ^19.0.0",
|