summaryrefslogtreecommitdiffstats
path: root/client/lib
diff options
context:
space:
mode:
Diffstat (limited to 'client/lib')
-rw-r--r--client/lib/escapeActions.js1
-rw-r--r--client/lib/modal.js31
2 files changed, 32 insertions, 0 deletions
diff --git a/client/lib/escapeActions.js b/client/lib/escapeActions.js
index 04e7f3f3..b3d4efe0 100644
--- a/client/lib/escapeActions.js
+++ b/client/lib/escapeActions.js
@@ -13,6 +13,7 @@ EscapeActions = {
'popup-close',
'inlinedForm',
'detailsPane',
+ 'modalWindow',
'multiselection',
'sidebarView'
],
diff --git a/client/lib/modal.js b/client/lib/modal.js
new file mode 100644
index 00000000..04a9b8b2
--- /dev/null
+++ b/client/lib/modal.js
@@ -0,0 +1,31 @@
+const closedValue = null
+
+Modal = new class {
+ constructor() {
+ this._currentModal = new ReactiveVar(closedValue)
+ }
+
+ getTemplateName() {
+ return this._currentModal.get()
+ }
+
+ isOpen() {
+ return this.getTemplateName() !== closedValue
+ }
+
+ close() {
+ this._currentModal.set(closedValue)
+ }
+
+ open(modalName) {
+ this._currentModal.set(modalName)
+ }
+};
+
+Blaze.registerHelper('Modal', Modal)
+
+EscapeActions.register('modalWindow',
+ () => Modal.close(),
+ () => Modal.isOpen(),
+ { noClickEscapeOn: '.modal-content' }
+);