Fix the links in table rows bug

Click events were greedily redirecting to the resource pages instead
of first yielding to the anchor tag clicked if an anchor tag was in
fact clicked.
This commit is contained in:
Michael Lange
2017-09-26 11:57:46 -07:00
parent 7dc62aec37
commit 5c5de58b8f
6 changed files with 30 additions and 5 deletions

View File

@@ -1,4 +1,5 @@
import Ember from 'ember';
import { lazyClick } from '../helpers/lazy-click';
const { Component } = Ember;
@@ -15,6 +16,6 @@ export default Component.extend({
onClick() {},
click(event) {
this.get('onClick')(event);
lazyClick([this.get('onClick'), event]);
},
});

View File

@@ -1,4 +1,5 @@
import Ember from 'ember';
import { lazyClick } from '../helpers/lazy-click';
const { Component } = Ember;
@@ -11,7 +12,7 @@ export default Component.extend({
onClick() {},
click(event) {
this.get('onClick')(event);
lazyClick([this.get('onClick'), event]);
},
didReceiveAttrs() {

View File

@@ -1,4 +1,5 @@
import Ember from 'ember';
import { lazyClick } from '../helpers/lazy-click';
const { Component } = Ember;
@@ -11,7 +12,7 @@ export default Component.extend({
onClick() {},
click(event) {
this.get('onClick')(event);
lazyClick([this.get('onClick'), event]);
},
didReceiveAttrs() {

View File

@@ -1,4 +1,5 @@
import Ember from 'ember';
import { lazyClick } from '../helpers/lazy-click';
const { Component, inject, computed } = Ember;
@@ -28,6 +29,7 @@ export default Component.extend({
}),
click() {
this.get('router').transitionTo('servers.server', this.get('agent'));
const transition = () => this.get('router').transitionTo('servers.server', this.get('agent'));
lazyClick([transition, event]);
},
});

View File

@@ -1,4 +1,5 @@
import Ember from 'ember';
import { lazyClick } from '../helpers/lazy-click';
const { Component } = Ember;
@@ -12,6 +13,6 @@ export default Component.extend({
onClick() {},
click(event) {
this.get('onClick')(event);
lazyClick([this.get('onClick'), event]);
},
});

View File

@@ -0,0 +1,19 @@
import Ember from 'ember';
const { Helper, $ } = Ember;
/**
* Lazy Click Event
*
* Usage: {{lazy-click action}}
*
* Calls the provided action only if the target isn't an anchor
* that should be handled instead.
*/
export function lazyClick([onClick, event]) {
if (!$(event.target).is('a')) {
onClick(event);
}
}
export default Helper.helper(lazyClick);