/* eslint jsx-a11y/tabindex-no-positive: 0 */ import { Actions, React, ReactDOM, PropTypes } from 'mailspring-exports'; import { Menu, RetinaImg } from 'nylas-component-kit'; import TemplateStore from './template-store'; class TemplatePopover extends React.Component { static displayName = 'TemplatePopover'; static propTypes = { headerMessageId: PropTypes.string, }; constructor() { super(); this.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 }); }; _onClickButton = () => { const buttonRect = ReactDOM.findDOMNode(this).getBoundingClientRect(); Actions.openPopover(this._renderPopover(), { originRect: buttonRect, direction: 'up' }); }; render() { const filteredTemplates = this._filteredTemplates(); const headerComponents = [ , ]; // note: these are using onMouseDown to avoid clearing focus in the composer (I think) const footerComponents = [