Skip to content
This repository has been archived by the owner on Sep 5, 2024. It is now read-only.

Commit

Permalink
fix(menu): make menu close with ui-sref and ng-href
Browse files Browse the repository at this point in the history
closes #3397
  • Loading branch information
rschmukler committed Jul 12, 2015
1 parent 0d6e5ac commit dc01149
Show file tree
Hide file tree
Showing 2 changed files with 42 additions and 51 deletions.
9 changes: 6 additions & 3 deletions src/components/menu/menu-interim-element.js
Original file line number Diff line number Diff line change
Expand Up @@ -150,7 +150,7 @@ function MenuProvider($$interimElementProvider) {
// there is an ng-click and that the ng-click is not disabled
do {
if (target == opts.menuContentEl[0]) return;
if (hasAnyAttribute(target, ['ng-click', 'data-ng-click', 'x-ng-click'])) {
if (hasAnyAttribute(target, ['ng-click', 'ng-href', 'ui-sref'])) {
if (!target.hasAttribute('disabled')) {
close();
}
Expand All @@ -167,8 +167,11 @@ function MenuProvider($$interimElementProvider) {
function hasAnyAttribute(target, attrs) {
if (!target) return false;
for (var i = 0, attr; attr = attrs[i]; ++i) {
if (target.hasAttribute(attr)) {
return true;
var altForms = [attr, 'data-' + attr, 'x-' + attr];
for (var j = 0, rawAttr; rawAttr = altForms[j]; ++j) {
if (target.hasAttribute(rawAttr)) {
return true;
}
}
}
return false;
Expand Down
84 changes: 36 additions & 48 deletions src/components/menu/menu.spec.js
Original file line number Diff line number Diff line change
Expand Up @@ -72,7 +72,7 @@ describe('md-menu directive', function () {
expect(getOpenMenuContainer().length).toBe(0);
}));

describe('closes with ng-click', function() {
ddescribe('closes with -', function() {
it('closes on normal option click', function () {
expect(getOpenMenuContainer().length).toBe(0);

Expand All @@ -91,53 +91,41 @@ describe('md-menu directive', function () {
expect(getOpenMenuContainer().length).toBe(0);
});

it('closes with data-ng-click', inject(function($rootScope, $compile) {
expect(getOpenMenuContainer().length).toBe(0);

var template = '' +
'<md-menu>' +
' <button ng-click="$mdOpenMenu($event)">Hello World</button>' +
' <md-menu-content>' +
' <md-menu-item>' +
' <md-button data-ng-click="doSomething($event)"></md-button>' +
' </md-menu-item>' +
' </md-menu-content>' +
'</md-menu>';

openMenu($compile(template)($rootScope));
expect(getOpenMenuContainer().length).toBe(1);

var btn = getOpenMenuContainer()[0].querySelector('md-button');
btn.click();

waitForMenuClose();

expect(getOpenMenuContainer().length).toBe(0);
}));

it('closes with x-ng-click', inject(function($rootScope, $compile) {
expect(getOpenMenuContainer().length).toBe(0);

var template = '' +
'<md-menu>' +
' <button ng-click="$mdOpenMenu($event)">Hello World</button>' +
' <md-menu-content>' +
' <md-menu-item>' +
' <md-button x-ng-click="doSomething($event)"></md-button>' +
' </md-menu-item>' +
' </md-menu-content>' +
'</md-menu>';

openMenu($compile(template)($rootScope));
expect(getOpenMenuContainer().length).toBe(1);

var btn = getOpenMenuContainer()[0].querySelector('md-button');
btn.click();

waitForMenuClose();

expect(getOpenMenuContainer().length).toBe(0);
}));
itClosesWithAttributes([
'data-ng-click', 'x-ng-click',
'ui-sref','data-ui-sref', 'x-ui-sref',
'ng-href', 'data-ng-href', 'x-ng-href'
]);

function itClosesWithAttributes(types) {
for (var i = 0; i < types.length; ++i) {
it('closes with ' + types[i], testAttribute(types[i]));
}

function testAttribute(attr) {
return inject(function($rootScope, $compile) {
var template = '' +
'<md-menu>' +
' <button ng-click="$mdOpenMenu($event)">Hello World</button>' +
' <md-menu-content>' +
' <md-menu-item>' +
' <md-button ' + attr + '=""></md-button>' +
' </md-menu-item>' +
' </md-menu-content>' +
'</md-menu>';

openMenu($compile(template)($rootScope));
expect(getOpenMenuContainer().length).toBe(1);

var btn = getOpenMenuContainer()[0].querySelector('md-button');
btn.click();

waitForMenuClose();

expect(getOpenMenuContainer().length).toBe(0);
});
}
}
});

// ********************************************
Expand Down

0 comments on commit dc01149

Please sign in to comment.