@qld-gov-au/qgds-bootstrap5 2.1.7 → 2.1.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.vscode/settings.json +1 -1
- package/dist/assets/components/bs5/head/head.hbs +1 -1
- package/dist/assets/components/bs5/navbar/navbar.hbs +1 -1
- package/dist/assets/css/qld.bootstrap.css +2 -2
- package/dist/assets/css/qld.bootstrap.css.map +3 -3
- package/dist/assets/css/qld.bootstrap.legacy.css +2 -2
- package/dist/assets/css/qld.bootstrap.legacy.css.map +3 -3
- package/dist/assets/js/handlebars.helpers.bundle.js +1 -1
- package/dist/assets/js/handlebars.init.min.js +3 -3
- package/dist/assets/js/handlebars.init.min.js.map +1 -1
- package/dist/assets/js/handlebars.partials.js +3 -3
- package/dist/assets/js/handlebars.partials.js.map +1 -1
- package/dist/assets/js/qld.bootstrap.min.js +6 -6
- package/dist/assets/js/qld.bootstrap.min.js.map +3 -3
- package/dist/assets/node/handlebars.init.min.js +2 -2
- package/dist/assets/node/handlebars.init.min.js.map +1 -1
- package/dist/components/bs5/head/head.hbs +1 -1
- package/dist/components/bs5/navbar/navbar.hbs +1 -1
- package/dist/package.json +1 -1
- package/dist/sample-data/navbar/navbar.data.json +1 -0
- package/package.json +1 -1
- package/src/components/bs5/banner/banner.scss +11 -0
- package/src/components/bs5/footer/footer.scss +11 -4
- package/src/components/bs5/linkColumns/linkColumns.scss +27 -13
- package/src/components/bs5/navbar/navbar.data.json +1 -0
- package/src/components/bs5/navbar/navbar.functions.js +43 -13
- package/src/components/bs5/navbar/navbar.hbs +1 -1
- package/src/js/qld.bootstrap.js +5 -0
- package/src/js/utils.js +15 -0
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
|
|
2
|
-
<!-- VERSION_DETAILS={"project_id":"@qld-gov-au/qgds-bootstrap5","version":"2.1.
|
|
2
|
+
<!-- VERSION_DETAILS={"project_id":"@qld-gov-au/qgds-bootstrap5","version":"2.1.8","branch":"HEAD","tag":"v2.1.8","commit":"725614dd2b3f362a82c568aaf0dd15676b17b6af","majorVersion":"v2"} -->
|
|
3
3
|
|
|
4
4
|
{{! Select environment, used verbatium if not using predefind key
|
|
5
5
|
cdn := PROD|STAGING|BETA|TEST|DEV|???
|
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
<ul class="navbar-nav">
|
|
13
13
|
{{#each navigation}}
|
|
14
14
|
{{#if navigationItems}}
|
|
15
|
-
<li class="nav-item dropdown{{#if alternativeColor}} alt{{/if}}{{#if mobileOnly}} mobile-only{{/if}}">
|
|
15
|
+
<li class="nav-item dropdown{{#if alternativeColor}} alt{{/if}}{{#if mobileOnly}} mobile-only{{/if}}"{{#if isExpandedOnMobile}} data-is-expanded-on-mobile="true"{{/if}}>
|
|
16
16
|
<a class="nav-link{{#unless ../metadata.verticalOrientation}} dropdown-toggle{{/unless}}{{#if currentPage}} active{{/if}}{{#if dropdownOptions.hasNoLink}} hasNoLink{{/if}}" {{#if currentPage}}aria-current="page"{{/if}}{{#if dropdownOptions.hasNoLink}} href="#"{{else}} href="{{url}}"{{/if}}{{#if target}} target="{{target}}"{{/if}}{{#ifCond target '==' '_blank'}} rel="noopener noreferrer"{{/ifCond}} role="button" data-bs-toggle="dropdown"
|
|
17
17
|
aria-expanded="false">
|
|
18
18
|
{{#if iconName}}
|
package/dist/package.json
CHANGED
package/package.json
CHANGED
|
@@ -222,6 +222,17 @@
|
|
|
222
222
|
grid-row: 1 / span 2; // Spans rows 1 and 2
|
|
223
223
|
}
|
|
224
224
|
}
|
|
225
|
+
|
|
226
|
+
&.is-full-width:not(:has(.banner-image)) {
|
|
227
|
+
@include media-breakpoint-down(lg) {
|
|
228
|
+
.banner-content {
|
|
229
|
+
grid-column: 1 / -1;
|
|
230
|
+
.banner-abstract {
|
|
231
|
+
max-width: none;
|
|
232
|
+
}
|
|
233
|
+
}
|
|
234
|
+
}
|
|
235
|
+
}
|
|
225
236
|
}
|
|
226
237
|
}
|
|
227
238
|
|
|
@@ -134,10 +134,9 @@
|
|
|
134
134
|
a.nav-link {
|
|
135
135
|
--qld-link-color: var(--#{$prefix}footer-color-link);
|
|
136
136
|
text-decoration: underline;
|
|
137
|
-
text-decoration-color: var(--#{$prefix}
|
|
137
|
+
text-decoration-color: var(--#{$prefix}link-underline);
|
|
138
138
|
text-decoration-thickness: var(--#{$prefix}link-underline-thickness);
|
|
139
|
-
text-underline-offset:
|
|
140
|
-
text-underline-position: from-font;
|
|
139
|
+
text-underline-offset: var(--#{$prefix}link-underline-offset);
|
|
141
140
|
color: var(--qld-link-color);
|
|
142
141
|
padding-left: 0;
|
|
143
142
|
|
|
@@ -145,13 +144,21 @@
|
|
|
145
144
|
text-decoration-thickness: var(
|
|
146
145
|
--#{$prefix}link-underline-thickness-hover
|
|
147
146
|
);
|
|
147
|
+
text-decoration-color: var(--#{$prefix}link-underline-hover);
|
|
148
148
|
}
|
|
149
149
|
|
|
150
150
|
&:visited {
|
|
151
151
|
color: var(--#{$prefix}footer-color-link);
|
|
152
152
|
text-decoration: underline;
|
|
153
|
-
text-decoration-color: var(--#{$prefix}
|
|
153
|
+
text-decoration-color: var(--#{$prefix}link-underline);
|
|
154
154
|
text-decoration-thickness: var(--#{$prefix}link-underline-thickness);
|
|
155
|
+
|
|
156
|
+
&:hover {
|
|
157
|
+
text-decoration-color: var(--#{$prefix}link-underline-hover);
|
|
158
|
+
text-decoration-thickness: var(
|
|
159
|
+
--#{$prefix}link-underline-thickness-hover
|
|
160
|
+
);
|
|
161
|
+
}
|
|
155
162
|
}
|
|
156
163
|
}
|
|
157
164
|
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
--color-border: var(--#{$prefix}neutral-lighter);
|
|
4
4
|
|
|
5
5
|
background-color: var(--#{$prefix}body-bg);
|
|
6
|
-
|
|
6
|
+
|
|
7
7
|
&.light {
|
|
8
8
|
--color-border: var(--#{$prefix}light-border);
|
|
9
9
|
}
|
|
@@ -22,7 +22,7 @@
|
|
|
22
22
|
max-width: var(--max-column-width);
|
|
23
23
|
}
|
|
24
24
|
ul {
|
|
25
|
-
width: 100%;
|
|
25
|
+
// width: 100%;
|
|
26
26
|
display: grid;
|
|
27
27
|
gap: 0 1rem;
|
|
28
28
|
}
|
|
@@ -31,17 +31,17 @@
|
|
|
31
31
|
}
|
|
32
32
|
.col-2 {
|
|
33
33
|
grid-template-columns: repeat(2, 1fr);
|
|
34
|
-
@include media-breakpoint-down(md) {
|
|
34
|
+
@include media-breakpoint-down(md) {
|
|
35
35
|
grid-template-columns: repeat(1, 1fr);
|
|
36
36
|
}
|
|
37
37
|
}
|
|
38
38
|
.col-3 {
|
|
39
39
|
grid-template-columns: repeat(3, 1fr);
|
|
40
40
|
@include media-breakpoint-down(lg) {
|
|
41
|
-
|
|
41
|
+
grid-template-columns: repeat(2, 1fr);
|
|
42
42
|
}
|
|
43
43
|
@include media-breakpoint-down(md) {
|
|
44
|
-
|
|
44
|
+
grid-template-columns: repeat(1, 1fr);
|
|
45
45
|
}
|
|
46
46
|
}
|
|
47
47
|
.col-vert-1 {
|
|
@@ -64,9 +64,9 @@
|
|
|
64
64
|
column-count: 3;
|
|
65
65
|
column-gap: 2rem;
|
|
66
66
|
@include media-breakpoint-down(lg) {
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
}
|
|
67
|
+
column-count: 2;
|
|
68
|
+
column-gap: 1.5rem;
|
|
69
|
+
}
|
|
70
70
|
@include media-breakpoint-down(md) {
|
|
71
71
|
column-count: 1;
|
|
72
72
|
}
|
|
@@ -82,11 +82,19 @@
|
|
|
82
82
|
margin-block: 0;
|
|
83
83
|
//Reset the line height too to override styles from .qld-content-body li
|
|
84
84
|
line-height: 1.5rem;
|
|
85
|
+
|
|
86
|
+
// This prevents LI's from breaking across columns
|
|
87
|
+
// Legacy support for older WebKit browsers (=< chrome 104)
|
|
88
|
+
break-inside: avoid-column;
|
|
89
|
+
-webkit-column-break-inside: avoid;
|
|
90
|
+
|
|
85
91
|
.nav-link {
|
|
86
92
|
text-decoration: underline;
|
|
87
93
|
text-decoration-color: transparent;
|
|
88
94
|
text-decoration-thickness: 0;
|
|
89
|
-
transition:
|
|
95
|
+
transition:
|
|
96
|
+
text-decoration-thickness 0.2s ease,
|
|
97
|
+
text-decoration-color 0.2s ease;
|
|
90
98
|
display: flex;
|
|
91
99
|
align-items: center;
|
|
92
100
|
flex: 1;
|
|
@@ -105,22 +113,28 @@
|
|
|
105
113
|
mask-repeat: no-repeat;
|
|
106
114
|
mask-position: right center;
|
|
107
115
|
background-color: var(--#{$prefix}action-icon-color);
|
|
108
|
-
transition:
|
|
116
|
+
transition:
|
|
117
|
+
margin-inline-end 0.2s ease,
|
|
118
|
+
width 0.2s ease;
|
|
109
119
|
}
|
|
110
120
|
&:hover {
|
|
111
121
|
text-decoration-color: var(--#{$prefix}link-color);
|
|
112
122
|
text-decoration-thickness: 2px;
|
|
113
|
-
transition:
|
|
123
|
+
transition:
|
|
124
|
+
text-decoration-thickness 0.2s ease,
|
|
125
|
+
text-decoration-color 0.2s ease;
|
|
114
126
|
&::after {
|
|
115
127
|
background-color: var(--#{$prefix}action-icon-hover-color);
|
|
116
128
|
margin-inline-end: 0rem;
|
|
117
129
|
width: 2.5rem;
|
|
118
|
-
transition:
|
|
130
|
+
transition:
|
|
131
|
+
margin-inline-end 0.2s ease,
|
|
132
|
+
width 0.2s ease;
|
|
119
133
|
}
|
|
120
134
|
}
|
|
121
135
|
}
|
|
122
136
|
}
|
|
123
|
-
.all-link{
|
|
137
|
+
.all-link {
|
|
124
138
|
grid-column: 1/-1;
|
|
125
139
|
max-width: 100%;
|
|
126
140
|
border-block-end: none;
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import { createFocusTrap } from "../../../js/utils.js";
|
|
2
2
|
import { breakpoints } from "../../../js/constants.js";
|
|
3
|
-
import { getFocusableElements } from "../../../js/utils.js";
|
|
4
3
|
|
|
5
4
|
const getIsMobile = () => window.innerWidth < breakpoints.lg;
|
|
6
5
|
|
|
@@ -9,6 +8,7 @@ export function initializeNavbar() {
|
|
|
9
8
|
const overlay = document.getElementById("overlay");
|
|
10
9
|
const burgerBtn = document.getElementById("burgerBtn");
|
|
11
10
|
const burgerCloseBtn = document.getElementById("burgerCloseBtn");
|
|
11
|
+
let wasMobile = getIsMobile();
|
|
12
12
|
|
|
13
13
|
/** @type {HTMLElement[]} */
|
|
14
14
|
let inertTargets = [];
|
|
@@ -94,35 +94,55 @@ export function initializeNavbar() {
|
|
|
94
94
|
closeNavbar();
|
|
95
95
|
});
|
|
96
96
|
|
|
97
|
-
const resetNavbarState = () => {
|
|
98
|
-
const isMobile = getIsMobile();
|
|
97
|
+
const resetNavbarState = (isMobile) => {
|
|
99
98
|
const dropdownToggles = navbar?.querySelectorAll(
|
|
100
99
|
"a.dropdown-toggle, a.no-dropdown-toggle",
|
|
101
100
|
);
|
|
102
101
|
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
102
|
+
if (isMobile) {
|
|
103
|
+
// disable navlinks as toggles
|
|
104
|
+
dropdownToggles?.forEach((toggle) => {
|
|
106
105
|
// Skip toggle items with hasNoLink class
|
|
107
106
|
if (toggle.classList.contains("hasNoLink")) {
|
|
108
107
|
return;
|
|
109
108
|
}
|
|
110
109
|
toggle.classList.replace("dropdown-toggle", "no-dropdown-toggle");
|
|
111
110
|
toggle.removeAttribute("data-bs-toggle");
|
|
112
|
-
}
|
|
111
|
+
});
|
|
112
|
+
|
|
113
|
+
// Expand any dropdowns set to expand on mobile
|
|
114
|
+
navbar
|
|
115
|
+
?.querySelectorAll('[data-is-expanded-on-mobile="true"]')
|
|
116
|
+
.forEach((item) => {
|
|
117
|
+
item
|
|
118
|
+
.querySelectorAll(".dropdown-toggle, .dropdown-menu")
|
|
119
|
+
.forEach((item) => {
|
|
120
|
+
item.classList.add("show");
|
|
121
|
+
});
|
|
122
|
+
});
|
|
123
|
+
} else {
|
|
124
|
+
// reenable navlinks as toggle
|
|
125
|
+
dropdownToggles?.forEach((toggle) => {
|
|
113
126
|
toggle.classList.replace("no-dropdown-toggle", "dropdown-toggle");
|
|
114
127
|
toggle.setAttribute("data-bs-toggle", "dropdown");
|
|
115
|
-
}
|
|
116
|
-
});
|
|
128
|
+
});
|
|
117
129
|
|
|
118
|
-
|
|
130
|
+
// Collapse any dropdowns set to expand on mobile
|
|
131
|
+
navbar
|
|
132
|
+
?.querySelectorAll('[data-is-expanded-on-mobile="true"]')
|
|
133
|
+
.forEach((item) => {
|
|
134
|
+
item
|
|
135
|
+
.querySelectorAll(".dropdown-toggle, .dropdown-menu")
|
|
136
|
+
.forEach((item) => {
|
|
137
|
+
item.classList.remove("show");
|
|
138
|
+
});
|
|
139
|
+
});
|
|
140
|
+
|
|
141
|
+
// close the navbar
|
|
119
142
|
closeNavbar();
|
|
120
143
|
}
|
|
121
144
|
};
|
|
122
145
|
|
|
123
|
-
window.addEventListener("resize", resetNavbarState);
|
|
124
|
-
resetNavbarState();
|
|
125
|
-
|
|
126
146
|
//All associated side effects of navbar collapse beginning belong here
|
|
127
147
|
navbar?.addEventListener("hide.bs.collapse", () => {
|
|
128
148
|
overlay?.classList.remove("show");
|
|
@@ -160,4 +180,14 @@ export function initializeNavbar() {
|
|
|
160
180
|
}, 0);
|
|
161
181
|
}
|
|
162
182
|
});
|
|
183
|
+
|
|
184
|
+
window.addEventListener("resize", () => {
|
|
185
|
+
const isMobile = getIsMobile();
|
|
186
|
+
if (wasMobile !== isMobile) {
|
|
187
|
+
wasMobile = isMobile;
|
|
188
|
+
resetNavbarState(isMobile);
|
|
189
|
+
}
|
|
190
|
+
});
|
|
191
|
+
|
|
192
|
+
resetNavbarState(wasMobile);
|
|
163
193
|
}
|
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
<ul class="navbar-nav">
|
|
13
13
|
{{#each navigation}}
|
|
14
14
|
{{#if navigationItems}}
|
|
15
|
-
<li class="nav-item dropdown{{#if alternativeColor}} alt{{/if}}{{#if mobileOnly}} mobile-only{{/if}}">
|
|
15
|
+
<li class="nav-item dropdown{{#if alternativeColor}} alt{{/if}}{{#if mobileOnly}} mobile-only{{/if}}"{{#if isExpandedOnMobile}} data-is-expanded-on-mobile="true"{{/if}}>
|
|
16
16
|
<a class="nav-link{{#unless ../metadata.verticalOrientation}} dropdown-toggle{{/unless}}{{#if currentPage}} active{{/if}}{{#if dropdownOptions.hasNoLink}} hasNoLink{{/if}}" {{#if currentPage}}aria-current="page"{{/if}}{{#if dropdownOptions.hasNoLink}} href="#"{{else}} href="{{url}}"{{/if}}{{#if target}} target="{{target}}"{{/if}}{{#ifCond target '==' '_blank'}} rel="noopener noreferrer"{{/ifCond}} role="button" data-bs-toggle="dropdown"
|
|
17
17
|
aria-expanded="false">
|
|
18
18
|
{{#if iconName}}
|
package/src/js/qld.bootstrap.js
CHANGED
|
@@ -21,6 +21,7 @@ import { backToTop } from "./../components/bs5/backToTop/backToTop.functions";
|
|
|
21
21
|
import { initTabsScroll } from "./../components/bs5/tabs/tabs.functions";
|
|
22
22
|
import { initGlobalAlerts } from "./../components/bs5/globalAlert/globalAlert.function";
|
|
23
23
|
import { validateSkipLinks } from "./../components/bs5/skiplinks/skipLinks.functions";
|
|
24
|
+
import { printPage } from "./utils";
|
|
24
25
|
|
|
25
26
|
window.addEventListener("click", initQuickexit, true);
|
|
26
27
|
window.addEventListener("keydown", initQuickexit, true);
|
|
@@ -137,6 +138,10 @@ window.addEventListener("DOMContentLoaded", () => {
|
|
|
137
138
|
transcript.addEventListener("click", videoTranscriptTitle);
|
|
138
139
|
});
|
|
139
140
|
|
|
141
|
+
// Add btn page print functions
|
|
142
|
+
printPage();
|
|
143
|
+
|
|
144
|
+
// Date Input
|
|
140
145
|
initDateInput();
|
|
141
146
|
|
|
142
147
|
// Skip Links
|
package/src/js/utils.js
CHANGED
|
@@ -191,3 +191,18 @@ export function createFocusTrap(container, options = {}) {
|
|
|
191
191
|
},
|
|
192
192
|
};
|
|
193
193
|
}
|
|
194
|
+
|
|
195
|
+
/**
|
|
196
|
+
* Print page function
|
|
197
|
+
* Attaches event listener to elements with class 'js-print' to trigger window.print()
|
|
198
|
+
*/
|
|
199
|
+
export function printPage() {
|
|
200
|
+
// Add btn page print functions
|
|
201
|
+
let printButton = document.querySelector(".js-print");
|
|
202
|
+
if (printButton) {
|
|
203
|
+
printButton.addEventListener("click", function (event) {
|
|
204
|
+
event.preventDefault();
|
|
205
|
+
window.print();
|
|
206
|
+
});
|
|
207
|
+
}
|
|
208
|
+
}
|