[search] Reverted previous change to ClickAwayController and introduced a custom fix to search menu. Fixes #888 (#1109)

This commit is contained in:
Andrew Henry
2016-08-05 16:30:20 -07:00
committed by Pete Richards
parent 4d89de7068
commit 0274490b68
6 changed files with 23 additions and 15 deletions

View File

@@ -259,7 +259,7 @@ define([
"implementation": ClickAwayController,
"depends": [
"$document",
"$scope"
"$timeout"
]
},
{

View File

@@ -34,7 +34,7 @@ define(
* @param $scope the scope in which this controller is active
* @param $document the document element, injected by Angular
*/
function ClickAwayController($document, $scope) {
function ClickAwayController($document, $timeout) {
var self = this;
this.state = false;
@@ -44,7 +44,7 @@ define(
// `clickaway` action occurs after `toggle` if `toggle` is
// triggered by a click/mouseup.
this.clickaway = function () {
$scope.$apply(function () {
$timeout(function () {
self.deactivate();
});
};

View File

@@ -33,6 +33,8 @@ define(
*/
function ToggleController() {
this.state = false;
this.setState = this.setState.bind(this);
}
/**

View File

@@ -26,7 +26,7 @@ define(
describe("The click-away controller", function () {
var mockDocument,
mockScope,
mockTimeout,
controller;
beforeEach(function () {
@@ -34,11 +34,10 @@ define(
"$document",
["on", "off"]
);
mockScope = jasmine.createSpyObj('$scope', ['$apply']);
mockTimeout = jasmine.createSpy('timeout');
controller = new ClickAwayController(
mockDocument,
mockScope
mockTimeout
);
});
@@ -78,15 +77,18 @@ define(
});
it("deactivates and detaches listener on document click", function () {
var callback, apply;
var callback, timeout;
controller.setState(true);
callback = mockDocument.on.mostRecentCall.args[1];
callback();
apply = mockScope.$apply.mostRecentCall.args[0];
apply();
timeout = mockTimeout.mostRecentCall.args[0];
timeout();
expect(controller.isActive()).toEqual(false);
expect(mockDocument.off).toHaveBeenCalledWith("mouseup", callback);
});
});
}
);