_ = require 'underscore' {Actions, AccountStore, React, ReactDOM, PropTypes, WorkspaceStore} = require 'mailspring-exports' {RetinaImg, KeyCommandsRegion} = require 'nylas-component-kit' LabelPickerPopover = require('./label-picker-popover').default # This changes the category on one or more threads. class LabelPicker extends React.Component @displayName: "LabelPicker" @containerRequired: false @propTypes: items: PropTypes.array @contextTypes: sheetDepth: PropTypes.number constructor: (@props) -> @_account = AccountStore.accountForItems(@props.items) # If the threads we're picking categories for change, (like when they # get their categories updated), we expect our parents to pass us new # props. We don't listen to the DatabaseStore ourselves. componentWillReceiveProps: (nextProps) -> @_account = AccountStore.accountForItems(nextProps.items) _keymapHandlers: -> "core:change-category": @_onOpenCategoryPopover _onOpenCategoryPopover: => return unless @props.items.length > 0 return unless @context.sheetDepth is WorkspaceStore.sheetStack().length - 1 buttonRect = this._buttonEl.getBoundingClientRect() Actions.openPopover( , {originRect: buttonRect, direction: 'down'} ) return render: => return unless @_account btnClasses = "btn btn-toolbar btn-category-picker" return ( ) module.exports = LabelPicker