// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved. // See LICENSE.txt for license information. import React from 'react' import {FormattedMessage, useIntl} from 'react-intl' import {Card} from '../../blocks/card' import ButtonWithMenu from '../../widgets/buttons/buttonWithMenu' import AddIcon from '../../widgets/icons/add' import Menu from '../../widgets/menu' import {useAppSelector} from '../../store/hooks' import {getCurrentBoardTemplates} from '../../store/cards' import {getCurrentView} from '../../store/views' import NewCardButtonTemplateItem from './newCardButtonTemplateItem' import EmptyCardButton from './emptyCardButton' type Props = { addCard: () => void addCardFromTemplate: (cardTemplateId: string) => void addCardTemplate: () => void editCardTemplate: (cardTemplateId: string) => void } const NewCardButton = (props: Props): JSX.Element => { const cardTemplates: Card[] = useAppSelector(getCurrentBoardTemplates) const currentView = useAppSelector(getCurrentView) let defaultTemplateID = '' const intl = useIntl() return ( { if (defaultTemplateID) { props.addCardFromTemplate(defaultTemplateID) } else { props.addCard() } }} text={( )} > {cardTemplates.length > 0 && <> } {cardTemplates.map((cardTemplate) => { if (cardTemplate.id === currentView.fields.defaultTemplateId) { defaultTemplateID = currentView.fields.defaultTemplateId } return ( ) })} } id='add-template' name={intl.formatMessage({id: 'ViewHeader.add-template', defaultMessage: 'New template'})} onClick={() => props.addCardTemplate()} /> ) } export default React.memo(NewCardButton)