From 2ad86af12ef9ac462c0b7cf59040afe789d8210e Mon Sep 17 00:00:00 2001 From: Aysel Afsar Date: Fri, 25 May 2018 15:15:15 -0400 Subject: [PATCH] feat(popover): Add click-to-dismiss popover template to core --- .../client/components/bootstrap/index.js | 1 + .../bootstrap/popover/popoverSimple.html | 4 +++ .../ohif-core/client/ui/popover/display.js | 36 +++++++++++-------- 3 files changed, 27 insertions(+), 14 deletions(-) create mode 100644 Packages/ohif-core/client/components/bootstrap/popover/popoverSimple.html diff --git a/Packages/ohif-core/client/components/bootstrap/index.js b/Packages/ohif-core/client/components/bootstrap/index.js index 00f5655ae..64cdfc92b 100644 --- a/Packages/ohif-core/client/components/bootstrap/index.js +++ b/Packages/ohif-core/client/components/bootstrap/index.js @@ -36,3 +36,4 @@ import './input/text.html'; import './notification'; import './popover/form.html'; +import './popover/popoverSimple.html'; diff --git a/Packages/ohif-core/client/components/bootstrap/popover/popoverSimple.html b/Packages/ohif-core/client/components/bootstrap/popover/popoverSimple.html new file mode 100644 index 000000000..c9790d379 --- /dev/null +++ b/Packages/ohif-core/client/components/bootstrap/popover/popoverSimple.html @@ -0,0 +1,4 @@ + \ No newline at end of file diff --git a/Packages/ohif-core/client/ui/popover/display.js b/Packages/ohif-core/client/ui/popover/display.js index d53473678..2bd5bd9c4 100644 --- a/Packages/ohif-core/client/ui/popover/display.js +++ b/Packages/ohif-core/client/ui/popover/display.js @@ -52,25 +52,33 @@ OHIF.ui.showPopover = (templateName, popoverData, options={}) => { const popoverOptions = Object.assign({} , defaults, options); popoverOptions.content = Blaze.toHTMLWithData(template, popoverData); + if (popoverOptions.hideOnClick) { + $element.click(function() { + $(this).popover('hide'); + }); + } + $element.popover(popoverOptions); - $element.one('shown.bs.popover', function(event) { - const popoverId = $element.attr('aria-describedby'); - const popover = document.getElementById(popoverId); - const $popover = $(popover); - const $popoverContent = $popover.find('.popover-content'); - const dismissPopover = () => $element.popover('hide'); + if (popoverOptions.trigger !== 'hover') { + $element.one('shown.bs.popover', function(event) { + const popoverId = $element.attr('aria-describedby'); + const popover = document.getElementById(popoverId); + const $popover = $(popover); + const $popoverContent = $popover.find('.popover-content'); + const dismissPopover = () => $element.popover('hide'); - $popoverContent.html(''); + $popoverContent.html(''); - const view = Blaze.renderWithData(template, templateData, $popoverContent[0]); - $element.one('hidden.bs.popover', () => { - Blaze.remove(view); - $element.popover('destroy'); + const view = Blaze.renderWithData(template, templateData, $popoverContent[0]); + $element.one('hidden.bs.popover', () => { + Blaze.remove(view); + $element.popover('destroy'); + }); + + promise.then(dismissPopover).catch(dismissPopover); }); - - promise.then(dismissPopover).catch(dismissPopover); - }); + } if (popoverOptions.trigger === 'manual') { $element.popover('show');