1
0
mirror of https://github.com/Unleash/unleash.git synced 2024-10-18 20:09:08 +02:00
unleash.unleash/frontend/src/component/common/Proclamation/Proclamation.tsx
olav 24c11332b5 chore: update MUI to v5 (#923)
* refactor: update mui packages

* refactor: run mui codemods

* refactor: format files after codemods

* refactor: fix broken types

* refactor: clean up theme

* refactor: fix broken tests

* refactor: replace @mui/styles with tss-react

* refactor: move breakpoints into classes for tss

* refactor: fix crash on missing feature description

* refactor: remove void classNames

* refactor: adjust styles to new defaults

* refactor: remove broken rollout slider e2e test

* refactor: fix duplicate e2e testid

* refactor: update makeStyles after rebase

* refactor: add missing snapshot after rebase

* refactor: fix TableCellSortable focus styles

* refactor: use 1.4 as the default line-height

* refactor: hide webkit search field icons

* refactor: fix select box label

* refactor: make AutocompleteBox smaller

* refactor: make heading smaller

* refactor: fix toast close icon color

* refactor: update snapshots

* refactor: add missing test event awaits

* refactor: fix default button line-height
2022-05-02 15:52:41 +02:00

67 lines
1.8 KiB
TypeScript

import { useState, useEffect } from 'react';
import { Alert } from '@mui/material';
import { ConditionallyRender } from 'component/common/ConditionallyRender/ConditionallyRender';
import { Typography } from '@mui/material';
import { useStyles } from './Proclamation.styles';
import { IProclamationToast } from 'interfaces/uiConfig';
interface IProclamationProps {
toast?: IProclamationToast;
}
const renderProclamation = (id: string) => {
if (!id) return false;
if (localStorage) {
const value = localStorage.getItem(id);
if (value) {
return false;
}
}
return true;
};
const Proclamation = ({ toast }: IProclamationProps) => {
const [show, setShow] = useState(false);
const { classes: styles } = useStyles();
useEffect(() => {
setShow(renderProclamation(toast?.id || ''));
}, [toast?.id]);
const onClose = () => {
if (localStorage) {
localStorage.setItem(toast?.id || '', 'seen');
}
setShow(false);
};
if (!toast) return null;
return (
<ConditionallyRender
condition={show}
show={
<Alert
className={styles.proclamation}
severity={toast.severity}
onClose={onClose}
>
<Typography className={styles.content} variant="body2">
{toast.message}
</Typography>
<a
href={toast.link}
className={styles.link}
target="_blank"
rel="noopener noreferrer"
>
View more
</a>
</Alert>
}
/>
);
};
export default Proclamation;