@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.
Files changed (137) hide show
  1. package/.esbuild/plugins/qgds-plugin-copy-assets.js +4 -3
  2. package/.esbuild/plugins/qgds-plugin-handlebar-partial-builder.js +91 -0
  3. package/.esbuild/plugins/qgds-plugin-version.js +3 -2
  4. package/.storybook/preview.js +1 -1
  5. package/dist/assets/css/qld.bootstrap.css +1 -1
  6. package/dist/assets/css/qld.bootstrap.css.map +2 -2
  7. package/dist/assets/js/handlebars.helpers.bundle.js +1 -1
  8. package/dist/assets/js/handlebars.helpers.bundle.js.map +3 -3
  9. package/dist/assets/js/handlebars.helpers.js +57 -11
  10. package/dist/assets/js/handlebars.init.min.js +2637 -0
  11. package/dist/assets/js/handlebars.init.min.js.map +7 -0
  12. package/dist/assets/js/qld.bootstrap.min.js +3 -3
  13. package/dist/assets/js/qld.bootstrap.min.js.map +2 -2
  14. package/dist/components/bs5/breadcumbsWrapper/breadcrumbsWrapper.hbs +11 -0
  15. package/dist/components/bs5/breadcumbsWrapper/breadcrumbsWrapper.test.hbs +7 -0
  16. package/dist/components/bs5/contentFooter/contentFooter.hbs +4 -0
  17. package/dist/components/bs5/contentFooterWrapper/contentFooterWrapper.hbs +5 -0
  18. package/dist/components/bs5/contentFooterWrapper/contentFooterWrapper.test.hbs +13 -0
  19. package/dist/components/bs5/contentWrapper/contentWrapper.hbs +5 -0
  20. package/dist/components/bs5/contentWrapper/contentWrapper.test.hbs +12 -0
  21. package/dist/components/bs5/footer/footer.hbs +88 -24
  22. package/dist/components/bs5/fullPageWrapper/fullPage.hbs +16 -0
  23. package/dist/components/bs5/fullPageWrapper/fullPage.test.hbs +4 -0
  24. package/dist/components/bs5/head/head.hbs +1 -1
  25. package/dist/components/bs5/mainContainerWrapper/mainContainerWrapper.hbs +28 -0
  26. package/dist/components/bs5/mainContainerWrapper/mainContainerWrapper.test.hbs +6 -0
  27. package/dist/components/bs5/metaDcTerms/metaDcTerms.hbs +17 -0
  28. package/dist/components/bs5/metaOpenGraph/metaOpenGraph.hbs +18 -0
  29. package/dist/components/bs5/searchInput/searchInput.hbs +2 -2
  30. package/dist/components/bs5/sidenavWrapper/sidenavWrapper.hbs +4 -0
  31. package/dist/components/bs5/sidenavWrapper/sidenavWrapper.test.hbs +15 -0
  32. package/dist/components/bs5/video/video.hbs +3 -1
  33. package/dist/components/handlebars.helpers.js +57 -11
  34. package/dist/components/handlebars.init.js +31 -3
  35. package/dist/components/handlebars.init.min.js +2637 -0
  36. package/dist/components/handlebars.init.min.js.map +7 -0
  37. package/dist/components/handlebars.partials.js +96 -0
  38. package/dist/sample-data/contentFooter/contentFooter.data.json +3 -0
  39. package/dist/sample-data/contentWrapper/contentWrapper.data.json +3 -0
  40. package/dist/sample-data/footer/footer-usingDefaults.data.json +3 -0
  41. package/dist/sample-data/footer/footer.data.json +31 -74
  42. package/dist/sample-data/metaDcTerms/MetaDcTerms.data.json +12 -0
  43. package/dist/sample-data/metaOpenGraph/MetaOpenGraph.data.json +14 -0
  44. package/esbuild.js +9 -3
  45. package/package.json +17 -16
  46. package/src/components/bs5/blockquote/blockquote.scss +31 -28
  47. package/src/components/bs5/breadcrumbs/breadcrumb.functions.js +1 -1
  48. package/src/components/bs5/breadcrumbs/breadcrumbs.scss +101 -83
  49. package/src/components/bs5/breadcumbsWrapper/breadcrumbsWrapper.hbs +11 -0
  50. package/src/components/bs5/breadcumbsWrapper/breadcrumbsWrapper.stories.js +37 -0
  51. package/src/components/bs5/breadcumbsWrapper/breadcrumbsWrapper.test.hbs +7 -0
  52. package/src/components/bs5/breadcumbsWrapper/breadcrumbsWrapper.test.js +13 -0
  53. package/src/components/bs5/breadcumbsWrapper/manifest.json +0 -0
  54. package/src/components/bs5/contentFooter/contentFooter.data.json +3 -0
  55. package/src/components/bs5/contentFooter/contentFooter.hbs +4 -0
  56. package/src/components/bs5/contentFooter/contentFooter.js +10 -0
  57. package/src/components/bs5/contentFooter/contentFooter.stories.js +59 -0
  58. package/src/components/bs5/contentFooter/manifest.json +0 -0
  59. package/src/components/bs5/contentFooterWrapper/contentFooterWrapper.hbs +5 -0
  60. package/src/components/bs5/contentFooterWrapper/contentFooterWrapper.stories.js +39 -0
  61. package/src/components/bs5/contentFooterWrapper/contentFooterWrapper.test.hbs +13 -0
  62. package/src/components/bs5/contentFooterWrapper/contentFooterWrapper.test.js +13 -0
  63. package/src/components/bs5/contentFooterWrapper/manifest.json +0 -0
  64. package/src/components/bs5/contentWrapper/ContentWrapper.test.js +13 -0
  65. package/src/components/bs5/contentWrapper/contentWrapper.data.json +3 -0
  66. package/src/components/bs5/contentWrapper/contentWrapper.hbs +5 -0
  67. package/src/components/bs5/contentWrapper/contentWrapper.stories.js +68 -0
  68. package/src/components/bs5/contentWrapper/contentWrapper.test.hbs +12 -0
  69. package/src/components/bs5/contentWrapper/manifest.json +0 -0
  70. package/src/components/bs5/footer/_colours.scss +3 -2
  71. package/src/components/bs5/footer/_measurements.scss +3 -1
  72. package/src/components/bs5/footer/footer-usingDefaults.data.json +3 -0
  73. package/src/components/bs5/footer/footer.data.json +31 -74
  74. package/src/components/bs5/footer/footer.hbs +88 -24
  75. package/src/components/bs5/footer/footer.scss +139 -81
  76. package/src/components/bs5/footer/footer.stories.js +104 -3
  77. package/src/components/bs5/fullPageWrapper/fullPage.hbs +16 -0
  78. package/src/components/bs5/fullPageWrapper/fullPage.stories.js +65 -0
  79. package/src/components/bs5/fullPageWrapper/fullPage.test.hbs +4 -0
  80. package/src/components/bs5/fullPageWrapper/fullPage.test.js +13 -0
  81. package/src/components/bs5/fullPageWrapper/manifest.json +0 -0
  82. package/src/components/bs5/globalAlert/globalAlert.scss +92 -24
  83. package/src/components/bs5/head/head.stories.js +6 -6
  84. package/src/components/bs5/mainContainerWrapper/mainContainerWrapper.hbs +28 -0
  85. package/src/components/bs5/mainContainerWrapper/mainContainerWrapper.stories.js +51 -0
  86. package/src/components/bs5/mainContainerWrapper/mainContainerWrapper.test.hbs +6 -0
  87. package/src/components/bs5/mainContainerWrapper/mainContainerWrapper.test.js +13 -0
  88. package/src/components/bs5/mainContainerWrapper/manifest.json +0 -0
  89. package/src/components/bs5/metaDcTerms/MetaDcTerms.data.json +12 -0
  90. package/src/components/bs5/metaDcTerms/MetaDcTerms.js +10 -0
  91. package/src/components/bs5/metaDcTerms/manifest.json +0 -0
  92. package/src/components/bs5/metaDcTerms/metaDcTerms.hbs +17 -0
  93. package/src/components/bs5/metaDcTerms/metaDcTerms.stories.js +38 -0
  94. package/src/components/bs5/metaOpenGraph/MetaOpenGraph.data.json +14 -0
  95. package/src/components/bs5/metaOpenGraph/MetaOpenGraph.js +10 -0
  96. package/src/components/bs5/metaOpenGraph/manifest.json +0 -0
  97. package/src/components/bs5/metaOpenGraph/metaOpenGraph.hbs +18 -0
  98. package/src/components/bs5/metaOpenGraph/metaOpenGraph.stories.js +38 -0
  99. package/src/components/bs5/navbar/navbar.scss +2 -2
  100. package/src/components/bs5/searchInput/search.functions.js +6 -6
  101. package/src/components/bs5/searchInput/searchInput.hbs +2 -2
  102. package/src/components/bs5/searchInput/searchInput.scss +17 -7
  103. package/src/components/bs5/sidenavWrapper/SidenavWrapper.mdx +11 -0
  104. package/src/components/bs5/sidenavWrapper/SidenavWrapper.test.js +13 -0
  105. package/src/components/bs5/sidenavWrapper/manifest.json +0 -0
  106. package/src/components/bs5/sidenavWrapper/sidenavWrapper.hbs +4 -0
  107. package/src/components/bs5/sidenavWrapper/sidenavWrapper.stories.js +68 -0
  108. package/src/components/bs5/sidenavWrapper/sidenavWrapper.test.hbs +15 -0
  109. package/src/components/bs5/tag/tag.scss +1 -1
  110. package/src/components/bs5/textbox/textInput.scss +2 -2
  111. package/src/components/bs5/typography/typography.stories.js +9 -0
  112. package/src/components/bs5/video/video.hbs +3 -1
  113. package/src/components/common/layout/content.scss +3 -0
  114. package/src/js/handlebars.helpers.js +57 -11
  115. package/src/js/handlebars.init.js +31 -3
  116. package/src/js/handlebars.partials.js +96 -0
  117. package/src/main.js +1 -1
  118. package/src/scss/qld-print.scss +22 -4
  119. package/src/scss/qld-type.scss +32 -3
  120. package/src/scss/qld-variables.scss +1 -1
  121. package/src/stories/integration/MainIntegration.js +29 -0
  122. package/src/stories/integration/MainIntegration.mdx +10 -0
  123. package/src/stories/integration/breadcrumb.data.json +28 -0
  124. package/src/stories/integration/content.data.json +3 -0
  125. package/src/stories/integration/contentFooter.data.json +3 -0
  126. package/src/stories/integration/footer.data.json +154 -0
  127. package/src/stories/integration/globalAlert.data.json +9 -0
  128. package/src/stories/integration/header.data.json +173 -0
  129. package/src/stories/integration/inpagenav.data.json +26 -0
  130. package/src/stories/integration/integration.stories.js +145 -0
  131. package/src/stories/integration/main.hbs +13 -0
  132. package/src/stories/integration/navigation.data.json +22 -0
  133. package/src/stories/integration/search.data.json +20 -0
  134. package/src/stories/integration/sidenav.data.json +88 -0
  135. package/dist/assets/js/handlebars.init.js +0 -6
  136. package/dist/components/handlebars.init.bundle.js +0 -23
  137. package/dist/components/handlebars.init.bundle.js.map +0 -7
@@ -1,2 +1,2 @@
1
- "use strict";(()=>{function t(n){n.registerHelper("contains",function(r,i,s){return r=n.escapeExpression(r),i=n.escapeExpression(i),i.indexOf(r)>-1?s.fn(this):s.inverse(this)}),n.registerHelper("ifCond",function(r,i,s,e){switch(i){case"==":return r==s?e.fn(this):e.inverse(this);case"===":return r===s?e.fn(this):e.inverse(this);case"!=":return r!=s?e.fn(this):e.inverse(this);case"!==":return r!==s?e.fn(this):e.inverse(this);case"<":return r<s?e.fn(this):e.inverse(this);case"<=":return r<=s?e.fn(this):e.inverse(this);case">":return r>s?e.fn(this):e.inverse(this);case">=":return r>=s?e.fn(this):e.inverse(this);case"&&":return r&&s?e.fn(this):e.inverse(this);case"||":return r||s?e.fn(this):e.inverse(this);case"contains":return typeof r=="string"&&typeof s=="string"?r.toLowerCase().indexOf(s.toLowerCase())>=0?e.fn(this):e.inverse(this):e.inverse(this);default:return e.inverse(this)}}),n.registerHelper("isType",function(r,i,s){return r===i?s.fn(this):s.inverse(this)})}typeof Handlebars!="undefined"&&t(Handlebars);})();
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\n/**\n * Registers Handlebars Helpers\n * @param {module} Handlebars Templating engine\n * @returns {void} Result of the helper operation\n */\n\nexport default function handlebarsHelpers(Handlebars) {\n // Contains - \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 // 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}\n\nif(typeof(Handlebars) !== 'undefined') {\n handlebarsHelpers(Handlebars);\n}\n"],
5
- "mappings": "mBAQe,SAARA,EAAmCC,EAAY,CAEpDA,EAAW,eAAe,WAAY,SAAUC,EAAQC,EAAUC,EAAS,CACzE,OAAAF,EAASD,EAAW,iBAAiBC,CAAM,EAC3CC,EAAWF,EAAW,iBAAiBE,CAAQ,EACxCA,EAAS,QAAQD,CAAM,EAAI,GAC9BE,EAAQ,GAAG,IAAI,EACfA,EAAQ,QAAQ,IAAI,CAC1B,CAAC,EAEDH,EAAW,eAAe,SAAU,SAAUI,EAAIC,EAAUC,EAAIH,EAAS,CACvE,OAAQE,EAAU,CAClB,IAAK,KACH,OAAOD,GAAME,EAAKH,EAAQ,GAAG,IAAI,EAAIA,EAAQ,QAAQ,IAAI,EAC3D,IAAK,MACH,OAAOC,IAAOE,EAAKH,EAAQ,GAAG,IAAI,EAAIA,EAAQ,QAAQ,IAAI,EAC5D,IAAK,KACH,OAAOC,GAAME,EAAKH,EAAQ,GAAG,IAAI,EAAIA,EAAQ,QAAQ,IAAI,EAC3D,IAAK,MACH,OAAOC,IAAOE,EAAKH,EAAQ,GAAG,IAAI,EAAIA,EAAQ,QAAQ,IAAI,EAC5D,IAAK,IACH,OAAOC,EAAKE,EAAKH,EAAQ,GAAG,IAAI,EAAIA,EAAQ,QAAQ,IAAI,EAC1D,IAAK,KACH,OAAOC,GAAME,EAAKH,EAAQ,GAAG,IAAI,EAAIA,EAAQ,QAAQ,IAAI,EAC3D,IAAK,IACH,OAAOC,EAAKE,EAAKH,EAAQ,GAAG,IAAI,EAAIA,EAAQ,QAAQ,IAAI,EAC1D,IAAK,KACH,OAAOC,GAAME,EAAKH,EAAQ,GAAG,IAAI,EAAIA,EAAQ,QAAQ,IAAI,EAC3D,IAAK,KACH,OAAOC,GAAME,EAAKH,EAAQ,GAAG,IAAI,EAAIA,EAAQ,QAAQ,IAAI,EAC3D,IAAK,KACH,OAAOC,GAAME,EAAKH,EAAQ,GAAG,IAAI,EAAIA,EAAQ,QAAQ,IAAI,EAC3D,IAAK,WACH,OAAI,OAAOC,GAAM,UAAY,OAAOE,GAAM,SACjCF,EAAG,YAAY,EAAE,QAAQE,EAAG,YAAY,CAAC,GAAK,EACjDH,EAAQ,GAAG,IAAI,EACfA,EAAQ,QAAQ,IAAI,EACZA,EAAQ,QAAQ,IAAI,EACpC,QACE,OAAOA,EAAQ,QAAQ,IAAI,CAC7B,CACF,CAAC,EAEDH,EAAW,eAAe,SAAU,SAAUO,EAAOC,EAAUL,EAAS,CACtE,OAAII,IAAUC,EACLL,EAAQ,GAAG,IAAI,EAEfA,EAAQ,QAAQ,IAAI,CAE/B,CAAC,CACH,CAEG,OAAO,YAAgB,aACxBJ,EAAkB,UAAU",
6
- "names": ["handlebarsHelpers", "Handlebars", "needle", "haystack", "options", "v1", "operator", "v2", "value", "expected"]
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 {module} Handlebars Templating engine
4
+ * @param {Handlebars} handlebars Templating engine
6
5
  * @returns {void} Result of the helper operation
7
6
  */
8
7
 
9
- export default function handlebarsHelpers(Handlebars) {
10
- // Contains -
11
- Handlebars.registerHelper("contains", function (needle, haystack, options) {
12
- needle = Handlebars.escapeExpression(needle);
13
- haystack = Handlebars.escapeExpression(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
- Handlebars.registerHelper("ifCond", function (v1, operator, v2, options) {
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
- Handlebars.registerHelper('isType', function (value, expected, options) {
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') {