import { Page } from 'puppeteer' import React from 'react' import { Alert, Box, Button, Notification, NotificationProvider, RadioGroup, TextAreaField, TextInputField, ToggleField, useNotifications, } from '../' import { HIDE_CONTROL, Story } from '../helpers/storybook' export default { title: 'Notification', component: Notification, parameters: { controls: { disable: true } }, } as const export const BasicUsage: Story = ({ closeTimeout, ...args }) => { const [open, setOpen] = React.useState(false) const handleOpen = () => setOpen(true) const handleClose = () => setOpen(false) return ( <> Message ) } BasicUsage.argTypes = { open: HIDE_CONTROL, closeTimeout: { name: 'Alert timeout (ms)' }, } BasicUsage.args = { closeTimeout: 3000, } BasicUsage.parameters = { controls: { disable: false }, beforeScreenshot: async (page: Page) => { await page.click('#open-notification') }, } export const TopLeft = (): React.ReactElement => { return ( Message ) } export const TopCenter = (): React.ReactElement => { return ( Message ) } export const TopRight = (): React.ReactElement => { return ( Message ) } export const BottomLeft = (): React.ReactElement => { return ( Message ) } export const BottomCenter = (): React.ReactElement => { return ( Message ) } const FIELDS = ['message', 'status', 'vertical', 'horizontal', 'closeTimeout'] const AddNotificationForm = () => { const { setNotification, clearNotification } = useNotifications() const keysRef = React.useRef([]) const addNotification = (event: React.FormEvent) => { event.preventDefault() const args: any = { canClose: event.currentTarget['canClose'].checked } for (const field of FIELDS) { const element = event.currentTarget[field] if (element.value) { args[field] = element.value } } if (args.closeTimeout) args.closeTimeout = parseInt(args.closeTimeout) * 1000 keysRef.current.push(setNotification(args)) } const clearAll = () => { keysRef.current.forEach(clearNotification) keysRef.current = [] } return ( ) } export const WithProvider = (): React.ReactElement => ( ) WithProvider.parameters = { storyshots: false }