summaryrefslogtreecommitdiff
path: root/ext/bg/js/settings/modal.js
diff options
context:
space:
mode:
authortoasted-nutbread <toasted-nutbread@users.noreply.github.com>2020-10-18 09:27:32 -0400
committerGitHub <noreply@github.com>2020-10-18 09:27:32 -0400
commit6f1bdf0c6664a0af608913093fd086b43bdf8700 (patch)
tree7c6311cb58ae6d2a2f435422a52fb18f2d18d0cd /ext/bg/js/settings/modal.js
parenta4550627af2968019ea4bb08ff1b0a66fa9d7615 (diff)
Modal split (#930)
* Move jQuery-based modal into a separate class * Remove jQuery conditions for default modal
Diffstat (limited to 'ext/bg/js/settings/modal.js')
-rw-r--r--ext/bg/js/settings/modal.js86
1 files changed, 30 insertions, 56 deletions
diff --git a/ext/bg/js/settings/modal.js b/ext/bg/js/settings/modal.js
index 0b09f6ca..dadab111 100644
--- a/ext/bg/js/settings/modal.js
+++ b/ext/bg/js/settings/modal.js
@@ -19,7 +19,6 @@ class Modal extends EventDispatcher {
constructor(node) {
super();
this._node = node;
- this._eventListeners = new EventListenerCollection();
this._mutationObserver = null;
this._visible = false;
this._visibleClassName = 'modal-container-open';
@@ -34,64 +33,48 @@ class Modal extends EventDispatcher {
}
isVisible() {
- if (this._useJqueryModal()) {
- return !!(this._getWrappedNode().data('bs.modal') || {}).isShown;
- } else {
- return this._node.classList.contains(this._visibleClassName);
- }
+ return this._node.classList.contains(this._visibleClassName);
}
setVisible(value, animate=true) {
value = !!value;
- if (this._useJqueryModal()) {
- this._getWrappedNode().modal(value ? 'show' : 'hide');
- } else {
- const {classList} = this._node;
- if (classList.contains(this._visibleClassName) === value) { return; }
+ const {classList} = this._node;
+ if (classList.contains(this._visibleClassName) === value) { return; }
- if (this._closeTimer !== null) {
- clearTimeout(this._closeTimer);
- this._closeTimer = null;
- }
+ if (this._closeTimer !== null) {
+ clearTimeout(this._closeTimer);
+ this._closeTimer = null;
+ }
- if (value) {
- if (animate) { classList.add(this._openingClassName); }
- classList.remove(this._closingClassName);
- getComputedStyle(this._node).getPropertyValue('display'); // Force update of CSS display property, allowing animation
- classList.add(this._visibleClassName);
- if (animate) { classList.remove(this._openingClassName); }
- this._node.focus();
- } else {
- if (animate) { classList.add(this._closingClassName); }
- classList.remove(this._visibleClassName);
- if (animate) {
- this._closeTimer = setTimeout(() => {
- this._closeTimer = null;
- classList.remove(this._closingClassName);
- }, this._closingAnimationDuration);
- }
+ if (value) {
+ if (animate) { classList.add(this._openingClassName); }
+ classList.remove(this._closingClassName);
+ getComputedStyle(this._node).getPropertyValue('display'); // Force update of CSS display property, allowing animation
+ classList.add(this._visibleClassName);
+ if (animate) { classList.remove(this._openingClassName); }
+ this._node.focus();
+ } else {
+ if (animate) { classList.add(this._closingClassName); }
+ classList.remove(this._visibleClassName);
+ if (animate) {
+ this._closeTimer = setTimeout(() => {
+ this._closeTimer = null;
+ classList.remove(this._closingClassName);
+ }, this._closingAnimationDuration);
}
}
}
on(eventName, callback) {
if (eventName === 'visibilityChanged') {
- if (this._useJqueryModal()) {
- if (this._eventListeners.size === 0) {
- const wrappedNode = this._getWrappedNode();
- this._eventListeners.on(wrappedNode, 'hidden.bs.modal', this._onModalHide.bind(this));
- this._eventListeners.on(wrappedNode, 'shown.bs.modal', this._onModalShow.bind(this));
- }
- } else {
- if (this._mutationObserver === null) {
- this._visible = this._node.classList.contains(this._visibleClassName);
- this._mutationObserver = new MutationObserver(this._onMutation.bind(this));
- this._mutationObserver.observe(this._node, {
- attributes: true,
- attributeFilter: ['class'],
- attributeOldValue: true
- });
- }
+ if (this._mutationObserver === null) {
+ this._visible = this._node.classList.contains(this._visibleClassName);
+ this._mutationObserver = new MutationObserver(this._onMutation.bind(this));
+ this._mutationObserver.observe(this._node, {
+ attributes: true,
+ attributeFilter: ['class'],
+ attributeOldValue: true
+ });
}
}
return super.on(eventName, callback);
@@ -104,7 +87,6 @@ class Modal extends EventDispatcher {
this._mutationObserver.disconnect();
this._mutationObserver = null;
}
- this._eventListeners.removeAllEventListeners();
}
return result;
}
@@ -125,12 +107,4 @@ class Modal extends EventDispatcher {
this._visible = visible;
this.trigger('visibilityChanged', {visible});
}
-
- _useJqueryModal() {
- return (typeof jQuery !== 'undefined');
- }
-
- _getWrappedNode() {
- return $(this._node);
- }
}