Mailspring/internal_packages/thread-list/lib/thread-list-toolbar.jsx
Juan Tejada 687597134d feat(selection): Add new display for selection count + update toolbar
Summary:
- New behavior is that the in split mode, you will perform actions on
  the selection via the MessageListToolbar (the toolbar positioned above
  the message list)
- Refactored and moved around a bunch of code to achieve this:
  - Mostly renaming stuff and moving stuff around and removing some
    duplication
  - Update naming of toolbar role to a single role, and update relevant code
  - Converted and refactored a bunch of code into ES6, specifically to reuse the code for the ThreadActionsToolbar at the 2 locations
  - Deprecated MultiselectActionBar in favor of MultiselectToolbar
  - Deprecated old roles
- Punted the animation for the stackable cards in the selection display for now.
- #370

Test Plan: - Manual and unit tests

Reviewers: evan, drew, bengotow

Reviewed By: bengotow

Differential Revision: https://phab.nylas.com/D2756
2016-03-21 12:20:11 -07:00

40 lines
927 B
JavaScript

import React, {Component, PropTypes} from 'react'
import {MultiselectToolbar} from 'nylas-component-kit'
import InjectsToolbarButtons, {ToolbarRole} from './injects-toolbar-buttons'
class ThreadListToolbar extends Component {
static displayName = 'ThreadListToolbar';
static propTypes = {
items: PropTypes.array,
selection: PropTypes.shape({
clear: PropTypes.func,
}),
injectedButtons: PropTypes.element,
};
onClearSelection = ()=> {
this.props.selection.clear()
};
render() {
const {injectedButtons, items} = this.props
return (
<MultiselectToolbar
collection="thread"
selectionCount={items.length}
toolbarElement={injectedButtons}
onClearSelection={this.onClearSelection}
/>
)
}
}
const toolbarProps = {
extraRoles: [`ThreadList:${ToolbarRole}`],
}
export default InjectsToolbarButtons(ThreadListToolbar, toolbarProps)