@qld-gov-au/qgds-bootstrap5 2.0.12 → 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 (73) hide show
  1. package/.esbuild/plugins/qgds-plugin-generate-icon-assets.js +31 -24
  2. package/dist/assets/components/bs5/button/button.hbs +1 -1
  3. package/dist/assets/components/bs5/footer/customLinks.hbs +1 -1
  4. package/dist/assets/components/bs5/footer/followLinks.hbs +1 -1
  5. package/dist/assets/components/bs5/head/head.hbs +1 -1
  6. package/dist/assets/components/bs5/inpageAlert/inpageAlert.hbs +10 -2
  7. package/dist/assets/components/bs5/searchInput/searchInput.hbs +9 -7
  8. package/dist/assets/css/qld.bootstrap.css +2 -2
  9. package/dist/assets/css/qld.bootstrap.css.map +3 -3
  10. package/dist/assets/css/qld.bootstrap.legacy.css +2 -2
  11. package/dist/assets/css/qld.bootstrap.legacy.css.map +3 -3
  12. package/dist/assets/img/icons-sprite.svg +24 -24
  13. package/dist/assets/js/handlebars.helpers.bundle.js +1 -1
  14. package/dist/assets/js/handlebars.init.min.js +33 -23
  15. package/dist/assets/js/handlebars.init.min.js.map +2 -2
  16. package/dist/assets/js/handlebars.partials.js +33 -23
  17. package/dist/assets/js/handlebars.partials.js.map +2 -2
  18. package/dist/assets/js/qld.bootstrap.min.js +6 -6
  19. package/dist/assets/js/qld.bootstrap.min.js.map +4 -4
  20. package/dist/assets/node/handlebars.init.min.js +14 -12
  21. package/dist/assets/node/handlebars.init.min.js.map +2 -2
  22. package/dist/components/bs5/button/button.hbs +1 -1
  23. package/dist/components/bs5/footer/customLinks.hbs +1 -1
  24. package/dist/components/bs5/footer/followLinks.hbs +1 -1
  25. package/dist/components/bs5/head/head.hbs +1 -1
  26. package/dist/components/bs5/inpageAlert/inpageAlert.hbs +10 -2
  27. package/dist/components/bs5/searchInput/searchInput.hbs +9 -7
  28. package/dist/package.json +1 -1
  29. package/dist/sample-data/footer/footer.data.json +3 -0
  30. package/dist/sample-data/inpageAlert/inpageAlert.data.json +1 -1
  31. package/dist/sample-data/searchInput/searchInput.data.json +1 -0
  32. package/package.json +1 -1
  33. package/src/components/bs5/breadcrumbs/breadcrumbs.scss +3 -4
  34. package/src/components/bs5/button/Button.js +32 -6
  35. package/src/components/bs5/button/button.hbs +1 -1
  36. package/src/components/bs5/button/button.scss +0 -5
  37. package/src/components/bs5/card/card.scss +2 -0
  38. package/src/components/bs5/footer/customLinks.hbs +1 -1
  39. package/src/components/bs5/footer/followLinks.hbs +1 -1
  40. package/src/components/bs5/footer/footer.data.json +3 -0
  41. package/src/components/bs5/formcheck/_form-variables.scss +36 -0
  42. package/src/components/bs5/formcheck/formcheck.scss +54 -14
  43. package/src/components/bs5/header/header.scss +1 -2
  44. package/src/components/bs5/icons/_icons.list.js +7 -7
  45. package/src/components/bs5/icons/_icons.list.scss +113 -112
  46. package/src/components/bs5/icons/_icons.variables.scss +7 -6
  47. package/src/components/bs5/icons/icons.scss +2 -1
  48. package/src/components/bs5/inpageAlert/inpageAlert.data.json +1 -1
  49. package/src/components/bs5/inpageAlert/inpageAlert.hbs +10 -2
  50. package/src/components/bs5/inpageAlert/inpageAlert.scss +49 -51
  51. package/src/components/bs5/inpageAlert/inpageAlert.stories.js +54 -3
  52. package/src/components/bs5/pageLayout/PaletteShowcase.stories.js +4 -3
  53. package/src/components/bs5/searchInput/__snapshots__/searchInput.test.js.snap +14 -14
  54. package/src/components/bs5/searchInput/search.functions.js +64 -69
  55. package/src/components/bs5/searchInput/searchInput.data.json +1 -0
  56. package/src/components/bs5/searchInput/searchInput.hbs +9 -7
  57. package/src/components/bs5/searchInput/searchInput.scss +91 -38
  58. package/src/components/bs5/searchInput/searchInput.test.js +91 -119
  59. package/src/components/bs5/skiplinks/skipLinks.scss +12 -4
  60. package/src/components/common/focus-styles/focusStyles.mdx +20 -0
  61. package/src/components/common/focus-styles/focusStyles.stories.js +58 -0
  62. package/src/css/functions/_index.scss +3 -0
  63. package/src/css/functions/color-icon.scss +31 -0
  64. package/src/css/functions/string-replace.scss +49 -0
  65. package/src/css/functions/svg-encode.scss +22 -0
  66. package/src/css/mixins/make-icon.scss +1 -1
  67. package/src/css/mixins/make-link.scss +13 -10
  68. package/src/css/qld-palettes.scss +20 -12
  69. package/src/css/qld-type.scss +5 -1
  70. package/src/css/qld-utilities.scss +9 -1
  71. package/src/css/qld-variables.scss +1 -1
  72. package/src/img/icons-sprite.svg +24 -24
  73. package/src/js/qld.bootstrap.js +3 -55
@@ -4,7 +4,7 @@ import log from "../helpers/logger.js";
4
4
  import svgToMiniDataURI from "mini-svg-data-uri";
5
5
  import { parse } from "node-html-parser";
6
6
 
7
- const PREFIX_QGDS = 'qgds-icon-';
7
+ const PREFIX_QGDS = "qgds-icon-";
8
8
 
9
9
  /**
10
10
  * Generate CSS variables of icons from SVG files.
@@ -13,19 +13,18 @@ const PREFIX_QGDS = 'qgds-icon-';
13
13
  * @param {string} outputIconNames - Output SASS file for the generated icon names - to build icon utility classes
14
14
  * @param {string} outputIconJs - Output JS file for the generated icon names - to be used in Storybook
15
15
  */
16
- export function QGDSgenerateIconAssetsPlugin(inputDir = "./src/img/icons",
16
+ export function QGDSgenerateIconAssetsPlugin(
17
+ inputDir = "./src/img/icons",
17
18
  outputIconSprite = "./src/img/icons-sprite.svg",
18
- outputIconVars = "./src/components/bs5/icons/_icons.variables.scss",
19
- outputIconNames = "./src/components/bs5/icons/_icons.list.scss",
20
- outputIconJs = "./src/components/bs5/icons/_icons.list.js") {
21
-
19
+ outputIconVars = "./src/components/bs5/icons/_icons.variables.scss",
20
+ outputIconNames = "./src/components/bs5/icons/_icons.list.scss",
21
+ outputIconJs = "./src/components/bs5/icons/_icons.list.js",
22
+ ) {
22
23
  return {
23
24
  name: "qgds-generate-icon-variables",
24
25
 
25
26
  setup(build) {
26
-
27
27
  const regenerate = () => {
28
-
29
28
  log("yellow", "\n Start generating icons assets... \n");
30
29
 
31
30
  if (!fs.existsSync(inputDir)) {
@@ -33,7 +32,9 @@ export function QGDSgenerateIconAssetsPlugin(inputDir = "./src/img/icons",
33
32
  return;
34
33
  }
35
34
 
36
- const icons = fs.readdirSync(inputDir).filter((file) => file.endsWith(".svg"));
35
+ const icons = fs
36
+ .readdirSync(inputDir)
37
+ .filter((file) => file.endsWith(".svg"));
37
38
 
38
39
  if (icons.length === 0) {
39
40
  log("red", `SVG files not found in ${inputDir}`);
@@ -41,8 +42,8 @@ export function QGDSgenerateIconAssetsPlugin(inputDir = "./src/img/icons",
41
42
  }
42
43
 
43
44
  let spriteContent = `<svg xmlns="http://www.w3.org/2000/svg" role="img">\n`;
44
- let cssVariables = `:root {\n`;
45
- let sassVariables = `$icon-names: (\n`;
45
+ let cssVariables = `// This file is autogenerated. Do not edit directly!\n:root {\n`;
46
+ let sassVariables = `// This file is autogenerated. Do not edit directly!\n$icon-names: (\n`;
46
47
  let jsVariables = [];
47
48
 
48
49
  for (const file of icons) {
@@ -62,7 +63,9 @@ export function QGDSgenerateIconAssetsPlugin(inputDir = "./src/img/icons",
62
63
  }
63
64
 
64
65
  // Sanitise the name to avoid issues with special characters (and space) on filename
65
- const sanitisedName = name.replace(/[^a-zA-Z0-9\-_]/g, '-').toLowerCase();
66
+ const sanitisedName = name
67
+ .replace(/[^a-zA-Z0-9\-_]/g, "-")
68
+ .toLowerCase();
66
69
  if (sanitisedName !== name) {
67
70
  log("yellow", ` Renaming icon: "${name}" to "${sanitisedName}"`);
68
71
  }
@@ -72,7 +75,7 @@ export function QGDSgenerateIconAssetsPlugin(inputDir = "./src/img/icons",
72
75
 
73
76
  cssVariables += ` --${PREFIX_QGDS}${sanitisedName}: url("${dataUri}");\n`;
74
77
 
75
- sassVariables += ` ${sanitisedName},\n`;
78
+ sassVariables += ` ${sanitisedName}: '${svgContent.replace(/\n|\r/g, "")}',\n`;
76
79
 
77
80
  jsVariables.push(sanitisedName);
78
81
  }
@@ -83,21 +86,25 @@ export function QGDSgenerateIconAssetsPlugin(inputDir = "./src/img/icons",
83
86
  fs.writeFileSync(outputIconSprite, spriteContent);
84
87
  fs.writeFileSync(outputIconVars, cssVariables);
85
88
  fs.writeFileSync(outputIconNames, sassVariables);
86
- fs.writeFileSync(outputIconJs, `export default ${JSON.stringify(jsVariables, null, 2)};\n`);
87
-
88
- log("magenta", `Successfully generated icons assets:
89
- - Sprite file ${outputIconSprite}
90
- - CSS variables ${outputIconVars}
91
- - SASS names ${outputIconNames}
92
- - JS names ${outputIconJs}
93
- \n\n`);
94
-
89
+ fs.writeFileSync(
90
+ outputIconJs,
91
+ `export default ${JSON.stringify(jsVariables, null, 2)};\n`,
92
+ );
93
+
94
+ log(
95
+ "magenta",
96
+ `Successfully generated icons assets:
97
+ - Sprite file ${outputIconSprite}
98
+ - CSS variables ${outputIconVars}
99
+ - SASS names ${outputIconNames}
100
+ - JS names ${outputIconJs}
101
+ \n\n`,
102
+ );
95
103
  };
96
104
 
97
105
  build.onStart(() => {
98
106
  regenerate();
99
107
  });
100
-
101
108
  },
102
109
  };
103
- }
110
+ }
@@ -10,7 +10,7 @@
10
10
 
11
11
  {{#unless islink}}
12
12
 
13
- <button class="btn {{variantClass}} {{#if isprogress}}btn-progress{{/if}} {{label}}" onclick="{{{onclick}}}" {{#if isdisabled}}disabled{{/if}} {{#if isprogress}}disabled aria-live="polite"{{/if}} {{#if arialabel}}aria-label="{{arialabel}}"{{/if}} {{{dataatts}}} {{#if progressLabel}}data-progress-label="{{progressLabel}}"{{/if}}>
13
+ <button class="btn {{variantClass}} {{#if isprogress}}btn-progress{{/if}}" onclick="{{{onclick}}}" {{#if isdisabled}}disabled{{/if}} {{#if isprogress}}disabled aria-live="polite"{{/if}} {{#if arialabel}}aria-label="{{arialabel}}"{{/if}} {{{dataatts}}} {{#if progressLabel}}data-progress-label="{{progressLabel}}"{{/if}}>
14
14
  {{#if isprogress}}
15
15
  {{~>progressSpinner~}}
16
16
  {{else}}
@@ -1,5 +1,5 @@
1
1
  {{#if customLinks }}
2
- <ul class="nav footer-link-list footer-link-list--custom flex-column">
2
+ <ul class="nav footer-link-list footer-link-list--custom flex-column">
3
3
  {{#each customLinks }}
4
4
  <li><a class="nav-link" href="{{ link }}" {{#if target }} target="_blank" {{/if}}>{{ label }}</a></li>
5
5
  {{/each }}
@@ -6,7 +6,7 @@
6
6
  <span class="qld-icon qld-icon-md qld-icon-{{icon}} d-lg-none" aria-hidden="true"></span>
7
7
  <span class="qld-icon qld-icon-sm qld-icon-{{icon}} d-none d-lg-block" aria-hidden="true"></span>
8
8
  <span class="nav-link-label d-none d-lg-block">{{ label }}</span>
9
- <span class="sr-only">{{ label }}</span>
9
+ <span class="sr-only">{{isdefined accessibleLabel label}}</span>
10
10
  </a>
11
11
  </li>
12
12
  {{/each }}
@@ -1,5 +1,5 @@
1
1
 
2
- <!-- VERSION_DETAILS={"project_id":"@qld-gov-au/qgds-bootstrap5","version":"2.0.12","branch":"HEAD","tag":"v2.0.12","commit":"8a144c9ab3a88493219cbc779eb61a0ca8b8d059","majorVersion":"v2"} -->
2
+ <!-- VERSION_DETAILS={"project_id":"@qld-gov-au/qgds-bootstrap5","version":"2.1.0","branch":"HEAD","tag":"v2.1.0","commit":"1610f625e3e2ba5c9420ba3ef0ebb53ed35820f6","majorVersion":"v2"} -->
3
3
 
4
4
  {{! Select environment, used verbatium if not using predefind key
5
5
  cdn := PROD|STAGING|BETA|TEST|DEV|???
@@ -1,5 +1,13 @@
1
- <div class="alert {{variantClass}} {{customClass}}" role="alert"
2
- {{#if alertType}}aria-label="{{alertType}}"{{/if}}>
1
+ <div class="alert {{variantClass}} {{customClass}}" role="alert"
2
+ {{#if ariaLabel}}
3
+ aria-label="{{ ariaLabel }}"
4
+ {{else}}
5
+ {{#ifCond variantClass "==" "alert-info"}}aria-label="Information alert"{{/ifCond}}
6
+ {{#ifCond variantClass "==" "alert-success"}}aria-label="Success alert"{{/ifCond}}
7
+ {{#ifCond variantClass "==" "alert-error"}}aria-label="Error alert"{{/ifCond}}
8
+ {{#ifCond variantClass "==" "alert-warning"}}aria-label="Warning alert"{{/ifCond}}
9
+ {{/if}}
10
+ >
3
11
  {{#if heading}}
4
12
  {{#if headingTag}}
5
13
  <{{headingTag}} class="alert-heading">{{{ heading }}}</{{headingTag}}>
@@ -3,38 +3,40 @@
3
3
  -->
4
4
  <div class="qld-search-input {{customClass}}">
5
5
  <input id="{{ inputID }}" name="{{ inputName }}" class="form-control" type="text" autocomplete="off"
6
- aria-label="{{ ariaLabel }}" {{#each tags}} data-{{@key}}="{{this}}" {{/each}} />
6
+ aria-label="{{ ariaLabel }}" {{#each tags}} data-{{@key}}="{{this}}" {{/each}} placeholder="{{placeholder}}" />
7
7
  <button class="btn btn-primary" type="{{ buttonType }}" id="{{ buttonID }}">
8
8
  <span class="btn-icon"></span>
9
9
  <span class="btn-label">{{ buttonLabel }}</span>
10
10
  </button>
11
11
  {{#ifCond hasDynamicSuggestions '||' hasDefaultSuggestions}}
12
- <div class="suggestions suggestions__group d-none default">
12
+
13
+ <div class="suggestions suggestions__group default">
13
14
  {{#if hasDefaultSuggestions}}
14
15
  <div class="default-suggestions">
15
16
  <div class="suggestions-category">
16
17
  <strong class="suggestions-category-label d-block">{{defaultSuggestions.popularServicesTitle}}</strong>
17
18
  <ul>
18
19
  {{#each defaultSuggestions.popularServices}}
19
- <li><a href="{{link}}">{{title}}</a></li>
20
+ <li><a tabindex="0" href="{{link}}">{{title}}</a></li>
20
21
  {{/each}}
21
22
  {{#if defaultSuggestions.popularServicesLink}}
22
- <li><a href="{{defaultSuggestions.popularServicesLink.href}}" class="view-more">{{#if defaultSuggestions.popularServicesLink.label}}{{defaultSuggestions.popularServicesLink.label}}{{else}}View More{{/if}}</a></li>
23
+ <li><a tabindex="0" href="{{defaultSuggestions.popularServicesLink.href}}" class="view-more">{{#if defaultSuggestions.popularServicesLink.label}}{{defaultSuggestions.popularServicesLink.label}}{{else}}View More{{/if}}</a></li>
23
24
  {{/if}}
24
25
  </ul>
25
26
  </div>
26
-
27
+ {{#if defaultSuggestions.categories}}
27
28
  <div class="suggestions-category">
28
29
  <strong class="suggestions-category-label d-block">{{defaultSuggestions.categoriesTitle}}</strong>
29
30
  <ul>
30
31
  {{#each defaultSuggestions.categories}}
31
- <li><a href="{{link}}">{{title}}</a></li>
32
+ <li><a tabindex="0"href="{{link}}">{{title}}</a></li>
32
33
  {{/each}}
33
34
  {{#if defaultSuggestions.categoriesLink}}
34
- <li><a href="{{defaultSuggestions.categoriesLink.href}}" class="view-more">{{#if defaultSuggestions.categoriesLink.label}}{{defaultSuggestions.categoriesLink.label}}{{else}}View More{{/if}}</a></li>
35
+ <li><a tabindex="0" href="{{defaultSuggestions.categoriesLink.href}}" class="view-more">{{#if defaultSuggestions.categoriesLink.label}}{{defaultSuggestions.categoriesLink.label}}{{else}}View More{{/if}}</a></li>
35
36
  {{/if}}
36
37
  </ul>
37
38
  </div>
39
+ {{/if}}
38
40
  </div>
39
41
  {{/if}}
40
42
  {{#if hasDynamicSuggestions}}