UNPKG

@personio/ui-docs

Version:

240 lines (216 loc) 5.58 kB
--- name: Toast menu: Components route: /components/Toast --- import { Playground, PropsTable } from "docz"; import { State, Toggle } from "react-powerplug"; import { InputText, Icon, Button, toast } from "@personio/ui-components"; import "./toast.scss"; # Toast ## Example <Playground> <div> <div className="toast-container"> <Button theme="success" onClick={() => { toast.notify({ theme: "success", children: "I am a success toast" }); }} > Open success </Button> <Button theme="info" onClick={() => { toast.notify({ theme: "info", children: "I am a info toast" }); }} > Open info </Button> <Button theme="danger" onClick={() => { toast.notify({ theme: "danger", children: "I am a danger toast" }); }} > Open danger </Button> <Button theme="warning" onClick={() => { toast.notify({ theme: "warning", children: "I am a warning toast" }); }} > Open warning </Button> </div> </div> </Playground> ## Content For set the toast content, use the children prop. It can receive either a string or a component. <Playground> <State initial={{ value: "I am the toast content!" }}> {({ state, setState }) => ( <div> <div> <InputText placeholder="Write something here to display in the toast" onChange={e => { setState({ value: e.currentTarget.value }); }} value={state.value} /> </div> <br /> <div> <Button onClick={() => { toast.notify({ theme: "success", duration: 3000, children: state.value }); }} > Open toast with dinnamicly children </Button> </div> </div> )} </State> </Playground> ## Actions Use the action prop to define a footer content. This prop accepts only components. <Playground> <Button onClick={() => { toast.notify({ theme: "info", autoClose: false, children: "I am a footer with actions", actions: ( <React.Fragment> <Button>Link 1</Button> <Button>Link 2</Button> </React.Fragment> ) }); }} > Open toast with content </Button> </Playground> ## Changing the icon <Playground> <State initial={{ value: 'tachometer', color: '#74c970' }}> {({ state, setState }) => ( <div> <div> <label htmlFor="">Icon</label> <InputText placeholder="Name of the icon" onChange={(e) => { setState({ value: e.currentTarget.value }) }} value={state.value} /> <br /> <br /> <div> Icon preview: <Icon name={state.value} size={20} /> </div> <br /> <label htmlFor="">Color</label> <div> <InputText type="color" placeholder="Color" onChange={(e) => { setState({ color: e.target.value }) }} value={state.color} /> <div>{state.color}</div> </div> </div> <br /> <div> <Button onClick={() => { toast.notify({ theme: 'success', iconName: state.value, iconColor: state.color, autoClose: false, children: 'I am a toast with dinnamicly icon'}); }}> Open toast with dinnamicly icon </Button> </div> </div> )} </State> </Playground> ## Duration Use the prop duration to set the time in miliseconds to auto close the toast. The default value is 5000ms. <Playground> <State initial={{ duration: 3000 }}> {({ state, setState }) => ( <div> <div> <InputText type="number" step={1000} min={1000} placeholder="Write the duration in MS" onChange={e => { setState({ duration: e.currentTarget.value }); }} value={state.duration} /> </div> <br /> <div> <Button onClick={() => { toast.notify({ theme: "success", duration: state.duration, children: "Toast with dinnamicly duration" }); }} > Open toast with dinnamicly children </Button> </div> </div> )} </State> </Playground> ## Preventing to auto close Use the autoClose prop to prevent the toast to close automatically. <Playground> <Button onClick={() => { toast.notify({ theme: "info", autoClose: false, children: "I am a toast which will not close unless you press on the close button" }); }} > Open toast </Button> </Playground> ## Without close button Use the autoClose prop to prevent the toast to close automatically. <Playground> <Button onClick={() => { toast.notify({ theme: "info", showCloseButton: false, duration: 5000, children: "I am without close button" }); }} > Open toast without close button </Button> </Playground>