diff --git a/.yarn/install-state.gz b/.yarn/install-state.gz index 3b86d688b..ea77174d7 100644 Binary files a/.yarn/install-state.gz and b/.yarn/install-state.gz differ diff --git a/src/components/bcl-navbar/__snapshots__/navbar.test.js.snap b/src/components/bcl-navbar/__snapshots__/navbar.test.js.snap index a9d33e7c2..d92a5f291 100644 --- a/src/components/bcl-navbar/__snapshots__/navbar.test.js.snap +++ b/src/components/bcl-navbar/__snapshots__/navbar.test.js.snap @@ -38,6 +38,256 @@ exports[`OE - navbar dark renders correctly 1`] = `
+ Description text, lorem ipsum dolor sit amet, consectetur adipiscing elit. +
+ + Discover more + + +
+ + Description text, lorem ipsum dolor sit amet, consectetur adipiscing elit. +
+ + Discover more + + +
+ + Description text, lorem ipsum dolor sit amet, consectetur adipiscing elit. +
+ + Discover more + + +
+ + Description text, lorem ipsum dolor sit amet, consectetur adipiscing elit. +
+ + Discover more + + +
+ + Description text, lorem ipsum dolor sit amet, consectetur adipiscing elit. +
+ + Discover more + + +
+ + Description text, lorem ipsum dolor sit amet, consectetur adipiscing elit. +
+ + Discover more + + +
+ + Description text, lorem ipsum dolor sit amet, consectetur adipiscing elit. +
+ + Discover more + + +
+ + Description text, lorem ipsum dolor sit amet, consectetur adipiscing elit. +
+ + Discover more + + +
+ + Description text, lorem ipsum dolor sit amet, consectetur adipiscing elit. +
+ + Discover more + + +
+ + Description text, lorem ipsum dolor sit amet, consectetur adipiscing elit. +
+ + Discover more + + +
+ + Description text, lorem ipsum dolor sit amet, consectetur adipiscing elit. +
+ + Discover more + + +
+ + Description text, lorem ipsum dolor sit amet, consectetur adipiscing elit. +
+ + Discover more + + +
+ + Description text, lorem ipsum dolor sit amet, consectetur adipiscing elit. +
+ + Discover more + + +
+ + Description text, lorem ipsum dolor sit amet, consectetur adipiscing elit. +
+ + Discover more + + +
+ + Description text, lorem ipsum dolor sit amet, consectetur adipiscing elit. +
+ + Discover more + + +
+ + Description text, lorem ipsum dolor sit amet, consectetur adipiscing elit. +
+ + Discover more + + +
+ + Description text, lorem ipsum dolor sit amet, consectetur adipiscing elit. +
+ + Discover more + + +
+ + Description text, lorem ipsum dolor sit amet, consectetur adipiscing elit. +
+ + Discover more + + +
+ + Description text, lorem ipsum dolor sit amet, consectetur adipiscing elit. +
+ + Discover more + + +
+ + Description text, lorem ipsum dolor sit amet, consectetur adipiscing elit. +
+ + Discover more + + +
+ Description text, lorem ipsum dolor sit amet, consectetur adipiscing elit.
", + items: [ + { + id: "dropdown-megamenu-inner", + trigger: { + label: "Base Category Item", + path: "/example.html", + }, + items: [ + { + label: "Base Sub Category Item", + path: "/example.html", + }, + { + label: "Base Sub Category Item", + path: "/example.html", + }, + { + label: "Base Sub Category Item", + path: "/example.html", + }, + { + label: "Base Sub Category Item", + path: "/example.html", + }, + { + label: "Base Sub Category Item", + path: "/example.html", + }, + ], + }, + { + label: "Base Category Item", + path: "/example.html", + }, + { + id: "dropdown-megamenu-inner-2", + trigger: { + label: "Base Category Item", + path: "/example.html", + }, + collapse: + " Example link
",
+ items: [
+ {
+ label: "Base Sub Category Item",
+ path: "/example.html",
+ },
+ {
+ label: "Base Sub Category Item",
+ path: "/example.html",
+ },
+ {
+ label: "Base Sub Category Item",
+ path: "/example.html",
+ },
+ {
+ label: "Base Sub Category Item",
+ path: "/example.html",
+ },
+ {
+ label: "Base Sub Category Item",
+ path: "/example.html",
+ },
+ ],
+ },
+ {
+ label: "Base Category Item",
+ path: "/example.html",
+ },
+ {
+ label: "Base Category Item",
+ path: "/example.html",
+ },
+ {
+ label: "Base Category Item",
+ path: "/example.html",
+ },
+ ],
+};
diff --git a/src/compositions/bcl-mega-menu/mega-menu.html.twig b/src/compositions/bcl-mega-menu/mega-menu.html.twig
new file mode 100644
index 000000000..d350e8fae
--- /dev/null
+++ b/src/compositions/bcl-mega-menu/mega-menu.html.twig
@@ -0,0 +1,152 @@
+{% apply spaceless %}
+
+{# Parameters:
+ - id (string) (default: dropdown-random(1000))
+ - link (boolean) (default: false) - sets trigger to link, default is button
+ - trigger (link or button)
+ - content_block (block) (default: '')
+ - content_link (link)
+ - icon_path (string) (default: '')
+ - min_height (string) (default: '300px')
+ ! set min-height of mega-menu
+ - items (object[])
+ format: [
+ {
+ - link or dropdown
+ ! dropdown extra property:
+ collapse (render) - to showcase on the last column
+ }
+ ]
+ - back_button_label (string) (default: 'Back')
+ - icon_path (string) (default: '')
+#}
+
+{% set _id = id|default('dropdown-' ~ random(1000)) %}
+{% set _link = link ?? false %}
+{% set _trigger = trigger|default({}) %}
+{% set _content_block = content_block|default('') %}
+{% set _content_link = content_link|default({}) %}
+{% set _icon_path = icon_path|default('') %}
+{% set _min_height = min_height|default('300px') %}
+{% set _items = items|default([]) %}
+{% set _back_button_label = back_button_label|default('Back') %}
+{% set _icon_path = icon_path|default('') %}
+
+{% if attributes is empty %}
+ {% set attributes = create_attribute() %}
+{% endif %}
+
+{% set _classes = ['bcl-mega-menu'] %}
+
+{% set attributes = attributes.setAttribute('aria-labelledby', _id).addClass(_classes) %}
+
+{% if _trigger.attributes is empty %}
+ {% set _trigger = _trigger|merge({
+ attributes: create_attribute()
+ }) %}
+{% endif %}
+{% set _trigger = _trigger|merge({
+ attributes: _trigger.attributes.addClass(['dropdown-toggle'])
+ .setAttribute('aria-expanded', 'false')
+ .setAttribute('data-bs-toggle', 'dropdown')
+ .setAttribute('data-bs-auto-close', 'outside')
+ .setAttribute('id', _id)
+}) %}
+{% if _link %}
+ {% set _trigger = _trigger|merge({
+ attributes: _trigger.attributes.setAttribute('role', 'button')
+ }) %}
+{% else %}
+ {% set _trigger = _trigger|merge({
+ attributes: _trigger.attributes.setAttribute('autocomplete', 'off')
+ }) %}
+{% endif %}
+
++ Description text, lorem ipsum dolor sit amet, consectetur adipiscing elit. +
+ + Discover more + + +
+ + Description text, lorem ipsum dolor sit amet, consectetur adipiscing elit. +
+ + Discover more + + +
+ + Description text, lorem ipsum dolor sit amet, consectetur adipiscing elit. +
+ + Discover more + + +
+ + Description text, lorem ipsum dolor sit amet, consectetur adipiscing elit. +
+ + Discover more + + +
+ + Description text, lorem ipsum dolor sit amet, consectetur adipiscing elit. +
+ + Discover more + + +
+ + Description text, lorem ipsum dolor sit amet, consectetur adipiscing elit. +
+ + Discover more + + +
+ + Description text, lorem ipsum dolor sit amet, consectetur adipiscing elit. +
+ + Discover more + + +
+ + Description text, lorem ipsum dolor sit amet, consectetur adipiscing elit. +
+ + Discover more + + +
+ + Description text, lorem ipsum dolor sit amet, consectetur adipiscing elit. +
+ + Discover more + + +
+ + Description text, lorem ipsum dolor sit amet, consectetur adipiscing elit. +
+ + Discover more + + +
+ + Description text, lorem ipsum dolor sit amet, consectetur adipiscing elit. +
+ + Discover more + + +
+ + Description text, lorem ipsum dolor sit amet, consectetur adipiscing elit. +
+ + Discover more + + +
+ + Description text, lorem ipsum dolor sit amet, consectetur adipiscing elit. +
+ + Discover more + + +
+ + Description text, lorem ipsum dolor sit amet, consectetur adipiscing elit. +
+ + Discover more + + +
+ + Description text, lorem ipsum dolor sit amet, consectetur adipiscing elit. +
+ + Discover more + + +
+ + Description text, lorem ipsum dolor sit amet, consectetur adipiscing elit. +
+ + Discover more + + +
+ + Description text, lorem ipsum dolor sit amet, consectetur adipiscing elit. +
+ + Discover more + + +
+ + Description text, lorem ipsum dolor sit amet, consectetur adipiscing elit. +
+ + Discover more + + +
+ + Description text, lorem ipsum dolor sit amet, consectetur adipiscing elit. +
+ + Discover more + + +
+ + Description text, lorem ipsum dolor sit amet, consectetur adipiscing elit. +
+ + Discover more + + +
+ + Description text, lorem ipsum dolor sit amet, consectetur adipiscing elit. +
+ + Discover more + + +
+ + Description text, lorem ipsum dolor sit amet, consectetur adipiscing elit. +
+ + Discover more + + +
+ Description text, lorem ipsum dolor sit amet, consectetur adipiscing elit.
", + items: [ + { + id: "dropdown-megamenu-inner", + trigger: { + label: "Base Category Item", + path: "/example.html", + }, + see_all: { + label: "See all", + path: "/example.html", + }, + items: [ + { + label: "Base Sub Category Item", + path: "/example.html", + }, + { + label: "Base Sub Category Item", + path: "/example.html", + }, + { + label: "Base Sub Category Item", + path: "/example.html", + }, + { + label: "Base Sub Category Item", + path: "/example.html", + }, + { + label: "Base Sub Category Item", + path: "/example.html", + }, + ], + }, + { + label: "Base Category Item", + path: "/example.html", + }, + { + id: "dropdown-megamenu-inner-2", + trigger: { + label: "Base Category Item", + path: "/example.html", + }, + collapse: + " Example link
",
+ items: [
+ {
+ label: "Base Sub Category Item",
+ path: "/example.html",
+ },
+ {
+ label: "Base Sub Category Item",
+ path: "/example.html",
+ },
+ {
+ label: "Base Sub Category Item",
+ path: "/example.html",
+ },
+ {
+ label: "Base Sub Category Item",
+ path: "/example.html",
+ },
+ {
+ label: "Base Sub Category Item",
+ path: "/example.html",
+ },
+ ],
+ },
+ {
+ label: "Base Category Item",
+ path: "/example.html",
+ },
+ {
+ label: "Base Category Item",
+ path: "/example.html",
+ },
+ {
+ label: "Base Category Item",
+ path: "/example.html",
+ },
+ ],
+ },
{
label: "Home",
path: "/example.html",
diff --git a/src/data/navbar/data.js b/src/data/navbar/data.js
index 54af4e972..e519019a0 100644
--- a/src/data/navbar/data.js
+++ b/src/data/navbar/data.js
@@ -10,6 +10,109 @@ module.exports = {
navbar: true,
attributes: new drupalAttribute().addClass("me-auto"),
items: [
+ {
+ mega_menu: true,
+ link: true,
+ icon_path: "/icons.svg",
+ id: "dropdown-megamenu",
+ trigger: {
+ label: "A link with dropdown",
+ path: "/example.html",
+ attributes: new drupalAttribute().addClass("nav-link"),
+ },
+ id: "dropdown-megamenu",
+ content_link: {
+ label: "Discover more",
+ path: "/example.html",
+ icon: {
+ name: "arrow-right",
+ },
+ },
+ see_all: {
+ label: "See all",
+ path: "/example.html",
+ },
+ content_block:
+ "Description text, lorem ipsum dolor sit amet, consectetur adipiscing elit.
", + items: [ + { + id: "dropdown-megamenu-inner", + trigger: { + label: "Base Category Item", + path: "/example.html", + }, + items: [ + { + label: "Base Sub Category Item", + path: "/example.html", + }, + { + label: "Base Sub Category Item", + path: "/example.html", + }, + { + label: "Base Sub Category Item", + path: "/example.html", + }, + { + label: "Base Sub Category Item", + path: "/example.html", + }, + { + label: "Base Sub Category Item", + path: "/example.html", + }, + ], + }, + { + label: "Base Category Item", + path: "/example.html", + }, + { + id: "dropdown-megamenu-inner-2", + trigger: { + label: "Base Category Item", + path: "/example.html", + }, + collapse: + " Example link
",
+ items: [
+ {
+ label: "Base Sub Category Item",
+ path: "/example.html",
+ },
+ {
+ label: "Base Sub Category Item",
+ path: "/example.html",
+ },
+ {
+ label: "Base Sub Category Item",
+ path: "/example.html",
+ },
+ {
+ label: "Base Sub Category Item",
+ path: "/example.html",
+ },
+ {
+ label: "Base Sub Category Item",
+ path: "/example.html",
+ },
+ ],
+ },
+ {
+ label: "Base Category Item",
+ path: "/example.html",
+ },
+ {
+ label: "Base Category Item",
+ path: "/example.html",
+ },
+ {
+ label: "Base Category Item",
+ path: "/example.html",
+ },
+ ],
+ },
{
label: "I'm a link",
path: "#first",
diff --git a/src/themes/default/src/js/index.esm.js b/src/themes/default/src/js/index.esm.js
index f435ecbc9..5528d24d4 100644
--- a/src/themes/default/src/js/index.esm.js
+++ b/src/themes/default/src/js/index.esm.js
@@ -11,6 +11,7 @@ import Carousel from "@openeuropa/bcl-bootstrap/js/src/carousel";
import Collapse from "@openeuropa/bcl-bootstrap/js/src/collapse";
import Dropdown from "@openeuropa/bcl-bootstrap/js/src/dropdown";
import Modal from "@openeuropa/bcl-bootstrap/js/src/modal";
+import MegaMenu from "@openeuropa/bcl-theme-default/src/js/mega-menu/mega-menu";
import Offcanvas from "@openeuropa/bcl-bootstrap/js/src/offcanvas";
import Popover from "@openeuropa/bcl-bootstrap/js/src/popover";
import ScrollSpyV2 from "@openeuropa/bcl-bootstrap/js/src/scrollspy";
@@ -29,6 +30,7 @@ export {
Collapse,
Dropdown,
Modal,
+ MegaMenu,
Offcanvas,
Popover,
ScrollSpyV2,
diff --git a/src/themes/default/src/js/index.umd.js b/src/themes/default/src/js/index.umd.js
index a92a95a1f..b6d4d87d9 100644
--- a/src/themes/default/src/js/index.umd.js
+++ b/src/themes/default/src/js/index.umd.js
@@ -11,6 +11,7 @@ import Carousel from "@openeuropa/bcl-bootstrap/js/src/carousel";
import Collapse from "@openeuropa/bcl-bootstrap/js/src/collapse";
import Dropdown from "@openeuropa/bcl-bootstrap/js/src/dropdown";
import Modal from "@openeuropa/bcl-bootstrap/js/src/modal";
+import MegaMenu from "@openeuropa/bcl-theme-default/src/js/mega-menu/mega-menu";
import Offcanvas from "@openeuropa/bcl-bootstrap/js/src/offcanvas";
import Popover from "@openeuropa/bcl-bootstrap/js/src/popover";
import ScrollSpyV2 from "@openeuropa/bcl-bootstrap/js/src/scrollspy";
@@ -29,6 +30,7 @@ export default {
Collapse,
Dropdown,
Modal,
+ MegaMenu,
Offcanvas,
Popover,
ScrollSpyV2,
diff --git a/src/themes/default/src/js/mega-menu/mega-menu.js b/src/themes/default/src/js/mega-menu/mega-menu.js
new file mode 100644
index 000000000..4fb56453d
--- /dev/null
+++ b/src/themes/default/src/js/mega-menu/mega-menu.js
@@ -0,0 +1,52 @@
+import Dropdown from "@openeuropa/bcl-bootstrap/js/src/dropdown";
+import SelectorEngine from "@openeuropa/bcl-bootstrap/js/src/dom/selector-engine";
+import EventHandler from "@openeuropa/bcl-bootstrap/js/src/dom/event-handler";
+
+class MegaMenu {
+ constructor(root) {
+ this.root = root;
+ this.parentToggle = SelectorEngine.findOne('[data-bs-toggle="dropdown"]', this.root);
+ if (!this.parentToggle) return;
+ this.parentInstance = Dropdown.getOrCreateInstance(this.parentToggle);
+ this.childToggles = SelectorEngine.find('.dropdown > [data-bs-toggle="dropdown"]', this.root);
+ this.backButton = SelectorEngine.findOne('.back-button', this.root);
+ this.addEventListeners();
+ }
+
+ addEventListeners() {
+ EventHandler.on(this.parentToggle, "shown.bs.dropdown", () => {
+ if (!window.matchMedia("(min-width: 992px)").matches) return;
+ if (this.childToggles.some(toggle => toggle.parentElement.classList.contains("show"))) return;
+ const firstToggle = this.childToggles[0];
+ Dropdown.getOrCreateInstance(firstToggle).show();
+ });
+ this.childToggles.forEach((toggle) => {
+ const dropdownInstance = Dropdown.getOrCreateInstance(toggle);
+ EventHandler.on(toggle, "click", (e) => {
+ e.preventDefault();
+ this.childToggles.forEach((other) => {
+ Dropdown.getOrCreateInstance(other).hide();
+ });
+ dropdownInstance.show();
+ });
+ });
+ if (this.backButton) {
+ EventHandler.on(this.backButton, "click", () => {
+ this.childToggles.forEach((toggle) => {
+ Dropdown.getOrCreateInstance(toggle).hide();
+ });
+ });
+ }
+ }
+
+ static init(selector = ".bcl-mega-menu") {
+ const megaMenus = SelectorEngine.find(selector);
+ megaMenus.forEach((menuEl) => new MegaMenu(menuEl));
+ }
+}
+
+document.addEventListener("DOMContentLoaded", () => {
+ MegaMenu.init();
+});
+
+export default MegaMenu;
diff --git a/src/themes/default/src/scss/_mega-menu.scss b/src/themes/default/src/scss/_mega-menu.scss
new file mode 100644
index 000000000..1c7e67892
--- /dev/null
+++ b/src/themes/default/src/scss/_mega-menu.scss
@@ -0,0 +1,233 @@
+/* stylelint-disable no-descending-specificity, declaration-no-important */
+.nav-item:has(> .bcl-mega-menu) {
+ position: relative;
+}
+.bcl-mega-menu {
+ &.nav-link {
+ padding: 0;
+ }
+ > .show + .mega-menu-container.dropdown-menu {
+ display: block;
+ }
+ .mega-menu-container.dropdown-menu {
+ position: absolute;
+ min-height: var(--bcl-mm-min-height);
+ display: none;
+ width: 100%;
+ padding: 0 map-get($spacers, 3);
+ border-radius: 0;
+ border-bottom: 1px solid var(--bs-dropdown-border-color);
+ border-left: 0;
+ border-right: 0;
+ border-top: 0;
+ top: 100%;
+ margin: 8px 0 0;
+ .back-button {
+ display: none;
+ }
+ &:has(.show) {
+ .back-button {
+ display: block;
+ }
+ .back-button-block {
+ padding-bottom: 46px;
+ }
+ }
+ > .row {
+ flex: 1;
+ }
+ .content-block {
+ position: relative;
+ height: 100%;
+ margin: 0 -1rem;
+ padding: map-get($spacers, 3);
+ &:after {
+ content: "";
+ pointer-events: none;
+ position: absolute;
+ }
+ }
+ .content-link {
+ text-decoration: none;
+ &:hover {
+ text-decoration: underline;
+ }
+ }
+ .navigation-items {
+ width: 100%;
+ height: 100%;
+ > a,
+ > button,
+ > .dropdown > a,
+ li > button,
+ li > a {
+ padding: map-get($spacers, 2) map-get($spacers, "3-5");
+ white-space: normal;
+ &:has(svg) {
+ padding-right: map-get($spacers, 5);
+ }
+ &.active,
+ &.show {
+ background: $primary-bg-subtle;
+ }
+ &:hover {
+ text-decoration: underline;
+ }
+ }
+ li:has(.see-all-button) {
+ margin: 0 map-get($spacers, "3-5");
+ position: sticky;
+ top: 100%;
+ }
+ .dropdown-toggle,
+ > a {
+ color: $dark;
+ display: block;
+ text-decoration: none;
+ position: relative;
+ &.show {
+ color: $dark;
+ text-decoration: none;
+ &:after {
+ display: none;
+ }
+ }
+ &:after {
+ display: none;
+ }
+ > svg {
+ position: absolute;
+ right: 20px;
+ top: 50%;
+ transform: translateY(-50%);
+ }
+ }
+ .dropdown {
+ position: static;
+ &:has(.show) {
+ background: $blue-50;
+ & + .collapse {
+ display: block;
+ }
+ }
+ &:has(+ .collapse) {
+ .dropdown-menu {
+ height: 50%;
+ }
+ }
+ .dropdown-menu {
+ transform: none !important;
+ right: auto !important;
+ left: 0 !important;
+ width: 100%;
+ height: 100%;
+ border: 0;
+ overflow: scroll;
+ position: absolute;
+ padding: 0;
+ border-radius: 0;
+ background: $neutral-bg-subtle;
+ margin: 0;
+ .dropdown-item {
+ color: $link-color;
+ &:hover {
+ background: transparent;
+ text-decoration: underline;
+ }
+ &.see-all-button {
+ padding-left: 0;
+ padding-right: 0;
+ color: $dark;
+ position: relative;
+ &:after {
+ position: absolute;
+ top: 0;
+ left: 0;
+ height: 1px;
+ width: 100%;
+ content: "";
+ background: $neutral-border-color;
+ }
+ }
+ }
+ }
+ }
+ .collapse {
+ position: absolute;
+ right: auto;
+ left: 0;
+ width: 100%;
+ height: 50%;
+ top: 50%;
+ padding: map-get($spacers, 3);
+ background: $white;
+ overflow: scroll;
+ img {
+ max-width: 100%;
+ max-height: 100%;
+ }
+ }
+ }
+ }
+}
+@include media-breakpoint-up(md) {
+ .nav-item:has(> .bcl-mega-menu) {
+ position: static;
+ }
+ .bcl-mega-menu {
+ > .show + .mega-menu-container.dropdown-menu {
+ display: flex;
+ }
+ .mega-menu-container.dropdown-menu {
+ top: 100%;
+ padding: map-get($spacers, 3);
+ .content-block {
+ margin-right: 0;
+ box-shadow: 0px 10px 13px -6px rgba(224, 229, 245, 0.5);
+ }
+ .navigation-items {
+ position: relative;
+ width: 33%;
+ margin-top: map-get($spacers, 3);
+ .dropdown {
+ .dropdown-menu {
+ left: 100% !important;
+ top: 0;
+ height: 100% !important;
+ margin: 0;
+ }
+ }
+ .collapse {
+ top: 0;
+ left: 200%;
+ height: 100%;
+ }
+ }
+ }
+ }
+ .bcl-mega-menu {
+ .mega-menu-container.dropdown-menu {
+ .content-block {
+ margin-bottom: map-get($spacers, 4);
+ }
+ }
+ }
+}
+
+@include media-breakpoint-up(xl) {
+ .bcl-mega-menu {
+ .mega-menu-container.dropdown-menu {
+ .content-block {
+ box-shadow: none;
+ &:after {
+ bottom: 0;
+ right: 0;
+ top: 0;
+ width: 10px;
+ height: 100%;
+ box-shadow: 4px 0 10px 0 rgba(224, 229, 245, 0.5);
+ }
+ }
+ }
+ }
+}
diff --git a/src/themes/default/src/scss/base/_colors.scss b/src/themes/default/src/scss/base/_colors.scss
index 260175302..80171e947 100644
--- a/src/themes/default/src/scss/base/_colors.scss
+++ b/src/themes/default/src/scss/base/_colors.scss
@@ -16,6 +16,9 @@ $gray-700: #495057;
$text-muted: #495057;
+$neutral-bg-subtle: #f3f5fb;
+$neutral-border-color: #b9c5e9;
+
// Color variants scales
// Tables
diff --git a/src/themes/default/src/scss/oe-bcl-default.scss b/src/themes/default/src/scss/oe-bcl-default.scss
index 0a123005d..bf753ecce 100644
--- a/src/themes/default/src/scss/oe-bcl-default.scss
+++ b/src/themes/default/src/scss/oe-bcl-default.scss
@@ -77,6 +77,7 @@
@import "@openeuropa/bcl-theme-default/src/scss/spinners";
@import "@openeuropa/bcl-theme-default/src/scss/badge";
@import "@openeuropa/bcl-theme-default/src/scss/multiselect";
+@import "@openeuropa/bcl-theme-default/src/scss/mega-menu";
@import "@openeuropa/bcl-theme-default/src/scss/multiselect-2";
@import "@openeuropa/bcl-theme-default/src/scss/breadcrumb";
@import "@openeuropa/bcl-theme-default/src/scss/banners";
diff --git a/src/themes/joinup/src/js/index.esm.js b/src/themes/joinup/src/js/index.esm.js
index 6c9b74370..012fa6851 100644
--- a/src/themes/joinup/src/js/index.esm.js
+++ b/src/themes/joinup/src/js/index.esm.js
@@ -13,6 +13,7 @@ import Dropdown from "@openeuropa/bcl-bootstrap/js/src/dropdown";
import Gallery from "@openeuropa/bcl-theme-default/src/js/gallery/gallery";
import Modal from "@openeuropa/bcl-bootstrap/js/src/modal";
import AccessibleToggle from "@openeuropa/bcl-theme-default/src/js/accessible-toggle/accessible-toggle";
+import MegaMenu from "@openeuropa/bcl-theme-default/src/js/mega-menu/mega-menu";
import AccordionToggle from "@openeuropa/bcl-theme-default/src/js/accordion-toggle/accordion-toggle";
import Offcanvas from "@openeuropa/bcl-bootstrap/js/src/offcanvas";
import Popover from "@openeuropa/bcl-bootstrap/js/src/popover";
@@ -30,6 +31,7 @@ export {
Dropdown,
Gallery,
Modal,
+ MegaMenu,
AccessibleToggle,
AccordionToggle,
Offcanvas,
diff --git a/src/themes/joinup/src/js/index.umd.js b/src/themes/joinup/src/js/index.umd.js
index 50096558f..b9721a68e 100644
--- a/src/themes/joinup/src/js/index.umd.js
+++ b/src/themes/joinup/src/js/index.umd.js
@@ -13,6 +13,7 @@ import Dropdown from "@openeuropa/bcl-bootstrap/js/src/dropdown";
import Gallery from "@openeuropa/bcl-theme-default/src/js/gallery/gallery";
import Modal from "@openeuropa/bcl-bootstrap/js/src/modal";
import AccessibleToggle from "@openeuropa/bcl-theme-default/src/js/accessible-toggle/accessible-toggle";
+import MegaMenu from "@openeuropa/bcl-theme-default/src/js/mega-menu/mega-menu";
import AccordionToggle from "@openeuropa/bcl-theme-default/src/js/accordion-toggle/accordion-toggle";
import Offcanvas from "@openeuropa/bcl-bootstrap/js/src/offcanvas";
import Popover from "@openeuropa/bcl-bootstrap/js/src/popover";
@@ -30,6 +31,7 @@ export default {
Dropdown,
Gallery,
Modal,
+ MegaMenu,
AccessibleToggle,
AccordionToggle,
Offcanvas,
diff --git a/src/themes/joinup/src/scss/oe-bcl-joinup.scss b/src/themes/joinup/src/scss/oe-bcl-joinup.scss
index 23e37be07..e14bd60af 100644
--- a/src/themes/joinup/src/scss/oe-bcl-joinup.scss
+++ b/src/themes/joinup/src/scss/oe-bcl-joinup.scss
@@ -81,6 +81,7 @@
@import "@openeuropa/bcl-theme-default/src/scss/spinners";
@import "@openeuropa/bcl-theme-default/src/scss/badge";
@import "@openeuropa/bcl-theme-default/src/scss/multiselect";
+@import "@openeuropa/bcl-theme-default/src/scss/mega-menu";
@import "@openeuropa/bcl-theme-default/src/scss/multiselect-2";
@import "@openeuropa/bcl-theme-default/src/scss/breadcrumb";
@import "@openeuropa/bcl-theme-default/src/scss/banners";
diff --git a/src/themes/ucpkn/src/js/index.esm.js b/src/themes/ucpkn/src/js/index.esm.js
index 6c9b74370..bff882b33 100644
--- a/src/themes/ucpkn/src/js/index.esm.js
+++ b/src/themes/ucpkn/src/js/index.esm.js
@@ -13,6 +13,7 @@ import Dropdown from "@openeuropa/bcl-bootstrap/js/src/dropdown";
import Gallery from "@openeuropa/bcl-theme-default/src/js/gallery/gallery";
import Modal from "@openeuropa/bcl-bootstrap/js/src/modal";
import AccessibleToggle from "@openeuropa/bcl-theme-default/src/js/accessible-toggle/accessible-toggle";
+import MegaMenu from "@openeuropa/bcl-theme-default/src/js/mega-menu/mega-menu";
import AccordionToggle from "@openeuropa/bcl-theme-default/src/js/accordion-toggle/accordion-toggle";
import Offcanvas from "@openeuropa/bcl-bootstrap/js/src/offcanvas";
import Popover from "@openeuropa/bcl-bootstrap/js/src/popover";
@@ -31,6 +32,7 @@ export {
Gallery,
Modal,
AccessibleToggle,
+ MegaMenu,
AccordionToggle,
Offcanvas,
Popover,
diff --git a/src/themes/ucpkn/src/js/index.umd.js b/src/themes/ucpkn/src/js/index.umd.js
index 50096558f..cc02e6b58 100644
--- a/src/themes/ucpkn/src/js/index.umd.js
+++ b/src/themes/ucpkn/src/js/index.umd.js
@@ -13,6 +13,7 @@ import Dropdown from "@openeuropa/bcl-bootstrap/js/src/dropdown";
import Gallery from "@openeuropa/bcl-theme-default/src/js/gallery/gallery";
import Modal from "@openeuropa/bcl-bootstrap/js/src/modal";
import AccessibleToggle from "@openeuropa/bcl-theme-default/src/js/accessible-toggle/accessible-toggle";
+import MegaMenu from "@openeuropa/bcl-theme-default/src/js/mega-menu/mega-menu";
import AccordionToggle from "@openeuropa/bcl-theme-default/src/js/accordion-toggle/accordion-toggle";
import Offcanvas from "@openeuropa/bcl-bootstrap/js/src/offcanvas";
import Popover from "@openeuropa/bcl-bootstrap/js/src/popover";
@@ -31,6 +32,7 @@ export default {
Gallery,
Modal,
AccessibleToggle,
+ MegaMenu,
AccordionToggle,
Offcanvas,
Popover,
diff --git a/src/themes/ucpkn/src/scss/oe-bcl-ucpkn.scss b/src/themes/ucpkn/src/scss/oe-bcl-ucpkn.scss
index b513e2745..eb00e4d24 100644
--- a/src/themes/ucpkn/src/scss/oe-bcl-ucpkn.scss
+++ b/src/themes/ucpkn/src/scss/oe-bcl-ucpkn.scss
@@ -74,6 +74,7 @@
@import "@openeuropa/bcl-theme-default/src/scss/spinners";
@import "@openeuropa/bcl-theme-default/src/scss/badge";
@import "@openeuropa/bcl-theme-default/src/scss/multiselect";
+@import "@openeuropa/bcl-theme-default/src/scss/mega-menu";
@import "@openeuropa/bcl-theme-default/src/scss/multiselect-2";
@import "@openeuropa/bcl-theme-default/src/scss/breadcrumb";
@import "@openeuropa/bcl-theme-default/src/scss/banners";
diff --git a/yarn.lock b/yarn.lock
index d9275bd49..de885750b 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -3068,7 +3068,7 @@ __metadata:
languageName: unknown
linkType: soft
-"@openeuropa/bcl-button@npm:^1.10.0, @openeuropa/bcl-button@workspace:src/components/bcl-button":
+"@openeuropa/bcl-button@npm:^1.10.0, @openeuropa/bcl-button@npm:^1.8.2, @openeuropa/bcl-button@workspace:src/components/bcl-button":
version: 0.0.0-use.local
resolution: "@openeuropa/bcl-button@workspace:src/components/bcl-button"
dependencies:
@@ -3339,7 +3339,7 @@ __metadata:
languageName: unknown
linkType: soft
-"@openeuropa/bcl-dropdown@npm:^1.10.0, @openeuropa/bcl-dropdown@workspace:src/components/bcl-dropdown":
+"@openeuropa/bcl-dropdown@npm:^1.10.0, @openeuropa/bcl-dropdown@npm:^1.8.2, @openeuropa/bcl-dropdown@workspace:src/components/bcl-dropdown":
version: 0.0.0-use.local
resolution: "@openeuropa/bcl-dropdown@workspace:src/components/bcl-dropdown"
dependencies:
@@ -3457,6 +3457,7 @@ __metadata:
dependencies:
"@openeuropa/bcl-breadcrumb": "npm:^1.10.0"
"@openeuropa/bcl-language-list": "npm:^1.10.0"
+ "@openeuropa/bcl-mega-menu": "npm:^1.10.0"
"@openeuropa/bcl-modal": "npm:^1.10.0"
"@openeuropa/bcl-navbar": "npm:^1.10.0"
languageName: unknown
@@ -3521,7 +3522,7 @@ __metadata:
languageName: unknown
linkType: soft
-"@openeuropa/bcl-link@npm:^1.10.0, @openeuropa/bcl-link@workspace:src/components/bcl-link":
+"@openeuropa/bcl-link@npm:^1.10.0, @openeuropa/bcl-link@npm:^1.8.2, @openeuropa/bcl-link@workspace:src/components/bcl-link":
version: 0.0.0-use.local
resolution: "@openeuropa/bcl-link@workspace:src/components/bcl-link"
dependencies:
@@ -3558,6 +3559,16 @@ __metadata:
languageName: unknown
linkType: soft
+"@openeuropa/bcl-mega-menu@npm:^1.10.0, @openeuropa/bcl-mega-menu@workspace:src/compositions/bcl-mega-menu":
+ version: 0.0.0-use.local
+ resolution: "@openeuropa/bcl-mega-menu@workspace:src/compositions/bcl-mega-menu"
+ dependencies:
+ "@openeuropa/bcl-button": "npm:^1.8.2"
+ "@openeuropa/bcl-dropdown": "npm:^1.8.2"
+ "@openeuropa/bcl-link": "npm:^1.8.2"
+ languageName: unknown
+ linkType: soft
+
"@openeuropa/bcl-modal@npm:^1.10.0, @openeuropa/bcl-modal@workspace:src/components/bcl-modal":
version: 0.0.0-use.local
resolution: "@openeuropa/bcl-modal@workspace:src/components/bcl-modal"
@@ -3575,6 +3586,7 @@ __metadata:
resolution: "@openeuropa/bcl-navbar@workspace:src/components/bcl-navbar"
dependencies:
"@openeuropa/bcl-form": "npm:^1.10.0"
+ "@openeuropa/bcl-mega-menu": "npm:^1.10.0"
"@openeuropa/bcl-navigation": "npm:^1.10.0"
languageName: unknown
linkType: soft