@openeuropa/bcl-theme-default 0.25.1 → 0.26.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.
Files changed (39) hide show
  1. package/css/oe-bcl-default.css +2518 -1742
  2. package/css/oe-bcl-default.css.map +1 -1
  3. package/css/oe-bcl-default.min.css +1 -1
  4. package/css/oe-bcl-default.min.css.map +1 -1
  5. package/icons/bootstrap-icons.svg +1 -1
  6. package/js/oe-bcl-default.bundle.js +2087 -1907
  7. package/js/oe-bcl-default.bundle.js.map +1 -1
  8. package/js/oe-bcl-default.bundle.min.js +1 -1
  9. package/js/oe-bcl-default.bundle.min.js.map +1 -1
  10. package/js/oe-bcl-default.esm.js +2083 -1903
  11. package/js/oe-bcl-default.esm.js.map +1 -1
  12. package/js/oe-bcl-default.esm.min.js +1 -1
  13. package/js/oe-bcl-default.esm.min.js.map +1 -1
  14. package/js/oe-bcl-default.umd.js +2083 -1903
  15. package/js/oe-bcl-default.umd.js.map +1 -1
  16. package/js/oe-bcl-default.umd.min.js +1 -1
  17. package/js/oe-bcl-default.umd.min.js.map +1 -1
  18. package/package.json +8 -8
  19. package/src/js/gallery/gallery.js +3 -29
  20. package/src/scss/_banners.scss +9 -0
  21. package/src/scss/_header.scss +109 -63
  22. package/src/scss/_pagination.scss +2 -2
  23. package/src/scss/base/_utilities.scss +27 -0
  24. package/src/scss/base/_variables.scss +13 -0
  25. package/src/scss/oe-bcl-default.scss +1 -1
  26. package/templates/bcl-base-templates/sidebar-search.html.twig +14 -1
  27. package/templates/bcl-carousel/carousel.html.twig +2 -8
  28. package/templates/bcl-date-block/date-block.html.twig +0 -2
  29. package/templates/bcl-featured-media/featured-media.html.twig +9 -0
  30. package/templates/bcl-file/file.html.twig +1 -1
  31. package/templates/bcl-gallery/gallery.html.twig +1 -1
  32. package/templates/bcl-language-switcher/language-switcher.html.twig +9 -3
  33. package/templates/bcl-navbar/navbar.html.twig +7 -7
  34. package/templates/bcl-navigation/navigation.html.twig +1 -1
  35. package/templates/bcl-offcanvas/offcanvas.html.twig +14 -3
  36. package/templates/bcl-pagination/pagination.html.twig +1 -1
  37. package/templates/bcl-person/person.html.twig +1 -3
  38. package/templates/bcl-progress/progress.html.twig +1 -4
  39. package/src/scss/_bcl-offcanvas.scss +0 -24
package/package.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "name": "@openeuropa/bcl-theme-default",
3
3
  "author": "European Commission",
4
4
  "license": "EUPL-1.2",
5
- "version": "0.25.1",
5
+ "version": "0.26.0",
6
6
  "description": "OE - BCL theme default",
7
7
  "scripts": {
8
8
  "align-templates": "lerna --scope \"@openeuropa/bcl-twig-templates\" run prepublish",
@@ -18,12 +18,12 @@
18
18
  "update:templates": "run-s align-templates build:copy"
19
19
  },
20
20
  "devDependencies": {
21
- "@ecl/resources-ec-logo": "3.3.3",
22
- "@ecl/resources-eu-logo": "3.3.3",
23
- "@ecl/resources-flag-icons": "3.3.3",
24
- "@openeuropa/bcl-bootstrap": "^0.25.1",
25
- "@openeuropa/bcl-builder": "^0.25.1",
26
- "@openeuropa/bcl-twig-templates": "^0.25.1",
21
+ "@ecl/resources-ec-logo": "3.4.0",
22
+ "@ecl/resources-eu-logo": "3.4.0",
23
+ "@ecl/resources-flag-icons": "3.4.0",
24
+ "@openeuropa/bcl-bootstrap": "^0.26.0",
25
+ "@openeuropa/bcl-builder": "^0.26.0",
26
+ "@openeuropa/bcl-twig-templates": "^0.26.0",
27
27
  "copyfiles": "2.4.1",
28
28
  "cross-env": "7.0.3",
29
29
  "glob": "8.0.3",
@@ -48,5 +48,5 @@
48
48
  "design-system",
49
49
  "twig"
50
50
  ],
51
- "gitHead": "01db3de0765fee0f44e4f202f3ea7d0f2e28f742"
51
+ "gitHead": "94d89cc379780cfce06178959194b3bc1b4c5eda"
52
52
  }
@@ -5,11 +5,10 @@
5
5
  * --------------------------------------------------------------------------
6
6
  */
7
7
 
8
- import { defineJQueryPlugin, typeCheckConfig } from '@openeuropa/bcl-bootstrap/js/src/util/index'
8
+ import { defineJQueryPlugin } from '@openeuropa/bcl-bootstrap/js/src/util/index'
9
9
  import EventHandler from '@openeuropa/bcl-bootstrap/js/src/dom/event-handler'
10
10
  import BaseComponent from '@openeuropa/bcl-bootstrap/js/src/base-component'
11
11
  import SelectorEngine from '@openeuropa/bcl-bootstrap/js/src/dom/selector-engine'
12
- import Manipulator from '@openeuropa/bcl-bootstrap/js/src/dom/manipulator'
13
12
 
14
13
  /**
15
14
  * ------------------------------------------------------------------------
@@ -18,7 +17,6 @@ import Manipulator from '@openeuropa/bcl-bootstrap/js/src/dom/manipulator'
18
17
  */
19
18
 
20
19
  const Default = {}
21
- const DefaultType = {}
22
20
 
23
21
  const NAME = 'gallery'
24
22
  const DATA_KEY = 'bs.gallery'
@@ -43,14 +41,13 @@ const EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`
43
41
 
44
42
  class Gallery extends BaseComponent {
45
43
  constructor(element, config) {
46
- super(element)
44
+ super(element, config)
47
45
  this.carousel = SelectorEngine.findOne(CAROUSEL_SELECTOR, this.element)
48
46
  this.carouselPager = SelectorEngine.findOne(CAROUSEL_PAGER_SELECTOR, this.element)
49
47
  this.carouselStartIndex = element.getAttribute('data-gallery-start')
50
48
  this.carouselActiveItem = SelectorEngine.find(CAROUSEL_ITEM_SELECTOR, this.carousel)[this.carouselStartIndex]
51
49
  this.carouselPager.textContent = Number(this.carouselStartIndex) + 1
52
50
  this.modal = SelectorEngine.findOne(MODAL_SELECTOR, this.element)
53
- this.config = this.getConfig(config)
54
51
  this.addEventListeners()
55
52
  this.carouselLazyLoad(this.carouselActiveItem)
56
53
  }
@@ -95,16 +92,6 @@ class Gallery extends BaseComponent {
95
92
  }
96
93
  }
97
94
 
98
- getConfig(config) {
99
- config = {
100
- ...Default,
101
- ...Manipulator.getDataAttributes(this.element),
102
- ...(typeof config === 'object' ? config : {})
103
- }
104
- typeCheckConfig(NAME, config, DefaultType)
105
- return config
106
- }
107
-
108
95
  addEventListeners() {
109
96
  EventHandler.on(this.carousel, CAROUSEL_EVENT, event => this.setSlide(event))
110
97
  EventHandler.on(this.modal, EVENT_MODAL_HIDE, event => this.stopSlide(event))
@@ -115,19 +102,6 @@ class Gallery extends BaseComponent {
115
102
  return Default
116
103
  }
117
104
 
118
- static galleryInterface(element, config) {
119
- const data = Gallery.getOrCreateInstance(element, config)
120
-
121
- let { _config } = data
122
- if (typeof config === 'object') {
123
- // eslint-disable-next-line no-unused-vars
124
- _config = {
125
- ..._config,
126
- ...config
127
- }
128
- }
129
- }
130
-
131
105
  static jQueryInterface(config) {
132
106
  return this.each(function jInterface() {
133
107
  const data = Gallery.getOrCreateInstance(this)
@@ -156,7 +130,7 @@ EventHandler.on(document, EVENT_CLICK_DATA_API, THUMBNAIL_SELECTOR, (event) => {
156
130
  const firstSlide = event.target.parentNode.getAttribute('data-bs-slide-to');
157
131
  gallery.dataset.galleryStart = firstSlide;
158
132
 
159
- Gallery.galleryInterface(gallery, Gallery.getInstance(gallery))
133
+ Gallery.getOrCreateInstance(gallery);
160
134
  })
161
135
 
162
136
  /**
@@ -145,6 +145,15 @@
145
145
  }
146
146
  }
147
147
  }
148
+
149
+ .tab-pane {
150
+ .bcl-content-banner {
151
+ .card {
152
+ margin-right: 0;
153
+ margin-left: 0;
154
+ }
155
+ }
156
+ }
148
157
  }
149
158
 
150
159
  // Banners ratio
@@ -4,6 +4,10 @@ $header-background-start: #039 !default;
4
4
  $header-background-end: #1b4ac3 !default;
5
5
  $header-link-active-background: #003776 !default;
6
6
 
7
+ .bcl-header .container {
8
+ position: relative;
9
+ }
10
+
7
11
  .bcl-header__project,
8
12
  .bcl-header__navbar {
9
13
  background: linear-gradient(
@@ -13,27 +17,64 @@ $header-link-active-background: #003776 !default;
13
17
  );
14
18
  }
15
19
 
16
- .bcl-header__navbar .container {
17
- position: relative;
18
- }
19
-
20
- .bcl-header__navbar .navbar-collapse {
21
- padding-bottom: map-get($spacers, 3);
22
- }
20
+ .bcl-header__top-navbar {
21
+ .navbar-collapse {
22
+ justify-content: end;
23
+ }
23
24
 
24
- .bcl-header--neutral {
25
- .bcl-header__project,
26
- .bcl-header__navbar {
27
- background: $gray-700;
25
+ .navbar-toggler {
26
+ border: none;
27
+ color: $light;
28
28
  }
29
- }
30
29
 
31
- .bcl-navbar-header {
32
- align-items: flex-end;
30
+ .navbar-toggler-icon {
31
+ background: url("data:image/svg+xml;utf8;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNTYgMjU2Ij48cmVjdCB3aWR0aD0iMjU2IiBoZWlnaHQ9IjI1NiIgZmlsbD0ibm9uZSIvPjxjaXJjbGUgY3g9IjEyOCIgY3k9IjY0IiByPSIxNiIvPjxjaXJjbGUgY3g9IjEyOCIgY3k9IjEyOCIgcj0iMTYiLz48Y2lyY2xlIGN4PSIxMjgiIGN5PSIxOTIiIHI9IjE2Ii8+PC9zdmc+");
32
+ }
33
33
  }
34
34
 
35
35
  .bcl-header .nav-link {
36
36
  color: $eu-blue;
37
+ display: flex;
38
+ align-items: center;
39
+ padding: map-get($spacers, 2);
40
+ }
41
+
42
+ .bcl-header__navbar {
43
+ .navbar-collapse {
44
+ padding-bottom: map-get($spacers, 3);
45
+ }
46
+
47
+ .navbar-nav {
48
+ .nav-link {
49
+ color: $gray-100;
50
+
51
+ &:focus,
52
+ &:hover,
53
+ &.active {
54
+ color: #fff;
55
+ }
56
+
57
+ &:first-child {
58
+ padding-left: 0;
59
+ }
60
+ }
61
+ }
62
+
63
+ .navbar-toggler {
64
+ position: absolute;
65
+ top: -43px;
66
+ left: map-get($spacers, "2-5");
67
+ border-color: $white;
68
+ }
69
+
70
+ .navbar-toggler-icon {
71
+ background: url("data:image/svg+xml;charset=utf8,%3Csvg viewBox='0 0 32 32' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath stroke='rgba(255, 255, 255, 1)' stroke-width='2' stroke-linecap='round' stroke-miterlimit='10' d='M4 8h24M4 16h24M4 24h24'/%3E%3C/svg%3E");
72
+ }
73
+
74
+ input:active,
75
+ input:focus {
76
+ box-shadow: 0 0 0 0.25rem hsl(210deg 2% 83% / 50%);
77
+ }
37
78
  }
38
79
 
39
80
  .bcl-header--ec,
@@ -42,51 +83,46 @@ $header-link-active-background: #003776 !default;
42
83
  .bcl-header__navbar {
43
84
  background: $header-background;
44
85
  }
45
-
86
+ /* stylelint-disable-next-line no-descending-specificity */
46
87
  .nav-link {
47
88
  color: $ec-blue;
48
89
  }
49
90
  }
50
91
 
51
- .bcl-header:not(.bcl-header--neutral) .bcl-header__project {
52
- padding-top: map-get($spacers, 3);
92
+ .bcl-navbar-header {
93
+ align-items: flex-end;
53
94
  }
54
95
 
55
- .bcl-header__navbar .navbar-nav .nav-link {
56
- color: $gray-100;
57
- &:first-child {
58
- padding-left: 0;
96
+ .bcl-header--neutral {
97
+ .bcl-header__project,
98
+ .bcl-header__navbar {
99
+ background: $gray-700;
59
100
  }
60
101
  }
61
102
 
62
- .bcl-header__navbar .navbar-nav .nav-link:focus,
63
- .bcl-header__navbar .navbar-nav .nav-link:hover,
64
- .bcl-header__navbar .navbar-nav .nav-link.active {
65
- color: #fff;
66
- }
67
-
68
- .bcl-header__navbar input:active,
69
- .bcl-header__navbar input:focus {
70
- box-shadow: 0 0 0 0.25rem hsl(210deg 2% 83% / 50%);
71
- }
72
-
73
- .bcl-header .notification {
74
- position: relative;
75
- padding-right: 0;
103
+ .bcl-header:not(.bcl-header--neutral) .bcl-header__project {
104
+ padding-top: map-get($spacers, 3);
76
105
  }
77
106
 
78
- .bcl-header .navbar-brand img {
79
- width: 100px;
80
- }
107
+ .bcl-header {
108
+ .navbar-brand img {
109
+ width: 100px;
110
+ }
81
111
 
82
- .bcl-header .notification span {
83
- z-index: 1;
84
- height: 18px;
85
- padding-right: 5px;
86
- padding-left: 5px;
87
- line-height: 0.6rem;
88
- border-radius: 10px;
89
- transform: translate(-11px, 5px);
112
+ .notification {
113
+ position: relative;
114
+ padding-right: 0;
115
+
116
+ span {
117
+ z-index: 1;
118
+ height: 18px;
119
+ padding-right: 5px;
120
+ padding-left: 5px;
121
+ line-height: 0.6rem;
122
+ border-radius: 10px;
123
+ transform: translate(-11px, 5px);
124
+ }
125
+ }
90
126
  }
91
127
 
92
128
  .bcl-header__project .bcl-header__site-name {
@@ -99,17 +135,6 @@ $header-link-active-background: #003776 !default;
99
135
  max-width: 80%;
100
136
  }
101
137
 
102
- .bcl-header .navbar-toggler {
103
- position: absolute;
104
- top: -43px;
105
- right: 14px;
106
- border-color: $white;
107
- }
108
-
109
- .bcl-header .navbar-toggler .navbar-toggler-icon {
110
- background: url("data:image/svg+xml;charset=utf8,%3Csvg viewBox='0 0 32 32' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath stroke='rgba(255, 255, 255, 1)' stroke-width='2' stroke-linecap='round' stroke-miterlimit='10' d='M4 8h24M4 16h24M4 24h24'/%3E%3C/svg%3E");
111
- }
112
-
113
138
  @media only screen and (max-width: 400px) {
114
139
  .bcl-header--neutral .bcl-header__project-logo {
115
140
  display: none;
@@ -132,21 +157,42 @@ $header-link-active-background: #003776 !default;
132
157
  }
133
158
 
134
159
  @include media-breakpoint-down(lg) {
160
+ .bcl-header__site-name {
161
+ margin-left: 5rem;
162
+ }
163
+
164
+ .bcl-header__top-navbar .navbar-collapse {
165
+ z-index: 1050;
166
+ position: absolute;
167
+ right: map-get($spacers, "2-5");
168
+ top: 100%;
169
+ background: white;
170
+ border: 1px solid $gray-300;
171
+ border-radius: 4px;
172
+
173
+ .nav {
174
+ align-items: flex-start;
175
+ flex-direction: column;
176
+ min-width: 16rem;
177
+ padding: map-get($spacers, 3);
178
+
179
+ li {
180
+ width: 100%;
181
+ }
182
+ }
183
+ }
184
+
135
185
  .bcl-header__project {
136
186
  min-height: map-get($spacers, 5);
137
187
  padding-top: map-get($spacers, 3);
138
188
  }
139
189
 
140
190
  .bcl-header nav + nav {
141
- min-height: map-get($spacers, 5);
191
+ min-height: 3.5rem;
142
192
 
143
193
  .navbar-toggler {
144
194
  position: static;
145
195
  }
146
-
147
- .container {
148
- justify-content: right;
149
- }
150
196
  }
151
197
 
152
198
  .bcl-header__navbar {
@@ -175,7 +221,7 @@ $header-link-active-background: #003776 !default;
175
221
  }
176
222
 
177
223
  .bcl-header__site-name {
178
- padding-left: map-get($spacers, 4);
224
+ margin-left: map-get($spacers, 4);
179
225
  font-weight: 500;
180
226
  }
181
227
 
@@ -18,7 +18,7 @@
18
18
  border: none;
19
19
  border-bottom: 2px solid transparent;
20
20
  color: $dark;
21
- font-weight: bold;
21
+ font-weight: $font-weight-bold;
22
22
  text-transform: uppercase;
23
23
  white-space: nowrap;
24
24
  }
@@ -30,7 +30,7 @@
30
30
  }
31
31
 
32
32
  .page-item:first-child .page-link {
33
- border-radius: 0px;
33
+ border-radius: 0;
34
34
  }
35
35
  }
36
36
 
@@ -14,6 +14,33 @@ $utilities: map-merge(
14
14
  ),
15
15
  )
16
16
  ),
17
+ "width":
18
+ map-merge(
19
+ map-get($utilities, "width"),
20
+ (
21
+ values:
22
+ map-merge(
23
+ map-get(map-get($utilities, "width"), "values"),
24
+ (
25
+ min-content: min-content,
26
+ )
27
+ ),
28
+ )
29
+ ),
30
+ "flex":
31
+ map-merge(
32
+ map-get($utilities, "flex"),
33
+ (
34
+ values:
35
+ map-merge(
36
+ map-get(map-get($utilities, "flex"), "values"),
37
+ (
38
+ 1: 1,
39
+ end-100: 1 0 100%,
40
+ )
41
+ ),
42
+ )
43
+ ),
17
44
  // Extend rounded-top utility.
18
45
  "max-width":
19
46
  map-merge(
@@ -101,3 +101,16 @@ $card-start-col-extra-large-size: 350px;
101
101
  $card-start-col-large-size: 255px;
102
102
  $card-start-col-size: 160px;
103
103
  $card-start-col-small-size: 120px;
104
+
105
+ // Z-index
106
+ // Based on the webtools cookie banner consent, with z-index 100
107
+ $zindex-dropdown: 40;
108
+ $zindex-sticky: 50;
109
+ $zindex-fixed: 60;
110
+ $zindex-offcanvas-backdrop: 65;
111
+ $zindex-offcanvas: 70;
112
+ $zindex-popover: 80;
113
+ $zindex-tooltip: 90;
114
+
115
+ $zindex-modal-backdrop: 110;
116
+ $zindex-modal: 120;
@@ -4,6 +4,7 @@
4
4
  // Configuration
5
5
  @import "@openeuropa/bcl-bootstrap/scss/functions";
6
6
  @import "@openeuropa/bcl-bootstrap/scss/variables";
7
+ @import "@openeuropa/bcl-bootstrap/scss/maps";
7
8
  @import "@openeuropa/bcl-bootstrap/scss/mixins";
8
9
 
9
10
  // Custom variables
@@ -72,7 +73,6 @@
72
73
  @import "@openeuropa/bcl-theme-default/src/scss/spinners";
73
74
  @import "@openeuropa/bcl-theme-default/src/scss/badge";
74
75
  @import "@openeuropa/bcl-theme-default/src/scss/multiselect";
75
- @import "@openeuropa/bcl-theme-default/src/scss/bcl-offcanvas";
76
76
  @import "@openeuropa/bcl-theme-default/src/scss/breadcrumb";
77
77
  @import "@openeuropa/bcl-theme-default/src/scss/banners";
78
78
  @import "@openeuropa/bcl-theme-default/src/scss/timeline";
@@ -1,7 +1,20 @@
1
1
  {% extends "@oe-bcl/bcl-offcanvas/offcanvas.html.twig" %}
2
2
 
3
+ {% set responsiveness = 'lg' %}
4
+ {% if extra_classes_header is empty %}
5
+ {% set extra_classes_header = 'd-lg-block' %}
6
+ {% else %}
7
+ {% set extra_classes_header = extra_classes_header ~ ' d-lg-block' %}
8
+ {% endif %}
9
+
3
10
  {% block body %}
11
+ {% if search_form.attributes is empty %}
12
+ {% set attributes = search_form.create_attribute() %}
13
+ {% endif %}
14
+
4
15
  <div class="offcanvas-body p-lg-0">
5
- {% include '@oe-bcl/bcl-form/form.html.twig' with search_form only %}
16
+ {% include '@oe-bcl/bcl-form/form.html.twig' with search_form|merge({
17
+ attributes: search_form.attributes.addClass('w-100')
18
+ }) only %}
6
19
  </div>
7
20
  {% endblock %}
@@ -6,7 +6,6 @@
6
6
  - title_link: (link object) (default: {})
7
7
  - title_attributes: (drupal attrs)
8
8
  - autoplay (boolean) (default: true)
9
- - autoinit (boolean) (default: true)
10
9
  - dark (boolean) (default: false)
11
10
  - active_item (integer) (default: 1)
12
11
  - items (array of objects) format: [
@@ -33,7 +32,6 @@
33
32
  {% set _title_link = title_link|default({}) %}
34
33
  {% set _title_attributes = title_attributes ?: create_attribute() %}
35
34
  {% set _id = id|default('') %}
36
- {% set _autoinit = autoinit ?? true %}
37
35
  {% set _autoplay = autoplay ?? true %}
38
36
  {% set _dark = dark|default(false) %}
39
37
  {% set _active_item = active_item|default(1) %}
@@ -63,7 +61,7 @@
63
61
  {% set attributes = attributes.setAttribute('id', _id) %}
64
62
  {% endif %}
65
63
 
66
- {% if _autoinit %}
64
+ {% if _autoplay %}
67
65
  {% set attributes = attributes.setAttribute('data-bs-ride', 'carousel') %}
68
66
  {% endif %}
69
67
 
@@ -75,10 +73,6 @@
75
73
  {% set attributes = attributes.addClass('rounded-indicators') %}
76
74
  {% endif %}
77
75
 
78
- {% if not _autoplay %}
79
- {% set attributes = attributes.setAttribute('data-bs-interval', 'false') %}
80
- {% endif %}
81
-
82
76
  {% set attributes = attributes.addClass(_classes) %}
83
77
 
84
78
  {%- if _title is not empty -%}
@@ -140,7 +134,7 @@
140
134
  <div class="{{ _item.caption_classes }}">
141
135
  {% endif %}
142
136
  {% if _item.caption_title is not empty %}
143
- <h5>{{ _item.caption_title }}</h5>
137
+ <p class="fs-5">{{ _item.caption_title }}</p>
144
138
  {% endif %}
145
139
  {{- _item.caption -}}
146
140
  {% if _item.caption_classes is defined and _item.caption_classes is not empty %}
@@ -2,7 +2,6 @@
2
2
 
3
3
  {#
4
4
  Parameters:
5
- - "variant" (string) (default: '')
6
5
  - "day" (integer) (default: '')
7
6
  - "month" (string) (default: '')
8
7
  - "date_time" (string) (default: '')
@@ -19,7 +18,6 @@
19
18
  {% set _end_day = end_day|default('') %}
20
19
  {% set _end_month = end_month|default('') %}
21
20
  {% set _end_year = end_year|default('') %}
22
- {% set _variant = variant|default('') %}
23
21
  {% set _css_classes = [
24
22
  'bcl-date-block',
25
23
  'bg-date',
@@ -67,6 +67,15 @@
67
67
 
68
68
  {% set attributes = attributes.addClass(["rounded", "overflow-hidden"]) %}
69
69
 
70
+ {% if _image is not empty %}
71
+ {% set attributes = attributes.addClass(["d-inline-flex", "flex-wrap"]) %}
72
+ {% if _content_classes is not empty %}
73
+ {% set _content_classes = _content_classes ~ ' flex-1 w-min-content' %}
74
+ {% else %}
75
+ {% set _content_classes = 'flex-1 w-min-content' %}
76
+ {% endif %}
77
+ {% endif %}
78
+
70
79
  {% if _with_text %}
71
80
  <div class="{{ _wrapper_classes }}">
72
81
  <div class="row">
@@ -39,7 +39,7 @@
39
39
  {# Internal properties #}
40
40
 
41
41
  {% set _icon = icon|default({}) %}
42
- {% set _icon_inline = icon_inline|default(true) %}
42
+ {% set _icon_inline = icon_inline ?? true %}
43
43
  {% set _title = title|default('') %}
44
44
  {% set _title_tag = title_tag|default('h2') %}
45
45
  {% set _title_link = title_link|default({}) %}
@@ -102,7 +102,7 @@ Parameters:
102
102
  {% if _item.caption is not empty or item.caption_title is not empty %}
103
103
  <div class="bcl-gallery__item-caption">
104
104
  {% if _item.caption_title is not empty %}
105
- <h5>{{ _item.caption_title }}</h5>
105
+ <p class="fs-5">{{ _item.caption_title }}</p>
106
106
  {% endif %}
107
107
  {% if _item.caption is not empty %}
108
108
  <div class="bcl-gallery__item-description">
@@ -30,12 +30,18 @@
30
30
 
31
31
  <div class="collapse mt-3" id="{{ _id }}">
32
32
  <div
33
- class="d-md-grid"
34
- style="grid-auto-flow: column; grid-template-rows: repeat(4, 1fr)"
33
+ class="d-grid"
34
+ style="grid-auto-flow: row; grid-template-columns: repeat(auto-fit, minmax(4rem, 8rem))"
35
35
  >
36
36
  {% for language in languages %}
37
37
  {% include '@oe-bcl/bcl-link/link.html.twig' with language|merge({
38
- attributes: create_attribute().addClass(["btn", "btn-link", "d-block", "ps-0", "text-start"])
38
+ attributes: create_attribute().addClass(
39
+ [ "btn",
40
+ "btn-link",
41
+ "d-block",
42
+ "ps-0",
43
+ "text-start"
44
+ ])
39
45
  }) only %}
40
46
  {% endfor %}
41
47
  </div>
@@ -78,17 +78,17 @@
78
78
 
79
79
  {% if not _disable_collapse %}
80
80
  <button
81
- class='navbar-toggler'
82
- type='button'
83
- data-bs-toggle='collapse'
81
+ class="navbar-toggler"
82
+ type="button"
83
+ data-bs-toggle="collapse"
84
84
  data-bs-target='#{{ _collapse_id }}'
85
85
  aria-controls='{{ _collapse_id }}'
86
- aria-expanded='false'
87
- aria-label='Toggle navigation'
86
+ aria-expanded="false"
87
+ aria-label="Toggle navigation"
88
88
  >
89
- <span class='navbar-toggler-icon'></span>
89
+ <span class="navbar-toggler-icon"></span>
90
90
  </button>
91
- <div class='collapse navbar-collapse' id='{{ _collapse_id }}'>
91
+ <div class="collapse navbar-collapse" id='{{ _collapse_id }}'>
92
92
  {% endif %}
93
93
  {% block navigation %}
94
94
  {% if _navigation is not empty %}
@@ -114,7 +114,7 @@
114
114
  role="tab"
115
115
  {% endif %}
116
116
  >
117
- {% elseif _tabs %}
117
+ {% elseif _tabs and _item.dropdown is not defined %}
118
118
  {% set _item = _item|merge({
119
119
  attributes: _item.attributes.setAttribute("role", "tab"),
120
120
  })