/* eslint jsx-a11y/tabindex-no-positive: 0 */ import React from 'react'; import ReactDOM from 'react-dom'; import { localized, PropTypes, Actions } from 'mailspring-exports'; import { Menu, RetinaImg } from 'mailspring-component-kit'; import TemplateStore from './template-store'; class TemplatePopover extends React.Component<{ headerMessageId: string }> { static displayName = 'TemplatePopover'; static propTypes = { headerMessageId: PropTypes.string, }; unsubscribe?: () => void; state = { searchValue: '', templates: TemplateStore.items(), }; componentDidMount() { this.unsubscribe = TemplateStore.listen(() => { this.setState({ templates: TemplateStore.items() }); }); } componentWillUnmount() { if (this.unsubscribe) { this.unsubscribe(); } } _filteredTemplates() { const { searchValue, templates } = this.state; if (!searchValue.length) { return templates; } return templates.filter(t => { return t.name.toLowerCase().indexOf(searchValue.toLowerCase()) === 0; }); } _onSearchValueChange = event => { this.setState({ searchValue: event.target.value }); }; _onChooseTemplate = template => { Actions.insertTemplateId({ templateId: template.id, headerMessageId: this.props.headerMessageId, }); Actions.closePopover(); }; _onManageTemplates = () => { Actions.showTemplates(); }; _onNewTemplate = () => { Actions.createTemplate({ headerMessageId: this.props.headerMessageId }); }; render() { const filteredTemplates = this._filteredTemplates(); const headerComponents = [ , ]; // note: these are using onMouseDown to avoid clearing focus in the composer (I think) const footerComponents = [
{localized('Save Draft as Template...')}
,
{localized('Manage Templates...')}
, ]; return ( item.id} itemContent={item => item.name} onSelect={this._onChooseTemplate} /> ); } } class TemplatePicker extends React.Component<{ headerMessageId: string }> { static displayName = 'TemplatePicker'; static propTypes = { headerMessageId: PropTypes.string, }; _onClickButton = () => { const buttonRect = (ReactDOM.findDOMNode(this) as HTMLElement).getBoundingClientRect(); Actions.openPopover(, { originRect: buttonRect, direction: 'up', }); }; render() { return ( ); } } export default TemplatePicker;