import {Actions, React, ReactDOM} from 'nylas-exports'; import {Menu, RetinaImg} from 'nylas-component-kit'; import TemplateStore from './template-store'; class TemplatePicker extends React.Component { static displayName = 'TemplatePicker'; static propTypes = { draftClientId: React.PropTypes.string, }; constructor() { super(); this.state = { searchValue: '', templates: TemplateStore.items(), }; } componentDidMount() { this.unsubscribe = TemplateStore.listen(this._onStoreChange.bind(this)); } componentWillUnmount() { if (this.unsubscribe) this.unsubscribe(); } _filteredTemplates(search = this.state.searchValue) { const items = TemplateStore.items(); if (!search.length) { return items; } return items.filter((t)=> { return t.name.toLowerCase().indexOf(search.toLowerCase()) === 0; }); } _onStoreChange() { return this.setState({ templates: this._filteredTemplates(), }); } _onSearchValueChange = () => { const newSearch = event.target.value; return this.setState({ searchValue: newSearch, templates: this._filteredTemplates(newSearch), }); }; _onChooseTemplate = (template) => { Actions.insertTemplateId({templateId: template.id, draftClientId: this.props.draftClientId}); Actions.closePopover() }; _onManageTemplates = () => { Actions.showTemplates(); }; _onNewTemplate = () => { Actions.createTemplate({draftClientId: this.props.draftClientId}); }; _onClickButton = ()=> { const buttonRect = ReactDOM.findDOMNode(this).getBoundingClientRect() Actions.openPopover( this._renderPopover(), {originRect: buttonRect, direction: 'up'} ) }; _renderPopover() { const headerComponents = [ , ]; const footerComponents = [
Save Draft as Template...
,
Manage Templates...
, ]; return ( item.id } itemContent={ (item)=> item.name } onSelect={this._onChooseTemplate.bind(this)} /> ); } render() { return ( ); } } export default TemplatePicker;