@selfcommunity/react-ui
Version:
React UI Components to integrate a Community created with SelfCommunity Platform.
28 lines (27 loc) • 1.65 kB
JavaScript
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);