@qld-gov-au/qgds-bootstrap5 2.0.11 → 2.1.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 (119) hide show
  1. package/.esbuild/plugins/qgds-plugin-generate-icon-assets.js +31 -24
  2. package/.storybook/preview.js +5 -2
  3. package/dist/assets/components/bs5/button/button.hbs +1 -1
  4. package/dist/assets/components/bs5/dateinput/dateinput.hbs +27 -27
  5. package/dist/assets/components/bs5/footer/customLinks.hbs +1 -1
  6. package/dist/assets/components/bs5/footer/followLinks.hbs +1 -1
  7. package/dist/assets/components/bs5/formcheck/formcheck.hbs +10 -2
  8. package/dist/assets/components/bs5/head/head.hbs +1 -1
  9. package/dist/assets/components/bs5/inpageAlert/inpageAlert.hbs +10 -2
  10. package/dist/assets/components/bs5/searchInput/searchInput.hbs +35 -31
  11. package/dist/assets/components/bs5/select/select.hbs +19 -19
  12. package/dist/assets/components/bs5/textarea/textarea.hbs +17 -17
  13. package/dist/assets/components/bs5/textbox/textbox.hbs +17 -18
  14. package/dist/assets/css/qld.bootstrap.css +2 -2
  15. package/dist/assets/css/qld.bootstrap.css.map +3 -3
  16. package/dist/assets/css/qld.bootstrap.legacy.css +2 -2
  17. package/dist/assets/css/qld.bootstrap.legacy.css.map +3 -3
  18. package/dist/assets/img/icons-sprite.svg +24 -24
  19. package/dist/assets/js/handlebars.helpers.bundle.js +1 -1
  20. package/dist/assets/js/handlebars.init.min.js +159 -140
  21. package/dist/assets/js/handlebars.init.min.js.map +2 -2
  22. package/dist/assets/js/handlebars.partials.js +159 -140
  23. package/dist/assets/js/handlebars.partials.js.map +2 -2
  24. package/dist/assets/js/qld.bootstrap.min.js +9 -10
  25. package/dist/assets/js/qld.bootstrap.min.js.map +4 -4
  26. package/dist/assets/node/handlebars.init.min.js +57 -11
  27. package/dist/assets/node/handlebars.init.min.js.map +2 -2
  28. package/dist/components/bs5/button/button.hbs +1 -1
  29. package/dist/components/bs5/dateinput/dateinput.hbs +27 -27
  30. package/dist/components/bs5/footer/customLinks.hbs +1 -1
  31. package/dist/components/bs5/footer/followLinks.hbs +1 -1
  32. package/dist/components/bs5/formcheck/formcheck.hbs +10 -2
  33. package/dist/components/bs5/head/head.hbs +1 -1
  34. package/dist/components/bs5/inpageAlert/inpageAlert.hbs +10 -2
  35. package/dist/components/bs5/searchInput/searchInput.hbs +35 -31
  36. package/dist/components/bs5/select/select.hbs +19 -19
  37. package/dist/components/bs5/textarea/textarea.hbs +17 -17
  38. package/dist/components/bs5/textbox/textbox.hbs +17 -18
  39. package/dist/package.json +1 -1
  40. package/dist/sample-data/dateinput/dateinput.data.json +14 -12
  41. package/dist/sample-data/footer/footer.data.json +3 -0
  42. package/dist/sample-data/formcheck/stories/checkbox/checkbox.data.json +4 -5
  43. package/dist/sample-data/formcheck/stories/radio/radio.data.json +4 -4
  44. package/dist/sample-data/inpageAlert/inpageAlert.data.json +1 -1
  45. package/dist/sample-data/searchInput/searchInput.data.json +20 -10
  46. package/dist/sample-data/select/select.data.json +12 -10
  47. package/dist/sample-data/textarea/textarea.data.json +14 -11
  48. package/dist/sample-data/textbox/textbox.data.json +13 -10
  49. package/package.json +1 -1
  50. package/src/components/bs5/breadcrumbs/breadcrumbs.scss +3 -4
  51. package/src/components/bs5/button/Button.js +32 -6
  52. package/src/components/bs5/button/button.hbs +1 -1
  53. package/src/components/bs5/button/button.scss +0 -5
  54. package/src/components/bs5/card/card.scss +2 -0
  55. package/src/components/bs5/dateinput/Dateinput.js +26 -11
  56. package/src/components/bs5/dateinput/dateinput.data.json +14 -12
  57. package/src/components/bs5/dateinput/dateinput.hbs +27 -27
  58. package/src/components/bs5/footer/customLinks.hbs +1 -1
  59. package/src/components/bs5/footer/followLinks.hbs +1 -1
  60. package/src/components/bs5/footer/footer.data.json +3 -0
  61. package/src/components/bs5/formcheck/Formcheck.js +57 -6
  62. package/src/components/bs5/formcheck/_form-variables.scss +167 -0
  63. package/src/components/bs5/formcheck/formcheck.hbs +10 -2
  64. package/src/components/bs5/formcheck/formcheck.scss +268 -65
  65. package/src/components/bs5/formcheck/stories/bootstrap-validation/bootstrap-validation.stories.js +304 -0
  66. package/src/components/bs5/formcheck/stories/checkbox/checkbox.data.json +4 -5
  67. package/src/components/bs5/formcheck/stories/checkbox/checkbox.stories.js +19 -111
  68. package/src/components/bs5/formcheck/stories/radio/radio.data.json +4 -4
  69. package/src/components/bs5/formcheck/stories/radio/radio.stories.js +30 -122
  70. package/src/components/bs5/header/header.scss +1 -2
  71. package/src/components/bs5/icons/_icons.list.js +7 -7
  72. package/src/components/bs5/icons/_icons.list.scss +113 -112
  73. package/src/components/bs5/icons/_icons.variables.scss +7 -6
  74. package/src/components/bs5/icons/icons.scss +2 -1
  75. package/src/components/bs5/inpageAlert/inpageAlert.data.json +1 -1
  76. package/src/components/bs5/inpageAlert/inpageAlert.hbs +10 -2
  77. package/src/components/bs5/inpageAlert/inpageAlert.scss +50 -52
  78. package/src/components/bs5/inpageAlert/inpageAlert.stories.js +54 -3
  79. package/src/components/bs5/pageLayout/{ThemeShowcase.stories.js → PaletteShowcase.stories.js} +40 -38
  80. package/src/components/bs5/searchInput/__snapshots__/searchInput.test.js.snap +25 -29
  81. package/src/components/bs5/searchInput/search.functions.js +120 -108
  82. package/src/components/bs5/searchInput/searchInput.data.json +20 -10
  83. package/src/components/bs5/searchInput/searchInput.hbs +35 -31
  84. package/src/components/bs5/searchInput/searchInput.scss +193 -196
  85. package/src/components/bs5/searchInput/searchInput.stories.js +35 -13
  86. package/src/components/bs5/searchInput/searchInput.test.js +96 -120
  87. package/src/components/bs5/select/Select.js +13 -5
  88. package/src/components/bs5/select/Select.stories.js +27 -83
  89. package/src/components/bs5/select/select.data.json +12 -10
  90. package/src/components/bs5/select/select.hbs +19 -19
  91. package/src/components/bs5/skiplinks/skipLinks.scss +12 -4
  92. package/src/components/bs5/textarea/Textarea.js +13 -5
  93. package/src/components/bs5/textarea/Textarea.stories.js +29 -55
  94. package/src/components/bs5/textarea/textarea.data.json +14 -11
  95. package/src/components/bs5/textarea/textarea.hbs +17 -17
  96. package/src/components/bs5/textbox/Textbox.js +16 -5
  97. package/src/components/bs5/textbox/Textbox.stories.js +26 -51
  98. package/src/components/bs5/textbox/textInput.scss +12 -232
  99. package/src/components/bs5/textbox/textbox.data.json +13 -10
  100. package/src/components/bs5/textbox/textbox.hbs +17 -18
  101. package/src/components/common/focus-styles/focusStyles.mdx +20 -0
  102. package/src/components/common/focus-styles/focusStyles.stories.js +58 -0
  103. package/src/css/functions/_index.scss +5 -0
  104. package/src/css/functions/color-icon.scss +31 -0
  105. package/src/css/functions/remify.scss +32 -0
  106. package/src/css/functions/snap-line-height.scss +7 -0
  107. package/src/css/functions/string-replace.scss +49 -0
  108. package/src/css/functions/svg-encode.scss +22 -0
  109. package/src/css/main.scss +1 -1
  110. package/src/css/mixins/focusable.scss +3 -0
  111. package/src/css/mixins/make-icon.scss +1 -1
  112. package/src/css/mixins/make-link.scss +13 -10
  113. package/src/css/{qld-theme.scss → qld-palettes.scss} +50 -35
  114. package/src/css/qld-type.scss +5 -1
  115. package/src/css/qld-utilities.scss +9 -1
  116. package/src/css/qld-variables.scss +1 -1
  117. package/src/img/icons-sprite.svg +24 -24
  118. package/src/js/qld.bootstrap.js +3 -55
  119. package/src/components/bs5/formcheck/_formcheck.stories.bak.js +0 -432
@@ -51,6 +51,7 @@ window.addEventListener("DOMContentLoaded", () => {
51
51
 
52
52
  // Get all forms with the class 'site-search'
53
53
  let forms = document.querySelectorAll(".site-search");
54
+
54
55
  forms.forEach((form) => {
55
56
  // Get the search input within the current form
56
57
  let searchInput = form.querySelector(".qld-search-input input");
@@ -67,59 +68,6 @@ window.addEventListener("DOMContentLoaded", () => {
67
68
  }, 300);
68
69
  });
69
70
 
70
- // Add focus event listener to the search input
71
- searchInput.addEventListener("focus", function () {
72
- const suggestions = form.querySelector(".suggestions");
73
- const dynamicSuggestionsContainer = form.querySelector(
74
- ".dynamic-suggestions",
75
- );
76
-
77
- if (this.value.trim() === "") {
78
- showSuggestions("", true, form);
79
- } else if (
80
- suggestions &&
81
- dynamicSuggestionsContainer &&
82
- dynamicSuggestionsContainer.innerHTML.trim() !== ""
83
- ) {
84
- // Only show existing suggestions if there are actual dynamic suggestions populated
85
- suggestions.classList.remove("d-none");
86
- }
87
- });
88
-
89
- const suggestions = form.querySelector(".suggestions");
90
- // If there is no suggestions renderred, do not add event listener to the document
91
- if (suggestions) {
92
- // Helper function to determine if suggestions should be hidden on focus change
93
- const shouldHideSuggestions = (newFocusTarget) => {
94
- if (!newFocusTarget) return true;
95
-
96
- const isFocusInsideInput =
97
- searchInput.contains(newFocusTarget) ||
98
- searchInput === newFocusTarget;
99
- const isFocusInsideSuggestions =
100
- suggestions.contains(newFocusTarget);
101
-
102
- return !isFocusInsideInput && !isFocusInsideSuggestions;
103
- };
104
-
105
- // Handle focusout event for keyboard accessibility
106
- const handleFocusOut = (event) => {
107
- const newFocusTarget = event.relatedTarget;
108
-
109
- if (shouldHideSuggestions(newFocusTarget)) {
110
- suggestions.classList.add("d-none");
111
- }
112
- };
113
-
114
- // Attach focusout event listener to search input
115
- searchInput.addEventListener("focusout", handleFocusOut);
116
-
117
- // Attach focusout event listener to suggestions container
118
- suggestions.addEventListener("focusout", handleFocusOut);
119
- } else {
120
- console.warn("Required suggestions elements not found.");
121
- }
122
-
123
71
  // Attach event listener to form submit
124
72
  form.addEventListener("submit", function (event) {
125
73
  event.preventDefault();
@@ -129,9 +77,9 @@ window.addEventListener("DOMContentLoaded", () => {
129
77
  }
130
78
  });
131
79
 
132
- //Header
133
- // Get the <header> element
80
+ //Header - get the <header> element
134
81
  let header = document.querySelector("header");
82
+
135
83
  if (header) {
136
84
  // Get the current page URL without query string parameters
137
85
  let url = window.location.origin + window.location.pathname;
@@ -1,432 +0,0 @@
1
- // Formcheck.stories.js
2
- import { Formcheck } from './Formcheck.js';
3
-
4
- import radiodata from './formcheck.radio.data.json';
5
- import checkboxdata from './formcheck.checkbox.data.json';
6
-
7
- export default {
8
- tags: ['autodocs'],
9
- title: 'Components/Forms/Radio',
10
- render: (args) => {
11
- return `${new Formcheck(args).html}`
12
- },
13
- //https://storybook.js.org/docs/api/arg-types
14
- argTypes: {
15
- },
16
-
17
-
18
- };
19
-
20
- // Default story for Formcheck component
21
- export const Default = {
22
- args: {...radiodata},
23
- parameters: {
24
- controls: { include: `listitems` },
25
- },
26
- };
27
-
28
- export const RadioDark = {
29
- args: {...radiodata},
30
- parameters: {
31
- backgrounds: {
32
- default: 'Dark',
33
- values: [
34
- { name: 'Dark', value: 'var(--qld-sapphire-blue)' },
35
- ],
36
- },
37
- },
38
- decorators: [
39
- (Story) => {
40
- return `
41
- <div class="dark">
42
- ${Story()}
43
- </div>
44
- `;
45
- },
46
- ],
47
- };
48
-
49
- export const Checkbox = {
50
- title: 'Components/Forms/Checkbox',
51
- args: {...checkboxdata},
52
- };
53
-
54
- export const CheckboxDark = {
55
-
56
- args: {...checkboxdata},
57
- parameters: {
58
- backgrounds: {
59
- default: 'Dark',
60
- values: [
61
- { name: 'Dark', value: 'var(--qld-sapphire-blue)' },
62
- ],
63
- },
64
- },
65
- decorators: [
66
- (Story) => {
67
- return `
68
- <div class="dark">
69
- ${Story()}
70
- </div>
71
- `;
72
- },
73
- ],
74
- };
75
-
76
- export const RadioSmall = {
77
-
78
- args: {...radiodata, id: "radioSmall"},
79
- decorators: [
80
- (Story) => {
81
- return `
82
- <div class="small">
83
- ${Story()}
84
- </div>
85
- `;
86
- },
87
- ],
88
- };
89
-
90
- export const RadioSmallDark = {
91
-
92
- args: {...radiodata, id: "radioSmallDark"},
93
- parameters: {
94
- backgrounds: {
95
- default: 'Dark',
96
- values: [
97
- { name: 'Dark', value: 'var(--qld-sapphire-blue)' },
98
- ],
99
- },
100
- },
101
- decorators: [
102
- (Story) => {
103
- return `
104
- <div class="dark"><div class="small">
105
- ${Story()}
106
- </div></div>
107
- `;
108
- },
109
- ],
110
- };
111
-
112
- export const CheckboxSmall = {
113
- args: {...checkboxdata, id: "checkboxSmall"},
114
- decorators: [
115
- (Story) => {
116
- return `
117
- <div class="small">
118
- ${Story()}
119
- </div>
120
- `;
121
- },
122
- ],
123
- };
124
-
125
- export const CheckboxSmallDark = {
126
- args: {...checkboxdata, id: "checkboxSmallDark"},
127
- parameters: {
128
- backgrounds: {
129
- default: 'Dark',
130
- values: [
131
- { name: 'Dark', value: 'var(--qld-sapphire-blue)' },
132
- ],
133
- },
134
- },
135
- decorators: [
136
- (Story) => {
137
- return `
138
- <div class="dark">
139
- <div class="small">
140
- ${Story()}
141
- </div>
142
- </div>
143
- `;
144
- },
145
- ],
146
- };
147
-
148
- export const RadioValid = {
149
- args: {...radiodata, id: "radioValid"},
150
- render: (args) => {
151
- return `
152
- <div class="valid">${new Formcheck(args).html}</div>
153
- `
154
- },
155
- }
156
-
157
- export const RadioValidSmall = {
158
- args: {...radiodata, id: "radioValidSmall"},
159
- render: (args) => {
160
- return `
161
- <div class="small"><div class="valid">${new Formcheck(args).html}</div></div>
162
- `
163
- },
164
- }
165
-
166
- export const RadioValidDark = {
167
- args: {...radiodata, id: "radioValidDark"},
168
- render: (args) => {
169
- return `
170
- <div class="dark">
171
- <div class="valid">${new Formcheck(args).html}</div></div>
172
- `
173
- },
174
- parameters: {
175
- backgrounds: {
176
- default: 'Dark',
177
- values: [
178
- { name: 'Dark', value: 'var(--qld-sapphire-blue)' },
179
- ],
180
- },
181
- },
182
- decorators: [
183
- (Story) => {
184
- return `
185
- <div class="dark"><div class="valid">
186
- ${Story()}
187
- </div></div>
188
- `;
189
- },
190
- ],
191
- }
192
-
193
- export const RadioValidSmallDark = {
194
- args: {...radiodata, id: "radioValidSmallDark"},
195
- render: (args) => {
196
- return `
197
- <div class="dark">
198
- <div class="valid">${new Formcheck(args).html}</div></div>
199
- `
200
- },
201
- parameters: {
202
- backgrounds: {
203
- default: 'Dark',
204
- values: [
205
- { name: 'Dark', value: 'var(--qld-sapphire-blue)' },
206
- ],
207
- },
208
- },
209
- decorators: [
210
- (Story) => {
211
- return `
212
- <div class="dark"><div class="small"><div class="valid">
213
- ${Story()}
214
- </div></div></div>
215
- `;
216
- },
217
- ],
218
- }
219
-
220
- export const CheckboxValid = {
221
- args: {...checkboxdata, id: "checkboxValid"},
222
- render: (args) => {
223
- return `
224
- <div class="valid">${new Formcheck(args).html}</div>
225
- `
226
- },
227
- }
228
-
229
- export const CheckboxValidSmall = {
230
- args: {...checkboxdata, id: "checkboxValidSmall"},
231
- render: (args) => {
232
- return `
233
- <div class="small"><div class="valid">${new Formcheck(args).html}</div></div>
234
- `
235
- },
236
- }
237
-
238
- export const CheckboxValidDark = {
239
- args: {...checkboxdata, id: "checkboxValidDark"},
240
- render: (args) => {
241
- return `
242
- <div class="dark">
243
- <div class="valid">${new Formcheck(args).html}</div></div>
244
- `
245
- },
246
- parameters: {
247
- backgrounds: {
248
- default: 'Dark',
249
- values: [
250
- { name: 'Dark', value: 'var(--qld-sapphire-blue)' },
251
- ],
252
- },
253
- },
254
- decorators: [
255
- (Story) => {
256
- return `
257
- <div class="dark"><div class="valid">
258
- ${Story()}
259
- </div></div>
260
- `;
261
- },
262
- ],
263
- }
264
-
265
- export const CheckboxValidSmallDark = {
266
- args: {...checkboxdata, id: "checkboxValidSmallDark"},
267
- render: (args) => {
268
- return `
269
- <div class="dark">
270
- <div class="valid">${new Formcheck(args).html}</div></div>
271
- `
272
- },
273
- parameters: {
274
- backgrounds: {
275
- default: 'Dark',
276
- values: [
277
- { name: 'Dark', value: 'var(--qld-sapphire-blue)' },
278
- ],
279
- },
280
- },
281
- decorators: [
282
- (Story) => {
283
- return `
284
- <div class="dark"><div class="small"><div class="valid">
285
- ${Story()}
286
- </div></div></div>
287
- `;
288
- },
289
- ],
290
- }
291
-
292
- export const RadioInvalid = {
293
- args: {...radiodata, id: "radioInvalid"},
294
- render: (args) => {
295
- return `
296
- <div class="invalid">${new Formcheck(args).html}</div>
297
- `
298
- },
299
- }
300
-
301
- export const RadioInvalidSmall = {
302
- args: {...radiodata, id: "radioInvalidSmall"},
303
- render: (args) => {
304
- return `
305
- <div class="small"><div class="invalid">${new Formcheck(args).html}</div></div>
306
- `
307
- },
308
- }
309
- export const RadioInvalidDark = {
310
- args: {...radiodata, id: "radioInvalidDark"},
311
- render: (args) => {
312
- return `
313
- <div class="invalid"><div class="dark">${new Formcheck(args).html}</div></div>
314
- `
315
- },
316
- parameters: {
317
- backgrounds: {
318
- default: 'Dark',
319
- values: [
320
- { name: 'Dark', value: 'var(--qld-sapphire-blue)' },
321
- ],
322
- },
323
- },
324
- decorators: [
325
- (Story) => {
326
- return `
327
- <div class="small">
328
- ${Story()}
329
- </div>
330
- `;
331
- },
332
- ],
333
- }
334
-
335
- export const RadioInvalidSmallDark = {
336
- args: {...radiodata, id: "radioInvalidSmallDark"},
337
- render: (args) => {
338
- return `
339
- <div class="dark">
340
- <div class="invalid">${new Formcheck(args).html}</div></div>
341
- `
342
- },
343
- parameters: {
344
- backgrounds: {
345
- default: 'Dark',
346
- values: [
347
- { name: 'Dark', value: 'var(--qld-sapphire-blue)' },
348
- ],
349
- },
350
- },
351
- decorators: [
352
- (Story) => {
353
- return `
354
- <div class="dark"><div class="small"><div class="invalid">
355
- ${Story()}
356
- </div></div></div>
357
- `;
358
- },
359
- ],
360
- }
361
-
362
- export const CheckboxInvalid = {
363
- args: {...checkboxdata, id: "checkboxInvalid"},
364
- render: (args) => {
365
- return `
366
- <div class="invalid">${new Formcheck(args).html}</div>
367
- `
368
- },
369
- }
370
-
371
- export const CheckboxInvalidSmall = {
372
- args: {...checkboxdata, id: "checkboxInvalidSmall"},
373
- render: (args) => {
374
- return `
375
- <div class="small"><div class="invalid">${new Formcheck(args).html}</div></div>
376
- `
377
- },
378
- }
379
-
380
- export const CheckboxInvalidDark = {
381
- args: {...checkboxdata, id: "checkboxInvalidDark"},
382
- render: (args) => {
383
- return `
384
- <div class="dark">
385
- <div class="invalid">${new Formcheck(args).html}</div></div>
386
- `
387
- },
388
- parameters: {
389
- backgrounds: {
390
- default: 'Dark',
391
- values: [
392
- { name: 'Dark', value: 'var(--qld-sapphire-blue)' },
393
- ],
394
- },
395
- },
396
- decorators: [
397
- (Story) => {
398
- return `
399
- <div class="dark"><div class="invalid">
400
- ${Story()}
401
- </div></div>
402
- `;
403
- },
404
- ],
405
- }
406
-
407
- export const CheckboxInvalidSmallDark = {
408
- args: {...checkboxdata, id: "checkboxInvalidSmallDark"},
409
- render: (args) => {
410
- return `
411
- <div class="dark">
412
- <div class="invalid">${new Formcheck(args).html}</div></div>
413
- `
414
- },
415
- parameters: {
416
- backgrounds: {
417
- default: 'Dark',
418
- values: [
419
- { name: 'Dark', value: 'var(--qld-sapphire-blue)' },
420
- ],
421
- },
422
- },
423
- decorators: [
424
- (Story) => {
425
- return `
426
- <div class="dark"><div class="small"><div class="invalid">
427
- ${Story()}
428
- </div></div></div>
429
- `;
430
- },
431
- ],
432
- }