@hh.ru/magritte-ui-modal-deprecated 1.0.39 → 1.0.41

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/Modal.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"Modal.js","sources":["src/Modal.tsx"],"sourcesContent":["import {\n forwardRef,\n HTMLAttributes,\n useLayoutEffect,\n useRef,\n useState,\n useCallback,\n useId,\n useEffect,\n cloneElement,\n Children,\n} from 'react';\nimport { createPortal } from 'react-dom';\nimport { CSSTransition } from 'react-transition-group';\nimport classnames from 'classnames';\n\nimport { useServerEnv } from '@hh.ru/magritte-common-is-server-env';\nimport { keyboardMatch, keyboardKeys, useKeyboardNavigation } from '@hh.ru/magritte-common-keyboard';\nimport { disableScroll, TimeoutCallback } from '@hh.ru/magritte-common-modal-helper';\nimport { CloseByClickOutsideContext } from '@hh.ru/magritte-common-mouse/useCloseByClickOutside';\nimport { useMultipleRefs } from '@hh.ru/magritte-common-use-multiple-refs';\nimport { useNoBubbling } from '@hh.ru/magritte-common-use-no-bubbling';\nimport { isActionBarComponent } from '@hh.ru/magritte-ui-action-bar';\nimport { useBreakpoint, Breakpoint } from '@hh.ru/magritte-ui-breakpoint';\nimport { Layer } from '@hh.ru/magritte-ui-layer';\nimport { ModalContentWithHeader } from '@hh.ru/magritte-ui-modal-deprecated/ModalContentWithHeader';\nimport { ModalHeaderProps, ModalProps } from '@hh.ru/magritte-ui-modal-deprecated/types';\nimport { useModalOrder } from '@hh.ru/magritte-ui-modal-deprecated/useModalOrder';\nimport { isProgressBarComponent } from '@hh.ru/magritte-ui-progress-bar';\nimport { ThemeWrapper } from '@hh.ru/magritte-ui-theme-wrapper';\nimport { isValidTreeSelectorWrapper } from '@hh.ru/magritte-ui-tree-selector';\n\nimport styles from './modal.less';\n\nconst DEFAULT_ACTION_BAR_PADDING = 24;\nconst DEFAULT_PAGE_HEADER_PADDING = 72;\n\nconst noop = () => undefined;\n\nconst toNumber = (value: string) => {\n const result = parseInt(value, 10);\n return Number.isInteger(result) ? result : 0;\n};\n\nconst CSS_CLASSES = {\n center: {\n appear: styles.animationEnterCenter,\n appearActive: styles.animationEnterCenterActive,\n enter: styles.animationEnterCenter,\n enterActive: styles.animationEnterCenterActive,\n exit: styles.animationExitCenter,\n exitActive: styles.animationExitCenterActive,\n },\n left: {\n appear: styles.animationEnterLeft,\n appearActive: styles.animationEnterLeftActive,\n enter: styles.animationEnterLeft,\n enterActive: styles.animationEnterLeftActive,\n exit: styles.animationExitLeft,\n exitActive: styles.animationExitLeftActive,\n },\n right: {\n appear: styles.animationEnterRight,\n appearActive: styles.animationEnterRightActive,\n enter: styles.animationEnterRight,\n enterActive: styles.animationEnterRightActive,\n exit: styles.animationExitRight,\n exitActive: styles.animationExitRightActive,\n },\n};\n\nconst INVISIBLE_FOR_BREAKPOINTS = [Breakpoint.XS, Breakpoint.S];\n\n/** @deprecated Компонент устарел. Используйте `Modal` из `@hh.ru/magritte-ui-modal` */\nexport const Modal = forwardRef<\n HTMLDivElement,\n ModalProps &\n Omit<HTMLAttributes<HTMLDivElement>, keyof ModalProps | 'role' | 'tabindex' | 'className' | 'aria-labeledby'>\n>(\n (\n {\n visible,\n size = 'medium',\n title,\n titleAlignment = 'left',\n titleSize = 'large',\n titleMaxLines,\n titleElement = 'h2',\n titleDescription,\n titleDescriptionMaxLines,\n titleStyle,\n titleDescriptionStyle,\n children,\n onClose = noop,\n headerImageUrl,\n headerImage,\n headerHeight,\n host,\n options,\n actions,\n actionLink,\n footer,\n disableVerticalPaddings = false,\n disableHorizontalPaddings = false,\n closeByClickOutside = true,\n onAppear,\n onBeforeExit,\n onAfterExit,\n position = 'center',\n height = position === 'center' ? 'content' : 'full-screen',\n minHeight,\n showOverlay: _showOverlay = true,\n pageHeaderPadding = DEFAULT_PAGE_HEADER_PADDING,\n returnFocusOnClose,\n ...rest\n },\n ref\n ) => {\n const isServerEnv = useServerEnv();\n const enableScrollRef = useRef<TimeoutCallback>();\n const onAfterExitRef = useRef(onAfterExit);\n const onBeforeExitRef = useRef(onBeforeExit);\n onAfterExitRef.current = onAfterExit;\n onBeforeExitRef.current = onBeforeExit;\n const [animationTimeout, setAnimationTimeout] = useState<{ enter: number; exit: number }>({\n enter: 0,\n exit: 0,\n });\n const animationTimeoutExitRef = useRef(animationTimeout.exit);\n animationTimeoutExitRef.current = animationTimeout.exit;\n const labelId = useId();\n const additionalProps: { 'aria-labelledby'?: string } = {};\n if (title) {\n additionalProps['aria-labelledby'] = labelId;\n }\n const modalRef = useRef<HTMLDivElement>(null);\n const overlayRef = useRef<HTMLDivElement>(null);\n const keyboardNavigationRef = useKeyboardNavigation({ enabled: visible && !isServerEnv, mode: 'loop' });\n const modalRefCallback = useMultipleRefs(ref, modalRef, keyboardNavigationRef);\n\n const isPaddingsDisableAllowed =\n !title &&\n !headerImageUrl &&\n !headerImage &&\n !titleDescription &&\n !footer &&\n !options &&\n !actionLink &&\n !actions;\n const isVerticalPaddingsDisabled = disableVerticalPaddings && isPaddingsDisableAllowed;\n const isHorizontalPaddingsDisabled = disableHorizontalPaddings && isPaddingsDisableAllowed;\n\n const showOverlay = position === 'center' || _showOverlay;\n\n const activatorRef = useRef<HTMLElement | null>(null);\n const onEntering = useCallback(() => {\n if (returnFocusOnClose && document.activeElement instanceof HTMLElement) {\n activatorRef.current = document.activeElement;\n }\n if (!enableScrollRef.current && showOverlay) {\n enableScrollRef.current = disableScroll();\n }\n if (modalRef.current && !modalRef.current.contains(document.activeElement)) {\n modalRef.current.focus();\n }\n }, [returnFocusOnClose, showOverlay]);\n\n const onEntered = useCallback(() => {\n onAppear?.();\n }, [onAppear]);\n\n const onExit = useCallback(() => {\n onBeforeExitRef.current?.();\n }, []);\n\n const onExited = useCallback(() => {\n // оставляем обработку скрола еще и тут\n // чтобы обработать историю со сменой breakpoint\n enableScrollRef.current?.();\n enableScrollRef.current = undefined;\n\n onAfterExitRef.current?.();\n\n if (activatorRef.current !== null && document.contains(activatorRef.current)) {\n activatorRef.current?.focus();\n activatorRef.current = null;\n }\n }, []);\n\n useModalOrder(!!visible && !isServerEnv, modalRef);\n\n const { breakpoint } = useBreakpoint();\n useEffect(() => {\n if (!visible) {\n return;\n }\n\n const currentBreakpointVisible = !INVISIBLE_FOR_BREAKPOINTS.includes(breakpoint);\n if (!currentBreakpointVisible) {\n onExit();\n onExited();\n return;\n }\n\n onEntering();\n // visible не должно быть в зависимостях, т.к. этот эффект обрабатывает только изменение брейкпоинта\n // visible обрабатывается CSSTransition\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [breakpoint, onEntering, onExited, onExit]);\n\n useEffect(() => {\n return () => {\n enableScrollRef.current?.(animationTimeoutExitRef.current);\n enableScrollRef.current = undefined;\n };\n }, [visible]);\n\n useLayoutEffect(() => {\n const animationTimeoutElement = document.createElement('div');\n animationTimeoutElement.classList.add(styles.animationTimeout);\n document.body.appendChild(animationTimeoutElement);\n const style = window.getComputedStyle(animationTimeoutElement);\n setAnimationTimeout({\n enter: toNumber(style.getPropertyValue('--enter-animation-duration')),\n exit: toNumber(style.getPropertyValue('--exit-animation-duration')),\n });\n document.body.removeChild(animationTimeoutElement);\n }, [setAnimationTimeout]);\n\n useEffect(() => {\n if (showOverlay || !pageHeaderPadding || !visible) {\n return void 0;\n }\n\n const hasScrollTimeline = 'ScrollTimeline' in window;\n const overlay = overlayRef.current;\n\n if (!overlay) {\n return void 0;\n }\n\n let animation: Animation;\n const abortController = new AbortController();\n const keyframes = { top: [`${pageHeaderPadding}px`, '0px'] };\n if (hasScrollTimeline) {\n const timeline = new ScrollTimeline({ source: document.documentElement, axis: 'y' });\n // TS 7 (type-aware правила oxlint) уже знает rangeStart/rangeEnd, а TS 5 без каста не пропускает\n // oxlint-disable-next-line typescript/no-unnecessary-type-assertion\n animation = overlay.animate(keyframes, {\n timeline,\n rangeStart: '0px',\n // calc нужен для устранения бага https://issues.chromium.org/issues/40929569\n rangeEnd: `calc(0% + ${pageHeaderPadding}px)`,\n } as KeyframeAnimationOptions);\n } else {\n animation = overlay.animate(keyframes, { duration: 1000, fill: 'forwards' });\n animation.pause();\n\n window.addEventListener(\n 'scroll',\n () => {\n animation.currentTime =\n (Math.min(document.documentElement.scrollTop, pageHeaderPadding) / pageHeaderPadding) *\n 1000;\n },\n { signal: abortController.signal }\n );\n }\n\n return () => {\n abortController.abort();\n };\n }, [showOverlay, pageHeaderPadding, visible]);\n\n const overlayEventHandlers = useNoBubbling({\n onKeyDown: (event) => {\n if (keyboardMatch(event.nativeEvent as KeyboardEvent, keyboardKeys.Escape)) {\n onClose(event);\n }\n },\n onMouseDown: (event) => {\n if (!closeByClickOutside || modalRef.current?.contains(event.target as HTMLElement)) {\n return;\n }\n onClose(event);\n },\n });\n const overlayProps = showOverlay\n ? overlayEventHandlers\n : {\n onKeyDown: (event: React.KeyboardEvent) => {\n if (keyboardMatch(event.nativeEvent, keyboardKeys.Escape)) {\n onClose(event);\n }\n },\n };\n\n if (INVISIBLE_FOR_BREAKPOINTS.includes(breakpoint) || isServerEnv) {\n return null;\n }\n\n const modalHeaderProps = {\n title,\n titleElement,\n titleAlignment,\n titleSize,\n titleMaxLines,\n titleDescription,\n titleDescriptionMaxLines,\n titleStyle,\n titleDescriptionStyle,\n headerImageUrl,\n headerImage,\n headerHeight,\n options,\n actions,\n actionLink,\n } as ModalHeaderProps;\n\n const isTreeSelectorChild = Children.toArray(children).some(isValidTreeSelectorWrapper);\n // если есть progress bar, нужно скрыть divider (но showProgress - это слот под reactNode)\n const isActionBarHaveProgressBar =\n !!footer &&\n isActionBarComponent(footer) &&\n Boolean(footer.props.showProgress) &&\n isProgressBarComponent(footer.props.showProgress);\n\n return createPortal(\n <CSSTransition\n appear\n in={visible && !isServerEnv}\n nodeRef={overlayRef}\n onEntering={onEntering}\n onEntered={onEntered}\n onExit={onExit}\n onExited={onExited}\n classNames={CSS_CLASSES[position]}\n timeout={animationTimeout}\n unmountOnExit\n >\n <ThemeWrapper>\n {(themeClass) => (\n <Layer layer=\"modal\">\n <div\n {...overlayProps}\n ref={overlayRef}\n className={classnames(styles.modalOverlay, themeClass, {\n [styles.modalOverlayWithBackground]: showOverlay,\n [styles.modalOverlayLeft]: position === 'left',\n [styles.modalOverlayRight]: position === 'right',\n })}\n data-qa=\"modal-overlay\"\n >\n <CloseByClickOutsideContext.Provider value={overlayRef}>\n <div\n {...rest}\n {...additionalProps}\n aria-modal={visible && showOverlay && !isServerEnv}\n role=\"dialog\"\n className={classnames(styles.modal, {\n [styles.sizeSmall]: size === 'small',\n [styles.sizeMedium]: size === 'medium',\n [styles.modalFullHeight]: height === 'full-screen' || isTreeSelectorChild,\n [styles.noVerticalPaddings]: isVerticalPaddingsDisabled,\n [styles.noHorizontalPaddings]: isHorizontalPaddingsDisabled,\n [styles.modalWithBorder]: !showOverlay,\n })}\n ref={modalRefCallback}\n tabIndex={-1}\n style={{\n height: typeof height === 'number' ? `${height}px` : undefined,\n minHeight:\n typeof minHeight === 'number'\n ? `min(calc(100vh - 12px * 2), ${minHeight}px)`\n : undefined,\n }}\n >\n <ModalContentWithHeader\n {...modalHeaderProps}\n labelId={labelId}\n isTreeSelectorChild={isTreeSelectorChild}\n height={height}\n showDivider={!isActionBarHaveProgressBar}\n >\n {children}\n </ModalContentWithHeader>\n {!!footer && (\n <div className={styles.modalFooter} data-qa=\"modal-footer\">\n {isActionBarComponent(footer)\n ? cloneElement(footer, {\n type: footer.props.type || 'auto',\n padding: footer.props.padding || DEFAULT_ACTION_BAR_PADDING,\n showDivider: false,\n })\n : footer}\n </div>\n )}\n </div>\n </CloseByClickOutsideContext.Provider>\n </div>\n </Layer>\n )}\n </ThemeWrapper>\n </CSSTransition>,\n host || document.body\n );\n }\n);\n\nModal.displayName = 'Modal';\n"],"names":["_jsx","_jsxs"],"mappings":"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"}
1
+ {"version":3,"file":"Modal.js","sources":["src/Modal.tsx"],"sourcesContent":["import {\n forwardRef,\n HTMLAttributes,\n useLayoutEffect,\n useRef,\n useState,\n useCallback,\n useId,\n useEffect,\n cloneElement,\n Children,\n} from 'react';\nimport { createPortal } from 'react-dom';\nimport { CSSTransition } from 'react-transition-group';\nimport classnames from 'classnames';\n\nimport { useServerEnv } from '@hh.ru/magritte-common-is-server-env';\nimport { keyboardMatch, keyboardKeys, useKeyboardNavigation } from '@hh.ru/magritte-common-keyboard';\nimport { disableScroll, TimeoutCallback } from '@hh.ru/magritte-common-modal-helper';\nimport { CloseByClickOutsideContext } from '@hh.ru/magritte-common-mouse/useCloseByClickOutside';\nimport { useMultipleRefs } from '@hh.ru/magritte-common-use-multiple-refs';\nimport { useNoBubbling } from '@hh.ru/magritte-common-use-no-bubbling';\nimport { isActionBarComponent } from '@hh.ru/magritte-ui-action-bar';\nimport { useBreakpoint, Breakpoint } from '@hh.ru/magritte-ui-breakpoint';\nimport { Layer } from '@hh.ru/magritte-ui-layer';\nimport { ModalContentWithHeader } from '@hh.ru/magritte-ui-modal-deprecated/ModalContentWithHeader';\nimport { ModalHeaderProps, ModalProps } from '@hh.ru/magritte-ui-modal-deprecated/types';\nimport { useModalOrder } from '@hh.ru/magritte-ui-modal-deprecated/useModalOrder';\nimport { isProgressBarComponent } from '@hh.ru/magritte-ui-progress-bar';\nimport { ThemeWrapper } from '@hh.ru/magritte-ui-theme-wrapper';\nimport { isValidTreeSelectorWrapper } from '@hh.ru/magritte-ui-tree-selector';\n\nimport styles from './modal.less';\n\nconst DEFAULT_ACTION_BAR_PADDING = 24;\nconst DEFAULT_PAGE_HEADER_PADDING = 72;\n\nconst noop = () => undefined;\n\nconst toNumber = (value: string) => {\n const result = parseInt(value, 10);\n return Number.isInteger(result) ? result : 0;\n};\n\nconst CSS_CLASSES = {\n center: {\n appear: styles.animationEnterCenter,\n appearActive: styles.animationEnterCenterActive,\n enter: styles.animationEnterCenter,\n enterActive: styles.animationEnterCenterActive,\n exit: styles.animationExitCenter,\n exitActive: styles.animationExitCenterActive,\n },\n left: {\n appear: styles.animationEnterLeft,\n appearActive: styles.animationEnterLeftActive,\n enter: styles.animationEnterLeft,\n enterActive: styles.animationEnterLeftActive,\n exit: styles.animationExitLeft,\n exitActive: styles.animationExitLeftActive,\n },\n right: {\n appear: styles.animationEnterRight,\n appearActive: styles.animationEnterRightActive,\n enter: styles.animationEnterRight,\n enterActive: styles.animationEnterRightActive,\n exit: styles.animationExitRight,\n exitActive: styles.animationExitRightActive,\n },\n};\n\nconst INVISIBLE_FOR_BREAKPOINTS = [Breakpoint.XS, Breakpoint.S];\n\n/** @deprecated Компонент устарел. Используйте `Modal` из `@hh.ru/magritte-ui-modal` */\nexport const Modal = forwardRef<\n HTMLDivElement,\n ModalProps &\n Omit<HTMLAttributes<HTMLDivElement>, keyof ModalProps | 'role' | 'tabindex' | 'className' | 'aria-labeledby'>\n>(\n (\n {\n visible,\n size = 'medium',\n title,\n titleAlignment = 'left',\n titleSize = 'large',\n titleMaxLines,\n titleElement = 'h2',\n titleDescription,\n titleDescriptionMaxLines,\n titleStyle,\n titleDescriptionStyle,\n children,\n onClose = noop,\n headerImageUrl,\n headerImage,\n headerHeight,\n host,\n options,\n actions,\n actionLink,\n footer,\n disableVerticalPaddings = false,\n disableHorizontalPaddings = false,\n closeByClickOutside = true,\n onAppear,\n onBeforeExit,\n onAfterExit,\n position = 'center',\n height = position === 'center' ? 'content' : 'full-screen',\n minHeight,\n showOverlay: _showOverlay = true,\n pageHeaderPadding = DEFAULT_PAGE_HEADER_PADDING,\n returnFocusOnClose,\n ...rest\n },\n ref\n ) => {\n const isServerEnv = useServerEnv();\n const enableScrollRef = useRef<TimeoutCallback>();\n const onAfterExitRef = useRef(onAfterExit);\n const onBeforeExitRef = useRef(onBeforeExit);\n onAfterExitRef.current = onAfterExit;\n onBeforeExitRef.current = onBeforeExit;\n const [animationTimeout, setAnimationTimeout] = useState<{ enter: number; exit: number }>({\n enter: 0,\n exit: 0,\n });\n const animationTimeoutExitRef = useRef(animationTimeout.exit);\n animationTimeoutExitRef.current = animationTimeout.exit;\n const labelId = useId();\n const additionalProps: { 'aria-labelledby'?: string } = {};\n if (title) {\n additionalProps['aria-labelledby'] = labelId;\n }\n const modalRef = useRef<HTMLDivElement>(null);\n const overlayRef = useRef<HTMLDivElement>(null);\n const keyboardNavigationRef = useKeyboardNavigation({ enabled: visible && !isServerEnv, mode: 'loop' });\n const modalRefCallback = useMultipleRefs(ref, modalRef, keyboardNavigationRef);\n\n const isPaddingsDisableAllowed =\n !title &&\n !headerImageUrl &&\n !headerImage &&\n !titleDescription &&\n !footer &&\n !options &&\n !actionLink &&\n !actions;\n const isVerticalPaddingsDisabled = disableVerticalPaddings && isPaddingsDisableAllowed;\n const isHorizontalPaddingsDisabled = disableHorizontalPaddings && isPaddingsDisableAllowed;\n\n const showOverlay = position === 'center' || _showOverlay;\n\n const activatorRef = useRef<HTMLElement | null>(null);\n const onEntering = useCallback(() => {\n if (returnFocusOnClose && document.activeElement instanceof HTMLElement) {\n activatorRef.current = document.activeElement;\n }\n if (!enableScrollRef.current && showOverlay) {\n enableScrollRef.current = disableScroll();\n }\n if (modalRef.current && !modalRef.current.contains(document.activeElement)) {\n modalRef.current.focus();\n }\n }, [returnFocusOnClose, showOverlay]);\n\n const onEntered = useCallback(() => {\n onAppear?.();\n }, [onAppear]);\n\n const onExit = useCallback(() => {\n onBeforeExitRef.current?.();\n }, []);\n\n const onExited = useCallback(() => {\n // оставляем обработку скрола еще и тут\n // чтобы обработать историю со сменой breakpoint\n enableScrollRef.current?.();\n enableScrollRef.current = undefined;\n\n onAfterExitRef.current?.();\n\n if (activatorRef.current !== null && document.contains(activatorRef.current)) {\n activatorRef.current?.focus();\n activatorRef.current = null;\n }\n }, []);\n\n useModalOrder(!!visible && !isServerEnv, modalRef);\n\n const { breakpoint } = useBreakpoint();\n useEffect(() => {\n if (!visible) {\n return;\n }\n\n const currentBreakpointVisible = !INVISIBLE_FOR_BREAKPOINTS.includes(breakpoint);\n if (!currentBreakpointVisible) {\n onExit();\n onExited();\n return;\n }\n\n onEntering();\n // visible не должно быть в зависимостях, т.к. этот эффект обрабатывает только изменение брейкпоинта\n // visible обрабатывается CSSTransition\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [breakpoint, onEntering, onExited, onExit]);\n\n useEffect(() => {\n return () => {\n enableScrollRef.current?.(animationTimeoutExitRef.current);\n enableScrollRef.current = undefined;\n };\n }, [visible]);\n\n useLayoutEffect(() => {\n const animationTimeoutElement = document.createElement('div');\n animationTimeoutElement.classList.add(styles.animationTimeout);\n document.body.appendChild(animationTimeoutElement);\n const style = window.getComputedStyle(animationTimeoutElement);\n setAnimationTimeout({\n enter: toNumber(style.getPropertyValue('--enter-animation-duration')),\n exit: toNumber(style.getPropertyValue('--exit-animation-duration')),\n });\n document.body.removeChild(animationTimeoutElement);\n }, [setAnimationTimeout]);\n\n useEffect(() => {\n if (showOverlay || !pageHeaderPadding || !visible) {\n return void 0;\n }\n\n const hasScrollTimeline = 'ScrollTimeline' in window;\n const overlay = overlayRef.current;\n\n if (!overlay) {\n return void 0;\n }\n\n let animation: Animation;\n const abortController = new AbortController();\n const keyframes = { top: [`${pageHeaderPadding}px`, '0px'] };\n if (hasScrollTimeline) {\n const timeline = new ScrollTimeline({ source: document.documentElement, axis: 'y' });\n // TS 7 (type-aware правила oxlint) уже знает rangeStart/rangeEnd, а TS 5 без каста не пропускает\n // oxlint-disable-next-line typescript/no-unnecessary-type-assertion\n animation = overlay.animate(keyframes, {\n timeline,\n rangeStart: '0px',\n // calc нужен для устранения бага https://issues.chromium.org/issues/40929569\n rangeEnd: `calc(0% + ${pageHeaderPadding}px)`,\n } as KeyframeAnimationOptions);\n } else {\n animation = overlay.animate(keyframes, { duration: 1000, fill: 'forwards' });\n animation.pause();\n\n window.addEventListener(\n 'scroll',\n () => {\n animation.currentTime =\n (Math.min(document.documentElement.scrollTop, pageHeaderPadding) / pageHeaderPadding) *\n 1000;\n },\n { signal: abortController.signal }\n );\n }\n\n return () => {\n abortController.abort();\n };\n }, [showOverlay, pageHeaderPadding, visible]);\n\n const overlayEventHandlers = useNoBubbling({\n onKeyDown: (event) => {\n if (keyboardMatch(event.nativeEvent as KeyboardEvent, keyboardKeys.Escape)) {\n onClose(event);\n }\n },\n onMouseDown: (event) => {\n if (!closeByClickOutside || modalRef.current?.contains(event.target as HTMLElement)) {\n return;\n }\n onClose(event);\n },\n });\n const overlayProps = showOverlay\n ? overlayEventHandlers\n : {\n onKeyDown: (event: React.KeyboardEvent) => {\n if (keyboardMatch(event.nativeEvent, keyboardKeys.Escape)) {\n onClose(event);\n }\n },\n };\n\n if (INVISIBLE_FOR_BREAKPOINTS.includes(breakpoint) || isServerEnv) {\n return null;\n }\n\n const modalHeaderProps = {\n title,\n titleElement,\n titleAlignment,\n titleSize,\n titleMaxLines,\n titleDescription,\n titleDescriptionMaxLines,\n titleStyle,\n titleDescriptionStyle,\n headerImageUrl,\n headerImage,\n headerHeight,\n options,\n actions,\n actionLink,\n } as ModalHeaderProps;\n\n const isTreeSelectorChild = Children.toArray(children).some(isValidTreeSelectorWrapper);\n // если есть progress bar, нужно скрыть divider (но showProgress - это слот под reactNode)\n const isActionBarHaveProgressBar =\n !!footer &&\n isActionBarComponent(footer) &&\n Boolean(footer.props.showProgress) &&\n isProgressBarComponent(footer.props.showProgress);\n\n return createPortal(\n <CSSTransition\n appear\n in={visible && !isServerEnv}\n nodeRef={overlayRef}\n onEntering={onEntering}\n onEntered={onEntered}\n onExit={onExit}\n onExited={onExited}\n classNames={CSS_CLASSES[position]}\n timeout={animationTimeout}\n unmountOnExit\n >\n <ThemeWrapper>\n {(themeClass) => (\n <Layer layer=\"modal\">\n <div\n {...overlayProps}\n ref={overlayRef}\n className={classnames(styles.modalOverlay, themeClass, {\n [styles.modalOverlayWithBackground]: showOverlay,\n [styles.modalOverlayLeft]: position === 'left',\n [styles.modalOverlayRight]: position === 'right',\n })}\n data-qa=\"modal-overlay\"\n >\n <CloseByClickOutsideContext.Provider value={overlayRef}>\n <div\n {...rest}\n {...additionalProps}\n aria-modal={visible && showOverlay && !isServerEnv}\n role=\"dialog\"\n className={classnames(styles.modal, {\n [styles.sizeSmall]: size === 'small',\n [styles.sizeMedium]: size === 'medium',\n [styles.modalFullHeight]: height === 'full-screen' || isTreeSelectorChild,\n [styles.noVerticalPaddings]: isVerticalPaddingsDisabled,\n [styles.noHorizontalPaddings]: isHorizontalPaddingsDisabled,\n [styles.modalWithBorder]: !showOverlay,\n })}\n ref={modalRefCallback}\n tabIndex={-1}\n style={{\n height: typeof height === 'number' ? `${height}px` : undefined,\n minHeight:\n typeof minHeight === 'number'\n ? `min(calc(100vh - 12px * 2), ${minHeight}px)`\n : undefined,\n }}\n >\n <ModalContentWithHeader\n {...modalHeaderProps}\n labelId={labelId}\n isTreeSelectorChild={isTreeSelectorChild}\n height={height}\n showDivider={!isActionBarHaveProgressBar}\n >\n {children}\n </ModalContentWithHeader>\n {!!footer && (\n <div className={styles.modalFooter} data-qa=\"modal-footer\">\n {isActionBarComponent(footer)\n ? cloneElement(footer, {\n type: footer.props.type || 'auto',\n padding: footer.props.padding || DEFAULT_ACTION_BAR_PADDING,\n showDivider: false,\n })\n : footer}\n </div>\n )}\n </div>\n </CloseByClickOutsideContext.Provider>\n </div>\n </Layer>\n )}\n </ThemeWrapper>\n </CSSTransition>,\n host || document.body\n );\n }\n);\n\nModal.displayName = 'Modal';\n"],"names":[],"mappings":"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"}
@@ -0,0 +1,243 @@
1
+ import './index.css';
2
+ import { jsxs, Fragment, jsx } from 'react/jsx-runtime';
3
+ import { useRef, useState, useCallback, useLayoutEffect } from 'react';
4
+ import classnames from 'classnames';
5
+ import { requestAnimation } from '@hh.ru/magritte-common-func-utils';
6
+ import { useMultipleRefs } from '@hh.ru/magritte-common-use-multiple-refs';
7
+ import { ContentOverlayRoot } from '@hh.ru/magritte-ui-content-overlay';
8
+ import { Divider } from '@hh.ru/magritte-ui-divider';
9
+ import { ModalHeader } from './ModalHeader.js';
10
+ import { useScrollbar, Scrollbar } from '@hh.ru/magritte-ui-scrollbar';
11
+ import { TextAreaGrowLimiter } from '@hh.ru/magritte-ui-textarea';
12
+
13
+ var styles = {"modal-overlay":"magritte-modal-overlay___uurgp_1-0-41","modalOverlay":"magritte-modal-overlay___uurgp_1-0-41","modal-overlay-with-background":"magritte-modal-overlay-with-background___mR-T0_1-0-41","modalOverlayWithBackground":"magritte-modal-overlay-with-background___mR-T0_1-0-41","modal":"magritte-modal___2Wc4s_1-0-41","modal-overlay-left":"magritte-modal-overlay-left___qaiC9_1-0-41","modalOverlayLeft":"magritte-modal-overlay-left___qaiC9_1-0-41","modal-overlay-right":"magritte-modal-overlay-right___-HTKs_1-0-41","modalOverlayRight":"magritte-modal-overlay-right___-HTKs_1-0-41","size-small":"magritte-size-small___nSBwy_1-0-41","sizeSmall":"magritte-size-small___nSBwy_1-0-41","size-medium":"magritte-size-medium___Zuz-t_1-0-41","sizeMedium":"magritte-size-medium___Zuz-t_1-0-41","no-vertical-paddings":"magritte-no-vertical-paddings___XgMGS_1-0-41","noVerticalPaddings":"magritte-no-vertical-paddings___XgMGS_1-0-41","no-horizontal-paddings":"magritte-no-horizontal-paddings___MJDv4_1-0-41","noHorizontalPaddings":"magritte-no-horizontal-paddings___MJDv4_1-0-41","modal-full-height":"magritte-modal-full-height___UThtH_1-0-41","modalFullHeight":"magritte-modal-full-height___UThtH_1-0-41","modal-with-border":"magritte-modal-with-border___bqsql_1-0-41","modalWithBorder":"magritte-modal-with-border___bqsql_1-0-41","modal-content-wrapper":"magritte-modal-content-wrapper___-eFo3_1-0-41","modalContentWrapper":"magritte-modal-content-wrapper___-eFo3_1-0-41","modal-content":"magritte-modal-content___KY9ma_1-0-41","modalContent":"magritte-modal-content___KY9ma_1-0-41","modal-scroll-container":"magritte-modal-scroll-container___dg8jC_1-0-41","modalScrollContainer":"magritte-modal-scroll-container___dg8jC_1-0-41","modal-content-wrapper__one-line":"magritte-modal-content-wrapper__one-line___ZkEgT_1-0-41","modalContentWrapperOneLine":"magritte-modal-content-wrapper__one-line___ZkEgT_1-0-41","content-sticky-container":"magritte-content-sticky-container___VkZxO_1-0-41","contentStickyContainer":"magritte-content-sticky-container___VkZxO_1-0-41","divider-container":"magritte-divider-container___jKyxB_1-0-41","dividerContainer":"magritte-divider-container___jKyxB_1-0-41","divider-container-hidden":"magritte-divider-container-hidden___20nI5_1-0-41","dividerContainerHidden":"magritte-divider-container-hidden___20nI5_1-0-41","modal-footer":"magritte-modal-footer___TbH6x_1-0-41","modalFooter":"magritte-modal-footer___TbH6x_1-0-41","modal-buttons-container":"magritte-modal-buttons-container___9hXUo_1-0-41","modalButtonsContainer":"magritte-modal-buttons-container___9hXUo_1-0-41","animation-timeout":"magritte-animation-timeout___vK6nU_1-0-41","animationTimeout":"magritte-animation-timeout___vK6nU_1-0-41","animation-enter-center":"magritte-animation-enter-center___9zWOQ_1-0-41","animationEnterCenter":"magritte-animation-enter-center___9zWOQ_1-0-41","animation-enter-center-active":"magritte-animation-enter-center-active___dfICf_1-0-41","animationEnterCenterActive":"magritte-animation-enter-center-active___dfICf_1-0-41","animation-exit-center":"magritte-animation-exit-center___mrTCE_1-0-41","animationExitCenter":"magritte-animation-exit-center___mrTCE_1-0-41","animation-exit-center-active":"magritte-animation-exit-center-active___WZXYp_1-0-41","animationExitCenterActive":"magritte-animation-exit-center-active___WZXYp_1-0-41","animation-enter-left":"magritte-animation-enter-left___XiXzr_1-0-41","animationEnterLeft":"magritte-animation-enter-left___XiXzr_1-0-41","animation-enter-left-active":"magritte-animation-enter-left-active___4Uaz6_1-0-41","animationEnterLeftActive":"magritte-animation-enter-left-active___4Uaz6_1-0-41","animation-exit-left":"magritte-animation-exit-left___NHvvO_1-0-41","animationExitLeft":"magritte-animation-exit-left___NHvvO_1-0-41","animation-exit-left-active":"magritte-animation-exit-left-active___oDszE_1-0-41","animationExitLeftActive":"magritte-animation-exit-left-active___oDszE_1-0-41","animation-enter-right":"magritte-animation-enter-right___1bqPX_1-0-41","animationEnterRight":"magritte-animation-enter-right___1bqPX_1-0-41","animation-enter-right-active":"magritte-animation-enter-right-active___OR65U_1-0-41","animationEnterRightActive":"magritte-animation-enter-right-active___OR65U_1-0-41","animation-exit-right":"magritte-animation-exit-right___hyYBh_1-0-41","animationExitRight":"magritte-animation-exit-right___hyYBh_1-0-41","animation-exit-right-active":"magritte-animation-exit-right-active___ft6Lz_1-0-41","animationExitRightActive":"magritte-animation-exit-right-active___ft6Lz_1-0-41","space-preserver":"magritte-space-preserver___nz3Nw_1-0-41","spacePreserver":"magritte-space-preserver___nz3Nw_1-0-41","tree-selector-container":"magritte-tree-selector-container___XZh1C_1-0-41","treeSelectorContainer":"magritte-tree-selector-container___XZh1C_1-0-41","grow-limiter":"magritte-grow-limiter___SPuoT_1-0-41","growLimiter":"magritte-grow-limiter___SPuoT_1-0-41"};
14
+
15
+ const checkIsScrolledToBottom = (el) => {
16
+ return Math.abs(el.scrollHeight - el.scrollTop - el.clientHeight) < 1;
17
+ };
18
+ const clamp = (value, min, max) => Math.min(Math.max(value, min), max);
19
+ const HEADER_SHRINK_MIN_HEIGHT = 148;
20
+ const HEADER_MARGIN_MIN_HEIGHT = 12;
21
+ const HEADER_MARGIN_MAX_HEIGHT = 24;
22
+ const HEADER_MARGIN_HEIGHT_DELTA = HEADER_MARGIN_MAX_HEIGHT - HEADER_MARGIN_MIN_HEIGHT;
23
+ const calcHeaderShrinkLimit = (headerHeight, headerMaxHeight, contentHeight, contentScrollHeight, marginHeight) => {
24
+ const contentScrollDelta = contentScrollHeight - // Высота контента скрытого под скроллом в текущем состоянии
25
+ contentHeight + // Высота контейнера содержащего контент
26
+ (HEADER_MARGIN_MAX_HEIGHT - marginHeight) + // Дельта между текущей высотой марджина и максимальной допустимой
27
+ (headerMaxHeight - headerHeight);
28
+ const headerShrinkMinHeight = headerMaxHeight - (contentScrollDelta - HEADER_MARGIN_HEIGHT_DELTA);
29
+ return Math.max(headerShrinkMinHeight, HEADER_SHRINK_MIN_HEIGHT);
30
+ };
31
+ const shrinkByDelta = (headerImageContainer, headerWrapper, headerMinHeight, headerMaxHeight, scrollDeltaY) => {
32
+ if (!headerImageContainer || !headerWrapper) {
33
+ return;
34
+ }
35
+ const marginHeight = clamp(
36
+ HEADER_MARGIN_MAX_HEIGHT - scrollDeltaY,
37
+ HEADER_MARGIN_MIN_HEIGHT,
38
+ HEADER_MARGIN_MAX_HEIGHT
39
+ );
40
+ headerWrapper.style.marginBottom = `${marginHeight}px`;
41
+ const headerHeight = clamp(
42
+ // Тут прибаляем дельту марджина потому что сначала должен сжаться отступ
43
+ Math.floor(headerMaxHeight - scrollDeltaY + HEADER_MARGIN_HEIGHT_DELTA),
44
+ headerMinHeight,
45
+ headerMaxHeight
46
+ );
47
+ headerImageContainer.style.height = `${headerHeight}px`;
48
+ };
49
+ const ModalContentWithHeader = ({
50
+ labelId,
51
+ children,
52
+ headerHeight: _headerHeight = 0,
53
+ isTreeSelectorChild,
54
+ height,
55
+ showDivider = true,
56
+ ...modalHeaderProps
57
+ }) => {
58
+ const { title, headerImageUrl, headerImage, actions, actionLink, options } = modalHeaderProps;
59
+ const bottomDividerVisibleRef = useRef(false);
60
+ const contentContainerRef = useRef(null);
61
+ const headerImageContainerRef = useRef(null);
62
+ const headerWrapperRef = useRef(null);
63
+ const spacePreserverRef = useRef(null);
64
+ const stickyContainerRef = useRef(null);
65
+ const hasHeaderImageRef = useRef(!!headerImageUrl || !!headerImage);
66
+ hasHeaderImageRef.current = !!headerImageUrl || !!headerImage;
67
+ const headerHeightRef = useRef(0);
68
+ headerHeightRef.current = hasHeaderImageRef.current ? Math.max(_headerHeight, 200) : 0;
69
+ const minHeaderHeightRef = useRef(0);
70
+ const contentOverlayRef = useRef(null);
71
+ const bottomDividerContainerRef = useRef(null);
72
+ const topDividerContainerRef = useRef(null);
73
+ const withoutHeader = !title && !hasHeaderImageRef.current && !actions && !actionLink && !options;
74
+ const onlyActions = !title && !hasHeaderImageRef.current && !options && (actions || actionLink);
75
+ const [growLimiterContextValue, _] = useState(() => ({
76
+ containerRef: contentContainerRef
77
+ }));
78
+ const isTopDividerVisible = () => {
79
+ if (!contentContainerRef.current) {
80
+ return false;
81
+ }
82
+ const topDividerVisible = hasHeaderImageRef.current ? contentContainerRef.current.scrollTop > headerHeightRef.current - minHeaderHeightRef.current + HEADER_MARGIN_HEIGHT_DELTA : contentContainerRef.current.scrollTop !== 0;
83
+ return topDividerVisible && (options || !hasHeaderImageRef.current) && !onlyActions && !withoutHeader;
84
+ };
85
+ const recalcContentOverlayPosition = useCallback(() => {
86
+ if (contentOverlayRef.current !== null && contentContainerRef.current !== null) {
87
+ contentOverlayRef.current.style.height = `${contentContainerRef.current.clientHeight}px`;
88
+ }
89
+ }, []);
90
+ const updateHeaderDimensions = useCallback(() => {
91
+ if (!headerImageContainerRef.current || !headerWrapperRef.current || !stickyContainerRef.current || !spacePreserverRef.current || !contentContainerRef.current) {
92
+ return;
93
+ }
94
+ if (!hasHeaderImageRef.current) {
95
+ spacePreserverRef.current.style.height = "0";
96
+ return;
97
+ }
98
+ minHeaderHeightRef.current = calcHeaderShrinkLimit(
99
+ headerImageContainerRef.current.clientHeight,
100
+ headerHeightRef.current,
101
+ contentContainerRef.current.clientHeight,
102
+ stickyContainerRef.current.scrollHeight,
103
+ parseInt(headerWrapperRef.current.style.marginBottom || "0", 10)
104
+ );
105
+ shrinkByDelta(
106
+ headerImageContainerRef.current,
107
+ headerWrapperRef.current,
108
+ minHeaderHeightRef.current,
109
+ headerHeightRef.current,
110
+ contentContainerRef.current.scrollTop
111
+ );
112
+ const preserverSize = headerHeightRef.current - minHeaderHeightRef.current + HEADER_MARGIN_HEIGHT_DELTA;
113
+ spacePreserverRef.current.style.height = `${preserverSize}px`;
114
+ }, []);
115
+ useLayoutEffect(() => {
116
+ if (contentContainerRef.current) {
117
+ const observer = new ResizeObserver(
118
+ requestAnimation(() => {
119
+ if (!contentContainerRef.current) {
120
+ return;
121
+ }
122
+ const isScrollable = contentContainerRef.current.scrollHeight > contentContainerRef.current.clientHeight;
123
+ const hasScroll = isScrollable && !checkIsScrolledToBottom(contentContainerRef.current);
124
+ bottomDividerVisibleRef.current = hasScroll;
125
+ bottomDividerContainerRef.current?.classList.toggle(
126
+ styles.dividerContainerHidden,
127
+ !bottomDividerVisibleRef.current
128
+ );
129
+ updateHeaderDimensions();
130
+ recalcContentOverlayPosition();
131
+ })
132
+ );
133
+ observer.observe(contentContainerRef.current);
134
+ return () => observer.disconnect();
135
+ }
136
+ return void 0;
137
+ }, [updateHeaderDimensions, recalcContentOverlayPosition]);
138
+ useLayoutEffect(() => {
139
+ updateHeaderDimensions();
140
+ recalcContentOverlayPosition();
141
+ if (!options && (headerImageUrl || headerImage)) {
142
+ topDividerContainerRef.current?.classList.toggle(styles.dividerContainerHidden, true);
143
+ }
144
+ }, [headerImageUrl, headerImage, updateHeaderDimensions, recalcContentOverlayPosition, options]);
145
+ const handleScroll = () => {
146
+ if (!contentContainerRef.current) {
147
+ return;
148
+ }
149
+ bottomDividerVisibleRef.current = !checkIsScrolledToBottom(contentContainerRef.current);
150
+ bottomDividerContainerRef.current?.classList.toggle(
151
+ styles.dividerContainerHidden,
152
+ !bottomDividerVisibleRef.current
153
+ );
154
+ topDividerContainerRef.current?.classList.toggle(styles.dividerContainerHidden, !isTopDividerVisible());
155
+ if (hasHeaderImageRef.current) {
156
+ shrinkByDelta(
157
+ headerImageContainerRef.current,
158
+ headerWrapperRef.current,
159
+ minHeaderHeightRef.current,
160
+ headerHeightRef.current,
161
+ contentContainerRef.current.scrollTop
162
+ );
163
+ }
164
+ };
165
+ const { hasVerticalScroll, verticalScrollbarProps, ...scrollbar } = useScrollbar({ axis: "vertical" });
166
+ const contentContainerRefCallback = useMultipleRefs(contentContainerRef, scrollbar.scrollContainerRef);
167
+ const stickyContainerRefCallback = useMultipleRefs(stickyContainerRef, scrollbar.contentWrapperRef);
168
+ return /* @__PURE__ */ jsxs(Fragment, { children: [
169
+ /* @__PURE__ */ jsxs(
170
+ "div",
171
+ {
172
+ className: classnames(styles.modalContentWrapper, {
173
+ [styles.modalContentWrapperOneLine]: onlyActions
174
+ }),
175
+ children: [
176
+ /* @__PURE__ */ jsx(
177
+ ModalHeader,
178
+ {
179
+ ...modalHeaderProps,
180
+ headerHeight: headerHeightRef.current,
181
+ labelId,
182
+ wrapperRef: headerWrapperRef,
183
+ ref: headerImageContainerRef
184
+ }
185
+ ),
186
+ /* @__PURE__ */ jsx(
187
+ "div",
188
+ {
189
+ className: classnames(styles.dividerContainer, {
190
+ [styles.dividerContainerHidden]: !isTopDividerVisible()
191
+ }),
192
+ ref: topDividerContainerRef,
193
+ children: /* @__PURE__ */ jsx(Divider, {})
194
+ }
195
+ ),
196
+ /* @__PURE__ */ jsx("div", { className: classnames(styles.modalContent, scrollbar.hoverContainerCssClass), children: /* @__PURE__ */ jsx(ContentOverlayRoot, { ref: contentOverlayRef, children: isTreeSelectorChild ? /* @__PURE__ */ jsx("div", { className: styles.treeSelectorContainer, children }) : /* @__PURE__ */ jsxs(Fragment, { children: [
197
+ /* @__PURE__ */ jsxs(
198
+ "div",
199
+ {
200
+ className: classnames(styles.modalScrollContainer),
201
+ ref: contentContainerRefCallback,
202
+ onScroll: handleScroll,
203
+ "data-qa": "modal-content-scroll-container",
204
+ children: [
205
+ /* @__PURE__ */ jsx(
206
+ "div",
207
+ {
208
+ className: classnames(styles.contentStickyContainer),
209
+ ref: stickyContainerRefCallback,
210
+ children: /* @__PURE__ */ jsx(
211
+ TextAreaGrowLimiter,
212
+ {
213
+ ...growLimiterContextValue,
214
+ className: styles.growLimiter,
215
+ children
216
+ }
217
+ )
218
+ }
219
+ ),
220
+ /* @__PURE__ */ jsx("div", { className: styles.spacePreserver, ref: spacePreserverRef })
221
+ ]
222
+ }
223
+ ),
224
+ hasVerticalScroll && /* @__PURE__ */ jsx(Scrollbar, { ...verticalScrollbarProps })
225
+ ] }) }) })
226
+ ]
227
+ }
228
+ ),
229
+ showDivider && /* @__PURE__ */ jsx(
230
+ "div",
231
+ {
232
+ className: classnames(styles.dividerContainer, {
233
+ [styles.dividerContainerHidden]: !bottomDividerVisibleRef.current
234
+ }),
235
+ ref: bottomDividerContainerRef,
236
+ children: /* @__PURE__ */ jsx(Divider, {})
237
+ }
238
+ )
239
+ ] });
240
+ };
241
+
242
+ export { ModalContentWithHeader as M, styles as s };
243
+ //# sourceMappingURL=ModalContentWithHeader-CxF78N1S.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ModalContentWithHeader-B7tpHFBW.js","sources":["src/ModalContentWithHeader.tsx"],"sourcesContent":["import { FC, PropsWithChildren, useCallback, useLayoutEffect, useRef, useState } from 'react';\nimport classnames from 'classnames';\n\nimport { requestAnimation } from '@hh.ru/magritte-common-func-utils';\nimport { useMultipleRefs } from '@hh.ru/magritte-common-use-multiple-refs';\nimport { ContentOverlayRoot } from '@hh.ru/magritte-ui-content-overlay';\nimport { Divider } from '@hh.ru/magritte-ui-divider';\nimport { ModalHeader } from '@hh.ru/magritte-ui-modal-deprecated/ModalHeader';\nimport { ModalHeaderProps, ModalHeight } from '@hh.ru/magritte-ui-modal-deprecated/types';\nimport { Scrollbar, useScrollbar } from '@hh.ru/magritte-ui-scrollbar';\nimport { TextAreaGrowLimiter } from '@hh.ru/magritte-ui-textarea';\n\nimport styles from './modal.less';\n\nconst checkIsScrolledToBottom = (el: HTMLElement) => {\n return Math.abs(el.scrollHeight - el.scrollTop - el.clientHeight) < 1;\n};\n\nconst clamp = (value: number, min: number, max: number) => Math.min(Math.max(value, min), max);\n\n// Минимальная высота до которой может сжаться хедер\nconst HEADER_SHRINK_MIN_HEIGHT = 148;\n// Минимальная высота отступа между хедером и контентом\nconst HEADER_MARGIN_MIN_HEIGHT = 12;\n// Максимальная высота отступа между хедером и контентом\nconst HEADER_MARGIN_MAX_HEIGHT = 24;\nconst HEADER_MARGIN_HEIGHT_DELTA = HEADER_MARGIN_MAX_HEIGHT - HEADER_MARGIN_MIN_HEIGHT;\n\n// Вычисляет минимальную высоту до которой может сжаться хедер с учетом высоты контента, чтобы не спровоцировать\n// изменение размера модалки\nconst calcHeaderShrinkLimit = (\n headerHeight: number,\n headerMaxHeight: number,\n contentHeight: number,\n contentScrollHeight: number,\n marginHeight: number\n) => {\n // Высота контента скрытого под скроллом когда хедер и марджин под ним имеет максимальную допустимую высоту\n const contentScrollDelta =\n contentScrollHeight - // Высота контента скрытого под скроллом в текущем состоянии\n contentHeight + // Высота контейнера содержащего контент\n (HEADER_MARGIN_MAX_HEIGHT - marginHeight) + // Дельта между текущей высотой марджина и максимальной допустимой\n (headerMaxHeight - headerHeight); // Дельта между текущей высотой хедера и максимальной допустимой\n\n const headerShrinkMinHeight = headerMaxHeight - (contentScrollDelta - HEADER_MARGIN_HEIGHT_DELTA);\n\n return Math.max(headerShrinkMinHeight, HEADER_SHRINK_MIN_HEIGHT);\n};\n\nconst shrinkByDelta = (\n headerImageContainer: HTMLDivElement | null,\n headerWrapper: HTMLDivElement | null,\n headerMinHeight: number,\n headerMaxHeight: number,\n scrollDeltaY: number\n) => {\n if (!headerImageContainer || !headerWrapper) {\n return;\n }\n\n const marginHeight = clamp(\n HEADER_MARGIN_MAX_HEIGHT - scrollDeltaY,\n HEADER_MARGIN_MIN_HEIGHT,\n HEADER_MARGIN_MAX_HEIGHT\n );\n headerWrapper.style.marginBottom = `${marginHeight}px`;\n\n const headerHeight = clamp(\n // Тут прибаляем дельту марджина потому что сначала должен сжаться отступ\n Math.floor(headerMaxHeight - scrollDeltaY + HEADER_MARGIN_HEIGHT_DELTA),\n headerMinHeight,\n headerMaxHeight\n );\n headerImageContainer.style.height = `${headerHeight}px`;\n};\n\nexport const ModalContentWithHeader: FC<\n PropsWithChildren<\n ModalHeaderProps & { labelId: string; isTreeSelectorChild: boolean; height?: ModalHeight; showDivider: boolean }\n >\n> = ({\n labelId,\n children,\n headerHeight: _headerHeight = 0,\n isTreeSelectorChild,\n height,\n showDivider = true,\n ...modalHeaderProps\n}) => {\n const { title, headerImageUrl, headerImage, actions, actionLink, options } = modalHeaderProps;\n\n const bottomDividerVisibleRef = useRef(false);\n const contentContainerRef = useRef<HTMLDivElement>(null);\n const headerImageContainerRef = useRef<HTMLDivElement>(null);\n const headerWrapperRef = useRef<HTMLDivElement>(null);\n const spacePreserverRef = useRef<HTMLDivElement>(null);\n const stickyContainerRef = useRef<HTMLDivElement>(null);\n const hasHeaderImageRef = useRef(!!headerImageUrl || !!headerImage);\n hasHeaderImageRef.current = !!headerImageUrl || !!headerImage;\n const headerHeightRef = useRef(0);\n headerHeightRef.current = hasHeaderImageRef.current ? Math.max(_headerHeight, 200) : 0;\n const minHeaderHeightRef = useRef(0);\n const contentOverlayRef = useRef<HTMLDivElement>(null);\n\n const bottomDividerContainerRef = useRef<HTMLDivElement>(null);\n const topDividerContainerRef = useRef<HTMLDivElement>(null);\n\n const withoutHeader = !title && !hasHeaderImageRef.current && !actions && !actionLink && !options;\n const onlyActions = !title && !hasHeaderImageRef.current && !options && (actions || actionLink);\n\n const [growLimiterContextValue, _] = useState(() => ({\n containerRef: contentContainerRef,\n }));\n\n const isTopDividerVisible = () => {\n if (!contentContainerRef.current) {\n return false;\n }\n\n const topDividerVisible = hasHeaderImageRef.current\n ? contentContainerRef.current.scrollTop >\n headerHeightRef.current - minHeaderHeightRef.current + HEADER_MARGIN_HEIGHT_DELTA\n : contentContainerRef.current.scrollTop !== 0;\n\n return topDividerVisible && (options || !hasHeaderImageRef.current) && !onlyActions && !withoutHeader;\n };\n\n const recalcContentOverlayPosition = useCallback(() => {\n if (contentOverlayRef.current !== null && contentContainerRef.current !== null) {\n contentOverlayRef.current.style.height = `${contentContainerRef.current.clientHeight}px`;\n }\n }, []);\n\n const updateHeaderDimensions = useCallback(() => {\n if (\n !headerImageContainerRef.current ||\n !headerWrapperRef.current ||\n !stickyContainerRef.current ||\n !spacePreserverRef.current ||\n !contentContainerRef.current\n ) {\n return;\n }\n\n if (!hasHeaderImageRef.current) {\n spacePreserverRef.current.style.height = '0';\n return;\n }\n\n minHeaderHeightRef.current = calcHeaderShrinkLimit(\n headerImageContainerRef.current.clientHeight,\n headerHeightRef.current,\n contentContainerRef.current.clientHeight,\n stickyContainerRef.current.scrollHeight,\n parseInt(headerWrapperRef.current.style.marginBottom || '0', 10)\n );\n\n shrinkByDelta(\n headerImageContainerRef.current,\n headerWrapperRef.current,\n minHeaderHeightRef.current,\n headerHeightRef.current,\n contentContainerRef.current.scrollTop\n );\n const preserverSize = headerHeightRef.current - minHeaderHeightRef.current + HEADER_MARGIN_HEIGHT_DELTA;\n spacePreserverRef.current.style.height = `${preserverSize}px`;\n }, []);\n\n useLayoutEffect(() => {\n if (contentContainerRef.current) {\n const observer = new ResizeObserver(\n requestAnimation(() => {\n if (!contentContainerRef.current) {\n return;\n }\n const isScrollable =\n contentContainerRef.current.scrollHeight > contentContainerRef.current.clientHeight;\n const hasScroll = isScrollable && !checkIsScrolledToBottom(contentContainerRef.current);\n bottomDividerVisibleRef.current = hasScroll;\n bottomDividerContainerRef.current?.classList.toggle(\n styles.dividerContainerHidden,\n !bottomDividerVisibleRef.current\n );\n updateHeaderDimensions();\n recalcContentOverlayPosition();\n })\n );\n observer.observe(contentContainerRef.current);\n return () => observer.disconnect();\n }\n\n return undefined;\n }, [updateHeaderDimensions, recalcContentOverlayPosition]);\n\n useLayoutEffect(() => {\n updateHeaderDimensions();\n recalcContentOverlayPosition();\n if (!options && (headerImageUrl || headerImage)) {\n topDividerContainerRef.current?.classList.toggle(styles.dividerContainerHidden, true);\n }\n }, [headerImageUrl, headerImage, updateHeaderDimensions, recalcContentOverlayPosition, options]);\n\n const handleScroll = () => {\n if (!contentContainerRef.current) {\n return;\n }\n\n bottomDividerVisibleRef.current = !checkIsScrolledToBottom(contentContainerRef.current);\n bottomDividerContainerRef.current?.classList.toggle(\n styles.dividerContainerHidden,\n !bottomDividerVisibleRef.current\n );\n topDividerContainerRef.current?.classList.toggle(styles.dividerContainerHidden, !isTopDividerVisible());\n if (hasHeaderImageRef.current) {\n shrinkByDelta(\n headerImageContainerRef.current,\n headerWrapperRef.current,\n minHeaderHeightRef.current,\n headerHeightRef.current,\n contentContainerRef.current.scrollTop\n );\n }\n };\n\n const { hasVerticalScroll, verticalScrollbarProps, ...scrollbar } = useScrollbar({ axis: 'vertical' });\n const contentContainerRefCallback = useMultipleRefs(contentContainerRef, scrollbar.scrollContainerRef);\n const stickyContainerRefCallback = useMultipleRefs(stickyContainerRef, scrollbar.contentWrapperRef);\n\n return (\n <>\n <div\n className={classnames(styles.modalContentWrapper, {\n [styles.modalContentWrapperOneLine]: onlyActions,\n })}\n >\n <ModalHeader\n {...modalHeaderProps}\n headerHeight={headerHeightRef.current}\n labelId={labelId}\n wrapperRef={headerWrapperRef}\n ref={headerImageContainerRef}\n />\n <div\n className={classnames(styles.dividerContainer, {\n [styles.dividerContainerHidden]: !isTopDividerVisible(),\n })}\n ref={topDividerContainerRef}\n >\n <Divider />\n </div>\n\n <div className={classnames(styles.modalContent, scrollbar.hoverContainerCssClass)}>\n <ContentOverlayRoot ref={contentOverlayRef}>\n {isTreeSelectorChild ? (\n <div className={styles.treeSelectorContainer}>{children}</div>\n ) : (\n <>\n <div\n className={classnames(styles.modalScrollContainer)}\n ref={contentContainerRefCallback}\n onScroll={handleScroll}\n data-qa=\"modal-content-scroll-container\"\n >\n <div\n className={classnames(styles.contentStickyContainer)}\n ref={stickyContainerRefCallback}\n >\n <TextAreaGrowLimiter\n {...growLimiterContextValue}\n className={styles.growLimiter}\n >\n {children}\n </TextAreaGrowLimiter>\n </div>\n <div className={styles.spacePreserver} ref={spacePreserverRef} />\n </div>\n {hasVerticalScroll && <Scrollbar {...verticalScrollbarProps} />}\n </>\n )}\n </ContentOverlayRoot>\n </div>\n </div>\n {showDivider && (\n <div\n className={classnames(styles.dividerContainer, {\n [styles.dividerContainerHidden]: !bottomDividerVisibleRef.current,\n })}\n ref={bottomDividerContainerRef}\n >\n <Divider />\n </div>\n )}\n </>\n );\n};\n"],"names":["_jsxs","_Fragment","_jsx"],"mappings":"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"}
1
+ {"version":3,"file":"ModalContentWithHeader-CxF78N1S.js","sources":["src/ModalContentWithHeader.tsx"],"sourcesContent":["import { FC, PropsWithChildren, useCallback, useLayoutEffect, useRef, useState } from 'react';\nimport classnames from 'classnames';\n\nimport { requestAnimation } from '@hh.ru/magritte-common-func-utils';\nimport { useMultipleRefs } from '@hh.ru/magritte-common-use-multiple-refs';\nimport { ContentOverlayRoot } from '@hh.ru/magritte-ui-content-overlay';\nimport { Divider } from '@hh.ru/magritte-ui-divider';\nimport { ModalHeader } from '@hh.ru/magritte-ui-modal-deprecated/ModalHeader';\nimport { ModalHeaderProps, ModalHeight } from '@hh.ru/magritte-ui-modal-deprecated/types';\nimport { Scrollbar, useScrollbar } from '@hh.ru/magritte-ui-scrollbar';\nimport { TextAreaGrowLimiter } from '@hh.ru/magritte-ui-textarea';\n\nimport styles from './modal.less';\n\nconst checkIsScrolledToBottom = (el: HTMLElement) => {\n return Math.abs(el.scrollHeight - el.scrollTop - el.clientHeight) < 1;\n};\n\nconst clamp = (value: number, min: number, max: number) => Math.min(Math.max(value, min), max);\n\n// Минимальная высота до которой может сжаться хедер\nconst HEADER_SHRINK_MIN_HEIGHT = 148;\n// Минимальная высота отступа между хедером и контентом\nconst HEADER_MARGIN_MIN_HEIGHT = 12;\n// Максимальная высота отступа между хедером и контентом\nconst HEADER_MARGIN_MAX_HEIGHT = 24;\nconst HEADER_MARGIN_HEIGHT_DELTA = HEADER_MARGIN_MAX_HEIGHT - HEADER_MARGIN_MIN_HEIGHT;\n\n// Вычисляет минимальную высоту до которой может сжаться хедер с учетом высоты контента, чтобы не спровоцировать\n// изменение размера модалки\nconst calcHeaderShrinkLimit = (\n headerHeight: number,\n headerMaxHeight: number,\n contentHeight: number,\n contentScrollHeight: number,\n marginHeight: number\n) => {\n // Высота контента скрытого под скроллом когда хедер и марджин под ним имеет максимальную допустимую высоту\n const contentScrollDelta =\n contentScrollHeight - // Высота контента скрытого под скроллом в текущем состоянии\n contentHeight + // Высота контейнера содержащего контент\n (HEADER_MARGIN_MAX_HEIGHT - marginHeight) + // Дельта между текущей высотой марджина и максимальной допустимой\n (headerMaxHeight - headerHeight); // Дельта между текущей высотой хедера и максимальной допустимой\n\n const headerShrinkMinHeight = headerMaxHeight - (contentScrollDelta - HEADER_MARGIN_HEIGHT_DELTA);\n\n return Math.max(headerShrinkMinHeight, HEADER_SHRINK_MIN_HEIGHT);\n};\n\nconst shrinkByDelta = (\n headerImageContainer: HTMLDivElement | null,\n headerWrapper: HTMLDivElement | null,\n headerMinHeight: number,\n headerMaxHeight: number,\n scrollDeltaY: number\n) => {\n if (!headerImageContainer || !headerWrapper) {\n return;\n }\n\n const marginHeight = clamp(\n HEADER_MARGIN_MAX_HEIGHT - scrollDeltaY,\n HEADER_MARGIN_MIN_HEIGHT,\n HEADER_MARGIN_MAX_HEIGHT\n );\n headerWrapper.style.marginBottom = `${marginHeight}px`;\n\n const headerHeight = clamp(\n // Тут прибаляем дельту марджина потому что сначала должен сжаться отступ\n Math.floor(headerMaxHeight - scrollDeltaY + HEADER_MARGIN_HEIGHT_DELTA),\n headerMinHeight,\n headerMaxHeight\n );\n headerImageContainer.style.height = `${headerHeight}px`;\n};\n\nexport const ModalContentWithHeader: FC<\n PropsWithChildren<\n ModalHeaderProps & { labelId: string; isTreeSelectorChild: boolean; height?: ModalHeight; showDivider: boolean }\n >\n> = ({\n labelId,\n children,\n headerHeight: _headerHeight = 0,\n isTreeSelectorChild,\n height,\n showDivider = true,\n ...modalHeaderProps\n}) => {\n const { title, headerImageUrl, headerImage, actions, actionLink, options } = modalHeaderProps;\n\n const bottomDividerVisibleRef = useRef(false);\n const contentContainerRef = useRef<HTMLDivElement>(null);\n const headerImageContainerRef = useRef<HTMLDivElement>(null);\n const headerWrapperRef = useRef<HTMLDivElement>(null);\n const spacePreserverRef = useRef<HTMLDivElement>(null);\n const stickyContainerRef = useRef<HTMLDivElement>(null);\n const hasHeaderImageRef = useRef(!!headerImageUrl || !!headerImage);\n hasHeaderImageRef.current = !!headerImageUrl || !!headerImage;\n const headerHeightRef = useRef(0);\n headerHeightRef.current = hasHeaderImageRef.current ? Math.max(_headerHeight, 200) : 0;\n const minHeaderHeightRef = useRef(0);\n const contentOverlayRef = useRef<HTMLDivElement>(null);\n\n const bottomDividerContainerRef = useRef<HTMLDivElement>(null);\n const topDividerContainerRef = useRef<HTMLDivElement>(null);\n\n const withoutHeader = !title && !hasHeaderImageRef.current && !actions && !actionLink && !options;\n const onlyActions = !title && !hasHeaderImageRef.current && !options && (actions || actionLink);\n\n const [growLimiterContextValue, _] = useState(() => ({\n containerRef: contentContainerRef,\n }));\n\n const isTopDividerVisible = () => {\n if (!contentContainerRef.current) {\n return false;\n }\n\n const topDividerVisible = hasHeaderImageRef.current\n ? contentContainerRef.current.scrollTop >\n headerHeightRef.current - minHeaderHeightRef.current + HEADER_MARGIN_HEIGHT_DELTA\n : contentContainerRef.current.scrollTop !== 0;\n\n return topDividerVisible && (options || !hasHeaderImageRef.current) && !onlyActions && !withoutHeader;\n };\n\n const recalcContentOverlayPosition = useCallback(() => {\n if (contentOverlayRef.current !== null && contentContainerRef.current !== null) {\n contentOverlayRef.current.style.height = `${contentContainerRef.current.clientHeight}px`;\n }\n }, []);\n\n const updateHeaderDimensions = useCallback(() => {\n if (\n !headerImageContainerRef.current ||\n !headerWrapperRef.current ||\n !stickyContainerRef.current ||\n !spacePreserverRef.current ||\n !contentContainerRef.current\n ) {\n return;\n }\n\n if (!hasHeaderImageRef.current) {\n spacePreserverRef.current.style.height = '0';\n return;\n }\n\n minHeaderHeightRef.current = calcHeaderShrinkLimit(\n headerImageContainerRef.current.clientHeight,\n headerHeightRef.current,\n contentContainerRef.current.clientHeight,\n stickyContainerRef.current.scrollHeight,\n parseInt(headerWrapperRef.current.style.marginBottom || '0', 10)\n );\n\n shrinkByDelta(\n headerImageContainerRef.current,\n headerWrapperRef.current,\n minHeaderHeightRef.current,\n headerHeightRef.current,\n contentContainerRef.current.scrollTop\n );\n const preserverSize = headerHeightRef.current - minHeaderHeightRef.current + HEADER_MARGIN_HEIGHT_DELTA;\n spacePreserverRef.current.style.height = `${preserverSize}px`;\n }, []);\n\n useLayoutEffect(() => {\n if (contentContainerRef.current) {\n const observer = new ResizeObserver(\n requestAnimation(() => {\n if (!contentContainerRef.current) {\n return;\n }\n const isScrollable =\n contentContainerRef.current.scrollHeight > contentContainerRef.current.clientHeight;\n const hasScroll = isScrollable && !checkIsScrolledToBottom(contentContainerRef.current);\n bottomDividerVisibleRef.current = hasScroll;\n bottomDividerContainerRef.current?.classList.toggle(\n styles.dividerContainerHidden,\n !bottomDividerVisibleRef.current\n );\n updateHeaderDimensions();\n recalcContentOverlayPosition();\n })\n );\n observer.observe(contentContainerRef.current);\n return () => observer.disconnect();\n }\n\n return undefined;\n }, [updateHeaderDimensions, recalcContentOverlayPosition]);\n\n useLayoutEffect(() => {\n updateHeaderDimensions();\n recalcContentOverlayPosition();\n if (!options && (headerImageUrl || headerImage)) {\n topDividerContainerRef.current?.classList.toggle(styles.dividerContainerHidden, true);\n }\n }, [headerImageUrl, headerImage, updateHeaderDimensions, recalcContentOverlayPosition, options]);\n\n const handleScroll = () => {\n if (!contentContainerRef.current) {\n return;\n }\n\n bottomDividerVisibleRef.current = !checkIsScrolledToBottom(contentContainerRef.current);\n bottomDividerContainerRef.current?.classList.toggle(\n styles.dividerContainerHidden,\n !bottomDividerVisibleRef.current\n );\n topDividerContainerRef.current?.classList.toggle(styles.dividerContainerHidden, !isTopDividerVisible());\n if (hasHeaderImageRef.current) {\n shrinkByDelta(\n headerImageContainerRef.current,\n headerWrapperRef.current,\n minHeaderHeightRef.current,\n headerHeightRef.current,\n contentContainerRef.current.scrollTop\n );\n }\n };\n\n const { hasVerticalScroll, verticalScrollbarProps, ...scrollbar } = useScrollbar({ axis: 'vertical' });\n const contentContainerRefCallback = useMultipleRefs(contentContainerRef, scrollbar.scrollContainerRef);\n const stickyContainerRefCallback = useMultipleRefs(stickyContainerRef, scrollbar.contentWrapperRef);\n\n return (\n <>\n <div\n className={classnames(styles.modalContentWrapper, {\n [styles.modalContentWrapperOneLine]: onlyActions,\n })}\n >\n <ModalHeader\n {...modalHeaderProps}\n headerHeight={headerHeightRef.current}\n labelId={labelId}\n wrapperRef={headerWrapperRef}\n ref={headerImageContainerRef}\n />\n <div\n className={classnames(styles.dividerContainer, {\n [styles.dividerContainerHidden]: !isTopDividerVisible(),\n })}\n ref={topDividerContainerRef}\n >\n <Divider />\n </div>\n\n <div className={classnames(styles.modalContent, scrollbar.hoverContainerCssClass)}>\n <ContentOverlayRoot ref={contentOverlayRef}>\n {isTreeSelectorChild ? (\n <div className={styles.treeSelectorContainer}>{children}</div>\n ) : (\n <>\n <div\n className={classnames(styles.modalScrollContainer)}\n ref={contentContainerRefCallback}\n onScroll={handleScroll}\n data-qa=\"modal-content-scroll-container\"\n >\n <div\n className={classnames(styles.contentStickyContainer)}\n ref={stickyContainerRefCallback}\n >\n <TextAreaGrowLimiter\n {...growLimiterContextValue}\n className={styles.growLimiter}\n >\n {children}\n </TextAreaGrowLimiter>\n </div>\n <div className={styles.spacePreserver} ref={spacePreserverRef} />\n </div>\n {hasVerticalScroll && <Scrollbar {...verticalScrollbarProps} />}\n </>\n )}\n </ContentOverlayRoot>\n </div>\n </div>\n {showDivider && (\n <div\n className={classnames(styles.dividerContainer, {\n [styles.dividerContainerHidden]: !bottomDividerVisibleRef.current,\n })}\n ref={bottomDividerContainerRef}\n >\n <Divider />\n </div>\n )}\n </>\n );\n};\n"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import { FC, PropsWithChildren } from 'react';
2
- import { ModalHeaderProps, ModalHeight } from '@hh.ru/magritte-ui-modal-deprecated/types';
2
+ import { ModalHeaderProps, ModalHeight } from './types';
3
3
  export declare const ModalContentWithHeader: FC<PropsWithChildren<ModalHeaderProps & {
4
4
  labelId: string;
5
5
  isTreeSelectorChild: boolean;
@@ -9,7 +9,7 @@ import '@hh.ru/magritte-ui-divider';
9
9
  import './ModalHeader.js';
10
10
  import '@hh.ru/magritte-ui-scrollbar';
11
11
  import '@hh.ru/magritte-ui-textarea';
12
- export { M as ModalContentWithHeader } from './ModalContentWithHeader-B7tpHFBW.js';
12
+ export { M as ModalContentWithHeader } from './ModalContentWithHeader-CxF78N1S.js';
13
13
  import '@hh.ru/magritte-ui-icon';
14
14
  import '@hh.ru/magritte-ui-title';
15
15
  //# sourceMappingURL=ModalContentWithHeader.js.map
package/ModalHeader.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  import { RefObject } from 'react';
2
- import { ModalHeaderProps } from '@hh.ru/magritte-ui-modal-deprecated/types';
2
+ import { ModalHeaderProps } from './types';
3
3
  export declare const ModalHeader: import("react").ForwardRefExoticComponent<ModalHeaderProps & {
4
4
  labelId: string;
5
5
  wrapperRef: RefObject<HTMLDivElement>;