@transferwise/components 46.167.0 → 46.168.0
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/README.md +1 -1
- package/build/Link/Link.js.map +1 -1
- package/build/Link/Link.mjs.map +1 -1
- package/build/Loader/Loader.js.map +1 -1
- package/build/Loader/Loader.mjs.map +1 -1
- package/build/Prompt/PrimitivePrompt/PrimitivePrompt.js +2 -1
- package/build/Prompt/PrimitivePrompt/PrimitivePrompt.js.map +1 -1
- package/build/Prompt/PrimitivePrompt/PrimitivePrompt.mjs +2 -1
- package/build/Prompt/PrimitivePrompt/PrimitivePrompt.mjs.map +1 -1
- package/build/Prompt/Snackbar/Snackbar.js +205 -0
- package/build/Prompt/Snackbar/Snackbar.js.map +1 -0
- package/build/Prompt/Snackbar/Snackbar.messages.js +14 -0
- package/build/Prompt/Snackbar/Snackbar.messages.js.map +1 -0
- package/build/Prompt/Snackbar/Snackbar.messages.mjs +10 -0
- package/build/Prompt/Snackbar/Snackbar.messages.mjs.map +1 -0
- package/build/Prompt/Snackbar/Snackbar.mjs +203 -0
- package/build/Prompt/Snackbar/Snackbar.mjs.map +1 -0
- package/build/Prompt/Snackbar/SnackbarContext.js.map +1 -0
- package/build/Prompt/Snackbar/SnackbarContext.mjs.map +1 -0
- package/build/Prompt/Snackbar/SnackbarPortal.js +12 -0
- package/build/Prompt/Snackbar/SnackbarPortal.js.map +1 -0
- package/build/Prompt/Snackbar/SnackbarPortal.mjs +8 -0
- package/build/Prompt/Snackbar/SnackbarPortal.mjs.map +1 -0
- package/build/Prompt/Snackbar/SnackbarProvider.js +42 -0
- package/build/Prompt/Snackbar/SnackbarProvider.js.map +1 -0
- package/build/Prompt/Snackbar/SnackbarProvider.mjs +38 -0
- package/build/Prompt/Snackbar/SnackbarProvider.mjs.map +1 -0
- package/build/Prompt/Snackbar/constants.js +17 -0
- package/build/Prompt/Snackbar/constants.js.map +1 -0
- package/build/Prompt/Snackbar/constants.mjs +11 -0
- package/build/Prompt/Snackbar/constants.mjs.map +1 -0
- package/build/Prompt/Snackbar/useSnackbar.js.map +1 -0
- package/build/Prompt/Snackbar/useSnackbar.mjs.map +1 -0
- package/build/Prompt/Snackbar/useSnackbarAutoDismiss.js +66 -0
- package/build/Prompt/Snackbar/useSnackbarAutoDismiss.js.map +1 -0
- package/build/Prompt/Snackbar/useSnackbarAutoDismiss.mjs +62 -0
- package/build/Prompt/Snackbar/useSnackbarAutoDismiss.mjs.map +1 -0
- package/build/Prompt/Snackbar/useSnackbarManager.js +153 -0
- package/build/Prompt/Snackbar/useSnackbarManager.js.map +1 -0
- package/build/Prompt/Snackbar/useSnackbarManager.mjs +149 -0
- package/build/Prompt/Snackbar/useSnackbarManager.mjs.map +1 -0
- package/build/Prompt/Snackbar/useSnackbarSwipeDismiss.js +135 -0
- package/build/Prompt/Snackbar/useSnackbarSwipeDismiss.js.map +1 -0
- package/build/Prompt/Snackbar/useSnackbarSwipeDismiss.mjs +131 -0
- package/build/Prompt/Snackbar/useSnackbarSwipeDismiss.mjs.map +1 -0
- package/build/Section/Section.js.map +1 -1
- package/build/Section/Section.mjs.map +1 -1
- package/build/_deprecated/Select/Select.js +1 -1
- package/build/_deprecated/Select/Select.js.map +1 -1
- package/build/_deprecated/Select/Select.mjs +1 -1
- package/build/_deprecated/Select/Select.mjs.map +1 -1
- package/build/common/BottomSheet/BottomSheet.js +1 -3
- package/build/common/BottomSheet/BottomSheet.js.map +1 -1
- package/build/common/BottomSheet/BottomSheet.mjs +1 -3
- package/build/common/BottomSheet/BottomSheet.mjs.map +1 -1
- package/build/i18n/en.json +1 -0
- package/build/i18n/en.json.js +1 -0
- package/build/i18n/en.json.js.map +1 -1
- package/build/i18n/en.json.mjs +1 -0
- package/build/i18n/en.json.mjs.map +1 -1
- package/build/index.js +3 -3
- package/build/index.mjs +3 -3
- package/build/main.css +137 -75
- package/build/styles/IconButton/IconButton.css +3 -4
- package/build/styles/Prompt/Snackbar/Snackbar.css +134 -0
- package/build/styles/main.css +137 -75
- package/build/types/Link/Link.d.ts +1 -1
- package/build/types/Loader/Loader.d.ts +1 -1
- package/build/types/Prompt/PrimitivePrompt/PrimitivePrompt.d.ts +11 -0
- package/build/types/Prompt/PrimitivePrompt/PrimitivePrompt.d.ts.map +1 -1
- package/build/types/Prompt/Snackbar/Snackbar.d.ts +62 -0
- package/build/types/Prompt/Snackbar/Snackbar.d.ts.map +1 -0
- package/build/types/Prompt/Snackbar/Snackbar.messages.d.ts +9 -0
- package/build/types/Prompt/Snackbar/Snackbar.messages.d.ts.map +1 -0
- package/build/types/Prompt/Snackbar/Snackbar.types.d.ts +12 -0
- package/build/types/Prompt/Snackbar/Snackbar.types.d.ts.map +1 -0
- package/build/types/{Snackbar → Prompt/Snackbar}/SnackbarContext.d.ts +2 -2
- package/build/types/Prompt/Snackbar/SnackbarContext.d.ts.map +1 -0
- package/build/types/Prompt/Snackbar/SnackbarPortal.d.ts +4 -0
- package/build/types/Prompt/Snackbar/SnackbarPortal.d.ts.map +1 -0
- package/build/types/Prompt/Snackbar/SnackbarProvider.d.ts +13 -0
- package/build/types/Prompt/Snackbar/SnackbarProvider.d.ts.map +1 -0
- package/build/types/Prompt/Snackbar/constants.d.ts +9 -0
- package/build/types/Prompt/Snackbar/constants.d.ts.map +1 -0
- package/build/types/{Snackbar → Prompt/Snackbar}/index.d.ts +1 -1
- package/build/types/Prompt/Snackbar/index.d.ts.map +1 -0
- package/build/types/Prompt/Snackbar/useSnackbar.d.ts +3 -0
- package/build/types/Prompt/Snackbar/useSnackbar.d.ts.map +1 -0
- package/build/types/Prompt/Snackbar/useSnackbarAutoDismiss.d.ts +13 -0
- package/build/types/Prompt/Snackbar/useSnackbarAutoDismiss.d.ts.map +1 -0
- package/build/types/Prompt/Snackbar/useSnackbarManager.d.ts +20 -0
- package/build/types/Prompt/Snackbar/useSnackbarManager.d.ts.map +1 -0
- package/build/types/Prompt/Snackbar/useSnackbarSwipeDismiss.d.ts +22 -0
- package/build/types/Prompt/Snackbar/useSnackbarSwipeDismiss.d.ts.map +1 -0
- package/build/types/Section/Section.d.ts +1 -1
- package/build/types/_deprecated/Select/Select.d.ts +1 -1
- package/build/types/common/BottomSheet/BottomSheet.d.ts +1 -3
- package/build/types/common/BottomSheet/BottomSheet.d.ts.map +1 -1
- package/build/types/index.d.ts +5 -5
- package/build/types/index.d.ts.map +1 -1
- package/build/types/test-utils/index.d.ts +2 -0
- package/build/types/test-utils/index.d.ts.map +1 -1
- package/package.json +2 -2
- package/src/IconButton/IconButton.css +3 -4
- package/src/IconButton/IconButton.less +14 -1
- package/src/Link/Link.tsx +1 -1
- package/src/ListItem/AdditionalInfo/_stories/ListItemAdditionalInfo.story.tsx +1 -1
- package/src/ListItem/AvatarView/_stories/ListItemAvatarView.story.tsx +3 -3
- package/src/ListItem/_stories/ListItem.disabled.story.tsx +1 -1
- package/src/ListItem/_stories/ListItem.scenarios.story.tsx +2 -2
- package/src/Loader/Loader.tsx +1 -1
- package/src/Prompt/PrimitivePrompt/PrimitivePrompt.test.tsx +24 -1
- package/src/Prompt/PrimitivePrompt/PrimitivePrompt.tsx +8 -2
- package/src/Prompt/Snackbar/Snackbar.css +134 -0
- package/src/Prompt/Snackbar/Snackbar.less +159 -0
- package/src/Prompt/Snackbar/Snackbar.messages.ts +9 -0
- package/src/Prompt/Snackbar/Snackbar.test.tsx +1079 -0
- package/src/Prompt/Snackbar/Snackbar.tsx +245 -0
- package/src/Prompt/Snackbar/Snackbar.types.ts +17 -0
- package/src/{Snackbar → Prompt/Snackbar}/SnackbarContext.ts +2 -2
- package/src/Prompt/Snackbar/SnackbarPortal.tsx +8 -0
- package/src/Prompt/Snackbar/SnackbarProvider.test.tsx +783 -0
- package/src/Prompt/Snackbar/SnackbarProvider.tsx +41 -0
- package/src/Prompt/Snackbar/_stories/Snackbar.accessibility.docs.mdx +58 -0
- package/src/{Snackbar → Prompt/Snackbar}/_stories/Snackbar.rtl.test.story.tsx +17 -9
- package/src/Prompt/Snackbar/_stories/Snackbar.story.tsx +416 -0
- package/src/Prompt/Snackbar/_stories/Snackbar.test.story.tsx +263 -0
- package/src/Prompt/Snackbar/constants.ts +10 -0
- package/src/{Snackbar → Prompt/Snackbar}/index.ts +1 -1
- package/src/Prompt/Snackbar/useSnackbarAutoDismiss.ts +74 -0
- package/src/Prompt/Snackbar/useSnackbarManager.ts +169 -0
- package/src/Prompt/Snackbar/useSnackbarSwipeDismiss.ts +169 -0
- package/src/Section/Section.tsx +1 -1
- package/src/_deprecated/Select/Select.tsx +1 -1
- package/src/_deprecated/Select/_stories/Select.story.tsx +1 -1
- package/src/common/BottomSheet/BottomSheet.tsx +1 -3
- package/src/i18n/en.json +1 -0
- package/src/index.ts +5 -5
- package/src/main.css +137 -75
- package/src/main.less +1 -1
- package/build/Snackbar/Snackbar.js +0 -128
- package/build/Snackbar/Snackbar.js.map +0 -1
- package/build/Snackbar/Snackbar.mjs +0 -123
- package/build/Snackbar/Snackbar.mjs.map +0 -1
- package/build/Snackbar/SnackbarContext.js.map +0 -1
- package/build/Snackbar/SnackbarContext.mjs.map +0 -1
- package/build/Snackbar/SnackbarProvider.js +0 -46
- package/build/Snackbar/SnackbarProvider.js.map +0 -1
- package/build/Snackbar/SnackbarProvider.mjs +0 -42
- package/build/Snackbar/SnackbarProvider.mjs.map +0 -1
- package/build/Snackbar/useSnackbar.js.map +0 -1
- package/build/Snackbar/useSnackbar.mjs.map +0 -1
- package/build/styles/Snackbar/Snackbar.css +0 -71
- package/build/types/Snackbar/Snackbar.d.ts +0 -16
- package/build/types/Snackbar/Snackbar.d.ts.map +0 -1
- package/build/types/Snackbar/SnackbarContext.d.ts.map +0 -1
- package/build/types/Snackbar/SnackbarProvider.d.ts +0 -6
- package/build/types/Snackbar/SnackbarProvider.d.ts.map +0 -1
- package/build/types/Snackbar/index.d.ts.map +0 -1
- package/build/types/Snackbar/useSnackbar.d.ts +0 -3
- package/build/types/Snackbar/useSnackbar.d.ts.map +0 -1
- package/src/Snackbar/Snackbar.css +0 -71
- package/src/Snackbar/Snackbar.less +0 -80
- package/src/Snackbar/Snackbar.test.tsx +0 -206
- package/src/Snackbar/Snackbar.tsx +0 -129
- package/src/Snackbar/SnackbarProvider.tsx +0 -33
- package/src/Snackbar/_stories/Snackbar.story.tsx +0 -89
- package/src/Snackbar/_stories/Snackbar.test.story.tsx +0 -139
- /package/build/{Snackbar → Prompt/Snackbar}/SnackbarContext.js +0 -0
- /package/build/{Snackbar → Prompt/Snackbar}/SnackbarContext.mjs +0 -0
- /package/build/{Snackbar → Prompt/Snackbar}/useSnackbar.js +0 -0
- /package/build/{Snackbar → Prompt/Snackbar}/useSnackbar.mjs +0 -0
- /package/src/{Snackbar → Prompt/Snackbar}/useSnackbar.ts +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BottomSheet.mjs","sources":["../../../src/common/BottomSheet/BottomSheet.tsx"],"sourcesContent":["import { clsx } from 'clsx';\nimport {\n CSSProperties,\n HTMLAttributes,\n PropsWithChildren,\n SyntheticEvent,\n useContext,\n useRef,\n useState,\n} from 'react';\nimport { Breakpoint } from '@transferwise/neptune-tokens';\n\nimport Dimmer from '../../Dimmer';\nimport Drawer from '../../Drawer';\nimport { OverlayIdContext } from '../../Provider/overlay/OverlayIdProvider';\nimport SlidingPanel from '../../SlidingPanel';\nimport { CloseButton } from '../CloseButton';\nimport { CommonProps } from '../commonProps';\nimport { isServerSide } from '../DomHelpers';\nimport { useConditionalListener } from '../hooks';\nimport { useMedia } from '../hooks/useMedia';\nimport { Position } from '../PropsValues/position';\n\nconst INITIAL_Y_POSITION = 0;\n\nconst CONTENT_SCROLL_THRESHOLD = 1;\n\nconst MOVE_OFFSET_THRESHOLD = 50;\n\nexport type BottomSheetProps = PropsWithChildren<\n {\n onClose?: (event: Event | SyntheticEvent) => void;\n open: boolean;\n } & CommonProps &\n Pick<HTMLAttributes<HTMLDivElement>, 'role' | 'aria-labelledby' | 'aria-label'>\n>;\n\n/**\n * Neptune: https://transferwise.github.io/neptune/components/bottom-sheet/\n *\n * Neptune Web: https://transferwise.github.io/neptune-web/components/overlays/BottomSheet\n *\n */\nconst BottomSheet = ({ role = 'dialog', ...props }: BottomSheetProps) => {\n const bottomSheetReference = useRef<HTMLDivElement>(null);\n const topBarReference = useRef<HTMLDivElement>(null);\n const contentReference = useRef<HTMLDivElement>(null);\n\n const [pressed, setPressed] = useState<boolean>(false);\n\n /**\n * Used to track `requestAnimationFrame` requests\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/API/window/requestAnimationFrame#return_value\n */\n const animationId = useRef<number>(0);\n\n /**\n * Difference between initial coordinate ({@link initialYCoordinate})\n * and new position (when user moves component), it's get calculated on `onTouchMove` and `onMouseMove` events\n *\n * @see {@link calculateOffsetAfterMove}\n */\n const moveOffset = useRef<number>(0);\n const initialYCoordinate = useRef<number>(0);\n\n // apply shadow to the bottom of top-bar when scroll over content\n useConditionalListener({\n attachListener: props.open && !isServerSide(),\n callback: () => {\n if (topBarReference.current !== null) {\n const { classList } = topBarReference.current;\n if (!isContentScrollPositionAtTop()) {\n classList.add('np-bottom-sheet--top-bar--shadow');\n } else {\n classList.remove('np-bottom-sheet--top-bar--shadow');\n }\n }\n },\n eventType: 'scroll',\n parent: isServerSide() ? undefined : document,\n });\n\n function move(newHeight: number): void {\n if (bottomSheetReference.current !== null) {\n bottomSheetReference.current.style.transform = `translateY(${newHeight}px)`;\n }\n }\n\n function close(event: Event | SyntheticEvent): void {\n setPressed(false);\n moveOffset.current = INITIAL_Y_POSITION;\n if (bottomSheetReference.current !== null) {\n bottomSheetReference.current.style.removeProperty('transform');\n }\n if (props.onClose) {\n props.onClose(event);\n }\n }\n\n const onSwipeStart = (\n event: React.MouseEvent<HTMLDivElement> | React.TouchEvent<HTMLDivElement>,\n ): void => {\n initialYCoordinate.current = ('touches' in event ? event.touches[0] : event).clientY;\n setPressed(true);\n };\n\n const onSwipeMove = (\n event: React.MouseEvent<HTMLDivElement> | React.TouchEvent<HTMLDivElement>,\n ): void => {\n if (pressed) {\n const { clientY } = 'touches' in event ? event.touches[0] : event;\n\n const offset = calculateOffsetAfterMove(clientY);\n // check whether move is to the bottom only and content scroll position is at the top\n if (offset > INITIAL_Y_POSITION && isContentScrollPositionAtTop()) {\n moveOffset.current = offset;\n animationId.current = requestAnimationFrame(() => {\n if (animationId.current !== undefined && bottomSheetReference.current !== null) {\n move(offset);\n }\n });\n }\n }\n };\n\n function onSwipeEnd(\n event: React.MouseEvent<HTMLDivElement> | React.TouchEvent<HTMLDivElement>,\n ): void {\n // stop moving component\n cancelAnimationFrame(animationId.current);\n setPressed(false);\n // check whether move down is strong enough\n // and content scroll position is at the top to close the component\n if (moveOffset.current > MOVE_OFFSET_THRESHOLD && isContentScrollPositionAtTop()) {\n close(event);\n }\n // otherwise move component back to default (initial) position\n else {\n move(INITIAL_Y_POSITION);\n }\n moveOffset.current = INITIAL_Y_POSITION;\n }\n\n function isContentScrollPositionAtTop(): boolean {\n return (\n contentReference?.current?.scrollTop !== undefined &&\n contentReference.current.scrollTop <= CONTENT_SCROLL_THRESHOLD\n );\n }\n\n /**\n * Calculates how hard user moves component,\n * result value used to determine whether to hide component or re-position to default state\n *\n * @param afterMoveYCoordinate\n */\n function calculateOffsetAfterMove(afterMoveYCoordinate: number): number {\n return afterMoveYCoordinate - initialYCoordinate.current;\n }\n\n /**\n * Set `max-height` for content part (in order to keep it scrollable for content overflow cases) of the component\n * and ensures space for safe zone (32px) at the top.\n */\n function setContentMaxHeight(): CSSProperties {\n const safeZoneHeight = '64px';\n const topbarHeight = '32px';\n const windowHight: number = isServerSide() ? 0 : window.innerHeight;\n /**\n * Calculate _real_ height of the screen (taking into account parts of browser interface).\n *\n * See https://css-tricks.com/the-trick-to-viewport-units-on-mobile for more details.\n */\n const screenHeight = `${windowHight * 0.01 * 100}px`;\n return {\n maxHeight: `calc(${screenHeight} - ${safeZoneHeight} - ${topbarHeight})`,\n };\n }\n\n const is400Zoom = useMedia(`(max-width: ${Breakpoint.EXTRA_SMALL}px)`);\n\n const overlayId = useContext(OverlayIdContext);\n\n return is400Zoom ? (\n <Drawer\n aria-labelledby={props['aria-labelledby']}\n aria-label={props['aria-label']}\n role={role}\n open={props.open}\n className={props.className}\n onClose={close}\n >\n {props.children}\n </Drawer>\n ) : (\n <Dimmer open={props.open} fadeContentOnEnter fadeContentOnExit onClose={close}>\n <SlidingPanel\n ref={bottomSheetReference}\n open={props.open}\n position={Position.BOTTOM}\n className={clsx('np-bottom-sheet', props.className)}\n >\n <div\n id={overlayId}\n aria-labelledby={props['aria-labelledby'] || undefined}\n aria-label={props['aria-label'] || undefined}\n role={role}\n aria-modal\n onTouchStart={onSwipeStart}\n onTouchMove={onSwipeMove}\n onTouchEnd={onSwipeEnd}\n onMouseDown={onSwipeStart}\n onMouseMove={onSwipeMove}\n onMouseUp={onSwipeEnd}\n >\n <div ref={topBarReference} className=\"np-bottom-sheet--top-bar\">\n <div className=\"np-bottom-sheet--handler\" />\n <CloseButton size=\"sm\" className=\"sr-only np-bottom-sheet--close-btn\" onClick={close} />\n </div>\n <div\n ref={contentReference}\n style={setContentMaxHeight()}\n className=\"np-bottom-sheet--content\"\n >\n {props.children}\n </div>\n </div>\n </SlidingPanel>\n </Dimmer>\n );\n};\n\nexport default BottomSheet;\n"],"names":["INITIAL_Y_POSITION","CONTENT_SCROLL_THRESHOLD","MOVE_OFFSET_THRESHOLD","BottomSheet","role","props","bottomSheetReference","useRef","topBarReference","contentReference","pressed","setPressed","useState","animationId","moveOffset","initialYCoordinate","useConditionalListener","attachListener","open","isServerSide","callback","current","classList","isContentScrollPositionAtTop","add","remove","eventType","parent","undefined","document","move","newHeight","style","transform","close","event","removeProperty","onClose","onSwipeStart","touches","clientY","onSwipeMove","offset","calculateOffsetAfterMove","requestAnimationFrame","onSwipeEnd","cancelAnimationFrame","scrollTop","afterMoveYCoordinate","setContentMaxHeight","safeZoneHeight","topbarHeight","windowHight","window","innerHeight","screenHeight","maxHeight","is400Zoom","useMedia","Breakpoint","EXTRA_SMALL","overlayId","useContext","OverlayIdContext","_jsx","Drawer","className","children","Dimmer","fadeContentOnEnter","fadeContentOnExit","SlidingPanel","ref","position","Position","BOTTOM","clsx","_jsxs","id","onTouchStart","onTouchMove","onTouchEnd","onMouseDown","onMouseMove","onMouseUp","CloseButton","size","onClick"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"BottomSheet.mjs","sources":["../../../src/common/BottomSheet/BottomSheet.tsx"],"sourcesContent":["import { clsx } from 'clsx';\nimport {\n CSSProperties,\n HTMLAttributes,\n PropsWithChildren,\n SyntheticEvent,\n useContext,\n useRef,\n useState,\n} from 'react';\nimport { Breakpoint } from '@transferwise/neptune-tokens';\n\nimport Dimmer from '../../Dimmer';\nimport Drawer from '../../Drawer';\nimport { OverlayIdContext } from '../../Provider/overlay/OverlayIdProvider';\nimport SlidingPanel from '../../SlidingPanel';\nimport { CloseButton } from '../CloseButton';\nimport { CommonProps } from '../commonProps';\nimport { isServerSide } from '../DomHelpers';\nimport { useConditionalListener } from '../hooks';\nimport { useMedia } from '../hooks/useMedia';\nimport { Position } from '../PropsValues/position';\n\nconst INITIAL_Y_POSITION = 0;\n\nconst CONTENT_SCROLL_THRESHOLD = 1;\n\nconst MOVE_OFFSET_THRESHOLD = 50;\n\nexport type BottomSheetProps = PropsWithChildren<\n {\n onClose?: (event: Event | SyntheticEvent) => void;\n open: boolean;\n } & CommonProps &\n Pick<HTMLAttributes<HTMLDivElement>, 'role' | 'aria-labelledby' | 'aria-label'>\n>;\n\n/**\n * Design guidance: https://docs.wise.design/components/bottom-sheet/\n *\n */\nconst BottomSheet = ({ role = 'dialog', ...props }: BottomSheetProps) => {\n const bottomSheetReference = useRef<HTMLDivElement>(null);\n const topBarReference = useRef<HTMLDivElement>(null);\n const contentReference = useRef<HTMLDivElement>(null);\n\n const [pressed, setPressed] = useState<boolean>(false);\n\n /**\n * Used to track `requestAnimationFrame` requests\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/API/window/requestAnimationFrame#return_value\n */\n const animationId = useRef<number>(0);\n\n /**\n * Difference between initial coordinate ({@link initialYCoordinate})\n * and new position (when user moves component), it's get calculated on `onTouchMove` and `onMouseMove` events\n *\n * @see {@link calculateOffsetAfterMove}\n */\n const moveOffset = useRef<number>(0);\n const initialYCoordinate = useRef<number>(0);\n\n // apply shadow to the bottom of top-bar when scroll over content\n useConditionalListener({\n attachListener: props.open && !isServerSide(),\n callback: () => {\n if (topBarReference.current !== null) {\n const { classList } = topBarReference.current;\n if (!isContentScrollPositionAtTop()) {\n classList.add('np-bottom-sheet--top-bar--shadow');\n } else {\n classList.remove('np-bottom-sheet--top-bar--shadow');\n }\n }\n },\n eventType: 'scroll',\n parent: isServerSide() ? undefined : document,\n });\n\n function move(newHeight: number): void {\n if (bottomSheetReference.current !== null) {\n bottomSheetReference.current.style.transform = `translateY(${newHeight}px)`;\n }\n }\n\n function close(event: Event | SyntheticEvent): void {\n setPressed(false);\n moveOffset.current = INITIAL_Y_POSITION;\n if (bottomSheetReference.current !== null) {\n bottomSheetReference.current.style.removeProperty('transform');\n }\n if (props.onClose) {\n props.onClose(event);\n }\n }\n\n const onSwipeStart = (\n event: React.MouseEvent<HTMLDivElement> | React.TouchEvent<HTMLDivElement>,\n ): void => {\n initialYCoordinate.current = ('touches' in event ? event.touches[0] : event).clientY;\n setPressed(true);\n };\n\n const onSwipeMove = (\n event: React.MouseEvent<HTMLDivElement> | React.TouchEvent<HTMLDivElement>,\n ): void => {\n if (pressed) {\n const { clientY } = 'touches' in event ? event.touches[0] : event;\n\n const offset = calculateOffsetAfterMove(clientY);\n // check whether move is to the bottom only and content scroll position is at the top\n if (offset > INITIAL_Y_POSITION && isContentScrollPositionAtTop()) {\n moveOffset.current = offset;\n animationId.current = requestAnimationFrame(() => {\n if (animationId.current !== undefined && bottomSheetReference.current !== null) {\n move(offset);\n }\n });\n }\n }\n };\n\n function onSwipeEnd(\n event: React.MouseEvent<HTMLDivElement> | React.TouchEvent<HTMLDivElement>,\n ): void {\n // stop moving component\n cancelAnimationFrame(animationId.current);\n setPressed(false);\n // check whether move down is strong enough\n // and content scroll position is at the top to close the component\n if (moveOffset.current > MOVE_OFFSET_THRESHOLD && isContentScrollPositionAtTop()) {\n close(event);\n }\n // otherwise move component back to default (initial) position\n else {\n move(INITIAL_Y_POSITION);\n }\n moveOffset.current = INITIAL_Y_POSITION;\n }\n\n function isContentScrollPositionAtTop(): boolean {\n return (\n contentReference?.current?.scrollTop !== undefined &&\n contentReference.current.scrollTop <= CONTENT_SCROLL_THRESHOLD\n );\n }\n\n /**\n * Calculates how hard user moves component,\n * result value used to determine whether to hide component or re-position to default state\n *\n * @param afterMoveYCoordinate\n */\n function calculateOffsetAfterMove(afterMoveYCoordinate: number): number {\n return afterMoveYCoordinate - initialYCoordinate.current;\n }\n\n /**\n * Set `max-height` for content part (in order to keep it scrollable for content overflow cases) of the component\n * and ensures space for safe zone (32px) at the top.\n */\n function setContentMaxHeight(): CSSProperties {\n const safeZoneHeight = '64px';\n const topbarHeight = '32px';\n const windowHight: number = isServerSide() ? 0 : window.innerHeight;\n /**\n * Calculate _real_ height of the screen (taking into account parts of browser interface).\n *\n * See https://css-tricks.com/the-trick-to-viewport-units-on-mobile for more details.\n */\n const screenHeight = `${windowHight * 0.01 * 100}px`;\n return {\n maxHeight: `calc(${screenHeight} - ${safeZoneHeight} - ${topbarHeight})`,\n };\n }\n\n const is400Zoom = useMedia(`(max-width: ${Breakpoint.EXTRA_SMALL}px)`);\n\n const overlayId = useContext(OverlayIdContext);\n\n return is400Zoom ? (\n <Drawer\n aria-labelledby={props['aria-labelledby']}\n aria-label={props['aria-label']}\n role={role}\n open={props.open}\n className={props.className}\n onClose={close}\n >\n {props.children}\n </Drawer>\n ) : (\n <Dimmer open={props.open} fadeContentOnEnter fadeContentOnExit onClose={close}>\n <SlidingPanel\n ref={bottomSheetReference}\n open={props.open}\n position={Position.BOTTOM}\n className={clsx('np-bottom-sheet', props.className)}\n >\n <div\n id={overlayId}\n aria-labelledby={props['aria-labelledby'] || undefined}\n aria-label={props['aria-label'] || undefined}\n role={role}\n aria-modal\n onTouchStart={onSwipeStart}\n onTouchMove={onSwipeMove}\n onTouchEnd={onSwipeEnd}\n onMouseDown={onSwipeStart}\n onMouseMove={onSwipeMove}\n onMouseUp={onSwipeEnd}\n >\n <div ref={topBarReference} className=\"np-bottom-sheet--top-bar\">\n <div className=\"np-bottom-sheet--handler\" />\n <CloseButton size=\"sm\" className=\"sr-only np-bottom-sheet--close-btn\" onClick={close} />\n </div>\n <div\n ref={contentReference}\n style={setContentMaxHeight()}\n className=\"np-bottom-sheet--content\"\n >\n {props.children}\n </div>\n </div>\n </SlidingPanel>\n </Dimmer>\n );\n};\n\nexport default BottomSheet;\n"],"names":["INITIAL_Y_POSITION","CONTENT_SCROLL_THRESHOLD","MOVE_OFFSET_THRESHOLD","BottomSheet","role","props","bottomSheetReference","useRef","topBarReference","contentReference","pressed","setPressed","useState","animationId","moveOffset","initialYCoordinate","useConditionalListener","attachListener","open","isServerSide","callback","current","classList","isContentScrollPositionAtTop","add","remove","eventType","parent","undefined","document","move","newHeight","style","transform","close","event","removeProperty","onClose","onSwipeStart","touches","clientY","onSwipeMove","offset","calculateOffsetAfterMove","requestAnimationFrame","onSwipeEnd","cancelAnimationFrame","scrollTop","afterMoveYCoordinate","setContentMaxHeight","safeZoneHeight","topbarHeight","windowHight","window","innerHeight","screenHeight","maxHeight","is400Zoom","useMedia","Breakpoint","EXTRA_SMALL","overlayId","useContext","OverlayIdContext","_jsx","Drawer","className","children","Dimmer","fadeContentOnEnter","fadeContentOnExit","SlidingPanel","ref","position","Position","BOTTOM","clsx","_jsxs","id","onTouchStart","onTouchMove","onTouchEnd","onMouseDown","onMouseMove","onMouseUp","CloseButton","size","onClick"],"mappings":";;;;;;;;;;;;;;;AAuBA,MAAMA,kBAAkB,GAAG,CAAC;AAE5B,MAAMC,wBAAwB,GAAG,CAAC;AAElC,MAAMC,qBAAqB,GAAG,EAAE;AAUhC;;;AAGG;AACH,MAAMC,WAAW,GAAGA,CAAC;AAAEC,EAAAA,IAAI,GAAG,QAAQ;EAAE,GAAGC;AAAK,CAAoB,KAAI;AACtE,EAAA,MAAMC,oBAAoB,GAAGC,MAAM,CAAiB,IAAI,CAAC;AACzD,EAAA,MAAMC,eAAe,GAAGD,MAAM,CAAiB,IAAI,CAAC;AACpD,EAAA,MAAME,gBAAgB,GAAGF,MAAM,CAAiB,IAAI,CAAC;EAErD,MAAM,CAACG,OAAO,EAAEC,UAAU,CAAC,GAAGC,QAAQ,CAAU,KAAK,CAAC;AAEtD;;;;AAIG;AACH,EAAA,MAAMC,WAAW,GAAGN,MAAM,CAAS,CAAC,CAAC;AAErC;;;;;AAKG;AACH,EAAA,MAAMO,UAAU,GAAGP,MAAM,CAAS,CAAC,CAAC;AACpC,EAAA,MAAMQ,kBAAkB,GAAGR,MAAM,CAAS,CAAC,CAAC;AAE5C;AACAS,EAAAA,sBAAsB,CAAC;IACrBC,cAAc,EAAEZ,KAAK,CAACa,IAAI,IAAI,CAACC,YAAY,EAAE;IAC7CC,QAAQ,EAAEA,MAAK;AACb,MAAA,IAAIZ,eAAe,CAACa,OAAO,KAAK,IAAI,EAAE;QACpC,MAAM;AAAEC,UAAAA;SAAW,GAAGd,eAAe,CAACa,OAAO;AAC7C,QAAA,IAAI,CAACE,4BAA4B,EAAE,EAAE;AACnCD,UAAAA,SAAS,CAACE,GAAG,CAAC,kCAAkC,CAAC;AACnD,QAAA,CAAC,MAAM;AACLF,UAAAA,SAAS,CAACG,MAAM,CAAC,kCAAkC,CAAC;AACtD,QAAA;AACF,MAAA;IACF,CAAC;AACDC,IAAAA,SAAS,EAAE,QAAQ;AACnBC,IAAAA,MAAM,EAAER,YAAY,EAAE,GAAGS,SAAS,GAAGC;AACtC,GAAA,CAAC;EAEF,SAASC,IAAIA,CAACC,SAAiB,EAAA;AAC7B,IAAA,IAAIzB,oBAAoB,CAACe,OAAO,KAAK,IAAI,EAAE;MACzCf,oBAAoB,CAACe,OAAO,CAACW,KAAK,CAACC,SAAS,GAAG,CAAA,WAAA,EAAcF,SAAS,CAAA,GAAA,CAAK;AAC7E,IAAA;AACF,EAAA;EAEA,SAASG,KAAKA,CAACC,KAA6B,EAAA;IAC1CxB,UAAU,CAAC,KAAK,CAAC;IACjBG,UAAU,CAACO,OAAO,GAAGrB,kBAAkB;AACvC,IAAA,IAAIM,oBAAoB,CAACe,OAAO,KAAK,IAAI,EAAE;MACzCf,oBAAoB,CAACe,OAAO,CAACW,KAAK,CAACI,cAAc,CAAC,WAAW,CAAC;AAChE,IAAA;IACA,IAAI/B,KAAK,CAACgC,OAAO,EAAE;AACjBhC,MAAAA,KAAK,CAACgC,OAAO,CAACF,KAAK,CAAC;AACtB,IAAA;AACF,EAAA;EAEA,MAAMG,YAAY,GAChBH,KAA0E,IAClE;AACRpB,IAAAA,kBAAkB,CAACM,OAAO,GAAG,CAAC,SAAS,IAAIc,KAAK,GAAGA,KAAK,CAACI,OAAO,CAAC,CAAC,CAAC,GAAGJ,KAAK,EAAEK,OAAO;IACpF7B,UAAU,CAAC,IAAI,CAAC;EAClB,CAAC;EAED,MAAM8B,WAAW,GACfN,KAA0E,IAClE;AACR,IAAA,IAAIzB,OAAO,EAAE;MACX,MAAM;AAAE8B,QAAAA;AAAO,OAAE,GAAG,SAAS,IAAIL,KAAK,GAAGA,KAAK,CAACI,OAAO,CAAC,CAAC,CAAC,GAAGJ,KAAK;AAEjE,MAAA,MAAMO,MAAM,GAAGC,wBAAwB,CAACH,OAAO,CAAC;AAChD;AACA,MAAA,IAAIE,MAAM,GAAG1C,kBAAkB,IAAIuB,4BAA4B,EAAE,EAAE;QACjET,UAAU,CAACO,OAAO,GAAGqB,MAAM;AAC3B7B,QAAAA,WAAW,CAACQ,OAAO,GAAGuB,qBAAqB,CAAC,MAAK;UAC/C,IAAI/B,WAAW,CAACQ,OAAO,KAAKO,SAAS,IAAItB,oBAAoB,CAACe,OAAO,KAAK,IAAI,EAAE;YAC9ES,IAAI,CAACY,MAAM,CAAC;AACd,UAAA;AACF,QAAA,CAAC,CAAC;AACJ,MAAA;AACF,IAAA;EACF,CAAC;EAED,SAASG,UAAUA,CACjBV,KAA0E,EAAA;AAE1E;AACAW,IAAAA,oBAAoB,CAACjC,WAAW,CAACQ,OAAO,CAAC;IACzCV,UAAU,CAAC,KAAK,CAAC;AACjB;AACA;IACA,IAAIG,UAAU,CAACO,OAAO,GAAGnB,qBAAqB,IAAIqB,4BAA4B,EAAE,EAAE;MAChFW,KAAK,CAACC,KAAK,CAAC;AACd,IAAA;AACA;SACK;MACHL,IAAI,CAAC9B,kBAAkB,CAAC;AAC1B,IAAA;IACAc,UAAU,CAACO,OAAO,GAAGrB,kBAAkB;AACzC,EAAA;EAEA,SAASuB,4BAA4BA,GAAA;AACnC,IAAA,OACEd,gBAAgB,EAAEY,OAAO,EAAE0B,SAAS,KAAKnB,SAAS,IAClDnB,gBAAgB,CAACY,OAAO,CAAC0B,SAAS,IAAI9C,wBAAwB;AAElE,EAAA;AAEA;;;;;AAKG;EACH,SAAS0C,wBAAwBA,CAACK,oBAA4B,EAAA;AAC5D,IAAA,OAAOA,oBAAoB,GAAGjC,kBAAkB,CAACM,OAAO;AAC1D,EAAA;AAEA;;;AAGG;EACH,SAAS4B,mBAAmBA,GAAA;IAC1B,MAAMC,cAAc,GAAG,MAAM;IAC7B,MAAMC,YAAY,GAAG,MAAM;IAC3B,MAAMC,WAAW,GAAWjC,YAAY,EAAE,GAAG,CAAC,GAAGkC,MAAM,CAACC,WAAW;AACnE;;;;AAIG;IACH,MAAMC,YAAY,GAAG,CAAA,EAAGH,WAAW,GAAG,IAAI,GAAG,GAAG,CAAA,EAAA,CAAI;IACpD,OAAO;AACLI,MAAAA,SAAS,EAAE,CAAA,KAAA,EAAQD,YAAY,CAAA,GAAA,EAAML,cAAc,MAAMC,YAAY,CAAA,CAAA;KACtE;AACH,EAAA;EAEA,MAAMM,SAAS,GAAGC,QAAQ,CAAC,eAAeC,UAAU,CAACC,WAAW,CAAA,GAAA,CAAK,CAAC;AAEtE,EAAA,MAAMC,SAAS,GAAGC,UAAU,CAACC,gBAAgB,CAAC;AAE9C,EAAA,OAAON,SAAS,gBACdO,GAAA,CAACC,MAAM,EAAA;IACL,iBAAA,EAAiB5D,KAAK,CAAC,iBAAiB,CAAE;IAC1C,YAAA,EAAYA,KAAK,CAAC,YAAY,CAAE;AAChCD,IAAAA,IAAI,EAAEA,IAAK;IACXc,IAAI,EAAEb,KAAK,CAACa,IAAK;IACjBgD,SAAS,EAAE7D,KAAK,CAAC6D,SAAU;AAC3B7B,IAAAA,OAAO,EAAEH,KAAM;IAAAiC,QAAA,EAEd9D,KAAK,CAAC8D;AAAQ,GACT,CAAC,gBAETH,GAAA,CAACI,MAAM,EAAA;IAAClD,IAAI,EAAEb,KAAK,CAACa,IAAK;IAACmD,kBAAkB,EAAA,IAAA;IAACC,iBAAiB,EAAA,IAAA;AAACjC,IAAAA,OAAO,EAAEH,KAAM;IAAAiC,QAAA,eAC5EH,GAAA,CAACO,YAAY,EAAA;AACXC,MAAAA,GAAG,EAAElE,oBAAqB;MAC1BY,IAAI,EAAEb,KAAK,CAACa,IAAK;MACjBuD,QAAQ,EAAEC,QAAQ,CAACC,MAAO;MAC1BT,SAAS,EAAEU,IAAI,CAAC,iBAAiB,EAAEvE,KAAK,CAAC6D,SAAS,CAAE;AAAAC,MAAAA,QAAA,eAEpDU,IAAA,CAAA,KAAA,EAAA;AACEC,QAAAA,EAAE,EAAEjB,SAAU;AACd,QAAA,iBAAA,EAAiBxD,KAAK,CAAC,iBAAiB,CAAC,IAAIuB,SAAU;AACvD,QAAA,YAAA,EAAYvB,KAAK,CAAC,YAAY,CAAC,IAAIuB,SAAU;AAC7CxB,QAAAA,IAAI,EAAEA,IAAK;QACX,YAAA,EAAA,IAAU;AACV2E,QAAAA,YAAY,EAAEzC,YAAa;AAC3B0C,QAAAA,WAAW,EAAEvC,WAAY;AACzBwC,QAAAA,UAAU,EAAEpC,UAAW;AACvBqC,QAAAA,WAAW,EAAE5C,YAAa;AAC1B6C,QAAAA,WAAW,EAAE1C,WAAY;AACzB2C,QAAAA,SAAS,EAAEvC,UAAW;AAAAsB,QAAAA,QAAA,gBAEtBU,IAAA,CAAA,KAAA,EAAA;AAAKL,UAAAA,GAAG,EAAEhE,eAAgB;AAAC0D,UAAAA,SAAS,EAAC,0BAA0B;AAAAC,UAAAA,QAAA,gBAC7DH,GAAA,CAAA,KAAA,EAAA;AAAKE,YAAAA,SAAS,EAAC;AAA0B,WAAA,CACzC,eAAAF,GAAA,CAACqB,WAAW,EAAA;AAACC,YAAAA,IAAI,EAAC,IAAI;AAACpB,YAAAA,SAAS,EAAC,oCAAoC;AAACqB,YAAAA,OAAO,EAAErD;AAAM,WAAA,CACvF;SAAK,CACL,eAAA8B,GAAA,CAAA,KAAA,EAAA;AACEQ,UAAAA,GAAG,EAAE/D,gBAAiB;UACtBuB,KAAK,EAAEiB,mBAAmB,EAAG;AAC7BiB,UAAAA,SAAS,EAAC,0BAA0B;UAAAC,QAAA,EAEnC9D,KAAK,CAAC8D;AAAQ,SACZ,CACP;OAAK;KACO;AAChB,GAAQ,CACT;AACH;;"}
|
package/build/i18n/en.json
CHANGED
|
@@ -38,6 +38,7 @@
|
|
|
38
38
|
"neptune.PhoneNumberInput.phoneNumberPrefix": "Prefix",
|
|
39
39
|
"neptune.Select.searchPlaceholder": "Search...",
|
|
40
40
|
"neptune.SelectInput.noResultsFound": "No results found",
|
|
41
|
+
"neptune.Snackbar.escapeDismissHint": "Press Escape to dismiss.",
|
|
41
42
|
"neptune.StatusIcon.iconLabel.error": "Error:",
|
|
42
43
|
"neptune.StatusIcon.iconLabel.information": "Information:",
|
|
43
44
|
"neptune.StatusIcon.iconLabel.pending": "Pending:",
|
package/build/i18n/en.json.js
CHANGED
|
@@ -42,6 +42,7 @@ var en = {
|
|
|
42
42
|
"neptune.PhoneNumberInput.phoneNumberPrefix": "Prefix",
|
|
43
43
|
"neptune.Select.searchPlaceholder": "Search...",
|
|
44
44
|
"neptune.SelectInput.noResultsFound": "No results found",
|
|
45
|
+
"neptune.Snackbar.escapeDismissHint": "Press Escape to dismiss.",
|
|
45
46
|
"neptune.StatusIcon.iconLabel.error": "Error:",
|
|
46
47
|
"neptune.StatusIcon.iconLabel.information": "Information:",
|
|
47
48
|
"neptune.StatusIcon.iconLabel.pending": "Pending:",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"en.json.js","sources":[],"sourcesContent":[],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"en.json.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
package/build/i18n/en.json.mjs
CHANGED
|
@@ -38,6 +38,7 @@ var en = {
|
|
|
38
38
|
"neptune.PhoneNumberInput.phoneNumberPrefix": "Prefix",
|
|
39
39
|
"neptune.Select.searchPlaceholder": "Search...",
|
|
40
40
|
"neptune.SelectInput.noResultsFound": "No results found",
|
|
41
|
+
"neptune.Snackbar.escapeDismissHint": "Press Escape to dismiss.",
|
|
41
42
|
"neptune.StatusIcon.iconLabel.error": "Error:",
|
|
42
43
|
"neptune.StatusIcon.iconLabel.information": "Information:",
|
|
43
44
|
"neptune.StatusIcon.iconLabel.pending": "Pending:",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"en.json.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"en.json.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
package/build/index.js
CHANGED
|
@@ -105,8 +105,8 @@ var SegmentedControl = require('./SegmentedControl/SegmentedControl.js');
|
|
|
105
105
|
var Select = require('./_deprecated/Select/Select.js');
|
|
106
106
|
var SentimentSurface = require('./SentimentSurface/SentimentSurface.js');
|
|
107
107
|
var SlidingPanel = require('./SlidingPanel/SlidingPanel.js');
|
|
108
|
-
var SnackbarContext = require('./Snackbar/SnackbarContext.js');
|
|
109
|
-
var SnackbarProvider = require('./Snackbar/SnackbarProvider.js');
|
|
108
|
+
var SnackbarContext = require('./Prompt/Snackbar/SnackbarContext.js');
|
|
109
|
+
var SnackbarProvider = require('./Prompt/Snackbar/SnackbarProvider.js');
|
|
110
110
|
var StatusIcon = require('./StatusIcon/StatusIcon.js');
|
|
111
111
|
var Stepper = require('./Stepper/Stepper.js');
|
|
112
112
|
var Sticky = require('./Sticky/Sticky.js');
|
|
@@ -129,7 +129,7 @@ require('@transferwise/neptune-validation');
|
|
|
129
129
|
var useDirection = require('./common/hooks/useDirection/useDirection.js');
|
|
130
130
|
var useLayout = require('./common/hooks/useLayout/useLayout.js');
|
|
131
131
|
var useScreenSize = require('./common/hooks/useScreenSize.js');
|
|
132
|
-
var useSnackbar = require('./Snackbar/useSnackbar.js');
|
|
132
|
+
var useSnackbar = require('./Prompt/Snackbar/useSnackbar.js');
|
|
133
133
|
var neptuneTokens = require('@transferwise/neptune-tokens');
|
|
134
134
|
var documentIosClick = require('./common/DomHelpers/documentIosClick.js');
|
|
135
135
|
var theme = require('./common/theme.js');
|
package/build/index.mjs
CHANGED
|
@@ -103,8 +103,8 @@ export { default as SegmentedControl } from './SegmentedControl/SegmentedControl
|
|
|
103
103
|
export { default as Select } from './_deprecated/Select/Select.mjs';
|
|
104
104
|
export { default as SentimentSurface } from './SentimentSurface/SentimentSurface.mjs';
|
|
105
105
|
export { default as SlidingPanel } from './SlidingPanel/SlidingPanel.mjs';
|
|
106
|
-
export { SnackbarConsumer, SnackbarContext } from './Snackbar/SnackbarContext.mjs';
|
|
107
|
-
export { default as SnackbarProvider } from './Snackbar/SnackbarProvider.mjs';
|
|
106
|
+
export { SnackbarConsumer, SnackbarContext } from './Prompt/Snackbar/SnackbarContext.mjs';
|
|
107
|
+
export { default as SnackbarProvider } from './Prompt/Snackbar/SnackbarProvider.mjs';
|
|
108
108
|
export { default as StatusIcon } from './StatusIcon/StatusIcon.mjs';
|
|
109
109
|
export { default as Stepper } from './Stepper/Stepper.mjs';
|
|
110
110
|
export { default as Sticky } from './Sticky/Sticky.mjs';
|
|
@@ -127,7 +127,7 @@ import '@transferwise/neptune-validation';
|
|
|
127
127
|
export { useDirection } from './common/hooks/useDirection/useDirection.mjs';
|
|
128
128
|
export { useLayout } from './common/hooks/useLayout/useLayout.mjs';
|
|
129
129
|
export { useScreenSize } from './common/hooks/useScreenSize.mjs';
|
|
130
|
-
export { default as useSnackbar } from './Snackbar/useSnackbar.mjs';
|
|
130
|
+
export { default as useSnackbar } from './Prompt/Snackbar/useSnackbar.mjs';
|
|
131
131
|
export { Breakpoint } from '@transferwise/neptune-tokens';
|
|
132
132
|
export { isBrowser, isServerSide } from './common/DomHelpers/documentIosClick.mjs';
|
|
133
133
|
export { Theme } from './common/theme.mjs';
|
package/build/main.css
CHANGED
|
@@ -26948,15 +26948,14 @@ a[data-toggle="tooltip"] {
|
|
|
26948
26948
|
color: var(--color-white);
|
|
26949
26949
|
}
|
|
26950
26950
|
.np-icon-button-minimal-default {
|
|
26951
|
-
color: var(--color-interactive-primary);
|
|
26952
|
-
background-color: var(--color-background-screen);
|
|
26951
|
+
color: var(--color-sentiment-content-primary, var(--color-interactive-primary));
|
|
26953
26952
|
background-color: transparent;
|
|
26954
26953
|
}
|
|
26955
26954
|
.np-icon-button-minimal-default:not(.disabled):not(:disabled):hover {
|
|
26956
|
-
background-color: var(--color-background-screen-hover);
|
|
26955
|
+
background-color: var(--color-sentiment-interactive-secondary-neutral-hover, var(--color-background-screen-hover));
|
|
26957
26956
|
}
|
|
26958
26957
|
.np-icon-button-minimal-default:not(.disabled):not(:disabled):active {
|
|
26959
|
-
background-color: var(--color-background-screen-active);
|
|
26958
|
+
background-color: var(--color-sentiment-interactive-secondary-neutral-active, var(--color-background-screen-active));
|
|
26960
26959
|
}
|
|
26961
26960
|
.np-icon-button-secondary-default {
|
|
26962
26961
|
color: var(--color-sentiment-content-primary, var(--color-interactive-primary));
|
|
@@ -31414,6 +31413,140 @@ button.np-link {
|
|
|
31414
31413
|
overflow: visible;
|
|
31415
31414
|
}
|
|
31416
31415
|
}
|
|
31416
|
+
.wds-Snackbar {
|
|
31417
|
+
display: flex;
|
|
31418
|
+
justify-content: center;
|
|
31419
|
+
box-sizing: border-box;
|
|
31420
|
+
padding-inline: var(--size-16);
|
|
31421
|
+
padding-block-end: calc(var(--size-16) + env(safe-area-inset-bottom));
|
|
31422
|
+
position: fixed;
|
|
31423
|
+
inset-block-end: 0;
|
|
31424
|
+
inset-inline: 0;
|
|
31425
|
+
z-index: 1060;
|
|
31426
|
+
}
|
|
31427
|
+
@media (min-width: 600px) {
|
|
31428
|
+
.wds-Snackbar {
|
|
31429
|
+
padding-block-end: var(--size-24);
|
|
31430
|
+
}
|
|
31431
|
+
}
|
|
31432
|
+
.wds-Snackbar--swipe-dismiss {
|
|
31433
|
+
transition: transform var(--Snackbar-exit-duration) cubic-bezier(1, 0, 1, 1);
|
|
31434
|
+
}
|
|
31435
|
+
.wds-Snackbar--swipe-settle {
|
|
31436
|
+
transition: transform var(--Snackbar-exit-duration) cubic-bezier(0, 0, 0, 1);
|
|
31437
|
+
}
|
|
31438
|
+
.wds-Snackbar-container {
|
|
31439
|
+
--Prompt-border-radius: var(--radius-medium);
|
|
31440
|
+
--Prompt-gap: var(--size-8);
|
|
31441
|
+
--Prompt-padding-x: var(--size-12);
|
|
31442
|
+
--Prompt-padding-y: var(--size-12);
|
|
31443
|
+
box-sizing: border-box;
|
|
31444
|
+
max-inline-size: 480px;
|
|
31445
|
+
text-align: start;
|
|
31446
|
+
cursor: grab;
|
|
31447
|
+
touch-action: pan-x pinch-zoom;
|
|
31448
|
+
}
|
|
31449
|
+
.wds-Snackbar-container .wds-prompt__content-wrapper--with-dismiss {
|
|
31450
|
+
grid-template-columns: auto minmax(0, 1fr);
|
|
31451
|
+
}
|
|
31452
|
+
@media (min-width: 600px) {
|
|
31453
|
+
.wds-Snackbar-container .wds-prompt__content-wrapper--with-dismiss {
|
|
31454
|
+
grid-template-columns: auto minmax(0, 1fr) auto;
|
|
31455
|
+
}
|
|
31456
|
+
}
|
|
31457
|
+
.wds-Snackbar-container .wds-prompt__media-wrapper {
|
|
31458
|
+
display: flex;
|
|
31459
|
+
align-items: center;
|
|
31460
|
+
min-block-size: max(var(--size-32), 1lh);
|
|
31461
|
+
padding-block-start: 0;
|
|
31462
|
+
color: var(--color-sentiment-content-primary);
|
|
31463
|
+
}
|
|
31464
|
+
.wds-Snackbar-container .wds-prompt__media-wrapper:has(+ .wds-Snackbar__content .wds-Snackbar__action) {
|
|
31465
|
+
min-block-size: max(var(--size-32), calc(1lh + var(--size-5) * 2));
|
|
31466
|
+
}
|
|
31467
|
+
.wds-Snackbar__media-asset {
|
|
31468
|
+
display: flex;
|
|
31469
|
+
}
|
|
31470
|
+
.wds-Snackbar__media-asset svg {
|
|
31471
|
+
inline-size: var(--size-24);
|
|
31472
|
+
block-size: var(--size-24);
|
|
31473
|
+
}
|
|
31474
|
+
.wds-Snackbar__process-indicator .process-circle {
|
|
31475
|
+
stroke: currentColor;
|
|
31476
|
+
}
|
|
31477
|
+
.wds-Snackbar-container .wds-prompt__dismiss {
|
|
31478
|
+
display: none;
|
|
31479
|
+
align-self: flex-start;
|
|
31480
|
+
margin-block-start: calc(var(--size-4) - 1px);
|
|
31481
|
+
}
|
|
31482
|
+
@media (min-width: 600px) {
|
|
31483
|
+
.wds-Snackbar-container .wds-prompt__dismiss {
|
|
31484
|
+
display: flex;
|
|
31485
|
+
}
|
|
31486
|
+
}
|
|
31487
|
+
.wds-Snackbar__action {
|
|
31488
|
+
flex-shrink: 0;
|
|
31489
|
+
}
|
|
31490
|
+
.wds-Snackbar__content {
|
|
31491
|
+
display: flex;
|
|
31492
|
+
align-items: flex-start;
|
|
31493
|
+
gap: var(--size-8);
|
|
31494
|
+
flex: 1 0 0;
|
|
31495
|
+
min-block-size: var(--size-32);
|
|
31496
|
+
min-inline-size: 0;
|
|
31497
|
+
}
|
|
31498
|
+
.wds-Snackbar__message {
|
|
31499
|
+
display: flex;
|
|
31500
|
+
flex-direction: column;
|
|
31501
|
+
justify-content: center;
|
|
31502
|
+
inline-size: auto;
|
|
31503
|
+
flex: 1 0 0;
|
|
31504
|
+
min-inline-size: 0;
|
|
31505
|
+
align-self: stretch;
|
|
31506
|
+
}
|
|
31507
|
+
.wds-Snackbar__body {
|
|
31508
|
+
display: block;
|
|
31509
|
+
}
|
|
31510
|
+
.wds-Snackbar-container-appear,
|
|
31511
|
+
.wds-Snackbar-container-enter {
|
|
31512
|
+
opacity: 0;
|
|
31513
|
+
transform: translateY(80px) scale(0.5);
|
|
31514
|
+
}
|
|
31515
|
+
.wds-Snackbar-container-appear-active,
|
|
31516
|
+
.wds-Snackbar-container-enter-active {
|
|
31517
|
+
opacity: 1;
|
|
31518
|
+
transform: translateY(0) scale(1);
|
|
31519
|
+
transition: opacity 150ms linear, transform var(--Snackbar-enter-duration) cubic-bezier(0, 0, 0, 1);
|
|
31520
|
+
}
|
|
31521
|
+
.wds-Snackbar-container-exit {
|
|
31522
|
+
opacity: 1;
|
|
31523
|
+
transform: translateY(0) scale(1);
|
|
31524
|
+
}
|
|
31525
|
+
.wds-Snackbar-container-exit-active {
|
|
31526
|
+
opacity: 0;
|
|
31527
|
+
transform: translateY(80px) scale(0.5);
|
|
31528
|
+
transition: opacity 50ms linear 50ms, transform var(--Snackbar-exit-duration) cubic-bezier(1, 0, 1, 1);
|
|
31529
|
+
}
|
|
31530
|
+
@media (prefers-reduced-motion: reduce) {
|
|
31531
|
+
.wds-Snackbar--swipe-dismiss,
|
|
31532
|
+
.wds-Snackbar--swipe-settle {
|
|
31533
|
+
transition: none;
|
|
31534
|
+
}
|
|
31535
|
+
.wds-Snackbar-container-appear,
|
|
31536
|
+
.wds-Snackbar-container-appear-active,
|
|
31537
|
+
.wds-Snackbar-container-enter,
|
|
31538
|
+
.wds-Snackbar-container-enter-active,
|
|
31539
|
+
.wds-Snackbar-container-exit {
|
|
31540
|
+
opacity: 1;
|
|
31541
|
+
transform: none;
|
|
31542
|
+
transition: none;
|
|
31543
|
+
}
|
|
31544
|
+
.wds-Snackbar-container-exit-active {
|
|
31545
|
+
opacity: 0;
|
|
31546
|
+
transform: none;
|
|
31547
|
+
transition: none;
|
|
31548
|
+
}
|
|
31549
|
+
}
|
|
31417
31550
|
.wds-expander-toggle {
|
|
31418
31551
|
align-self: flex-start;
|
|
31419
31552
|
flex-shrink: 0;
|
|
@@ -31516,77 +31649,6 @@ button.np-link {
|
|
|
31516
31649
|
[dir="rtl"] .np-theme-personal .sliding-panel.sliding-panel--border-left {
|
|
31517
31650
|
box-shadow: inset 1px 0 0 0 var(--color-border-neutral);
|
|
31518
31651
|
}
|
|
31519
|
-
.snackbar {
|
|
31520
|
-
text-align: center;
|
|
31521
|
-
position: fixed;
|
|
31522
|
-
inset-block-end: 0;
|
|
31523
|
-
inset-inline-start: 0;
|
|
31524
|
-
inset-inline-end: 0;
|
|
31525
|
-
z-index: 1060;
|
|
31526
|
-
}
|
|
31527
|
-
.snackbar__text {
|
|
31528
|
-
background: #37517e;
|
|
31529
|
-
color: #ffffff;
|
|
31530
|
-
display: inline-flex;
|
|
31531
|
-
border-radius: 2px;
|
|
31532
|
-
box-shadow: 0 2px 4px rgba(0, 0, 0, 0.25);
|
|
31533
|
-
align-items: center;
|
|
31534
|
-
justify-content: space-between;
|
|
31535
|
-
text-align: start;
|
|
31536
|
-
font-size: var(--wds-font-size-body);
|
|
31537
|
-
margin-block: 0;
|
|
31538
|
-
margin-inline: var(--size-16);
|
|
31539
|
-
padding-block: var(--size-8);
|
|
31540
|
-
padding-inline: var(--size-16);
|
|
31541
|
-
inline-size: calc(100% - var(--size-32));
|
|
31542
|
-
transition: 400ms cubic-bezier(0.215, 0.61, 0.355, 1);
|
|
31543
|
-
}
|
|
31544
|
-
.np-theme-personal .snackbar__text {
|
|
31545
|
-
box-shadow: 0 2px 4px 0 rgba(69, 71, 69, 0.35);
|
|
31546
|
-
position: relative;
|
|
31547
|
-
background: var(--color-contrast-theme);
|
|
31548
|
-
border-radius: var(--radius-small);
|
|
31549
|
-
color: var(--color-contrast-overlay);
|
|
31550
|
-
}
|
|
31551
|
-
.np-theme-personal .snackbar__text::after {
|
|
31552
|
-
display: block;
|
|
31553
|
-
border-radius: inherit;
|
|
31554
|
-
block-size: 100%;
|
|
31555
|
-
inline-size: 100%;
|
|
31556
|
-
content: "";
|
|
31557
|
-
position: absolute;
|
|
31558
|
-
inset-inline-start: 0;
|
|
31559
|
-
inset-block-start: 0;
|
|
31560
|
-
z-index: -1;
|
|
31561
|
-
background-color: var(--color-background-neutral);
|
|
31562
|
-
}
|
|
31563
|
-
.np-theme-personal--dark .snackbar__text,
|
|
31564
|
-
.np-theme-personal--forest-green .snackbar__text {
|
|
31565
|
-
box-shadow: none;
|
|
31566
|
-
}
|
|
31567
|
-
@media (min-width: 600px) {
|
|
31568
|
-
.snackbar__text {
|
|
31569
|
-
inline-size: auto;
|
|
31570
|
-
max-inline-size: 600px;
|
|
31571
|
-
}
|
|
31572
|
-
}
|
|
31573
|
-
.snackbar__text__action {
|
|
31574
|
-
flex-shrink: 0;
|
|
31575
|
-
margin-inline-start: var(--size-16);
|
|
31576
|
-
}
|
|
31577
|
-
.snackbar__text-container-enter,
|
|
31578
|
-
.snackbar__text-container-exit {
|
|
31579
|
-
transform: translateY(calc(100% + 10px));
|
|
31580
|
-
}
|
|
31581
|
-
.snackbar__text-container-enter-active {
|
|
31582
|
-
transform: translateY(-16px);
|
|
31583
|
-
transform: translateY(calc(-16px - env(safe-area-inset-bottom)));
|
|
31584
|
-
}
|
|
31585
|
-
@media (min-width: 600px) {
|
|
31586
|
-
.snackbar__text-container-enter-active {
|
|
31587
|
-
transform: translateY(-24px);
|
|
31588
|
-
}
|
|
31589
|
-
}
|
|
31590
31652
|
.status-circle.negative,
|
|
31591
31653
|
.status-circle.error {
|
|
31592
31654
|
background-color: var(--color-sentiment-interactive-primary, var(--color-sentiment-negative));
|
|
@@ -35,15 +35,14 @@
|
|
|
35
35
|
color: var(--color-white);
|
|
36
36
|
}
|
|
37
37
|
.np-icon-button-minimal-default {
|
|
38
|
-
color: var(--color-interactive-primary);
|
|
39
|
-
background-color: var(--color-background-screen);
|
|
38
|
+
color: var(--color-sentiment-content-primary, var(--color-interactive-primary));
|
|
40
39
|
background-color: transparent;
|
|
41
40
|
}
|
|
42
41
|
.np-icon-button-minimal-default:not(.disabled):not(:disabled):hover {
|
|
43
|
-
background-color: var(--color-background-screen-hover);
|
|
42
|
+
background-color: var(--color-sentiment-interactive-secondary-neutral-hover, var(--color-background-screen-hover));
|
|
44
43
|
}
|
|
45
44
|
.np-icon-button-minimal-default:not(.disabled):not(:disabled):active {
|
|
46
|
-
background-color: var(--color-background-screen-active);
|
|
45
|
+
background-color: var(--color-sentiment-interactive-secondary-neutral-active, var(--color-background-screen-active));
|
|
47
46
|
}
|
|
48
47
|
.np-icon-button-secondary-default {
|
|
49
48
|
color: var(--color-sentiment-content-primary, var(--color-interactive-primary));
|
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
.wds-Snackbar {
|
|
2
|
+
display: flex;
|
|
3
|
+
justify-content: center;
|
|
4
|
+
box-sizing: border-box;
|
|
5
|
+
padding-inline: var(--size-16);
|
|
6
|
+
padding-block-end: calc(var(--size-16) + env(safe-area-inset-bottom));
|
|
7
|
+
position: fixed;
|
|
8
|
+
inset-block-end: 0;
|
|
9
|
+
inset-inline: 0;
|
|
10
|
+
z-index: 1060;
|
|
11
|
+
}
|
|
12
|
+
@media (min-width: 600px) {
|
|
13
|
+
.wds-Snackbar {
|
|
14
|
+
padding-block-end: var(--size-24);
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
.wds-Snackbar--swipe-dismiss {
|
|
18
|
+
transition: transform var(--Snackbar-exit-duration) cubic-bezier(1, 0, 1, 1);
|
|
19
|
+
}
|
|
20
|
+
.wds-Snackbar--swipe-settle {
|
|
21
|
+
transition: transform var(--Snackbar-exit-duration) cubic-bezier(0, 0, 0, 1);
|
|
22
|
+
}
|
|
23
|
+
.wds-Snackbar-container {
|
|
24
|
+
--Prompt-border-radius: var(--radius-medium);
|
|
25
|
+
--Prompt-gap: var(--size-8);
|
|
26
|
+
--Prompt-padding-x: var(--size-12);
|
|
27
|
+
--Prompt-padding-y: var(--size-12);
|
|
28
|
+
box-sizing: border-box;
|
|
29
|
+
max-inline-size: 480px;
|
|
30
|
+
text-align: start;
|
|
31
|
+
cursor: grab;
|
|
32
|
+
touch-action: pan-x pinch-zoom;
|
|
33
|
+
}
|
|
34
|
+
.wds-Snackbar-container .wds-prompt__content-wrapper--with-dismiss {
|
|
35
|
+
grid-template-columns: auto minmax(0, 1fr);
|
|
36
|
+
}
|
|
37
|
+
@media (min-width: 600px) {
|
|
38
|
+
.wds-Snackbar-container .wds-prompt__content-wrapper--with-dismiss {
|
|
39
|
+
grid-template-columns: auto minmax(0, 1fr) auto;
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
.wds-Snackbar-container .wds-prompt__media-wrapper {
|
|
43
|
+
display: flex;
|
|
44
|
+
align-items: center;
|
|
45
|
+
min-block-size: max(var(--size-32), 1lh);
|
|
46
|
+
padding-block-start: 0;
|
|
47
|
+
color: var(--color-sentiment-content-primary);
|
|
48
|
+
}
|
|
49
|
+
.wds-Snackbar-container .wds-prompt__media-wrapper:has(+ .wds-Snackbar__content .wds-Snackbar__action) {
|
|
50
|
+
min-block-size: max(var(--size-32), calc(1lh + var(--size-5) * 2));
|
|
51
|
+
}
|
|
52
|
+
.wds-Snackbar__media-asset {
|
|
53
|
+
display: flex;
|
|
54
|
+
}
|
|
55
|
+
.wds-Snackbar__media-asset svg {
|
|
56
|
+
inline-size: var(--size-24);
|
|
57
|
+
block-size: var(--size-24);
|
|
58
|
+
}
|
|
59
|
+
.wds-Snackbar__process-indicator .process-circle {
|
|
60
|
+
stroke: currentColor;
|
|
61
|
+
}
|
|
62
|
+
.wds-Snackbar-container .wds-prompt__dismiss {
|
|
63
|
+
display: none;
|
|
64
|
+
align-self: flex-start;
|
|
65
|
+
margin-block-start: calc(var(--size-4) - 1px);
|
|
66
|
+
}
|
|
67
|
+
@media (min-width: 600px) {
|
|
68
|
+
.wds-Snackbar-container .wds-prompt__dismiss {
|
|
69
|
+
display: flex;
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
.wds-Snackbar__action {
|
|
73
|
+
flex-shrink: 0;
|
|
74
|
+
}
|
|
75
|
+
.wds-Snackbar__content {
|
|
76
|
+
display: flex;
|
|
77
|
+
align-items: flex-start;
|
|
78
|
+
gap: var(--size-8);
|
|
79
|
+
flex: 1 0 0;
|
|
80
|
+
min-block-size: var(--size-32);
|
|
81
|
+
min-inline-size: 0;
|
|
82
|
+
}
|
|
83
|
+
.wds-Snackbar__message {
|
|
84
|
+
display: flex;
|
|
85
|
+
flex-direction: column;
|
|
86
|
+
justify-content: center;
|
|
87
|
+
inline-size: auto;
|
|
88
|
+
flex: 1 0 0;
|
|
89
|
+
min-inline-size: 0;
|
|
90
|
+
align-self: stretch;
|
|
91
|
+
}
|
|
92
|
+
.wds-Snackbar__body {
|
|
93
|
+
display: block;
|
|
94
|
+
}
|
|
95
|
+
.wds-Snackbar-container-appear,
|
|
96
|
+
.wds-Snackbar-container-enter {
|
|
97
|
+
opacity: 0;
|
|
98
|
+
transform: translateY(80px) scale(0.5);
|
|
99
|
+
}
|
|
100
|
+
.wds-Snackbar-container-appear-active,
|
|
101
|
+
.wds-Snackbar-container-enter-active {
|
|
102
|
+
opacity: 1;
|
|
103
|
+
transform: translateY(0) scale(1);
|
|
104
|
+
transition: opacity 150ms linear, transform var(--Snackbar-enter-duration) cubic-bezier(0, 0, 0, 1);
|
|
105
|
+
}
|
|
106
|
+
.wds-Snackbar-container-exit {
|
|
107
|
+
opacity: 1;
|
|
108
|
+
transform: translateY(0) scale(1);
|
|
109
|
+
}
|
|
110
|
+
.wds-Snackbar-container-exit-active {
|
|
111
|
+
opacity: 0;
|
|
112
|
+
transform: translateY(80px) scale(0.5);
|
|
113
|
+
transition: opacity 50ms linear 50ms, transform var(--Snackbar-exit-duration) cubic-bezier(1, 0, 1, 1);
|
|
114
|
+
}
|
|
115
|
+
@media (prefers-reduced-motion: reduce) {
|
|
116
|
+
.wds-Snackbar--swipe-dismiss,
|
|
117
|
+
.wds-Snackbar--swipe-settle {
|
|
118
|
+
transition: none;
|
|
119
|
+
}
|
|
120
|
+
.wds-Snackbar-container-appear,
|
|
121
|
+
.wds-Snackbar-container-appear-active,
|
|
122
|
+
.wds-Snackbar-container-enter,
|
|
123
|
+
.wds-Snackbar-container-enter-active,
|
|
124
|
+
.wds-Snackbar-container-exit {
|
|
125
|
+
opacity: 1;
|
|
126
|
+
transform: none;
|
|
127
|
+
transition: none;
|
|
128
|
+
}
|
|
129
|
+
.wds-Snackbar-container-exit-active {
|
|
130
|
+
opacity: 0;
|
|
131
|
+
transform: none;
|
|
132
|
+
transition: none;
|
|
133
|
+
}
|
|
134
|
+
}
|