@openeuropa/bcl-theme-joinup 1.5.0 → 1.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -3028,6 +3028,50 @@ enableDismissTrigger(Offcanvas);
3028
3028
 
3029
3029
  defineJQueryPlugin(Offcanvas);
3030
3030
 
3031
+ /**
3032
+ * AccessibleToggle enhances Bootstrap Modal and Offcanvas components by:
3033
+ * - Adding ARIA attributes for improved accessibility.
3034
+ * - Updating `aria-expanded` on trigger elements based on visibility.
3035
+ * Automatically initializes all modal and offcanvas triggers on the page.
3036
+ */
3037
+ class AccessibleToggle {
3038
+ constructor(triggerElement, type) {
3039
+ this.triggerElement = triggerElement;
3040
+ this.type = type;
3041
+ const target = triggerElement.getAttribute("data-bs-target") || triggerElement.getAttribute("href");
3042
+ this.targetElement = SelectorEngine.findOne(target);
3043
+ if (this.type === "modal") {
3044
+ this.instance = Modal.getOrCreateInstance(this.targetElement);
3045
+ } else if (this.type === "offcanvas") {
3046
+ this.instance = Offcanvas.getOrCreateInstance(this.targetElement);
3047
+ }
3048
+ this.addAriaAttributes();
3049
+ this.addEventListeners();
3050
+ }
3051
+ addAriaAttributes() {
3052
+ if (this.triggerElement) {
3053
+ this.triggerElement.setAttribute("aria-haspopup", "true");
3054
+ this.triggerElement.setAttribute("aria-expanded", "false");
3055
+ }
3056
+ }
3057
+ addEventListeners() {
3058
+ const showEvent = this.type === "modal" ? "show.bs.modal" : "show.bs.offcanvas";
3059
+ const hideEvent = this.type === "modal" ? "hide.bs.modal" : "hide.bs.offcanvas";
3060
+ EventHandler.on(this.targetElement, showEvent, () => {
3061
+ this.triggerElement.setAttribute("aria-expanded", "true");
3062
+ });
3063
+ EventHandler.on(this.targetElement, hideEvent, () => {
3064
+ this.triggerElement.setAttribute("aria-expanded", "false");
3065
+ });
3066
+ }
3067
+ static init(toggles) {
3068
+ toggles.forEach(toggle => {
3069
+ const triggerElements = SelectorEngine.find(toggle.selector);
3070
+ triggerElements.forEach(triggerElement => new AccessibleToggle(triggerElement, toggle.type));
3071
+ });
3072
+ }
3073
+ }
3074
+
3031
3075
  /**
3032
3076
  * --------------------------------------------------------------------------
3033
3077
  * Bootstrap (v5.2.3): util/sanitizer.js
@@ -4827,5 +4871,5 @@ enableDismissTrigger(Toast);
4827
4871
 
4828
4872
  defineJQueryPlugin(Toast);
4829
4873
 
4830
- export { Alert, Button, Carousel, Collapse, Dropdown, Gallery, Modal, Offcanvas, Popover, ScrollSpy, ScrollSpy$1 as ScrollSpyV2, Tab, Toast, Tooltip };
4874
+ export { AccessibleToggle, Alert, Button, Carousel, Collapse, Dropdown, Gallery, Modal, Offcanvas, Popover, ScrollSpy, ScrollSpy$1 as ScrollSpyV2, Tab, Toast, Tooltip };
4831
4875
  //# sourceMappingURL=oe-bcl-joinup.esm.js.map