Fixing event propagation issues on components mixins
This commit is contained in:
1 parent
4107ed1dfa
commit
1582ba3ad0
3 files changed
+24
-29
No files matched your search
@@ -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);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
});
|
||||
},
|
||||
|
||||
|
||||
Reference in new issue
Block a user