@openeuropa/bcl-theme-default 1.10.7 → 1.10.8

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 (57) hide show
  1. package/css/color-scheme.min.css +1 -1
  2. package/css/color-scheme.min.css.map +1 -1
  3. package/css/oe-bcl-ckeditor5.min.css +1 -1
  4. package/css/oe-bcl-ckeditor5.min.css.map +1 -1
  5. package/css/oe-bcl-default.css +160 -90
  6. package/css/oe-bcl-default.css.map +1 -1
  7. package/css/oe-bcl-default.min.css +1 -1
  8. package/css/oe-bcl-default.min.css.map +1 -1
  9. package/icons/bcl-default-icons.svg +1 -1
  10. package/icons/bootstrap-icons.svg +1 -1
  11. package/js/oe-bcl-default.bundle.js +18 -13
  12. package/js/oe-bcl-default.bundle.js.map +1 -1
  13. package/js/oe-bcl-default.bundle.min.js +1 -1
  14. package/js/oe-bcl-default.bundle.min.js.map +1 -1
  15. package/js/oe-bcl-default.esm.js +18 -13
  16. package/js/oe-bcl-default.esm.js.map +1 -1
  17. package/js/oe-bcl-default.esm.min.js +1 -1
  18. package/js/oe-bcl-default.esm.min.js.map +1 -1
  19. package/js/oe-bcl-default.umd.js +18 -13
  20. package/js/oe-bcl-default.umd.js.map +1 -1
  21. package/js/oe-bcl-default.umd.min.js +1 -1
  22. package/js/oe-bcl-default.umd.min.js.map +1 -1
  23. package/package.json +7 -7
  24. package/src/icons/icons.js +2 -0
  25. package/src/js/accordion-toggle/accordion-toggle.js +24 -9
  26. package/src/scss/_header.scss +24 -80
  27. package/src/scss/_mega-menu.scss +6 -6
  28. package/src/scss/_multiselect-2.scss +12 -0
  29. package/src/scss/_pagination-v2.scss +86 -0
  30. package/src/scss/base/_mixins.scss +9 -0
  31. package/src/scss/base/_utilities.scss +8 -0
  32. package/src/scss/base/_variables.scss +3 -0
  33. package/src/scss/oe-bcl-default.scss +1 -0
  34. package/templates/bcl-base-templates/listing-page.html.twig +17 -19
  35. package/templates/bcl-contact-form/contact-form.html.twig +3 -3
  36. package/templates/bcl-content-banner/content-banner.html.twig +3 -0
  37. package/templates/bcl-dropdown/dropdown.html.twig +12 -7
  38. package/templates/bcl-event/event.html.twig +5 -5
  39. package/templates/bcl-glossary/glossary-detail.html.twig +4 -5
  40. package/templates/bcl-glossary/glossary-listing.html.twig +5 -5
  41. package/templates/bcl-group/group-landing.html.twig +5 -5
  42. package/templates/bcl-group/group.html.twig +3 -3
  43. package/templates/bcl-landing-page/landing-page.html.twig +5 -8
  44. package/templates/bcl-language-list/language-list-modal.html.twig +58 -5
  45. package/templates/bcl-modal/modal.html.twig +16 -4
  46. package/templates/bcl-navigation/navigation.html.twig +8 -0
  47. package/templates/bcl-page/page.html.twig +5 -5
  48. package/templates/bcl-pagination-v2/pagination-item.html.twig +90 -0
  49. package/templates/bcl-pagination-v2/pagination.html.twig +213 -0
  50. package/templates/bcl-person/person.html.twig +5 -5
  51. package/templates/bcl-project/project.html.twig +7 -7
  52. package/templates/bcl-project-status/project-contributions.html.twig +1 -1
  53. package/templates/bcl-search/search.html.twig +3 -3
  54. package/templates/bcl-subscription/subscription.html.twig +5 -5
  55. package/templates/bcl-toast/toasts.html.twig +17 -8
  56. package/templates/bcl-user/user-terms.html.twig +3 -3
  57. package/templates/bcl-user/user.html.twig +3 -3
@@ -1,6 +1,6 @@
1
- {% extends "@oe-bcl/bcl-base-templates/listing-page.html.twig" %}
1
+ {% extends "@oe-bcl/bcl-base-templates/listing-page.html.twig" -%}
2
2
 
3
- {% block banner %}
3
+ {%- block banner %}
4
4
  <div class="container mt-4 mt-md-5">
5
5
  <div class="col-xxl-11">
6
6
  <div class="p-md-3-5 pt-3 bg-lighter d-md-flex n-mx-container">
@@ -24,4 +24,4 @@
24
24
  {% endif %}
25
25
  </div>
26
26
  </div>
27
- {% endblock %}
27
+ {%- endblock -%}
@@ -1,13 +1,11 @@
1
- {% extends "@oe-bcl/bcl-base-templates/content-type.html.twig" %}
1
+ {% extends "@oe-bcl/bcl-base-templates/content-type.html.twig" -%}
2
2
 
3
- {% block banner %}
3
+ {%- block banner %}
4
4
  {% if banner is defined %}
5
5
  {% include '@oe-bcl/bcl-banner/banner.html.twig' with banner only %}
6
6
  {% endif %}
7
- {% endblock %}
8
-
9
- {% block content %}
10
-
7
+ {%- endblock -%}
8
+ {%- block content %}
11
9
  <div class="container">
12
10
  {% if featured_section is defined %}
13
11
  <div class="my-4">
@@ -55,5 +53,4 @@
55
53
  </div>
56
54
  {% endif %}
57
55
  </div>
58
-
59
- {% endblock %}
56
+ {%- endblock -%}
@@ -19,7 +19,7 @@
19
19
  {% block header %}
20
20
  {% if size == 'fullscreen' %}
21
21
  <div class="container">
22
- {% if variant == 'eu' or variant == 'ec' %}
22
+ {% if _variant == 'eu' or _variant == 'ec' %}
23
23
  <div class="border-bottom mx-n3 px-3 px-md-0 pt-md-4-5">
24
24
  <div class="py-3-5 px-3 px-sm-0 px-md-3">
25
25
  {% endif %}
@@ -43,7 +43,7 @@
43
43
  ></button>
44
44
  {% if size == 'fullscreen' %}
45
45
  </div>
46
- {% if variant == 'eu' or variant == 'ec' %}
46
+ {% if _variant == 'eu' or _variant == 'ec' %}
47
47
  </div>
48
48
  </div>
49
49
  {% endif %}
@@ -52,7 +52,60 @@
52
52
  {% endblock %}
53
53
 
54
54
  {% block body %}
55
- {% include '@oe-bcl/bcl-language-list/language-list.html.twig' with {
56
- attributes: create_attribute()
57
- } %}
55
+ {% set attributes = create_attribute().addClass(['bcl-language-list', 'bcl-language-list--' ~ _variant]) %}
56
+ <div
57
+ {{ attributes }}
58
+ >
59
+ {% if _logo is not empty %}
60
+ <div class="container">
61
+ {% if _title is empty %}
62
+ <div class="text-center">
63
+ {% endif %}
64
+ <div class="d-inline-flex align-items-center">
65
+ <img
66
+ {% if _logo.path is not empty %}
67
+ src="{{ _logo.path }}"
68
+ {% endif %}
69
+ {% if _logo.alt is not empty %}
70
+ alt="{{ _logo.alt }}"
71
+ {% endif %}
72
+ {% if _logo.class is not empty %}
73
+ class="{{ _logo.class }}"
74
+ {% endif %}
75
+ />
76
+ {% if _title is not empty %}
77
+ <h5 class="h5 ms-4">{{ _title }}</h5>
78
+ {% endif %}
79
+ </div>
80
+ {% if _title is empty %}
81
+ </div>
82
+ {% endif %}
83
+ </div>
84
+ {% endif %}
85
+
86
+ {% if _items is not empty or _non_eu_items is not empty %}
87
+ <div class="main pt-4">
88
+ {% if not (_variant == 'neutral' and _inside_container) %}
89
+ <div class="container">
90
+ {% endif %}
91
+ {% if _items is not empty and _items is iterable %}
92
+ {% include '@oe-bcl/bcl-language-list/language-list-grid.html.twig' with {
93
+ items: _items,
94
+ icon_path: _icon_path,
95
+ category: eu_category,
96
+ } only %}
97
+ {% endif %}
98
+ {% if _non_eu_items is not empty and _non_eu_items is iterable %}
99
+ {% include '@oe-bcl/bcl-language-list/language-list-grid.html.twig' with {
100
+ items: _non_eu_items,
101
+ icon_path: _icon_path,
102
+ category: non_eu_category,
103
+ } only %}
104
+ {% endif %}
105
+ {% if not (_variant == 'neutral' and _inside_container) %}
106
+ </div>
107
+ {% endif %}
108
+ </div>
109
+ {% endif %}
110
+ </div>
58
111
  {% endblock %}
@@ -14,7 +14,10 @@
14
14
  - body (block) (default: '')
15
15
  - footer (block) (default: '')
16
16
  - attributes (drupal attrs)
17
-
17
+ - header_attributes (drupal attrs)
18
+ - body_attributes (drupal attrs)
19
+ - footer_attributes (drupal attrs)
20
+
18
21
  Blocks
19
22
  - header
20
23
  - messages
@@ -29,9 +32,12 @@
29
32
  {% set _verticaly_centered = verticaly_centered ?? false %}
30
33
  {% set _scrollable = scrollable ?? false %}
31
34
  {% set _header = header|default('') %}
35
+ {% set _header_attributes = header_attributes ?: create_attribute() %}
32
36
  {% set _messages = messages|default('') %}
33
37
  {% set _body = body|default('') %}
38
+ {% set _body_attributes = body_attributes ?: create_attribute() %}
34
39
  {% set _footer = footer|default('') %}
40
+ {% set _footer_attributes = footer_attributes ?: create_attribute() %}
35
41
 
36
42
  {% set _classes = ['modal', 'fade'] %}
37
43
 
@@ -62,16 +68,22 @@
62
68
  >
63
69
  <div class="modal-content">
64
70
  {% if header is not empty %}
65
- <div class="modal-header">
71
+ <div
72
+ {{- _header_attributes.addClass(['modal-header']) -}}
73
+ >
66
74
  {%- block header _header -%}
67
75
  </div>
68
76
  {% endif %}
69
77
  {%- block messages _messages -%}
70
- <div class="modal-body">
78
+ <div
79
+ {{- _body_attributes.addClass(['modal-body']) -}}
80
+ >
71
81
  {%- block body _body -%}
72
82
  </div>
73
83
  {% if footer is not empty %}
74
- <div class="modal-footer">
84
+ <div
85
+ {{- _footer_attributes.addClass(['modal-footer']) -}}
86
+ >
75
87
  {%- block footer _footer -%}
76
88
  </div>
77
89
  {% endif %}
@@ -121,6 +121,14 @@
121
121
  %}
122
122
  {% endif %}
123
123
  {% if _item.dropdown is defined %}
124
+ {% if _tabs %}
125
+ {% set _item = _item|merge({
126
+ inside_navigation: true,
127
+ trigger: _item.trigger|merge({
128
+ attributes: _item.trigger.attributes.setAttribute("role", "tab"),
129
+ }),
130
+ }) %}
131
+ {% endif %}
124
132
  {% include '@oe-bcl/bcl-dropdown/dropdown.html.twig' with _item only %}
125
133
  {% elseif _item.button is defined %}
126
134
  {% include '@oe-bcl/bcl-button/button.html.twig' with _item only %}
@@ -1,10 +1,10 @@
1
- {% extends '@oe-bcl/bcl-base-templates/content-type.html.twig' %}
1
+ {% extends '@oe-bcl/bcl-base-templates/content-type.html.twig' -%}
2
2
 
3
- {% block sidebar %}
3
+ {%- block sidebar %}
4
4
  {% include '@oe-bcl/bcl-inpage-navigation/inpage-navigation.html.twig' with sidebar only %}
5
- {% endblock %}
5
+ {%- endblock -%}
6
6
 
7
- {% block content %}
7
+ {%- block content %}
8
8
  <p id="content">{{ get_dummy_text(6) }}
9
9
  </p>
10
10
  <h2 id="item-1" class="my-4">Section 1</h2>
@@ -42,4 +42,4 @@
42
42
 
43
43
  {% include '@oe-bcl/bcl-file/file.html.twig' with files[0] only %}
44
44
  {% include '@oe-bcl/bcl-file/file.html.twig' with files[1] only %}
45
- {% endblock %}
45
+ {%- endblock -%}
@@ -0,0 +1,90 @@
1
+ {% apply spaceless %}
2
+
3
+ {# Parameters:
4
+ - path (string) (default: '')
5
+ - label (string) (default: '')
6
+ - disabled (boolean) (default: false)
7
+ - active (boolean) (default: false)
8
+ - icon (icon object) (default: {})
9
+ - attributes (drupal attrs)
10
+ #}
11
+
12
+ {% set _path = path|default('') %}
13
+ {% set _label = label|default('') %}
14
+ {% set _disabled = disabled ?? false %}
15
+ {% set _active = active ?? false %}
16
+ {% set _aria_label = aria_label|default('') %}
17
+ {% set _icon = icon|default({}) %}
18
+ {% set _icon_path = icon_path|default('') %}
19
+ {% set _icon_name = icon_name|default('') %}
20
+ {% set _icon_html = icon_html|default('') %}
21
+ {% set _icon_position = icon_position|default('after') %}
22
+ {% set _current_mobile_label = current_mobile_label|default('') %}
23
+ {% set _classes = ['page-link'] %}
24
+
25
+ {% if _icon_path is not empty and _icon is empty %}
26
+ {% if _icon_name is not empty %}
27
+ {% set _icon = _icon|merge({
28
+ name: _icon_name,
29
+ path: _icon_path,
30
+ size: "fluid"
31
+ }) %}
32
+ {% set _label = "" %}
33
+ {% endif %}
34
+ {% else %}
35
+ {% if _icon_html is not empty %}
36
+ {% set _label %}
37
+ <span aria-hidden="true">{{- _icon_html -}}</span>
38
+ {% endset %}
39
+ {% endif %}
40
+ {% endif %}
41
+
42
+ {% if _icon is not empty %}
43
+ {% set _icon = _icon|merge({
44
+ path: _icon_path,
45
+ }) %}
46
+ {% endif %}
47
+
48
+ {% if attributes is empty %}
49
+ {% set attributes = create_attribute() %}
50
+ {% endif %}
51
+
52
+ {% if _aria_label is not empty %}
53
+ {% set attributes = attributes.setAttribute('aria-label', _aria_label) %}
54
+ {% endif %}
55
+
56
+ {% if _active %}
57
+ {% set attributes = attributes.setAttribute('aria-current', 'page') %}
58
+ {% set attributes = attributes.setAttribute('tabindex', '0') %}
59
+ {% endif %}
60
+
61
+ {% set attributes = attributes.addClass(_classes) %}
62
+
63
+ {% if _path and not _active %}
64
+ {% if _disabled %}
65
+ {% set attributes = attributes.setAttribute('aria-disabled', 'true') %}
66
+ {% endif %}
67
+ {% set attributes = attributes.setAttribute('aria-hidden', 'false') %}
68
+
69
+ {%- include '@oe-bcl/bcl-link/link.html.twig' with {
70
+ label: _label,
71
+ path: _path,
72
+ disabled: _disabled,
73
+ icon: _icon,
74
+ icon_position: _icon_position,
75
+ attributes: attributes,
76
+ } only -%}
77
+ {% else %}
78
+ <div{{ attributes }}>
79
+ {% if _current_mobile_label %}
80
+ <span class="d-none d-md-inline-block">{{- _label -}}</span>
81
+ <span class="d-inline-block d-md-none">{{- _current_mobile_label -}}</span>
82
+ {% else %}
83
+ <span class="d-inline-block">
84
+ {{- _label -}}
85
+ </span>
86
+ {% endif %}
87
+ </div>
88
+ {% endif %}
89
+
90
+ {% endapply %}
@@ -0,0 +1,213 @@
1
+ {% apply spaceless %}
2
+
3
+ {# Parameters:
4
+ - size (string) (default: '')
5
+ - options ['sm', 'lg']
6
+ - alignment (string) (default: 'center')
7
+ - options ['start', 'end', 'center']
8
+ - enable_prev_next_icon (boolean) (default: true)
9
+ - enable_first_last_icon (boolean) (default: false)
10
+ - ellipsis_before (boolean) (default: false)
11
+ - ellipsis_after (boolean) (default: false)
12
+ - first (pagination Item object) (default: {})
13
+ - prev (pagination Item object) (default: {})
14
+ - next (pagination Item object) (default: {})
15
+ - last (pagination Item object) (default: {})
16
+ - items (pagination item[]) (default: [])
17
+ format: [
18
+ {
19
+ - path (string) (default: '')
20
+ - label (string) (default: '')
21
+ - disabled (boolean) (default: false)
22
+ - active (boolean) (default: false)
23
+ - icon (Icon component) (default: {})
24
+ - attributes (drupal attrs)
25
+ }
26
+ - icon_path (string) (default: '')
27
+ - attributes (drupal attrs)
28
+ - list_attributes (drupal attrs)
29
+ #}
30
+
31
+ {% set _size = size|default('') %}
32
+ {% set _alignment = alignment|default('center') %}
33
+ {% set _enable_prev_next_icon = enable_prev_next_icon ?? true %}
34
+ {% set _enable_first_last_icon = enable_first_last_icon ?? false %}
35
+ {% set _ellipsis_before = ellipsis_before ?? false %}
36
+ {% set _ellipsis_after = ellipsis_after ?? false %}
37
+ {% set _first = first|default({}) %}
38
+ {% set _prev = prev|default({}) %}
39
+ {% set _next = next|default({}) %}
40
+ {% set _last = last|default({}) %}
41
+ {% set _items = items|default([]) %}
42
+ {% set _icon_path = icon_path|default('') %}
43
+ {% set _ellipsis_markup %} &hellip; {% endset %}
44
+
45
+ {% set _type_flags = {
46
+ first: { first: true },
47
+ last: { last: true },
48
+ prev: { prev: true },
49
+ next: { next: true },
50
+ ellipsis: { ellipsis: true },
51
+ } %}
52
+
53
+ {% set _icon_defaults = {
54
+ ellipsis: {
55
+ icon_html: _ellipsis_markup,
56
+ icon_path: "",
57
+ },
58
+ } %}
59
+
60
+ {% if _enable_prev_next_icon %}
61
+ {% set _icon_defaults = _icon_defaults|merge({
62
+ prev: {
63
+ icon_position: 'before',
64
+ icon: {
65
+ size: 'fluid',
66
+ name: "chevron-left",
67
+ },
68
+ },
69
+ next: {
70
+ icon_position: 'after',
71
+ icon: {
72
+ size: 'fluid',
73
+ name: "chevron-right",
74
+ },
75
+ },
76
+ }) %}
77
+ {% endif %}
78
+
79
+ {% if _enable_first_last_icon %}
80
+ {% set _icon_defaults = _icon_defaults|merge({
81
+ first: {
82
+ icon_html: "&laquo;",
83
+ icon_name: "chevron-double-left",
84
+ },
85
+ last: {
86
+ icon_html: "&raquo;",
87
+ icon_name: "chevron-double-right",
88
+ },
89
+ }) %}
90
+ {% endif %}
91
+
92
+ {% set _raw_items = [
93
+ { item: _prev, fallback_type: 'prev' },
94
+ { item: _first, fallback_type: 'first' },
95
+ ] %}
96
+
97
+ {% if _ellipsis_before %}
98
+ {% set _raw_items = _raw_items|merge([
99
+ { item: {
100
+ item_type: 'ellipsis',
101
+ ellipsis: true,
102
+ } },
103
+ ]) %}
104
+ {% endif %}
105
+
106
+ {% if _items is iterable %}
107
+ {% for _item in _items %}
108
+ {% set _raw_items = _raw_items|merge([{ item: _item }]) %}
109
+ {% endfor %}
110
+ {% endif %}
111
+
112
+ {% if _ellipsis_after %}
113
+ {% set _raw_items = _raw_items|merge([
114
+ { item: {
115
+ item_type: 'ellipsis',
116
+ ellipsis: true,
117
+ } },
118
+ ]) %}
119
+ {% endif %}
120
+
121
+ {% set _raw_items = _raw_items|merge([
122
+ { item: _last, fallback_type: 'last' },
123
+ { item: _next, fallback_type: 'next' },
124
+ ]) %}
125
+
126
+ {% set _internal_items = [] %}
127
+
128
+ {% for _entry in _raw_items %}
129
+ {% set _item = _entry.item %}
130
+ {% if _item is not empty %}
131
+ {% set _type = attribute(_item, 'item_type')|default(_entry.fallback_type|default('')) %}
132
+ {% if not _type and (_item.ellipsis ?? false) %}
133
+ {% set _type = 'ellipsis' %}
134
+ {% endif %}
135
+ {% set _type_flag = attribute(_type_flags, _type)|default({}) %}
136
+ {% if _type_flag is not empty %}
137
+ {% set _item = _item|merge(_type_flag) %}
138
+ {% endif %}
139
+ {% set _icon_defaults_for_type = attribute(_icon_defaults, _type)|default({}) %}
140
+ {% if _icon_defaults_for_type is not empty %}
141
+ {% set _item = _item|merge(_icon_defaults_for_type) %}
142
+ {% endif %}
143
+ {% if (_item.active ?? false) and current_mobile_label is defined and _item.current_mobile_label is not defined %}
144
+ {% set _item = _item|merge({ current_mobile_label: current_mobile_label }) %}
145
+ {% endif %}
146
+ {% set _internal_items = _internal_items|merge([_item]) %}
147
+ {% endif %}
148
+ {% endfor %}
149
+
150
+ {% if attributes is empty %}
151
+ {% set attributes = create_attribute() %}
152
+ {% endif %}
153
+
154
+ {% set attributes = attributes.addClass(['pager', 'pagination-v2']) %}
155
+
156
+ {% if list_attributes is empty %}
157
+ {% set list_attributes = create_attribute() %}
158
+ {% endif %}
159
+
160
+ {% set _classes = [
161
+ 'pagination',
162
+ 'pager__items',
163
+ 'js-pager__items',
164
+ 'd-flex',
165
+ 'flex-row',
166
+ 'justify-content-between'
167
+ ] %}
168
+
169
+ {% if _size is not empty %}
170
+ {% set _classes = _classes|merge(['pagination-' ~ _size]) %}
171
+ {% endif %}
172
+ {% if _alignment is not empty %}
173
+ {% set _classes = _classes|merge(['justify-content-md-' ~ _alignment]) %}
174
+ {% endif %}
175
+
176
+ {% set list_attributes = list_attributes.addClass(_classes) %}
177
+
178
+ <nav{{ attributes }}>
179
+ <ul{{ list_attributes }}>
180
+ {% if _internal_items is not empty and _internal_items is iterable %}
181
+ {% for _item in _internal_items %}
182
+ {% if _item is not empty %}
183
+ {% set _item_class = ['page-item', 'pager__item'] %}
184
+
185
+ {% if _item.prev %}
186
+ {% set _item_class = _item_class|merge(['pager__item--prev', 'd-inline-block']) %}
187
+ {% elseif _item.next %}
188
+ {% set _item_class = _item_class|merge(['pager__item--next', 'd-inline-block']) %}
189
+ {% elseif not _item.active %}
190
+ {% set _item_class = _item_class|merge(['d-none', 'd-md-inline-block']) %}
191
+ {% endif %}
192
+
193
+ {% if _item.disabled %}
194
+ {% set _item_class = _item_class|merge(['disabled']) %}
195
+ {% endif %}
196
+
197
+ {% if _item.active %}
198
+ {% set _item_class = _item_class|merge(['active', 'd-inline-block']) %}
199
+ {% endif %}
200
+
201
+ <li class="{{ _item_class|join(' ') }}">
202
+ {% if _item.icon_path is not defined %}
203
+ {% set _item = _item|merge({ icon_path: _icon_path }) %}
204
+ {% endif %}
205
+ {% include '@oe-bcl/bcl-pagination-v2/pagination-item.html.twig' with _item only %}
206
+ </li>
207
+ {% endif %}
208
+ {% endfor %}
209
+ {% endif %}
210
+ </ul>
211
+ </nav>
212
+
213
+ {% endapply %}
@@ -1,10 +1,10 @@
1
- {% extends '@oe-bcl/bcl-base-templates/content-type.html.twig' %}
1
+ {% extends '@oe-bcl/bcl-base-templates/content-type.html.twig' -%}
2
2
 
3
- {% block sidebar %}
3
+ {%- block sidebar %}
4
4
  {% include '@oe-bcl/bcl-inpage-navigation/inpage-navigation.html.twig' with sidebar only %}
5
- {% endblock %}
5
+ {%- endblock -%}
6
6
 
7
- {% block content %}
7
+ {%- block content %}
8
8
  {% if information.main_title is not empty %}
9
9
  <h2
10
10
  class="mb-4"
@@ -26,4 +26,4 @@
26
26
  {% include '@oe-bcl/bcl-file/file.html.twig' with file only %}
27
27
  {% endfor %}
28
28
  {% endif %}
29
- {% endblock %}
29
+ {%- endblock -%}
@@ -1,10 +1,10 @@
1
- {% extends '@oe-bcl/bcl-base-templates/content-type.html.twig' %}
1
+ {% extends '@oe-bcl/bcl-base-templates/content-type.html.twig' -%}
2
2
 
3
- {% block sidebar %}
3
+ {%- block sidebar %}
4
4
  {% include '@oe-bcl/bcl-inpage-navigation/inpage-navigation.html.twig' with sidebar only %}
5
- {% endblock %}
5
+ {%- endblock -%}
6
6
 
7
- {% block content %}
7
+ {%- block content %}
8
8
  {% if project_status is not empty %}
9
9
  {% if project_status_title is not empty %}
10
10
  {% set _project_title_attributes = create_attribute().addClass(['mb-4']) %}
@@ -62,11 +62,11 @@
62
62
  {% endif %}
63
63
 
64
64
  {% if social_block is not empty %}
65
- {% block social_block %}
65
+ {%- block social_block %}
66
66
  {{ social_buttons }}
67
67
  {% include '@oe-bcl/bcl-button/button.html.twig' with button_social_modal only %}
68
68
  {% include '@oe-bcl/bcl-modal/modal.html.twig' with social_modal only %}
69
- {% endblock %}
69
+ {%- endblock -%}
70
70
  {% endif %}
71
71
 
72
- {% endblock %}
72
+ {%- endblock -%}
@@ -28,7 +28,7 @@
28
28
  <div {{ attributes }}>
29
29
  <div class="row">
30
30
 
31
- {% if _chart is not empty %}
31
+ {% if _chart %}
32
32
  <div class="bcl-project-contributions-chart col-5 col-md-3">
33
33
  {% block project_status_contrib_chart %}
34
34
  <div class="circular-progress" data-percentage="{{ _corporate_contributions }}">
@@ -1,6 +1,6 @@
1
- {% extends "@oe-bcl/bcl-base-templates/listing-page.html.twig" %}
1
+ {% extends "@oe-bcl/bcl-base-templates/listing-page.html.twig" -%}
2
2
 
3
- {% block banner %}
3
+ {%- block banner %}
4
4
  {% if banner.search_bar is defined %}
5
5
  <div class="bg-lighter pt-3 pb-4 pb-lg-3">
6
6
  <div class="container">
@@ -19,4 +19,4 @@
19
19
  </div>
20
20
  </div>
21
21
  {% endif %}
22
- {% endblock %}
22
+ {%- endblock -%}
@@ -1,10 +1,10 @@
1
- {% extends '@oe-bcl/bcl-base-templates/content-type.html.twig' %}
1
+ {% extends '@oe-bcl/bcl-base-templates/content-type.html.twig' -%}
2
2
 
3
- {% block sidebar %}
3
+ {%- block sidebar %}
4
4
  {% include '@oe-bcl/bcl-inpage-navigation/inpage-navigation.html.twig' with sidebar only %}
5
- {% endblock %}
5
+ {%- endblock -%}
6
6
 
7
- {% block content_bottom %}
7
+ {%- block content_bottom %}
8
8
  {% include '@oe-bcl/bcl-subscription-block/subscription-block.html.twig' with subscription only %}
9
9
  {% include '@oe-bcl/bcl-subscription/subscription-modal.html.twig' with modal only %}
10
- {% endblock %}
10
+ {%- endblock -%}
@@ -10,6 +10,11 @@
10
10
  - toasts (object[]) format: [
11
11
  {
12
12
  - body (string) (default: '')
13
+ - body_attributes (drupal attrs)
14
+ - header (string) (default: '')
15
+ - header_attributes (drupal attrs)
16
+ - button_attributes (drupal attrs)
17
+ - custom_content (string) (default: '')
13
18
  - role (string) (default: 'alert')
14
19
  - with_close (boolean) (default: true)
15
20
  - autohide (boolean) (default: false)
@@ -66,6 +71,9 @@
66
71
  {% set _with_body_wrapper = _toast.with_body_wrapper ?? false %}
67
72
  {% set _body_wrapper_classes = _toast.body_wrapper_classes|default('') %}
68
73
  {% set _toast_attributes = _toast.attributes ?: create_attribute() %}
74
+ {% set _body_attributes = _toast.body_attributes ?: create_attribute() %}
75
+ {% set _header_attributes = _toast.header_attributes ?: create_attribute() %}
76
+ {% set _button_attributes = _toast.button_attributes ?: create_attribute() %}
69
77
  {% set _toast_attributes = _toast_attributes.addClass(_classes).setAttribute('aria-atomic', 'true') %}
70
78
  {% if _aria_live is not empty %}
71
79
  {% set _toast_attributes = _toast_attributes.setAttribute('aria-live', _aria_live) %}
@@ -82,16 +90,16 @@
82
90
  {% if _with_close or
83
91
  (_toast.header is defined and _toast.header is not empty)
84
92
  %}
85
- <div class="toast-header">
93
+ <div{{ _header_attributes.addClass(['toast-header']) }}>
86
94
  {{- _toast.header|default('') -}}
87
95
  {% if _with_close %}
88
- {% set button_attributes = create_attribute()
89
- .addClass(['btn-close'])
90
- .setAttribute('aria-label', 'close')
91
- .setAttribute('data-bs-dismiss', 'toast')
92
- %}
96
+ {% if not _button_attributes.hasAttribute('aria-label') %}
97
+ {% set _button_attributes = _button_attributes.setAttribute('aria-label', 'Close') %}
98
+ {% endif %}
93
99
  {%- include '@oe-bcl/bcl-button/button.html.twig' with {
94
- attributes: button_attributes,
100
+ attributes: _button_attributes
101
+ .addClass(['btn-close'])
102
+ .setAttribute('data-bs-dismiss', 'toast'),
95
103
  clean_class: true
96
104
  } only -%}
97
105
  {% endif %}
@@ -104,12 +112,13 @@
104
112
  {% endif %}
105
113
  >
106
114
  {% endif %}
107
- <div class="toast-body">
115
+ <div{{ _body_attributes.addClass(['toast-body']) }}>
108
116
  {{- _body -}}
109
117
  </div>
110
118
  {% if _with_body_wrapper %}
111
119
  </div>
112
120
  {% endif %}
121
+ {{- _toast.custom_content|default('') -}}
113
122
  </div>
114
123
  {% endfor %}
115
124
  {% endif %}
@@ -1,6 +1,6 @@
1
- {% extends "@oe-bcl/bcl-base-templates/content-type.html.twig" %}
1
+ {% extends "@oe-bcl/bcl-base-templates/content-type.html.twig" -%}
2
2
 
3
- {% block content %}
3
+ {%- block content %}
4
4
  {{ get_dummy_text(4, true) }}
5
5
  <ul class="mb-4-5">
6
6
  <li>{{ get_dummy_text() }}</li>
@@ -8,4 +8,4 @@
8
8
  <li>{{ get_dummy_text() }}</li>
9
9
  </ul>
10
10
  {% include '@oe-bcl/bcl-form/form.html.twig' with terms_form only %}
11
- {% endblock %}
11
+ {%- endblock -%}