'use strict';
define(
[
'flight/lib/component',
'./with_select'
],
function(defineComponent, withSelect) {
return defineComponent(mailItems, withSelect);
function mailItems() {
this.defaultAttrs({
deleteFolder: 'trash',
selectedClass: 'selected',
allowMultiSelect: true,
selectionChangedEvent: 'uiMailItemSelectionChanged',
selectedMailItems: [],
selectedFolders: [],
//selectors
itemSelector: 'tr.mail-item',
selectedItemSelector: 'tr.mail-item.selected'
});
this.renderItems = function(ev, data) {
this.select('itemContainerSelector').html(data.markup);
//new items, so no selections
this.trigger('uiMailItemSelectionChanged', {selectedIds: []});
}
this.updateMailItemSelections = function(ev, data) {
this.attr.selectedMailItems = data.selectedIds;
}
this.updateFolderSelections = function(ev, data) {
this.attr.selectedFolders = data.selectedIds;
}
this.requestDeletion = function() {
this.trigger('uiMoveItemsRequested', {
itemIds: this.attr.selectedMailItems,
fromFolder: this.attr.selectedFolders[0],
toFolder: this.attr.deleteFolder
});
};
this.after('initialize', function() {
this.on(document, 'dataMailItemsServed', this.renderItems);
this.on(document, 'uiDeleteMail', this.requestDeletion);
this.on('uiMailItemSelectionChanged', this.updateMailItemSelections);
this.on(document, 'uiFolderSelectionChanged', this.updateFolderSelections);
this.trigger('uiMailItemsRequested');
});
}
}
);