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
Fredrik Strand Oseberg f0d6e45361 Feat/bootstrap (#281)
* feat: add bootstrap endpoint redux integration

* fix: remove useEffect from app

* feat: add path provider

* feat: browser router

* fix: delete path formatter

* fix: return absolute path if no basepath

* fix: format seenURI

* feat: get bootstrap uri from html

* fix: remove unused imports

* fix: remove initial loading call

* fix: wrap logout in formatApiPath

* feat: import logo

* feat: remove accessor from receiveConfig

* fix: update tests

* fix: update asset paths

* fix: remove data from app

* fix: revert moving access provider

* fix: remove build watch

* fix: remove console logs

* fix: update asset paths

* fix: remove path logic from base64

* fix: remove unused import

* set uiconfig

* change notification text

* fix: match uiConfig with expected format

* feat: add proclamation

* fix: move proclamation

* fix: remove unused imports

* fix: add target _blank

* fix: allow optional toast

* fix: return empty string if default value is present

* fix: set basepath to empty string if it matches default
2021-05-04 09:59:42 +02:00

69 lines
1.8 KiB
TypeScript

import { useState } from 'react';
import { Alert } from '@material-ui/lab';
import ConditionallyRender from '../ConditionallyRender';
import { Typography } from '@material-ui/core';
import { useStyles } from './Proclamation.styles';
interface IProclamationProps {
toast?: IToast;
}
interface IToast {
message: string;
id: string;
severity: 'success' | 'info' | 'warning' | 'error';
link: string;
}
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(renderProclamation(toast?.id || ''));
const styles = useStyles();
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;