Alerts
View in LexiconAlerts are used to capture the attention of the user in an intrusive way.
install | yarn add @clayui/alert |
---|---|
version | |
use | import Alert from '@clayui/alert'; |
Table of Contents
Display Types
The available displayTypes
are info
, secondary
, success
, warning
, and danger
.
import {Provider} from '@clayui/core';
import Alert from '@clayui/alert';
import React from 'react';
import '@clayui/css/lib/css/atlas.css';
export default function App() {
return (
<Provider spritemap="/public/icons.svg">
<div className="p-4">
<Alert displayType="info" title="Info" role={null}>
This is an info message.
</Alert>
<Alert displayType="success" title="Success" role={null}>
This is a success message.
</Alert>
<Alert displayType="warning" title="Warning" role={null}>
This is a warning message.
</Alert>
<Alert displayType="danger" title="Danger" role={null}>
This is a danger message.
</Alert>
</div>
</Provider>
);
}
We recommend that you review the use cases in the Storybook.
Variants
You can use alert with the feedback
, inline
, and stripe
variants.
import {Provider, Button} from '@clayui/core';
import Alert from '@clayui/alert';
import React from 'react';
import '@clayui/css/lib/css/atlas.css';
export default function App() {
return (
<Provider spritemap="/public/icons.svg">
<div className="p-4">
<div className="c-mt-3">
<Alert
actions={
<Button.Group spaced>
<Button displayType="warning" small>
Replace
</Button>
<Button alert>Keep Both</Button>
</Button.Group>
}
displayType="warning"
onClose={() => {}}
title="Alert"
variant="inline"
>
A file with this name already exists.
</Alert>
</div>
<Alert
displayType="info"
title="Info"
variant="stripe"
role={null}
>
This is a stripe variant.
</Alert>
<div className="c-mt-3">
<Alert
displayType="success"
title="This is an inline variant."
variant="inline"
role={null}
/>
</div>
<div className="c-mt-3">
<Alert
displayType="danger"
title="This is a feedback variant."
variant="feedback"
role={null}
/>
</div>
</div>
</Provider>
);
}
Icons
Each Alert displayType
has a default icon, the icon can be changed through the symbol
attribute.
import {Provider} from '@clayui/core';
import Alert from '@clayui/alert';
import React from 'react';
import '@clayui/css/lib/css/atlas.css';
export default function App() {
return (
<Provider spritemap="/public/icons.svg">
<div className="p-4">
<Alert
displayType="info"
symbol="thumbs-up-full"
title="Info"
variant="stripe"
role={null}
>
This is a stripe variant.
</Alert>
</div>
</Provider>
);
}
Using with Button
import {Provider, Button} from '@clayui/core';
import Alert from '@clayui/alert';
import React from 'react';
import '@clayui/css/lib/css/atlas.css';
export default function App() {
return (
<Provider spritemap="/public/icons.svg">
<div className="p-4">
<Alert displayType="info" title="With a Button" role={null}>
This is an alert with a button!
<Alert.Footer>
<Button alert>View</Button>
</Alert.Footer>
</Alert>
</div>
</Provider>
);
}
Inline
import {Provider, Button} from '@clayui/core';
import Alert from '@clayui/alert';
import React from 'react';
import '@clayui/css/lib/css/atlas.css';
export default function App() {
return (
<Provider spritemap="/public/icons.svg">
<div className="p-4">
<Alert
actions={<Button alert>View</Button>}
displayType="info"
title="With a Button"
variant="inline"
role={null}
>
This is an alert with a button!
</Alert>
</div>
</Provider>
);
}
Using with ToastContainer
You can use alerts with a ToastContainer
to render the alerts in a container with position: fixed
.
import {Provider, Button} from '@clayui/core';
import Alert from '@clayui/alert';
import React, {useState} from 'react';
import '@clayui/css/lib/css/atlas.css';
export default function App() {
const [toastItems, setToastItems] = useState([]);
return (
<Provider spritemap="/public/icons.svg">
<div className="p-4">
<div>
<Button
onClick={() =>
setToastItems([...toastItems, Math.random() * 100])
}
>
Add Alert
</Button>
</div>
<Alert.ToastContainer>
{toastItems.map((value) => (
<Alert
autoClose={5000}
key={value}
onClose={() => {
setToastItems((prevItems) =>
prevItems.filter((item) => item !== value)
);
}}
title="Hola:"
>
My value is {value}
</Alert>
))}
</Alert.ToastContainer>
</div>
</Provider>
);
}