summaryrefslogtreecommitdiff
path: root/app/assets/javascripts/alert_handler.js
diff options
context:
space:
mode:
Diffstat (limited to 'app/assets/javascripts/alert_handler.js')
-rw-r--r--app/assets/javascripts/alert_handler.js22
1 files changed, 15 insertions, 7 deletions
diff --git a/app/assets/javascripts/alert_handler.js b/app/assets/javascripts/alert_handler.js
index 8fffb61d1dd..26b0142f6a2 100644
--- a/app/assets/javascripts/alert_handler.js
+++ b/app/assets/javascripts/alert_handler.js
@@ -1,13 +1,21 @@
-// This allows us to dismiss alerts that we've migrated from bootstrap
-// Note: This ONLY works on alerts that are created on page load
+// This allows us to dismiss alerts and banners that we've migrated from bootstrap
+// Note: This ONLY works on elements that are created on page load
// You can follow this effort in the following epic
// https://gitlab.com/groups/gitlab-org/-/epics/4070
export default function initAlertHandler() {
- const ALERT_SELECTOR = '.gl-alert';
- const CLOSE_SELECTOR = '.gl-alert-dismiss';
+ const DISMISSIBLE_SELECTORS = ['.gl-alert', '.gl-banner'];
+ const DISMISS_LABEL = '[aria-label="Dismiss"]';
+ const DISMISS_CLASS = '.gl-alert-dismiss';
- const dismissAlert = ({ target }) => target.closest(ALERT_SELECTOR).remove();
- const closeButtons = document.querySelectorAll(`${ALERT_SELECTOR} ${CLOSE_SELECTOR}`);
- closeButtons.forEach(alert => alert.addEventListener('click', dismissAlert));
+ DISMISSIBLE_SELECTORS.forEach(selector => {
+ const elements = document.querySelectorAll(selector);
+ elements.forEach(element => {
+ const button = element.querySelector(DISMISS_LABEL) || element.querySelector(DISMISS_CLASS);
+ if (!button) {
+ return;
+ }
+ button.addEventListener('click', () => element.remove());
+ });
+ });
}