diff options
Diffstat (limited to '')
-rw-r--r-- | third_party/webkit/PerformanceTests/Speedometer/resources/flightjs-example-app/app/component_ui/move_to_selector.js | 79 |
1 files changed, 79 insertions, 0 deletions
diff --git a/third_party/webkit/PerformanceTests/Speedometer/resources/flightjs-example-app/app/component_ui/move_to_selector.js b/third_party/webkit/PerformanceTests/Speedometer/resources/flightjs-example-app/app/component_ui/move_to_selector.js new file mode 100644 index 0000000000..e077e6aff3 --- /dev/null +++ b/third_party/webkit/PerformanceTests/Speedometer/resources/flightjs-example-app/app/component_ui/move_to_selector.js @@ -0,0 +1,79 @@ +'use strict'; + +define( + + [ + 'flight/lib/component', + './with_select' + ], + + function(defineComponent, withSelect) { + + return defineComponent(moveToSelector, withSelect); + + function moveToSelector() { + + this.defaultAttrs({ + selectionChangedEvent: 'uiMoveToSelectionChanged', + selectedMailItems: [], + selectedFolders: [], + //selectors + itemSelector: 'li.move-to-item', + selectedItemSelector: 'li.move-to-item.selected' + }); + + this.requestSelectorWidget = function(ev, data) { + this.trigger('uiAvailableFoldersRequested', { + folder: this.attr.selectedFolders[0] + }) + }; + + this.launchSelector = function(ev, data) { + var controlPosition = $(this.attr.moveActionSelector).offset(); + this.$node.html(data.markup).show().css({ + left: controlPosition.left, + top: controlPosition.top + $(this.attr.moveActionSelector).outerHeight(), + width: $(this.attr.moveActionSelector).outerWidth() + }); + window.setTimeout( + (function() { + this.on(document, 'click', this.hideSelector) + }).bind(this), 0); + }; + + this.hideSelector = function() { + this.off(document, 'click', this.hideSelector); + this.$node.hide(); + } + + this.updateMailItemSelections = function(ev, data) { + this.attr.selectedMailItems = data.selectedIds; + } + + this.updateFolderSelections = function(ev, data) { + this.attr.selectedFolders = data.selectedIds; + } + + this.requestMoveTo = function(ev, data) { + this.trigger('uiMoveItemsRequested', { + itemIds: this.attr.selectedMailItems, + fromFolder: this.attr.selectedFolders[0], + toFolder: data.selectedIds[0] + }); + this.$node.hide(); + }; + + this.after('initialize', function() { + //show selector widget + this.on(document, 'uiMoveMail', this.requestSelectorWidget); + this.on(document, 'dataMoveToItemsServed', this.launchSelector); + //listen for other selections + this.on(document, 'uiMailItemSelectionChanged', this.updateMailItemSelections); + this.on(document, 'uiFolderSelectionChanged', this.updateFolderSelections); + //move items + this.on('uiMoveToSelectionChanged', this.requestMoveTo); + + }); + } + } +); |