@openeuropa/bcl-theme-default 0.13.0 → 0.17.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 (83) hide show
  1. package/bcl-builder.config.js +4 -0
  2. package/css/oe-bcl-default.css +243 -29
  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 -0
  8. package/js/oe-bcl-default.bundle.js +53 -21
  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.min.js.map +1 -1
  13. package/js/oe-bcl-default.umd.js +61 -24
  14. package/js/oe-bcl-default.umd.js.map +1 -1
  15. package/js/oe-bcl-default.umd.min.js +1 -1
  16. package/js/oe-bcl-default.umd.min.js.map +1 -1
  17. package/package.json +6 -5
  18. package/src/scss/_badge.scss +15 -0
  19. package/src/scss/_banners.scss +8 -6
  20. package/src/scss/_bcl-offcanvas.scss +4 -4
  21. package/src/scss/_footer.scss +16 -7
  22. package/src/scss/_header.scss +86 -17
  23. package/src/scss/_inpage-navigation.scss +1 -1
  24. package/src/scss/_multiselect.scss +3 -2
  25. package/src/scss/_utilities.scss +9 -0
  26. package/src/scss/_variables.scss +11 -6
  27. package/src/scss/oe-bcl-default.scss +1 -0
  28. package/templates/bcl-accordion/accordion.html.twig +9 -0
  29. package/templates/bcl-alert/alert.html.twig +4 -0
  30. package/templates/bcl-badge/badge.html.twig +9 -1
  31. package/templates/bcl-banner/banner.html.twig +12 -5
  32. package/templates/bcl-base-templates/content-type.html.twig +120 -0
  33. package/templates/bcl-base-templates/listing-page.html.twig +63 -0
  34. package/templates/{bcl-group-landing-listing/group-landing-listing-offcanvas.html.twig → bcl-base-templates/sidebar-search.html.twig} +0 -1
  35. package/templates/bcl-blockquote/blockquote.html.twig +4 -0
  36. package/templates/bcl-breadcrumb/breadcrumb.html.twig +6 -2
  37. package/templates/bcl-button/button.html.twig +8 -2
  38. package/templates/bcl-button-group/button-group.html.twig +4 -0
  39. package/templates/bcl-card/card.html.twig +28 -29
  40. package/templates/bcl-card-layout/card-layout.html.twig +4 -0
  41. package/templates/bcl-carousel/carousel.html.twig +4 -0
  42. package/templates/bcl-content-banner/content-banner.html.twig +107 -0
  43. package/templates/bcl-date-block/date-block.html.twig +4 -0
  44. package/templates/bcl-description-list/description-list.html.twig +114 -0
  45. package/templates/bcl-event/event.html.twig +41 -0
  46. package/templates/bcl-fact-figures/fact-figures.html.twig +13 -5
  47. package/templates/bcl-featured-media/featured-media.html.twig +53 -5
  48. package/templates/bcl-file/file.html.twig +209 -0
  49. package/templates/bcl-footer/footer.html.twig +4 -1
  50. package/templates/bcl-form/form.html.twig +4 -0
  51. package/templates/bcl-group/group-landing.html.twig +101 -0
  52. package/templates/bcl-group/group.html.twig +27 -0
  53. package/templates/bcl-header/header.html.twig +11 -2
  54. package/templates/bcl-inpage-navigation/inpage-navigation.html.twig +14 -1
  55. package/templates/bcl-landing-page/landing-page.html.twig +46 -52
  56. package/templates/bcl-links-block/links-block.html.twig +5 -2
  57. package/templates/bcl-list-group/list-group.html.twig +6 -0
  58. package/templates/bcl-listing/listing.html.twig +29 -16
  59. package/templates/bcl-navbar/navbar.html.twig +22 -20
  60. package/templates/bcl-navigation/navigation.html.twig +135 -110
  61. package/templates/bcl-offcanvas/offcanvas.html.twig +4 -0
  62. package/templates/bcl-page/page.html.twig +64 -0
  63. package/templates/bcl-pagination/pagination.html.twig +5 -1
  64. package/templates/bcl-placeholder/placeholder.html.twig +43 -0
  65. package/templates/bcl-progress/progress.html.twig +4 -0
  66. package/templates/bcl-recent-activities/recent-activities.html.twig +4 -0
  67. package/templates/bcl-search/search.html.twig +10 -40
  68. package/templates/bcl-search-form/search-form.html.twig +52 -0
  69. package/templates/bcl-select/select.html.twig +6 -0
  70. package/templates/bcl-table/table.html.twig +4 -0
  71. package/templates/bcl-timeline/timeline.html.twig +16 -1
  72. package/templates/bcl-toast/toasts.html.twig +4 -0
  73. package/templates/bcl-user/user-edit.html.twig +38 -0
  74. package/templates/{bcl-user-view → bcl-user}/user-view-compact.html.twig +5 -1
  75. package/templates/bcl-user/user-view.html.twig +96 -0
  76. package/templates/bcl-group-landing/group-landing.html.twig +0 -106
  77. package/templates/bcl-group-landing-listing/group-landing-listing.html.twig +0 -69
  78. package/templates/bcl-search/search-offcanvas.html.twig +0 -8
  79. package/templates/bcl-user-edit/edit-contents.html.twig +0 -32
  80. package/templates/bcl-user-edit/user-edit.html.twig +0 -19
  81. package/templates/bcl-user-listing/user-listing-offcanvas.html.twig +0 -8
  82. package/templates/bcl-user-listing/user-listing.html.twig +0 -45
  83. package/templates/bcl-user-view/user-view.html.twig +0 -106
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.13.0",
5
+ "version": "0.17.0",
6
6
  "description": "OE - BCL theme default",
7
7
  "scripts": {
8
8
  "build": "npm-run-all build:*",
@@ -13,9 +13,10 @@
13
13
  "prepublish": "npm run build"
14
14
  },
15
15
  "devDependencies": {
16
- "@openeuropa/bcl-bootstrap": "^0.13.0",
17
- "@openeuropa/bcl-builder": "^0.13.0",
18
- "@openeuropa/bcl-twig-templates": "^0.13.0",
16
+ "@ecl/resources-flag-icons": "3.1.3",
17
+ "@openeuropa/bcl-bootstrap": "^0.17.0",
18
+ "@openeuropa/bcl-builder": "^0.17.0",
19
+ "@openeuropa/bcl-twig-templates": "^0.17.0",
19
20
  "copyfiles": "2.4.1",
20
21
  "cross-env": "7.0.3",
21
22
  "glob": "7.2.0",
@@ -39,5 +40,5 @@
39
40
  "design-system",
40
41
  "twig"
41
42
  ],
42
- "gitHead": "f50b203b79a2c63a03c70849b628a196113969cb"
43
+ "gitHead": "07ff24de8a209d80750a32cd52dfe9663fabf8e2"
43
44
  }
@@ -83,3 +83,18 @@ a {
83
83
  font-size: 0.75em; // Default size in Bootstrap
84
84
  }
85
85
  }
86
+
87
+ @each $color, $value in $theme-colors {
88
+ .badge-outline-#{$color} {
89
+ border: $border-width solid $value;
90
+ color: $value !important;
91
+ background: transparent !important;
92
+ .icon--close {
93
+ background: $value;
94
+ color: $white;
95
+ @if $color == light {
96
+ color: $black;
97
+ }
98
+ }
99
+ }
100
+ }
@@ -91,13 +91,15 @@
91
91
  border-left: 4px solid transparent;
92
92
  }
93
93
  }
94
+ }
94
95
 
95
- &.full-width {
96
- left: 50%;
97
- width: 100vw;
98
- margin-left: -50vw;
99
- border-radius: 0;
100
- }
96
+ .bcl-banner.full-width,
97
+ .bcl-content-banner {
98
+ left: 50%;
99
+ width: 100vw;
100
+ margin-left: -50vw;
101
+ border-radius: 0;
102
+ position: relative;
101
103
  }
102
104
 
103
105
  .bcl-banner__content {
@@ -1,16 +1,16 @@
1
- // stylelint-disable declaration-no-important
2
-
3
- @media screen and (min-width: 992px) {
1
+ @include media-breakpoint-up(lg) {
4
2
  .bcl-offcanvas {
5
3
  position: relative;
6
4
  width: auto;
7
- visibility: visible !important;
5
+ visibility: visible !important; // stylelint-disable-line declaration-no-important
8
6
  border: none;
9
7
  transform: none;
8
+
10
9
  .offcanvas-body {
11
10
  overflow: visible;
12
11
  }
13
12
  }
13
+
14
14
  .bcl-offcanvas + .offcanvas-backdrop {
15
15
  display: none;
16
16
  }
@@ -2,17 +2,26 @@
2
2
 
3
3
  $footer-border-color: #adb5bd !default;
4
4
 
5
- .bcl-footer {
6
- background: $eu-light-blue;
5
+ .bcl-footer--neutral {
6
+ background: $gray-600;
7
+ a,
8
+ p {
9
+ color: $white;
10
+ }
7
11
  }
8
12
 
9
- .bcl-footer.ec__footer {
10
- background: $ec-blue;
13
+ .bcl-footer--eu,
14
+ .eu__footer {
15
+ background: $eu-light-blue;
11
16
  }
12
17
 
13
- .bcl-footer.ec__footer a,
14
- .bcl-footer.ec__footer p {
15
- color: $white;
18
+ .bcl-footer--ec,
19
+ .ec__footer {
20
+ background: $ec-blue;
21
+ a,
22
+ p {
23
+ color: $white;
24
+ }
16
25
  }
17
26
 
18
27
  .bcl-footer *[class*="border-"] {
@@ -21,13 +21,11 @@ $header-link-active-background: #003776 !default;
21
21
  padding-bottom: map-get($spacers, 3);
22
22
  }
23
23
 
24
- .bcl-header__project {
25
- padding-top: map-get($spacers, 3);
26
- }
27
-
28
- .ec__header .bcl-header__project,
29
- .ec__header .bcl-header__navbar {
30
- background: $header-background;
24
+ .bcl-header--neutral {
25
+ .bcl-header__project,
26
+ .bcl-header__navbar {
27
+ background: $gray-600;
28
+ }
31
29
  }
32
30
 
33
31
  .bcl-navbar-header {
@@ -38,8 +36,20 @@ $header-link-active-background: #003776 !default;
38
36
  color: $eu-blue;
39
37
  }
40
38
 
41
- .bcl-header.ec__header .nav-link {
42
- color: $ec-blue;
39
+ .bcl-header--ec,
40
+ .ec__header {
41
+ .bcl-header__project,
42
+ .bcl-header__navbar {
43
+ background: $header-background;
44
+ }
45
+
46
+ .nav-link {
47
+ color: $ec-blue;
48
+ }
49
+ }
50
+
51
+ .bcl-header:not(.bcl-header--neutral) .bcl-header__project {
52
+ padding-top: map-get($spacers, 3);
43
53
  }
44
54
 
45
55
  .bcl-header__navbar .navbar-nav .nav-link {
@@ -76,13 +86,14 @@ $header-link-active-background: #003776 !default;
76
86
  transform: translate(-11px, 5px);
77
87
  }
78
88
 
79
- .bcl-header__project p {
89
+ .bcl-header__project .bcl-header__site-name {
80
90
  display: inline-block;
81
91
  margin-bottom: 0;
82
92
  font-size: 1.3rem;
83
93
  font-weight: 300;
84
94
  color: $white;
85
95
  vertical-align: middle;
96
+ max-width: 80%;
86
97
  }
87
98
 
88
99
  .bcl-header .navbar-toggler {
@@ -96,6 +107,12 @@ $header-link-active-background: #003776 !default;
96
107
  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");
97
108
  }
98
109
 
110
+ @media only screen and (max-width: 400px) {
111
+ .bcl-header--neutral .bcl-header__project-logo {
112
+ display: none;
113
+ }
114
+ }
115
+
99
116
  @include media-breakpoint-down(sm) {
100
117
  .bcl-header .navbar:first-child .nav-link {
101
118
  padding: 0.5rem 0.4rem;
@@ -103,48 +120,100 @@ $header-link-active-background: #003776 !default;
103
120
  }
104
121
 
105
122
  @include media-breakpoint-up(md) {
106
- .ec__header .navbar-brand img {
107
- width: 180px;
123
+ .bcl-header--ec,
124
+ .ec__header {
125
+ .navbar-brand img {
126
+ width: 180px;
127
+ }
128
+ }
129
+ }
130
+
131
+ @include media-breakpoint-down(lg) {
132
+ .bcl-header__project {
133
+ min-height: map-get($spacers, 5);
134
+ padding-top: map-get($spacers, 3);
135
+ }
136
+
137
+ .bcl-header nav + nav {
138
+ min-height: map-get($spacers, 5);
139
+
140
+ .navbar-toggler {
141
+ position: static;
142
+ }
143
+
144
+ .container {
145
+ justify-content: right;
146
+ }
147
+ }
148
+
149
+ .bcl-header__navbar {
150
+ .navbar-collapse {
151
+ max-width: 100%;
152
+ .nav-item {
153
+ &.dropdown {
154
+ max-width: 100%;
155
+ a {
156
+ white-space: normal;
157
+ }
158
+ .dropdown-menu {
159
+ max-width: 100%;
160
+ }
161
+ }
162
+ }
163
+ }
108
164
  }
109
165
  }
110
166
 
111
167
  @include media-breakpoint-up(lg) {
112
168
  .bcl-header__project.light,
169
+ .bcl-header--ec .bcl-header__project.light,
113
170
  .ec__header .bcl-header__project.light {
114
171
  background: $white;
115
172
  }
116
- .bcl-header__project p {
173
+
174
+ .bcl-header__site-name {
117
175
  padding-left: map-get($spacers, 4);
118
176
  font-weight: 500;
119
177
  }
120
- .bcl-header__project.light p {
178
+
179
+ .bcl-header__project.light .bcl-header__site-name {
121
180
  color: $black;
122
181
  }
182
+
123
183
  .bcl-header .navbar-toggler {
124
184
  position: relative;
125
185
  right: 0;
126
186
  bottom: 0;
127
187
  }
188
+
128
189
  .bcl-header .navbar-brand img {
129
190
  width: auto;
130
191
  }
192
+
131
193
  .bcl-header__navbar .navbar-collapse {
132
194
  padding-bottom: 0;
133
195
  }
196
+
134
197
  .bcl-header__navbar .nav-link.active {
135
198
  padding-top: $spacer;
136
199
  padding-bottom: $spacer;
137
200
  margin-top: -#{map-get($spacers, 2)};
138
201
  margin-bottom: -#{map-get($spacers, 2)};
139
202
  }
203
+
140
204
  .bcl-header__navbar .dropdown-menu {
141
205
  z-index: 1050; // Make sure dropdown overlaps the search offcanvas
142
206
  }
143
- .bcl-header__project {
207
+
208
+ .bcl-header:not(.bcl-header--neutral) .bcl-header__project {
144
209
  padding-bottom: map-get($spacers, 3);
145
210
  }
146
- .ec__header .navbar-brand img {
147
- width: 285px;
211
+
212
+ .bcl-header--ec,
213
+ .ec__header {
214
+ .navbar-brand img {
215
+ width: 285px;
216
+ }
148
217
  }
149
218
  }
150
219
 
@@ -1,4 +1,4 @@
1
- #bcl-inpage-navigation {
1
+ .bcl-inpage-navigation {
2
2
  top: map-get($spacers, 3); // needed for position-sticky
3
3
  background-color: $gray-100;
4
4
 
@@ -3,8 +3,9 @@
3
3
  no-descending-specificity,
4
4
  function-calc-no-unspaced-operator,
5
5
  */
6
- @use "slim-select/src/slim-select/slimselect.scss" with
7
- ($primary-color: $primary);
6
+ @use "slim-select/src/slim-select/slimselect.scss" with (
7
+ $primary-color: $primary
8
+ );
8
9
 
9
10
  // Multiselect Spacers
10
11
  $multiselect-spacers: (
@@ -67,3 +67,12 @@ $utilities: map-merge(
67
67
  .bg-lighter {
68
68
  background-color: $lighter;
69
69
  }
70
+
71
+ .bg-gray-200 {
72
+ background-color: $gray-200;
73
+ }
74
+
75
+ .grid-3-9 {
76
+ grid-template-columns: 25% 75%;
77
+ grid-gap: map-get($gutters, "2-5");
78
+ }
@@ -61,12 +61,10 @@ $spacers-extended: (
61
61
  $spacers: map-merge($spacers, $spacers-extended);
62
62
  $gutters: $spacers;
63
63
 
64
- // Forms
65
- $form-check-input-size-lg: $form-check-input-width + 0.3em !default;
66
- $form-font-size: $font-size-base !default;
67
- $form-font-size-lg: $font-size-base + 0.25rem !default;
68
- $form-select-height: 3rem !default;
69
- $form-select-height-md: 2.375rem !default;
64
+ // accordion
65
+ $accordion-button-active-color: $accordion-button-color;
66
+ $accordion-button-active-bg: $lighter;
67
+ $accordion-border-color: $gray-300;
70
68
 
71
69
  // Badges
72
70
  $badge-font-weight: $font-weight-normal; // 400
@@ -75,3 +73,10 @@ $badge-font-size-desktop: 1rem; // 16px
75
73
 
76
74
  // banners
77
75
  $banner-content-border-color: $primary;
76
+
77
+ // Forms
78
+ $form-check-input-size-lg: $form-check-input-width + 0.3em !default;
79
+ $form-font-size: $font-size-base !default;
80
+ $form-font-size-lg: $font-size-base + 0.25rem !default;
81
+ $form-select-height: 3rem !default;
82
+ $form-select-height-md: 2.375rem !default;
@@ -27,6 +27,7 @@
27
27
  @import "@openeuropa/bcl-bootstrap/scss/accordion";
28
28
  @import "@openeuropa/bcl-bootstrap/scss/breadcrumb";
29
29
  @import "@openeuropa/bcl-bootstrap/scss/pagination";
30
+ @import "@openeuropa/bcl-bootstrap/scss/placeholders";
30
31
  @import "@openeuropa/bcl-bootstrap/scss/badge";
31
32
  @import "@openeuropa/bcl-bootstrap/scss/alert";
32
33
  @import "@openeuropa/bcl-bootstrap/scss/progress";
@@ -8,6 +8,7 @@
8
8
  {
9
9
  title: (string),
10
10
  content: (block),
11
+ stay_open (boolean) (default: false) stay open after another selected
11
12
  },
12
13
  ...
13
14
  ]
@@ -23,6 +24,11 @@
23
24
  {% if _flush %}
24
25
  {% set _classes = _classes|merge(['accordion-flush']) %}
25
26
  {% endif %}
27
+
28
+ {% if attributes is empty %}
29
+ {% set attributes = create_attribute() %}
30
+ {% endif %}
31
+
26
32
  {% set attributes = attributes.addClass(_classes).setAttribute('id', 'accordion-' ~ _id) %}
27
33
 
28
34
  {% if _items is not empty %}
@@ -55,7 +61,10 @@
55
61
  id="collapse-{{ _id }}-{{ loop.index }}"
56
62
  class="accordion-collapse collapse{{ _open_item ? ' show' }}"
57
63
  aria-labelledby="heading-{{ _id }}-{{ loop.index }}"
64
+ role="region"
65
+ {% if not _item.stay_open %}
58
66
  data-bs-parent="#accordion-{{ _id }}"
67
+ {% endif %}
59
68
  >
60
69
  <div class="accordion-body">
61
70
  {%- set _content = _item.content|default('') %}
@@ -37,6 +37,10 @@
37
37
  {% set _classes = _classes|merge(['fade', 'show']) %}
38
38
  {% endif %}
39
39
 
40
+ {% if attributes is empty %}
41
+ {% set attributes = create_attribute() %}
42
+ {% endif %}
43
+
40
44
  {% set attributes = attributes.addClass(_classes).setAttribute('role', 'alert') %}
41
45
 
42
46
  <div {{ attributes }}>
@@ -8,13 +8,15 @@
8
8
  - dismissible (boolean) (default: false)
9
9
  - assistive_text (string) (default: '')
10
10
  - rounded_pill (boolean) (default: false)
11
+ - outline (boolean) (default: false)
11
12
  - icons_path (string) (default: '')
12
13
  #}
13
14
 
14
15
  {% set _rounded_pill = rounded_pill|default(false) %}
16
+ {% set _outline = outline|default(false) %}
15
17
  {% set _background = background|default('primary') %}
16
18
  {% set _label = label|default('') %}
17
- {% set _classes = ['badge', 'bg-' ~ _background] %}
19
+ {% set _classes = ['badge'] %}
18
20
  {% set _url = url|default('') %}
19
21
  {% set _icons_path = icons_path|default('') %}
20
22
  {% set _title = title|default(_label) %}
@@ -25,6 +27,12 @@
25
27
  {% set _classes = _classes|merge(['rounded-pill']) %}
26
28
  {% endif %}
27
29
 
30
+ {% if _outline %}
31
+ {% set _classes = _classes|merge([ 'badge-outline-' ~ _background]) %}
32
+ {% else %}
33
+ {% set _classes = _classes|merge([ 'bg-' ~ _background]) %}
34
+ {% endif %}
35
+
28
36
  {% if _background in ['light', 'warning', 'info'] %}
29
37
  {% set _classes = _classes|merge(['text-dark']) %}
30
38
  {% endif %}
@@ -2,6 +2,7 @@
2
2
 
3
3
  {# Parameters:
4
4
  - title: (string) (default: "")
5
+ - title_tag: (string) (default: "div")
5
6
  - description: (string) (default: "")
6
7
  - link: (link object) (default: {}): predefined structure for Link component
7
8
  - image: (string) <img> tag
@@ -11,14 +12,15 @@
11
12
  - content_classes: (string) (default: "")
12
13
  #}
13
14
 
14
- {% set _title = title|default("") %}
15
- {% set _description = description|default("") %}
15
+ {% set _title = title|default('') %}
16
+ {% set _title_tag = title_tag|default('div') %}
17
+ {% set _description = description|default('') %}
16
18
  {% set _link = link|default({}) %}
17
- {% set _image = image|default("") %}
19
+ {% set _image = image|default('') %}
18
20
  {% set _shade = shade|default(false) %}
19
21
  {% set _hero = hero|default(false) %}
20
22
  {% set _full_width = full_width|default(false) %}
21
- {% set _content_classes = content_classes|default("") %}
23
+ {% set _content_classes = content_classes|default('') %}
22
24
 
23
25
 
24
26
  {% set _content_class = 'bcl-banner__content' %}
@@ -38,6 +40,11 @@
38
40
  _hero ? 'hero',
39
41
  _full_width ? 'full-width'
40
42
  ] %}
43
+
44
+ {% if attributes is empty %}
45
+ {% set attributes = create_attribute() %}
46
+ {% endif %}
47
+
41
48
  {% set attributes = attributes.addClass(_classes) %}
42
49
 
43
50
  <div {{ attributes }}>
@@ -47,7 +54,7 @@
47
54
  <div class="container">
48
55
  <div class="{{ _content_class }}">
49
56
  {% if _title is not empty %}
50
- <div class="{{ _title_classes }}">{{ _title }}</div>
57
+ <{{ _title_tag }} class="{{ _title_classes }}">{{ _title }}</{{ _title_tag }}>
51
58
  {% if _description is not empty %}
52
59
  <p class="mb-4">{{ _description }}</p>
53
60
  {% endif %}
@@ -0,0 +1,120 @@
1
+ {% spaceless %}
2
+
3
+ {#
4
+ Parameters:
5
+ - with_header (boolean) (default: false)
6
+ - with_footer (boolean) (default: false)
7
+ - with_banner (boolean) (default: false)
8
+ - with_sidebar (boolean) (default: false)
9
+ - sidebar_size (string) (default: 'normal')
10
+ options: ['normal', 'large']
11
+ - landing (boolean) (default: false)
12
+ - content_type (string) (default: '')
13
+ - attributes (drupal attrs)
14
+
15
+ BLOCKS:
16
+ - header
17
+ - footer
18
+ - content
19
+ - sidebar
20
+ - banner
21
+ - feedback
22
+ - share
23
+ - related
24
+ #}
25
+
26
+ {% set _with_header = header|default(false) %}
27
+ {% set _with_footer = footer|default(false) %}
28
+ {% set _with_banner = banner|default(false) %}
29
+ {% set _with_sidebar = sidebar|default(false) %}
30
+ {% set _sidebar_size = sidebar_size|default('normal') %}
31
+ {% set _landing = landing|default(false) %}
32
+ {% set _content_type = content_type|default('') %}
33
+ {% set _classes = ['bcl-node-type'] %}
34
+
35
+ {% if _with_sidebar %}
36
+ {% set _col_classes = {
37
+ left: [
38
+ 'col-12',
39
+ ],
40
+ right: [
41
+ 'col-12',
42
+ ],
43
+ } %}
44
+
45
+ {% if _sidebar_size == 'normal' %}
46
+ {% set _col_classes = _col_classes|merge({
47
+ left: _col_classes.left|merge(['col-lg-3']),
48
+ right: _col_classes.right|merge(['col-lg-9', 'col-xxl-8']),
49
+ }) %}
50
+ {% endif %}
51
+
52
+ {% if _sidebar_size == 'large' %}
53
+ {% set _col_classes = _col_classes|merge({
54
+ left: _col_classes.left|merge(['col-lg-4']),
55
+ right: _col_classes.right|merge(['col-lg-8']),
56
+ }) %}
57
+ {% endif %}
58
+ {% endif %}
59
+
60
+ {% if _content_type is not empty %}
61
+ {% set _classes = _classes|merge(['bcl-' ~ _content_type]) %}
62
+ {% endif %}
63
+
64
+ {% if attributes is empty %}
65
+ {% set attributes = create_attribute() %}
66
+ {% endif %}
67
+
68
+ {% if _with_header %}
69
+ {% include '@oe-bcl/bcl-header/header.html.twig' with header only %}
70
+ {% endif %}
71
+
72
+ <main {{ attributes }}>
73
+ {% if _with_banner %}
74
+ {% block banner %}
75
+ {% include '@oe-bcl/bcl-content-banner/content-banner.html.twig' with banner only %}
76
+ {% endblock %}
77
+ {% endif %}
78
+
79
+ <div class="container mt-md-4-75 mt-4">
80
+ <div class="row">
81
+ {% if _with_sidebar %}
82
+ <div class="{{ _col_classes.left|join(' ') }}">
83
+ {% block sidebar %}{% endblock %}
84
+ </div>
85
+ <div class="{{ _col_classes.right|join(' ') }}">
86
+ {% else %}
87
+ {% if _landing %}
88
+ <div class="col-12">
89
+ {% else %}
90
+ <div class="col-12 col-lg-10 col-xl-9 col-xxl-8">
91
+ {% endif %}
92
+ {% endif %}
93
+ {% block content_top %}
94
+ {{ content_top }}
95
+ {% endblock %}
96
+ {% block content %}
97
+ {{ content }}
98
+ {% endblock %}
99
+ {% block content_bottom %}
100
+ {{ content_bottom }}
101
+ {% endblock %}
102
+ {% block related %}
103
+ {{ related }}
104
+ {% endblock %}
105
+ </div>
106
+ </div>
107
+ </main>
108
+
109
+ {% block feedback %}
110
+ {{ feedback }}
111
+ {% endblock %}
112
+ {% block share %}
113
+ {{ share }}
114
+ {% endblock %}
115
+
116
+ {% if _with_footer %}
117
+ {% include '@oe-bcl/bcl-footer/footer.html.twig' with footer only %}
118
+ {% endif %}
119
+
120
+ {% endspaceless %}
@@ -0,0 +1,63 @@
1
+ {#
2
+ Parameters:
3
+ - listing (object) (default: {})
4
+ - pagination (object) (default: {})
5
+ - sidebar (object) (default: '')
6
+ - page_title (string) (default: '')
7
+ #}
8
+
9
+ {% extends "@oe-bcl/bcl-base-templates/content-type.html.twig" %}
10
+
11
+ {% set _listing = listing|default({}) %}
12
+ {% set _pagination = pagination|default({}) %}
13
+ {% set _search = search|default({}) %}
14
+ {% set _sidebar = sidebar|default({}) %}
15
+ {% set _page_title = page_title|default({}) %}
16
+
17
+ {% block content_top %}
18
+ {% include '@oe-bcl/bcl-button/button.html.twig' with filter_button only %}
19
+ <div class="row">
20
+ <div class="col-md-6 col-lg-8">
21
+ <h4>
22
+ <span class="text-capitalize">
23
+ {{- _page_title -}}
24
+ </span>
25
+ ({{ listing.items.length }})
26
+ </h4>
27
+ </div>
28
+ <div class="col-md-12 order-md-2 mt-3 mt-md-1">
29
+ {% if badges is not empty and badges is iterable %}
30
+ {% for badge in badges %}
31
+ {% include '@oe-bcl/bcl-badge/badge.html.twig' with badge|merge({
32
+ attributes: create_attribute().addClass(["mb-2", "me-2"])
33
+ }) only %}
34
+ {% endfor %}
35
+ {% endif %}
36
+ </div>
37
+ <div class="col-md-6 col-lg-4 mt-3 mt-md-0">
38
+ <div class="float-md-end d-md-flex align-items-center mb-4 mb-md-0">
39
+ {% include '@oe-bcl/bcl-select/select.html.twig' with sort_select|merge({
40
+ attributes: create_attribute().addClass(['ms-md-2 mb-2']),
41
+ }) only %}
42
+ </div>
43
+ </div>
44
+ </div>
45
+ <hr class="d-none d-md-block mb-4"/>
46
+ {% endblock %}
47
+
48
+ {% block content %}
49
+ {% if _listing is not empty %}
50
+ {% include '@oe-bcl/bcl-listing/listing.html.twig' with _listing %}
51
+ {% endif %}
52
+ {% endblock %}
53
+
54
+ {% block content_bottom %}
55
+ {% if _pagination is not empty %}
56
+ <hr class="d-none d-md-block mt-4-5">
57
+ {% include '@oe-bcl/bcl-pagination/pagination.html.twig' with _pagination only %}
58
+ {% endif %}
59
+ {% endblock %}
60
+
61
+ {% block sidebar %}
62
+ {% include '@oe-bcl/bcl-base-templates/sidebar-search.html.twig' with _sidebar only %}
63
+ {% endblock %}
@@ -4,5 +4,4 @@
4
4
  <div class="offcanvas-body p-lg-0">
5
5
  {% include '@oe-bcl/bcl-form/form.html.twig' with search_form only %}
6
6
  </div>
7
-
8
7
  {% endblock %}