From 1582ba3ad0ed5a5f2cb2c8ec6d39ee22b8d5633f Mon Sep 17 00:00:00 2001 From: Bruno Alves de Faria Date: Fri, 10 Feb 2017 08:43:37 -0200 Subject: [PATCH] Fixing event propagation issues on components mixins --- .../client/components/base/mixins/formItem.js | 30 +++++++------------ .../client/components/base/mixins/select2.js | 14 +++++---- .../measureFlow/selectTree/selectTree.js | 9 ++++-- 3 files changed, 24 insertions(+), 29 deletions(-) diff --git a/Packages/ohif-core/client/components/base/mixins/formItem.js b/Packages/ohif-core/client/components/base/mixins/formItem.js index 6b499fda7..de5e228f6 100644 --- a/Packages/ohif-core/client/components/base/mixins/formItem.js +++ b/Packages/ohif-core/client/components/base/mixins/formItem.js @@ -271,32 +271,22 @@ OHIF.mixins.formItem = new OHIF.Mixin({ focus(event, instance) { const component = instance.component; - - // Stop here if it is an group - if (component.isGroup || component.isCustomFocus) { - return; + const isGroupOrCustomFocus = component.isGroup || component.isCustomFocus; + const isSameTarget = event.target === event.currentTarget; + if (!isGroupOrCustomFocus && isSameTarget) { + // Check for state messages and show it + component.toggleMessage(true); } - - // Prevent event bubbling - event.stopPropagation(); - - // Check for state messages and show it - component.toggleMessage(true); }, blur(event, instance) { const component = instance.component; - - // Stop here if it is an group - if (component.isGroup || component.isCustomFocus) { - return; + const isGroupOrCustomFocus = component.isGroup || component.isCustomFocus; + const isSameTarget = event.target === event.currentTarget; + if (!isGroupOrCustomFocus && isSameTarget) { + // Check for state messages and show it + component.toggleMessage(false); } - - // Prevent event bubbling - event.stopPropagation(); - - // Hide state messages - component.toggleMessage(false); } } diff --git a/Packages/ohif-core/client/components/base/mixins/select2.js b/Packages/ohif-core/client/components/base/mixins/select2.js index 987495dd1..bab042119 100644 --- a/Packages/ohif-core/client/components/base/mixins/select2.js +++ b/Packages/ohif-core/client/components/base/mixins/select2.js @@ -65,13 +65,15 @@ OHIF.mixins.select2 = new OHIF.Mixin({ // Attach focus and blur handlers to focusable elements $(elements).on('focus', event => { - event.stopPropagation(); - // Show the state message on elements focus - component.toggleMessage(true); + if (event.target === event.currentTarget) { + // Show the state message on elements focus + component.toggleMessage(true); + } }).on('blur', event => { - event.stopPropagation(); - // Hide the state message on elements blur - component.toggleMessage(false); + if (event.target === event.currentTarget) { + // Hide the state message on elements blur + component.toggleMessage(false); + } }); }, diff --git a/Packages/ohif-measurements/client/components/measureFlow/selectTree/selectTree.js b/Packages/ohif-measurements/client/components/measureFlow/selectTree/selectTree.js index ee6d78cd6..28d692183 100644 --- a/Packages/ohif-measurements/client/components/measureFlow/selectTree/selectTree.js +++ b/Packages/ohif-measurements/client/components/measureFlow/selectTree/selectTree.js @@ -1,6 +1,7 @@ import { OHIF } from 'meteor/ohif:core'; import { Meteor } from 'meteor/meteor'; import { Template } from 'meteor/templating'; +import { Tracker } from 'meteor/tracker'; import { ReactiveVar } from 'meteor/reactive-var'; import { _ } from 'meteor/underscore'; import { $ } from 'meteor/jquery'; @@ -24,7 +25,7 @@ Template.selectTree.onCreated(() => { const leaves = instance.data.component.getLeaves(); // Generate an object with encoded keys from the tree leaves - leavesObject = {}; + const leavesObject = {}; _.each(leaves, leaf => { leavesObject[OHIF.string.encodeId(leaf.value)] = leaf; }); @@ -273,7 +274,7 @@ Template.selectTree.events({ instance.setSelected(false); // Get the index of the breadcrumb's clicked option - const index = $(event.currentTarget).attr('data-index') | 0; + const index = parseInt($(event.currentTarget).attr('data-index')); // Set the current instance let currentInstance = instance.component.parent.templateInstance; @@ -323,7 +324,9 @@ Template.selectTree.helpers({ const sortedItems = []; _.each(begin, (item, index) => { sortedItems.push(item); - items[index] && sortedItems.push(items[index]); + if (items[index]) { + sortedItems.push(items[index]); + } }); items = sortedItems; }