React = require 'react' {WorkspaceStore} = require 'nylas-exports' SidebarSheetItem = require './account-sidebar-sheet-item' AccountSidebarMailViewItem = require './account-sidebar-mail-view-item' {DisclosureTriangle} = require 'nylas-component-kit' class AccountSidebarItem extends React.Component @displayName: "AccountSidebarItem" @propTypes: { item: React.PropTypes.object.isRequired selected: React.PropTypes.object.isRequired onToggleCollapsed: React.PropTypes.func.isRequired collapsed: React.PropTypes.bool onDestroyItem: React.PropTypes.func } @defaultProps: { collapsed: false } componentDidMount: -> if @props.onDestroyItem? React.findDOMNode(@).addEventListener('contextmenu', @_onShowContextMenu) componentWillUnmount: -> if @props.onDestroyItem? React.findDOMNode(@).removeEventListener('contextmenu', @_onShowContextMenu) _itemComponent: (item) -> unless item instanceof WorkspaceStore.SidebarItem throw new Error("AccountSidebar:_itemComponents: sections contained an \ item which was not a SidebarItem") if item.component Component = item.component else if item.mailViewFilter else if item.sheet else throw new Error("AccountSidebarItem: each item must have a \ custom component, or a sheet or mailViewFilter") _onShowContextMenu: => item = @props.item label = item.name remote = require 'remote' Menu = remote.require 'menu' MenuItem = remote.require 'menu-item' menu = new Menu() menu.append(new MenuItem({ label: "Delete #{label}" click: => @props.onDestroyItem?(item) })) menu.popup(remote.getCurrentWindow()) render: -> item = @props.item 0} onToggleCollapsed={ => @props.onToggleCollapsed(item.id)} /> {@_itemComponent(item)} module.exports = AccountSidebarItem