@qld-gov-au/qgds-bootstrap5 1.0.19 → 1.0.21
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/.esbuild/plugins/qgds-plugin-copy-assets.js +4 -3
- package/.esbuild/plugins/qgds-plugin-handlebar-partial-builder.js +91 -0
- package/.esbuild/plugins/qgds-plugin-version.js +3 -2
- package/.storybook/preview.js +1 -1
- package/dist/assets/css/qld.bootstrap.css +1 -1
- package/dist/assets/css/qld.bootstrap.css.map +2 -2
- package/dist/assets/js/handlebars.helpers.bundle.js +1 -1
- package/dist/assets/js/handlebars.helpers.bundle.js.map +3 -3
- package/dist/assets/js/handlebars.helpers.js +57 -11
- package/dist/assets/js/handlebars.init.min.js +2637 -0
- package/dist/assets/js/handlebars.init.min.js.map +7 -0
- package/dist/assets/js/qld.bootstrap.min.js +3 -3
- package/dist/assets/js/qld.bootstrap.min.js.map +2 -2
- package/dist/components/bs5/breadcumbsWrapper/breadcrumbsWrapper.hbs +11 -0
- package/dist/components/bs5/breadcumbsWrapper/breadcrumbsWrapper.test.hbs +7 -0
- package/dist/components/bs5/contentFooter/contentFooter.hbs +4 -0
- package/dist/components/bs5/contentFooterWrapper/contentFooterWrapper.hbs +5 -0
- package/dist/components/bs5/contentFooterWrapper/contentFooterWrapper.test.hbs +13 -0
- package/dist/components/bs5/contentWrapper/contentWrapper.hbs +5 -0
- package/dist/components/bs5/contentWrapper/contentWrapper.test.hbs +12 -0
- package/dist/components/bs5/footer/footer.hbs +88 -24
- package/dist/components/bs5/fullPageWrapper/fullPage.hbs +16 -0
- package/dist/components/bs5/fullPageWrapper/fullPage.test.hbs +4 -0
- package/dist/components/bs5/head/head.hbs +1 -1
- package/dist/components/bs5/mainContainerWrapper/mainContainerWrapper.hbs +28 -0
- package/dist/components/bs5/mainContainerWrapper/mainContainerWrapper.test.hbs +6 -0
- package/dist/components/bs5/metaDcTerms/metaDcTerms.hbs +17 -0
- package/dist/components/bs5/metaOpenGraph/metaOpenGraph.hbs +18 -0
- package/dist/components/bs5/searchInput/searchInput.hbs +2 -2
- package/dist/components/bs5/sidenavWrapper/sidenavWrapper.hbs +4 -0
- package/dist/components/bs5/sidenavWrapper/sidenavWrapper.test.hbs +15 -0
- package/dist/components/bs5/video/video.hbs +3 -1
- package/dist/components/handlebars.helpers.js +57 -11
- package/dist/components/handlebars.init.js +31 -3
- package/dist/components/handlebars.init.min.js +2637 -0
- package/dist/components/handlebars.init.min.js.map +7 -0
- package/dist/components/handlebars.partials.js +96 -0
- package/dist/sample-data/contentFooter/contentFooter.data.json +3 -0
- package/dist/sample-data/contentWrapper/contentWrapper.data.json +3 -0
- package/dist/sample-data/footer/footer-usingDefaults.data.json +3 -0
- package/dist/sample-data/footer/footer.data.json +31 -74
- package/dist/sample-data/metaDcTerms/MetaDcTerms.data.json +12 -0
- package/dist/sample-data/metaOpenGraph/MetaOpenGraph.data.json +14 -0
- package/esbuild.js +9 -3
- package/package.json +17 -16
- package/src/components/bs5/blockquote/blockquote.scss +31 -28
- package/src/components/bs5/breadcrumbs/breadcrumb.functions.js +1 -1
- package/src/components/bs5/breadcrumbs/breadcrumbs.scss +101 -83
- package/src/components/bs5/breadcumbsWrapper/breadcrumbsWrapper.hbs +11 -0
- package/src/components/bs5/breadcumbsWrapper/breadcrumbsWrapper.stories.js +37 -0
- package/src/components/bs5/breadcumbsWrapper/breadcrumbsWrapper.test.hbs +7 -0
- package/src/components/bs5/breadcumbsWrapper/breadcrumbsWrapper.test.js +13 -0
- package/src/components/bs5/breadcumbsWrapper/manifest.json +0 -0
- package/src/components/bs5/contentFooter/contentFooter.data.json +3 -0
- package/src/components/bs5/contentFooter/contentFooter.hbs +4 -0
- package/src/components/bs5/contentFooter/contentFooter.js +10 -0
- package/src/components/bs5/contentFooter/contentFooter.stories.js +59 -0
- package/src/components/bs5/contentFooter/manifest.json +0 -0
- package/src/components/bs5/contentFooterWrapper/contentFooterWrapper.hbs +5 -0
- package/src/components/bs5/contentFooterWrapper/contentFooterWrapper.stories.js +39 -0
- package/src/components/bs5/contentFooterWrapper/contentFooterWrapper.test.hbs +13 -0
- package/src/components/bs5/contentFooterWrapper/contentFooterWrapper.test.js +13 -0
- package/src/components/bs5/contentFooterWrapper/manifest.json +0 -0
- package/src/components/bs5/contentWrapper/ContentWrapper.test.js +13 -0
- package/src/components/bs5/contentWrapper/contentWrapper.data.json +3 -0
- package/src/components/bs5/contentWrapper/contentWrapper.hbs +5 -0
- package/src/components/bs5/contentWrapper/contentWrapper.stories.js +68 -0
- package/src/components/bs5/contentWrapper/contentWrapper.test.hbs +12 -0
- package/src/components/bs5/contentWrapper/manifest.json +0 -0
- package/src/components/bs5/footer/_colours.scss +3 -2
- package/src/components/bs5/footer/_measurements.scss +3 -1
- package/src/components/bs5/footer/footer-usingDefaults.data.json +3 -0
- package/src/components/bs5/footer/footer.data.json +31 -74
- package/src/components/bs5/footer/footer.hbs +88 -24
- package/src/components/bs5/footer/footer.scss +139 -81
- package/src/components/bs5/footer/footer.stories.js +104 -3
- package/src/components/bs5/fullPageWrapper/fullPage.hbs +16 -0
- package/src/components/bs5/fullPageWrapper/fullPage.stories.js +65 -0
- package/src/components/bs5/fullPageWrapper/fullPage.test.hbs +4 -0
- package/src/components/bs5/fullPageWrapper/fullPage.test.js +13 -0
- package/src/components/bs5/fullPageWrapper/manifest.json +0 -0
- package/src/components/bs5/globalAlert/globalAlert.scss +92 -24
- package/src/components/bs5/head/head.stories.js +6 -6
- package/src/components/bs5/mainContainerWrapper/mainContainerWrapper.hbs +28 -0
- package/src/components/bs5/mainContainerWrapper/mainContainerWrapper.stories.js +51 -0
- package/src/components/bs5/mainContainerWrapper/mainContainerWrapper.test.hbs +6 -0
- package/src/components/bs5/mainContainerWrapper/mainContainerWrapper.test.js +13 -0
- package/src/components/bs5/mainContainerWrapper/manifest.json +0 -0
- package/src/components/bs5/metaDcTerms/MetaDcTerms.data.json +12 -0
- package/src/components/bs5/metaDcTerms/MetaDcTerms.js +10 -0
- package/src/components/bs5/metaDcTerms/manifest.json +0 -0
- package/src/components/bs5/metaDcTerms/metaDcTerms.hbs +17 -0
- package/src/components/bs5/metaDcTerms/metaDcTerms.stories.js +38 -0
- package/src/components/bs5/metaOpenGraph/MetaOpenGraph.data.json +14 -0
- package/src/components/bs5/metaOpenGraph/MetaOpenGraph.js +10 -0
- package/src/components/bs5/metaOpenGraph/manifest.json +0 -0
- package/src/components/bs5/metaOpenGraph/metaOpenGraph.hbs +18 -0
- package/src/components/bs5/metaOpenGraph/metaOpenGraph.stories.js +38 -0
- package/src/components/bs5/navbar/navbar.scss +2 -2
- package/src/components/bs5/searchInput/search.functions.js +6 -6
- package/src/components/bs5/searchInput/searchInput.hbs +2 -2
- package/src/components/bs5/searchInput/searchInput.scss +17 -7
- package/src/components/bs5/sidenavWrapper/SidenavWrapper.mdx +11 -0
- package/src/components/bs5/sidenavWrapper/SidenavWrapper.test.js +13 -0
- package/src/components/bs5/sidenavWrapper/manifest.json +0 -0
- package/src/components/bs5/sidenavWrapper/sidenavWrapper.hbs +4 -0
- package/src/components/bs5/sidenavWrapper/sidenavWrapper.stories.js +68 -0
- package/src/components/bs5/sidenavWrapper/sidenavWrapper.test.hbs +15 -0
- package/src/components/bs5/tag/tag.scss +1 -1
- package/src/components/bs5/textbox/textInput.scss +2 -2
- package/src/components/bs5/typography/typography.stories.js +9 -0
- package/src/components/bs5/video/video.hbs +3 -1
- package/src/components/common/layout/content.scss +3 -0
- package/src/js/handlebars.helpers.js +57 -11
- package/src/js/handlebars.init.js +31 -3
- package/src/js/handlebars.partials.js +96 -0
- package/src/main.js +1 -1
- package/src/scss/qld-print.scss +22 -4
- package/src/scss/qld-type.scss +32 -3
- package/src/scss/qld-variables.scss +1 -1
- package/src/stories/integration/MainIntegration.js +29 -0
- package/src/stories/integration/MainIntegration.mdx +10 -0
- package/src/stories/integration/breadcrumb.data.json +28 -0
- package/src/stories/integration/content.data.json +3 -0
- package/src/stories/integration/contentFooter.data.json +3 -0
- package/src/stories/integration/footer.data.json +154 -0
- package/src/stories/integration/globalAlert.data.json +9 -0
- package/src/stories/integration/header.data.json +173 -0
- package/src/stories/integration/inpagenav.data.json +26 -0
- package/src/stories/integration/integration.stories.js +145 -0
- package/src/stories/integration/main.hbs +13 -0
- package/src/stories/integration/navigation.data.json +22 -0
- package/src/stories/integration/search.data.json +20 -0
- package/src/stories/integration/sidenav.data.json +88 -0
- package/dist/assets/js/handlebars.init.js +0 -6
- package/dist/components/handlebars.init.bundle.js +0 -23
- package/dist/components/handlebars.init.bundle.js.map +0 -7
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";(()=>{function
|
|
1
|
+
"use strict";(()=>{function u(i){i.registerHelper("contains",function(r,n,t){return r=i.escapeExpression(r),n=i.escapeExpression(n),n.indexOf(r)>-1?t.fn(this):t.inverse(this)}),i.registerHelper("ifCond",function(r,n,t,e){switch(n){case"==":return r==t?e.fn(this):e.inverse(this);case"===":return r===t?e.fn(this):e.inverse(this);case"!=":return r!=t?e.fn(this):e.inverse(this);case"!==":return r!==t?e.fn(this):e.inverse(this);case"<":return r<t?e.fn(this):e.inverse(this);case"<=":return r<=t?e.fn(this):e.inverse(this);case">":return r>t?e.fn(this):e.inverse(this);case">=":return r>=t?e.fn(this):e.inverse(this);case"&&":return r&&t?e.fn(this):e.inverse(this);case"||":return r||t?e.fn(this):e.inverse(this);case"contains":return typeof r=="string"&&typeof t=="string"?r.toLowerCase().indexOf(t.toLowerCase())>=0?e.fn(this):e.inverse(this):e.inverse(this);default:return e.inverse(this)}}),i.registerHelper("isType",function(r,n,t){return r===n?t.fn(this):t.inverse(this)}),i.registerHelper("ifAny",function(...r){let n=r.pop();return r.some(t=>!!t)?n.fn(this):n.inverse(this)}),i.registerHelper("now",function(){return new Date().toISOString()}),i.registerHelper("formatDate",function(r,n,t){let e;if(r&&(e=new Date(r)),isNaN(e)&&n&&(e=new Date(n)),isNaN(e))return"Invalid Date";var a=["January","February","March","April","May","June","July","August","September","October","November","December"],c=e.getDate(),f=a[e.getMonth()],s=e.getFullYear();switch(t){case"YYYY":return`${s}`;case"MMMM YYYY":return`${f} ${s}`;default:return`${c} ${f} ${s}`}}),i.registerHelper("formatDateOrToday",function(r,n){let t=r||new Date().toISOString();return i.helpers.formatDate(r,t,n)})}typeof Handlebars!="undefined"&&u(Handlebars);})();
|
|
2
2
|
//# sourceMappingURL=handlebars.helpers.bundle.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/js/handlebars.helpers.js"],
|
|
4
|
-
"sourcesContent": ["/* global Handlebars */\n
|
|
5
|
-
"mappings": "
|
|
6
|
-
"names": ["handlebarsHelpers", "
|
|
4
|
+
"sourcesContent": ["/* global Handlebars */\n/**\n * Registers Handlebars Helpers\n * @param {Handlebars} handlebars Templating engine\n * @returns {void} Result of the helper operation\n */\n\nexport default function handlebarsHelpers(handlebars) {\n // contains - if first object is in collection (second object) to return true\n handlebars.registerHelper(\"contains\", function (needle, haystack, options) {\n needle = handlebars.escapeExpression(needle);\n haystack = handlebars.escapeExpression(haystack);\n return haystack.indexOf(needle) > -1\n ? options.fn(this)\n : options.inverse(this);\n });\n // ifCond - checks conditions\n handlebars.registerHelper(\"ifCond\", function (v1, operator, v2, options) {\n switch (operator) {\n case \"==\":\n return v1 == v2 ? options.fn(this) : options.inverse(this);\n case \"===\":\n return v1 === v2 ? options.fn(this) : options.inverse(this);\n case \"!=\":\n return v1 != v2 ? options.fn(this) : options.inverse(this);\n case \"!==\":\n return v1 !== v2 ? options.fn(this) : options.inverse(this);\n case \"<\":\n return v1 < v2 ? options.fn(this) : options.inverse(this);\n case \"<=\":\n return v1 <= v2 ? options.fn(this) : options.inverse(this);\n case \">\":\n return v1 > v2 ? options.fn(this) : options.inverse(this);\n case \">=\":\n return v1 >= v2 ? options.fn(this) : options.inverse(this);\n case \"&&\":\n return v1 && v2 ? options.fn(this) : options.inverse(this);\n case \"||\":\n return v1 || v2 ? options.fn(this) : options.inverse(this);\n case \"contains\":\n if (typeof v1 == \"string\" && typeof v2 == \"string\") {\n return v1.toLowerCase().indexOf(v2.toLowerCase()) >= 0\n ? options.fn(this)\n : options.inverse(this);\n } else return options.inverse(this);\n default:\n return options.inverse(this);\n }\n });\n // isType - Checks is expected type\n handlebars.registerHelper('isType', function (value, expected, options) {\n if (value === expected) {\n return options.fn(this); // Render the block if condition is true\n } else {\n return options.inverse(this); // Render the else block if present\n }\n });\n // ifAny - {{{#ifAny variable1 variable2 variable3 variable4 etc}}, if any set then return true\n handlebars.registerHelper('ifAny', function (...args) {\n const options = args.pop(); // The last argument is the options object\n return args.some(arg => !!arg) ? options.fn(this) : options.inverse(this);\n });\n // now - return current timestamp i.e {{now}}\n handlebars.registerHelper('now', function() {\n return new Date().toISOString();\n });\n // formatDate - Format Date, for footer meta data i.e {{formatDate '2023-06-23'}}\n handlebars.registerHelper('formatDate', function(dateString, defaultDate, format) {\n // Use the dateString if provided, otherwise use the defaultDate, otherwise error\n let date;\n if (dateString) {\n date = new Date(dateString);\n }\n if (isNaN(date) && defaultDate) {\n date = new Date(defaultDate);\n }\n\n // Check if the date is valid\n if (isNaN(date)) {\n return 'Invalid Date';\n }\n\n var monthNames = [\"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\", \"August\", \"September\", \"October\", \"November\", \"December\"];\n var day = date.getDate();\n var month = monthNames[date.getMonth()];\n var year = date.getFullYear();\n // Format date based on the format string\n switch (format) {\n case 'YYYY':\n return `${year}`;\n case 'MMMM YYYY':\n return `${month} ${year}`;\n default:\n return `${day} ${month} ${year}`;\n }\n });\n\n // formatDateOrToday - Format Date if passed or today i.e. {{formatDateOrToday '2023-06-23'}} or {{formatDateOrToday}} <!-- This will use the current date -->\n handlebars.registerHelper('formatDateOrToday', function(dateString, format) {\n // Use the current date if dateString is missing or invalid\n const dateToFormat = dateString || new Date().toISOString();\n // Call the formatDate helper with the determined date and format\n return handlebars.helpers.formatDate(dateString, dateToFormat, format);\n });\n}\n\nif(typeof(Handlebars) !== 'undefined') {\n handlebarsHelpers(Handlebars);\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["handlebarsHelpers", "handlebars", "needle", "haystack", "options", "v1", "operator", "v2", "value", "expected", "args", "arg", "dateString", "defaultDate", "format", "date", "monthNames", "day", "month", "year", "dateToFormat"]
|
|
7
7
|
}
|
|
@@ -1,22 +1,21 @@
|
|
|
1
1
|
/* global Handlebars */
|
|
2
|
-
|
|
3
2
|
/**
|
|
4
3
|
* Registers Handlebars Helpers
|
|
5
|
-
* @param {
|
|
4
|
+
* @param {Handlebars} handlebars Templating engine
|
|
6
5
|
* @returns {void} Result of the helper operation
|
|
7
6
|
*/
|
|
8
7
|
|
|
9
|
-
export default function handlebarsHelpers(
|
|
10
|
-
//
|
|
11
|
-
|
|
12
|
-
needle =
|
|
13
|
-
haystack =
|
|
8
|
+
export default function handlebarsHelpers(handlebars) {
|
|
9
|
+
// contains - if first object is in collection (second object) to return true
|
|
10
|
+
handlebars.registerHelper("contains", function (needle, haystack, options) {
|
|
11
|
+
needle = handlebars.escapeExpression(needle);
|
|
12
|
+
haystack = handlebars.escapeExpression(haystack);
|
|
14
13
|
return haystack.indexOf(needle) > -1
|
|
15
14
|
? options.fn(this)
|
|
16
15
|
: options.inverse(this);
|
|
17
16
|
});
|
|
18
|
-
// ifCond - checks conditions
|
|
19
|
-
|
|
17
|
+
// ifCond - checks conditions
|
|
18
|
+
handlebars.registerHelper("ifCond", function (v1, operator, v2, options) {
|
|
20
19
|
switch (operator) {
|
|
21
20
|
case "==":
|
|
22
21
|
return v1 == v2 ? options.fn(this) : options.inverse(this);
|
|
@@ -48,14 +47,61 @@ export default function handlebarsHelpers(Handlebars) {
|
|
|
48
47
|
return options.inverse(this);
|
|
49
48
|
}
|
|
50
49
|
});
|
|
51
|
-
// Checks is expected type
|
|
52
|
-
|
|
50
|
+
// isType - Checks is expected type
|
|
51
|
+
handlebars.registerHelper('isType', function (value, expected, options) {
|
|
53
52
|
if (value === expected) {
|
|
54
53
|
return options.fn(this); // Render the block if condition is true
|
|
55
54
|
} else {
|
|
56
55
|
return options.inverse(this); // Render the else block if present
|
|
57
56
|
}
|
|
58
57
|
});
|
|
58
|
+
// ifAny - {{{#ifAny variable1 variable2 variable3 variable4 etc}}, if any set then return true
|
|
59
|
+
handlebars.registerHelper('ifAny', function (...args) {
|
|
60
|
+
const options = args.pop(); // The last argument is the options object
|
|
61
|
+
return args.some(arg => !!arg) ? options.fn(this) : options.inverse(this);
|
|
62
|
+
});
|
|
63
|
+
// now - return current timestamp i.e {{now}}
|
|
64
|
+
handlebars.registerHelper('now', function() {
|
|
65
|
+
return new Date().toISOString();
|
|
66
|
+
});
|
|
67
|
+
// formatDate - Format Date, for footer meta data i.e {{formatDate '2023-06-23'}}
|
|
68
|
+
handlebars.registerHelper('formatDate', function(dateString, defaultDate, format) {
|
|
69
|
+
// Use the dateString if provided, otherwise use the defaultDate, otherwise error
|
|
70
|
+
let date;
|
|
71
|
+
if (dateString) {
|
|
72
|
+
date = new Date(dateString);
|
|
73
|
+
}
|
|
74
|
+
if (isNaN(date) && defaultDate) {
|
|
75
|
+
date = new Date(defaultDate);
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
// Check if the date is valid
|
|
79
|
+
if (isNaN(date)) {
|
|
80
|
+
return 'Invalid Date';
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
var monthNames = ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"];
|
|
84
|
+
var day = date.getDate();
|
|
85
|
+
var month = monthNames[date.getMonth()];
|
|
86
|
+
var year = date.getFullYear();
|
|
87
|
+
// Format date based on the format string
|
|
88
|
+
switch (format) {
|
|
89
|
+
case 'YYYY':
|
|
90
|
+
return `${year}`;
|
|
91
|
+
case 'MMMM YYYY':
|
|
92
|
+
return `${month} ${year}`;
|
|
93
|
+
default:
|
|
94
|
+
return `${day} ${month} ${year}`;
|
|
95
|
+
}
|
|
96
|
+
});
|
|
97
|
+
|
|
98
|
+
// formatDateOrToday - Format Date if passed or today i.e. {{formatDateOrToday '2023-06-23'}} or {{formatDateOrToday}} <!-- This will use the current date -->
|
|
99
|
+
handlebars.registerHelper('formatDateOrToday', function(dateString, format) {
|
|
100
|
+
// Use the current date if dateString is missing or invalid
|
|
101
|
+
const dateToFormat = dateString || new Date().toISOString();
|
|
102
|
+
// Call the formatDate helper with the determined date and format
|
|
103
|
+
return handlebars.helpers.formatDate(dateString, dateToFormat, format);
|
|
104
|
+
});
|
|
59
105
|
}
|
|
60
106
|
|
|
61
107
|
if(typeof(Handlebars) !== 'undefined') {
|