@alfalab/core-components-universal-modal 3.2.5 → 3.2.6-alfasans
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/Context.d.ts +1 -1
- package/Context.js +1 -1
- package/Context.js.map +1 -1
- package/components/base-content/index.css +1 -1
- package/components/base-content/index.module.css.js +1 -1
- package/components/base-footer/index.css +3 -3
- package/components/base-footer/index.module.css.js +1 -1
- package/components/base-header/index.css +4 -4
- package/components/base-header/index.module.css.js +1 -1
- package/cssm/Context.d.ts +1 -1
- package/cssm/Context.js +1 -1
- package/cssm/Context.js.map +1 -1
- package/cssm/desktop/Component.desktop.d.ts +1 -1
- package/cssm/desktop/components/center-modal/center-modal.js +2 -2
- package/cssm/desktop/components/center-modal/center-modal.js.map +1 -1
- package/cssm/desktop/components/footer/index.d.ts +2 -7
- package/cssm/desktop/components/footer/index.js.map +1 -1
- package/cssm/desktop/components/header/desktop.module.css +11 -6
- package/cssm/desktop/components/modal-content/modal-content.js +2 -9
- package/cssm/desktop/components/modal-content/modal-content.js.map +1 -1
- package/cssm/desktop/components/side-modal/side-modal.js +2 -2
- package/cssm/desktop/components/side-modal/side-modal.js.map +1 -1
- package/cssm/desktop/types/props.d.ts +1 -1
- package/cssm/mobile/components/header/index.module.css +9 -6
- package/cssm/mobile/types/props.d.ts +1 -1
- package/desktop/Component.desktop.d.ts +1 -1
- package/desktop/components/center-modal/center-modal.js +2 -2
- package/desktop/components/center-modal/center-modal.js.map +1 -1
- package/desktop/components/center-modal/index.css +1104 -1104
- package/desktop/components/center-modal/index.module.css.js +1 -1
- package/desktop/components/center-modal/transitions/safari-transitions.css +7 -7
- package/desktop/components/center-modal/transitions/safari-transitions.module.css.js +1 -1
- package/desktop/components/center-modal/transitions/transitions.css +7 -7
- package/desktop/components/center-modal/transitions/transitions.module.css.js +1 -1
- package/desktop/components/footer/desktop.css +1 -1
- package/desktop/components/footer/desktop.module.css.js +1 -1
- package/desktop/components/footer/index.d.ts +2 -7
- package/desktop/components/footer/index.js.map +1 -1
- package/desktop/components/footer/layout.css +9 -9
- package/desktop/components/footer/layout.module.css.js +1 -1
- package/desktop/components/header/desktop.css +16 -11
- package/desktop/components/header/desktop.module.css.js +1 -1
- package/desktop/components/modal-content/modal-content.css +4 -4
- package/desktop/components/modal-content/modal-content.js +2 -9
- package/desktop/components/modal-content/modal-content.js.map +1 -1
- package/desktop/components/modal-content/modal-content.module.css.js +1 -1
- package/desktop/components/side-modal/index.css +1106 -1106
- package/desktop/components/side-modal/index.module.css.js +1 -1
- package/desktop/components/side-modal/side-modal.js +2 -2
- package/desktop/components/side-modal/side-modal.js.map +1 -1
- package/desktop/components/side-modal/transitions/transitions.css +71 -71
- package/desktop/components/side-modal/transitions/transitions.module.css.js +1 -1
- package/desktop/styles/transitions/full-size-backdrop-transitions.css +13 -13
- package/desktop/styles/transitions/full-size-backdrop-transitions.module.css.js +1 -1
- package/desktop/styles/transitions/full-size-vertical-bottom-transitions.css +7 -7
- package/desktop/styles/transitions/full-size-vertical-bottom-transitions.module.css.js +1 -1
- package/desktop/styles/transitions/full-size-vertical-center-transitions.css +7 -7
- package/desktop/styles/transitions/full-size-vertical-center-transitions.module.css.js +1 -1
- package/desktop/styles/transitions/full-size-vertical-top-transitions.css +7 -7
- package/desktop/styles/transitions/full-size-vertical-top-transitions.module.css.js +1 -1
- package/desktop/types/props.d.ts +1 -1
- package/esm/Context.d.ts +1 -1
- package/esm/Context.js +1 -1
- package/esm/Context.js.map +1 -1
- package/esm/components/base-content/index.css +1 -1
- package/esm/components/base-content/index.module.css.js +1 -1
- package/esm/components/base-footer/index.css +3 -3
- package/esm/components/base-footer/index.module.css.js +1 -1
- package/esm/components/base-header/index.css +4 -4
- package/esm/components/base-header/index.module.css.js +1 -1
- package/esm/desktop/Component.desktop.d.ts +1 -1
- package/esm/desktop/components/center-modal/center-modal.js +2 -2
- package/esm/desktop/components/center-modal/center-modal.js.map +1 -1
- package/esm/desktop/components/center-modal/index.css +1104 -1104
- package/esm/desktop/components/center-modal/index.module.css.js +1 -1
- package/esm/desktop/components/center-modal/transitions/safari-transitions.css +7 -7
- package/esm/desktop/components/center-modal/transitions/safari-transitions.module.css.js +1 -1
- package/esm/desktop/components/center-modal/transitions/transitions.css +7 -7
- package/esm/desktop/components/center-modal/transitions/transitions.module.css.js +1 -1
- package/esm/desktop/components/footer/desktop.css +1 -1
- package/esm/desktop/components/footer/desktop.module.css.js +1 -1
- package/esm/desktop/components/footer/index.d.ts +2 -7
- package/esm/desktop/components/footer/index.js.map +1 -1
- package/esm/desktop/components/footer/layout.css +9 -9
- package/esm/desktop/components/footer/layout.module.css.js +1 -1
- package/esm/desktop/components/header/desktop.css +16 -11
- package/esm/desktop/components/header/desktop.module.css.js +1 -1
- package/esm/desktop/components/modal-content/modal-content.css +4 -4
- package/esm/desktop/components/modal-content/modal-content.js +2 -8
- package/esm/desktop/components/modal-content/modal-content.js.map +1 -1
- package/esm/desktop/components/modal-content/modal-content.module.css.js +1 -1
- package/esm/desktop/components/side-modal/index.css +1106 -1106
- package/esm/desktop/components/side-modal/index.module.css.js +1 -1
- package/esm/desktop/components/side-modal/side-modal.js +2 -2
- package/esm/desktop/components/side-modal/side-modal.js.map +1 -1
- package/esm/desktop/components/side-modal/transitions/transitions.css +71 -71
- package/esm/desktop/components/side-modal/transitions/transitions.module.css.js +1 -1
- package/esm/desktop/styles/transitions/full-size-backdrop-transitions.css +13 -13
- package/esm/desktop/styles/transitions/full-size-backdrop-transitions.module.css.js +1 -1
- package/esm/desktop/styles/transitions/full-size-vertical-bottom-transitions.css +7 -7
- package/esm/desktop/styles/transitions/full-size-vertical-bottom-transitions.module.css.js +1 -1
- package/esm/desktop/styles/transitions/full-size-vertical-center-transitions.css +7 -7
- package/esm/desktop/styles/transitions/full-size-vertical-center-transitions.module.css.js +1 -1
- package/esm/desktop/styles/transitions/full-size-vertical-top-transitions.css +7 -7
- package/esm/desktop/styles/transitions/full-size-vertical-top-transitions.module.css.js +1 -1
- package/esm/desktop/types/props.d.ts +1 -1
- package/esm/mobile/components/content/index.css +3 -3
- package/esm/mobile/components/content/index.module.css.js +1 -1
- package/esm/mobile/components/footer/index.css +2 -2
- package/esm/mobile/components/footer/index.module.css.js +1 -1
- package/esm/mobile/components/footer/layout.mobile.css +9 -9
- package/esm/mobile/components/footer/layout.mobile.module.css.js +1 -1
- package/esm/mobile/components/header/index.css +12 -9
- package/esm/mobile/components/header/index.module.css.js +1 -1
- package/esm/mobile/mobile.css +3 -3
- package/esm/mobile/mobile.module.css.js +1 -1
- package/esm/mobile/transitions/right-side-transitions.mobile.css +7 -7
- package/esm/mobile/transitions/right-side-transitions.mobile.module.css.js +1 -1
- package/esm/mobile/transitions/transitions.mobile.css +7 -7
- package/esm/mobile/transitions/transitions.mobile.module.css.js +1 -1
- package/esm/mobile/types/props.d.ts +1 -1
- package/mobile/components/content/index.css +3 -3
- package/mobile/components/content/index.module.css.js +1 -1
- package/mobile/components/footer/index.css +2 -2
- package/mobile/components/footer/index.module.css.js +1 -1
- package/mobile/components/footer/layout.mobile.css +9 -9
- package/mobile/components/footer/layout.mobile.module.css.js +1 -1
- package/mobile/components/header/index.css +12 -9
- package/mobile/components/header/index.module.css.js +1 -1
- package/mobile/mobile.css +3 -3
- package/mobile/mobile.module.css.js +1 -1
- package/mobile/transitions/right-side-transitions.mobile.css +7 -7
- package/mobile/transitions/right-side-transitions.mobile.module.css.js +1 -1
- package/mobile/transitions/transitions.mobile.css +7 -7
- package/mobile/transitions/transitions.mobile.module.css.js +1 -1
- package/mobile/types/props.d.ts +1 -1
- package/modern/Context.d.ts +1 -1
- package/modern/Context.js +1 -1
- package/modern/Context.js.map +1 -1
- package/modern/components/base-content/index.css +1 -1
- package/modern/components/base-content/index.module.css.js +1 -1
- package/modern/components/base-footer/index.css +3 -3
- package/modern/components/base-footer/index.module.css.js +1 -1
- package/modern/components/base-header/index.css +4 -4
- package/modern/components/base-header/index.module.css.js +1 -1
- package/modern/desktop/Component.desktop.d.ts +1 -1
- package/modern/desktop/components/center-modal/center-modal.js +2 -2
- package/modern/desktop/components/center-modal/center-modal.js.map +1 -1
- package/modern/desktop/components/center-modal/index.css +1104 -1104
- package/modern/desktop/components/center-modal/index.module.css.js +1 -1
- package/modern/desktop/components/center-modal/transitions/safari-transitions.css +7 -7
- package/modern/desktop/components/center-modal/transitions/safari-transitions.module.css.js +1 -1
- package/modern/desktop/components/center-modal/transitions/transitions.css +7 -7
- package/modern/desktop/components/center-modal/transitions/transitions.module.css.js +1 -1
- package/modern/desktop/components/footer/desktop.css +1 -1
- package/modern/desktop/components/footer/desktop.module.css.js +1 -1
- package/modern/desktop/components/footer/index.d.ts +2 -7
- package/modern/desktop/components/footer/index.js.map +1 -1
- package/modern/desktop/components/footer/layout.css +9 -9
- package/modern/desktop/components/footer/layout.module.css.js +1 -1
- package/modern/desktop/components/header/desktop.css +16 -11
- package/modern/desktop/components/header/desktop.module.css.js +1 -1
- package/modern/desktop/components/modal-content/modal-content.css +4 -4
- package/modern/desktop/components/modal-content/modal-content.js +2 -8
- package/modern/desktop/components/modal-content/modal-content.js.map +1 -1
- package/modern/desktop/components/modal-content/modal-content.module.css.js +1 -1
- package/modern/desktop/components/side-modal/index.css +1106 -1106
- package/modern/desktop/components/side-modal/index.module.css.js +1 -1
- package/modern/desktop/components/side-modal/side-modal.js +2 -2
- package/modern/desktop/components/side-modal/side-modal.js.map +1 -1
- package/modern/desktop/components/side-modal/transitions/transitions.css +71 -71
- package/modern/desktop/components/side-modal/transitions/transitions.module.css.js +1 -1
- package/modern/desktop/styles/transitions/full-size-backdrop-transitions.css +13 -13
- package/modern/desktop/styles/transitions/full-size-backdrop-transitions.module.css.js +1 -1
- package/modern/desktop/styles/transitions/full-size-vertical-bottom-transitions.css +7 -7
- package/modern/desktop/styles/transitions/full-size-vertical-bottom-transitions.module.css.js +1 -1
- package/modern/desktop/styles/transitions/full-size-vertical-center-transitions.css +7 -7
- package/modern/desktop/styles/transitions/full-size-vertical-center-transitions.module.css.js +1 -1
- package/modern/desktop/styles/transitions/full-size-vertical-top-transitions.css +7 -7
- package/modern/desktop/styles/transitions/full-size-vertical-top-transitions.module.css.js +1 -1
- package/modern/desktop/types/props.d.ts +1 -1
- package/modern/mobile/components/content/index.css +3 -3
- package/modern/mobile/components/content/index.module.css.js +1 -1
- package/modern/mobile/components/footer/index.css +2 -2
- package/modern/mobile/components/footer/index.module.css.js +1 -1
- package/modern/mobile/components/footer/layout.mobile.css +9 -9
- package/modern/mobile/components/footer/layout.mobile.module.css.js +1 -1
- package/modern/mobile/components/header/index.css +12 -9
- package/modern/mobile/components/header/index.module.css.js +1 -1
- package/modern/mobile/mobile.css +3 -3
- package/modern/mobile/mobile.module.css.js +1 -1
- package/modern/mobile/transitions/right-side-transitions.mobile.css +7 -7
- package/modern/mobile/transitions/right-side-transitions.mobile.module.css.js +1 -1
- package/modern/mobile/transitions/transitions.mobile.css +7 -7
- package/modern/mobile/transitions/transitions.mobile.module.css.js +1 -1
- package/modern/mobile/types/props.d.ts +1 -1
- package/moderncssm/Context.d.ts +1 -1
- package/moderncssm/Context.js +1 -1
- package/moderncssm/Context.js.map +1 -1
- package/moderncssm/desktop/Component.desktop.d.ts +1 -1
- package/moderncssm/desktop/components/center-modal/center-modal.js +2 -2
- package/moderncssm/desktop/components/center-modal/center-modal.js.map +1 -1
- package/moderncssm/desktop/components/footer/index.d.ts +2 -7
- package/moderncssm/desktop/components/footer/index.js.map +1 -1
- package/moderncssm/desktop/components/header/desktop.module.css +8 -4
- package/moderncssm/desktop/components/modal-content/modal-content.js +2 -8
- package/moderncssm/desktop/components/modal-content/modal-content.js.map +1 -1
- package/moderncssm/desktop/components/side-modal/side-modal.js +2 -2
- package/moderncssm/desktop/components/side-modal/side-modal.js.map +1 -1
- package/moderncssm/desktop/types/props.d.ts +1 -1
- package/moderncssm/mobile/components/header/index.module.css +6 -4
- package/moderncssm/mobile/types/props.d.ts +1 -1
- package/package.json +9 -9
- package/src/Context.ts +1 -1
- package/src/desktop/components/center-modal/center-modal.tsx +5 -3
- package/src/desktop/components/footer/index.tsx +1 -6
- package/src/desktop/components/modal-content/modal-content.tsx +1 -9
- package/src/desktop/components/side-modal/side-modal.tsx +5 -3
- package/src/desktop/types/props.ts +1 -0
- package/src/mobile/types/props.ts +2 -0
- package/cssm/desktop/hooks/use-modal-highlighted.d.ts +0 -13
- package/cssm/desktop/hooks/use-modal-highlighted.js +0 -57
- package/cssm/desktop/hooks/use-modal-highlighted.js.map +0 -1
- package/desktop/hooks/use-modal-highlighted.d.ts +0 -13
- package/desktop/hooks/use-modal-highlighted.js +0 -57
- package/desktop/hooks/use-modal-highlighted.js.map +0 -1
- package/esm/desktop/hooks/use-modal-highlighted.d.ts +0 -13
- package/esm/desktop/hooks/use-modal-highlighted.js +0 -53
- package/esm/desktop/hooks/use-modal-highlighted.js.map +0 -1
- package/modern/desktop/hooks/use-modal-highlighted.d.ts +0 -13
- package/modern/desktop/hooks/use-modal-highlighted.js +0 -52
- package/modern/desktop/hooks/use-modal-highlighted.js.map +0 -1
- package/moderncssm/desktop/hooks/use-modal-highlighted.d.ts +0 -13
- package/moderncssm/desktop/hooks/use-modal-highlighted.js +0 -52
- package/moderncssm/desktop/hooks/use-modal-highlighted.js.map +0 -1
- package/src/desktop/hooks/use-modal-highlighted.ts +0 -75
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import React, { forwardRef, useRef } from 'react';
|
|
1
|
+
import React, { forwardRef, type MutableRefObject, useRef } from 'react';
|
|
2
2
|
import cn from 'classnames';
|
|
3
3
|
|
|
4
4
|
import { BaseModal } from '@alfalab/core-components-base-modal';
|
|
@@ -36,6 +36,7 @@ export const CenterModal = forwardRef<HTMLDivElement, UniversalModalDesktopProps
|
|
|
36
36
|
margin,
|
|
37
37
|
scrollableContainerRef: scrollableContainerRefProp,
|
|
38
38
|
onClose,
|
|
39
|
+
wrapperClassName,
|
|
39
40
|
...restProps
|
|
40
41
|
} = props;
|
|
41
42
|
|
|
@@ -60,9 +61,10 @@ export const CenterModal = forwardRef<HTMLDivElement, UniversalModalDesktopProps
|
|
|
60
61
|
dataTestId={dataTestId}
|
|
61
62
|
ref={ref}
|
|
62
63
|
componentRef={componentRef}
|
|
63
|
-
scrollHandler=
|
|
64
|
+
scrollHandler={scrollableContainerRef as MutableRefObject<HTMLDivElement | null>}
|
|
65
|
+
scrollContainerFillsViewport={false}
|
|
64
66
|
disableBlockingScroll={withoutOverlay}
|
|
65
|
-
wrapperClassName={cn(styles.baseModalContainer, {
|
|
67
|
+
wrapperClassName={cn(styles.baseModalContainer, wrapperClassName, {
|
|
66
68
|
[styles.wrapperJustifyStart]: verticalAlign === 'top',
|
|
67
69
|
[styles.wrapperJustifyCenter]: verticalAlign === 'center',
|
|
68
70
|
[styles.wrapperJustifyEnd]: verticalAlign === 'bottom',
|
|
@@ -10,12 +10,7 @@ import layoutStyles from './layout.module.css';
|
|
|
10
10
|
|
|
11
11
|
const FOOTER_MEDIUM_BREAKPOINT = 800;
|
|
12
12
|
|
|
13
|
-
export
|
|
14
|
-
/**
|
|
15
|
-
* Размер (только для desktop версии компонента)
|
|
16
|
-
*/
|
|
17
|
-
size?: 's' | 500;
|
|
18
|
-
}
|
|
13
|
+
export type FooterDesktopProps = FooterProps;
|
|
19
14
|
|
|
20
15
|
export const FooterDesktop = forwardRef<HTMLDivElement, FooterDesktopProps>((props, ref) => {
|
|
21
16
|
const { className, sticky, layout = 'start', ...restProps } = props;
|
|
@@ -1,11 +1,9 @@
|
|
|
1
1
|
import React, { type FC, useRef } from 'react';
|
|
2
|
-
import mergeRefs from 'react-merge-refs';
|
|
3
2
|
import cn from 'classnames';
|
|
4
3
|
|
|
5
4
|
import { type BaseModalProps } from '@alfalab/core-components-base-modal';
|
|
6
5
|
import { Scrollbar } from '@alfalab/core-components-scrollbar';
|
|
7
6
|
|
|
8
|
-
import { useModalHighlighted } from '../../hooks/use-modal-highlighted';
|
|
9
7
|
import { useSetScrollbarHeight } from '../../hooks/use-set-scrollbar-height';
|
|
10
8
|
import { type UniversalModalDesktopProps } from '../../types/props';
|
|
11
9
|
import { setFooterAndHeaderRefs } from '../../utils/set-footer-and-header-refs';
|
|
@@ -23,15 +21,11 @@ type Props = PickedBaseModalProps & PickedUniversalModalDesktopProps;
|
|
|
23
21
|
export const ModalContent: FC<Props> = (props) => {
|
|
24
22
|
const { children, height, scrollableContainerRef = null } = props;
|
|
25
23
|
|
|
26
|
-
const scrollableNodeRef = useRef<HTMLDivElement>(null);
|
|
27
|
-
const scrollbarContentNodeRef = useRef<HTMLDivElement>(null);
|
|
28
24
|
const scrollbarRef = useRef<HTMLDivElement | null>(null);
|
|
29
25
|
const verticalBarRef = useRef<HTMLDivElement>(null);
|
|
30
26
|
const headerElementRef = useRef<HTMLDivElement>(null);
|
|
31
27
|
const footerElementRef = useRef<HTMLDivElement | null>(null);
|
|
32
28
|
|
|
33
|
-
const { handleScroll } = useModalHighlighted({ scrollbarContentNodeRef, scrollableNodeRef });
|
|
34
|
-
|
|
35
29
|
const { enhancedChildren } = setFooterAndHeaderRefs({
|
|
36
30
|
children,
|
|
37
31
|
headerElementRef,
|
|
@@ -46,16 +40,14 @@ export const ModalContent: FC<Props> = (props) => {
|
|
|
46
40
|
ref={scrollbarRef}
|
|
47
41
|
verticalBarRef={verticalBarRef}
|
|
48
42
|
scrollableNodeProps={{
|
|
49
|
-
ref:
|
|
43
|
+
ref: scrollableContainerRef,
|
|
50
44
|
className: styles.scrollableNode,
|
|
51
45
|
}}
|
|
52
46
|
contentNodeProps={{
|
|
53
|
-
ref: scrollbarContentNodeRef,
|
|
54
47
|
className: cn(styles.contentNode, {
|
|
55
48
|
[styles.hugContent]: height === 'hugContent',
|
|
56
49
|
}),
|
|
57
50
|
}}
|
|
58
|
-
onContentScroll={handleScroll}
|
|
59
51
|
>
|
|
60
52
|
{enhancedChildren}
|
|
61
53
|
</Scrollbar>
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import React, { forwardRef, useRef } from 'react';
|
|
1
|
+
import React, { forwardRef, type MutableRefObject, useRef } from 'react';
|
|
2
2
|
import cn from 'classnames';
|
|
3
3
|
|
|
4
4
|
import { BaseModal } from '@alfalab/core-components-base-modal';
|
|
@@ -30,6 +30,7 @@ export const SideModal = forwardRef<HTMLDivElement, UniversalModalDesktopProps>(
|
|
|
30
30
|
margin,
|
|
31
31
|
scrollableContainerRef: scrollableContainerRefProp,
|
|
32
32
|
onClose,
|
|
33
|
+
wrapperClassName,
|
|
33
34
|
...restProps
|
|
34
35
|
} = props;
|
|
35
36
|
const componentRef = useRef<HTMLDivElement>(null);
|
|
@@ -55,9 +56,10 @@ export const SideModal = forwardRef<HTMLDivElement, UniversalModalDesktopProps>(
|
|
|
55
56
|
ref={ref}
|
|
56
57
|
componentRef={componentRef}
|
|
57
58
|
contentElementRef={contentRef}
|
|
58
|
-
scrollHandler=
|
|
59
|
+
scrollHandler={scrollableContainerRef as MutableRefObject<HTMLDivElement | null>}
|
|
60
|
+
scrollContainerFillsViewport={false}
|
|
59
61
|
disableBlockingScroll={withoutOverlay}
|
|
60
|
-
wrapperClassName={cn(styles.wrapper, styles.baseModalContainer, {
|
|
62
|
+
wrapperClassName={cn(styles.wrapper, styles.baseModalContainer, wrapperClassName, {
|
|
61
63
|
[styles.wrapperAlignStart]: horizontalAlign === 'start',
|
|
62
64
|
[styles.wrapperAlignEnd]: horizontalAlign === 'end',
|
|
63
65
|
[styles.wrapperJustifyCenter]: verticalAlign === 'center',
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
import { type RefObject } from 'react';
|
|
2
|
-
interface Params {
|
|
3
|
-
scrollbarContentNodeRef: RefObject<HTMLDivElement>;
|
|
4
|
-
scrollableNodeRef: RefObject<HTMLDivElement>;
|
|
5
|
-
}
|
|
6
|
-
/**
|
|
7
|
-
* Расчет overlap состояния
|
|
8
|
-
* Этот функционал есть в base-modal, но так как в desktop версии используется кастомный scroll необходимо обрабатывать это в ручную
|
|
9
|
-
*/
|
|
10
|
-
export declare const useModalHighlighted: (params: Params) => {
|
|
11
|
-
handleScroll: (e: Event) => void;
|
|
12
|
-
};
|
|
13
|
-
export {};
|
|
@@ -1,57 +0,0 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
-
|
|
5
|
-
var React = require('react');
|
|
6
|
-
var Context = require('../../Context.js');
|
|
7
|
-
|
|
8
|
-
/**
|
|
9
|
-
* Расчет overlap состояния
|
|
10
|
-
* Этот функционал есть в base-modal, но так как в desktop версии используется кастомный scroll необходимо обрабатывать это в ручную
|
|
11
|
-
*/
|
|
12
|
-
var useModalHighlighted = function (params) {
|
|
13
|
-
var scrollbarContentNodeRef = params.scrollbarContentNodeRef, scrollableNodeRef = params.scrollableNodeRef;
|
|
14
|
-
var _a = React.useContext(Context.ModalContext), setModalHeaderHighlighted = _a.setHeaderHighlighted, setModalFooterHighlighted = _a.setFooterHighlighted;
|
|
15
|
-
var handleScroll = function (e) {
|
|
16
|
-
var target = e.target;
|
|
17
|
-
var scrollTop = target.scrollTop, scrollHeight = target.scrollHeight, clientHeight = target.clientHeight;
|
|
18
|
-
var isElementFullScrolled = scrollHeight - scrollTop === clientHeight;
|
|
19
|
-
if (setModalHeaderHighlighted) {
|
|
20
|
-
setModalHeaderHighlighted(scrollTop > 0);
|
|
21
|
-
}
|
|
22
|
-
if (setModalFooterHighlighted) {
|
|
23
|
-
setModalFooterHighlighted(!isElementFullScrolled);
|
|
24
|
-
}
|
|
25
|
-
};
|
|
26
|
-
// Очищаем overlap значения в контексте
|
|
27
|
-
React.useEffect(function () { return function () {
|
|
28
|
-
if (setModalHeaderHighlighted) {
|
|
29
|
-
setModalHeaderHighlighted(false);
|
|
30
|
-
}
|
|
31
|
-
if (setModalFooterHighlighted) {
|
|
32
|
-
setModalFooterHighlighted(false);
|
|
33
|
-
}
|
|
34
|
-
}; }, [setModalHeaderHighlighted, setModalFooterHighlighted]);
|
|
35
|
-
// Расчет overlap футера при resize событии
|
|
36
|
-
React.useEffect(function () {
|
|
37
|
-
var resizeObserver = new ResizeObserver(function () {
|
|
38
|
-
var _a, _b;
|
|
39
|
-
var contentHeight = ((_a = scrollbarContentNodeRef.current) === null || _a === void 0 ? void 0 : _a.clientHeight) || 0;
|
|
40
|
-
var wrapperHeight = ((_b = scrollableNodeRef.current) === null || _b === void 0 ? void 0 : _b.clientHeight) || 0;
|
|
41
|
-
if (setModalFooterHighlighted) {
|
|
42
|
-
setModalFooterHighlighted(contentHeight > wrapperHeight);
|
|
43
|
-
}
|
|
44
|
-
});
|
|
45
|
-
if (scrollbarContentNodeRef.current) {
|
|
46
|
-
resizeObserver.observe(scrollbarContentNodeRef.current);
|
|
47
|
-
}
|
|
48
|
-
return function () {
|
|
49
|
-
resizeObserver.disconnect();
|
|
50
|
-
};
|
|
51
|
-
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
52
|
-
}, [setModalFooterHighlighted]);
|
|
53
|
-
return { handleScroll: handleScroll };
|
|
54
|
-
};
|
|
55
|
-
|
|
56
|
-
exports.useModalHighlighted = useModalHighlighted;
|
|
57
|
-
//# sourceMappingURL=use-modal-highlighted.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"use-modal-highlighted.js","sources":["../../../src/desktop/hooks/use-modal-highlighted.ts"],"sourcesContent":["import { type RefObject, useContext, useEffect } from 'react';\n\nimport { type ScrollbarProps } from '@alfalab/core-components-scrollbar';\n\nimport { ModalContext } from '../../Context';\n\ninterface Params {\n scrollbarContentNodeRef: RefObject<HTMLDivElement>;\n scrollableNodeRef: RefObject<HTMLDivElement>;\n}\n\n/**\n * Расчет overlap состояния\n * Этот функционал есть в base-modal, но так как в desktop версии используется кастомный scroll необходимо обрабатывать это в ручную\n */\nexport const useModalHighlighted = (params: Params) => {\n const { scrollbarContentNodeRef, scrollableNodeRef } = params;\n\n const {\n setHeaderHighlighted: setModalHeaderHighlighted,\n setFooterHighlighted: setModalFooterHighlighted,\n } = useContext(ModalContext);\n\n const handleScroll: ScrollbarProps['onContentScroll'] = (e) => {\n const target = e.target as HTMLDivElement;\n const { scrollTop, scrollHeight, clientHeight } = target;\n\n const isElementFullScrolled = scrollHeight - scrollTop === clientHeight;\n\n if (setModalHeaderHighlighted) {\n setModalHeaderHighlighted(scrollTop > 0);\n }\n\n if (setModalFooterHighlighted) {\n setModalFooterHighlighted(!isElementFullScrolled);\n }\n };\n\n // Очищаем overlap значения в контексте\n useEffect(\n () => () => {\n if (setModalHeaderHighlighted) {\n setModalHeaderHighlighted(false);\n }\n\n if (setModalFooterHighlighted) {\n setModalFooterHighlighted(false);\n }\n },\n [setModalHeaderHighlighted, setModalFooterHighlighted],\n );\n\n // Расчет overlap футера при resize событии\n useEffect(() => {\n const resizeObserver = new ResizeObserver(() => {\n const contentHeight = scrollbarContentNodeRef.current?.clientHeight || 0;\n const wrapperHeight = scrollableNodeRef.current?.clientHeight || 0;\n\n if (setModalFooterHighlighted) {\n setModalFooterHighlighted(contentHeight > wrapperHeight);\n }\n });\n\n if (scrollbarContentNodeRef.current) {\n resizeObserver.observe(scrollbarContentNodeRef.current);\n }\n\n return () => {\n resizeObserver.disconnect();\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [setModalFooterHighlighted]);\n\n return { handleScroll };\n};\n"],"names":["useContext","ModalContext","useEffect"],"mappings":";;;;;;;AAWA;;;AAGG;AACI,IAAM,mBAAmB,GAAG,UAAC,MAAc,EAAA;IACtC,IAAA,uBAAuB,GAAwB,MAAM,CAAA,uBAA9B,EAAE,iBAAiB,GAAK,MAAM,CAAA,iBAAX;IAE5C,IAAA,EAAA,GAGFA,gBAAU,CAACC,oBAAY,CAAC,EAFF,yBAAyB,GAAA,EAAA,CAAA,oBAAA,EACzB,yBAAyB,GAAA,EAAA,CAAA,oBACvB;IAE5B,IAAM,YAAY,GAAsC,UAAC,CAAC,EAAA;AACtD,QAAA,IAAM,MAAM,GAAG,CAAC,CAAC,MAAwB;AACjC,QAAA,IAAA,SAAS,GAAiC,MAAM,CAAA,SAAvC,EAAE,YAAY,GAAmB,MAAM,CAAA,YAAzB,EAAE,YAAY,GAAK,MAAM,aAAX;AAE7C,QAAA,IAAM,qBAAqB,GAAG,YAAY,GAAG,SAAS,KAAK,YAAY;QAEvE,IAAI,yBAAyB,EAAE;AAC3B,YAAA,yBAAyB,CAAC,SAAS,GAAG,CAAC,CAAC;;QAG5C,IAAI,yBAAyB,EAAE;AAC3B,YAAA,yBAAyB,CAAC,CAAC,qBAAqB,CAAC;;AAEzD,KAAC;;IAGDC,eAAS,CACL,cAAM,OAAA,YAAA;QACF,IAAI,yBAAyB,EAAE;YAC3B,yBAAyB,CAAC,KAAK,CAAC;;QAGpC,IAAI,yBAAyB,EAAE;YAC3B,yBAAyB,CAAC,KAAK,CAAC;;KAEvC,CAAA,EAAA,EACD,CAAC,yBAAyB,EAAE,yBAAyB,CAAC,CACzD;;AAGD,IAAAA,eAAS,CAAC,YAAA;AACN,QAAA,IAAM,cAAc,GAAG,IAAI,cAAc,CAAC,YAAA;;YACtC,IAAM,aAAa,GAAG,CAAA,CAAA,EAAA,GAAA,uBAAuB,CAAC,OAAO,MAAE,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,MAAA,GAAA,EAAA,CAAA,YAAY,KAAI,CAAC;YACxE,IAAM,aAAa,GAAG,CAAA,CAAA,EAAA,GAAA,iBAAiB,CAAC,OAAO,MAAE,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,MAAA,GAAA,EAAA,CAAA,YAAY,KAAI,CAAC;YAElE,IAAI,yBAAyB,EAAE;AAC3B,gBAAA,yBAAyB,CAAC,aAAa,GAAG,aAAa,CAAC;;AAEhE,SAAC,CAAC;AAEF,QAAA,IAAI,uBAAuB,CAAC,OAAO,EAAE;AACjC,YAAA,cAAc,CAAC,OAAO,CAAC,uBAAuB,CAAC,OAAO,CAAC;;QAG3D,OAAO,YAAA;YACH,cAAc,CAAC,UAAU,EAAE;AAC/B,SAAC;;AAEL,KAAC,EAAE,CAAC,yBAAyB,CAAC,CAAC;AAE/B,IAAA,OAAO,EAAE,YAAY,EAAA,YAAA,EAAE;AAC3B;;;;"}
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
import { type RefObject } from 'react';
|
|
2
|
-
interface Params {
|
|
3
|
-
scrollbarContentNodeRef: RefObject<HTMLDivElement>;
|
|
4
|
-
scrollableNodeRef: RefObject<HTMLDivElement>;
|
|
5
|
-
}
|
|
6
|
-
/**
|
|
7
|
-
* Расчет overlap состояния
|
|
8
|
-
* Этот функционал есть в base-modal, но так как в desktop версии используется кастомный scroll необходимо обрабатывать это в ручную
|
|
9
|
-
*/
|
|
10
|
-
export declare const useModalHighlighted: (params: Params) => {
|
|
11
|
-
handleScroll: (e: Event) => void;
|
|
12
|
-
};
|
|
13
|
-
export {};
|
|
@@ -1,57 +0,0 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
-
|
|
5
|
-
var React = require('react');
|
|
6
|
-
var Context = require('../../Context.js');
|
|
7
|
-
|
|
8
|
-
/**
|
|
9
|
-
* Расчет overlap состояния
|
|
10
|
-
* Этот функционал есть в base-modal, но так как в desktop версии используется кастомный scroll необходимо обрабатывать это в ручную
|
|
11
|
-
*/
|
|
12
|
-
var useModalHighlighted = function (params) {
|
|
13
|
-
var scrollbarContentNodeRef = params.scrollbarContentNodeRef, scrollableNodeRef = params.scrollableNodeRef;
|
|
14
|
-
var _a = React.useContext(Context.ModalContext), setModalHeaderHighlighted = _a.setHeaderHighlighted, setModalFooterHighlighted = _a.setFooterHighlighted;
|
|
15
|
-
var handleScroll = function (e) {
|
|
16
|
-
var target = e.target;
|
|
17
|
-
var scrollTop = target.scrollTop, scrollHeight = target.scrollHeight, clientHeight = target.clientHeight;
|
|
18
|
-
var isElementFullScrolled = scrollHeight - scrollTop === clientHeight;
|
|
19
|
-
if (setModalHeaderHighlighted) {
|
|
20
|
-
setModalHeaderHighlighted(scrollTop > 0);
|
|
21
|
-
}
|
|
22
|
-
if (setModalFooterHighlighted) {
|
|
23
|
-
setModalFooterHighlighted(!isElementFullScrolled);
|
|
24
|
-
}
|
|
25
|
-
};
|
|
26
|
-
// Очищаем overlap значения в контексте
|
|
27
|
-
React.useEffect(function () { return function () {
|
|
28
|
-
if (setModalHeaderHighlighted) {
|
|
29
|
-
setModalHeaderHighlighted(false);
|
|
30
|
-
}
|
|
31
|
-
if (setModalFooterHighlighted) {
|
|
32
|
-
setModalFooterHighlighted(false);
|
|
33
|
-
}
|
|
34
|
-
}; }, [setModalHeaderHighlighted, setModalFooterHighlighted]);
|
|
35
|
-
// Расчет overlap футера при resize событии
|
|
36
|
-
React.useEffect(function () {
|
|
37
|
-
var resizeObserver = new ResizeObserver(function () {
|
|
38
|
-
var _a, _b;
|
|
39
|
-
var contentHeight = ((_a = scrollbarContentNodeRef.current) === null || _a === void 0 ? void 0 : _a.clientHeight) || 0;
|
|
40
|
-
var wrapperHeight = ((_b = scrollableNodeRef.current) === null || _b === void 0 ? void 0 : _b.clientHeight) || 0;
|
|
41
|
-
if (setModalFooterHighlighted) {
|
|
42
|
-
setModalFooterHighlighted(contentHeight > wrapperHeight);
|
|
43
|
-
}
|
|
44
|
-
});
|
|
45
|
-
if (scrollbarContentNodeRef.current) {
|
|
46
|
-
resizeObserver.observe(scrollbarContentNodeRef.current);
|
|
47
|
-
}
|
|
48
|
-
return function () {
|
|
49
|
-
resizeObserver.disconnect();
|
|
50
|
-
};
|
|
51
|
-
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
52
|
-
}, [setModalFooterHighlighted]);
|
|
53
|
-
return { handleScroll: handleScroll };
|
|
54
|
-
};
|
|
55
|
-
|
|
56
|
-
exports.useModalHighlighted = useModalHighlighted;
|
|
57
|
-
//# sourceMappingURL=use-modal-highlighted.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"use-modal-highlighted.js","sources":["../../src/desktop/hooks/use-modal-highlighted.ts"],"sourcesContent":["import { type RefObject, useContext, useEffect } from 'react';\n\nimport { type ScrollbarProps } from '@alfalab/core-components-scrollbar';\n\nimport { ModalContext } from '../../Context';\n\ninterface Params {\n scrollbarContentNodeRef: RefObject<HTMLDivElement>;\n scrollableNodeRef: RefObject<HTMLDivElement>;\n}\n\n/**\n * Расчет overlap состояния\n * Этот функционал есть в base-modal, но так как в desktop версии используется кастомный scroll необходимо обрабатывать это в ручную\n */\nexport const useModalHighlighted = (params: Params) => {\n const { scrollbarContentNodeRef, scrollableNodeRef } = params;\n\n const {\n setHeaderHighlighted: setModalHeaderHighlighted,\n setFooterHighlighted: setModalFooterHighlighted,\n } = useContext(ModalContext);\n\n const handleScroll: ScrollbarProps['onContentScroll'] = (e) => {\n const target = e.target as HTMLDivElement;\n const { scrollTop, scrollHeight, clientHeight } = target;\n\n const isElementFullScrolled = scrollHeight - scrollTop === clientHeight;\n\n if (setModalHeaderHighlighted) {\n setModalHeaderHighlighted(scrollTop > 0);\n }\n\n if (setModalFooterHighlighted) {\n setModalFooterHighlighted(!isElementFullScrolled);\n }\n };\n\n // Очищаем overlap значения в контексте\n useEffect(\n () => () => {\n if (setModalHeaderHighlighted) {\n setModalHeaderHighlighted(false);\n }\n\n if (setModalFooterHighlighted) {\n setModalFooterHighlighted(false);\n }\n },\n [setModalHeaderHighlighted, setModalFooterHighlighted],\n );\n\n // Расчет overlap футера при resize событии\n useEffect(() => {\n const resizeObserver = new ResizeObserver(() => {\n const contentHeight = scrollbarContentNodeRef.current?.clientHeight || 0;\n const wrapperHeight = scrollableNodeRef.current?.clientHeight || 0;\n\n if (setModalFooterHighlighted) {\n setModalFooterHighlighted(contentHeight > wrapperHeight);\n }\n });\n\n if (scrollbarContentNodeRef.current) {\n resizeObserver.observe(scrollbarContentNodeRef.current);\n }\n\n return () => {\n resizeObserver.disconnect();\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [setModalFooterHighlighted]);\n\n return { handleScroll };\n};\n"],"names":["useContext","ModalContext","useEffect"],"mappings":";;;;;;;AAWA;;;AAGG;AACI,IAAM,mBAAmB,GAAG,UAAC,MAAc,EAAA;IACtC,IAAA,uBAAuB,GAAwB,MAAM,CAAA,uBAA9B,EAAE,iBAAiB,GAAK,MAAM,CAAA,iBAAX;IAE5C,IAAA,EAAA,GAGFA,gBAAU,CAACC,oBAAY,CAAC,EAFF,yBAAyB,GAAA,EAAA,CAAA,oBAAA,EACzB,yBAAyB,GAAA,EAAA,CAAA,oBACvB;IAE5B,IAAM,YAAY,GAAsC,UAAC,CAAC,EAAA;AACtD,QAAA,IAAM,MAAM,GAAG,CAAC,CAAC,MAAwB;AACjC,QAAA,IAAA,SAAS,GAAiC,MAAM,CAAA,SAAvC,EAAE,YAAY,GAAmB,MAAM,CAAA,YAAzB,EAAE,YAAY,GAAK,MAAM,aAAX;AAE7C,QAAA,IAAM,qBAAqB,GAAG,YAAY,GAAG,SAAS,KAAK,YAAY;QAEvE,IAAI,yBAAyB,EAAE;AAC3B,YAAA,yBAAyB,CAAC,SAAS,GAAG,CAAC,CAAC;;QAG5C,IAAI,yBAAyB,EAAE;AAC3B,YAAA,yBAAyB,CAAC,CAAC,qBAAqB,CAAC;;AAEzD,KAAC;;IAGDC,eAAS,CACL,cAAM,OAAA,YAAA;QACF,IAAI,yBAAyB,EAAE;YAC3B,yBAAyB,CAAC,KAAK,CAAC;;QAGpC,IAAI,yBAAyB,EAAE;YAC3B,yBAAyB,CAAC,KAAK,CAAC;;KAEvC,CAAA,EAAA,EACD,CAAC,yBAAyB,EAAE,yBAAyB,CAAC,CACzD;;AAGD,IAAAA,eAAS,CAAC,YAAA;AACN,QAAA,IAAM,cAAc,GAAG,IAAI,cAAc,CAAC,YAAA;;YACtC,IAAM,aAAa,GAAG,CAAA,CAAA,EAAA,GAAA,uBAAuB,CAAC,OAAO,MAAE,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,MAAA,GAAA,EAAA,CAAA,YAAY,KAAI,CAAC;YACxE,IAAM,aAAa,GAAG,CAAA,CAAA,EAAA,GAAA,iBAAiB,CAAC,OAAO,MAAE,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,MAAA,GAAA,EAAA,CAAA,YAAY,KAAI,CAAC;YAElE,IAAI,yBAAyB,EAAE;AAC3B,gBAAA,yBAAyB,CAAC,aAAa,GAAG,aAAa,CAAC;;AAEhE,SAAC,CAAC;AAEF,QAAA,IAAI,uBAAuB,CAAC,OAAO,EAAE;AACjC,YAAA,cAAc,CAAC,OAAO,CAAC,uBAAuB,CAAC,OAAO,CAAC;;QAG3D,OAAO,YAAA;YACH,cAAc,CAAC,UAAU,EAAE;AAC/B,SAAC;;AAEL,KAAC,EAAE,CAAC,yBAAyB,CAAC,CAAC;AAE/B,IAAA,OAAO,EAAE,YAAY,EAAA,YAAA,EAAE;AAC3B;;;;"}
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
import { type RefObject } from 'react';
|
|
2
|
-
interface Params {
|
|
3
|
-
scrollbarContentNodeRef: RefObject<HTMLDivElement>;
|
|
4
|
-
scrollableNodeRef: RefObject<HTMLDivElement>;
|
|
5
|
-
}
|
|
6
|
-
/**
|
|
7
|
-
* Расчет overlap состояния
|
|
8
|
-
* Этот функционал есть в base-modal, но так как в desktop версии используется кастомный scroll необходимо обрабатывать это в ручную
|
|
9
|
-
*/
|
|
10
|
-
export declare const useModalHighlighted: (params: Params) => {
|
|
11
|
-
handleScroll: (e: Event) => void;
|
|
12
|
-
};
|
|
13
|
-
export {};
|
|
@@ -1,53 +0,0 @@
|
|
|
1
|
-
import { useContext, useEffect } from 'react';
|
|
2
|
-
import { ModalContext } from '../../Context.js';
|
|
3
|
-
|
|
4
|
-
/**
|
|
5
|
-
* Расчет overlap состояния
|
|
6
|
-
* Этот функционал есть в base-modal, но так как в desktop версии используется кастомный scroll необходимо обрабатывать это в ручную
|
|
7
|
-
*/
|
|
8
|
-
var useModalHighlighted = function (params) {
|
|
9
|
-
var scrollbarContentNodeRef = params.scrollbarContentNodeRef, scrollableNodeRef = params.scrollableNodeRef;
|
|
10
|
-
var _a = useContext(ModalContext), setModalHeaderHighlighted = _a.setHeaderHighlighted, setModalFooterHighlighted = _a.setFooterHighlighted;
|
|
11
|
-
var handleScroll = function (e) {
|
|
12
|
-
var target = e.target;
|
|
13
|
-
var scrollTop = target.scrollTop, scrollHeight = target.scrollHeight, clientHeight = target.clientHeight;
|
|
14
|
-
var isElementFullScrolled = scrollHeight - scrollTop === clientHeight;
|
|
15
|
-
if (setModalHeaderHighlighted) {
|
|
16
|
-
setModalHeaderHighlighted(scrollTop > 0);
|
|
17
|
-
}
|
|
18
|
-
if (setModalFooterHighlighted) {
|
|
19
|
-
setModalFooterHighlighted(!isElementFullScrolled);
|
|
20
|
-
}
|
|
21
|
-
};
|
|
22
|
-
// Очищаем overlap значения в контексте
|
|
23
|
-
useEffect(function () { return function () {
|
|
24
|
-
if (setModalHeaderHighlighted) {
|
|
25
|
-
setModalHeaderHighlighted(false);
|
|
26
|
-
}
|
|
27
|
-
if (setModalFooterHighlighted) {
|
|
28
|
-
setModalFooterHighlighted(false);
|
|
29
|
-
}
|
|
30
|
-
}; }, [setModalHeaderHighlighted, setModalFooterHighlighted]);
|
|
31
|
-
// Расчет overlap футера при resize событии
|
|
32
|
-
useEffect(function () {
|
|
33
|
-
var resizeObserver = new ResizeObserver(function () {
|
|
34
|
-
var _a, _b;
|
|
35
|
-
var contentHeight = ((_a = scrollbarContentNodeRef.current) === null || _a === void 0 ? void 0 : _a.clientHeight) || 0;
|
|
36
|
-
var wrapperHeight = ((_b = scrollableNodeRef.current) === null || _b === void 0 ? void 0 : _b.clientHeight) || 0;
|
|
37
|
-
if (setModalFooterHighlighted) {
|
|
38
|
-
setModalFooterHighlighted(contentHeight > wrapperHeight);
|
|
39
|
-
}
|
|
40
|
-
});
|
|
41
|
-
if (scrollbarContentNodeRef.current) {
|
|
42
|
-
resizeObserver.observe(scrollbarContentNodeRef.current);
|
|
43
|
-
}
|
|
44
|
-
return function () {
|
|
45
|
-
resizeObserver.disconnect();
|
|
46
|
-
};
|
|
47
|
-
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
48
|
-
}, [setModalFooterHighlighted]);
|
|
49
|
-
return { handleScroll: handleScroll };
|
|
50
|
-
};
|
|
51
|
-
|
|
52
|
-
export { useModalHighlighted };
|
|
53
|
-
//# sourceMappingURL=use-modal-highlighted.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"use-modal-highlighted.js","sources":["../../../src/desktop/hooks/use-modal-highlighted.ts"],"sourcesContent":["import { type RefObject, useContext, useEffect } from 'react';\n\nimport { type ScrollbarProps } from '@alfalab/core-components-scrollbar';\n\nimport { ModalContext } from '../../Context';\n\ninterface Params {\n scrollbarContentNodeRef: RefObject<HTMLDivElement>;\n scrollableNodeRef: RefObject<HTMLDivElement>;\n}\n\n/**\n * Расчет overlap состояния\n * Этот функционал есть в base-modal, но так как в desktop версии используется кастомный scroll необходимо обрабатывать это в ручную\n */\nexport const useModalHighlighted = (params: Params) => {\n const { scrollbarContentNodeRef, scrollableNodeRef } = params;\n\n const {\n setHeaderHighlighted: setModalHeaderHighlighted,\n setFooterHighlighted: setModalFooterHighlighted,\n } = useContext(ModalContext);\n\n const handleScroll: ScrollbarProps['onContentScroll'] = (e) => {\n const target = e.target as HTMLDivElement;\n const { scrollTop, scrollHeight, clientHeight } = target;\n\n const isElementFullScrolled = scrollHeight - scrollTop === clientHeight;\n\n if (setModalHeaderHighlighted) {\n setModalHeaderHighlighted(scrollTop > 0);\n }\n\n if (setModalFooterHighlighted) {\n setModalFooterHighlighted(!isElementFullScrolled);\n }\n };\n\n // Очищаем overlap значения в контексте\n useEffect(\n () => () => {\n if (setModalHeaderHighlighted) {\n setModalHeaderHighlighted(false);\n }\n\n if (setModalFooterHighlighted) {\n setModalFooterHighlighted(false);\n }\n },\n [setModalHeaderHighlighted, setModalFooterHighlighted],\n );\n\n // Расчет overlap футера при resize событии\n useEffect(() => {\n const resizeObserver = new ResizeObserver(() => {\n const contentHeight = scrollbarContentNodeRef.current?.clientHeight || 0;\n const wrapperHeight = scrollableNodeRef.current?.clientHeight || 0;\n\n if (setModalFooterHighlighted) {\n setModalFooterHighlighted(contentHeight > wrapperHeight);\n }\n });\n\n if (scrollbarContentNodeRef.current) {\n resizeObserver.observe(scrollbarContentNodeRef.current);\n }\n\n return () => {\n resizeObserver.disconnect();\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [setModalFooterHighlighted]);\n\n return { handleScroll };\n};\n"],"names":[],"mappings":";;;AAWA;;;AAGG;AACI,IAAM,mBAAmB,GAAG,UAAC,MAAc,EAAA;IACtC,IAAA,uBAAuB,GAAwB,MAAM,CAAA,uBAA9B,EAAE,iBAAiB,GAAK,MAAM,CAAA,iBAAX;IAE5C,IAAA,EAAA,GAGF,UAAU,CAAC,YAAY,CAAC,EAFF,yBAAyB,GAAA,EAAA,CAAA,oBAAA,EACzB,yBAAyB,GAAA,EAAA,CAAA,oBACvB;IAE5B,IAAM,YAAY,GAAsC,UAAC,CAAC,EAAA;AACtD,QAAA,IAAM,MAAM,GAAG,CAAC,CAAC,MAAwB;AACjC,QAAA,IAAA,SAAS,GAAiC,MAAM,CAAA,SAAvC,EAAE,YAAY,GAAmB,MAAM,CAAA,YAAzB,EAAE,YAAY,GAAK,MAAM,aAAX;AAE7C,QAAA,IAAM,qBAAqB,GAAG,YAAY,GAAG,SAAS,KAAK,YAAY;QAEvE,IAAI,yBAAyB,EAAE;AAC3B,YAAA,yBAAyB,CAAC,SAAS,GAAG,CAAC,CAAC;;QAG5C,IAAI,yBAAyB,EAAE;AAC3B,YAAA,yBAAyB,CAAC,CAAC,qBAAqB,CAAC;;AAEzD,KAAC;;IAGD,SAAS,CACL,cAAM,OAAA,YAAA;QACF,IAAI,yBAAyB,EAAE;YAC3B,yBAAyB,CAAC,KAAK,CAAC;;QAGpC,IAAI,yBAAyB,EAAE;YAC3B,yBAAyB,CAAC,KAAK,CAAC;;KAEvC,CAAA,EAAA,EACD,CAAC,yBAAyB,EAAE,yBAAyB,CAAC,CACzD;;AAGD,IAAA,SAAS,CAAC,YAAA;AACN,QAAA,IAAM,cAAc,GAAG,IAAI,cAAc,CAAC,YAAA;;YACtC,IAAM,aAAa,GAAG,CAAA,CAAA,EAAA,GAAA,uBAAuB,CAAC,OAAO,MAAE,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,MAAA,GAAA,EAAA,CAAA,YAAY,KAAI,CAAC;YACxE,IAAM,aAAa,GAAG,CAAA,CAAA,EAAA,GAAA,iBAAiB,CAAC,OAAO,MAAE,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,MAAA,GAAA,EAAA,CAAA,YAAY,KAAI,CAAC;YAElE,IAAI,yBAAyB,EAAE;AAC3B,gBAAA,yBAAyB,CAAC,aAAa,GAAG,aAAa,CAAC;;AAEhE,SAAC,CAAC;AAEF,QAAA,IAAI,uBAAuB,CAAC,OAAO,EAAE;AACjC,YAAA,cAAc,CAAC,OAAO,CAAC,uBAAuB,CAAC,OAAO,CAAC;;QAG3D,OAAO,YAAA;YACH,cAAc,CAAC,UAAU,EAAE;AAC/B,SAAC;;AAEL,KAAC,EAAE,CAAC,yBAAyB,CAAC,CAAC;AAE/B,IAAA,OAAO,EAAE,YAAY,EAAA,YAAA,EAAE;AAC3B;;;;"}
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
import { type RefObject } from 'react';
|
|
2
|
-
interface Params {
|
|
3
|
-
scrollbarContentNodeRef: RefObject<HTMLDivElement>;
|
|
4
|
-
scrollableNodeRef: RefObject<HTMLDivElement>;
|
|
5
|
-
}
|
|
6
|
-
/**
|
|
7
|
-
* Расчет overlap состояния
|
|
8
|
-
* Этот функционал есть в base-modal, но так как в desktop версии используется кастомный scroll необходимо обрабатывать это в ручную
|
|
9
|
-
*/
|
|
10
|
-
export declare const useModalHighlighted: (params: Params) => {
|
|
11
|
-
handleScroll: (e: Event) => void;
|
|
12
|
-
};
|
|
13
|
-
export {};
|
|
@@ -1,52 +0,0 @@
|
|
|
1
|
-
import { useContext, useEffect } from 'react';
|
|
2
|
-
import { ModalContext } from '../../Context.js';
|
|
3
|
-
|
|
4
|
-
/**
|
|
5
|
-
* Расчет overlap состояния
|
|
6
|
-
* Этот функционал есть в base-modal, но так как в desktop версии используется кастомный scroll необходимо обрабатывать это в ручную
|
|
7
|
-
*/
|
|
8
|
-
const useModalHighlighted = (params) => {
|
|
9
|
-
const { scrollbarContentNodeRef, scrollableNodeRef } = params;
|
|
10
|
-
const { setHeaderHighlighted: setModalHeaderHighlighted, setFooterHighlighted: setModalFooterHighlighted, } = useContext(ModalContext);
|
|
11
|
-
const handleScroll = (e) => {
|
|
12
|
-
const target = e.target;
|
|
13
|
-
const { scrollTop, scrollHeight, clientHeight } = target;
|
|
14
|
-
const isElementFullScrolled = scrollHeight - scrollTop === clientHeight;
|
|
15
|
-
if (setModalHeaderHighlighted) {
|
|
16
|
-
setModalHeaderHighlighted(scrollTop > 0);
|
|
17
|
-
}
|
|
18
|
-
if (setModalFooterHighlighted) {
|
|
19
|
-
setModalFooterHighlighted(!isElementFullScrolled);
|
|
20
|
-
}
|
|
21
|
-
};
|
|
22
|
-
// Очищаем overlap значения в контексте
|
|
23
|
-
useEffect(() => () => {
|
|
24
|
-
if (setModalHeaderHighlighted) {
|
|
25
|
-
setModalHeaderHighlighted(false);
|
|
26
|
-
}
|
|
27
|
-
if (setModalFooterHighlighted) {
|
|
28
|
-
setModalFooterHighlighted(false);
|
|
29
|
-
}
|
|
30
|
-
}, [setModalHeaderHighlighted, setModalFooterHighlighted]);
|
|
31
|
-
// Расчет overlap футера при resize событии
|
|
32
|
-
useEffect(() => {
|
|
33
|
-
const resizeObserver = new ResizeObserver(() => {
|
|
34
|
-
const contentHeight = scrollbarContentNodeRef.current?.clientHeight || 0;
|
|
35
|
-
const wrapperHeight = scrollableNodeRef.current?.clientHeight || 0;
|
|
36
|
-
if (setModalFooterHighlighted) {
|
|
37
|
-
setModalFooterHighlighted(contentHeight > wrapperHeight);
|
|
38
|
-
}
|
|
39
|
-
});
|
|
40
|
-
if (scrollbarContentNodeRef.current) {
|
|
41
|
-
resizeObserver.observe(scrollbarContentNodeRef.current);
|
|
42
|
-
}
|
|
43
|
-
return () => {
|
|
44
|
-
resizeObserver.disconnect();
|
|
45
|
-
};
|
|
46
|
-
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
47
|
-
}, [setModalFooterHighlighted]);
|
|
48
|
-
return { handleScroll };
|
|
49
|
-
};
|
|
50
|
-
|
|
51
|
-
export { useModalHighlighted };
|
|
52
|
-
//# sourceMappingURL=use-modal-highlighted.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"use-modal-highlighted.js","sources":["../../../src/desktop/hooks/use-modal-highlighted.ts"],"sourcesContent":["import { type RefObject, useContext, useEffect } from 'react';\n\nimport { type ScrollbarProps } from '@alfalab/core-components-scrollbar';\n\nimport { ModalContext } from '../../Context';\n\ninterface Params {\n scrollbarContentNodeRef: RefObject<HTMLDivElement>;\n scrollableNodeRef: RefObject<HTMLDivElement>;\n}\n\n/**\n * Расчет overlap состояния\n * Этот функционал есть в base-modal, но так как в desktop версии используется кастомный scroll необходимо обрабатывать это в ручную\n */\nexport const useModalHighlighted = (params: Params) => {\n const { scrollbarContentNodeRef, scrollableNodeRef } = params;\n\n const {\n setHeaderHighlighted: setModalHeaderHighlighted,\n setFooterHighlighted: setModalFooterHighlighted,\n } = useContext(ModalContext);\n\n const handleScroll: ScrollbarProps['onContentScroll'] = (e) => {\n const target = e.target as HTMLDivElement;\n const { scrollTop, scrollHeight, clientHeight } = target;\n\n const isElementFullScrolled = scrollHeight - scrollTop === clientHeight;\n\n if (setModalHeaderHighlighted) {\n setModalHeaderHighlighted(scrollTop > 0);\n }\n\n if (setModalFooterHighlighted) {\n setModalFooterHighlighted(!isElementFullScrolled);\n }\n };\n\n // Очищаем overlap значения в контексте\n useEffect(\n () => () => {\n if (setModalHeaderHighlighted) {\n setModalHeaderHighlighted(false);\n }\n\n if (setModalFooterHighlighted) {\n setModalFooterHighlighted(false);\n }\n },\n [setModalHeaderHighlighted, setModalFooterHighlighted],\n );\n\n // Расчет overlap футера при resize событии\n useEffect(() => {\n const resizeObserver = new ResizeObserver(() => {\n const contentHeight = scrollbarContentNodeRef.current?.clientHeight || 0;\n const wrapperHeight = scrollableNodeRef.current?.clientHeight || 0;\n\n if (setModalFooterHighlighted) {\n setModalFooterHighlighted(contentHeight > wrapperHeight);\n }\n });\n\n if (scrollbarContentNodeRef.current) {\n resizeObserver.observe(scrollbarContentNodeRef.current);\n }\n\n return () => {\n resizeObserver.disconnect();\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [setModalFooterHighlighted]);\n\n return { handleScroll };\n};\n"],"names":[],"mappings":";;;AAWA;;;AAGG;AACU,MAAA,mBAAmB,GAAG,CAAC,MAAc,KAAI;AAClD,IAAA,MAAM,EAAE,uBAAuB,EAAE,iBAAiB,EAAE,GAAG,MAAM;AAE7D,IAAA,MAAM,EACF,oBAAoB,EAAE,yBAAyB,EAC/C,oBAAoB,EAAE,yBAAyB,GAClD,GAAG,UAAU,CAAC,YAAY,CAAC;AAE5B,IAAA,MAAM,YAAY,GAAsC,CAAC,CAAC,KAAI;AAC1D,QAAA,MAAM,MAAM,GAAG,CAAC,CAAC,MAAwB;QACzC,MAAM,EAAE,SAAS,EAAE,YAAY,EAAE,YAAY,EAAE,GAAG,MAAM;AAExD,QAAA,MAAM,qBAAqB,GAAG,YAAY,GAAG,SAAS,KAAK,YAAY;QAEvE,IAAI,yBAAyB,EAAE;AAC3B,YAAA,yBAAyB,CAAC,SAAS,GAAG,CAAC,CAAC;;QAG5C,IAAI,yBAAyB,EAAE;AAC3B,YAAA,yBAAyB,CAAC,CAAC,qBAAqB,CAAC;;AAEzD,KAAC;;AAGD,IAAA,SAAS,CACL,MAAM,MAAK;QACP,IAAI,yBAAyB,EAAE;YAC3B,yBAAyB,CAAC,KAAK,CAAC;;QAGpC,IAAI,yBAAyB,EAAE;YAC3B,yBAAyB,CAAC,KAAK,CAAC;;AAExC,KAAC,EACD,CAAC,yBAAyB,EAAE,yBAAyB,CAAC,CACzD;;IAGD,SAAS,CAAC,MAAK;AACX,QAAA,MAAM,cAAc,GAAG,IAAI,cAAc,CAAC,MAAK;YAC3C,MAAM,aAAa,GAAG,uBAAuB,CAAC,OAAO,EAAE,YAAY,IAAI,CAAC;YACxE,MAAM,aAAa,GAAG,iBAAiB,CAAC,OAAO,EAAE,YAAY,IAAI,CAAC;YAElE,IAAI,yBAAyB,EAAE;AAC3B,gBAAA,yBAAyB,CAAC,aAAa,GAAG,aAAa,CAAC;;AAEhE,SAAC,CAAC;AAEF,QAAA,IAAI,uBAAuB,CAAC,OAAO,EAAE;AACjC,YAAA,cAAc,CAAC,OAAO,CAAC,uBAAuB,CAAC,OAAO,CAAC;;AAG3D,QAAA,OAAO,MAAK;YACR,cAAc,CAAC,UAAU,EAAE;AAC/B,SAAC;;AAEL,KAAC,EAAE,CAAC,yBAAyB,CAAC,CAAC;IAE/B,OAAO,EAAE,YAAY,EAAE;AAC3B;;;;"}
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
import { type RefObject } from 'react';
|
|
2
|
-
interface Params {
|
|
3
|
-
scrollbarContentNodeRef: RefObject<HTMLDivElement>;
|
|
4
|
-
scrollableNodeRef: RefObject<HTMLDivElement>;
|
|
5
|
-
}
|
|
6
|
-
/**
|
|
7
|
-
* Расчет overlap состояния
|
|
8
|
-
* Этот функционал есть в base-modal, но так как в desktop версии используется кастомный scroll необходимо обрабатывать это в ручную
|
|
9
|
-
*/
|
|
10
|
-
export declare const useModalHighlighted: (params: Params) => {
|
|
11
|
-
handleScroll: (e: Event) => void;
|
|
12
|
-
};
|
|
13
|
-
export {};
|
|
@@ -1,52 +0,0 @@
|
|
|
1
|
-
import { useContext, useEffect } from 'react';
|
|
2
|
-
import { ModalContext } from '../../Context.js';
|
|
3
|
-
|
|
4
|
-
/**
|
|
5
|
-
* Расчет overlap состояния
|
|
6
|
-
* Этот функционал есть в base-modal, но так как в desktop версии используется кастомный scroll необходимо обрабатывать это в ручную
|
|
7
|
-
*/
|
|
8
|
-
const useModalHighlighted = (params) => {
|
|
9
|
-
const { scrollbarContentNodeRef, scrollableNodeRef } = params;
|
|
10
|
-
const { setHeaderHighlighted: setModalHeaderHighlighted, setFooterHighlighted: setModalFooterHighlighted, } = useContext(ModalContext);
|
|
11
|
-
const handleScroll = (e) => {
|
|
12
|
-
const target = e.target;
|
|
13
|
-
const { scrollTop, scrollHeight, clientHeight } = target;
|
|
14
|
-
const isElementFullScrolled = scrollHeight - scrollTop === clientHeight;
|
|
15
|
-
if (setModalHeaderHighlighted) {
|
|
16
|
-
setModalHeaderHighlighted(scrollTop > 0);
|
|
17
|
-
}
|
|
18
|
-
if (setModalFooterHighlighted) {
|
|
19
|
-
setModalFooterHighlighted(!isElementFullScrolled);
|
|
20
|
-
}
|
|
21
|
-
};
|
|
22
|
-
// Очищаем overlap значения в контексте
|
|
23
|
-
useEffect(() => () => {
|
|
24
|
-
if (setModalHeaderHighlighted) {
|
|
25
|
-
setModalHeaderHighlighted(false);
|
|
26
|
-
}
|
|
27
|
-
if (setModalFooterHighlighted) {
|
|
28
|
-
setModalFooterHighlighted(false);
|
|
29
|
-
}
|
|
30
|
-
}, [setModalHeaderHighlighted, setModalFooterHighlighted]);
|
|
31
|
-
// Расчет overlap футера при resize событии
|
|
32
|
-
useEffect(() => {
|
|
33
|
-
const resizeObserver = new ResizeObserver(() => {
|
|
34
|
-
const contentHeight = scrollbarContentNodeRef.current?.clientHeight || 0;
|
|
35
|
-
const wrapperHeight = scrollableNodeRef.current?.clientHeight || 0;
|
|
36
|
-
if (setModalFooterHighlighted) {
|
|
37
|
-
setModalFooterHighlighted(contentHeight > wrapperHeight);
|
|
38
|
-
}
|
|
39
|
-
});
|
|
40
|
-
if (scrollbarContentNodeRef.current) {
|
|
41
|
-
resizeObserver.observe(scrollbarContentNodeRef.current);
|
|
42
|
-
}
|
|
43
|
-
return () => {
|
|
44
|
-
resizeObserver.disconnect();
|
|
45
|
-
};
|
|
46
|
-
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
47
|
-
}, [setModalFooterHighlighted]);
|
|
48
|
-
return { handleScroll };
|
|
49
|
-
};
|
|
50
|
-
|
|
51
|
-
export { useModalHighlighted };
|
|
52
|
-
//# sourceMappingURL=use-modal-highlighted.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"use-modal-highlighted.js","sources":["../../../src/desktop/hooks/use-modal-highlighted.ts"],"sourcesContent":["import { type RefObject, useContext, useEffect } from 'react';\n\nimport { type ScrollbarProps } from '@alfalab/core-components-scrollbar';\n\nimport { ModalContext } from '../../Context';\n\ninterface Params {\n scrollbarContentNodeRef: RefObject<HTMLDivElement>;\n scrollableNodeRef: RefObject<HTMLDivElement>;\n}\n\n/**\n * Расчет overlap состояния\n * Этот функционал есть в base-modal, но так как в desktop версии используется кастомный scroll необходимо обрабатывать это в ручную\n */\nexport const useModalHighlighted = (params: Params) => {\n const { scrollbarContentNodeRef, scrollableNodeRef } = params;\n\n const {\n setHeaderHighlighted: setModalHeaderHighlighted,\n setFooterHighlighted: setModalFooterHighlighted,\n } = useContext(ModalContext);\n\n const handleScroll: ScrollbarProps['onContentScroll'] = (e) => {\n const target = e.target as HTMLDivElement;\n const { scrollTop, scrollHeight, clientHeight } = target;\n\n const isElementFullScrolled = scrollHeight - scrollTop === clientHeight;\n\n if (setModalHeaderHighlighted) {\n setModalHeaderHighlighted(scrollTop > 0);\n }\n\n if (setModalFooterHighlighted) {\n setModalFooterHighlighted(!isElementFullScrolled);\n }\n };\n\n // Очищаем overlap значения в контексте\n useEffect(\n () => () => {\n if (setModalHeaderHighlighted) {\n setModalHeaderHighlighted(false);\n }\n\n if (setModalFooterHighlighted) {\n setModalFooterHighlighted(false);\n }\n },\n [setModalHeaderHighlighted, setModalFooterHighlighted],\n );\n\n // Расчет overlap футера при resize событии\n useEffect(() => {\n const resizeObserver = new ResizeObserver(() => {\n const contentHeight = scrollbarContentNodeRef.current?.clientHeight || 0;\n const wrapperHeight = scrollableNodeRef.current?.clientHeight || 0;\n\n if (setModalFooterHighlighted) {\n setModalFooterHighlighted(contentHeight > wrapperHeight);\n }\n });\n\n if (scrollbarContentNodeRef.current) {\n resizeObserver.observe(scrollbarContentNodeRef.current);\n }\n\n return () => {\n resizeObserver.disconnect();\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [setModalFooterHighlighted]);\n\n return { handleScroll };\n};\n"],"names":[],"mappings":";;;AAWA;;;AAGG;AACU,MAAA,mBAAmB,GAAG,CAAC,MAAc,KAAI;AAClD,IAAA,MAAM,EAAE,uBAAuB,EAAE,iBAAiB,EAAE,GAAG,MAAM;AAE7D,IAAA,MAAM,EACF,oBAAoB,EAAE,yBAAyB,EAC/C,oBAAoB,EAAE,yBAAyB,GAClD,GAAG,UAAU,CAAC,YAAY,CAAC;AAE5B,IAAA,MAAM,YAAY,GAAsC,CAAC,CAAC,KAAI;AAC1D,QAAA,MAAM,MAAM,GAAG,CAAC,CAAC,MAAwB;QACzC,MAAM,EAAE,SAAS,EAAE,YAAY,EAAE,YAAY,EAAE,GAAG,MAAM;AAExD,QAAA,MAAM,qBAAqB,GAAG,YAAY,GAAG,SAAS,KAAK,YAAY;QAEvE,IAAI,yBAAyB,EAAE;AAC3B,YAAA,yBAAyB,CAAC,SAAS,GAAG,CAAC,CAAC;;QAG5C,IAAI,yBAAyB,EAAE;AAC3B,YAAA,yBAAyB,CAAC,CAAC,qBAAqB,CAAC;;AAEzD,KAAC;;AAGD,IAAA,SAAS,CACL,MAAM,MAAK;QACP,IAAI,yBAAyB,EAAE;YAC3B,yBAAyB,CAAC,KAAK,CAAC;;QAGpC,IAAI,yBAAyB,EAAE;YAC3B,yBAAyB,CAAC,KAAK,CAAC;;AAExC,KAAC,EACD,CAAC,yBAAyB,EAAE,yBAAyB,CAAC,CACzD;;IAGD,SAAS,CAAC,MAAK;AACX,QAAA,MAAM,cAAc,GAAG,IAAI,cAAc,CAAC,MAAK;YAC3C,MAAM,aAAa,GAAG,uBAAuB,CAAC,OAAO,EAAE,YAAY,IAAI,CAAC;YACxE,MAAM,aAAa,GAAG,iBAAiB,CAAC,OAAO,EAAE,YAAY,IAAI,CAAC;YAElE,IAAI,yBAAyB,EAAE;AAC3B,gBAAA,yBAAyB,CAAC,aAAa,GAAG,aAAa,CAAC;;AAEhE,SAAC,CAAC;AAEF,QAAA,IAAI,uBAAuB,CAAC,OAAO,EAAE;AACjC,YAAA,cAAc,CAAC,OAAO,CAAC,uBAAuB,CAAC,OAAO,CAAC;;AAG3D,QAAA,OAAO,MAAK;YACR,cAAc,CAAC,UAAU,EAAE;AAC/B,SAAC;;AAEL,KAAC,EAAE,CAAC,yBAAyB,CAAC,CAAC;IAE/B,OAAO,EAAE,YAAY,EAAE;AAC3B;;;;"}
|
|
@@ -1,75 +0,0 @@
|
|
|
1
|
-
import { type RefObject, useContext, useEffect } from 'react';
|
|
2
|
-
|
|
3
|
-
import { type ScrollbarProps } from '@alfalab/core-components-scrollbar';
|
|
4
|
-
|
|
5
|
-
import { ModalContext } from '../../Context';
|
|
6
|
-
|
|
7
|
-
interface Params {
|
|
8
|
-
scrollbarContentNodeRef: RefObject<HTMLDivElement>;
|
|
9
|
-
scrollableNodeRef: RefObject<HTMLDivElement>;
|
|
10
|
-
}
|
|
11
|
-
|
|
12
|
-
/**
|
|
13
|
-
* Расчет overlap состояния
|
|
14
|
-
* Этот функционал есть в base-modal, но так как в desktop версии используется кастомный scroll необходимо обрабатывать это в ручную
|
|
15
|
-
*/
|
|
16
|
-
export const useModalHighlighted = (params: Params) => {
|
|
17
|
-
const { scrollbarContentNodeRef, scrollableNodeRef } = params;
|
|
18
|
-
|
|
19
|
-
const {
|
|
20
|
-
setHeaderHighlighted: setModalHeaderHighlighted,
|
|
21
|
-
setFooterHighlighted: setModalFooterHighlighted,
|
|
22
|
-
} = useContext(ModalContext);
|
|
23
|
-
|
|
24
|
-
const handleScroll: ScrollbarProps['onContentScroll'] = (e) => {
|
|
25
|
-
const target = e.target as HTMLDivElement;
|
|
26
|
-
const { scrollTop, scrollHeight, clientHeight } = target;
|
|
27
|
-
|
|
28
|
-
const isElementFullScrolled = scrollHeight - scrollTop === clientHeight;
|
|
29
|
-
|
|
30
|
-
if (setModalHeaderHighlighted) {
|
|
31
|
-
setModalHeaderHighlighted(scrollTop > 0);
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
if (setModalFooterHighlighted) {
|
|
35
|
-
setModalFooterHighlighted(!isElementFullScrolled);
|
|
36
|
-
}
|
|
37
|
-
};
|
|
38
|
-
|
|
39
|
-
// Очищаем overlap значения в контексте
|
|
40
|
-
useEffect(
|
|
41
|
-
() => () => {
|
|
42
|
-
if (setModalHeaderHighlighted) {
|
|
43
|
-
setModalHeaderHighlighted(false);
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
if (setModalFooterHighlighted) {
|
|
47
|
-
setModalFooterHighlighted(false);
|
|
48
|
-
}
|
|
49
|
-
},
|
|
50
|
-
[setModalHeaderHighlighted, setModalFooterHighlighted],
|
|
51
|
-
);
|
|
52
|
-
|
|
53
|
-
// Расчет overlap футера при resize событии
|
|
54
|
-
useEffect(() => {
|
|
55
|
-
const resizeObserver = new ResizeObserver(() => {
|
|
56
|
-
const contentHeight = scrollbarContentNodeRef.current?.clientHeight || 0;
|
|
57
|
-
const wrapperHeight = scrollableNodeRef.current?.clientHeight || 0;
|
|
58
|
-
|
|
59
|
-
if (setModalFooterHighlighted) {
|
|
60
|
-
setModalFooterHighlighted(contentHeight > wrapperHeight);
|
|
61
|
-
}
|
|
62
|
-
});
|
|
63
|
-
|
|
64
|
-
if (scrollbarContentNodeRef.current) {
|
|
65
|
-
resizeObserver.observe(scrollbarContentNodeRef.current);
|
|
66
|
-
}
|
|
67
|
-
|
|
68
|
-
return () => {
|
|
69
|
-
resizeObserver.disconnect();
|
|
70
|
-
};
|
|
71
|
-
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
72
|
-
}, [setModalFooterHighlighted]);
|
|
73
|
-
|
|
74
|
-
return { handleScroll };
|
|
75
|
-
};
|