UNPKG

@selfcommunity/react-ui

Version:

React UI Components to integrate a Community created with SelfCommunity Platform.

28 lines (27 loc) 1.65 kB
import { __rest } from "tslib"; import { jsx as _jsx } from "react/jsx-runtime"; import { Button, Icon, IconButton, Typography, useMediaQuery, useTheme } from '@mui/material'; import { FormattedMessage } from 'react-intl'; import { PREFIX } from '../constants'; import classNames from 'classnames'; import PubSub from 'pubsub-js'; import { SCGroupEventType, SCTopicType } from '../../../constants/PubSub'; import { Fragment, memo, useCallback } from 'react'; const classes = { sectionButton: `${PREFIX}-section-button`, sectionButtonTypography: `${PREFIX}-section-button-typography` }; function AddButton(props) { // PROPS const { label, handleAddRow, className } = props, rest = __rest(props, ["label", "handleAddRow", "className"]); // HOOKS const theme = useTheme(); const isMobile = useMediaQuery(theme.breakpoints.down('md')); // HANDLERS const handleClick = useCallback(() => { handleAddRow(); PubSub.publish(`${SCTopicType.COURSE}.${SCGroupEventType.UPDATE}`, true); }, [handleAddRow]); return (_jsx(Fragment, { children: isMobile ? (_jsx(IconButton, Object.assign({ onClick: handleClick }, { children: _jsx(Icon, { children: "add_circle_outline" }) }))) : (_jsx(Button, Object.assign({ className: classNames(classes.sectionButton, className), size: "small", startIcon: _jsx(Icon, { children: "add_circle_outline" }), onClick: handleClick }, rest, { children: _jsx(Typography, Object.assign({ className: classes.sectionButtonTypography, variant: "body1" }, { children: _jsx(FormattedMessage, { id: label, defaultMessage: label }) })) }))) })); } export default memo(AddButton);