@hh.ru/magritte-ui-modal 9.0.10 → 9.0.11

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 CHANGED
@@ -12,7 +12,7 @@ import { useNoBubbling } from '@hh.ru/magritte-common-use-no-bubbling';
12
12
  import { isActionBarComponent } from '@hh.ru/magritte-ui-action-bar';
13
13
  import { Breakpoint, useBreakpoint } from '@hh.ru/magritte-ui-breakpoint';
14
14
  import { Layer } from '@hh.ru/magritte-ui-layer';
15
- import { s as styles, M as ModalContentWithHeader } from './ModalContentWithHeader-CTVadyVv.js';
15
+ import { s as styles, M as ModalContentWithHeader } from './ModalContentWithHeader-BGTwyOXL.js';
16
16
  import { useModalOrder } from './useModalOrder.js';
17
17
  import { isProgressBarComponent } from '@hh.ru/magritte-ui-progress-bar';
18
18
  import { isValidTreeSelectorWrapper } from '@hh.ru/magritte-ui-tree-selector';
@@ -21,6 +21,7 @@ import '@hh.ru/magritte-ui-divider';
21
21
  import './ModalHeader.js';
22
22
  import '@hh.ru/magritte-ui-icon';
23
23
  import '@hh.ru/magritte-ui-title';
24
+ import '@hh.ru/magritte-ui-textarea';
24
25
  import '@hh.ru/magritte-common-dom-storage';
25
26
 
26
27
  const DEFAULT_ACTION_BAR_PADDING = 24;
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} 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 } from '@hh.ru/magritte-common-keyboard';\nimport { disableScroll, TimeoutCallback } from '@hh.ru/magritte-common-modal-helper';\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/ModalContentWithHeader';\nimport { ModalHeaderProps, ModalProps } from '@hh.ru/magritte-ui-modal/types';\nimport { useModalOrder } from '@hh.ru/magritte-ui-modal/useModalOrder';\nimport { isProgressBarComponent } from '@hh.ru/magritte-ui-progress-bar';\nimport { isValidTreeSelectorWrapper } from '@hh.ru/magritte-ui-tree-selector';\n\nimport styles from './modal.less';\n\nconst DEFAULT_ACTION_BAR_PADDING = 24;\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\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 ...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 modalRefCallback = useMultipleRefs(ref, modalRef);\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 onEntering = useCallback(() => {\n if (!enableScrollRef.current) {\n enableScrollRef.current = disableScroll();\n }\n if (modalRef.current && !modalRef.current.contains(document.activeElement)) {\n modalRef.current.focus();\n }\n }, []);\n\n const onEntered = useCallback(() => {\n onAppear?.();\n }, [onAppear]);\n\n const onExit = useCallback(() => {\n onBeforeExitRef.current?.();\n }, []);\n const onExited = useCallback(() => {\n // оставляем обработку скрола еще и тут\n // чтобы обработать историю со сменой breakpoint\n enableScrollRef.current?.();\n enableScrollRef.current = undefined;\n onAfterExitRef.current?.();\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 disable-autofix/react-hooks/exhaustive-deps\n }, [breakpoint, onEntering, onExited, onExit]);\n\n useEffect(\n () => () => {\n enableScrollRef.current?.(animationTimeoutExitRef.current);\n enableScrollRef.current = undefined;\n },\n [visible]\n );\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 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\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 = isValidTreeSelectorWrapper(children);\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 <Layer layer=\"modal\">\n <div\n {...overlayEventHandlers}\n ref={overlayRef}\n className={classnames(styles.modalOverlay, {\n [styles.overlayLeft]: position === 'left',\n [styles.overlayRight]: position === 'right',\n })}\n data-qa=\"modal-overlay\"\n >\n <div\n {...rest}\n {...additionalProps}\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 })}\n ref={modalRefCallback}\n tabIndex={0}\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 </div>\n </Layer>\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} 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 } from '@hh.ru/magritte-common-keyboard';\nimport { disableScroll, TimeoutCallback } from '@hh.ru/magritte-common-modal-helper';\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/ModalContentWithHeader';\nimport { ModalHeaderProps, ModalProps } from '@hh.ru/magritte-ui-modal/types';\nimport { useModalOrder } from '@hh.ru/magritte-ui-modal/useModalOrder';\nimport { isProgressBarComponent } from '@hh.ru/magritte-ui-progress-bar';\nimport { isValidTreeSelectorWrapper } from '@hh.ru/magritte-ui-tree-selector';\n\nimport styles from './modal.less';\n\nconst DEFAULT_ACTION_BAR_PADDING = 24;\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\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 ...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 modalRefCallback = useMultipleRefs(ref, modalRef);\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 onEntering = useCallback(() => {\n if (!enableScrollRef.current) {\n enableScrollRef.current = disableScroll();\n }\n if (modalRef.current && !modalRef.current.contains(document.activeElement)) {\n modalRef.current.focus();\n }\n }, []);\n\n const onEntered = useCallback(() => {\n onAppear?.();\n }, [onAppear]);\n\n const onExit = useCallback(() => {\n onBeforeExitRef.current?.();\n }, []);\n const onExited = useCallback(() => {\n // оставляем обработку скрола еще и тут\n // чтобы обработать историю со сменой breakpoint\n enableScrollRef.current?.();\n enableScrollRef.current = undefined;\n onAfterExitRef.current?.();\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 disable-autofix/react-hooks/exhaustive-deps\n }, [breakpoint, onEntering, onExited, onExit]);\n\n useEffect(\n () => () => {\n enableScrollRef.current?.(animationTimeoutExitRef.current);\n enableScrollRef.current = undefined;\n },\n [visible]\n );\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 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\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 = isValidTreeSelectorWrapper(children);\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 <Layer layer=\"modal\">\n <div\n {...overlayEventHandlers}\n ref={overlayRef}\n className={classnames(styles.modalOverlay, {\n [styles.overlayLeft]: position === 'left',\n [styles.overlayRight]: position === 'right',\n })}\n data-qa=\"modal-overlay\"\n >\n <div\n {...rest}\n {...additionalProps}\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 })}\n ref={modalRefCallback}\n tabIndex={0}\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 </div>\n </Layer>\n </CSSTransition>,\n host || document.body\n );\n }\n);\n\nModal.displayName = 'Modal';\n"],"names":["_jsx","_jsxs"],"mappings":"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"}
@@ -1,12 +1,13 @@
1
1
  import './index.css';
2
2
  import { jsxs, Fragment, jsx } from 'react/jsx-runtime';
3
- import { useRef, useCallback, useLayoutEffect } from 'react';
3
+ import { useRef, useState, useCallback, useLayoutEffect } from 'react';
4
4
  import classnames from 'classnames';
5
5
  import { requestAnimation } from '@hh.ru/magritte-common-func-utils';
6
6
  import { Divider } from '@hh.ru/magritte-ui-divider';
7
7
  import { ModalHeader } from './ModalHeader.js';
8
+ import { TextAreaGrowLimiter } from '@hh.ru/magritte-ui-textarea';
8
9
 
9
- var styles = {"modal-overlay":"magritte-modal-overlay___lK22l_9-0-10","modalOverlay":"magritte-modal-overlay___lK22l_9-0-10","overlay-left":"magritte-overlay-left___JtHK4_9-0-10","overlayLeft":"magritte-overlay-left___JtHK4_9-0-10","overlay-right":"magritte-overlay-right___uKTDt_9-0-10","overlayRight":"magritte-overlay-right___uKTDt_9-0-10","modal":"magritte-modal___RAW6S_9-0-10","size-small":"magritte-size-small___2JTM2_9-0-10","sizeSmall":"magritte-size-small___2JTM2_9-0-10","size-medium":"magritte-size-medium___cWCe7_9-0-10","sizeMedium":"magritte-size-medium___cWCe7_9-0-10","no-vertical-paddings":"magritte-no-vertical-paddings___Z3-oM_9-0-10","noVerticalPaddings":"magritte-no-vertical-paddings___Z3-oM_9-0-10","no-horizontal-paddings":"magritte-no-horizontal-paddings___aT95Y_9-0-10","noHorizontalPaddings":"magritte-no-horizontal-paddings___aT95Y_9-0-10","modal-full-height":"magritte-modal-full-height___gIM4E_9-0-10","modalFullHeight":"magritte-modal-full-height___gIM4E_9-0-10","modal-content":"magritte-modal-content___46QFS_9-0-10","modalContent":"magritte-modal-content___46QFS_9-0-10","modal-content-wrapper":"magritte-modal-content-wrapper___23XFT_9-0-10","modalContentWrapper":"magritte-modal-content-wrapper___23XFT_9-0-10","modal-content-wrapper__one-line":"magritte-modal-content-wrapper__one-line___tYg8d_9-0-10","modalContentWrapperOneLine":"magritte-modal-content-wrapper__one-line___tYg8d_9-0-10","content-sticky-container":"magritte-content-sticky-container___nqEXj_9-0-10","contentStickyContainer":"magritte-content-sticky-container___nqEXj_9-0-10","divider-container":"magritte-divider-container___qP3VK_9-0-10","dividerContainer":"magritte-divider-container___qP3VK_9-0-10","divider-container-hidden":"magritte-divider-container-hidden___EIxB-_9-0-10","dividerContainerHidden":"magritte-divider-container-hidden___EIxB-_9-0-10","modal-footer":"magritte-modal-footer___8xPqQ_9-0-10","modalFooter":"magritte-modal-footer___8xPqQ_9-0-10","modal-buttons-container":"magritte-modal-buttons-container___1O1Nr_9-0-10","modalButtonsContainer":"magritte-modal-buttons-container___1O1Nr_9-0-10","animation-timeout":"magritte-animation-timeout___w-j7K_9-0-10","animationTimeout":"magritte-animation-timeout___w-j7K_9-0-10","animation-enter-center":"magritte-animation-enter-center___7jogC_9-0-10","animationEnterCenter":"magritte-animation-enter-center___7jogC_9-0-10","animation-enter-center-active":"magritte-animation-enter-center-active___fywwW_9-0-10","animationEnterCenterActive":"magritte-animation-enter-center-active___fywwW_9-0-10","animation-exit-center":"magritte-animation-exit-center___3Fa6x_9-0-10","animationExitCenter":"magritte-animation-exit-center___3Fa6x_9-0-10","animation-exit-center-active":"magritte-animation-exit-center-active___tY0UA_9-0-10","animationExitCenterActive":"magritte-animation-exit-center-active___tY0UA_9-0-10","animation-enter-left":"magritte-animation-enter-left___5YB8B_9-0-10","animationEnterLeft":"magritte-animation-enter-left___5YB8B_9-0-10","animation-enter-left-active":"magritte-animation-enter-left-active___5GK8s_9-0-10","animationEnterLeftActive":"magritte-animation-enter-left-active___5GK8s_9-0-10","animation-exit-left":"magritte-animation-exit-left___OnkQE_9-0-10","animationExitLeft":"magritte-animation-exit-left___OnkQE_9-0-10","animation-exit-left-active":"magritte-animation-exit-left-active___AEGxY_9-0-10","animationExitLeftActive":"magritte-animation-exit-left-active___AEGxY_9-0-10","animation-enter-right":"magritte-animation-enter-right___2aXOm_9-0-10","animationEnterRight":"magritte-animation-enter-right___2aXOm_9-0-10","animation-enter-right-active":"magritte-animation-enter-right-active___8wX4-_9-0-10","animationEnterRightActive":"magritte-animation-enter-right-active___8wX4-_9-0-10","animation-exit-right":"magritte-animation-exit-right___iczoc_9-0-10","animationExitRight":"magritte-animation-exit-right___iczoc_9-0-10","animation-exit-right-active":"magritte-animation-exit-right-active___eFS4O_9-0-10","animationExitRightActive":"magritte-animation-exit-right-active___eFS4O_9-0-10","content-scroll-preserver":"magritte-content-scroll-preserver___Tw5Px_9-0-10","contentScrollPreserver":"magritte-content-scroll-preserver___Tw5Px_9-0-10","content-container":"magritte-content-container___-ql3h_9-0-10","contentContainer":"magritte-content-container___-ql3h_9-0-10","content-sticky-container_full-height":"magritte-content-sticky-container_full-height___Gl9x8_9-0-10","contentStickyContainerFullHeight":"magritte-content-sticky-container_full-height___Gl9x8_9-0-10"};
10
+ var styles = {"modal-overlay":"magritte-modal-overlay___lK22l_9-0-11","modalOverlay":"magritte-modal-overlay___lK22l_9-0-11","overlay-left":"magritte-overlay-left___JtHK4_9-0-11","overlayLeft":"magritte-overlay-left___JtHK4_9-0-11","overlay-right":"magritte-overlay-right___uKTDt_9-0-11","overlayRight":"magritte-overlay-right___uKTDt_9-0-11","modal":"magritte-modal___RAW6S_9-0-11","size-small":"magritte-size-small___2JTM2_9-0-11","sizeSmall":"magritte-size-small___2JTM2_9-0-11","size-medium":"magritte-size-medium___cWCe7_9-0-11","sizeMedium":"magritte-size-medium___cWCe7_9-0-11","no-vertical-paddings":"magritte-no-vertical-paddings___Z3-oM_9-0-11","noVerticalPaddings":"magritte-no-vertical-paddings___Z3-oM_9-0-11","no-horizontal-paddings":"magritte-no-horizontal-paddings___aT95Y_9-0-11","noHorizontalPaddings":"magritte-no-horizontal-paddings___aT95Y_9-0-11","modal-full-height":"magritte-modal-full-height___gIM4E_9-0-11","modalFullHeight":"magritte-modal-full-height___gIM4E_9-0-11","modal-content":"magritte-modal-content___46QFS_9-0-11","modalContent":"magritte-modal-content___46QFS_9-0-11","modal-content-wrapper":"magritte-modal-content-wrapper___23XFT_9-0-11","modalContentWrapper":"magritte-modal-content-wrapper___23XFT_9-0-11","modal-content-wrapper__one-line":"magritte-modal-content-wrapper__one-line___tYg8d_9-0-11","modalContentWrapperOneLine":"magritte-modal-content-wrapper__one-line___tYg8d_9-0-11","content-sticky-container":"magritte-content-sticky-container___nqEXj_9-0-11","contentStickyContainer":"magritte-content-sticky-container___nqEXj_9-0-11","divider-container":"magritte-divider-container___qP3VK_9-0-11","dividerContainer":"magritte-divider-container___qP3VK_9-0-11","divider-container-hidden":"magritte-divider-container-hidden___EIxB-_9-0-11","dividerContainerHidden":"magritte-divider-container-hidden___EIxB-_9-0-11","modal-footer":"magritte-modal-footer___8xPqQ_9-0-11","modalFooter":"magritte-modal-footer___8xPqQ_9-0-11","modal-buttons-container":"magritte-modal-buttons-container___1O1Nr_9-0-11","modalButtonsContainer":"magritte-modal-buttons-container___1O1Nr_9-0-11","animation-timeout":"magritte-animation-timeout___w-j7K_9-0-11","animationTimeout":"magritte-animation-timeout___w-j7K_9-0-11","animation-enter-center":"magritte-animation-enter-center___7jogC_9-0-11","animationEnterCenter":"magritte-animation-enter-center___7jogC_9-0-11","animation-enter-center-active":"magritte-animation-enter-center-active___fywwW_9-0-11","animationEnterCenterActive":"magritte-animation-enter-center-active___fywwW_9-0-11","animation-exit-center":"magritte-animation-exit-center___3Fa6x_9-0-11","animationExitCenter":"magritte-animation-exit-center___3Fa6x_9-0-11","animation-exit-center-active":"magritte-animation-exit-center-active___tY0UA_9-0-11","animationExitCenterActive":"magritte-animation-exit-center-active___tY0UA_9-0-11","animation-enter-left":"magritte-animation-enter-left___5YB8B_9-0-11","animationEnterLeft":"magritte-animation-enter-left___5YB8B_9-0-11","animation-enter-left-active":"magritte-animation-enter-left-active___5GK8s_9-0-11","animationEnterLeftActive":"magritte-animation-enter-left-active___5GK8s_9-0-11","animation-exit-left":"magritte-animation-exit-left___OnkQE_9-0-11","animationExitLeft":"magritte-animation-exit-left___OnkQE_9-0-11","animation-exit-left-active":"magritte-animation-exit-left-active___AEGxY_9-0-11","animationExitLeftActive":"magritte-animation-exit-left-active___AEGxY_9-0-11","animation-enter-right":"magritte-animation-enter-right___2aXOm_9-0-11","animationEnterRight":"magritte-animation-enter-right___2aXOm_9-0-11","animation-enter-right-active":"magritte-animation-enter-right-active___8wX4-_9-0-11","animationEnterRightActive":"magritte-animation-enter-right-active___8wX4-_9-0-11","animation-exit-right":"magritte-animation-exit-right___iczoc_9-0-11","animationExitRight":"magritte-animation-exit-right___iczoc_9-0-11","animation-exit-right-active":"magritte-animation-exit-right-active___eFS4O_9-0-11","animationExitRightActive":"magritte-animation-exit-right-active___eFS4O_9-0-11","content-scroll-preserver":"magritte-content-scroll-preserver___Tw5Px_9-0-11","contentScrollPreserver":"magritte-content-scroll-preserver___Tw5Px_9-0-11","content-container":"magritte-content-container___-ql3h_9-0-11","contentContainer":"magritte-content-container___-ql3h_9-0-11","content-sticky-container_full-height":"magritte-content-sticky-container_full-height___Gl9x8_9-0-11","contentStickyContainerFullHeight":"magritte-content-sticky-container_full-height___Gl9x8_9-0-11"};
10
11
 
11
12
  const checkIsScrolledToBottom = (el) => {
12
13
  return Math.abs(el.scrollHeight - el.scrollTop - el.clientHeight) < 1;
@@ -58,6 +59,9 @@ const ModalContentWithHeader = ({ labelId, children, headerHeight: _headerHeight
58
59
  const topDividerContainerRef = useRef(null);
59
60
  const withoutHeader = !title && !hasHeaderImageRef.current && !actions && !actionLink && !options;
60
61
  const onlyActions = !title && !hasHeaderImageRef.current && !options && (actions || actionLink);
62
+ const [growLimiterContextValue, _] = useState(() => ({
63
+ containerRef: contentContainerRef,
64
+ }));
61
65
  const isTopDividerVisible = () => {
62
66
  if (!contentContainerRef.current) {
63
67
  return false;
@@ -125,10 +129,10 @@ const ModalContentWithHeader = ({ labelId, children, headerHeight: _headerHeight
125
129
  [styles.dividerContainerHidden]: !isTopDividerVisible(),
126
130
  }), ref: topDividerContainerRef, children: jsx(Divider, {}) }), jsx("div", { className: classnames(styles.modalContent), ref: contentContainerRef, onScroll: handleScroll, "data-qa": "modal-content-scroll-container", children: isTreeSelectorChild ? (jsx("div", { className: styles.contentContainer, children: children })) : (jsxs(Fragment, { children: [jsx("div", { className: classnames(styles.contentStickyContainer, {
127
131
  [styles.contentStickyContainerFullHeight]: height === 'full-screen',
128
- }), ref: stickyContainerRef, children: children }), jsx("div", { ref: spacePreserverRef })] })) })] }), showDivider && (jsx("div", { className: classnames(styles.dividerContainer, {
132
+ }), ref: stickyContainerRef, children: jsx(TextAreaGrowLimiter, { ...growLimiterContextValue, children: children }) }), jsx("div", { ref: spacePreserverRef })] })) })] }), showDivider && (jsx("div", { className: classnames(styles.dividerContainer, {
129
133
  [styles.dividerContainerHidden]: !bottomDividerVisibleRef.current,
130
134
  }), ref: bottomDividerContainerRef, children: jsx(Divider, {}) }))] }));
131
135
  };
132
136
 
133
137
  export { ModalContentWithHeader as M, styles as s };
134
- //# sourceMappingURL=ModalContentWithHeader-CTVadyVv.js.map
138
+ //# sourceMappingURL=ModalContentWithHeader-BGTwyOXL.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ModalContentWithHeader-BGTwyOXL.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 { Divider } from '@hh.ru/magritte-ui-divider';\nimport { ModalHeader } from '@hh.ru/magritte-ui-modal/ModalHeader';\nimport { ModalHeaderProps, ModalHeight } from '@hh.ru/magritte-ui-modal/types';\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\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 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 })\n );\n observer.observe(contentContainerRef.current);\n return () => observer.disconnect();\n }\n\n return undefined;\n }, [updateHeaderDimensions]);\n\n useLayoutEffect(() => {\n updateHeaderDimensions();\n if (!options && (headerImageUrl || headerImage)) {\n topDividerContainerRef.current?.classList.toggle(styles.dividerContainerHidden, true);\n }\n }, [headerImageUrl, headerImage, updateHeaderDimensions, 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 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 <div\n className={classnames(styles.modalContent)}\n ref={contentContainerRef}\n onScroll={handleScroll}\n data-qa=\"modal-content-scroll-container\"\n >\n {isTreeSelectorChild ? (\n <div className={styles.contentContainer}>{children}</div>\n ) : (\n <>\n <div\n className={classnames(styles.contentStickyContainer, {\n [styles.contentStickyContainerFullHeight]: height === 'full-screen',\n })}\n ref={stickyContainerRef}\n >\n <TextAreaGrowLimiter {...growLimiterContextValue}>{children}</TextAreaGrowLimiter>\n </div>\n <div ref={spacePreserverRef} />\n </>\n )}\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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"}
@@ -5,7 +5,8 @@ import 'classnames';
5
5
  import '@hh.ru/magritte-common-func-utils';
6
6
  import '@hh.ru/magritte-ui-divider';
7
7
  import './ModalHeader.js';
8
- export { M as ModalContentWithHeader } from './ModalContentWithHeader-CTVadyVv.js';
8
+ import '@hh.ru/magritte-ui-textarea';
9
+ export { M as ModalContentWithHeader } from './ModalContentWithHeader-BGTwyOXL.js';
9
10
  import '@hh.ru/magritte-ui-icon';
10
11
  import '@hh.ru/magritte-ui-title';
11
12
  //# sourceMappingURL=ModalContentWithHeader.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ModalContentWithHeader.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;"}
1
+ {"version":3,"file":"ModalContentWithHeader.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;"}
package/ModalHeader.js CHANGED
@@ -5,7 +5,7 @@ import classnames from 'classnames';
5
5
  import { isIconElement } from '@hh.ru/magritte-ui-icon';
6
6
  import { Title } from '@hh.ru/magritte-ui-title';
7
7
 
8
- var styles = {"content":"magritte-content___o6ktq_9-0-10","options":"magritte-options___qfErQ_9-0-10","actions":"magritte-actions___nQILV_9-0-10","actions-with-link":"magritte-actions-with-link___hnDux_9-0-10","actionsWithLink":"magritte-actions-with-link___hnDux_9-0-10","content-with-image":"magritte-content-with-image___YarBO_9-0-10","contentWithImage":"magritte-content-with-image___YarBO_9-0-10","actions-single":"magritte-actions-single___usfKu_9-0-10","actionsSingle":"magritte-actions-single___usfKu_9-0-10","image-container":"magritte-image-container___ioL3y_9-0-10","imageContainer":"magritte-image-container___ioL3y_9-0-10","title-wrapper":"magritte-title-wrapper___O--QR_9-0-10","titleWrapper":"magritte-title-wrapper___O--QR_9-0-10","wrapper":"magritte-wrapper___zH8vB_9-0-10","only-actions":"magritte-only-actions___ZC4jx_9-0-10","onlyActions":"magritte-only-actions___ZC4jx_9-0-10"};
8
+ var styles = {"content":"magritte-content___o6ktq_9-0-11","options":"magritte-options___qfErQ_9-0-11","actions":"magritte-actions___nQILV_9-0-11","actions-with-link":"magritte-actions-with-link___hnDux_9-0-11","actionsWithLink":"magritte-actions-with-link___hnDux_9-0-11","content-with-image":"magritte-content-with-image___YarBO_9-0-11","contentWithImage":"magritte-content-with-image___YarBO_9-0-11","actions-single":"magritte-actions-single___usfKu_9-0-11","actionsSingle":"magritte-actions-single___usfKu_9-0-11","image-container":"magritte-image-container___ioL3y_9-0-11","imageContainer":"magritte-image-container___ioL3y_9-0-11","title-wrapper":"magritte-title-wrapper___O--QR_9-0-11","titleWrapper":"magritte-title-wrapper___O--QR_9-0-11","wrapper":"magritte-wrapper___zH8vB_9-0-11","only-actions":"magritte-only-actions___ZC4jx_9-0-11","onlyActions":"magritte-only-actions___ZC4jx_9-0-11"};
9
9
 
10
10
  const ModalHeader = forwardRef(({ title, headerImageUrl, headerImage, headerHeight, titleAlignment, titleElement, titleMaxLines, titleSize, titleDescription, titleDescriptionMaxLines, titleStyle, titleDescriptionStyle, options, actions: _actions, actionLink, labelId, wrapperRef, }, ref) => {
11
11
  const actions = Array.isArray(_actions) ? _actions.slice(0, 5) : _actions;
package/index.css CHANGED
@@ -17,14 +17,14 @@
17
17
  --magritte-color-component-modal-background-action-v23-0-0:#20262b99;
18
18
  --magritte-gradient-component-modal-background-fade-v23-0-0:linear-gradient(180deg, #00000000 0%, #0000007a 100%);
19
19
  }
20
- .magritte-content___o6ktq_9-0-10{
20
+ .magritte-content___o6ktq_9-0-11{
21
21
  display:flex;
22
22
  align-items:flex-start;
23
23
  }
24
- .magritte-content___o6ktq_9-0-10 + .magritte-options___qfErQ_9-0-10{
24
+ .magritte-content___o6ktq_9-0-11 + .magritte-options___qfErQ_9-0-11{
25
25
  margin-top:24px;
26
26
  }
27
- .magritte-actions___nQILV_9-0-10{
27
+ .magritte-actions___nQILV_9-0-11{
28
28
  position:relative;
29
29
  z-index:1;
30
30
  display:flex;
@@ -33,10 +33,10 @@
33
33
  margin-left:auto;
34
34
  --magritte-ui-link-padding-override:9px;
35
35
  }
36
- .magritte-actions-with-link___hnDux_9-0-10{
36
+ .magritte-actions-with-link___hnDux_9-0-11{
37
37
  padding:0 8px 0 28px;
38
38
  }
39
- .magritte-content-with-image___YarBO_9-0-10{
39
+ .magritte-content-with-image___YarBO_9-0-11{
40
40
  position:relative;
41
41
  flex-direction:column;
42
42
  justify-content:flex-end;
@@ -46,22 +46,22 @@
46
46
  padding:12px 24px 24px;
47
47
  box-sizing:border-box;
48
48
  }
49
- .magritte-content-with-image___YarBO_9-0-10 .magritte-actions___nQILV_9-0-10{
49
+ .magritte-content-with-image___YarBO_9-0-11 .magritte-actions___nQILV_9-0-11{
50
50
  order:-1;
51
51
  gap:0;
52
52
  margin-right:-16px;
53
53
  margin-top:-4px;
54
54
  margin-bottom:auto;
55
55
  }
56
- .magritte-content-with-image___YarBO_9-0-10 .magritte-actions___nQILV_9-0-10:not(.magritte-actions-with-link___hnDux_9-0-10){
56
+ .magritte-content-with-image___YarBO_9-0-11 .magritte-actions___nQILV_9-0-11:not(.magritte-actions-with-link___hnDux_9-0-11){
57
57
  padding:0 4px;
58
58
  background-color:var(--magritte-color-component-modal-background-action-v23-0-0);
59
59
  border-radius:var(--magritte-static-border-radius-300-v23-0-0);
60
60
  }
61
- .magritte-content-with-image___YarBO_9-0-10 .magritte-actions___nQILV_9-0-10.magritte-actions-single___usfKu_9-0-10:not(.magritte-actions-with-link___hnDux_9-0-10){
61
+ .magritte-content-with-image___YarBO_9-0-11 .magritte-actions___nQILV_9-0-11.magritte-actions-single___usfKu_9-0-11:not(.magritte-actions-with-link___hnDux_9-0-11){
62
62
  padding:0;
63
63
  }
64
- .magritte-image-container___ioL3y_9-0-10{
64
+ .magritte-image-container___ioL3y_9-0-11{
65
65
  position:absolute;
66
66
  left:0;
67
67
  bottom:0;
@@ -69,17 +69,17 @@
69
69
  background-size:cover;
70
70
  --modal-header-gradient:var(--magritte-gradient-component-modal-background-fade-v23-0-0);
71
71
  }
72
- .magritte-title-wrapper___O--QR_9-0-10{
72
+ .magritte-title-wrapper___O--QR_9-0-11{
73
73
  position:relative;
74
74
  width:100%;
75
75
  }
76
- .magritte-wrapper___zH8vB_9-0-10{
76
+ .magritte-wrapper___zH8vB_9-0-11{
77
77
  margin-bottom:24px;
78
78
  }
79
- .magritte-only-actions___ZC4jx_9-0-10 .magritte-actions___nQILV_9-0-10{
79
+ .magritte-only-actions___ZC4jx_9-0-11 .magritte-actions___nQILV_9-0-11{
80
80
  padding-left:0;
81
81
  }
82
- .magritte-only-actions___ZC4jx_9-0-10 .magritte-actions-with-link___hnDux_9-0-10{
82
+ .magritte-only-actions___ZC4jx_9-0-11 .magritte-actions-with-link___hnDux_9-0-11{
83
83
  padding-left:12px;
84
84
  }
85
85
 
@@ -105,7 +105,7 @@
105
105
  --magritte-color-background-overlay-v23-0-0:#20262b99;
106
106
  --magritte-color-component-modal-background-content-v23-0-0:#ffffff;
107
107
  }
108
- .magritte-modal-overlay___lK22l_9-0-10{
108
+ .magritte-modal-overlay___lK22l_9-0-11{
109
109
  position:fixed;
110
110
  top:0;
111
111
  right:0;
@@ -119,13 +119,13 @@
119
119
  user-select:text;
120
120
  transition-property:opacity, transform;
121
121
  }
122
- .magritte-overlay-left___JtHK4_9-0-10{
122
+ .magritte-overlay-left___JtHK4_9-0-11{
123
123
  justify-content:flex-start;
124
124
  }
125
- .magritte-overlay-right___uKTDt_9-0-10{
125
+ .magritte-overlay-right___uKTDt_9-0-11{
126
126
  justify-content:flex-end;
127
127
  }
128
- .magritte-modal___RAW6S_9-0-10{
128
+ .magritte-modal___RAW6S_9-0-11{
129
129
  display:flex;
130
130
  box-sizing:border-box;
131
131
  margin:0 12px;
@@ -141,24 +141,24 @@
141
141
  transition-property:opacity, transform;
142
142
  container-type:inline-size;
143
143
  }
144
- .magritte-modal___RAW6S_9-0-10.magritte-size-small___2JTM2_9-0-10{
144
+ .magritte-modal___RAW6S_9-0-11.magritte-size-small___2JTM2_9-0-11{
145
145
  width:480px;
146
146
  }
147
- .magritte-modal___RAW6S_9-0-10.magritte-size-medium___cWCe7_9-0-10{
147
+ .magritte-modal___RAW6S_9-0-11.magritte-size-medium___cWCe7_9-0-11{
148
148
  width:620px;
149
149
  }
150
- .magritte-no-vertical-paddings___Z3-oM_9-0-10{
150
+ .magritte-no-vertical-paddings___Z3-oM_9-0-11{
151
151
  padding-top:0;
152
152
  padding-bottom:0;
153
153
  }
154
- .magritte-no-horizontal-paddings___aT95Y_9-0-10{
154
+ .magritte-no-horizontal-paddings___aT95Y_9-0-11{
155
155
  padding-left:0;
156
156
  padding-right:0;
157
157
  }
158
- .magritte-modal-full-height___gIM4E_9-0-10{
158
+ .magritte-modal-full-height___gIM4E_9-0-11{
159
159
  height:100%;
160
160
  }
161
- .magritte-modal-content___46QFS_9-0-10{
161
+ .magritte-modal-content___46QFS_9-0-11{
162
162
  flex:1 1;
163
163
  overflow-y:auto;
164
164
  padding:0 0 0 24px;
@@ -167,226 +167,226 @@
167
167
  width:calc(100% + 24px);
168
168
  width:calc(100cqw + 24px);
169
169
  }
170
- .magritte-modal-content-wrapper___23XFT_9-0-10{
170
+ .magritte-modal-content-wrapper___23XFT_9-0-11{
171
171
  display:flex;
172
172
  flex-direction:column;
173
173
  min-height:0;
174
174
  flex:1 1;
175
175
  }
176
- .magritte-modal-content-wrapper__one-line___tYg8d_9-0-10{
176
+ .magritte-modal-content-wrapper__one-line___tYg8d_9-0-11{
177
177
  flex-direction:row-reverse;
178
178
  }
179
- .magritte-modal-content-wrapper__one-line___tYg8d_9-0-10 .magritte-modal-content___46QFS_9-0-10{
179
+ .magritte-modal-content-wrapper__one-line___tYg8d_9-0-11 .magritte-modal-content___46QFS_9-0-11{
180
180
  width:auto;
181
181
  container-type:inline-size;
182
182
  margin-right:0;
183
183
  }
184
- .magritte-modal-content-wrapper__one-line___tYg8d_9-0-10 .magritte-content-sticky-container___nqEXj_9-0-10{
184
+ .magritte-modal-content-wrapper__one-line___tYg8d_9-0-11 .magritte-content-sticky-container___nqEXj_9-0-11{
185
185
  max-width:calc(100% - 16px);
186
186
  max-width:calc(100cqw - 16px);
187
187
  }
188
- .magritte-divider-container___qP3VK_9-0-10{
188
+ .magritte-divider-container___qP3VK_9-0-11{
189
189
  margin:0 -24px;
190
190
  }
191
- .magritte-divider-container___qP3VK_9-0-10.magritte-divider-container-hidden___EIxB-_9-0-10{
191
+ .magritte-divider-container___qP3VK_9-0-11.magritte-divider-container-hidden___EIxB-_9-0-11{
192
192
  display:none;
193
193
  }
194
- .magritte-modal-footer___8xPqQ_9-0-10{
194
+ .magritte-modal-footer___8xPqQ_9-0-11{
195
195
  margin:0 -24px -24px;
196
196
  background-color:var(--magritte-color-component-modal-background-content-v23-0-0);
197
197
  z-index:1;
198
198
  --magritte-ui-action-bar-background-color-override:var(--magritte-color-component-modal-background-content-v23-0-0);
199
199
  }
200
- .magritte-modal-buttons-container___1O1Nr_9-0-10{
200
+ .magritte-modal-buttons-container___1O1Nr_9-0-11{
201
201
  display:flex;
202
202
  gap:12px;
203
203
  }
204
- .magritte-animation-timeout___w-j7K_9-0-10{
204
+ .magritte-animation-timeout___w-j7K_9-0-11{
205
205
  --enter-animation-duration:0;
206
206
  --exit-animation-duration:0;
207
207
  }
208
208
  @media (prefers-reduced-motion: no-preference){
209
- .magritte-animation-timeout___w-j7K_9-0-10{
209
+ .magritte-animation-timeout___w-j7K_9-0-11{
210
210
  --enter-animation-duration:var(--magritte-semantic-animation-ease-in-out-300-duration-v23-0-0);
211
211
  --exit-animation-duration:var(--magritte-semantic-animation-ease-in-out-200-duration-v23-0-0);
212
212
  }
213
213
  }
214
- .magritte-animation-enter-center___7jogC_9-0-10.magritte-modal-overlay___lK22l_9-0-10{
214
+ .magritte-animation-enter-center___7jogC_9-0-11.magritte-modal-overlay___lK22l_9-0-11{
215
215
  opacity:0;
216
216
  }
217
- .magritte-animation-enter-center___7jogC_9-0-10 .magritte-modal___RAW6S_9-0-10{
217
+ .magritte-animation-enter-center___7jogC_9-0-11 .magritte-modal___RAW6S_9-0-11{
218
218
  opacity:0;
219
219
  transform:scale(0.96);
220
220
  }
221
- .magritte-animation-enter-center-active___fywwW_9-0-10{
221
+ .magritte-animation-enter-center-active___fywwW_9-0-11{
222
222
  --enter-animation-duration:0;
223
223
  --exit-animation-duration:0;
224
224
  }
225
225
  @media (prefers-reduced-motion: no-preference){
226
- .magritte-animation-enter-center-active___fywwW_9-0-10{
226
+ .magritte-animation-enter-center-active___fywwW_9-0-11{
227
227
  --enter-animation-duration:var(--magritte-semantic-animation-ease-in-out-300-duration-v23-0-0);
228
228
  --exit-animation-duration:var(--magritte-semantic-animation-ease-in-out-200-duration-v23-0-0);
229
229
  }
230
230
  }
231
- .magritte-animation-enter-center-active___fywwW_9-0-10 .magritte-modal___RAW6S_9-0-10,
232
- .magritte-animation-enter-center-active___fywwW_9-0-10.magritte-modal-overlay___lK22l_9-0-10{
231
+ .magritte-animation-enter-center-active___fywwW_9-0-11 .magritte-modal___RAW6S_9-0-11,
232
+ .magritte-animation-enter-center-active___fywwW_9-0-11.magritte-modal-overlay___lK22l_9-0-11{
233
233
  opacity:1;
234
234
  transition-duration:var(--enter-animation-duration);
235
235
  transition-timing-function:var(--magritte-semantic-animation-ease-in-out-300-timing-function-v23-0-0);
236
236
  transform:scale(1);
237
237
  }
238
- .magritte-animation-exit-center___3Fa6x_9-0-10.magritte-modal-overlay___lK22l_9-0-10{
238
+ .magritte-animation-exit-center___3Fa6x_9-0-11.magritte-modal-overlay___lK22l_9-0-11{
239
239
  opacity:1;
240
240
  }
241
- .magritte-animation-exit-center___3Fa6x_9-0-10 .magritte-modal___RAW6S_9-0-10{
241
+ .magritte-animation-exit-center___3Fa6x_9-0-11 .magritte-modal___RAW6S_9-0-11{
242
242
  opacity:1;
243
243
  transform:scale(1);
244
244
  }
245
- .magritte-animation-exit-center-active___tY0UA_9-0-10{
245
+ .magritte-animation-exit-center-active___tY0UA_9-0-11{
246
246
  --enter-animation-duration:0;
247
247
  --exit-animation-duration:0;
248
248
  }
249
249
  @media (prefers-reduced-motion: no-preference){
250
- .magritte-animation-exit-center-active___tY0UA_9-0-10{
250
+ .magritte-animation-exit-center-active___tY0UA_9-0-11{
251
251
  --enter-animation-duration:var(--magritte-semantic-animation-ease-in-out-300-duration-v23-0-0);
252
252
  --exit-animation-duration:var(--magritte-semantic-animation-ease-in-out-200-duration-v23-0-0);
253
253
  }
254
254
  }
255
- .magritte-animation-exit-center-active___tY0UA_9-0-10.magritte-modal-overlay___lK22l_9-0-10{
255
+ .magritte-animation-exit-center-active___tY0UA_9-0-11.magritte-modal-overlay___lK22l_9-0-11{
256
256
  opacity:0;
257
257
  }
258
- .magritte-animation-exit-center-active___tY0UA_9-0-10 .magritte-modal___RAW6S_9-0-10{
258
+ .magritte-animation-exit-center-active___tY0UA_9-0-11 .magritte-modal___RAW6S_9-0-11{
259
259
  opacity:0;
260
260
  transform:scale(0.96);
261
261
  }
262
- .magritte-animation-exit-center-active___tY0UA_9-0-10 .magritte-modal___RAW6S_9-0-10,
263
- .magritte-animation-exit-center-active___tY0UA_9-0-10.magritte-modal-overlay___lK22l_9-0-10{
262
+ .magritte-animation-exit-center-active___tY0UA_9-0-11 .magritte-modal___RAW6S_9-0-11,
263
+ .magritte-animation-exit-center-active___tY0UA_9-0-11.magritte-modal-overlay___lK22l_9-0-11{
264
264
  transition-duration:var(--exit-animation-duration);
265
265
  transition-timing-function:var(--magritte-semantic-animation-ease-in-out-200-timing-function-v23-0-0);
266
266
  }
267
- .magritte-animation-enter-left___5YB8B_9-0-10.magritte-modal-overlay___lK22l_9-0-10{
267
+ .magritte-animation-enter-left___5YB8B_9-0-11.magritte-modal-overlay___lK22l_9-0-11{
268
268
  opacity:0;
269
269
  }
270
- .magritte-animation-enter-left___5YB8B_9-0-10 .magritte-modal___RAW6S_9-0-10{
270
+ .magritte-animation-enter-left___5YB8B_9-0-11 .magritte-modal___RAW6S_9-0-11{
271
271
  opacity:0;
272
272
  transform:translateX(-100%);
273
273
  }
274
- .magritte-animation-enter-left-active___5GK8s_9-0-10{
274
+ .magritte-animation-enter-left-active___5GK8s_9-0-11{
275
275
  --enter-animation-duration:0;
276
276
  --exit-animation-duration:0;
277
277
  }
278
278
  @media (prefers-reduced-motion: no-preference){
279
- .magritte-animation-enter-left-active___5GK8s_9-0-10{
279
+ .magritte-animation-enter-left-active___5GK8s_9-0-11{
280
280
  --enter-animation-duration:var(--magritte-semantic-animation-ease-in-out-300-duration-v23-0-0);
281
281
  --exit-animation-duration:var(--magritte-semantic-animation-ease-in-out-200-duration-v23-0-0);
282
282
  }
283
283
  }
284
- .magritte-animation-enter-left-active___5GK8s_9-0-10 .magritte-modal___RAW6S_9-0-10,
285
- .magritte-animation-enter-left-active___5GK8s_9-0-10.magritte-modal-overlay___lK22l_9-0-10{
284
+ .magritte-animation-enter-left-active___5GK8s_9-0-11 .magritte-modal___RAW6S_9-0-11,
285
+ .magritte-animation-enter-left-active___5GK8s_9-0-11.magritte-modal-overlay___lK22l_9-0-11{
286
286
  opacity:1;
287
287
  transition-duration:var(--enter-animation-duration);
288
288
  transition-timing-function:var(--magritte-semantic-animation-ease-in-out-300-timing-function-v23-0-0);
289
289
  transform:translateX(0);
290
290
  }
291
- .magritte-animation-exit-left___OnkQE_9-0-10.magritte-modal-overlay___lK22l_9-0-10{
291
+ .magritte-animation-exit-left___OnkQE_9-0-11.magritte-modal-overlay___lK22l_9-0-11{
292
292
  opacity:1;
293
293
  }
294
- .magritte-animation-exit-left___OnkQE_9-0-10 .magritte-modal___RAW6S_9-0-10{
294
+ .magritte-animation-exit-left___OnkQE_9-0-11 .magritte-modal___RAW6S_9-0-11{
295
295
  opacity:1;
296
296
  transform:translateX(0);
297
297
  }
298
- .magritte-animation-exit-left-active___AEGxY_9-0-10{
298
+ .magritte-animation-exit-left-active___AEGxY_9-0-11{
299
299
  --enter-animation-duration:0;
300
300
  --exit-animation-duration:0;
301
301
  }
302
302
  @media (prefers-reduced-motion: no-preference){
303
- .magritte-animation-exit-left-active___AEGxY_9-0-10{
303
+ .magritte-animation-exit-left-active___AEGxY_9-0-11{
304
304
  --enter-animation-duration:var(--magritte-semantic-animation-ease-in-out-300-duration-v23-0-0);
305
305
  --exit-animation-duration:var(--magritte-semantic-animation-ease-in-out-200-duration-v23-0-0);
306
306
  }
307
307
  }
308
- .magritte-animation-exit-left-active___AEGxY_9-0-10.magritte-modal-overlay___lK22l_9-0-10{
308
+ .magritte-animation-exit-left-active___AEGxY_9-0-11.magritte-modal-overlay___lK22l_9-0-11{
309
309
  opacity:0;
310
310
  }
311
- .magritte-animation-exit-left-active___AEGxY_9-0-10 .magritte-modal___RAW6S_9-0-10{
311
+ .magritte-animation-exit-left-active___AEGxY_9-0-11 .magritte-modal___RAW6S_9-0-11{
312
312
  opacity:0;
313
313
  transform:translateX(-100%);
314
314
  }
315
- .magritte-animation-exit-left-active___AEGxY_9-0-10 .magritte-modal___RAW6S_9-0-10,
316
- .magritte-animation-exit-left-active___AEGxY_9-0-10.magritte-modal-overlay___lK22l_9-0-10{
315
+ .magritte-animation-exit-left-active___AEGxY_9-0-11 .magritte-modal___RAW6S_9-0-11,
316
+ .magritte-animation-exit-left-active___AEGxY_9-0-11.magritte-modal-overlay___lK22l_9-0-11{
317
317
  transition-duration:var(--exit-animation-duration);
318
318
  transition-timing-function:var(--magritte-semantic-animation-ease-in-out-200-timing-function-v23-0-0);
319
319
  }
320
- .magritte-animation-enter-right___2aXOm_9-0-10.magritte-modal-overlay___lK22l_9-0-10{
320
+ .magritte-animation-enter-right___2aXOm_9-0-11.magritte-modal-overlay___lK22l_9-0-11{
321
321
  opacity:0;
322
322
  }
323
- .magritte-animation-enter-right___2aXOm_9-0-10 .magritte-modal___RAW6S_9-0-10{
323
+ .magritte-animation-enter-right___2aXOm_9-0-11 .magritte-modal___RAW6S_9-0-11{
324
324
  opacity:0;
325
325
  transform:translateX(100%);
326
326
  }
327
- .magritte-animation-enter-right-active___8wX4-_9-0-10{
327
+ .magritte-animation-enter-right-active___8wX4-_9-0-11{
328
328
  --enter-animation-duration:0;
329
329
  --exit-animation-duration:0;
330
330
  }
331
331
  @media (prefers-reduced-motion: no-preference){
332
- .magritte-animation-enter-right-active___8wX4-_9-0-10{
332
+ .magritte-animation-enter-right-active___8wX4-_9-0-11{
333
333
  --enter-animation-duration:var(--magritte-semantic-animation-ease-in-out-300-duration-v23-0-0);
334
334
  --exit-animation-duration:var(--magritte-semantic-animation-ease-in-out-200-duration-v23-0-0);
335
335
  }
336
336
  }
337
- .magritte-animation-enter-right-active___8wX4-_9-0-10 .magritte-modal___RAW6S_9-0-10,
338
- .magritte-animation-enter-right-active___8wX4-_9-0-10.magritte-modal-overlay___lK22l_9-0-10{
337
+ .magritte-animation-enter-right-active___8wX4-_9-0-11 .magritte-modal___RAW6S_9-0-11,
338
+ .magritte-animation-enter-right-active___8wX4-_9-0-11.magritte-modal-overlay___lK22l_9-0-11{
339
339
  opacity:1;
340
340
  transition-duration:var(--enter-animation-duration);
341
341
  transition-timing-function:var(--magritte-semantic-animation-ease-in-out-300-timing-function-v23-0-0);
342
342
  transform:translateX(0);
343
343
  }
344
- .magritte-animation-exit-right___iczoc_9-0-10.magritte-modal-overlay___lK22l_9-0-10{
344
+ .magritte-animation-exit-right___iczoc_9-0-11.magritte-modal-overlay___lK22l_9-0-11{
345
345
  opacity:1;
346
346
  }
347
- .magritte-animation-exit-right___iczoc_9-0-10 .magritte-modal___RAW6S_9-0-10{
347
+ .magritte-animation-exit-right___iczoc_9-0-11 .magritte-modal___RAW6S_9-0-11{
348
348
  opacity:1;
349
349
  transform:translateX(0);
350
350
  }
351
- .magritte-animation-exit-right-active___eFS4O_9-0-10{
351
+ .magritte-animation-exit-right-active___eFS4O_9-0-11{
352
352
  --enter-animation-duration:0;
353
353
  --exit-animation-duration:0;
354
354
  }
355
355
  @media (prefers-reduced-motion: no-preference){
356
- .magritte-animation-exit-right-active___eFS4O_9-0-10{
356
+ .magritte-animation-exit-right-active___eFS4O_9-0-11{
357
357
  --enter-animation-duration:var(--magritte-semantic-animation-ease-in-out-300-duration-v23-0-0);
358
358
  --exit-animation-duration:var(--magritte-semantic-animation-ease-in-out-200-duration-v23-0-0);
359
359
  }
360
360
  }
361
- .magritte-animation-exit-right-active___eFS4O_9-0-10.magritte-modal-overlay___lK22l_9-0-10{
361
+ .magritte-animation-exit-right-active___eFS4O_9-0-11.magritte-modal-overlay___lK22l_9-0-11{
362
362
  opacity:0;
363
363
  }
364
- .magritte-animation-exit-right-active___eFS4O_9-0-10 .magritte-modal___RAW6S_9-0-10{
364
+ .magritte-animation-exit-right-active___eFS4O_9-0-11 .magritte-modal___RAW6S_9-0-11{
365
365
  opacity:0;
366
366
  transform:translateX(100%);
367
367
  }
368
- .magritte-animation-exit-right-active___eFS4O_9-0-10 .magritte-modal___RAW6S_9-0-10,
369
- .magritte-animation-exit-right-active___eFS4O_9-0-10.magritte-modal-overlay___lK22l_9-0-10{
368
+ .magritte-animation-exit-right-active___eFS4O_9-0-11 .magritte-modal___RAW6S_9-0-11,
369
+ .magritte-animation-exit-right-active___eFS4O_9-0-11.magritte-modal-overlay___lK22l_9-0-11{
370
370
  transition-duration:var(--exit-animation-duration);
371
371
  transition-timing-function:var(--magritte-semantic-animation-ease-in-out-200-timing-function-v23-0-0);
372
372
  }
373
- .magritte-content-scroll-preserver___Tw5Px_9-0-10{
373
+ .magritte-content-scroll-preserver___Tw5Px_9-0-11{
374
374
  width:100%;
375
375
  height:0;
376
376
  }
377
- .magritte-content-container___-ql3h_9-0-10{
377
+ .magritte-content-container___-ql3h_9-0-11{
378
378
  height:100%;
379
379
  max-width:calc(100% - 24px);
380
380
  max-width:100cqw;
381
381
  }
382
- .magritte-content-sticky-container___nqEXj_9-0-10{
382
+ .magritte-content-sticky-container___nqEXj_9-0-11{
383
383
  position:sticky;
384
384
  top:0;
385
385
  min-height:100%;
386
386
  max-width:calc(100% - 24px);
387
387
  max-width:100cqw;
388
388
  }
389
- .magritte-content-sticky-container_full-height___Gl9x8_9-0-10{
389
+ .magritte-content-sticky-container_full-height___Gl9x8_9-0-11{
390
390
  display:flex;
391
391
  flex-direction:column;
392
392
  }
package/index.js CHANGED
@@ -13,12 +13,13 @@ import '@hh.ru/magritte-common-use-no-bubbling';
13
13
  import '@hh.ru/magritte-ui-action-bar';
14
14
  import '@hh.ru/magritte-ui-breakpoint';
15
15
  import '@hh.ru/magritte-ui-layer';
16
- import './ModalContentWithHeader-CTVadyVv.js';
16
+ import './ModalContentWithHeader-BGTwyOXL.js';
17
17
  import '@hh.ru/magritte-common-func-utils';
18
18
  import '@hh.ru/magritte-ui-divider';
19
19
  import './ModalHeader.js';
20
20
  import '@hh.ru/magritte-ui-icon';
21
21
  import '@hh.ru/magritte-ui-title';
22
+ import '@hh.ru/magritte-ui-textarea';
22
23
  import './useModalOrder.js';
23
24
  import '@hh.ru/magritte-common-dom-storage';
24
25
  import '@hh.ru/magritte-ui-progress-bar';
package/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@hh.ru/magritte-ui-modal",
3
- "version": "9.0.10",
3
+ "version": "9.0.11",
4
4
  "main": "index.js",
5
5
  "types": "index.d.ts",
6
6
  "sideEffects": [
@@ -35,6 +35,7 @@
35
35
  "@hh.ru/magritte-ui-layer": "3.0.2",
36
36
  "@hh.ru/magritte-ui-mock-component": "1.1.4",
37
37
  "@hh.ru/magritte-ui-progress-bar": "5.0.1",
38
+ "@hh.ru/magritte-ui-textarea": "3.0.0",
38
39
  "@hh.ru/magritte-ui-title": "7.0.3",
39
40
  "@hh.ru/magritte-ui-tree-selector": "5.1.3"
40
41
  },
@@ -47,5 +48,5 @@
47
48
  "publishConfig": {
48
49
  "access": "public"
49
50
  },
50
- "gitHead": "195120715c60ddd17f5b43c579c15a7457983504"
51
+ "gitHead": "1afe1df7cadf032d908327658a6d374c3e1963fa"
51
52
  }
@@ -1 +0,0 @@
1
- {"version":3,"file":"ModalContentWithHeader-CTVadyVv.js","sources":["../src/ModalContentWithHeader.tsx"],"sourcesContent":["import { FC, PropsWithChildren, useCallback, useLayoutEffect, useRef } from 'react';\nimport classnames from 'classnames';\n\nimport { requestAnimation } from '@hh.ru/magritte-common-func-utils';\nimport { Divider } from '@hh.ru/magritte-ui-divider';\nimport { ModalHeader } from '@hh.ru/magritte-ui-modal/ModalHeader';\nimport { ModalHeaderProps, ModalHeight } from '@hh.ru/magritte-ui-modal/types';\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\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 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 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 })\n );\n observer.observe(contentContainerRef.current);\n return () => observer.disconnect();\n }\n\n return undefined;\n }, [updateHeaderDimensions]);\n\n useLayoutEffect(() => {\n updateHeaderDimensions();\n if (!options && (headerImageUrl || headerImage)) {\n topDividerContainerRef.current?.classList.toggle(styles.dividerContainerHidden, true);\n }\n }, [headerImageUrl, headerImage, updateHeaderDimensions, 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 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 <div\n className={classnames(styles.modalContent)}\n ref={contentContainerRef}\n onScroll={handleScroll}\n data-qa=\"modal-content-scroll-container\"\n >\n {isTreeSelectorChild ? (\n <div className={styles.contentContainer}>{children}</div>\n ) : (\n <>\n <div\n className={classnames(styles.contentStickyContainer, {\n [styles.contentStickyContainerFullHeight]: height === 'full-screen',\n })}\n ref={stickyContainerRef}\n >\n {children}\n </div>\n <div ref={spacePreserverRef} />\n </>\n )}\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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"}