@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.
- package/Snackbar.d.ts +1 -1
- package/Snackbar.js +72 -53
- package/Snackbar.js.map +1 -1
- package/SnackbarContainer.d.ts +1 -1
- package/SnackbarContainer.js +12 -6
- package/SnackbarContainer.js.map +1 -1
- package/SnackbarContextProvider.js +152 -147
- package/SnackbarContextProvider.js.map +1 -1
- package/SnackbarRenderer.d.ts +1 -1
- package/SnackbarRenderer.js +300 -230
- package/SnackbarRenderer.js.map +1 -1
- package/context.d.ts +1 -1
- package/context.js +5 -5
- package/context.js.map +1 -1
- package/index.css +61 -61
- package/index.d.ts +5 -5
- package/index.js +1 -1
- package/package.json +9 -9
- package/snackbar-DxehbKoS.js +5 -0
- package/snackbar-DxehbKoS.js.map +1 -0
- package/types.js +7 -7
- package/types.js.map +1 -1
- package/useAriaSnackbar.d.ts +2 -2
- package/useAriaSnackbar.js +19 -19
- package/useAriaSnackbar.js.map +1 -1
- package/snackbar-Bk-qhcqb.js +0 -5
- package/snackbar-Bk-qhcqb.js.map +0 -1
package/SnackbarRenderer.js.map
CHANGED
|
@@ -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 '
|
|
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 = (
|
|
4
|
+
const noopFunc = () => void 0;
|
|
5
5
|
const SnackbarContext = createContext({
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
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,
|
|
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-
|
|
3
|
-
--magritte-color-component-snackbar-stroke-content-v26-0-
|
|
4
|
-
--magritte-color-component-snackbar-stroke-divider-v26-0-
|
|
5
|
-
--magritte-color-component-snackbar-text-content-v26-0-
|
|
6
|
-
--magritte-color-component-snackbar-text-action-v26-0-
|
|
7
|
-
--magritte-color-component-snackbar-text-state-action-hovered-v26-0-
|
|
8
|
-
--magritte-color-component-snackbar-text-state-action-pressed-v26-0-
|
|
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-
|
|
13
|
-
--magritte-semantic-animation-ease-base-timing-function-v26-0-
|
|
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-
|
|
18
|
-
--magritte-color-component-snackbar-stroke-divider-v26-0-
|
|
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-
|
|
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-
|
|
27
|
-
.magritte-snackbar___jgq4H_6-4-
|
|
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-
|
|
38
|
-
--show-animation-duration:var(--magritte-semantic-animation-time-m-duration-v26-0-
|
|
39
|
-
--hide-animation-duration:var(--magritte-semantic-animation-time-m-duration-v26-0-
|
|
40
|
-
--stack-animation-duration:var(--magritte-semantic-animation-time-m-duration-v26-0-
|
|
41
|
-
--resize-animation-duration:var(--magritte-semantic-animation-time-m-duration-v26-0-
|
|
42
|
-
--autohide-animation-duration:var(--magritte-semantic-animation-time-m-duration-v26-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-
|
|
47
|
-
.magritte-snackbar___jgq4H_6-4-
|
|
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-
|
|
58
|
-
body.magritte-old-layout .magritte-snackbar___jgq4H_6-4-
|
|
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-
|
|
64
|
-
body:not(.magritte-old-layout) .magritte-snackbar___jgq4H_6-4-
|
|
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-
|
|
68
|
+
.magritte-snackbar-animation-timeout___EQLvG_6-4-27{
|
|
69
69
|
display:none;
|
|
70
70
|
}
|
|
71
|
-
.magritte-snackbar___jgq4H_6-4-
|
|
72
|
-
background:var(--magritte-color-component-snackbar-background-content-v26-0-
|
|
73
|
-
color:var(--magritte-color-component-snackbar-text-content-v26-0-
|
|
74
|
-
box-shadow:inset 0 0 0 1px var(--magritte-color-component-snackbar-stroke-content-v26-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-
|
|
79
|
+
.magritte-snackbar_stretched___xVhgJ_6-4-27{
|
|
80
80
|
width:auto;
|
|
81
81
|
}
|
|
82
|
-
.magritte-snackbar_align-top___WWWbk_6-4-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
108
|
+
.magritte-snackbar-in-body___Zer4o_6-4-27{
|
|
109
109
|
position:fixed;
|
|
110
110
|
}
|
|
111
|
-
.magritte-snackbar-content___MlP5J_6-4-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
144
|
-
--magritte-ui-link-text-color-hovered-override:var(--magritte-color-component-snackbar-text-state-action-hovered-v26-0-
|
|
145
|
-
--magritte-ui-link-text-color-pressed-override:var(--magritte-color-component-snackbar-text-state-action-pressed-v26-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-
|
|
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-
|
|
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-
|
|
159
|
+
--magritte-ui-divider-color-override:var(--magritte-color-component-snackbar-stroke-divider-v26-0-1);
|
|
160
160
|
}
|
|
161
|
-
.magritte-appearTop___UJQ6-_6-4-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
171
|
+
.magritte-appear-done___3g7bl_6-4-27{
|
|
172
172
|
transform:translateY(0);
|
|
173
173
|
}
|
|
174
|
-
.magritte-exit___MsYCK_6-4-
|
|
174
|
+
.magritte-exit___MsYCK_6-4-27{
|
|
175
175
|
opacity:1;
|
|
176
176
|
}
|
|
177
|
-
.magritte-exit-active___I4AYt_6-4-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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 '
|
|
2
|
-
export { SnackbarContainer } from '
|
|
3
|
-
export { SnackbarContextProvider } from '
|
|
4
|
-
export type { SnackbarProps, SnackbarContainerProps, Align } from '
|
|
5
|
-
export { useAriaSnackbar } from '
|
|
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
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@hh.ru/magritte-ui-snackbar",
|
|
3
|
-
"version": "6.4.
|
|
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.
|
|
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.
|
|
31
|
-
"@hh.ru/magritte-ui-icon": "15.1.
|
|
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.
|
|
34
|
-
"@hh.ru/magritte-ui-theme-wrapper": "1.1.
|
|
35
|
-
"@hh.ru/magritte-ui-timer": "1.2.
|
|
36
|
-
"@hh.ru/magritte-ui-typography": "5.3.
|
|
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": "
|
|
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
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
})(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":"
|
|
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;;;;"}
|
package/useAriaSnackbar.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { type AriaSnackbarProps } from '
|
|
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,
|
|
10
|
+
export declare const useAriaSnackbar: ({ role, 'aria-label': ariaLabel, hasAction }: UseAriaSnackbarProps) => AriaAttributes;
|
|
11
11
|
export {};
|
package/useAriaSnackbar.js
CHANGED
|
@@ -1,24 +1,24 @@
|
|
|
1
1
|
import './index.css';
|
|
2
|
-
const useAriaSnackbar = ({ role,
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
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
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
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 };
|