indicator-ui 0.0.347 → 0.0.348
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/dist/index.js +7349 -0
- package/dist/index.js.map +1 -1
- package/dist/types/src/hooks/animations/assets/backdropModalAnimations.d.ts +20 -0
- package/dist/types/src/hooks/animations/assets/index.d.ts +2 -0
- package/dist/types/src/hooks/animations/assets/modalAnimations.d.ts +20 -0
- package/dist/types/src/hooks/animations/index.d.ts +2 -0
- package/dist/types/src/hooks/animations/useBackgroundModalAnim.d.ts +33 -0
- package/dist/types/src/hooks/animations/useModalAnim.d.ts +40 -0
- package/dist/types/src/hooks/index.d.ts +2 -0
- package/dist/types/src/hooks/modalWindows/index.d.ts +2 -0
- package/dist/types/src/hooks/modalWindows/useBackdropModal.d.ts +34 -0
- package/dist/types/src/hooks/modalWindows/useModal.d.ts +37 -0
- package/package.json +3 -3
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
type AnimationTypes = 'fade-in-scale-up' | 'slide-up-fade-in' | 'slide-down-fade-in' | 'fade-in';
|
|
2
|
+
type PosType = [number, number];
|
|
3
|
+
type AnimationItemType = (timeline: gsap.core.Timeline) => gsap.core.Timeline;
|
|
4
|
+
type AnimationValueType = {
|
|
5
|
+
appear: AnimationItemType;
|
|
6
|
+
disappear: AnimationItemType;
|
|
7
|
+
};
|
|
8
|
+
type AnimationsType = Record<AnimationTypes, AnimationValueType>;
|
|
9
|
+
type PropsType = {
|
|
10
|
+
modal: HTMLElement;
|
|
11
|
+
backdrop: HTMLElement;
|
|
12
|
+
target: HTMLElement;
|
|
13
|
+
targetPos: PosType;
|
|
14
|
+
targetCenter: PosType;
|
|
15
|
+
targetSize: PosType;
|
|
16
|
+
modalSize: PosType;
|
|
17
|
+
predictPos: PosType;
|
|
18
|
+
};
|
|
19
|
+
export declare const BACKDROP_MODAL_ANIMATIONS: (props: PropsType) => AnimationsType;
|
|
20
|
+
export {};
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
type AnimationTypes = 'popover' | 'dropdown' | 'context-menu' | 'action-sheet';
|
|
2
|
+
type PosType = [number, number];
|
|
3
|
+
type AnimationItemType = (timeline: gsap.core.Timeline) => gsap.core.Timeline;
|
|
4
|
+
type AnimationValueType = {
|
|
5
|
+
appear: AnimationItemType;
|
|
6
|
+
disappear: AnimationItemType;
|
|
7
|
+
};
|
|
8
|
+
type AnimationsType = Record<AnimationTypes, AnimationValueType>;
|
|
9
|
+
type PropsType = {
|
|
10
|
+
modal: HTMLElement;
|
|
11
|
+
backdrop: HTMLElement;
|
|
12
|
+
target: HTMLElement;
|
|
13
|
+
targetPos: PosType;
|
|
14
|
+
targetCenter: PosType;
|
|
15
|
+
targetSize: PosType;
|
|
16
|
+
modalSize: PosType;
|
|
17
|
+
predictPos: PosType;
|
|
18
|
+
};
|
|
19
|
+
export declare const MODAL_ANIMATIONS: (props: PropsType) => AnimationsType;
|
|
20
|
+
export {};
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { RefObject } from "react";
|
|
2
|
+
import { BACKDROP_MODAL_ANIMATIONS } from "./assets";
|
|
3
|
+
type OptionsType<T extends HTMLElement = HTMLElement> = {
|
|
4
|
+
targetRef?: RefObject<T>;
|
|
5
|
+
onViewing?: () => void;
|
|
6
|
+
onHiding?: () => void;
|
|
7
|
+
backdropClassName?: string;
|
|
8
|
+
animeType?: AnimationsTypes;
|
|
9
|
+
};
|
|
10
|
+
type PropsType<T extends HTMLElement = HTMLElement> = [ref: RefObject<T>, options?: OptionsType];
|
|
11
|
+
type AnimationsTypes = keyof ReturnType<typeof BACKDROP_MODAL_ANIMATIONS>;
|
|
12
|
+
/**
|
|
13
|
+
* Хук для анимации backdrop-модального окна.
|
|
14
|
+
*
|
|
15
|
+
* ---
|
|
16
|
+
*
|
|
17
|
+
* Важные пропсы:
|
|
18
|
+
* - `ref` - рефка на компонент модалки.
|
|
19
|
+
* - `targetRef` - рефка на компонент, который вызывает появление модалки.
|
|
20
|
+
*
|
|
21
|
+
* ---
|
|
22
|
+
*
|
|
23
|
+
* Виды модалок:
|
|
24
|
+
*
|
|
25
|
+
* Все очень просто, название за себя говорит, как будет появляться модалка.
|
|
26
|
+
* Исчезать она будет по такому же принципу, но наоборот.
|
|
27
|
+
* */
|
|
28
|
+
export declare function useBackgroundModalAnim(...args: PropsType): {
|
|
29
|
+
appearanceAnim: () => void;
|
|
30
|
+
disappearanceAnim: () => void;
|
|
31
|
+
reinit: () => void;
|
|
32
|
+
};
|
|
33
|
+
export {};
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { RefObject } from "react";
|
|
2
|
+
import { useSmartPlacementResolver } from "../useSmartPlacementResolver";
|
|
3
|
+
import { MODAL_ANIMATIONS } from "./assets";
|
|
4
|
+
type UseSmartPlacementResolverOptionsType = Exclude<Parameters<typeof useSmartPlacementResolver>['1'], undefined>;
|
|
5
|
+
type OptionsType<T extends HTMLElement = HTMLElement> = {
|
|
6
|
+
targetRef?: RefObject<T>;
|
|
7
|
+
onViewing?: () => void;
|
|
8
|
+
onHiding?: () => void;
|
|
9
|
+
smartPlacementOptions?: UseSmartPlacementResolverOptionsType;
|
|
10
|
+
backdropClassName?: string;
|
|
11
|
+
animeType?: AnimationsTypes;
|
|
12
|
+
};
|
|
13
|
+
type PropsType<T extends HTMLElement = HTMLElement> = [ref: RefObject<T>, options?: OptionsType];
|
|
14
|
+
type AnimationsTypes = keyof ReturnType<typeof MODAL_ANIMATIONS>;
|
|
15
|
+
/**
|
|
16
|
+
* Хук для анимации модального окна.
|
|
17
|
+
*
|
|
18
|
+
* ---
|
|
19
|
+
*
|
|
20
|
+
* Важные пропсы:
|
|
21
|
+
* - `ref` - рефка на компонент модалки.
|
|
22
|
+
* - `targetRef` - рефка на компонент, который вызывает появление модалки.
|
|
23
|
+
*
|
|
24
|
+
* ---
|
|
25
|
+
*
|
|
26
|
+
* Виды модалок:
|
|
27
|
+
*
|
|
28
|
+
* - `popover` - хорошо подойдет для подсказок, появляется немного скейлясь.
|
|
29
|
+
* - `dropdown` - обычный дропдаун.
|
|
30
|
+
* - `context-menu` - подойдет для быстрого показа списка возможностей, при этом скрывает его немного замедленно,
|
|
31
|
+
* чтобы пользователь мог разглядеть его.
|
|
32
|
+
* - `action-sheet` - какой-то список действий, который требует полной фокусировки, затеняет фон для этого (не затеняет `target`).
|
|
33
|
+
* К примеру, модальнрое окна для сообщения в чате.
|
|
34
|
+
* */
|
|
35
|
+
export declare function useModalAnim(...args: PropsType): {
|
|
36
|
+
appearanceAnim: () => void;
|
|
37
|
+
disappearanceAnim: () => void;
|
|
38
|
+
reinit: () => void;
|
|
39
|
+
};
|
|
40
|
+
export {};
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { RefObject } from "react";
|
|
2
|
+
import { useBackgroundModalAnim } from "../animations";
|
|
3
|
+
type UseBackgroundModalAnimOptionsPropsType = Exclude<Parameters<typeof useBackgroundModalAnim>['1'], undefined>;
|
|
4
|
+
type OptionsType<T extends HTMLElement = HTMLElement, C extends HTMLElement = HTMLElement> = Pick<UseBackgroundModalAnimOptionsPropsType, 'animeType'> & {
|
|
5
|
+
targetRef?: RefObject<T>;
|
|
6
|
+
containerClickAreaRef?: RefObject<C>;
|
|
7
|
+
};
|
|
8
|
+
type PropsType<T extends HTMLElement = HTMLElement> = [ref: RefObject<T>, options?: OptionsType];
|
|
9
|
+
/**
|
|
10
|
+
* Хук для backdrop-модального окна.
|
|
11
|
+
*
|
|
12
|
+
* ---
|
|
13
|
+
*
|
|
14
|
+
* Важные пропсы:
|
|
15
|
+
* - `ref` - рефка на компонент модалки.
|
|
16
|
+
* - `targetRef` - рефка на компонент, который вызывает появление модалки.
|
|
17
|
+
* - `containerClickAreaRef` - зона кликов модалки. Поможет, если вы обернули модалку в доп компонент, но клик по нему
|
|
18
|
+
* (мимо основной модалки) должен закрывать модалку, в таком случае в `ref` передайте ссылку на обертку,
|
|
19
|
+
* а в `containerClickAreaRef` именно на модалку.
|
|
20
|
+
*
|
|
21
|
+
* ---
|
|
22
|
+
*
|
|
23
|
+
* Виды модалок:
|
|
24
|
+
*
|
|
25
|
+
* Все очень просто, название за себя говорит, как будет появляться модалка.
|
|
26
|
+
* Исчезать она будет по такому же принципу, но наоборот.
|
|
27
|
+
* */
|
|
28
|
+
export declare function useBackdropModal(...args: PropsType): {
|
|
29
|
+
isShow: boolean;
|
|
30
|
+
open: () => void;
|
|
31
|
+
close: () => void;
|
|
32
|
+
switching: () => void;
|
|
33
|
+
};
|
|
34
|
+
export {};
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { RefObject } from "react";
|
|
2
|
+
import { useInteractiveZone } from "../useInteractiveZone";
|
|
3
|
+
import { useModalAnim } from "../animations";
|
|
4
|
+
type UseModalAnimOptionsPropsType = Exclude<Parameters<typeof useModalAnim>['1'], undefined>;
|
|
5
|
+
type UseInteractiveZoneOptionsPropsType = Exclude<Parameters<typeof useInteractiveZone>['2'], undefined>;
|
|
6
|
+
type OptionsType<T extends HTMLElement = HTMLElement> = Pick<UseInteractiveZoneOptionsPropsType, 'addition'> & Pick<UseModalAnimOptionsPropsType, 'animeType'> & {
|
|
7
|
+
targetRef?: RefObject<T>;
|
|
8
|
+
};
|
|
9
|
+
type PropsType<T extends HTMLElement = HTMLElement> = [ref: RefObject<T>, options?: OptionsType];
|
|
10
|
+
/**
|
|
11
|
+
* Хук для модального окна.
|
|
12
|
+
*
|
|
13
|
+
* ---
|
|
14
|
+
*
|
|
15
|
+
* Важные пропсы:
|
|
16
|
+
* - `ref` - рефка на компонент модалки.
|
|
17
|
+
* - `targetRef` - рефка на компонент, который вызывает появление модалки.
|
|
18
|
+
* - `addition` - дополнительные элементы, которые будут игнорироваться при мисс-клике.
|
|
19
|
+
* (Клик по ним не вызовет закрытие модалки)
|
|
20
|
+
* ---
|
|
21
|
+
*
|
|
22
|
+
* Виды модалок:
|
|
23
|
+
*
|
|
24
|
+
* - `popover` - хорошо подойдет для подсказок, появляется немного скейлясь.
|
|
25
|
+
* - `dropdown` - обычный дропдаун.
|
|
26
|
+
* - `context-menu` - подойдет для быстрого показа списка возможностей, при этом скрывает его немного замедленно,
|
|
27
|
+
* чтобы пользователь мог разглядеть его.
|
|
28
|
+
* - `action-sheet` - какой-то список действий, который требует полной фокусировки, затеняет фон для этого (не затеняет `target`).
|
|
29
|
+
* К примеру, модальнрое окна для сообщения в чате.
|
|
30
|
+
* */
|
|
31
|
+
export declare function useModal(...args: PropsType): {
|
|
32
|
+
isShow: boolean;
|
|
33
|
+
open: () => void;
|
|
34
|
+
close: () => void;
|
|
35
|
+
switching: () => void;
|
|
36
|
+
};
|
|
37
|
+
export {};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "indicator-ui",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.348",
|
|
4
4
|
"main": "dist/index.js",
|
|
5
5
|
"types": "dist/types/src/index.d.ts",
|
|
6
6
|
"style": "dist/index.css",
|
|
@@ -38,6 +38,7 @@
|
|
|
38
38
|
"date-fns": "^4.1.0",
|
|
39
39
|
"date-fns-tz": "^3.2.0",
|
|
40
40
|
"file-loader": "^6.2.0",
|
|
41
|
+
"gsap": "^3.13.0",
|
|
41
42
|
"html-loader": "^5.1.0",
|
|
42
43
|
"html-webpack-plugin": "^5.6.3",
|
|
43
44
|
"jest": "^29.7.0",
|
|
@@ -77,7 +78,6 @@
|
|
|
77
78
|
"docs"
|
|
78
79
|
],
|
|
79
80
|
"dependencies": {
|
|
80
|
-
"@gsap/react": "^2.1.2"
|
|
81
|
-
"gsap": "^3.13.0"
|
|
81
|
+
"@gsap/react": "^2.1.2"
|
|
82
82
|
}
|
|
83
83
|
}
|