@hh.ru/magritte-ui-snackbar 6.4.26 → 6.4.27

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.
@@ -1 +1 @@
1
- {"version":3,"file":"SnackbarRenderer.js","sources":["src/SnackbarRenderer.tsx"],"sourcesContent":["import { FC, useCallback, useEffect, useRef, useState, useLayoutEffect } from 'react';\nimport { CSSTransition } from 'react-transition-group';\nimport classnames from 'classnames';\n\nimport '@hh.ru/magritte-common-focus-visible';\nimport { useEscapeToClose } from '@hh.ru/magritte-common-keyboard';\nimport { useMultipleRefs } from '@hh.ru/magritte-common-use-multiple-refs';\nimport { SwipeEventHandler, SwipeThreshold, useSwipeHandlers } from '@hh.ru/magritte-common-use-swipe';\nimport { Divider } from '@hh.ru/magritte-ui-divider';\nimport { CrossOutlinedSize24 } from '@hh.ru/magritte-ui-icon/icon';\nimport { Layer } from '@hh.ru/magritte-ui-layer';\nimport { Link } from '@hh.ru/magritte-ui-link';\nimport { CloseReason, SnackbarRendererProps, SnackbarTransitionName } from '@hh.ru/magritte-ui-snackbar/types';\nimport { useAriaSnackbar } from '@hh.ru/magritte-ui-snackbar/useAriaSnackbar';\nimport { ThemeWrapper } from '@hh.ru/magritte-ui-theme-wrapper';\nimport { Timer, useTimer } from '@hh.ru/magritte-ui-timer';\n\nimport styles from './snackbar.less';\n\nconst OTHER_CLASS_NAMES = {\n [SnackbarTransitionName.Hide]: {\n exit: styles.exit,\n exitActive: styles['exit-active'],\n exitDone: styles['exit-done'],\n },\n [SnackbarTransitionName.Autohide]: {\n exit: styles.exit,\n exitActive: styles['exit-active_autohide'],\n exitDone: styles['exit-done'],\n },\n [SnackbarTransitionName.RemoveImmediately]: {},\n};\n\nconst OPEN_CLASS_NAMES = {\n [SnackbarTransitionName.Show]: {\n top: {\n appear: styles.appearTop,\n appearActive: styles['appear-active'],\n appearDone: styles['appear-done'],\n },\n bottom: {\n appear: styles.appearBottom,\n appearActive: styles['appear-active'],\n appearDone: styles['appear-done'],\n },\n },\n};\n\nconst DEFAULT_AUTOHIDE_TIME_MS = 6000;\nconst BASE_VERTICAL_PADDING = 16;\nconst VERTICAL_PADDING_BETWEEN_SNACKBAR = 8;\n\nexport const SnackbarRenderer: FC<SnackbarRendererProps> = ({\n actionLabel,\n addon,\n align = 'bottom',\n animateOut,\n autohideTime = DEFAULT_AUTOHIDE_TIME_MS,\n children,\n containerId,\n isShown,\n onAction,\n onClose,\n onShown,\n showClose,\n showTimer,\n timeout,\n transition,\n 'aria-label': ariaLabel,\n 'aria-label-close': ariaLabelClose,\n role = 'status',\n stretched = true,\n position,\n container,\n 'data-qa': dataQa,\n ...props\n}) => {\n const actionFunc = useCallback(() => onAction?.(), [onAction]);\n const [hasKeyboardFocus, setHasKeyboardFocus] = useState(false);\n const [hasHover, setHasHover] = useState(false);\n const [isTouched, setisTouched] = useState(false);\n const hasTouchSupportRef = useRef(false);\n const prevWidth = useRef<number>(0);\n const stretchedRef = useRef(stretched);\n const closeReasonRef = useRef<CloseReason>(null);\n const autohideFunc = useCallback(() => {\n closeReasonRef.current = 'timeout';\n animateOut(SnackbarTransitionName.Autohide);\n }, [animateOut]);\n const closeFunc = useCallback(() => {\n closeReasonRef.current = 'user';\n animateOut(SnackbarTransitionName.Hide);\n }, [animateOut]);\n const ariaAttributes = useAriaSnackbar({ role, hasAction: !!actionLabel, 'aria-label': ariaLabel });\n const visible = transition === SnackbarTransitionName.Show;\n const maxDistanceSqRef = useRef({ nearestSide: Number.POSITIVE_INFINITY, farSide: Number.POSITIVE_INFINITY });\n const swipeThresholdXRef = useRef<SwipeThreshold | null>(null);\n const swipeThresholdYRef = useRef<SwipeThreshold | null>(null);\n const isTimerPaused = hasKeyboardFocus || hasHover || isTouched;\n\n const removeImmediately = useCallback(() => {\n animateOut(SnackbarTransitionName.RemoveImmediately);\n onClose?.({ reason: closeReasonRef.current });\n closeReasonRef.current = null;\n }, [animateOut, onClose]);\n\n const snackbarRef = useRef<HTMLDivElement>(null);\n const bindEscapeToClose = useEscapeToClose(closeFunc);\n const snackbarRefMultiplexer = useMultipleRefs(snackbarRef, bindEscapeToClose);\n\n useTimer(\n !!autohideTime && !showTimer ? autohideTime : -1,\n (callable) => {\n const timeoutId = setTimeout(callable, 50);\n return () => clearTimeout(timeoutId);\n },\n (remaining) => {\n remaining < 0 && autohideFunc();\n },\n isTimerPaused\n );\n\n useEffect(() => {\n if (snackbarRef.current !== null) {\n const maxDistanceX = snackbarRef.current.clientWidth * 0.66;\n const maxDistanceNearestY = snackbarRef.current.clientHeight * 0.5;\n const maxDistanceFarY = snackbarRef.current.clientHeight;\n maxDistanceSqRef.current.nearestSide = Math.pow(maxDistanceX, 2) + Math.pow(maxDistanceNearestY, 2);\n maxDistanceSqRef.current.farSide = Math.pow(maxDistanceX, 2) + Math.pow(maxDistanceFarY, 2);\n swipeThresholdXRef.current = { minDelta: -maxDistanceX, maxDelta: maxDistanceX };\n swipeThresholdYRef.current =\n align === 'top'\n ? { minDelta: -maxDistanceNearestY, maxDelta: maxDistanceFarY }\n : { minDelta: -maxDistanceFarY, maxDelta: maxDistanceNearestY };\n }\n }, [align, visible]);\n\n const handleSwipeMove: SwipeEventHandler = useCallback(\n (event) => {\n if (snackbarRef.current !== null) {\n // насколько прозрачным нужно сделать снекбар с учетом расстояния от начальной позиции\n let maxDistanceSq = maxDistanceSqRef.current.nearestSide;\n\n // определяем был ли свайп в дальнюю сторону экрана по вертикали\n if ((align === 'top' && event.distanceY > 0) || (align === 'bottom' && event.distanceY < 0)) {\n maxDistanceSq = maxDistanceSqRef.current.farSide;\n }\n\n const fadeDistanceSq = Math.pow(event.distanceX, 2) + Math.pow(event.distanceY, 2);\n snackbarRef.current.style.opacity = `${1 - fadeDistanceSq / maxDistanceSq}`;\n snackbarRef.current.style.transform = `translate(${event.distanceX}px, ${event.distanceY}px)`;\n }\n },\n [align]\n );\n\n const handleSwipeEnd: SwipeEventHandler = useCallback(() => {\n if (snackbarRef.current !== null) {\n snackbarRef.current.style.opacity = `0`;\n }\n closeFunc();\n }, [closeFunc]);\n\n const handleSwipeCancel: SwipeEventHandler = useCallback(() => {\n if (snackbarRef.current !== null) {\n snackbarRef.current.style.removeProperty('opacity');\n snackbarRef.current.style.removeProperty('transform');\n }\n }, []);\n\n const swipeHandlers = useSwipeHandlers({\n thresholdXRef: swipeThresholdXRef,\n thresholdYRef: swipeThresholdYRef,\n onSwipeMove: handleSwipeMove,\n onSwipeEnd: handleSwipeEnd,\n onSwipeCancel: handleSwipeCancel,\n });\n\n useEffect(() => {\n const snackbar = snackbarRef.current;\n if (!snackbar) {\n return void 0;\n }\n\n const handleTouchStart = (event: TouchEvent) => {\n event.stopPropagation();\n hasTouchSupportRef.current = true;\n setisTouched(true);\n swipeHandlers.onTouchStart(event);\n };\n\n const handleTouchMove = (event: TouchEvent) => {\n event.preventDefault();\n event.stopPropagation();\n swipeHandlers.onTouchMove(event);\n };\n\n const handleTouchEnd = (event: TouchEvent) => {\n setisTouched(false);\n swipeHandlers.onTouchEnd(event);\n };\n\n const handleTouchCancel = (event: TouchEvent) => {\n setisTouched(false);\n swipeHandlers.onTouchCancel(event);\n };\n\n snackbar.addEventListener('touchstart', handleTouchStart);\n snackbar.addEventListener('touchmove', handleTouchMove, { passive: false });\n snackbar.addEventListener('touchend', handleTouchEnd);\n snackbar.addEventListener('touchcancel', handleTouchCancel);\n\n return () => {\n snackbar.removeEventListener('touchstart', handleTouchStart);\n snackbar.removeEventListener('touchmove', handleTouchMove);\n snackbar.removeEventListener('touchend', handleTouchEnd);\n snackbar.removeEventListener('touchcancel', handleTouchCancel);\n };\n }, [swipeHandlers]);\n\n useEffect(() => {\n const snackbar = snackbarRef.current;\n if (!snackbar) {\n return;\n }\n snackbar.style.setProperty('--snackbar-offset', `${snackbarRef.current.offsetHeight}px`);\n prevWidth.current = snackbar.getBoundingClientRect().width;\n }, []);\n\n useEffect(() => {\n const snackbar = snackbarRef.current;\n if (!snackbar) {\n return;\n }\n // снекбары могут быть разные по высоте\n // для расчета текущей позиции\n // высоту каждого предыдущего надо учесть\n const snackbars = container.querySelectorAll<HTMLElement>('[data-magritte-snackbar=\"true\"]');\n let offset = 0;\n let found = false;\n for (const node of snackbars) {\n if (found) {\n offset += node.offsetHeight;\n }\n if (node === snackbar) {\n found = true;\n }\n }\n const value = `${offset + VERTICAL_PADDING_BETWEEN_SNACKBAR * position + BASE_VERTICAL_PADDING}px`;\n if (align === 'top') {\n snackbar.style.top = value;\n snackbar.style.removeProperty('bottom');\n return;\n }\n snackbar.style.bottom = value;\n snackbar.style.removeProperty('top');\n }, [position, align, container]);\n\n useLayoutEffect(() => {\n const snackbar = snackbarRef.current;\n if (!snackbar || stretched === stretchedRef.current) {\n return void 0;\n }\n const width = snackbar.getBoundingClientRect().width;\n if (Math.abs(width - prevWidth.current) < 1) {\n return void 0;\n }\n // width: auto не анимируется, поэтому\n // зафиксировали ширину → анимировали → снял инлайн свойство\n snackbar.style.width = `${prevWidth.current}px`;\n void snackbar.offsetWidth; // force layout\n snackbar.style.width = `${width}px`;\n const onEnd = (event: TransitionEvent) => {\n if (event.propertyName !== 'width') {\n return;\n }\n snackbar.style.removeProperty('width');\n snackbar.removeEventListener('transitionend', onEnd);\n };\n snackbar.addEventListener('transitionend', onEnd);\n stretchedRef.current = stretched;\n prevWidth.current = width;\n\n return () => {\n snackbar.removeEventListener('transitionend', onEnd);\n snackbar.style.removeProperty('width');\n };\n }, [stretched]);\n\n const showDivider = showClose || Boolean(actionLabel);\n const classNames =\n transition === SnackbarTransitionName.Show\n ? OPEN_CLASS_NAMES[transition][align]\n : OTHER_CLASS_NAMES[transition];\n\n return (\n <CSSTransition\n appear\n classNames={classNames}\n in={visible}\n nodeRef={snackbarRef}\n onEnter={() => {\n onShown();\n }}\n onEntered={() => {\n if (actionLabel) {\n snackbarRef.current?.focus();\n }\n }}\n onExited={removeImmediately}\n timeout={timeout}\n >\n <ThemeWrapper>\n {(themeClass) => (\n <Layer layer=\"snackbar\">\n <div\n {...props}\n {...ariaAttributes}\n className={classnames(styles.snackbar, themeClass, {\n [styles.snackbarStretched]: stretched,\n [styles[`snackbar_align-${align}`]]: align,\n [styles.snackbarInBody]: !containerId,\n })}\n data-qa={classnames(dataQa, dataQa !== 'snackbar' && 'snackbar')}\n ref={snackbarRefMultiplexer}\n onFocus={(event) => {\n // полифилл `@hh.ru/magritte-common-focus-visible` вешает класс\n // только на клавиатурный фокус — по клику таймер не останавливаем\n if (\n event.target !== snackbarRef.current &&\n event.target.classList.contains('focus-visible')\n ) {\n setHasKeyboardFocus(true);\n }\n }}\n onBlur={() => setHasKeyboardFocus(false)}\n // на тач-устройствах браузер эмулирует mouseenter после тапа\n // и «залипший» ховер останавливал бы таймер до следующего тапа\n onMouseEnter={() => !hasTouchSupportRef.current && setHasHover(true)}\n onMouseLeave={() => !hasTouchSupportRef.current && setHasHover(false)}\n data-magritte-snackbar={true}\n >\n <div className={styles.snackbarContent}>\n {!!addon && (\n <div className={styles.snackbarAddon} data-qa=\"snackbar-addon\">\n {addon}\n </div>\n )}\n {!!autohideTime && showTimer && (\n <div className={styles.snackbarAddon} data-qa=\"snackbar-timer\">\n <Timer timeout={autohideTime} pause={isTimerPaused} callback={autohideFunc} />\n </div>\n )}\n <div className={styles.snackbarTextWrapper}>\n <div className={styles.snackbarText} id=\"dialog-description\">\n {children}\n </div>\n </div>\n {showDivider && (\n <div className={styles.divider}>\n <Divider mode=\"vertical\" />\n </div>\n )}\n {!!actionLabel && (\n <div className={styles.action}>\n <Link\n data-qa=\"snackbar-user-action\"\n aria-label={actionLabel}\n Element=\"button\"\n type=\"button\"\n onClick={actionFunc}\n typography=\"subtitle-1-semibold\"\n style=\"constant\"\n >\n {actionLabel}\n </Link>\n </div>\n )}\n {showClose && (\n <div className={styles.snackbarClose}>\n <CrossOutlinedSize24\n padding={8}\n borderRadius=\"halfHeight\"\n initialColor=\"constant-secondary\"\n data-qa=\"snackbar-close-action\"\n tabIndex={actionLabel ? 0 : -1}\n aria-label={\n actionLabel && typeof ariaLabelClose === 'string'\n ? ariaLabelClose\n : undefined\n }\n onClick={closeFunc}\n />\n </div>\n )}\n </div>\n </div>\n </Layer>\n )}\n </ThemeWrapper>\n </CSSTransition>\n );\n};\n"],"names":["_jsx","_jsxs"],"mappings":"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"}
1
+ {"version":3,"file":"SnackbarRenderer.js","sources":["src/SnackbarRenderer.tsx"],"sourcesContent":["import { FC, useCallback, useEffect, useRef, useState, useLayoutEffect } from 'react';\nimport { CSSTransition } from 'react-transition-group';\nimport classnames from 'classnames';\n\nimport '@hh.ru/magritte-common-focus-visible';\nimport { useEscapeToClose } from '@hh.ru/magritte-common-keyboard';\nimport { useMultipleRefs } from '@hh.ru/magritte-common-use-multiple-refs';\nimport { SwipeEventHandler, SwipeThreshold, useSwipeHandlers } from '@hh.ru/magritte-common-use-swipe';\nimport { Divider } from '@hh.ru/magritte-ui-divider';\nimport { CrossOutlinedSize24 } from '@hh.ru/magritte-ui-icon/icon';\nimport { Layer } from '@hh.ru/magritte-ui-layer';\nimport { Link } from '@hh.ru/magritte-ui-link';\nimport { CloseReason, SnackbarRendererProps, SnackbarTransitionName } from '@hh.ru/magritte-ui-snackbar/types';\nimport { useAriaSnackbar } from '@hh.ru/magritte-ui-snackbar/useAriaSnackbar';\nimport { ThemeWrapper } from '@hh.ru/magritte-ui-theme-wrapper';\nimport { Timer, useTimer } from '@hh.ru/magritte-ui-timer';\n\nimport styles from './snackbar.less';\n\nconst OTHER_CLASS_NAMES = {\n [SnackbarTransitionName.Hide]: {\n exit: styles.exit,\n exitActive: styles['exit-active'],\n exitDone: styles['exit-done'],\n },\n [SnackbarTransitionName.Autohide]: {\n exit: styles.exit,\n exitActive: styles['exit-active_autohide'],\n exitDone: styles['exit-done'],\n },\n [SnackbarTransitionName.RemoveImmediately]: {},\n};\n\nconst OPEN_CLASS_NAMES = {\n [SnackbarTransitionName.Show]: {\n top: {\n appear: styles.appearTop,\n appearActive: styles['appear-active'],\n appearDone: styles['appear-done'],\n },\n bottom: {\n appear: styles.appearBottom,\n appearActive: styles['appear-active'],\n appearDone: styles['appear-done'],\n },\n },\n};\n\nconst DEFAULT_AUTOHIDE_TIME_MS = 6000;\nconst BASE_VERTICAL_PADDING = 16;\nconst VERTICAL_PADDING_BETWEEN_SNACKBAR = 8;\n\nexport const SnackbarRenderer: FC<SnackbarRendererProps> = ({\n actionLabel,\n addon,\n align = 'bottom',\n animateOut,\n autohideTime = DEFAULT_AUTOHIDE_TIME_MS,\n children,\n containerId,\n isShown,\n onAction,\n onClose,\n onShown,\n showClose,\n showTimer,\n timeout,\n transition,\n 'aria-label': ariaLabel,\n 'aria-label-close': ariaLabelClose,\n role = 'status',\n stretched = true,\n position,\n container,\n 'data-qa': dataQa,\n ...props\n}) => {\n const actionFunc = useCallback(() => onAction?.(), [onAction]);\n const [hasKeyboardFocus, setHasKeyboardFocus] = useState(false);\n const [hasHover, setHasHover] = useState(false);\n const [isTouched, setisTouched] = useState(false);\n const hasTouchSupportRef = useRef(false);\n const prevWidth = useRef<number>(0);\n const stretchedRef = useRef(stretched);\n const closeReasonRef = useRef<CloseReason>(null);\n const autohideFunc = useCallback(() => {\n closeReasonRef.current = 'timeout';\n animateOut(SnackbarTransitionName.Autohide);\n }, [animateOut]);\n const closeFunc = useCallback(() => {\n closeReasonRef.current = 'user';\n animateOut(SnackbarTransitionName.Hide);\n }, [animateOut]);\n const ariaAttributes = useAriaSnackbar({ role, hasAction: !!actionLabel, 'aria-label': ariaLabel });\n const visible = transition === SnackbarTransitionName.Show;\n const maxDistanceSqRef = useRef({ nearestSide: Number.POSITIVE_INFINITY, farSide: Number.POSITIVE_INFINITY });\n const swipeThresholdXRef = useRef<SwipeThreshold | null>(null);\n const swipeThresholdYRef = useRef<SwipeThreshold | null>(null);\n const isTimerPaused = hasKeyboardFocus || hasHover || isTouched;\n\n const removeImmediately = useCallback(() => {\n animateOut(SnackbarTransitionName.RemoveImmediately);\n onClose?.({ reason: closeReasonRef.current });\n closeReasonRef.current = null;\n }, [animateOut, onClose]);\n\n const snackbarRef = useRef<HTMLDivElement>(null);\n const bindEscapeToClose = useEscapeToClose(closeFunc);\n const snackbarRefMultiplexer = useMultipleRefs(snackbarRef, bindEscapeToClose);\n\n useTimer(\n !!autohideTime && !showTimer ? autohideTime : -1,\n (callable) => {\n const timeoutId = setTimeout(callable, 50);\n return () => clearTimeout(timeoutId);\n },\n (remaining) => {\n remaining < 0 && autohideFunc();\n },\n isTimerPaused\n );\n\n useEffect(() => {\n if (snackbarRef.current !== null) {\n const maxDistanceX = snackbarRef.current.clientWidth * 0.66;\n const maxDistanceNearestY = snackbarRef.current.clientHeight * 0.5;\n const maxDistanceFarY = snackbarRef.current.clientHeight;\n maxDistanceSqRef.current.nearestSide = Math.pow(maxDistanceX, 2) + Math.pow(maxDistanceNearestY, 2);\n maxDistanceSqRef.current.farSide = Math.pow(maxDistanceX, 2) + Math.pow(maxDistanceFarY, 2);\n swipeThresholdXRef.current = { minDelta: -maxDistanceX, maxDelta: maxDistanceX };\n swipeThresholdYRef.current =\n align === 'top'\n ? { minDelta: -maxDistanceNearestY, maxDelta: maxDistanceFarY }\n : { minDelta: -maxDistanceFarY, maxDelta: maxDistanceNearestY };\n }\n }, [align, visible]);\n\n const handleSwipeMove: SwipeEventHandler = useCallback(\n (event) => {\n if (snackbarRef.current !== null) {\n // насколько прозрачным нужно сделать снекбар с учетом расстояния от начальной позиции\n let maxDistanceSq = maxDistanceSqRef.current.nearestSide;\n\n // определяем был ли свайп в дальнюю сторону экрана по вертикали\n if ((align === 'top' && event.distanceY > 0) || (align === 'bottom' && event.distanceY < 0)) {\n maxDistanceSq = maxDistanceSqRef.current.farSide;\n }\n\n const fadeDistanceSq = Math.pow(event.distanceX, 2) + Math.pow(event.distanceY, 2);\n snackbarRef.current.style.opacity = `${1 - fadeDistanceSq / maxDistanceSq}`;\n snackbarRef.current.style.transform = `translate(${event.distanceX}px, ${event.distanceY}px)`;\n }\n },\n [align]\n );\n\n const handleSwipeEnd: SwipeEventHandler = useCallback(() => {\n if (snackbarRef.current !== null) {\n snackbarRef.current.style.opacity = `0`;\n }\n closeFunc();\n }, [closeFunc]);\n\n const handleSwipeCancel: SwipeEventHandler = useCallback(() => {\n if (snackbarRef.current !== null) {\n snackbarRef.current.style.removeProperty('opacity');\n snackbarRef.current.style.removeProperty('transform');\n }\n }, []);\n\n const swipeHandlers = useSwipeHandlers({\n thresholdXRef: swipeThresholdXRef,\n thresholdYRef: swipeThresholdYRef,\n onSwipeMove: handleSwipeMove,\n onSwipeEnd: handleSwipeEnd,\n onSwipeCancel: handleSwipeCancel,\n });\n\n useEffect(() => {\n const snackbar = snackbarRef.current;\n if (!snackbar) {\n return void 0;\n }\n\n const handleTouchStart = (event: TouchEvent) => {\n event.stopPropagation();\n hasTouchSupportRef.current = true;\n setisTouched(true);\n swipeHandlers.onTouchStart(event);\n };\n\n const handleTouchMove = (event: TouchEvent) => {\n event.preventDefault();\n event.stopPropagation();\n swipeHandlers.onTouchMove(event);\n };\n\n const handleTouchEnd = (event: TouchEvent) => {\n setisTouched(false);\n swipeHandlers.onTouchEnd(event);\n };\n\n const handleTouchCancel = (event: TouchEvent) => {\n setisTouched(false);\n swipeHandlers.onTouchCancel(event);\n };\n\n snackbar.addEventListener('touchstart', handleTouchStart);\n snackbar.addEventListener('touchmove', handleTouchMove, { passive: false });\n snackbar.addEventListener('touchend', handleTouchEnd);\n snackbar.addEventListener('touchcancel', handleTouchCancel);\n\n return () => {\n snackbar.removeEventListener('touchstart', handleTouchStart);\n snackbar.removeEventListener('touchmove', handleTouchMove);\n snackbar.removeEventListener('touchend', handleTouchEnd);\n snackbar.removeEventListener('touchcancel', handleTouchCancel);\n };\n }, [swipeHandlers]);\n\n useEffect(() => {\n const snackbar = snackbarRef.current;\n if (!snackbar) {\n return;\n }\n snackbar.style.setProperty('--snackbar-offset', `${snackbarRef.current.offsetHeight}px`);\n prevWidth.current = snackbar.getBoundingClientRect().width;\n }, []);\n\n useEffect(() => {\n const snackbar = snackbarRef.current;\n if (!snackbar) {\n return;\n }\n // снекбары могут быть разные по высоте\n // для расчета текущей позиции\n // высоту каждого предыдущего надо учесть\n const snackbars = container.querySelectorAll<HTMLElement>('[data-magritte-snackbar=\"true\"]');\n let offset = 0;\n let found = false;\n for (const node of snackbars) {\n if (found) {\n offset += node.offsetHeight;\n }\n if (node === snackbar) {\n found = true;\n }\n }\n const value = `${offset + VERTICAL_PADDING_BETWEEN_SNACKBAR * position + BASE_VERTICAL_PADDING}px`;\n if (align === 'top') {\n snackbar.style.top = value;\n snackbar.style.removeProperty('bottom');\n return;\n }\n snackbar.style.bottom = value;\n snackbar.style.removeProperty('top');\n }, [position, align, container]);\n\n useLayoutEffect(() => {\n const snackbar = snackbarRef.current;\n if (!snackbar || stretched === stretchedRef.current) {\n return void 0;\n }\n const width = snackbar.getBoundingClientRect().width;\n if (Math.abs(width - prevWidth.current) < 1) {\n return void 0;\n }\n // width: auto не анимируется, поэтому\n // зафиксировали ширину → анимировали → снял инлайн свойство\n snackbar.style.width = `${prevWidth.current}px`;\n void snackbar.offsetWidth; // force layout\n snackbar.style.width = `${width}px`;\n const onEnd = (event: TransitionEvent) => {\n if (event.propertyName !== 'width') {\n return;\n }\n snackbar.style.removeProperty('width');\n snackbar.removeEventListener('transitionend', onEnd);\n };\n snackbar.addEventListener('transitionend', onEnd);\n stretchedRef.current = stretched;\n prevWidth.current = width;\n\n return () => {\n snackbar.removeEventListener('transitionend', onEnd);\n snackbar.style.removeProperty('width');\n };\n }, [stretched]);\n\n const showDivider = showClose || Boolean(actionLabel);\n const classNames =\n transition === SnackbarTransitionName.Show\n ? OPEN_CLASS_NAMES[transition][align]\n : OTHER_CLASS_NAMES[transition];\n\n return (\n <CSSTransition\n appear\n classNames={classNames}\n in={visible}\n nodeRef={snackbarRef}\n onEnter={() => {\n onShown();\n }}\n onEntered={() => {\n if (actionLabel) {\n snackbarRef.current?.focus();\n }\n }}\n onExited={removeImmediately}\n timeout={timeout}\n >\n <ThemeWrapper>\n {(themeClass) => (\n <Layer layer=\"snackbar\">\n <div\n {...props}\n {...ariaAttributes}\n className={classnames(styles.snackbar, themeClass, {\n [styles.snackbarStretched]: stretched,\n [styles[`snackbar_align-${align}`]]: align,\n [styles.snackbarInBody]: !containerId,\n })}\n data-qa={classnames(dataQa, dataQa !== 'snackbar' && 'snackbar')}\n ref={snackbarRefMultiplexer}\n onFocus={(event) => {\n // полифилл `@hh.ru/magritte-common-focus-visible` вешает класс\n // только на клавиатурный фокус — по клику таймер не останавливаем\n if (\n event.target !== snackbarRef.current &&\n event.target.classList.contains('focus-visible')\n ) {\n setHasKeyboardFocus(true);\n }\n }}\n onBlur={() => setHasKeyboardFocus(false)}\n // на тач-устройствах браузер эмулирует mouseenter после тапа\n // и «залипший» ховер останавливал бы таймер до следующего тапа\n onMouseEnter={() => !hasTouchSupportRef.current && setHasHover(true)}\n onMouseLeave={() => !hasTouchSupportRef.current && setHasHover(false)}\n data-magritte-snackbar={true}\n >\n <div className={styles.snackbarContent}>\n {!!addon && (\n <div className={styles.snackbarAddon} data-qa=\"snackbar-addon\">\n {addon}\n </div>\n )}\n {!!autohideTime && showTimer && (\n <div className={styles.snackbarAddon} data-qa=\"snackbar-timer\">\n <Timer timeout={autohideTime} pause={isTimerPaused} callback={autohideFunc} />\n </div>\n )}\n <div className={styles.snackbarTextWrapper}>\n <div className={styles.snackbarText} id=\"dialog-description\">\n {children}\n </div>\n </div>\n {showDivider && (\n <div className={styles.divider}>\n <Divider mode=\"vertical\" />\n </div>\n )}\n {!!actionLabel && (\n <div className={styles.action}>\n <Link\n data-qa=\"snackbar-user-action\"\n aria-label={actionLabel}\n Element=\"button\"\n type=\"button\"\n onClick={actionFunc}\n typography=\"subtitle-1-semibold\"\n style=\"constant\"\n >\n {actionLabel}\n </Link>\n </div>\n )}\n {showClose && (\n <div className={styles.snackbarClose}>\n <CrossOutlinedSize24\n padding={8}\n borderRadius=\"halfHeight\"\n initialColor=\"constant-secondary\"\n data-qa=\"snackbar-close-action\"\n tabIndex={actionLabel ? 0 : -1}\n aria-label={\n actionLabel && typeof ariaLabelClose === 'string'\n ? ariaLabelClose\n : undefined\n }\n onClick={closeFunc}\n />\n </div>\n )}\n </div>\n </div>\n </Layer>\n )}\n </ThemeWrapper>\n </CSSTransition>\n );\n};\n"],"names":[],"mappings":"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"}
package/context.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import { SnackbarProps, SnackbarTransitionName } from '@hh.ru/magritte-ui-snackbar/types';
1
+ import { SnackbarProps, SnackbarTransitionName } from './types';
2
2
  export interface SnackbarContextProps {
3
3
  animateIn: (uid: string, props: SnackbarProps) => void;
4
4
  animateOut: (uid: string, transition: SnackbarTransitionName.Hide | SnackbarTransitionName.Autohide | SnackbarTransitionName.RemoveImmediately) => void;
package/context.js CHANGED
@@ -1,12 +1,12 @@
1
1
  import './index.css';
2
2
  import { createContext } from 'react';
3
3
 
4
- const noopFunc = (() => void 0);
4
+ const noopFunc = () => void 0;
5
5
  const SnackbarContext = createContext({
6
- animateIn: noopFunc,
7
- animateOut: noopFunc,
8
- isShown: () => false,
9
- setContainerRef: noopFunc,
6
+ animateIn: noopFunc,
7
+ animateOut: noopFunc,
8
+ isShown: () => false,
9
+ setContainerRef: noopFunc
10
10
  });
11
11
 
12
12
  export { SnackbarContext };
package/context.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"context.js","sources":["src/context.ts"],"sourcesContent":["import { createContext } from 'react';\n\nimport { SnackbarProps, SnackbarTransitionName } from '@hh.ru/magritte-ui-snackbar/types';\n\nexport interface SnackbarContextProps {\n animateIn: (uid: string, props: SnackbarProps) => void;\n animateOut: (\n uid: string,\n transition:\n | SnackbarTransitionName.Hide\n | SnackbarTransitionName.Autohide\n | SnackbarTransitionName.RemoveImmediately\n ) => void;\n isShown: (uid: string) => boolean;\n setContainerRef: (containerId: string, instance: HTMLElement | null) => void;\n}\n\nconst noopFunc = (() => void 0) as VoidFunction;\n\nexport const SnackbarContext = createContext<SnackbarContextProps>({\n animateIn: noopFunc,\n animateOut: noopFunc,\n isShown: () => false,\n setContainerRef: noopFunc,\n});\n"],"names":[],"mappings":";;AAiBA,MAAM,QAAQ,IAAI,MAAM,KAAK,CAAC,CAAiB,CAAC;AAEzC,MAAM,eAAe,GAAG,aAAa,CAAuB;AAC/D,IAAA,SAAS,EAAE,QAAQ;AACnB,IAAA,UAAU,EAAE,QAAQ;AACpB,IAAA,OAAO,EAAE,MAAM,KAAK;AACpB,IAAA,eAAe,EAAE,QAAQ;AAC5B,CAAA;;;;"}
1
+ {"version":3,"file":"context.js","sources":["src/context.ts"],"sourcesContent":["import { createContext } from 'react';\n\nimport { SnackbarProps, SnackbarTransitionName } from '@hh.ru/magritte-ui-snackbar/types';\n\nexport interface SnackbarContextProps {\n animateIn: (uid: string, props: SnackbarProps) => void;\n animateOut: (\n uid: string,\n transition:\n | SnackbarTransitionName.Hide\n | SnackbarTransitionName.Autohide\n | SnackbarTransitionName.RemoveImmediately\n ) => void;\n isShown: (uid: string) => boolean;\n setContainerRef: (containerId: string, instance: HTMLElement | null) => void;\n}\n\nconst noopFunc = (() => void 0) as VoidFunction;\n\nexport const SnackbarContext = createContext<SnackbarContextProps>({\n animateIn: noopFunc,\n animateOut: noopFunc,\n isShown: () => false,\n setContainerRef: noopFunc,\n});\n"],"names":[],"mappings":";;AAiBA,MAAM,WAAY,MAAM,KAAA,CAAA,CAAA;AAEjB,MAAM,kBAAkB,aAAoC,CAAA;AAAA,EAC/D,SAAW,EAAA,QAAA;AAAA,EACX,UAAY,EAAA,QAAA;AAAA,EACZ,SAAS,MAAM,KAAA;AAAA,EACf,eAAiB,EAAA,QAAA;AACrB,CAAC;;;;"}
package/index.css CHANGED
@@ -1,30 +1,30 @@
1
1
  :root{
2
- --magritte-color-component-snackbar-background-content-v26-0-0:#1B1B1B;
3
- --magritte-color-component-snackbar-stroke-content-v26-0-0:#ffffff00;
4
- --magritte-color-component-snackbar-stroke-divider-v26-0-0:#303030;
5
- --magritte-color-component-snackbar-text-content-v26-0-0:#ffffff;
6
- --magritte-color-component-snackbar-text-action-v26-0-0:#78c0ff;
7
- --magritte-color-component-snackbar-text-state-action-hovered-v26-0-0:#8ac8ff;
8
- --magritte-color-component-snackbar-text-state-action-pressed-v26-0-0:#78c0ff;
2
+ --magritte-color-component-snackbar-background-content-v26-0-1:#1B1B1B;
3
+ --magritte-color-component-snackbar-stroke-content-v26-0-1:#ffffff00;
4
+ --magritte-color-component-snackbar-stroke-divider-v26-0-1:#303030;
5
+ --magritte-color-component-snackbar-text-content-v26-0-1:#ffffff;
6
+ --magritte-color-component-snackbar-text-action-v26-0-1:#78c0ff;
7
+ --magritte-color-component-snackbar-text-state-action-hovered-v26-0-1:#8ac8ff;
8
+ --magritte-color-component-snackbar-text-state-action-pressed-v26-0-1:#78c0ff;
9
9
  }
10
10
 
11
11
  :root{
12
- --magritte-semantic-animation-time-m-duration-v26-0-0:400ms;
13
- --magritte-semantic-animation-ease-base-timing-function-v26-0-0:cubic-bezier(0.4, 0.24, 0, 1);
12
+ --magritte-semantic-animation-time-m-duration-v26-0-1:400ms;
13
+ --magritte-semantic-animation-ease-base-timing-function-v26-0-1:cubic-bezier(0.4, 0.24, 0, 1);
14
14
  }
15
15
 
16
16
  .magritte-night-theme{
17
- --magritte-color-component-snackbar-background-content-v26-0-0:#2e2e2ef5;
18
- --magritte-color-component-snackbar-stroke-divider-v26-0-0:#ffffff29;
17
+ --magritte-color-component-snackbar-background-content-v26-0-1:#2e2e2ef5;
18
+ --magritte-color-component-snackbar-stroke-divider-v26-0-1:#ffffff29;
19
19
  }
20
- .magritte-snackbar-container___SeRql_6-4-26{
20
+ .magritte-snackbar-container___SeRql_6-4-27{
21
21
  pointer-events:none;
22
22
  position:absolute;
23
23
  inset:0;
24
24
  overflow:var(--magritte-ui-snackbar-container-overflow-override, hidden);
25
25
  }
26
- .magritte-snackbar-animation-timeout___EQLvG_6-4-26,
27
- .magritte-snackbar___jgq4H_6-4-26{
26
+ .magritte-snackbar-animation-timeout___EQLvG_6-4-27,
27
+ .magritte-snackbar___jgq4H_6-4-27{
28
28
  outline:none;
29
29
  padding:16px 20px;
30
30
  margin:0 auto;
@@ -34,17 +34,17 @@
34
34
  box-sizing:border-box;
35
35
  will-change:transform;
36
36
  user-select:text;
37
- transition:top var(--stack-animation-duration) var(--magritte-semantic-animation-ease-base-timing-function-v26-0-0), bottom var(--stack-animation-duration) var(--magritte-semantic-animation-ease-base-timing-function-v26-0-0), width var(--resize-animation-duration) var(--magritte-semantic-animation-ease-base-timing-function-v26-0-0);
38
- --show-animation-duration:var(--magritte-semantic-animation-time-m-duration-v26-0-0);
39
- --hide-animation-duration:var(--magritte-semantic-animation-time-m-duration-v26-0-0);
40
- --stack-animation-duration:var(--magritte-semantic-animation-time-m-duration-v26-0-0);
41
- --resize-animation-duration:var(--magritte-semantic-animation-time-m-duration-v26-0-0);
42
- --autohide-animation-duration:var(--magritte-semantic-animation-time-m-duration-v26-0-0);
37
+ transition:top var(--stack-animation-duration) var(--magritte-semantic-animation-ease-base-timing-function-v26-0-1), bottom var(--stack-animation-duration) var(--magritte-semantic-animation-ease-base-timing-function-v26-0-1), width var(--resize-animation-duration) var(--magritte-semantic-animation-ease-base-timing-function-v26-0-1);
38
+ --show-animation-duration:var(--magritte-semantic-animation-time-m-duration-v26-0-1);
39
+ --hide-animation-duration:var(--magritte-semantic-animation-time-m-duration-v26-0-1);
40
+ --stack-animation-duration:var(--magritte-semantic-animation-time-m-duration-v26-0-1);
41
+ --resize-animation-duration:var(--magritte-semantic-animation-time-m-duration-v26-0-1);
42
+ --autohide-animation-duration:var(--magritte-semantic-animation-time-m-duration-v26-0-1);
43
43
  --removeImmediately-animation-duration:0;
44
44
  }
45
45
  @media (prefers-reduced-motion){
46
- .magritte-snackbar-animation-timeout___EQLvG_6-4-26,
47
- .magritte-snackbar___jgq4H_6-4-26{
46
+ .magritte-snackbar-animation-timeout___EQLvG_6-4-27,
47
+ .magritte-snackbar___jgq4H_6-4-27{
48
48
  --show-animation-duration:0;
49
49
  --hide-animation-duration:0;
50
50
  --stack-animation-duration:0;
@@ -54,71 +54,71 @@
54
54
  }
55
55
  }
56
56
  @media (min-width: 700px){
57
- body.magritte-old-layout .magritte-snackbar-animation-timeout___EQLvG_6-4-26,
58
- body.magritte-old-layout .magritte-snackbar___jgq4H_6-4-26{
57
+ body.magritte-old-layout .magritte-snackbar-animation-timeout___EQLvG_6-4-27,
58
+ body.magritte-old-layout .magritte-snackbar___jgq4H_6-4-27{
59
59
  max-width:600px;
60
60
  }
61
61
  }
62
62
  @media (min-width: 600px){
63
- body:not(.magritte-old-layout) .magritte-snackbar-animation-timeout___EQLvG_6-4-26,
64
- body:not(.magritte-old-layout) .magritte-snackbar___jgq4H_6-4-26{
63
+ body:not(.magritte-old-layout) .magritte-snackbar-animation-timeout___EQLvG_6-4-27,
64
+ body:not(.magritte-old-layout) .magritte-snackbar___jgq4H_6-4-27{
65
65
  max-width:600px;
66
66
  }
67
67
  }
68
- .magritte-snackbar-animation-timeout___EQLvG_6-4-26{
68
+ .magritte-snackbar-animation-timeout___EQLvG_6-4-27{
69
69
  display:none;
70
70
  }
71
- .magritte-snackbar___jgq4H_6-4-26{
72
- background:var(--magritte-color-component-snackbar-background-content-v26-0-0);
73
- color:var(--magritte-color-component-snackbar-text-content-v26-0-0);
74
- box-shadow:inset 0 0 0 1px var(--magritte-color-component-snackbar-stroke-content-v26-0-0);
71
+ .magritte-snackbar___jgq4H_6-4-27{
72
+ background:var(--magritte-color-component-snackbar-background-content-v26-0-1);
73
+ color:var(--magritte-color-component-snackbar-text-content-v26-0-1);
74
+ box-shadow:inset 0 0 0 1px var(--magritte-color-component-snackbar-stroke-content-v26-0-1);
75
75
  position:absolute;
76
76
  pointer-events:auto;
77
77
  width:max-content;
78
78
  }
79
- .magritte-snackbar_stretched___xVhgJ_6-4-26{
79
+ .magritte-snackbar_stretched___xVhgJ_6-4-27{
80
80
  width:auto;
81
81
  }
82
- .magritte-snackbar_align-top___WWWbk_6-4-26{
82
+ .magritte-snackbar_align-top___WWWbk_6-4-27{
83
83
  inset:16px 8px auto;
84
84
  }
85
85
  @media (min-width: 1020px){
86
- body.magritte-old-layout .magritte-snackbar_align-top___WWWbk_6-4-26{
86
+ body.magritte-old-layout .magritte-snackbar_align-top___WWWbk_6-4-27{
87
87
  inset:16px 16px auto 16px;
88
88
  }
89
89
  }
90
90
  @media (min-width: 1024px){
91
- body:not(.magritte-old-layout) .magritte-snackbar_align-top___WWWbk_6-4-26{
91
+ body:not(.magritte-old-layout) .magritte-snackbar_align-top___WWWbk_6-4-27{
92
92
  inset:16px 16px auto 16px;
93
93
  }
94
94
  }
95
- .magritte-snackbar_align-bottom___tCBBP_6-4-26{
95
+ .magritte-snackbar_align-bottom___tCBBP_6-4-27{
96
96
  inset:auto 8px 16px;
97
97
  }
98
98
  @media (min-width: 1020px){
99
- body.magritte-old-layout .magritte-snackbar_align-bottom___tCBBP_6-4-26{
99
+ body.magritte-old-layout .magritte-snackbar_align-bottom___tCBBP_6-4-27{
100
100
  inset:auto 16px 16px 16px;
101
101
  }
102
102
  }
103
103
  @media (min-width: 1024px){
104
- body:not(.magritte-old-layout) .magritte-snackbar_align-bottom___tCBBP_6-4-26{
104
+ body:not(.magritte-old-layout) .magritte-snackbar_align-bottom___tCBBP_6-4-27{
105
105
  inset:auto 16px 16px 16px;
106
106
  }
107
107
  }
108
- .magritte-snackbar-in-body___Zer4o_6-4-26{
108
+ .magritte-snackbar-in-body___Zer4o_6-4-27{
109
109
  position:fixed;
110
110
  }
111
- .magritte-snackbar-content___MlP5J_6-4-26{
111
+ .magritte-snackbar-content___MlP5J_6-4-27{
112
112
  display:flex;
113
113
  align-items:center;
114
114
  }
115
- .magritte-snackbar-addon___-eJn7_6-4-26{
115
+ .magritte-snackbar-addon___-eJn7_6-4-27{
116
116
  margin-right:12px;
117
117
  width:24px;
118
118
  height:24px;
119
119
  margin-left:-4px;
120
120
  }
121
- .magritte-snackbar-text___PCxnB_6-4-26{
121
+ .magritte-snackbar-text___PCxnB_6-4-27{
122
122
  font-family:"hh sans";
123
123
  font-weight:400;
124
124
  line-height:22px;
@@ -129,62 +129,62 @@
129
129
  text-decoration:none;
130
130
  margin-right:auto;
131
131
  }
132
- .magritte-snackbar-text-wrapper___SH6YB_6-4-26{
132
+ .magritte-snackbar-text-wrapper___SH6YB_6-4-27{
133
133
  display:flex;
134
134
  width:100%;
135
135
  }
136
- .magritte-action___Yjp2t_6-4-26{
136
+ .magritte-action___Yjp2t_6-4-27{
137
137
  display:flex;
138
138
  align-items:center;
139
139
  margin-left:8px;
140
140
  height:calc(24 * 1px);
141
141
  white-space:nowrap;
142
142
  --magritte-ui-link-padding-override:12px;
143
- --magritte-ui-link-text-color-override:var(--magritte-color-component-snackbar-text-action-v26-0-0);
144
- --magritte-ui-link-text-color-hovered-override:var(--magritte-color-component-snackbar-text-state-action-hovered-v26-0-0);
145
- --magritte-ui-link-text-color-pressed-override:var(--magritte-color-component-snackbar-text-state-action-pressed-v26-0-0);
143
+ --magritte-ui-link-text-color-override:var(--magritte-color-component-snackbar-text-action-v26-0-1);
144
+ --magritte-ui-link-text-color-hovered-override:var(--magritte-color-component-snackbar-text-state-action-hovered-v26-0-1);
145
+ --magritte-ui-link-text-color-pressed-override:var(--magritte-color-component-snackbar-text-state-action-pressed-v26-0-1);
146
146
  }
147
- .magritte-snackbar-close___U8YT5_6-4-26{
147
+ .magritte-snackbar-close___U8YT5_6-4-27{
148
148
  height:calc(24 * 1px);
149
149
  display:flex;
150
150
  align-items:center;
151
151
  margin-right:-12px;
152
152
  }
153
- .magritte-divider___GQ492_6-4-26{
153
+ .magritte-divider___GQ492_6-4-27{
154
154
  align-self:stretch;
155
155
  margin-top:-8px;
156
156
  margin-bottom:-8px;
157
157
  margin-left:16px;
158
158
  margin-right:8px;
159
- --magritte-ui-divider-color-override:var(--magritte-color-component-snackbar-stroke-divider-v26-0-0);
159
+ --magritte-ui-divider-color-override:var(--magritte-color-component-snackbar-stroke-divider-v26-0-1);
160
160
  }
161
- .magritte-appearTop___UJQ6-_6-4-26{
161
+ .magritte-appearTop___UJQ6-_6-4-27{
162
162
  transform:translateY(calc(var(--snackbar-offset, 60px) * -1 + 16px * -1));
163
163
  }
164
- .magritte-appearBottom___wDoOa_6-4-26{
164
+ .magritte-appearBottom___wDoOa_6-4-27{
165
165
  transform:translateY(calc(var(--snackbar-offset, 60px) + 16px));
166
166
  }
167
- .magritte-appear-active___Kl7by_6-4-26{
167
+ .magritte-appear-active___Kl7by_6-4-27{
168
168
  transform:translateY(0);
169
- transition:opacity var(--hide-animation-duration) var(--magritte-semantic-animation-ease-base-timing-function-v26-0-0), transform var(--show-animation-duration) var(--magritte-semantic-animation-ease-base-timing-function-v26-0-0), top var(--stack-animation-duration) var(--magritte-semantic-animation-ease-base-timing-function-v26-0-0), bottom var(--stack-animation-duration) var(--magritte-semantic-animation-ease-base-timing-function-v26-0-0);
169
+ transition:opacity var(--hide-animation-duration) var(--magritte-semantic-animation-ease-base-timing-function-v26-0-1), transform var(--show-animation-duration) var(--magritte-semantic-animation-ease-base-timing-function-v26-0-1), top var(--stack-animation-duration) var(--magritte-semantic-animation-ease-base-timing-function-v26-0-1), bottom var(--stack-animation-duration) var(--magritte-semantic-animation-ease-base-timing-function-v26-0-1);
170
170
  }
171
- .magritte-appear-done___3g7bl_6-4-26{
171
+ .magritte-appear-done___3g7bl_6-4-27{
172
172
  transform:translateY(0);
173
173
  }
174
- .magritte-exit___MsYCK_6-4-26{
174
+ .magritte-exit___MsYCK_6-4-27{
175
175
  opacity:1;
176
176
  }
177
- .magritte-exit-active___I4AYt_6-4-26{
177
+ .magritte-exit-active___I4AYt_6-4-27{
178
178
  opacity:0;
179
179
  transform:scale(0.75);
180
- transition:opacity var(--hide-animation-duration) var(--magritte-semantic-animation-ease-base-timing-function-v26-0-0), transform var(--hide-animation-duration) var(--magritte-semantic-animation-ease-base-timing-function-v26-0-0), top var(--stack-animation-duration) var(--magritte-semantic-animation-ease-base-timing-function-v26-0-0), bottom var(--stack-animation-duration) var(--magritte-semantic-animation-ease-base-timing-function-v26-0-0);
180
+ transition:opacity var(--hide-animation-duration) var(--magritte-semantic-animation-ease-base-timing-function-v26-0-1), transform var(--hide-animation-duration) var(--magritte-semantic-animation-ease-base-timing-function-v26-0-1), top var(--stack-animation-duration) var(--magritte-semantic-animation-ease-base-timing-function-v26-0-1), bottom var(--stack-animation-duration) var(--magritte-semantic-animation-ease-base-timing-function-v26-0-1);
181
181
  }
182
- .magritte-exit-active_autohide___jvdWc_6-4-26{
182
+ .magritte-exit-active_autohide___jvdWc_6-4-27{
183
183
  opacity:0;
184
184
  transform:scale(0.75);
185
- transition:opacity var(--hide-animation-duration) var(--magritte-semantic-animation-ease-base-timing-function-v26-0-0), transform var(--hide-animation-duration) var(--magritte-semantic-animation-ease-base-timing-function-v26-0-0), top var(--stack-animation-duration) var(--magritte-semantic-animation-ease-base-timing-function-v26-0-0), bottom var(--stack-animation-duration) var(--magritte-semantic-animation-ease-base-timing-function-v26-0-0);
185
+ transition:opacity var(--hide-animation-duration) var(--magritte-semantic-animation-ease-base-timing-function-v26-0-1), transform var(--hide-animation-duration) var(--magritte-semantic-animation-ease-base-timing-function-v26-0-1), top var(--stack-animation-duration) var(--magritte-semantic-animation-ease-base-timing-function-v26-0-1), bottom var(--stack-animation-duration) var(--magritte-semantic-animation-ease-base-timing-function-v26-0-1);
186
186
  }
187
- .magritte-exit-done___DK8l2_6-4-26{
187
+ .magritte-exit-done___DK8l2_6-4-27{
188
188
  opacity:0;
189
189
  transform:scale(0.75);
190
190
  }
package/index.d.ts CHANGED
@@ -1,5 +1,5 @@
1
- export { Snackbar } from '@hh.ru/magritte-ui-snackbar/Snackbar';
2
- export { SnackbarContainer } from '@hh.ru/magritte-ui-snackbar/SnackbarContainer';
3
- export { SnackbarContextProvider } from '@hh.ru/magritte-ui-snackbar/SnackbarContextProvider';
4
- export type { SnackbarProps, SnackbarContainerProps, Align } from '@hh.ru/magritte-ui-snackbar/types';
5
- export { useAriaSnackbar } from '@hh.ru/magritte-ui-snackbar/useAriaSnackbar';
1
+ export { Snackbar } from './Snackbar';
2
+ export { SnackbarContainer } from './SnackbarContainer';
3
+ export { SnackbarContextProvider } from './SnackbarContextProvider';
4
+ export type { SnackbarProps, SnackbarContainerProps, Align } from './types';
5
+ export { useAriaSnackbar } from './useAriaSnackbar';
package/index.js CHANGED
@@ -7,7 +7,7 @@ import 'react';
7
7
  import './context.js';
8
8
  import './types.js';
9
9
  import 'react/jsx-runtime';
10
- import './snackbar-Bk-qhcqb.js';
10
+ import './snackbar-DxehbKoS.js';
11
11
  import 'react-dom';
12
12
  import './SnackbarRenderer.js';
13
13
  import 'react-transition-group';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@hh.ru/magritte-ui-snackbar",
3
- "version": "6.4.26",
3
+ "version": "6.4.27",
4
4
  "main": "index.js",
5
5
  "types": "index.d.ts",
6
6
  "sideEffects": [
@@ -25,15 +25,15 @@
25
25
  "@hh.ru/magritte-common-resize": "0.2.3",
26
26
  "@hh.ru/magritte-common-use-multiple-refs": "1.1.12",
27
27
  "@hh.ru/magritte-common-use-swipe": "3.1.10",
28
- "@hh.ru/magritte-design-tokens": "26.0.0",
28
+ "@hh.ru/magritte-design-tokens": "26.0.1",
29
29
  "@hh.ru/magritte-internal-layer-name": "3.4.2",
30
- "@hh.ru/magritte-ui-divider": "3.2.11",
31
- "@hh.ru/magritte-ui-icon": "15.1.4",
30
+ "@hh.ru/magritte-ui-divider": "3.2.12",
31
+ "@hh.ru/magritte-ui-icon": "15.1.5",
32
32
  "@hh.ru/magritte-ui-layer": "3.2.8",
33
- "@hh.ru/magritte-ui-link": "7.2.5",
34
- "@hh.ru/magritte-ui-theme-wrapper": "1.1.28",
35
- "@hh.ru/magritte-ui-timer": "1.2.87",
36
- "@hh.ru/magritte-ui-typography": "5.3.15"
33
+ "@hh.ru/magritte-ui-link": "7.2.6",
34
+ "@hh.ru/magritte-ui-theme-wrapper": "1.1.29",
35
+ "@hh.ru/magritte-ui-timer": "1.2.88",
36
+ "@hh.ru/magritte-ui-typography": "5.3.16"
37
37
  },
38
38
  "devDependencies": {
39
39
  "@hh.ru/magritte-ui-breakpoint": "6.1.2"
@@ -47,5 +47,5 @@
47
47
  "publishConfig": {
48
48
  "access": "public"
49
49
  },
50
- "gitHead": "b0ff5da48fb29d516c8289082560ee1882d16986"
50
+ "gitHead": "f6539d7a0e7cd42dd851458db1de04a748bbee03"
51
51
  }
@@ -0,0 +1,5 @@
1
+ import './index.css';
2
+ var styles = {"snackbar-container":"magritte-snackbar-container___SeRql_6-4-27","snackbarContainer":"magritte-snackbar-container___SeRql_6-4-27","snackbar-animation-timeout":"magritte-snackbar-animation-timeout___EQLvG_6-4-27","snackbarAnimationTimeout":"magritte-snackbar-animation-timeout___EQLvG_6-4-27","snackbar":"magritte-snackbar___jgq4H_6-4-27","snackbar_stretched":"magritte-snackbar_stretched___xVhgJ_6-4-27","snackbarStretched":"magritte-snackbar_stretched___xVhgJ_6-4-27","snackbar_align-top":"magritte-snackbar_align-top___WWWbk_6-4-27","snackbarAlignTop":"magritte-snackbar_align-top___WWWbk_6-4-27","snackbar_align-bottom":"magritte-snackbar_align-bottom___tCBBP_6-4-27","snackbarAlignBottom":"magritte-snackbar_align-bottom___tCBBP_6-4-27","snackbar-in-body":"magritte-snackbar-in-body___Zer4o_6-4-27","snackbarInBody":"magritte-snackbar-in-body___Zer4o_6-4-27","snackbar-content":"magritte-snackbar-content___MlP5J_6-4-27","snackbarContent":"magritte-snackbar-content___MlP5J_6-4-27","snackbar-addon":"magritte-snackbar-addon___-eJn7_6-4-27","snackbarAddon":"magritte-snackbar-addon___-eJn7_6-4-27","snackbar-text":"magritte-snackbar-text___PCxnB_6-4-27","snackbarText":"magritte-snackbar-text___PCxnB_6-4-27","snackbar-text-wrapper":"magritte-snackbar-text-wrapper___SH6YB_6-4-27","snackbarTextWrapper":"magritte-snackbar-text-wrapper___SH6YB_6-4-27","action":"magritte-action___Yjp2t_6-4-27","snackbar-close":"magritte-snackbar-close___U8YT5_6-4-27","snackbarClose":"magritte-snackbar-close___U8YT5_6-4-27","divider":"magritte-divider___GQ492_6-4-27","appearTop":"magritte-appearTop___UJQ6-_6-4-27","appearBottom":"magritte-appearBottom___wDoOa_6-4-27","appear-active":"magritte-appear-active___Kl7by_6-4-27","appearActive":"magritte-appear-active___Kl7by_6-4-27","appear-done":"magritte-appear-done___3g7bl_6-4-27","appearDone":"magritte-appear-done___3g7bl_6-4-27","exit":"magritte-exit___MsYCK_6-4-27","exit-active":"magritte-exit-active___I4AYt_6-4-27","exitActive":"magritte-exit-active___I4AYt_6-4-27","exit-active_autohide":"magritte-exit-active_autohide___jvdWc_6-4-27","exitActiveAutohide":"magritte-exit-active_autohide___jvdWc_6-4-27","exit-done":"magritte-exit-done___DK8l2_6-4-27","exitDone":"magritte-exit-done___DK8l2_6-4-27"};
3
+
4
+ export { styles as s };
5
+ //# sourceMappingURL=snackbar-DxehbKoS.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"snackbar-DxehbKoS.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;"}
package/types.js CHANGED
@@ -1,11 +1,11 @@
1
1
  import './index.css';
2
- var SnackbarTransitionName;
3
- (function (SnackbarTransitionName) {
4
- SnackbarTransitionName["Show"] = "show";
5
- SnackbarTransitionName["Hide"] = "hide";
6
- SnackbarTransitionName["Autohide"] = "autohide";
7
- SnackbarTransitionName["RemoveImmediately"] = "removeImmediately";
8
- })(SnackbarTransitionName || (SnackbarTransitionName = {}));
2
+ var SnackbarTransitionName = /* @__PURE__ */ ((SnackbarTransitionName2) => {
3
+ SnackbarTransitionName2["Show"] = "show";
4
+ SnackbarTransitionName2["Hide"] = "hide";
5
+ SnackbarTransitionName2["Autohide"] = "autohide";
6
+ SnackbarTransitionName2["RemoveImmediately"] = "removeImmediately";
7
+ return SnackbarTransitionName2;
8
+ })(SnackbarTransitionName || {});
9
9
 
10
10
  export { SnackbarTransitionName };
11
11
  //# sourceMappingURL=types.js.map
package/types.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sources":["src/types.ts"],"sourcesContent":["import type { ReactNode, PropsWithChildren } from 'react';\n\nexport type Align = 'top' | 'bottom';\n\nexport enum SnackbarTransitionName {\n Show = 'show',\n Hide = 'hide',\n Autohide = 'autohide',\n RemoveImmediately = 'removeImmediately',\n}\n\nexport interface AriaSnackbarProps {\n /**\n * Aтрибут role, логика выбора описана в разделе доступность\n **/\n role?: 'status' | 'alertdialog' | 'alert';\n /**\n * Aтрибут aria-label\n **/\n 'aria-label'?: string;\n}\n\nexport type CloseReason = 'user' | 'timeout' | null;\n\ninterface BaseSnackbarProps extends AriaSnackbarProps {\n /**\n * Cодержимое уведомления (текст, без каких либо активных компонентов)\n **/\n children: ReactNode;\n /**\n * Текст действия, фокусирует юзера на уведомлении\n **/\n actionLabel?: string;\n /**\n * Край экрана или контейнера, относительно которого снекбар позиционируется\n * */\n align?: Align;\n /**\n * Время aвтоматического скрытия уведомления в мс(дефолт 6000). Если не нужно скрывать\n * по истечению времени, тогда нужно передать 0.\n **/\n autohideTime?: number;\n /**\n * Идентификатор контейнера, в котором отрисуется компонент\n **/\n containerId?: string;\n /**\n * Колбек действия, вызывается после нажатия на действие\n **/\n onAction?: VoidFunction;\n /**\n * Колбек закрытия компонента, вызывается после скрытия\n **/\n onClose?: (params: { reason: CloseReason }) => void;\n /**\n * Флаг, который отвечает за скрытие снекбара при размонтировании компонента. Если он установлен в false,\n * то снекбар скроется только после закрытия его пользователем или по истечении времени автоскрытия даже в случае\n * удаления компонента из дерева\n **/\n removeOnUnmount?: boolean;\n /** Флаг включающий растягивание на всю ширину контейнера */\n stretched?: boolean;\n /** Кастомный data-qa для тестирования */\n 'data-qa'?: string;\n}\n\ninterface SnackbarPropsWithClose {\n /**\n * Булев флаг, который отвечает за показ кнопки закрытия\n **/\n showClose?: true;\n /**\n * Aria-label атрибут для кнопки закрытия, устанавливается в случае если показываем кнопку закрытия\n **/\n 'aria-label-close'?: string;\n}\n\ninterface SnackbarPropsWithoutClose {\n showClose?: false;\n 'aria-label-close'?: never;\n}\n\ninterface SnackbarPropsWithAddon {\n /**\n * Компонент, который отрисуется в контейнере с левой стороны children, размер 24*24px\n **/\n addon?: ReactNode;\n showTimer?: false;\n}\n\ninterface SnackbarPropsWithTimer {\n addon?: never;\n /**\n * Булев флаг, который отвечает за показ таймера закрытия компонента, вместо на месте addon\n **/\n showTimer: true;\n}\n\nexport type SnackbarProps = BaseSnackbarProps &\n (SnackbarPropsWithAddon | SnackbarPropsWithTimer) &\n (SnackbarPropsWithClose | SnackbarPropsWithoutClose);\n\nexport interface SnackbarInternalState {\n animateOut: (\n transition:\n | SnackbarTransitionName.Hide\n | SnackbarTransitionName.Autohide\n | SnackbarTransitionName.RemoveImmediately\n ) => void;\n isShown: () => boolean;\n onShown: VoidFunction;\n transition: SnackbarTransitionName;\n position: number;\n stretched?: boolean;\n}\n\nexport interface SnackbarHelper {\n animateIn: VoidFunction;\n}\n\nexport interface SnackbarRenderHelper {\n timeout: number;\n container: HTMLElement;\n}\n\nexport type SnackbarState = SnackbarProps & SnackbarInternalState & SnackbarHelper;\n\nexport type SnackbarRendererProps = SnackbarState & SnackbarRenderHelper;\n\nexport interface SnackbarContainerProps extends PropsWithChildren {\n /**\n * Уникальный идентификатор контейнера\n **/\n id: string;\n}\n"],"names":[],"mappings":"IAIY,uBAKX;AALD,CAAA,UAAY,sBAAsB,EAAA;AAC9B,IAAA,sBAAA,CAAA,MAAA,CAAA,GAAA,MAAa,CAAA;AACb,IAAA,sBAAA,CAAA,MAAA,CAAA,GAAA,MAAa,CAAA;AACb,IAAA,sBAAA,CAAA,UAAA,CAAA,GAAA,UAAqB,CAAA;AACrB,IAAA,sBAAA,CAAA,mBAAA,CAAA,GAAA,mBAAuC,CAAA;AAC3C,CAAC,EALW,sBAAsB,KAAtB,sBAAsB,GAKjC,EAAA,CAAA,CAAA;;;;"}
1
+ {"version":3,"file":"types.js","sources":["src/types.ts"],"sourcesContent":["import type { ReactNode, PropsWithChildren } from 'react';\n\nexport type Align = 'top' | 'bottom';\n\nexport enum SnackbarTransitionName {\n Show = 'show',\n Hide = 'hide',\n Autohide = 'autohide',\n RemoveImmediately = 'removeImmediately',\n}\n\nexport interface AriaSnackbarProps {\n /**\n * Aтрибут role, логика выбора описана в разделе доступность\n **/\n role?: 'status' | 'alertdialog' | 'alert';\n /**\n * Aтрибут aria-label\n **/\n 'aria-label'?: string;\n}\n\nexport type CloseReason = 'user' | 'timeout' | null;\n\ninterface BaseSnackbarProps extends AriaSnackbarProps {\n /**\n * Cодержимое уведомления (текст, без каких либо активных компонентов)\n **/\n children: ReactNode;\n /**\n * Текст действия, фокусирует юзера на уведомлении\n **/\n actionLabel?: string;\n /**\n * Край экрана или контейнера, относительно которого снекбар позиционируется\n * */\n align?: Align;\n /**\n * Время aвтоматического скрытия уведомления в мс(дефолт 6000). Если не нужно скрывать\n * по истечению времени, тогда нужно передать 0.\n **/\n autohideTime?: number;\n /**\n * Идентификатор контейнера, в котором отрисуется компонент\n **/\n containerId?: string;\n /**\n * Колбек действия, вызывается после нажатия на действие\n **/\n onAction?: VoidFunction;\n /**\n * Колбек закрытия компонента, вызывается после скрытия\n **/\n onClose?: (params: { reason: CloseReason }) => void;\n /**\n * Флаг, который отвечает за скрытие снекбара при размонтировании компонента. Если он установлен в false,\n * то снекбар скроется только после закрытия его пользователем или по истечении времени автоскрытия даже в случае\n * удаления компонента из дерева\n **/\n removeOnUnmount?: boolean;\n /** Флаг включающий растягивание на всю ширину контейнера */\n stretched?: boolean;\n /** Кастомный data-qa для тестирования */\n 'data-qa'?: string;\n}\n\ninterface SnackbarPropsWithClose {\n /**\n * Булев флаг, который отвечает за показ кнопки закрытия\n **/\n showClose?: true;\n /**\n * Aria-label атрибут для кнопки закрытия, устанавливается в случае если показываем кнопку закрытия\n **/\n 'aria-label-close'?: string;\n}\n\ninterface SnackbarPropsWithoutClose {\n showClose?: false;\n 'aria-label-close'?: never;\n}\n\ninterface SnackbarPropsWithAddon {\n /**\n * Компонент, который отрисуется в контейнере с левой стороны children, размер 24*24px\n **/\n addon?: ReactNode;\n showTimer?: false;\n}\n\ninterface SnackbarPropsWithTimer {\n addon?: never;\n /**\n * Булев флаг, который отвечает за показ таймера закрытия компонента, вместо на месте addon\n **/\n showTimer: true;\n}\n\nexport type SnackbarProps = BaseSnackbarProps &\n (SnackbarPropsWithAddon | SnackbarPropsWithTimer) &\n (SnackbarPropsWithClose | SnackbarPropsWithoutClose);\n\nexport interface SnackbarInternalState {\n animateOut: (\n transition:\n | SnackbarTransitionName.Hide\n | SnackbarTransitionName.Autohide\n | SnackbarTransitionName.RemoveImmediately\n ) => void;\n isShown: () => boolean;\n onShown: VoidFunction;\n transition: SnackbarTransitionName;\n position: number;\n stretched?: boolean;\n}\n\nexport interface SnackbarHelper {\n animateIn: VoidFunction;\n}\n\nexport interface SnackbarRenderHelper {\n timeout: number;\n container: HTMLElement;\n}\n\nexport type SnackbarState = SnackbarProps & SnackbarInternalState & SnackbarHelper;\n\nexport type SnackbarRendererProps = SnackbarState & SnackbarRenderHelper;\n\nexport interface SnackbarContainerProps extends PropsWithChildren {\n /**\n * Уникальный идентификатор контейнера\n **/\n id: string;\n}\n"],"names":["SnackbarTransitionName"],"mappings":"AAIY,IAAA,sBAAA,qBAAAA,uBAAL,KAAA;AACH,EAAAA,wBAAA,MAAO,CAAA,GAAA,MAAA,CAAA;AACP,EAAAA,wBAAA,MAAO,CAAA,GAAA,MAAA,CAAA;AACP,EAAAA,wBAAA,UAAW,CAAA,GAAA,UAAA,CAAA;AACX,EAAAA,wBAAA,mBAAoB,CAAA,GAAA,mBAAA,CAAA;AAJZ,EAAAA,OAAAA,uBAAAA,CAAAA;AAAA,CAAA,EAAA,sBAAA,IAAA,EAAA;;;;"}
@@ -1,4 +1,4 @@
1
- import { type AriaSnackbarProps } from '@hh.ru/magritte-ui-snackbar/types';
1
+ import { type AriaSnackbarProps } from './types';
2
2
  interface UseAriaSnackbarProps extends AriaSnackbarProps {
3
3
  hasAction: boolean;
4
4
  }
@@ -7,5 +7,5 @@ interface AriaAttributes extends AriaSnackbarProps {
7
7
  'aria-modal'?: 'true' | 'false';
8
8
  tabIndex?: number;
9
9
  }
10
- export declare const useAriaSnackbar: ({ role, "aria-label": ariaLabel, hasAction }: UseAriaSnackbarProps) => AriaAttributes;
10
+ export declare const useAriaSnackbar: ({ role, 'aria-label': ariaLabel, hasAction }: UseAriaSnackbarProps) => AriaAttributes;
11
11
  export {};
@@ -1,24 +1,24 @@
1
1
  import './index.css';
2
- const useAriaSnackbar = ({ role, 'aria-label': ariaLabel, hasAction }) => {
3
- let ariaAttributes = {
4
- role,
5
- 'aria-label': ariaLabel,
2
+ const useAriaSnackbar = ({ role, "aria-label": ariaLabel, hasAction }) => {
3
+ let ariaAttributes = {
4
+ role,
5
+ "aria-label": ariaLabel
6
+ };
7
+ if (hasAction || role === "alertdialog") {
8
+ ariaAttributes = {
9
+ ...ariaAttributes,
10
+ role: "alertdialog",
11
+ "aria-modal": "true",
12
+ tabIndex: 0
6
13
  };
7
- if (hasAction || role === 'alertdialog') {
8
- ariaAttributes = {
9
- ...ariaAttributes,
10
- role: 'alertdialog',
11
- 'aria-modal': 'true',
12
- tabIndex: 0,
13
- };
14
- }
15
- if (role !== 'status') {
16
- ariaAttributes = {
17
- ...ariaAttributes,
18
- 'aria-describedby': 'dialog-description',
19
- };
20
- }
21
- return ariaAttributes;
14
+ }
15
+ if (role !== "status") {
16
+ ariaAttributes = {
17
+ ...ariaAttributes,
18
+ "aria-describedby": "dialog-description"
19
+ };
20
+ }
21
+ return ariaAttributes;
22
22
  };
23
23
 
24
24
  export { useAriaSnackbar };