fix(modals) Fixing DOM issues with modals

This commit is contained in:
Bruno Alves de Faria 2018-04-10 16:04:14 -03:00 committed by Erik Ziegler
parent 2c790ff674
commit 50374038a3
3 changed files with 24 additions and 5 deletions

View File

@ -1,7 +1,7 @@
<template name="dialogConfirm">
{{>dialogForm (extend this
{{#dialogForm (extend this
dialogClass='modal-sm'
title=(choose this.title 'Confirmation')
message=(choose this.message 'Are you sure you want to perform this action?')
)}}
message=(valueIf UI.contentBlock '' (choose this.message 'Are you sure you want to perform this action?'))
)}}{{>UI.contentBlock}}{{/dialogForm}}
</template>

View File

@ -7,8 +7,7 @@ Template.dialogSimple.onCreated(() => {
const instance = Template.instance();
instance.close = () => {
const $modal = instance.$('.modal');
$modal.one('hidden.bs.modal', () => instance.data.promiseResolve()).modal('hide');
instance.$('.modal').modal('hide');
};
// Automatically close the modal if a timeout value was given
@ -31,6 +30,9 @@ Template.dialogSimple.onRendered(() => {
// Create the bootstrap modal
$modal.modal(modalOptions);
// Resolve the promise as soon as the modal is closed
$modal.one('hidden.bs.modal', () => instance.data.promiseResolve());
let position = instance.data.position;
const { event } = instance.data;

View File

@ -4,6 +4,9 @@ import { _ } from 'meteor/underscore';
import { $ } from 'meteor/jquery';
import { OHIF } from 'meteor/ohif:core';
let zIndexBackdrop = 1060;
let zIndexModal = 1061;
OHIF.ui.showDialog = (templateName, dialogData={}) => {
// Check if the given template exists
const template = Template[templateName];
@ -49,6 +52,20 @@ OHIF.ui.showDialog = (templateName, dialogData={}) => {
$modal = $node.find('.modal:first');
}
$modal.one('show.bs.modal', function() {
setTimeout(() => {
const $modal = $(this);
const modal = $modal.data('bs.modal');
if (!modal) return;
const { $backdrop } = modal;
if (!$backdrop) return;
$backdrop.css('z-index', zIndexBackdrop);
$modal.css('z-index', zIndexModal);
zIndexBackdrop += 2;
zIndexModal += 2;
});
});
// Destroy the created dialog view when the promise is either resolved or rejected
const dismissModal = (hideFirst=false) => {
if (hideFirst || (dialogData && dialogData.promise && $modal)) {