@mui/material#Badge JavaScript Examples
The following examples show how to use
@mui/material#Badge.
You can vote up the ones you like or vote down the ones you don't like,
and go to the original project or source file by following the links above each example. You may check out the related API usage on the sidebar.
Example #1
Source File: BadgeSelected.jsx From matx-react with MIT License | 5 votes |
BadgeSelected = styled(Badge)(() => ({
top: '0',
right: '0',
height: '32px',
width: '32px',
borderRadius: '50%',
}))
Example #2
Source File: NotificationBar.jsx From matx-react with MIT License | 4 votes |
NotificationBar = ({ container }) => {
const { settings } = useSettings();
const theme = useTheme();
const secondary = theme.palette.text.secondary;
const [panelOpen, setPanelOpen] = React.useState(false);
const { deleteNotification, clearNotifications, notifications } = useNotification();
const handleDrawerToggle = () => {
setPanelOpen(!panelOpen);
};
const { palette } = useTheme();
const textColor = palette.text.primary;
return (
<Fragment>
<IconButton onClick={handleDrawerToggle}>
<Badge color="secondary" badgeContent={notifications?.length}>
<Icon sx={{ color: textColor }}>notifications</Icon>
</Badge>
</IconButton>
<ThemeProvider theme={settings.themes[settings.activeTheme]}>
<Drawer
width={'100px'}
container={container}
variant="temporary"
anchor={'right'}
open={panelOpen}
onClose={handleDrawerToggle}
ModalProps={{
keepMounted: true,
}}
>
<Box sx={{ width: sideNavWidth }}>
<Notification>
<Icon color="primary">notifications</Icon>
<h5>Notifications</h5>
</Notification>
{notifications?.map((notification) => (
<NotificationCard key={notification.id}>
<DeleteButton
size="small"
className="deleteButton"
onClick={() => deleteNotification(notification.id)}
>
<Icon className="icon">clear</Icon>
</DeleteButton>
<Link
to={`/${notification.path}`}
onClick={handleDrawerToggle}
style={{ textDecoration: 'none' }}
>
<Card sx={{ mx: 2, mb: 3 }} elevation={3}>
<CardLeftContent>
<Box display="flex">
<Icon className="icon" color={notification.icon.color}>
{notification.icon.name}
</Icon>
<Heading>{notification.heading}</Heading>
</Box>
<Small className="messageTime">
{getTimeDifference(new Date(notification.timestamp))}
ago
</Small>
</CardLeftContent>
<Box sx={{ px: 2, pt: 1, pb: 2 }}>
<Paragraph sx={{ m: 0 }}>{notification.title}</Paragraph>
<Small sx={{ color: secondary }}>{notification.subtitle}</Small>
</Box>
</Card>
</Link>
</NotificationCard>
))}
{!!notifications?.length && (
<Box sx={{ color: secondary }}>
<Button onClick={clearNotifications}>Clear Notifications</Button>
</Box>
)}
</Box>
</Drawer>
</ThemeProvider>
</Fragment>
);
}
Example #3
Source File: ShoppingCart.jsx From matx-react with MIT License | 4 votes |
function ShoppingCart({ container }) {
const [totalCost, setTotalCost] = useState(0);
const [panelOpen, setPanelOpen] = useState(false);
const dispatch = useDispatch();
const navigate = useNavigate();
const { user } = useAuth();
const { cartList } = useSelector((state) => state.ecommerce);
const { settings } = useSettings();
const theme = useTheme();
const secondary = theme.palette.text.secondary;
if (!cartListLoaded) {
dispatch(getCartList(user.id));
cartListLoaded = true;
}
const handleDrawerToggle = () => {
setPanelOpen(!panelOpen);
};
const handleCheckoutClick = () => {
if (totalCost > 0) {
navigate('/ecommerce/checkout');
setPanelOpen(false);
}
};
useEffect(() => {
let total = 0;
cartList.forEach((product) => {
total += product.price * product.amount;
});
setTotalCost(total);
}, [cartList]);
const { palette } = useTheme();
const textColor = palette.text.primary;
return (
<Fragment>
<IconButton onClick={handleDrawerToggle}>
<Badge color="secondary" badgeContent={cartList.length}>
<Icon sx={{ color: textColor }}>shopping_cart</Icon>
</Badge>
</IconButton>
<ThemeProvider theme={settings.themes[settings.activeTheme]}>
<Drawer
container={container}
variant="temporary"
anchor={'right'}
open={panelOpen}
onClose={handleDrawerToggle}
ModalProps={{
keepMounted: true,
}}
>
<MiniCart>
<CartBox>
<Icon color="primary">shopping_cart</Icon>
<h5>Cart</h5>
</CartBox>
<Box flexGrow={1} overflow="auto">
{cartList.map((product) => (
<ProductBox key={product.id}>
<Box mr="4px" display="flex" flexDirection="column">
<StyledIconButton
size="small"
onClick={() =>
dispatch(updateCartAmount(user.id, product.id, product.amount + 1))
}
>
<Icon sx={{ cursor: 'pinter' }}>keyboard_arrow_up</Icon>
</StyledIconButton>
<StyledIconButton
disabled={!(product.amount - 1)}
size="small"
onClick={() =>
dispatch(updateCartAmount(user.id, product.id, product.amount - 1))
}
>
<Icon id={!(product.amount - 1) && 'disable'}>keyboard_arrow_down</Icon>
</StyledIconButton>
</Box>
<Box mr={1}>
<IMG src={product.imgUrl} alt={product.title} />
</Box>
<ProductDetails>
<H6>{product.title}</H6>
<Small sx={{ color: secondary }}>
${product.price} x {product.amount}
</Small>
</ProductDetails>
<StyledIconButton
size="small"
onClick={() => dispatch(deleteProductFromCart(user.userId, product.id))}
>
<Icon fontSize="small">clear</Icon>
</StyledIconButton>
</ProductBox>
))}
</Box>
<Button
sx={{ width: '100%', borderRadius: 0 }}
variant="contained"
color="primary"
onClick={handleCheckoutClick}
>
Checkout (${totalCost.toFixed(2)})
</Button>
</MiniCart>
</Drawer>
</ThemeProvider>
</Fragment>
);
}