Mailspring/internal_packages/draft-list/lib/draft-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

50 lines
1.2 KiB
JavaScript

import React, {Component, PropTypes} from "react"
import DraftListStore from './draft-list-store'
import {ListensToObservable, MultiselectToolbar, InjectedComponentSet} from 'nylas-component-kit'
function getObservable() {
return DraftListStore.selectionObservable()
}
function getStateFromObservable(items) {
if (!items) {
return {items: []}
}
return {items}
}
class DraftListToolbar extends Component {
static displayName = 'DraftListToolbar';
static propTypes = {
items: PropTypes.array,
};
onClearSelection = () => {
DraftListStore.dataSource().selection.clear()
};
render() {
const {selection} = DraftListStore.dataSource()
const {items} = this.props
// Keep all of the exposed props from deprecated regions that now map to this one
const toolbarElement = (
<InjectedComponentSet
matching={{role: "DraftActionsToolbarButton"}}
exposedProps={{selection, items}} />
)
return (
<MultiselectToolbar
collection="draft"
selectionCount={items.length}
toolbarElement={toolbarElement}
onClearSelection={this.onClearSelection}
/>
)
}
}
export default ListensToObservable(DraftListToolbar, {getObservable, getStateFromObservable})