UNPKG

material-ui-banner

Version:

A material-ui component that allows you to add a banner underneath the app bar.

92 lines (81 loc) 1.93 kB
import React from 'react'; import ButtonBase from '@mui/material/ButtonBase'; import Banner from './Banner'; export default class StaticBanner extends React.Component { static Instance; static displayName = 'MuiStaticBanner'; static hide() { Banner.Instance.setState({ open: false, }); } static show({ label = '', buttonLabel = '', buttonOnClick = () => {}, buttonComponent = ButtonBase, buttonProps = {}, showDismissButton = true, dismissButtonLabel = 'Dismiss', dismissButtonProps = {}, icon = null, iconProps = {}, cardProps = {}, paperProps = {}, appBar = false, onClose = () => {}, }) { if (Banner.Instance) { Banner.Instance.setState({ open: true, options: { ...Banner.Instance.state.options, label, buttonLabel, buttonOnClick, showDismissButton, dismissButtonLabel, dismissButtonProps, icon, iconProps, buttonProps, buttonComponent, cardProps, paperProps, appBar, onClose }, }); } else { console.warn('No banner found'); console.warn(label); } } constructor(props) { super(props); this.state = { open: false, options: { label: '', buttonLabel: '', buttonOnClick: () => {}, buttonComponent: ButtonBase, buttonProps: {}, showDismissButton: true, dismissButtonLabel: 'Dismiss', dismissButtonProps: {}, icon: null, iconProps: {}, }, }; Banner.Instance = this; } handleClose = () => { this.state.options.onClose(); this.setState({ open: false }); } render() { const { open, options } = this.state; return <Banner open={open} {...options} onClose={this.handleClose} appBar />; } }