| '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'); |
| }); |
| } |
| } |
| ); |