@openeuropa/bcl-theme-default 0.19.0 → 0.22.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 (169) hide show
  1. package/bcl-builder.config.js +11 -4
  2. package/css/oe-bcl-default.css +1288 -400
  3. package/css/oe-bcl-default.css.map +1 -1
  4. package/css/oe-bcl-default.min.css +1 -1
  5. package/css/oe-bcl-default.min.css.map +1 -1
  6. package/icons/bcl-default-icons.svg +1 -0
  7. package/icons/icons-flag.svg +1 -1
  8. package/js/oe-bcl-default.bundle.js +242 -76
  9. package/js/oe-bcl-default.bundle.js.map +1 -1
  10. package/js/oe-bcl-default.bundle.min.js +1 -1
  11. package/js/oe-bcl-default.bundle.min.js.map +1 -1
  12. package/js/oe-bcl-default.esm.js +236 -75
  13. package/js/oe-bcl-default.esm.js.map +1 -1
  14. package/js/oe-bcl-default.esm.min.js +1 -1
  15. package/js/oe-bcl-default.esm.min.js.map +1 -1
  16. package/js/oe-bcl-default.umd.js +242 -76
  17. package/js/oe-bcl-default.umd.js.map +1 -1
  18. package/js/oe-bcl-default.umd.min.js +1 -1
  19. package/js/oe-bcl-default.umd.min.js.map +1 -1
  20. package/logos/ec/{logo-ec--ar.svg → positive/logo-ec--ar.svg} +0 -0
  21. package/logos/ec/{logo-ec--bg.svg → positive/logo-ec--bg.svg} +0 -0
  22. package/logos/ec/{logo-ec--ca.svg → positive/logo-ec--ca.svg} +0 -0
  23. package/logos/ec/{logo-ec--cs.svg → positive/logo-ec--cs.svg} +0 -0
  24. package/logos/ec/{logo-ec--da.svg → positive/logo-ec--da.svg} +0 -0
  25. package/logos/ec/{logo-ec--de.svg → positive/logo-ec--de.svg} +0 -0
  26. package/logos/ec/{logo-ec--el.svg → positive/logo-ec--el.svg} +0 -0
  27. package/logos/ec/{logo-ec--en.svg → positive/logo-ec--en.svg} +0 -0
  28. package/logos/ec/{logo-ec--es.svg → positive/logo-ec--es.svg} +0 -0
  29. package/logos/ec/{logo-ec--et.svg → positive/logo-ec--et.svg} +0 -0
  30. package/logos/ec/{logo-ec--fi.svg → positive/logo-ec--fi.svg} +0 -0
  31. package/logos/ec/{logo-ec--fr.svg → positive/logo-ec--fr.svg} +0 -0
  32. package/logos/ec/{logo-ec--ga.svg → positive/logo-ec--ga.svg} +0 -0
  33. package/logos/ec/{logo-ec--hr.svg → positive/logo-ec--hr.svg} +0 -0
  34. package/logos/ec/{logo-ec--hu.svg → positive/logo-ec--hu.svg} +0 -0
  35. package/logos/ec/{logo-ec--is.svg → positive/logo-ec--is.svg} +0 -0
  36. package/logos/ec/{logo-ec--it.svg → positive/logo-ec--it.svg} +0 -0
  37. package/logos/ec/{logo-ec--lt.svg → positive/logo-ec--lt.svg} +0 -0
  38. package/logos/ec/{logo-ec--lv.svg → positive/logo-ec--lv.svg} +0 -0
  39. package/logos/ec/{logo-ec--mt.svg → positive/logo-ec--mt.svg} +0 -0
  40. package/logos/ec/{logo-ec--nl.svg → positive/logo-ec--nl.svg} +0 -0
  41. package/logos/ec/{logo-ec--no.svg → positive/logo-ec--no.svg} +0 -0
  42. package/logos/ec/{logo-ec--pl.svg → positive/logo-ec--pl.svg} +0 -0
  43. package/logos/ec/{logo-ec--pt.svg → positive/logo-ec--pt.svg} +0 -0
  44. package/logos/ec/{logo-ec--ro.svg → positive/logo-ec--ro.svg} +0 -0
  45. package/logos/ec/{logo-ec--sk.svg → positive/logo-ec--sk.svg} +0 -0
  46. package/logos/ec/{logo-ec--sl.svg → positive/logo-ec--sl.svg} +0 -0
  47. package/logos/ec/{logo-ec--sv.svg → positive/logo-ec--sv.svg} +0 -0
  48. package/logos/ec/{logo-ec--tr.svg → positive/logo-ec--tr.svg} +0 -0
  49. package/logos/eu/condensed-version/negative/logo-eu--ar.svg +18 -0
  50. package/logos/eu/condensed-version/negative/logo-eu--bg.svg +7 -0
  51. package/logos/eu/condensed-version/negative/logo-eu--ca.svg +7 -0
  52. package/logos/eu/condensed-version/negative/logo-eu--cs.svg +7 -0
  53. package/logos/eu/condensed-version/negative/logo-eu--da.svg +7 -0
  54. package/logos/eu/condensed-version/negative/logo-eu--de.svg +7 -0
  55. package/logos/eu/condensed-version/negative/logo-eu--el.svg +7 -0
  56. package/logos/eu/condensed-version/negative/logo-eu--en.svg +7 -0
  57. package/logos/eu/condensed-version/negative/logo-eu--es.svg +7 -0
  58. package/logos/eu/condensed-version/negative/logo-eu--et.svg +7 -0
  59. package/logos/eu/condensed-version/negative/logo-eu--fi.svg +7 -0
  60. package/logos/eu/condensed-version/negative/logo-eu--fr.svg +7 -0
  61. package/logos/eu/condensed-version/negative/logo-eu--ga.svg +7 -0
  62. package/logos/eu/condensed-version/negative/logo-eu--hr.svg +7 -0
  63. package/logos/eu/condensed-version/negative/logo-eu--hu.svg +7 -0
  64. package/logos/eu/condensed-version/negative/logo-eu--is.svg +8 -0
  65. package/logos/eu/condensed-version/negative/logo-eu--it.svg +7 -0
  66. package/logos/eu/condensed-version/negative/logo-eu--lt.svg +7 -0
  67. package/logos/eu/condensed-version/negative/logo-eu--lv.svg +7 -0
  68. package/logos/eu/condensed-version/negative/logo-eu--mt.svg +7 -0
  69. package/logos/eu/condensed-version/negative/logo-eu--nl.svg +7 -0
  70. package/logos/eu/condensed-version/negative/logo-eu--no.svg +7 -0
  71. package/logos/eu/condensed-version/negative/logo-eu--pl.svg +7 -0
  72. package/logos/eu/condensed-version/negative/logo-eu--pt.svg +7 -0
  73. package/logos/eu/condensed-version/negative/logo-eu--ro.svg +7 -0
  74. package/logos/eu/condensed-version/negative/logo-eu--sk.svg +7 -0
  75. package/logos/eu/condensed-version/negative/logo-eu--sl.svg +7 -0
  76. package/logos/eu/condensed-version/negative/logo-eu--sv.svg +7 -0
  77. package/logos/eu/condensed-version/negative/logo-eu--tr.svg +7 -0
  78. package/logos/eu/standard-version/negative/logo-eu--ar.svg +18 -0
  79. package/logos/eu/standard-version/negative/logo-eu--bg.svg +17 -0
  80. package/logos/eu/standard-version/negative/logo-eu--ca.svg +16 -0
  81. package/logos/eu/standard-version/negative/logo-eu--cs.svg +17 -0
  82. package/logos/eu/standard-version/negative/logo-eu--da.svg +23 -0
  83. package/logos/eu/standard-version/negative/logo-eu--de.svg +21 -0
  84. package/logos/eu/standard-version/negative/logo-eu--el.svg +19 -0
  85. package/logos/eu/standard-version/negative/logo-eu--en.svg +18 -0
  86. package/logos/eu/standard-version/negative/logo-eu--es.svg +17 -0
  87. package/logos/eu/standard-version/negative/logo-eu--et.svg +16 -0
  88. package/logos/eu/standard-version/negative/logo-eu--fi.svg +19 -0
  89. package/logos/eu/standard-version/negative/logo-eu--fr.svg +20 -0
  90. package/logos/eu/standard-version/negative/logo-eu--ga.svg +21 -0
  91. package/logos/eu/standard-version/negative/logo-eu--hr.svg +18 -0
  92. package/logos/eu/standard-version/negative/logo-eu--hu.svg +16 -0
  93. package/logos/eu/standard-version/negative/logo-eu--is.svg +20 -0
  94. package/logos/eu/standard-version/negative/logo-eu--it.svg +18 -0
  95. package/logos/eu/standard-version/negative/logo-eu--lt.svg +19 -0
  96. package/logos/eu/standard-version/negative/logo-eu--lv.svg +21 -0
  97. package/logos/eu/standard-version/negative/logo-eu--mt.svg +19 -0
  98. package/logos/eu/standard-version/negative/logo-eu--nl.svg +17 -0
  99. package/logos/eu/standard-version/negative/logo-eu--no.svg +20 -0
  100. package/logos/eu/standard-version/negative/logo-eu--pl.svg +19 -0
  101. package/logos/eu/standard-version/negative/logo-eu--pt.svg +18 -0
  102. package/logos/eu/standard-version/negative/logo-eu--ro.svg +21 -0
  103. package/logos/eu/standard-version/negative/logo-eu--sk.svg +17 -0
  104. package/logos/eu/standard-version/negative/logo-eu--sl.svg +18 -0
  105. package/logos/eu/standard-version/negative/logo-eu--sv.svg +22 -0
  106. package/logos/eu/standard-version/negative/logo-eu--tr.svg +18 -0
  107. package/package.json +14 -9
  108. package/src/icons/icons.js +356 -0
  109. package/src/js/gallery/gallery.js +168 -0
  110. package/src/js/index.esm.js +2 -0
  111. package/src/js/index.umd.js +2 -0
  112. package/src/scss/_badge.scss +5 -5
  113. package/src/scss/_banners.scss +4 -4
  114. package/src/scss/_bcl-offcanvas.scss +7 -0
  115. package/src/scss/_carousel.scss +85 -0
  116. package/src/scss/_circular-progress-bar.scss +122 -0
  117. package/src/scss/_gallery.scss +269 -0
  118. package/src/scss/_header.scss +46 -45
  119. package/src/scss/_inpage-navigation.scss +6 -0
  120. package/src/scss/_language-list.scss +51 -0
  121. package/src/scss/_pagination.scss +8 -0
  122. package/src/scss/_reset.scss +9 -0
  123. package/src/scss/_search-form.scss +4 -2
  124. package/src/scss/base/_colors.scss +17 -6
  125. package/src/scss/base/_utilities.scss +35 -4
  126. package/src/scss/base/_variables.scss +10 -1
  127. package/src/scss/oe-bcl-default.scss +5 -0
  128. package/templates/bcl-alert/alert.html.twig +13 -5
  129. package/templates/bcl-badge/badge.html.twig +4 -4
  130. package/templates/bcl-banner/banner.html.twig +16 -9
  131. package/templates/bcl-base-templates/listing-page.html.twig +13 -13
  132. package/templates/bcl-breadcrumb/breadcrumb.html.twig +2 -2
  133. package/templates/bcl-card/card.html.twig +42 -20
  134. package/templates/bcl-card-layout/card-layout.html.twig +6 -1
  135. package/templates/bcl-carousel/carousel.html.twig +26 -5
  136. package/templates/bcl-content-banner/content-banner.html.twig +39 -33
  137. package/templates/bcl-date-block/date-block.html.twig +29 -9
  138. package/templates/bcl-description-list/description-list.html.twig +23 -12
  139. package/templates/bcl-fact-figures/fact-figures.html.twig +9 -5
  140. package/templates/bcl-file/file.html.twig +11 -8
  141. package/templates/bcl-footer/footer.html.twig +3 -1
  142. package/templates/bcl-form/form.html.twig +7 -4
  143. package/templates/bcl-gallery/gallery.html.twig +206 -0
  144. package/templates/bcl-header/header.html.twig +31 -15
  145. package/templates/bcl-heading/heading.html.twig +42 -0
  146. package/templates/bcl-language-list/language-list-grid.html.twig +68 -0
  147. package/templates/bcl-language-list/language-list-modal.html.twig +58 -0
  148. package/templates/bcl-language-list/language-list.html.twig +111 -0
  149. package/templates/bcl-language-switcher/language-switcher.html.twig +44 -0
  150. package/templates/bcl-link/link.html.twig +1 -1
  151. package/templates/bcl-links-block/links-block.html.twig +9 -3
  152. package/templates/bcl-listing/listing.html.twig +12 -8
  153. package/templates/bcl-modal/modal.html.twig +12 -1
  154. package/templates/bcl-navbar/navbar.html.twig +39 -28
  155. package/templates/bcl-page/page.html.twig +1 -1
  156. package/templates/bcl-pagination/pagination.html.twig +123 -9
  157. package/templates/bcl-person/person.html.twig +44 -0
  158. package/templates/bcl-project/project-lists.html.twig +67 -0
  159. package/templates/bcl-project/project.html.twig +84 -49
  160. package/templates/bcl-project-status/project-contributions.html.twig +56 -0
  161. package/templates/bcl-project-status/project-status.html.twig +13 -24
  162. package/templates/bcl-select/select.html.twig +13 -3
  163. package/templates/bcl-subscription/subscription-modal.html.twig +24 -0
  164. package/templates/bcl-subscription/subscription.html.twig +10 -0
  165. package/templates/bcl-subscription-block/subscription-block.html.twig +36 -0
  166. package/templates/bcl-timeline/timeline.html.twig +10 -7
  167. package/templates/bcl-user/user-view-compact.html.twig +9 -2
  168. package/templates/bcl-user/user-view.html.twig +0 -10
  169. package/icons/bootstrap-icons.svg +0 -1
@@ -0,0 +1,44 @@
1
+ {% spaceless %}
2
+
3
+ {# Parameters:
4
+ - id (string) (default: collapse-{random number 0-1000}) - collapse custom id - optional
5
+ - message (alert object) (default: {})
6
+ - expandable (button object) (default: [])
7
+ - language (array of link object) (default: [])
8
+ #}
9
+
10
+ {% set _id = id|default('collapse-' ~ random(1000)) %}
11
+ {% set _message = message|default({}) %}
12
+ {% set _expandable = expandable|default({}) %}
13
+ {% set _languages = languages|default([]) %}
14
+
15
+ {% set _expandable_attributes = _expandable.attributes ?: create_attribute() %}
16
+
17
+ {% set _expandable_attributes = _expandable_attributes
18
+ .setAttribute('data-bs-toggle', 'collapse')
19
+ .setAttribute('autocomplete', 'off')
20
+ .setAttribute('aria-expanded', 'false')
21
+ .setAttribute('aria-controls', _id)
22
+ .setAttribute('data-bs-target', '#' ~ _id)
23
+ %}
24
+
25
+ {% include '@oe-bcl/bcl-alert/alert.html.twig' with _message only %}
26
+
27
+ {% include '@oe-bcl/bcl-button/button.html.twig' with _expandable|merge({
28
+ attributes: _expandable_attributes
29
+ }) only %}
30
+
31
+ <div class="collapse mt-3" id="{{ _id }}">
32
+ <div
33
+ class="d-md-grid"
34
+ style="grid-auto-flow: column; grid-template-rows: repeat(4, 1fr)"
35
+ >
36
+ {% for language in languages %}
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"])
39
+ }) only %}
40
+ {% endfor %}
41
+ </div>
42
+ </div>
43
+
44
+ {% endspaceless %}
@@ -65,7 +65,7 @@
65
65
  {% set attributes = attributes.setAttribute('id', _id) %}
66
66
  {% endif %}
67
67
  {% if _standalone %}
68
- {% set _classes = _classes|merge(['text-underline-hover']) %}
68
+ {% set _classes = _classes|merge(['standalone']) %}
69
69
  {% endif %}
70
70
  {% if _classes is not empty %}
71
71
  {% set attributes = attributes.addClass(_classes) %}
@@ -7,6 +7,7 @@
7
7
  - options ["vertical", "horizontal"]
8
8
  - title: (string) (default: "")
9
9
  - title_tag: (string) (default: "h2")
10
+ - title_attributes (drupal attrs)
10
11
  - links (array of link objects) (default: [])
11
12
  #}
12
13
 
@@ -14,6 +15,8 @@
14
15
  {% set _variant = variant|default("vertical") %}
15
16
  {% set _title = title|default("") %}
16
17
  {% set _title_tag = title_tag|default("h2") %}
18
+ {% set _title_classes = ['fw-bold', 'pb-3', 'mb-3', 'border-bottom'] %}
19
+ {% set _title_attributes = title_attributes ?: create_attribute().addClass(_title_classes) %}
17
20
  {% set _links = links|default([])%}
18
21
 
19
22
  {% if attributes is empty %}
@@ -28,8 +31,11 @@
28
31
  {{ attributes }}
29
32
  >
30
33
  {% if _title is not empty %}
31
- {% set _title_classes = 'fw-bold pb-3 mb-3 border-bottom' %}
32
- <{{ _title_tag }} class="{{ _title_classes }}">{{ _title }}</{{ _title_tag }}>
34
+ {% include '@oe-bcl/bcl-heading/heading.html.twig' with {
35
+ title: _title,
36
+ title_tag: _title_tag,
37
+ attributes: _title_attributes,
38
+ } only %}
33
39
  {% endif %}
34
40
  {% if _links is not empty and _links is iterable %}
35
41
  <ul class="ps-0 mb-0">
@@ -41,7 +47,7 @@
41
47
  {% endif %}
42
48
  {% set _link = _link|merge({
43
49
  clean_class: true,
44
- attributes: _link.attributes.addClass(["pb-3", "d-inline-block"])
50
+ attributes: _link.attributes.addClass(["pb-3", "d-inline-block", "standalone"])
45
51
  }) %}
46
52
  {% set _list_item_classes = "list-unstyled" %}
47
53
  {% if _variant == "horizontal" %}
@@ -5,6 +5,7 @@
5
5
  [ default-1-col, highlight-1-col, default-2-col, default-3-col, highlight-2-col, highlight-3-col ]
6
6
  - title: (string) (default: "")
7
7
  - title_tag: (string) (default: "h2")
8
+ - title_attributes (drupal attrs)
8
9
  - items: (array of objects of type card)
9
10
  - link: (object of type link)
10
11
  - alignment: (string) (default: '') options:
@@ -15,6 +16,7 @@
15
16
  {% set _variant = variant|default('default-1-col') %}
16
17
  {% set _title = title|default('') %}
17
18
  {% set _title_tag = title_tag|default('h2') %}
19
+ {% set _title_attributes = title_attributes ?: create_attribute() %}
18
20
  {% set _alignment = alignment|default('') %}
19
21
  {% set _link = link|default({}) %}
20
22
  {% set _classes = ['bcl-listing', 'bcl-listing--' ~ _variant] %}
@@ -35,10 +37,11 @@
35
37
  <div {{ attributes }}>
36
38
 
37
39
  {% if _title is not empty %}
38
- {% set _title_classes = 'fw-bold mb-4' %}
39
- <{{ _title_tag }} class="{{ _title_classes }}">
40
- {{- _title -}}
41
- </{{ _title_tag }}>
40
+ {% include '@oe-bcl/bcl-heading/heading.html.twig' with {
41
+ title: _title,
42
+ title_tag: _title_tag,
43
+ title_attributes: _title_attributes,
44
+ } only %}
42
45
  {% endif %}
43
46
 
44
47
  {% if _items is not empty %}
@@ -47,15 +50,16 @@
47
50
  {% set _max_width = '' %}
48
51
  {% set _image = {} %}
49
52
  {% if _card.image is not empty %}
50
- {% set _max_width = 'mw-listing-img' %}
53
+ {% set _image_classes = _card.image.classes ?: '' %}
51
54
  {% if not _alignment == 'center' %}
52
- {% set _image_classes = _card.image.classes ? _card.image.classes ~ ' mb-3' : 'mb-3' %}
55
+ {% set _image_classes = _image_classes ? _image_classes ~ ' mb-3' : 'mb-3' %}
53
56
  {% endif %}
57
+ {% set _max_width = 'mw-listing-img' %}
54
58
  {% set _card = _card|merge({image: _card.image|merge({
55
- classes: _image_classes
59
+ classes: _image_classes,
56
60
  })}) %}
57
61
  {% elseif _card.date is not empty %}
58
- {% set _max_width = 'mw-date mb-3' %}
62
+ {% set _max_width = 'mw-col-date mb-3' %}
59
63
  {% endif %}
60
64
  {% if _alignment is not empty %}
61
65
  {% set _alignment_class = ' align-self-' ~ _alignment %}
@@ -3,17 +3,22 @@
3
3
  {# Parameters:
4
4
  - size (string) (sm, lg, xl, fullscreen) default('')
5
5
  - id (boolean) (default: 'modal-' ~ random(1000))
6
+ - fullscreen_responsive (string) (default: '')
7
+ options: sm, md, lg, xl, xxl
6
8
  - static_backdrop (boolean) (default: false)
7
9
  - verticaly_centered (boolean) (default: false)
8
10
  - scrollable (boolean) (default: false)
9
11
  - header (block) (default: '')
12
+ - messages (block) (default: '')
10
13
  - body (block) (default: '')
11
14
  - footer (block) (default: '')
12
15
  #}
13
16
  {% set _size = size|default('') %}
14
17
  {% set _id = id|default('modal-' ~ random(1000)) %}
18
+ {% set _fullscreen_responsive = fullscreen_responsive|default('') %}
15
19
  {% set _header = header|default('') %}
16
20
  {% set _body = body|default('') %}
21
+ {% set _messages = messages|default('') %}
17
22
  {% set _static_backdrop = static_backdrop|default(false) %}
18
23
  {% set _verticaly_centered = verticaly_centered|default(false) %}
19
24
  {% set _scrollable = scrollable|default(false) %}
@@ -28,7 +33,7 @@
28
33
  .setAttribute('id', _id)
29
34
  .setAttribute('tabindex', '-1')
30
35
  .setAttribute('aria-hidden', 'true')
31
- .setAttribute('aria-labelledby', _id ~ 'Label')
36
+ .setAttribute('aria-label', _id ~ 'Label')
32
37
  .addClass(_classes)
33
38
  %}
34
39
 
@@ -37,20 +42,26 @@
37
42
  >
38
43
  <div class="modal-dialog
39
44
  {{- _size ? ' modal-' ~ size -}}
45
+ {{- _fullscreen_responsive ? ' modal-fullscreen-' ~ _fullscreen_responsive ~ '-down' -}}
40
46
  {{- _verticaly_centered ? ' modal-dialog-centered' -}}
41
47
  {{- _scrollable ? ' modal-dialog-scrollable' -}}"
42
48
  {{- _static_backdrop ? ' data-bs-backdrop="static"' -}}
43
49
  >
44
50
  <div class="modal-content">
51
+ {% if header is not empty %}
45
52
  <div class="modal-header">
46
53
  {%- block header _header -%}
47
54
  </div>
55
+ {% endif %}
56
+ {%- block messages _messages -%}
48
57
  <div class="modal-body">
49
58
  {%- block body _body -%}
50
59
  </div>
60
+ {% if footer is not empty %}
51
61
  <div class="modal-footer">
52
62
  {%- block footer _footer -%}
53
63
  </div>
64
+ {% endif %}
54
65
  </div>
55
66
  </div>
56
67
  </div>
@@ -18,6 +18,11 @@
18
18
  - color_set (string) (default: 'light')
19
19
  options ['light', 'dark']
20
20
  - disable_collapse (boolean) (default: false)
21
+
22
+ Blocks
23
+ - branding
24
+ - navigation
25
+ - right
21
26
  #}
22
27
  {% set _collapse_id = collapse_id|default('') %}
23
28
  {% set _background = background|default('') %}
@@ -45,26 +50,28 @@
45
50
  {{ attributes }}
46
51
  >
47
52
  <div class='container'>
48
- {% if _brand is not empty %}
49
- <a class='navbar-brand' href='{{ _brand.link }}'>
50
- {% for logo in _brand.logos %}
51
- <img
52
- src='{{ logo.src }}'
53
- {% if logo.alt is not empty %}
54
- alt='{{ logo.alt }}'
55
- {% endif %}
56
- {% if logo.class is not empty %}
57
- class='{{ logo.class }}'
58
- {% endif %}
59
- />
60
- {% endfor %}
61
- {%- if _brand.label is defined -%}
62
- <div class="h5 ms-4-5 d-none d-lg-inline-block">
63
- {{- _brand.label -}}
64
- </div>
65
- {% endif %}
66
- </a>
67
- {% endif %}
53
+ {% block branding %}
54
+ {% if _brand is not empty %}
55
+ <a class='navbar-brand' href='{{ _brand.link }}'>
56
+ {% for logo in _brand.logos %}
57
+ <img
58
+ src='{{ logo.src }}'
59
+ {% if logo.alt is not empty %}
60
+ alt='{{ logo.alt }}'
61
+ {% endif %}
62
+ {% if logo.class is not empty %}
63
+ class='{{ logo.class }}'
64
+ {% endif %}
65
+ />
66
+ {% endfor %}
67
+ {%- if _brand.label is defined -%}
68
+ <div class="h5 ms-4-5 d-none d-lg-inline-block">
69
+ {{- _brand.label -}}
70
+ </div>
71
+ {% endif %}
72
+ </a>
73
+ {% endif %}
74
+ {% endblock %}
68
75
 
69
76
  {% if not _disable_collapse %}
70
77
  <button
@@ -79,16 +86,20 @@
79
86
  <span class='navbar-toggler-icon'></span>
80
87
  </button>
81
88
  <div class='collapse navbar-collapse' id='{{ _collapse_id }}'>
89
+ {% endif %}
90
+ {% block navigation %}
91
+ {% if _navigation is not empty %}
92
+ {% include '@oe-bcl/bcl-navigation/navigation.html.twig' with _navigation only %}
82
93
  {% endif %}
83
- {% if _navigation is not empty %}
84
- {% include '@oe-bcl/bcl-navigation/navigation.html.twig' with _navigation only %}
85
- {% endif %}
86
- {% if _form is not empty %}
87
- {% include '@oe-bcl/bcl-form/form.html.twig' with _form only %}
88
- {% endif %}
89
- {% if not _disable_collapse %}
90
- </div>
94
+ {% endblock %}
95
+ {% block right %}
96
+ {% if _form is not empty %}
97
+ {% include '@oe-bcl/bcl-form/form.html.twig' with _form only %}
91
98
  {% endif %}
99
+ {% endblock %}
100
+ {% if not _disable_collapse %}
101
+ </div>
102
+ {% endif %}
92
103
  </div>
93
104
  </nav>
94
105
 
@@ -5,7 +5,7 @@
5
5
  {% endblock %}
6
6
 
7
7
  {% block content %}
8
- <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Morbi sit amet eleifend tortor. In facilisis eros vitae turpis ullamcorper,
8
+ <p id="content">Lorem ipsum dolor sit amet, consectetur adipiscing elit. Morbi sit amet eleifend tortor. In facilisis eros vitae turpis ullamcorper,
9
9
  a euismod dolor lacinia. Nam facilisis ipsum et sollicitudin imperdiet. Curabitur a efficitur ante. Phasellus non felis laoreet,
10
10
  posuere ante ut, rhoncus tortor. Proin sed erat vel nisl luctus vulputate. Nunc tristique ultricies turpis, eu dictum enim ultrices vel.
11
11
  Sed posuere at leo sit amet placerat. Sed dapibus viverra urna ac pretium. Praesent et laoreet erat, eget volutpat metus. Duis ac augue
@@ -6,7 +6,16 @@
6
6
  - alignment (string) (default: '')
7
7
  - options ["end", "center"]
8
8
  - aria_label (string) (default: '')
9
- - enable_icon (boolean) (default: false)
9
+ - enable_prev_next_icon (boolean) (default: false)
10
+ - enable_first_last_icon (boolean) (default: true)
11
+ - first (object)
12
+ format: {
13
+ - path (string)
14
+ - label (string)
15
+ - disabled (boolean)
16
+ - aria_label (string)
17
+ - icon (Icon component)
18
+ }
10
19
  - prev (object)
11
20
  format: {
12
21
  - path (string)
@@ -23,6 +32,14 @@
23
32
  - aria_label (string)
24
33
  - icon (Icon component)
25
34
  }
35
+ - last (object)
36
+ format: {
37
+ - path (string)
38
+ - label (string)
39
+ - disabled (boolean)
40
+ - aria_label (string)
41
+ - icon (Icon component)
42
+ }
26
43
  - items (array of objects)
27
44
  format: [
28
45
  {
@@ -31,16 +48,21 @@
31
48
  - disabled (boolean)
32
49
  - active (boolean)
33
50
  }
51
+ - icon_path (string) (default: '')
34
52
  - extra_classes (string) (default: '')
35
53
  #}
36
54
 
37
55
  {% set _size = size|default('') %}
38
56
  {% set _alignment = alignment|default('') %}
39
57
  {% set _aria_label = aria_label|default('') %}
40
- {% set _enable_icon = enable_icon|default(false) %}
58
+ {% set _enable_prev_next_icon = enable_prev_next_icon|default(false) %}
59
+ {% set _enable_first_last_icon = enable_first_last_icon ?? true %}
41
60
  {% set _items = items|default([]) %}
61
+ {% set _first = first|default({}) %}
42
62
  {% set _next = next|default({}) %}
43
63
  {% set _prev = prev|default({}) %}
64
+ {% set _last = last|default({}) %}
65
+ {% set _icon_path = icon_path|default({}) %}
44
66
  {% set _classes = 'pagination' %}
45
67
  {% if _size is not empty %}
46
68
  {% set _classes = _classes ~ ' pagination-' ~ _size %}
@@ -53,6 +75,8 @@
53
75
  {% set attributes = create_attribute() %}
54
76
  {% endif %}
55
77
 
78
+ {% set attributes = attributes.setAttribute('role', 'navigation') %}
79
+
56
80
  {% if _aria_label is not empty %}
57
81
  {% set attributes = attributes.setAttribute('aria-label', aria_label) %}
58
82
  {% endif %}
@@ -64,6 +88,43 @@
64
88
  {{ attributes }}
65
89
  >
66
90
  <ul class="{{ _classes }}">
91
+ {% if _first is not empty %}
92
+ {% set _first_class = 'page-item' %}
93
+ {% if _first.disabled %}
94
+ {% set _first_class = _first_class ~ ' disabled' %}
95
+ {% endif %}
96
+ <li class="{{ _first_class }}">
97
+ <a
98
+ class="page-link"
99
+ href="{{ _first.path }}"
100
+ {% if _first.disabled %}
101
+ tabindex="-1"
102
+ aria-disabled="true"
103
+ {% endif %}
104
+ {%- if _first.aria_label -%}
105
+ aria-label="{{ _first.aria_label }}"
106
+ {%- endif -%}
107
+ >
108
+ {%- if _enable_first_last_icon -%}
109
+ {%- if _first.icon is not empty -%}
110
+ {%- include '@oe-bcl/bcl-icon/icon.html.twig' with _first.icon only -%}
111
+ {%- else -%}
112
+ {%- if _icon_path is not empty -%}
113
+ {% include '@oe-bcl/bcl-icon/icon.html.twig' with {
114
+ name: "chevron-double-left",
115
+ size: "fluid",
116
+ path: _icon_path,
117
+ } only %}
118
+ {%- else -%}
119
+ <span aria-hidden="true">&laquo;</span>
120
+ {%- endif -%}
121
+ {%- endif -%}
122
+ {%- else -%}
123
+ {{- _first.label -}}
124
+ {%- endif -%}
125
+ </a>
126
+ </li>
127
+ {% endif %}
67
128
  {% if _prev is not empty %}
68
129
  {% set _prev_class = 'page-item' %}
69
130
  {% if _prev.disabled %}
@@ -81,14 +142,22 @@
81
142
  aria-label="{{ _prev.aria_label }}"
82
143
  {%- endif -%}
83
144
  >
84
- {%- if _enable_icon -%}
145
+ {%- if _enable_prev_next_icon -%}
85
146
  {%- if _prev.icon is not empty -%}
86
- {%- include '@oe-bcl/bcl-icon/icon.html.twig' with _prev.icon only -%}
147
+ {%- include '@oe-bcl/bcl-icon/icon.html.twig' with _prev.icon only -%}
87
148
  {%- else -%}
88
- <span aria-hidden="true">&laquo;</span>
149
+ {%- if _icon_path is not empty -%}
150
+ {% include '@oe-bcl/bcl-icon/icon.html.twig' with {
151
+ name: "chevron-left",
152
+ size: "fluid",
153
+ path: _icon_path,
154
+ } only %}
155
+ {%- else -%}
156
+ <span aria-hidden="true">&lsaquo;</span>
157
+ {%- endif -%}
89
158
  {%- endif -%}
90
159
  {%- else -%}
91
- {{- _prev.label -}}
160
+ {{- _prev.label -}}
92
161
  {%- endif -%}
93
162
  </a>
94
163
  </li>
@@ -136,14 +205,59 @@
136
205
  aria-label="{{ _next.aria_label }}"
137
206
  {%- endif -%}
138
207
  >
139
- {%- if _enable_icon -%}
208
+ {%- if _enable_prev_next_icon -%}
140
209
  {%- if _next.icon is not empty -%}
141
- {%- include '@oe-bcl/bcl-icon/icon.html.twig' with _next.icon only -%}
210
+ {%- include '@oe-bcl/bcl-icon/icon.html.twig' with _next.icon only -%}
142
211
  {%- else -%}
143
- <span aria-hidden="true">&raquo;</span>
212
+ {%- if _icon_path is not empty -%}
213
+ {% include '@oe-bcl/bcl-icon/icon.html.twig' with {
214
+ name: "chevron-right",
215
+ size: "fluid",
216
+ path: _icon_path,
217
+ } only %}
218
+ {%- else -%}
219
+ <span aria-hidden="true">&rsaquo;</span>
220
+ {%- endif -%}
144
221
  {%- endif -%}
145
222
  {%- else -%}
146
223
  {{- _next.label -}}
224
+ {%- endif -%}
225
+ </a>
226
+ </li>
227
+ {% endif %}
228
+ {% if _last is not empty %}
229
+ {% set _last_class = 'page-item' %}
230
+ {% if _last.disabled %}
231
+ {% set _last_class = _last_class ~ ' disabled' %}
232
+ {% endif %}
233
+ <li class="{{ _last_class }}">
234
+ <a
235
+ class="page-link"
236
+ href="{{ _last.path }}"
237
+ {% if _last.disabled %}
238
+ tabindex="-1"
239
+ aria-disabled="true"
240
+ {% endif %}
241
+ {%- if _last.aria_label -%}
242
+ aria-label="{{ _last.aria_label }}"
243
+ {%- endif -%}
244
+ >
245
+ {%- if _enable_first_last_icon -%}
246
+ {%- if _last.icon is not empty -%}
247
+ {%- include '@oe-bcl/bcl-icon/icon.html.twig' with _last.icon only -%}
248
+ {%- else -%}
249
+ {%- if _icon_path is not empty -%}
250
+ {% include '@oe-bcl/bcl-icon/icon.html.twig' with {
251
+ name: "chevron-double-right",
252
+ size: "fluid",
253
+ path: _icon_path,
254
+ } only %}
255
+ {%- else -%}
256
+ <span aria-hidden="true">&raquo;</span>
257
+ {%- endif -%}
258
+ {%- endif -%}
259
+ {%- else -%}
260
+ {{- _last.label -}}
147
261
  {%- endif -%}
148
262
  </a>
149
263
  </li>
@@ -0,0 +1,44 @@
1
+ {% extends '@oe-bcl/bcl-base-templates/content-type.html.twig' %}
2
+
3
+ {% block sidebar %}
4
+ {% include '@oe-bcl/bcl-inpage-navigation/inpage-navigation.html.twig' with sidebar only %}
5
+ {% endblock %}
6
+
7
+ {% block content %}
8
+ {% if social_media.main_title is not empty %}
9
+ <h3
10
+ class="fw-bold mb-4"
11
+ >{{- social_media.main_title -}}</h3>
12
+ {% endif %}
13
+ {% if social_media.links is defined and social_media.links is not empty %}
14
+ <div class="mb-4-5">
15
+ {% for link in social_media.links %}
16
+ {% include '@oe-bcl/bcl-link/link.html.twig' with link only %}
17
+ {% endfor %}
18
+ </div>
19
+ {% endif %}
20
+
21
+ {% if information.main_title is not empty %}
22
+ <h3
23
+ class="fw-bold mb-4"
24
+ >{{- information.main_title -}}</h3>
25
+ {% endif %}
26
+ {% if information.content is not empty %}
27
+ <div class="mb-4-5">
28
+ {{- information.content -}}
29
+ </div>
30
+ {% endif %}
31
+
32
+ {% if files.main_title is not empty %}
33
+ <h3
34
+ class="fw-bold mb-4"
35
+ >{{- files.main_title -}}</h3>
36
+ {% endif %}
37
+ {% if files.listing is defined and files.listing is not empty %}
38
+ <div class="mb-4-5">
39
+ {% for file in files.listing %}
40
+ {% include '@oe-bcl/bcl-file/file.html.twig' with file only %}
41
+ {% endfor %}
42
+ </div>
43
+ {% endif %}
44
+ {% endblock %}
@@ -0,0 +1,67 @@
1
+ {% spaceless %}
2
+
3
+
4
+ {#
5
+ Parameters:
6
+ - title (heading object) (default: {})
7
+ - items (array) (default: [])
8
+ {
9
+ title: (heading object),
10
+ content: [
11
+ description list object
12
+ ]
13
+ }
14
+ #}
15
+
16
+ {% set _title = title|default('') %}
17
+ {% set _title_tag = title_tag|default('h3') %}
18
+ {% set _title_attributes = title_attributes ?: create_attribute() %}
19
+ {% set _items = items|default([]) %}
20
+
21
+ {% if attributes is empty %}
22
+ {% set attributes = create_attribute() %}
23
+ {% endif %}
24
+
25
+ {% set _title_classes = ['fw-bold', 'my-4-5'] %}
26
+ {% set _title_attributes = _title_attributes.addClass(_title_classes) %}
27
+
28
+ <div
29
+ {{ attributes }}
30
+ >
31
+ {% if _title is not empty %}
32
+ {% include '@oe-bcl/bcl-heading/heading.html.twig' with {
33
+ title: _title,
34
+ title_tag: _title_tag,
35
+ attributes: _title_attributes,
36
+ } only %}
37
+ {% endif %}
38
+ {% if _items is defined and _items is not empty %}
39
+ {% for _item in _items %}
40
+ {% if _item.title is not empty %}
41
+ {% set _item_title_attributes = _item.title_attributes ?: create_attribute() %}
42
+ {% set _item_title_attributes = _item_title_attributes.addClass(['fw-bold', 'mb-3']) %}
43
+ {% include '@oe-bcl/bcl-heading/heading.html.twig' with {
44
+ title: _item.title,
45
+ title_tag: _item.title_tag|default('h4'),
46
+ attributes: _item_title_attributes,
47
+ } only %}
48
+ {% endif %}
49
+ {% for _list in _item.content %}
50
+ {% if _list.attributes is empty %}
51
+ {% set _list = _list|merge({
52
+ attributes: create_attribute()
53
+ }) %}
54
+ {% endif %}
55
+ {% if not loop.last %}
56
+ {% set _list = _list|merge({
57
+ attributes: _list.attributes.addClass(['border-bottom', 'pb-3'])
58
+ })
59
+ %}
60
+ {% endif %}
61
+ {% include '@oe-bcl/bcl-description-list/description-list.html.twig' with _list only %}
62
+ {% endfor %}
63
+ {% endfor %}
64
+ {% endif %}
65
+ </div>
66
+
67
+ {% endspaceless %}