_ = require 'underscore'
React = require 'react'
AccountContactField = require './account-contact-field'
ParticipantsTextField = require './participants-text-field'
{Actions} = require 'nylas-exports'
{RetinaImg} = require 'nylas-component-kit'
Fields = require './fields'
class ExpandedParticipants extends React.Component
@displayName: "ExpandedParticipants"
@propTypes:
# Arrays of Contact objects.
to: React.PropTypes.array
cc: React.PropTypes.array
bcc: React.PropTypes.array
from: React.PropTypes.array
# Either "fullwindow" or "inline"
mode: React.PropTypes.string
# The field that should be focused
focusedField: React.PropTypes.string
# An enum array of visible fields. Can be any constant in the `Fields`
# dict. We are passed these as props instead of holding it as state
# since this component is frequently unmounted and re-mounted every
# time it is displayed
enabledFields: React.PropTypes.array
# Callback for when a user changes which fields should be visible
onChangeEnabledFields: React.PropTypes.func
# Callback for the participants change
onChangeParticipants: React.PropTypes.func
@defaultProps:
to: []
cc: []
bcc: []
from: []
enabledFields: []
constructor: (@props={}) ->
componentDidMount: =>
@_applyFocusedField()
componentDidUpdate: ->
@_applyFocusedField()
render: ->
{@_renderFields()}
_applyFocusedField: ->
if @props.focusedField
return unless @refs[@props.focusedField]
if @refs[@props.focusedField].focus
@refs[@props.focusedField].focus()
else
React.findDOMNode(@refs[@props.focusedField]).focus()
_renderFields: =>
# Note: We need to physically add and remove these elements, not just hide them.
# If they're hidden, shift-tab between fields breaks.
fields = []
fields.push(
{if Fields.Cc not in @props.enabledFields
Cc
}
{ if Fields.Bcc not in @props.enabledFields
Bcc
}
{ if Fields.Subject not in @props.enabledFields
Subject
}
{ if @props.mode is "inline"
}
)
if Fields.Cc in @props.enabledFields
fields.push(
)
if Fields.Bcc in @props.enabledFields
fields.push(
)
if Fields.From in @props.enabledFields
fields.push(
@props.onChangeParticipants(from: [me]) }
value={@props.from?[0]} />
)
fields
_showAndFocusBcc: =>
@props.onChangeEnabledFields
show: [Fields.Bcc]
focus: Fields.Bcc
_showAndFocusCc: =>
@props.onChangeEnabledFields
show: [Fields.Cc]
focus: Fields.Cc
_showAndFocusSubject: =>
@props.onChangeEnabledFields
show: [Fields.Subject]
focus: Fields.Subject
_onEmptyCc: =>
@props.onChangeEnabledFields
hide: [Fields.Cc]
focus: Fields.To
_onEmptyBcc: =>
if Fields.Cc in @props.enabledFields
focus = Fields.Cc
else
focus = Fields.To
@props.onChangeEnabledFields
hide: [Fields.Bcc]
focus: focus
module.exports = ExpandedParticipants