@openeuropa/bcl-theme-joinup 0.3791.202505281825 → 0.3821.202510100015

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 (98) hide show
  1. package/bcl-builder.config.js +2 -0
  2. package/css/oe-bcl-joinup.css +782 -275
  3. package/css/oe-bcl-joinup.css.map +1 -1
  4. package/css/oe-bcl-joinup.min.css +1 -1
  5. package/css/oe-bcl-joinup.min.css.map +1 -1
  6. package/fonts/files/roboto-cyrillic-400-italic.woff +0 -0
  7. package/fonts/files/roboto-cyrillic-400-italic.woff2 +0 -0
  8. package/fonts/files/roboto-cyrillic-400-normal.woff +0 -0
  9. package/fonts/files/roboto-cyrillic-400-normal.woff2 +0 -0
  10. package/fonts/files/roboto-cyrillic-500-italic.woff +0 -0
  11. package/fonts/files/roboto-cyrillic-500-italic.woff2 +0 -0
  12. package/fonts/files/roboto-cyrillic-500-normal.woff +0 -0
  13. package/fonts/files/roboto-cyrillic-500-normal.woff2 +0 -0
  14. package/fonts/files/roboto-cyrillic-700-italic.woff +0 -0
  15. package/fonts/files/roboto-cyrillic-700-italic.woff2 +0 -0
  16. package/fonts/files/roboto-cyrillic-700-normal.woff +0 -0
  17. package/fonts/files/roboto-cyrillic-700-normal.woff2 +0 -0
  18. package/fonts/files/roboto-greek-400-italic.woff +0 -0
  19. package/fonts/files/roboto-greek-400-italic.woff2 +0 -0
  20. package/fonts/files/roboto-greek-400-normal.woff +0 -0
  21. package/fonts/files/roboto-greek-400-normal.woff2 +0 -0
  22. package/fonts/files/roboto-greek-500-italic.woff +0 -0
  23. package/fonts/files/roboto-greek-500-italic.woff2 +0 -0
  24. package/fonts/files/roboto-greek-500-normal.woff +0 -0
  25. package/fonts/files/roboto-greek-500-normal.woff2 +0 -0
  26. package/fonts/files/roboto-greek-700-italic.woff +0 -0
  27. package/fonts/files/roboto-greek-700-italic.woff2 +0 -0
  28. package/fonts/files/roboto-greek-700-normal.woff +0 -0
  29. package/fonts/files/roboto-greek-700-normal.woff2 +0 -0
  30. package/fonts/files/roboto-latin-400-italic.woff +0 -0
  31. package/fonts/files/roboto-latin-400-italic.woff2 +0 -0
  32. package/fonts/files/roboto-latin-400-normal.woff +0 -0
  33. package/fonts/files/roboto-latin-400-normal.woff2 +0 -0
  34. package/fonts/files/roboto-latin-500-italic.woff +0 -0
  35. package/fonts/files/roboto-latin-500-italic.woff2 +0 -0
  36. package/fonts/files/roboto-latin-500-normal.woff +0 -0
  37. package/fonts/files/roboto-latin-500-normal.woff2 +0 -0
  38. package/fonts/files/roboto-latin-700-italic.woff +0 -0
  39. package/fonts/files/roboto-latin-700-italic.woff2 +0 -0
  40. package/fonts/files/roboto-latin-700-normal.woff +0 -0
  41. package/fonts/files/roboto-latin-700-normal.woff2 +0 -0
  42. package/fonts/files/roboto-latin-ext-400-italic.woff +0 -0
  43. package/fonts/files/roboto-latin-ext-400-italic.woff2 +0 -0
  44. package/fonts/files/roboto-latin-ext-400-normal.woff +0 -0
  45. package/fonts/files/roboto-latin-ext-400-normal.woff2 +0 -0
  46. package/fonts/files/roboto-latin-ext-500-italic.woff +0 -0
  47. package/fonts/files/roboto-latin-ext-500-italic.woff2 +0 -0
  48. package/fonts/files/roboto-latin-ext-500-normal.woff +0 -0
  49. package/fonts/files/roboto-latin-ext-500-normal.woff2 +0 -0
  50. package/fonts/files/roboto-latin-ext-700-italic.woff +0 -0
  51. package/fonts/files/roboto-latin-ext-700-italic.woff2 +0 -0
  52. package/fonts/files/roboto-latin-ext-700-normal.woff +0 -0
  53. package/fonts/files/roboto-latin-ext-700-normal.woff2 +0 -0
  54. package/icons/bcl-default-icons.svg +1 -1
  55. package/icons/bootstrap-icons.svg +1 -1
  56. package/js/oe-bcl-joinup.bundle.js +189 -5
  57. package/js/oe-bcl-joinup.bundle.js.map +1 -1
  58. package/js/oe-bcl-joinup.bundle.min.js +1 -1
  59. package/js/oe-bcl-joinup.bundle.min.js.map +1 -1
  60. package/js/oe-bcl-joinup.esm.js +188 -6
  61. package/js/oe-bcl-joinup.esm.js.map +1 -1
  62. package/js/oe-bcl-joinup.esm.min.js +1 -1
  63. package/js/oe-bcl-joinup.esm.min.js.map +1 -1
  64. package/js/oe-bcl-joinup.umd.js +189 -5
  65. package/js/oe-bcl-joinup.umd.js.map +1 -1
  66. package/js/oe-bcl-joinup.umd.min.js +1 -1
  67. package/js/oe-bcl-joinup.umd.min.js.map +1 -1
  68. package/js/slim-select-2/slimselect.min.js +1 -1
  69. package/package.json +12 -12
  70. package/src/js/index.esm.js +4 -0
  71. package/src/js/index.umd.js +4 -0
  72. package/src/scss/oe-bcl-joinup.scss +1 -0
  73. package/templates/bcl-base-templates/listing-page.html.twig +17 -19
  74. package/templates/bcl-button/button.html.twig +3 -2
  75. package/templates/bcl-contact-form/contact-form.html.twig +3 -3
  76. package/templates/bcl-content-banner/content-banner.html.twig +3 -0
  77. package/templates/bcl-dropdown/dropdown.html.twig +12 -7
  78. package/templates/bcl-event/event.html.twig +5 -5
  79. package/templates/bcl-glossary/glossary-detail.html.twig +4 -5
  80. package/templates/bcl-glossary/glossary-listing.html.twig +5 -5
  81. package/templates/bcl-group/group-landing.html.twig +5 -5
  82. package/templates/bcl-group/group.html.twig +3 -3
  83. package/templates/bcl-header/header.html.twig +37 -6
  84. package/templates/bcl-inpage-navigation/inpage-navigation.html.twig +7 -2
  85. package/templates/bcl-landing-page/landing-page.html.twig +5 -8
  86. package/templates/bcl-mega-menu/mega-menu-items.html.twig +35 -0
  87. package/templates/bcl-mega-menu/mega-menu-submenu.html.twig +65 -0
  88. package/templates/bcl-mega-menu/mega-menu.html.twig +115 -0
  89. package/templates/bcl-navigation/navigation.html.twig +11 -1
  90. package/templates/bcl-offcanvas/offcanvas.html.twig +9 -6
  91. package/templates/bcl-page/page.html.twig +5 -5
  92. package/templates/bcl-person/person.html.twig +5 -5
  93. package/templates/bcl-project/project.html.twig +7 -7
  94. package/templates/bcl-project-status/project-contributions.html.twig +1 -1
  95. package/templates/bcl-search/search.html.twig +3 -3
  96. package/templates/bcl-subscription/subscription.html.twig +5 -5
  97. package/templates/bcl-user/user-terms.html.twig +3 -3
  98. package/templates/bcl-user/user.html.twig +3 -3
@@ -25,6 +25,7 @@
25
25
  {% set _project_logo = project_logo|default({}) %}
26
26
  {% set _site_name = site_name|default('') %}
27
27
  {% set _project_link = project_link|default('') %}
28
+ {% set _navbar_id = navbar_id|default('header-navbar-' ~ random(100)) %}
28
29
  {% set _head = head|default({}) %}
29
30
  {% set _breadcrumbs = breadcrumbs|default({}) %}
30
31
  {% set _language_modal = language_modal|default({}) %}
@@ -51,10 +52,38 @@
51
52
  <header
52
53
  {{ attributes }}
53
54
  >
54
- <!-- navbar_settings -->
55
- {% if _head is not empty %}
56
- {% include '@oe-bcl/bcl-navbar/navbar.html.twig' with _head only %}
57
- {% endif %}
55
+ <nav
56
+ {{ _head.attributes.addClass(['navbar', 'navbar-expand-lg', 'navbar-light']) }}>
57
+ <div class='container'>
58
+ {% if _head.brand is not empty %}
59
+ <a class='navbar-brand' href='{{ _head.brand.link }}'>
60
+ {% for logo in _head.brand.logos %}
61
+ <img
62
+ src='{{ logo.src }}'
63
+ {% if logo.alt is not empty %}
64
+ alt='{{ logo.alt }}'
65
+ {% endif %}
66
+ {% if logo.class is not empty %}
67
+ class='{{ logo.class }}'
68
+ {% endif %}
69
+ />
70
+ {% endfor %}
71
+ </a>
72
+ {% endif %}
73
+ <button
74
+ class="navbar-toggler bcl-navbar-toggler"
75
+ type="button"
76
+ data-bs-toggle="collapse"
77
+ data-bs-target='#{{ _navbar_id }}'
78
+ aria-controls='{{ _navbar_id }}'
79
+ aria-expanded="false"
80
+ aria-label="Toggle navigation"
81
+ >
82
+ <span class="navbar-toggler-icon"></span>
83
+ </button>
84
+ </div>
85
+ </nav>
86
+
58
87
 
59
88
  <!-- project name -->
60
89
  {% if _project_logo is not empty or _site_name is not empty %}
@@ -62,7 +91,6 @@
62
91
  <div class="container">
63
92
  {% if _project_link is not empty %}
64
93
  <a
65
- class="d-inline-block"
66
94
  href="{{ _project_link }}"
67
95
  >
68
96
  {% endif %}
@@ -93,7 +121,10 @@
93
121
 
94
122
  <!-- navbar -->
95
123
  {% if _navbar is not empty %}
96
- {% include '@oe-bcl/bcl-navbar/navbar.html.twig' with _navbar only %}
124
+ {% include '@oe-bcl/bcl-navbar/navbar.html.twig' with _navbar|merge({
125
+ disable_collapse: true,
126
+ attributes: create_attribute().addClass('bcl-header__navbar collapse navbar-collapse').setAttribute('id', _navbar_id).setAttribute('aria-label', 'Main Navigation'),
127
+ }) only %}
97
128
  {% endif %}
98
129
 
99
130
  <!-- breadcrumbs -->
@@ -29,6 +29,11 @@ Parameters:
29
29
  {% endif %}
30
30
 
31
31
  {% set attributes = attributes.addClass(['bcl-inpage-navigation', 'position-sticky']).setAttribute('id', _id) %}
32
+
33
+ {% if not attributes.hasAttribute('aria-label') and not attributes.hasAttribute('aria-labelledby') %}
34
+ {% set attributes = attributes.setAttribute('aria-labelledby', _dropdown_id) %}
35
+ {% endif %}
36
+
32
37
  {% set title_attributes = _title_attributes.addClass(['mb-0', 'd-none', 'd-md-block']) %}
33
38
  {% set _button_content %}
34
39
  {{ _title }}
@@ -45,7 +50,7 @@ Parameters:
45
50
  {% set _classes = _classes|merge(['dynamic-active']) %}
46
51
  {% endif %}
47
52
 
48
- <nav {{ attributes.addClass(_classes) }}>
53
+ <nav{{ attributes.addClass(_classes) }}>
49
54
  {% set trigger_attributes = create_attribute()
50
55
  .setAttribute('aria-expanded', 'false')
51
56
  .setAttribute('type', 'button')
@@ -63,7 +68,7 @@ Parameters:
63
68
  title_link: _title_link,
64
69
  attributes: _title_attributes,
65
70
  } only %}
66
- <div class="dropdown-menu" aria-labelledby="{{ _dropdown_id }}">
71
+ <div class="dropdown-menu">
67
72
  {% include '@oe-bcl/bcl-navigation/navigation.html.twig' with {
68
73
  'pills': true,
69
74
  'vertical': true,
@@ -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 -%}
@@ -0,0 +1,35 @@
1
+ {% apply spaceless %}
2
+
3
+ {% set _label = label ?? null %}
4
+ {% set _items = items ?? [] %}
5
+ {% set _icon_path = icon_path ?? '' %}
6
+ {% set _level = level ?? 1 %}
7
+ {% set _see_all = see_all ?? null %}
8
+
9
+ <ul class="bcl-mega-menu__items __level-{{ _level }}">
10
+ {% for _item in _items %}
11
+ {% set _li_attributes = _item.li_attributes ?? create_attribute() %}
12
+ {% if _item.items is defined and _item.items is not empty %}
13
+ {# This is a parent item. #}
14
+ <li{{ _li_attributes.addClass('__parent') }}>
15
+ {% include '@oe-bcl/bcl-mega-menu/mega-menu-submenu.html.twig' with _item|merge({
16
+ icon_path: _icon_path,
17
+ level: _level + 1,
18
+ }) only %}
19
+ </li>
20
+ {% else %}
21
+ {# This is a leaf item. #}
22
+ <li{{ _li_attributes.addClass('__leaf') }}>
23
+ {% if _item.path is empty %}
24
+ {# This is a nolink item. #}
25
+ <span{{ _item.attributes ?? '' }}>{{ _item.label }}</span>
26
+ {% else %}
27
+ {# This is a link. #}
28
+ {% include '@oe-bcl/bcl-link/link.html.twig' with _item only %}
29
+ {% endif %}
30
+ </li>
31
+ {% endif %}
32
+ {% endfor %}
33
+ </ul>
34
+
35
+ {% endapply %}
@@ -0,0 +1,65 @@
1
+ {% apply spaceless %}
2
+
3
+ {% set _items = items ?? [] %}
4
+ {% set _trigger = trigger ?? null %}
5
+ {% set _icon_path = icon_path ?? '' %}
6
+ {% set _level = level ?? 2 %}
7
+ {% set _see_all = see_all ?? null %}
8
+
9
+ {% set _trigger_id = _trigger.id|default('mm-trigger-' ~ random(10000)) %}
10
+ {% set _panel_id = 'mm-panel-' ~ _trigger_id %}
11
+
12
+ {% set _trigger_attributes = _trigger.attributes ?? create_attribute() %}
13
+ {% set _trigger = _trigger|merge({
14
+ attributes: _trigger_attributes
15
+ .setAttribute('id', _trigger_id)
16
+ .setAttribute('aria-controls', _panel_id)
17
+ .setAttribute('aria-expanded', 'false')
18
+ .setAttribute('aria-haspopup', 'menu'),
19
+ remove_icon_spacers: true,
20
+ clean_class: true,
21
+ }) %}
22
+ {% include '@oe-bcl/bcl-button/button.html.twig' with _trigger only %}
23
+
24
+ {# Add an optional "See all" link as last item. #}
25
+ {% if _see_all is not empty %}
26
+ {# Wrap the label for an ellipsis. #}
27
+ {% set _see_all_label %}
28
+ <span>{{- _see_all.label -}}</span>
29
+ {% endset %}
30
+ {% set _see_all_attr = (_see_all.attributes is defined ? _see_all.attributes : create_attribute()) %}
31
+ {% set _see_all = _see_all|merge({
32
+ label: _see_all_label,
33
+ icon: {
34
+ name: 'arrow-right',
35
+ path: _icon_path,
36
+ },
37
+ li_attributes: create_attribute()
38
+ .addClass('__see_all'),
39
+ attributes: _see_all_attr
40
+ .addClass(['see-all-button'])
41
+ .setAttribute('aria-label', 'See all items in ‘' ~ _trigger.label ~ '’')
42
+ }) %}
43
+ {% set _items = _items|merge([_see_all]) %}
44
+ {% endif %}
45
+ {% set submenu_attributes = create_attribute()
46
+ .setAttribute('id', _panel_id)
47
+ .setAttribute('hidden', '')
48
+ .setAttribute('role', 'group')
49
+ .setAttribute('aria-labelledby', _trigger_id)
50
+ .addClass('bcl-mega-menu__submenu', '__level-' ~ _level)
51
+ %}
52
+ <div{{ submenu_attributes }}>
53
+ {% if _trigger %}
54
+ <div class="__header">
55
+ <p class="__label">{{ _trigger.label }}</p>
56
+ </div>
57
+ {% endif %}
58
+ {% include '@oe-bcl/bcl-mega-menu/mega-menu-items.html.twig' with {
59
+ items: _items,
60
+ icon_path: _icon_path,
61
+ level: _level,
62
+ } only %}
63
+ </div>
64
+
65
+ {% endapply %}
@@ -0,0 +1,115 @@
1
+ {% apply spaceless %}
2
+
3
+ {# Parameters:
4
+ - id (string) (default: dropdown-random(1000))
5
+ - link (boolean) (default: false) - sets trigger to link, default is button
6
+ - trigger (link or button)
7
+ - content_block (block) (default: '')
8
+ - content_link (link)
9
+ - icon_path (string) (default: '')
10
+ - min_height (string) (default: '300px')
11
+ ! set min-height of mega-menu
12
+ - items (object[])
13
+ format: [
14
+ {
15
+ - link or dropdown
16
+ }
17
+ ]
18
+ - back_button_label (string) (default: 'Back')
19
+ - icon_path (string) (default: '')
20
+ #}
21
+
22
+ {% set _id = id|default('dropdown-' ~ random(1000)) %}
23
+ {% set _link = link ?? false %}
24
+ {% set _trigger = trigger|default({}) %}
25
+ {% set _content_block = content_block|default('') %}
26
+ {% set _content_link = content_link|default({}) %}
27
+ {% set _icon_path = icon_path|default('') %}
28
+ {% set _items = items|default([]) %}
29
+ {% set _back_button_label = back_button_label|default('Back') %}
30
+ {% set _icon_path = icon_path|default('') %}
31
+ {% set _menu_id = 'mega-menu-' ~ _id %}
32
+
33
+ {% if attributes is empty %}
34
+ {% set attributes = create_attribute() %}
35
+ {% endif %}
36
+
37
+ {% set _classes = ['bcl-mega-menu'] %}
38
+
39
+ {% set attributes = attributes.addClass(_classes) %}
40
+
41
+ {% if _trigger.attributes is empty %}
42
+ {% set _trigger = _trigger|merge({
43
+ attributes: create_attribute()
44
+ }) %}
45
+ {% endif %}
46
+ {% set _trigger = _trigger|merge({
47
+ attributes: _trigger.attributes.addClass(['dropdown-toggle', 'nav-link'])
48
+ .setAttribute('aria-expanded', 'false')
49
+ .setAttribute('aria-haspopup', 'menu')
50
+ .setAttribute('aria-controls', _menu_id)
51
+ .setAttribute('data-bs-toggle', 'dropdown')
52
+ .setAttribute('data-bs-auto-close', 'outside')
53
+ .setAttribute('id', _id)
54
+ }) %}
55
+
56
+ <div {{ attributes }}>
57
+ {% include '@oe-bcl/bcl-button/button.html.twig' with _trigger|merge({
58
+ variant: 'link',
59
+ clean_class: true,
60
+ }) only %}
61
+ {# Mega menu panel. #}
62
+ <nav id="{{ _menu_id }}" class="bcl-mega-menu__container dropdown-menu" aria-labelledby="{{ _id }}" aria-label="Main mega menu">
63
+ <div class="container">
64
+ {# Mobile back button. #}
65
+ <div class="container d-lg-none bcl-mega-menu__back-button-block">
66
+ {% include '@oe-bcl/bcl-button/button.html.twig' with {
67
+ label: _back_button_label,
68
+ icon_position: "before",
69
+ variant: 'link',
70
+ icon: {
71
+ path: _icon_path,
72
+ name: "arrow-left",
73
+ },
74
+ attributes: create_attribute().addClass(['back-button']).setAttribute('aria-label', 'Back to main menu')
75
+ } only %}
76
+ </div>
77
+ {# Info/summary and submenu columns. #}
78
+ <div class="position-relative">
79
+ <div class="row">
80
+ {# Content / summary column. #}
81
+ {% if content_block is defined %}
82
+ <div class="col-md-12 col-xl-3 position-relative bcl-mega-menu__info">
83
+ <div class="content-block">
84
+ {%- block content_block -%}
85
+ {{ _content_block }}
86
+ {%- endblock -%}
87
+ {% if _content_link.path is not empty %}
88
+ {% set _content_link = _content_link|merge({
89
+ icon: _content_link.icon|default({})|merge({
90
+ path: _icon_path
91
+ }),
92
+ attributes: (_content_link.attributes is defined
93
+ ? _content_link.attributes
94
+ : create_attribute()
95
+ ).addClass('content-link')
96
+ }) %}
97
+ <p class="m-0">{% include '@oe-bcl/bcl-link/link.html.twig' with _content_link only %}</p>
98
+ {% endif %}
99
+ </div>
100
+ <div class="shadow-container">
101
+ <span class="shadow-bg"></span>
102
+ </div>
103
+ </div>
104
+ {% endif %}
105
+ {# Submenu column. #}
106
+ <div class="col-md-12 col-lg-4 col-xl-3 bcl-mega-menu__menu">
107
+ {% include '@oe-bcl/bcl-mega-menu/mega-menu-items.html.twig' %}
108
+ </div>
109
+ </div>
110
+ </div>
111
+ </div>
112
+ </nav>
113
+ </div>
114
+
115
+ {% endapply %}
@@ -91,7 +91,7 @@
91
91
  {% set _nav_class = _nav_class ~ ' dropdown' %}
92
92
  {% set _item = _item|merge({remove_wrapper: true}) %}
93
93
  {% endif %}
94
- {% if _item.dropdown %}
94
+ {% if _item.dropdown or _item.mega_menu %}
95
95
  {% set _item_classes = [] %}
96
96
  {% else %}
97
97
  {% set _item_classes = ['nav-link'] %}
@@ -121,9 +121,19 @@
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 %}
135
+ {% elseif _item.mega_menu is defined %}
136
+ {% include '@oe-bcl/bcl-mega-menu/mega-menu.html.twig' with _item only %}
127
137
  {% else %}
128
138
  {% include '@oe-bcl/bcl-link/link.html.twig' with _item only %}
129
139
  {% endif %}
@@ -25,7 +25,7 @@
25
25
  {% set _title_link = title_link|default({}) %}
26
26
  {% set _title_attributes = title_attributes ?: create_attribute() %}
27
27
  {% set _placement = placement|default('') %}
28
- {% set _id = id|default('') %}
28
+ {% set _id = id|default('bcl-offcanvas-' ~ random(10000)) %}
29
29
  {% set _body = body|default('') %}
30
30
  {% set _with_body_scroll = with_body_scroll ?? false %}
31
31
  {% set _with_backdrop = with_backdrop ?? true %}
@@ -57,14 +57,12 @@
57
57
  {% set attributes = create_attribute() %}
58
58
  {% endif %}
59
59
 
60
+ {% set attributes = attributes.setAttribute('id', _id) %}
61
+
60
62
  {% if _aria_labelled is defined and _aria_labelled is not empty %}
61
63
  {% set attributes = attributes.setAttribute('aria-labelledby', _aria_labelled) %}
62
64
  {% endif %}
63
65
 
64
- {% if _id is not empty %}
65
- {% set attributes = attributes.setAttribute('id', _id) %}
66
- {% endif %}
67
-
68
66
  {% if _with_body_scroll %}
69
67
  {% set attributes = attributes.setAttribute('data-bs-scroll', 'true') %}
70
68
  {% endif %}
@@ -73,6 +71,10 @@
73
71
  {% set attributes = attributes.setAttribute('data-bs-backdrop', 'false') %}
74
72
  {% endif %}
75
73
 
74
+ {% if _title is not empty %}
75
+ {% set attributes = attributes.setAttribute('aria-labelledby', _id ~ '-title') %}
76
+ {% endif %}
77
+
76
78
  {% set attributes = attributes.setAttribute('tabindex', '-1').addClass(_classes) %}
77
79
 
78
80
  <div
@@ -85,7 +87,7 @@
85
87
  title: _title,
86
88
  title_tag: _title_tag,
87
89
  title_link: _title_link,
88
- attributes: _title_attributes.addClass(['offcanvas-title']),
90
+ attributes: _title_attributes.setAttribute('id', _id ~ '-title').addClass(['offcanvas-title']),
89
91
  } only %}
90
92
  {% endif %}
91
93
  {% if _with_close %}
@@ -94,6 +96,7 @@
94
96
  .setAttribute('data-bs-dismiss', 'offcanvas')
95
97
  .setAttribute('data-bs-target', '#' ~ _id)
96
98
  .setAttribute('aria-label', _close_aria_label)
99
+ .setAttribute('aria-controls', _id)
97
100
  %}
98
101
  {% if _extra_classes_close is not empty %}
99
102
  {% set button_attributes = button_attributes.addClass(_extra_classes_close) %}
@@ -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 -%}
@@ -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 -%}
@@ -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 -%}
@@ -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
  {% include "@oe-bcl/bcl-navigation/navigation.html.twig" with navigation only %}
5
5
  <div class="tab-content">
6
6
  <div class="tab-pane fade show active" id="view" role="tabpanel" aria-labelledby="view-tab">
@@ -134,4 +134,4 @@
134
134
  {% include '@oe-bcl/bcl-form/form.html.twig' with cancel.form only %}
135
135
  </div>
136
136
  </div>
137
- {% endblock %}
137
+ {%- endblock -%}