@openeuropa/bcl-theme-default 0.12.0 → 0.16.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.
- package/bcl-builder.config.js +4 -0
- package/css/oe-bcl-default.css +1604 -63
- package/css/oe-bcl-default.css.map +1 -1
- package/css/oe-bcl-default.min.css +1 -1
- package/css/oe-bcl-default.min.css.map +1 -1
- package/icons/icons-flag.svg +1 -0
- package/js/oe-bcl-default.bundle.js +53 -21
- package/js/oe-bcl-default.bundle.js.map +1 -1
- package/js/oe-bcl-default.bundle.min.js +1 -1
- package/js/oe-bcl-default.bundle.min.js.map +1 -1
- package/js/oe-bcl-default.esm.min.js.map +1 -1
- package/js/oe-bcl-default.umd.js +61 -24
- package/js/oe-bcl-default.umd.js.map +1 -1
- package/js/oe-bcl-default.umd.min.js +1 -1
- package/js/oe-bcl-default.umd.min.js.map +1 -1
- package/package.json +6 -5
- package/src/scss/_badge.scss +17 -1
- package/src/scss/_banners.scss +9 -7
- package/src/scss/_bcl-offcanvas.scss +4 -4
- package/src/scss/_footer.scss +16 -7
- package/src/scss/_header.scss +68 -17
- package/src/scss/_inpage-navigation.scss +19 -0
- package/src/scss/_multiselect.scss +3 -2
- package/src/scss/_timeline.scss +78 -0
- package/src/scss/_utilities.scss +70 -0
- package/src/scss/_variables.scss +27 -15
- package/src/scss/oe-bcl-default.scss +2 -14
- package/templates/bcl-badge/badge.html.twig +9 -1
- package/templates/bcl-banner/banner.html.twig +22 -5
- package/templates/bcl-base-templates/content-type.html.twig +116 -0
- package/templates/bcl-base-templates/listing-page.html.twig +63 -0
- package/templates/{bcl-group-landing-listing/group-landing-listing-offcanvas.html.twig → bcl-base-templates/sidebar-search.html.twig} +0 -1
- package/templates/bcl-breadcrumb/breadcrumb.html.twig +2 -2
- package/templates/bcl-card/card.html.twig +43 -42
- package/templates/bcl-content-banner/content-banner.html.twig +103 -0
- package/templates/bcl-date-block/date-block.html.twig +42 -0
- package/templates/bcl-description-list/description-list.html.twig +110 -0
- package/templates/bcl-event/event.html.twig +41 -0
- package/templates/bcl-fact-figures/fact-figures.html.twig +115 -0
- package/templates/bcl-featured-media/featured-media.html.twig +49 -5
- package/templates/bcl-file/file.html.twig +205 -0
- package/templates/bcl-footer/footer.html.twig +4 -2
- package/templates/bcl-group/group-landing.html.twig +101 -0
- package/templates/bcl-group/group.html.twig +27 -0
- package/templates/bcl-header/header.html.twig +11 -2
- package/templates/bcl-inpage-navigation/inpage-navigation.html.twig +42 -0
- package/templates/bcl-landing-page/landing-page.html.twig +59 -0
- package/templates/bcl-link/link.html.twig +5 -0
- package/templates/bcl-links-block/links-block.html.twig +5 -2
- package/templates/bcl-listing/listing.html.twig +67 -38
- package/templates/bcl-navbar/navbar.html.twig +22 -20
- package/templates/bcl-navigation/navigation.html.twig +135 -110
- package/templates/bcl-page/page.html.twig +64 -0
- package/templates/bcl-recent-activities/recent-activities.html.twig +1 -1
- package/templates/bcl-timeline/timeline.html.twig +109 -0
- package/templates/bcl-user/user-edit.html.twig +38 -0
- package/templates/{bcl-user-view → bcl-user}/user-view-compact.html.twig +2 -2
- package/templates/bcl-user/user-view.html.twig +96 -0
- package/templates/bcl-group-landing/group-landing.html.twig +0 -106
- package/templates/bcl-group-landing-listing/group-landing-listing.html.twig +0 -74
- package/templates/bcl-search/search-offcanvas.html.twig +0 -8
- package/templates/bcl-search/search.html.twig +0 -48
- package/templates/bcl-user-edit/edit-contents.html.twig +0 -32
- package/templates/bcl-user-edit/user-edit.html.twig +0 -19
- package/templates/bcl-user-listing/user-listing-offcanvas.html.twig +0 -8
- package/templates/bcl-user-listing/user-listing.html.twig +0 -48
- package/templates/bcl-user-view/user-view.html.twig +0 -106
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
{% extends "@oe-bcl/bcl-base-templates/content-type.html.twig" %}
|
|
2
|
+
|
|
3
|
+
{% block banner %}
|
|
4
|
+
{% if banner is defined %}
|
|
5
|
+
{% include '@oe-bcl/bcl-banner/banner.html.twig' with banner only %}
|
|
6
|
+
{% endif %}
|
|
7
|
+
{% endblock %}
|
|
8
|
+
|
|
9
|
+
{% block content %}
|
|
10
|
+
|
|
11
|
+
<div class="container">
|
|
12
|
+
{% if featured_section is defined %}
|
|
13
|
+
<div class="my-4">
|
|
14
|
+
<h2 class="mb-4 fw-bold">{{ featured_section.title }}</h2>
|
|
15
|
+
<div class="row">
|
|
16
|
+
<div class="col-12 col-md-6">
|
|
17
|
+
{{ featured_section.content }}
|
|
18
|
+
</div>
|
|
19
|
+
<div class="col-12 col-md-6">
|
|
20
|
+
{% include '@oe-bcl/bcl-featured-media/featured-media.html.twig' with featured_section.featured_media only %}
|
|
21
|
+
</div>
|
|
22
|
+
</div>
|
|
23
|
+
</div>
|
|
24
|
+
{% endif %}
|
|
25
|
+
|
|
26
|
+
{% if listing_section is defined %}
|
|
27
|
+
<div class="my-4">
|
|
28
|
+
{% include '@oe-bcl/bcl-listing/listing.html.twig' with listing_section only %}
|
|
29
|
+
</div>
|
|
30
|
+
{% endif %}
|
|
31
|
+
|
|
32
|
+
{% if inpage_banner is defined %}
|
|
33
|
+
<div class="my-4">
|
|
34
|
+
{% include '@oe-bcl/bcl-banner/banner.html.twig' with inpage_banner only %}
|
|
35
|
+
</div>
|
|
36
|
+
{% endif %}
|
|
37
|
+
|
|
38
|
+
{% if activity_featured is defined %}
|
|
39
|
+
<div class="my-4">
|
|
40
|
+
<h2 class="mb-4 fw-bold">{{ activity_featured.title }}</h2>
|
|
41
|
+
<div class="row">
|
|
42
|
+
<div class="col-12 col-md-6">
|
|
43
|
+
{{ activity_featured.content }}
|
|
44
|
+
</div>
|
|
45
|
+
<div class="col-12 col-md-6">
|
|
46
|
+
{% include '@oe-bcl/bcl-featured-media/featured-media.html.twig' with activity_featured.featured_media only %}
|
|
47
|
+
</div>
|
|
48
|
+
</div>
|
|
49
|
+
</div>
|
|
50
|
+
{% endif %}
|
|
51
|
+
|
|
52
|
+
{% if activity_listing is defined %}
|
|
53
|
+
<div class="my-4">
|
|
54
|
+
{% include '@oe-bcl/bcl-listing/listing.html.twig' with activity_listing only %}
|
|
55
|
+
</div>
|
|
56
|
+
{% endif %}
|
|
57
|
+
</div>
|
|
58
|
+
|
|
59
|
+
{% endblock %}
|
|
@@ -8,6 +8,7 @@
|
|
|
8
8
|
- id (string) (default: '')
|
|
9
9
|
- disabled (boolean) (default: false)
|
|
10
10
|
- remove_icon_spacers (boolean) (default: false)
|
|
11
|
+
- standalone (boolean) (default: false)
|
|
11
12
|
- icon (icon object) (default: {}): predefined structure for Icon component
|
|
12
13
|
- icon_position (string) (default: after)
|
|
13
14
|
- options ["after", "before"]
|
|
@@ -18,6 +19,7 @@
|
|
|
18
19
|
{% set _variant = variant|default('') %}
|
|
19
20
|
{% set _id = id|default('') %}
|
|
20
21
|
{% set _disabled = disabled|default(false) %}
|
|
22
|
+
{% set _standalone = standalone|default(false) %}
|
|
21
23
|
{% set _icon = icon|default({}) %}
|
|
22
24
|
{% set _icon_position = icon_position|default('after') %}
|
|
23
25
|
{% set _remove_icon_spacers = remove_icon_spacers|default(false) %}
|
|
@@ -62,6 +64,9 @@
|
|
|
62
64
|
{% if _id is not empty %}
|
|
63
65
|
{% set attributes = attributes.setAttribute('id', _id) %}
|
|
64
66
|
{% endif %}
|
|
67
|
+
{% if _standalone %}
|
|
68
|
+
{% set _classes = _classes|merge(['text-underline-hover']) %}
|
|
69
|
+
{% endif %}
|
|
65
70
|
{% if _classes is not empty %}
|
|
66
71
|
{% set attributes = attributes.addClass(_classes) %}
|
|
67
72
|
{% endif %}
|
|
@@ -6,12 +6,14 @@
|
|
|
6
6
|
- variant: (string) (default: "vertical")
|
|
7
7
|
- options ["vertical", "horizontal"]
|
|
8
8
|
- title: (string) (default: "")
|
|
9
|
+
- title_tag: (string) (default: "h5")
|
|
9
10
|
- links (array of link objects) (default: [])
|
|
10
11
|
#}
|
|
11
12
|
|
|
12
13
|
{% set _background = background|default("gray") %}
|
|
13
14
|
{% set _variant = variant|default("vertical") %}
|
|
14
15
|
{% set _title = title|default("") %}
|
|
16
|
+
{% set _title_tag = title_tag|default("h4") %}
|
|
15
17
|
{% set _links = links|default([])%}
|
|
16
18
|
|
|
17
19
|
{% if attributes is empty %}
|
|
@@ -22,11 +24,12 @@
|
|
|
22
24
|
{% set attributes = attributes.addClass(["bg-light", "px-4", "py-3"]) %}
|
|
23
25
|
{% endif %}
|
|
24
26
|
|
|
25
|
-
<div
|
|
27
|
+
<div
|
|
26
28
|
{{ attributes }}
|
|
27
29
|
>
|
|
28
30
|
{% if _title is not empty %}
|
|
29
|
-
|
|
31
|
+
{% set _title_classes = 'fw-bold pb-3 mb-3 border-bottom' %}
|
|
32
|
+
<{{ _title_tag }} class="{{ _title_classes }}">{{ _title }}</{{ _title_tag }}>
|
|
30
33
|
{% endif %}
|
|
31
34
|
{% if _links is not empty and _links is iterable %}
|
|
32
35
|
<ul class="ps-0 mb-0">
|
|
@@ -3,21 +3,26 @@
|
|
|
3
3
|
{# Parameters:
|
|
4
4
|
- variant: (string) (default: "horizontal") options:
|
|
5
5
|
[ default-1-col, highlight-1-col, default-2-col, default-3-col, highlight-2-col, highlight-3-col ]
|
|
6
|
-
- title: (string) (default:
|
|
6
|
+
- title: (string) (default: "")
|
|
7
|
+
- title_tag: (string) (default: "h4")
|
|
7
8
|
- items: (array of objects of type card)
|
|
8
9
|
- link: (object of type link)
|
|
10
|
+
- alignment: (string) (default: '') options:
|
|
11
|
+
['start', 'end', 'center', 'baseline', 'stretch']
|
|
9
12
|
#}
|
|
10
13
|
|
|
11
14
|
{% set _items = items|default([]) %}
|
|
12
15
|
{% set _variant = variant|default('default-1-col') %}
|
|
13
16
|
{% set _title = title|default('') %}
|
|
17
|
+
{% set _title_tag = title_tag|default('h4') %}
|
|
18
|
+
{% set _alignment = alignment|default('') %}
|
|
14
19
|
{% set _link = link|default({}) %}
|
|
15
20
|
{% set _classes = ['bcl-listing', 'bcl-listing--' ~ _variant] %}
|
|
16
21
|
{% set _cards = [] %}
|
|
17
22
|
{% set _card_layout = {
|
|
18
23
|
type: 'grid',
|
|
19
|
-
|
|
20
|
-
|
|
24
|
+
responsiveness: 'md',
|
|
25
|
+
gutter: '4',
|
|
21
26
|
attributes: create_attribute(),
|
|
22
27
|
} %}
|
|
23
28
|
{% set attributes = attributes.addClass(_classes) %}
|
|
@@ -25,29 +30,48 @@
|
|
|
25
30
|
<div {{ attributes }}>
|
|
26
31
|
|
|
27
32
|
{% if _title is not empty %}
|
|
28
|
-
{% set _title_classes = 'fw-bold mb-
|
|
29
|
-
{
|
|
30
|
-
{
|
|
31
|
-
{
|
|
32
|
-
<h4 class="{{ _title_classes }}">
|
|
33
|
-
{{ _title }}
|
|
34
|
-
</h4>
|
|
33
|
+
{% set _title_classes = 'fw-bold mb-4' %}
|
|
34
|
+
<{{ _title_tag }} class="{{ _title_classes }}">
|
|
35
|
+
{{- _title -}}
|
|
36
|
+
</{{ _title_tag }}>
|
|
35
37
|
{% endif %}
|
|
36
38
|
|
|
37
39
|
{% if _items is not empty %}
|
|
38
40
|
{% for _card in _items %}
|
|
41
|
+
{% set _alignment_class = '' %}
|
|
42
|
+
{% set _max_width = '' %}
|
|
43
|
+
{% set _image = {} %}
|
|
44
|
+
{% if _card.image is not empty %}
|
|
45
|
+
{% set _max_width = 'mw-listing-img' %}
|
|
46
|
+
{% if not _alignment == 'center' %}
|
|
47
|
+
{% set _image_classes = _card.image.classes ? _card.image.classes ~ ' mb-3' : 'mb-3' %}
|
|
48
|
+
{% endif %}
|
|
49
|
+
{% set _card = _card|merge({image: _card.image|merge({
|
|
50
|
+
classes: _image_classes
|
|
51
|
+
})}) %}
|
|
52
|
+
{% elseif _card.date is not empty %}
|
|
53
|
+
{% set _max_width = 'mw-date mb-3' %}
|
|
54
|
+
{% endif %}
|
|
55
|
+
{% if _alignment is not empty %}
|
|
56
|
+
{% set _alignment_class = ' align-self-' ~ _alignment %}
|
|
57
|
+
{% endif %}
|
|
39
58
|
{% set _card_classes = [] %}
|
|
40
59
|
{% set _card_attributes = card.attributes ? card.attributes : create_attribute() %}
|
|
41
60
|
|
|
42
61
|
{% if _variant == 'default-1-col' %}
|
|
43
|
-
{% set _card_classes = [
|
|
62
|
+
{% set _card_classes = [
|
|
63
|
+
'listing-item',
|
|
64
|
+
'border-bottom',
|
|
65
|
+
'border-md-0',
|
|
66
|
+
'border-0',
|
|
67
|
+
] %}
|
|
44
68
|
{% set _card_attributes = _card_attributes.addClass(_card_classes) %}
|
|
45
69
|
{% set _card = _card|merge({
|
|
46
70
|
horizontal: true,
|
|
47
|
-
|
|
71
|
+
extra_classes_body: 'p-0 pb-md-0 pb-3',
|
|
48
72
|
horizontal_grid: {
|
|
49
|
-
left_col_classes: 'col-md-3 col-lg-2 rounded',
|
|
50
|
-
right_col_classes: 'col-md-9 col-lg-10',
|
|
73
|
+
left_col_classes: 'col-md-3 col-lg-2 rounded ' ~ _max_width ~ _alignment_class,
|
|
74
|
+
right_col_classes: 'col-md-9 col-lg-10' ~ _alignment_class,
|
|
51
75
|
},
|
|
52
76
|
attributes: _card_attributes,
|
|
53
77
|
}) %}
|
|
@@ -56,40 +80,38 @@
|
|
|
56
80
|
{% if _variant == 'default-2-col' or _variant == 'default-3-col' %}
|
|
57
81
|
{% set _card_classes = [
|
|
58
82
|
'listing-item',
|
|
59
|
-
'
|
|
60
|
-
'border-0'
|
|
83
|
+
'border-bottom',
|
|
84
|
+
'border-md-0',
|
|
85
|
+
'border-0',
|
|
61
86
|
] %}
|
|
62
87
|
{% set _card_attributes = _card_attributes.addClass(_card_classes) %}
|
|
63
88
|
{% set _card = _card|merge({
|
|
64
|
-
|
|
89
|
+
extra_classes_body: 'p-0 pb-md-0 pb-3',
|
|
65
90
|
horizontal: true,
|
|
66
91
|
attributes: _card_attributes,
|
|
67
92
|
}) %}
|
|
68
|
-
|
|
69
|
-
cols_extra_classes: "mt-4-5",
|
|
70
|
-
}) %}
|
|
93
|
+
|
|
71
94
|
{% if _variant == 'default-2-col' %}
|
|
72
95
|
{% set _card = _card|merge({
|
|
73
96
|
horizontal_grid: {
|
|
74
|
-
left_col_classes:
|
|
75
|
-
right_col_classes:
|
|
97
|
+
left_col_classes: 'col-xl-3 col-md-5 ' ~ _max_width ~ _alignment_class,
|
|
98
|
+
right_col_classes: 'col-xl-9 col-md-7' ~ _alignment_class,
|
|
76
99
|
},
|
|
77
100
|
}) %}
|
|
78
101
|
{% set _card_layout = _card_layout|merge({
|
|
79
|
-
gutter: 2,
|
|
80
102
|
responsive_columns: 2,
|
|
81
103
|
}) %}
|
|
82
104
|
{% else %}
|
|
83
105
|
{% set _card = _card|merge({
|
|
84
106
|
horizontal_grid: {
|
|
85
|
-
left_col_classes:
|
|
86
|
-
right_col_classes:
|
|
107
|
+
left_col_classes: 'col-lg-4 col-md-6 ' ~ _max_width ~ _alignment_class,
|
|
108
|
+
right_col_classes: 'col-lg-8 col-md-6' ~ _alignment_class,
|
|
87
109
|
},
|
|
88
110
|
}) %}
|
|
89
111
|
{% set _card_layout = _card_layout|merge({
|
|
90
|
-
|
|
112
|
+
attributes: _card_layout.attributes.addClass(['row-cols-md-2']),
|
|
91
113
|
responsive_columns: 3,
|
|
92
|
-
responsiveness: '
|
|
114
|
+
responsiveness: 'xl',
|
|
93
115
|
}) %}
|
|
94
116
|
{% endif %}
|
|
95
117
|
{% endif %}
|
|
@@ -98,32 +120,42 @@
|
|
|
98
120
|
{% set _card_classes = [
|
|
99
121
|
'listing-item--highlight',
|
|
100
122
|
'border-0',
|
|
101
|
-
'bg-
|
|
123
|
+
'bg-lighter'
|
|
102
124
|
] %}
|
|
103
125
|
{% set _card_attributes = _card_attributes.addClass(_card_classes) %}
|
|
104
126
|
{% set _card = _card|merge({
|
|
105
|
-
|
|
106
|
-
wrapper_class: "col",
|
|
127
|
+
wrapper_class: 'col',
|
|
107
128
|
attributes: _card_attributes,
|
|
108
129
|
}) %}
|
|
130
|
+
{% if _card.image is defined and _card.image is not empty %}
|
|
131
|
+
{% set _card = _card|merge({
|
|
132
|
+
extra_classes_body: "pt-0",
|
|
133
|
+
}) %}
|
|
134
|
+
{% endif %}
|
|
109
135
|
{% set _card_layout = _card_layout|merge({
|
|
110
|
-
cols_extra_classes:
|
|
136
|
+
cols_extra_classes: 'mt-4-5',
|
|
111
137
|
}) %}
|
|
112
138
|
{% endif %}
|
|
113
139
|
|
|
114
140
|
{% if _variant == 'highlight-2-col' or variant == 'highlight-3-col' %}
|
|
115
141
|
{% set _card_classes = [
|
|
116
142
|
'listing-item--highlight',
|
|
117
|
-
'border-0',
|
|
143
|
+
'border-0',
|
|
144
|
+
'bg-lighter',
|
|
118
145
|
'h-100',
|
|
119
146
|
'rounded-2'
|
|
120
147
|
] %}
|
|
121
148
|
{% set _card_attributes = _card_attributes.addClass(_card_classes) %}
|
|
122
149
|
{% set _card = _card|merge({
|
|
123
|
-
wrapper_class:
|
|
124
|
-
cols_extra_classes: "mt-4-5",
|
|
150
|
+
wrapper_class: 'col',
|
|
125
151
|
attributes: _card_attributes,
|
|
126
152
|
}) %}
|
|
153
|
+
{% if _card.image is defined and _card.image is not empty %}
|
|
154
|
+
{% set _card = _card|merge({
|
|
155
|
+
extra_classes_body: 'pt-0',
|
|
156
|
+
}) %}
|
|
157
|
+
{% endif %}
|
|
158
|
+
{% set _card_layout = _card_layout|merge({ gutter: '4' }) %}
|
|
127
159
|
{% if variant == 'highlight-2-col' %}
|
|
128
160
|
{% set _card_layout = _card_layout|merge({ responsive_columns: 2 }) %}
|
|
129
161
|
{% else %}
|
|
@@ -139,10 +171,7 @@
|
|
|
139
171
|
|
|
140
172
|
{% if _link is not empty %}
|
|
141
173
|
{% set _link_attributes = _link.attributes ? _link.attributes : create_attribute() %}
|
|
142
|
-
{% set _link_attributes = _link_attributes.addClass(['mt-3-5', 'd-block']) %}
|
|
143
|
-
{% if _variant == 'default-1-col' or _variant == 'default-2-col' or variant == 'default-3-col' %}
|
|
144
|
-
{% set _link_attributes = _link_attributes.addClass(['ps-3-5']) %}
|
|
145
|
-
{% endif %}
|
|
174
|
+
{% set _link_attributes = _link_attributes.addClass(['mt-3-5', 'd-inline-block']) %}
|
|
146
175
|
{% include '@oe-bcl/bcl-link/link.html.twig' with _link|merge({
|
|
147
176
|
attributes: _link_attributes,
|
|
148
177
|
icon: _link.icon|merge({
|
|
@@ -45,26 +45,28 @@
|
|
|
45
45
|
{{ attributes }}
|
|
46
46
|
>
|
|
47
47
|
<div class='container'>
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
{%
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
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 %}
|
|
68
|
+
|
|
69
|
+
{% if not _disable_collapse %}
|
|
68
70
|
<button
|
|
69
71
|
class='navbar-toggler'
|
|
70
72
|
type='button'
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
{% import _self as navigation %}
|
|
1
2
|
{% spaceless %}
|
|
2
3
|
|
|
3
4
|
{# Parameters:
|
|
@@ -17,131 +18,155 @@
|
|
|
17
18
|
- active (boolean)
|
|
18
19
|
- button (boolean) - set to button
|
|
19
20
|
- content (string) - content for tab
|
|
21
|
+
- navigation (navigation Object) - set for multiple level or navigation, items inside is required
|
|
20
22
|
}
|
|
21
23
|
]
|
|
22
24
|
#}
|
|
23
25
|
|
|
24
|
-
{
|
|
25
|
-
{%
|
|
26
|
-
{%
|
|
27
|
-
{%
|
|
28
|
-
{% set _alignment = alignment|default('') %}
|
|
29
|
-
{% set _id = id|default('') %}
|
|
30
|
-
{% set _tabs_content = tabs_content|default(false) %}
|
|
31
|
-
{% set _nav = nav|default(false) %}
|
|
32
|
-
{% set _navbar = navbar|default(false) %}
|
|
33
|
-
{% set _items = items|default([]) %}
|
|
26
|
+
{# Define main macro #}
|
|
27
|
+
{% macro render(items, pills, tabs, tabs_content, vertical, full_width, alignment, id, nav, navbar, attributes) %}
|
|
28
|
+
{% spaceless %}
|
|
29
|
+
{% import _self as navigation %}
|
|
34
30
|
|
|
35
|
-
{%
|
|
36
|
-
{% set
|
|
37
|
-
{%
|
|
38
|
-
{% set
|
|
39
|
-
{%
|
|
40
|
-
{%
|
|
41
|
-
{% set
|
|
42
|
-
{%
|
|
43
|
-
{%
|
|
44
|
-
{% set
|
|
45
|
-
{% endif %}
|
|
46
|
-
{% if _vertical %}
|
|
47
|
-
{% set _classes = _classes|merge(['flex-column']) %}
|
|
48
|
-
{% endif %}
|
|
49
|
-
{% if _full_width %}
|
|
50
|
-
{% set _classes = _classes|merge(['nav-fill']) %}
|
|
51
|
-
{% endif %}
|
|
52
|
-
{% if _alignment is not empty %}
|
|
53
|
-
{% set _classes = _classes|merge(['justify-content-' ~ _alignment]) %}
|
|
54
|
-
{% endif %}
|
|
31
|
+
{% set _pills = pills|default(false) %}
|
|
32
|
+
{% set _tabs = tabs|default(false) %}
|
|
33
|
+
{% set _vertical = vertical|default(false) %}
|
|
34
|
+
{% set _full_width = full_width|default(false) %}
|
|
35
|
+
{% set _alignment = alignment|default('') %}
|
|
36
|
+
{% set _id = id|default('') %}
|
|
37
|
+
{% set _tabs_content = tabs_content|default(false) %}
|
|
38
|
+
{% set _nav = nav|default(false) %}
|
|
39
|
+
{% set _navbar = navbar|default(false) %}
|
|
40
|
+
{% set _items = items|default([]) %}
|
|
55
41
|
|
|
56
|
-
{% if
|
|
57
|
-
|
|
58
|
-
{%
|
|
42
|
+
{% if _navbar %}
|
|
43
|
+
{% set _classes = ['navbar-nav'] %}
|
|
44
|
+
{% else %}
|
|
45
|
+
{% set _classes = ['nav'] %}
|
|
46
|
+
{% endif %}
|
|
47
|
+
{% if _pills %}
|
|
48
|
+
{% set _classes = _classes|merge(['nav-pills']) %}
|
|
49
|
+
{% endif %}
|
|
50
|
+
{% if _tabs %}
|
|
51
|
+
{% set _classes = _classes|merge(['nav-tabs']) %}
|
|
52
|
+
{% endif %}
|
|
53
|
+
{% if _vertical %}
|
|
54
|
+
{% set _classes = _classes|merge(['flex-column']) %}
|
|
55
|
+
{% endif %}
|
|
56
|
+
{% if _full_width %}
|
|
57
|
+
{% set _classes = _classes|merge(['nav-fill']) %}
|
|
58
|
+
{% endif %}
|
|
59
|
+
{% if _alignment is not empty %}
|
|
60
|
+
{% set _classes = _classes|merge(['justify-content-' ~ _alignment]) %}
|
|
61
|
+
{% endif %}
|
|
59
62
|
|
|
60
|
-
{% if
|
|
61
|
-
|
|
62
|
-
{% endif %}
|
|
63
|
+
{% if attributes is empty %}
|
|
64
|
+
{% set attributes = create_attribute() %}
|
|
65
|
+
{% endif %}
|
|
63
66
|
|
|
64
|
-
{% if
|
|
65
|
-
|
|
66
|
-
{% endif %}
|
|
67
|
+
{% if _id is not empty %}
|
|
68
|
+
{% set attributes = attributes.setAttribute('id', _id) %}
|
|
69
|
+
{% endif %}
|
|
67
70
|
|
|
68
|
-
{%
|
|
71
|
+
{% if not _nav and _tabs %}
|
|
72
|
+
{% set attributes = attributes.setAttribute('role', 'tablist') %}
|
|
73
|
+
{% endif %}
|
|
74
|
+
{% set attributes = attributes.addClass(_classes) %}
|
|
69
75
|
|
|
70
|
-
{% if _nav %}
|
|
71
|
-
<nav
|
|
72
|
-
|
|
73
|
-
>
|
|
74
|
-
{% else %}
|
|
75
|
-
<ul
|
|
76
|
-
|
|
77
|
-
>
|
|
78
|
-
{% endif %}
|
|
79
|
-
{% if _items is not empty and _items is iterable %}
|
|
80
|
-
{% for _item in _items %}
|
|
81
|
-
{% set _nav_class = 'nav-item' %}
|
|
82
|
-
{% if _item.dropdown %}
|
|
83
|
-
{% set _nav_class = _nav_class ~ ' dropdown' %}
|
|
84
|
-
{% set _item = _item|merge({remove_wrapper: true}) %}
|
|
85
|
-
{% endif %}
|
|
86
|
-
{% if _item.dropdown %}
|
|
87
|
-
{% set _item_classes = [] %}
|
|
88
|
-
{% else %}
|
|
89
|
-
{% set _item_classes = ['nav-link'] %}
|
|
90
|
-
{% endif %}
|
|
91
|
-
{% if _item.active %}
|
|
92
|
-
{% set _item_classes = _item_classes|merge(['active']) %}
|
|
93
|
-
{% endif %}
|
|
94
|
-
{% if _item.attributes is empty %}
|
|
95
|
-
{% set _item = _item|merge({
|
|
96
|
-
attributes: create_attribute()
|
|
97
|
-
}) %}
|
|
98
|
-
{% endif %}
|
|
99
|
-
{% set _item = _item|merge({
|
|
100
|
-
attributes: _item.attributes.addClass(_item_classes),
|
|
101
|
-
clean_class: true}) %}
|
|
102
|
-
{% if not _nav %}
|
|
103
|
-
<li
|
|
104
|
-
class="{{ _nav_class }}"
|
|
105
|
-
{% if _tabs %}
|
|
106
|
-
role="presentation"
|
|
107
|
-
{% endif %}
|
|
108
|
-
>
|
|
109
|
-
{% endif %}
|
|
110
|
-
{% if _item.dropdown is defined %}
|
|
111
|
-
{% include '@oe-bcl/bcl-dropdown/dropdown.html.twig' with _item only %}
|
|
112
|
-
{% elseif _item.button is defined %}
|
|
113
|
-
{% include '@oe-bcl/bcl-button/button.html.twig' with _item only %}
|
|
114
|
-
{% else %}
|
|
115
|
-
{% include '@oe-bcl/bcl-link/link.html.twig' with _item only %}
|
|
116
|
-
{% endif %}
|
|
117
|
-
{% if not _nav %}
|
|
118
|
-
</li>
|
|
119
|
-
{% endif %}
|
|
120
|
-
{% endfor %}
|
|
76
|
+
{% if _nav %}
|
|
77
|
+
<nav
|
|
78
|
+
{{ attributes }}
|
|
79
|
+
>
|
|
80
|
+
{% else %}
|
|
81
|
+
<ul
|
|
82
|
+
{{ attributes }}
|
|
83
|
+
>
|
|
121
84
|
{% endif %}
|
|
122
|
-
{% if _nav %}
|
|
123
|
-
</nav>
|
|
124
|
-
{% else %}
|
|
125
|
-
</ul>
|
|
126
|
-
{% endif %}
|
|
127
|
-
{% if _tabs_content %}
|
|
128
|
-
<div class="tab-content">
|
|
129
|
-
{%- block contents -%}
|
|
130
85
|
{% if _items is not empty and _items is iterable %}
|
|
131
|
-
{% for _item in
|
|
132
|
-
{%
|
|
133
|
-
|
|
134
|
-
{%
|
|
135
|
-
|
|
86
|
+
{% for _item in items %}
|
|
87
|
+
{% set _nav_class = 'nav-item' %}
|
|
88
|
+
{% if _item.dropdown %}
|
|
89
|
+
{% set _nav_class = _nav_class ~ ' dropdown' %}
|
|
90
|
+
{% set _item = _item|merge({remove_wrapper: true}) %}
|
|
91
|
+
{% endif %}
|
|
92
|
+
{% if _item.dropdown %}
|
|
93
|
+
{% set _item_classes = [] %}
|
|
94
|
+
{% else %}
|
|
95
|
+
{% set _item_classes = ['nav-link'] %}
|
|
96
|
+
{% endif %}
|
|
97
|
+
{% if _item.active %}
|
|
98
|
+
{% set _item_classes = _item_classes|merge(['active']) %}
|
|
99
|
+
{% endif %}
|
|
100
|
+
{% if _item.attributes is empty %}
|
|
101
|
+
{% set _item = _item|merge({
|
|
102
|
+
attributes: create_attribute()
|
|
103
|
+
}) %}
|
|
104
|
+
{% endif %}
|
|
105
|
+
{% set _item = _item|merge({
|
|
106
|
+
attributes: _item.attributes.addClass(_item_classes),
|
|
107
|
+
clean_class: true}) %}
|
|
108
|
+
{% if not _nav %}
|
|
109
|
+
<li
|
|
110
|
+
class="{{ _nav_class }}"
|
|
111
|
+
{% if _tabs %}
|
|
112
|
+
role="presentation"
|
|
136
113
|
{% endif %}
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
114
|
+
>
|
|
115
|
+
{% endif %}
|
|
116
|
+
{% if _item.dropdown is defined %}
|
|
117
|
+
{% include '@oe-bcl/bcl-dropdown/dropdown.html.twig' with _item only %}
|
|
118
|
+
{% elseif _item.button is defined %}
|
|
119
|
+
{% include '@oe-bcl/bcl-button/button.html.twig' with _item only %}
|
|
120
|
+
{% else %}
|
|
121
|
+
{% include '@oe-bcl/bcl-link/link.html.twig' with _item only %}
|
|
122
|
+
{% endif %}
|
|
123
|
+
{% if _item.navigation is defined and _item.navigation.items is not empty and _item.navigation.items is iterable %}
|
|
124
|
+
{{ navigation.render(
|
|
125
|
+
_item.navigation.items,
|
|
126
|
+
_item.navigation.pills,
|
|
127
|
+
_item.navigation.tabs,
|
|
128
|
+
_item.navigation.tabs_content,
|
|
129
|
+
_item.navigation.vertical,
|
|
130
|
+
_item.navigation.full_width,
|
|
131
|
+
_item.navigation.alignment,
|
|
132
|
+
_item.navigation.id,
|
|
133
|
+
_item.navigation.nav,
|
|
134
|
+
_item.navigation.navbar,
|
|
135
|
+
_item.navigation.attributes
|
|
136
|
+
) }}
|
|
137
|
+
{% endif %}
|
|
138
|
+
{% if not _nav %}
|
|
139
|
+
</li>
|
|
140
140
|
{% endif %}
|
|
141
141
|
{% endfor %}
|
|
142
142
|
{% endif %}
|
|
143
|
-
{
|
|
144
|
-
</
|
|
145
|
-
{%
|
|
143
|
+
{% if _nav %}
|
|
144
|
+
</nav>
|
|
145
|
+
{% else %}
|
|
146
|
+
</ul>
|
|
147
|
+
{% endif %}
|
|
148
|
+
{% if _tabs_content %}
|
|
149
|
+
<div class="tab-content">
|
|
150
|
+
{%- block contents -%}
|
|
151
|
+
{% if _items is not empty and _items is iterable %}
|
|
152
|
+
{% for _item in _items %}
|
|
153
|
+
{% if _item.content is not empty %}
|
|
154
|
+
{% set _content_class = 'tab-pane fade' %}
|
|
155
|
+
{% if _item.active %}
|
|
156
|
+
{% set _content_class = _content_class ~ ' show active' %}
|
|
157
|
+
{% endif %}
|
|
158
|
+
<div class="{{ _content_class }}" id="{{ _item.target }}" role="tabpanel" aria-labelledby="{{ _item.id }}">
|
|
159
|
+
{{- _item.content -}}
|
|
160
|
+
</div>
|
|
161
|
+
{% endif %}
|
|
162
|
+
{% endfor %}
|
|
163
|
+
{% endif %}
|
|
164
|
+
{%- endblock -%}
|
|
165
|
+
</div>
|
|
166
|
+
{% endif %}
|
|
167
|
+
{% endspaceless %}
|
|
168
|
+
{% endmacro %}
|
|
169
|
+
|
|
170
|
+
{{ navigation.render(items, pills, tabs, tabs_content, vertical, full_width, alignment, id, nav, navbar, attributes) }}
|
|
146
171
|
|
|
147
172
|
{% endspaceless %}
|