@worksafevictoria/wcl7.5 1.0.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 (392) hide show
  1. package/.editorconfig +13 -0
  2. package/.env +4 -0
  3. package/.eslintrc.cjs +10 -0
  4. package/.eslintrc.js +25 -0
  5. package/.husky/commit-msg +4 -0
  6. package/.prettierrc +5 -0
  7. package/.prettierrc.json +8 -0
  8. package/.storybook/main.js +18 -0
  9. package/.storybook/preview.js +34 -0
  10. package/LICENSE +21 -0
  11. package/README.md +159 -0
  12. package/babel.config.js +8 -0
  13. package/bin/clean.sh +52 -0
  14. package/bin/deploy.sh +25 -0
  15. package/ci/build/Build_Validation.md +35 -0
  16. package/ci/build/build_validation.yml +47 -0
  17. package/ci/release/Release_Beta.md +39 -0
  18. package/ci/release/Release_Master.md +29 -0
  19. package/ci/release/beta.yml +69 -0
  20. package/ci/release/master.yml +39 -0
  21. package/commitlint.config.js +1 -0
  22. package/index.html +13 -0
  23. package/jest.config.js +21 -0
  24. package/lib/detect-browser.js +33 -0
  25. package/lib/utility.js +59 -0
  26. package/lib/utility.test.js +15 -0
  27. package/package.json +93 -0
  28. package/public/favicon.ico +0 -0
  29. package/src/assets/base.css +86 -0
  30. package/src/assets/fonts/VIC-Bold.eot +0 -0
  31. package/src/assets/fonts/VIC-Bold.ttf +0 -0
  32. package/src/assets/fonts/VIC-Bold.woff +0 -0
  33. package/src/assets/fonts/VIC-Bold.woff2 +0 -0
  34. package/src/assets/fonts/VIC-BoldItalic.eot +0 -0
  35. package/src/assets/fonts/VIC-BoldItalic.ttf +0 -0
  36. package/src/assets/fonts/VIC-BoldItalic.woff +0 -0
  37. package/src/assets/fonts/VIC-BoldItalic.woff2 +0 -0
  38. package/src/assets/fonts/VIC-ExtraLight.eot +0 -0
  39. package/src/assets/fonts/VIC-ExtraLight.ttf +0 -0
  40. package/src/assets/fonts/VIC-ExtraLight.woff +0 -0
  41. package/src/assets/fonts/VIC-ExtraLight.woff2 +0 -0
  42. package/src/assets/fonts/VIC-ExtraLightItalic.eot +0 -0
  43. package/src/assets/fonts/VIC-ExtraLightItalic.ttf +0 -0
  44. package/src/assets/fonts/VIC-ExtraLightItalic.woff +0 -0
  45. package/src/assets/fonts/VIC-ExtraLightItalic.woff2 +0 -0
  46. package/src/assets/fonts/VIC-Italic.eot +0 -0
  47. package/src/assets/fonts/VIC-Italic.ttf +0 -0
  48. package/src/assets/fonts/VIC-Italic.woff +0 -0
  49. package/src/assets/fonts/VIC-Italic.woff2 +0 -0
  50. package/src/assets/fonts/VIC-Light.eot +0 -0
  51. package/src/assets/fonts/VIC-Light.ttf +0 -0
  52. package/src/assets/fonts/VIC-Light.woff +0 -0
  53. package/src/assets/fonts/VIC-Light.woff2 +0 -0
  54. package/src/assets/fonts/VIC-LightItalic.eot +0 -0
  55. package/src/assets/fonts/VIC-LightItalic.ttf +0 -0
  56. package/src/assets/fonts/VIC-LightItalic.woff +0 -0
  57. package/src/assets/fonts/VIC-LightItalic.woff2 +0 -0
  58. package/src/assets/fonts/VIC-Medium.eot +0 -0
  59. package/src/assets/fonts/VIC-Medium.ttf +0 -0
  60. package/src/assets/fonts/VIC-Medium.woff +0 -0
  61. package/src/assets/fonts/VIC-Medium.woff2 +0 -0
  62. package/src/assets/fonts/VIC-MediumItalic.eot +0 -0
  63. package/src/assets/fonts/VIC-MediumItalic.ttf +0 -0
  64. package/src/assets/fonts/VIC-MediumItalic.woff +0 -0
  65. package/src/assets/fonts/VIC-MediumItalic.woff2 +0 -0
  66. package/src/assets/fonts/VIC-Regular.eot +0 -0
  67. package/src/assets/fonts/VIC-Regular.ttf +0 -0
  68. package/src/assets/fonts/VIC-Regular.woff +0 -0
  69. package/src/assets/fonts/VIC-Regular.woff2 +0 -0
  70. package/src/assets/fonts/VIC-SemiBold.eot +0 -0
  71. package/src/assets/fonts/VIC-SemiBold.ttf +0 -0
  72. package/src/assets/fonts/VIC-SemiBold.woff +0 -0
  73. package/src/assets/fonts/VIC-SemiBold.woff2 +0 -0
  74. package/src/assets/fonts/VIC-SemiBoldItalic.eot +0 -0
  75. package/src/assets/fonts/VIC-SemiBoldItalic.ttf +0 -0
  76. package/src/assets/fonts/VIC-SemiBoldItalic.woff +0 -0
  77. package/src/assets/fonts/VIC-SemiBoldItalic.woff2 +0 -0
  78. package/src/assets/icons/AppFooter/australian-aboriginal-flag.svg +7 -0
  79. package/src/assets/icons/AppFooter/facebook-ws-footer.svg +58 -0
  80. package/src/assets/icons/AppFooter/facebook-ww-footer.svg +59 -0
  81. package/src/assets/icons/AppFooter/instagram-ww-footer.svg +70 -0
  82. package/src/assets/icons/AppFooter/linkedin-ws-footer.svg +59 -0
  83. package/src/assets/icons/AppFooter/linkedin-ww-footer.svg +60 -0
  84. package/src/assets/icons/AppFooter/logo-workwell-reversed.svg +45 -0
  85. package/src/assets/icons/AppFooter/pride-flag.svg +12 -0
  86. package/src/assets/icons/AppFooter/torres-strait-islanders-flag.svg +9 -0
  87. package/src/assets/icons/AppFooter/twitter-ws-footer.svg +58 -0
  88. package/src/assets/icons/AppFooter/twitter-ww-footer.svg +59 -0
  89. package/src/assets/icons/AppFooter/worksafe-footer-logo.svg +9 -0
  90. package/src/assets/icons/AppFooter/youtube-ws-footer.svg +55 -0
  91. package/src/assets/icons/AppFooter/youtube-ww-footer.svg +56 -0
  92. package/src/assets/icons/AppHeader/chev-down-16.svg +17 -0
  93. package/src/assets/icons/AppHeader/chev-left-24px.svg +13 -0
  94. package/src/assets/icons/AppHeader/chev-right-16px.svg +25 -0
  95. package/src/assets/icons/AppHeader/chev-right-24px.svg +13 -0
  96. package/src/assets/icons/AppHeader/close-32px.svg +15 -0
  97. package/src/assets/icons/AppHeader/menu-32px.svg +20 -0
  98. package/src/assets/icons/AppHeader/search-32px.svg +19 -0
  99. package/src/assets/icons/Email-circle-black.svg +4 -0
  100. package/src/assets/icons/Info-circle-fill.svg +10 -0
  101. package/src/assets/icons/Phone-circle-black.svg +4 -0
  102. package/src/assets/icons/SocialShare/bookmark-white.svg +3 -0
  103. package/src/assets/icons/SocialShare/bookmark-ww-footer.svg +57 -0
  104. package/src/assets/icons/SocialShare/bookmark.svg +56 -0
  105. package/src/assets/icons/SocialShare/email-white.svg +3 -0
  106. package/src/assets/icons/SocialShare/facebook-white.svg +3 -0
  107. package/src/assets/icons/SocialShare/facebook-ws-footer.svg +58 -0
  108. package/src/assets/icons/SocialShare/facebook-ww-footer.svg +59 -0
  109. package/src/assets/icons/SocialShare/facebook.svg +1 -0
  110. package/src/assets/icons/SocialShare/office-file-pdf.svg +1 -0
  111. package/src/assets/icons/SocialShare/print.svg +3 -0
  112. package/src/assets/icons/SocialShare/twitter-white.svg +3 -0
  113. package/src/assets/icons/SocialShare/twitter-ws-footer.svg +58 -0
  114. package/src/assets/icons/SocialShare/twitter-ww-footer.svg +59 -0
  115. package/src/assets/icons/SocialShare/twitter.svg +1 -0
  116. package/src/assets/icons/Strip/AlertDismiss.svg +4 -0
  117. package/src/assets/icons/Strip/Arrow right.svg +4 -0
  118. package/src/assets/icons/Strip/Chevron right.svg +3 -0
  119. package/src/assets/icons/Strip/Dismiss.svg +4 -0
  120. package/src/assets/icons/Strip/Exclamation triangle fill.svg +8 -0
  121. package/src/assets/icons/Strip/Info circle fill.svg +15 -0
  122. package/src/assets/icons/Strip/Information.svg +15 -0
  123. package/src/assets/icons/Strip/Warning.svg +8 -0
  124. package/src/assets/icons/arrow-left.svg +9 -0
  125. package/src/assets/icons/arrow-right.svg +9 -0
  126. package/src/assets/icons/bookmark.svg +56 -0
  127. package/src/assets/icons/brand-VicStateGov-logo-reversed.svg +72 -0
  128. package/src/assets/icons/bullet-empty.svg +3 -0
  129. package/src/assets/icons/bullet.svg +3 -0
  130. package/src/assets/icons/caret-down.svg +1 -0
  131. package/src/assets/icons/caret-left.svg +9 -0
  132. package/src/assets/icons/caret-right.svg +9 -0
  133. package/src/assets/icons/caret-up.svg +1 -0
  134. package/src/assets/icons/chev-down-white.svg +3 -0
  135. package/src/assets/icons/chev-down.svg +3 -0
  136. package/src/assets/icons/chev-left.svg +3 -0
  137. package/src/assets/icons/chev-right.svg +3 -0
  138. package/src/assets/icons/chev-up.svg +3 -0
  139. package/src/assets/icons/clock.svg +3 -0
  140. package/src/assets/icons/close.svg +1 -0
  141. package/src/assets/icons/cross.svg +3 -0
  142. package/src/assets/icons/document.svg +1 -0
  143. package/src/assets/icons/earth.svg +1 -0
  144. package/src/assets/icons/email.svg +6 -0
  145. package/src/assets/icons/external-link-16px.svg +18 -0
  146. package/src/assets/icons/external-link.svg +4 -0
  147. package/src/assets/icons/icon-close.svg +15 -0
  148. package/src/assets/icons/instagram.svg +3 -0
  149. package/src/assets/icons/key.svg +3 -0
  150. package/src/assets/icons/location.svg +10 -0
  151. package/src/assets/icons/phone.svg +3 -0
  152. package/src/assets/icons/refresh.svg +3 -0
  153. package/src/assets/icons/right-arrow.svg +3 -0
  154. package/src/assets/icons/search.svg +5 -0
  155. package/src/assets/icons/tick.svg +3 -0
  156. package/src/assets/icons/video-play.svg +4 -0
  157. package/src/assets/images/hero-header-chevron.svg +9 -0
  158. package/src/assets/images/hero-header-mask.png +0 -0
  159. package/src/assets/images/hero-header-mask.svg +3 -0
  160. package/src/assets/logo.svg +1 -0
  161. package/src/assets/main.css +35 -0
  162. package/src/assets/styles/button.scss +206 -0
  163. package/src/assets/styles/focus.scss +4 -0
  164. package/src/assets/styles/generated-icons.scss +374 -0
  165. package/src/assets/styles/modal.scss +12 -0
  166. package/src/assets/styles/rtl.scss +8 -0
  167. package/src/assets/styles/storybook.scss +9 -0
  168. package/src/assets/styles/stylesheet.scss +7 -0
  169. package/src/assets/styles/webfonts.css +155 -0
  170. package/src/components/Common/CardGrid/cardgrid.stories.js +269 -0
  171. package/src/components/Common/CardGrid/index.vue +321 -0
  172. package/src/components/Common/CardGridItem/card-grid-item-caret.vue +164 -0
  173. package/src/components/Common/CardGridItem/card-grid-item-icon.vue +163 -0
  174. package/src/components/Common/CardGridItem/index.vue +848 -0
  175. package/src/components/Common/FilterButton/index.vue +93 -0
  176. package/src/components/Containers/Column/index.stories.js +35 -0
  177. package/src/components/Containers/Column/index.vue +14 -0
  178. package/src/components/Containers/Container/index.stories.js +13 -0
  179. package/src/components/Containers/Container/index.vue +15 -0
  180. package/src/components/Containers/HomepageHeader/index.stories.js +78 -0
  181. package/src/components/Containers/HomepageHeader/index.vue +186 -0
  182. package/src/components/Containers/Row/index.stories.js +12 -0
  183. package/src/components/Containers/Row/index.vue +14 -0
  184. package/src/components/Containers/SectionGroup/index.stories.js +148 -0
  185. package/src/components/Containers/SectionGroup/index.vue +310 -0
  186. package/src/components/Containers/Subheader/index.stories.js +74 -0
  187. package/src/components/Containers/Subheader/index.vue +149 -0
  188. package/src/components/Global/AlertStrip/index.stories.js +13 -0
  189. package/src/components/Global/AlertStrip/index.vue +145 -0
  190. package/src/components/Global/AlertStrip/styles.scss +78 -0
  191. package/src/components/Global/AppFooter/FooterSocialShare/index.vue +105 -0
  192. package/src/components/Global/AppFooter/FooterSocialShare/styles.scss +41 -0
  193. package/src/components/Global/AppFooter/index.stories.js +24 -0
  194. package/src/components/Global/AppFooter/index.vue +632 -0
  195. package/src/components/Global/AppFooter/storiesConst.js +110 -0
  196. package/src/components/Global/AppFooter/styles.scss +393 -0
  197. package/src/components/Global/AppHeader/ModalSearch/index.vue +66 -0
  198. package/src/components/Global/AppHeader/ModalSearch/styles.scss +43 -0
  199. package/src/components/Global/AppHeader/includes.scss +68 -0
  200. package/src/components/Global/AppHeader/index.stories.js +82 -0
  201. package/src/components/Global/AppHeader/index.vue +878 -0
  202. package/src/components/Global/AppHeader/mobile.scss +240 -0
  203. package/src/components/Global/AppHeader/styles.scss +371 -0
  204. package/src/components/Global/BackToTop/index.stories.js +18 -0
  205. package/src/components/Global/BackToTop/index.vue +67 -0
  206. package/src/components/Global/BackToTop/styles.scss +46 -0
  207. package/src/components/Global/ContrastMode/index.stories.js +39 -0
  208. package/src/components/Global/ContrastMode/index.vue +308 -0
  209. package/src/components/Global/Cookies/Constants.js +72 -0
  210. package/src/components/Global/Cookies/index.storieshide.js +45 -0
  211. package/src/components/Global/Cookies/index.vue +453 -0
  212. package/src/components/Global/Cookies/styles.scss +259 -0
  213. package/src/components/Global/DirectoryFilters/SingleTaxonomy/index.vue +196 -0
  214. package/src/components/Global/DirectoryFilters/index.vue +176 -0
  215. package/src/components/Global/GlobalNotice/index.vue +266 -0
  216. package/src/components/Global/HeroHeader/index.stories.js +93 -0
  217. package/src/components/Global/HeroHeader/index.vue +343 -0
  218. package/src/components/Global/HeroHeader/styles.scss +480 -0
  219. package/src/components/Global/ProgressBar/index.stories.js +51 -0
  220. package/src/components/Global/ProgressBar/index.vue +58 -0
  221. package/src/components/Global/ProgressBar/styles.scss +116 -0
  222. package/src/components/Global/SocialShare/index.stories.js +18 -0
  223. package/src/components/Global/SocialShare/index.vue +318 -0
  224. package/src/components/Global/Strip/index.stories.js +70 -0
  225. package/src/components/Global/Strip/index.vue +357 -0
  226. package/src/components/HelloWorld.vue +44 -0
  227. package/src/components/Paragraphs/Accordion/AccordionItem/index.vue +232 -0
  228. package/src/components/Paragraphs/Accordion/StepperItem/index.vue +274 -0
  229. package/src/components/Paragraphs/Accordion/index.stories.js +84 -0
  230. package/src/components/Paragraphs/Accordion/index.vue +202 -0
  231. package/src/components/Paragraphs/Breakout/index.stories.js +39 -0
  232. package/src/components/Paragraphs/Breakout/index.vue +115 -0
  233. package/src/components/Paragraphs/BrowseContent/index.stories.js +220 -0
  234. package/src/components/Paragraphs/BrowseContent/index.vue +298 -0
  235. package/src/components/Paragraphs/BrowseContent/switcher.vue +63 -0
  236. package/src/components/Paragraphs/Calculator/CardContainer/index.vue +278 -0
  237. package/src/components/Paragraphs/Calculator/CardContainer/styles.scss +152 -0
  238. package/src/components/Paragraphs/Calculator/Constants.js +246 -0
  239. package/src/components/Paragraphs/Calculator/RiskLevel/index.vue +124 -0
  240. package/src/components/Paragraphs/Calculator/RiskLevel/styles.scss +73 -0
  241. package/src/components/Paragraphs/Calculator/index.stories.js +27 -0
  242. package/src/components/Paragraphs/Calculator/index.vue +284 -0
  243. package/src/components/Paragraphs/Calculator/styles.scss +49 -0
  244. package/src/components/Paragraphs/Directory/Records/CJ/index.vue +59 -0
  245. package/src/components/Paragraphs/Directory/Records/ISP/distance.js +46 -0
  246. package/src/components/Paragraphs/Directory/Records/ISP/index.vue +88 -0
  247. package/src/components/Paragraphs/Directory/Records/PRS/index.vue +59 -0
  248. package/src/components/Paragraphs/Directory/Records/PRS/recordContent.vue +91 -0
  249. package/src/components/Paragraphs/Directory/Records/PRS/recordDetails.vue +49 -0
  250. package/src/components/Paragraphs/Directory/Records/index.vue +203 -0
  251. package/src/components/Paragraphs/Directory/Records/styles.scss +129 -0
  252. package/src/components/Paragraphs/Directory/constants.js +79 -0
  253. package/src/components/Paragraphs/Directory/index.vue +334 -0
  254. package/src/components/Paragraphs/ListGroup/Constants.js +72 -0
  255. package/src/components/Paragraphs/ListGroup/Link/list-link.stories.js +71 -0
  256. package/src/components/Paragraphs/ListGroup/index.vue +333 -0
  257. package/src/components/Paragraphs/ListGroup/list-group.stories.js +64 -0
  258. package/src/components/Paragraphs/ListGroup/navigation-card.stories.js +66 -0
  259. package/src/components/Paragraphs/MarketingBanner/index.stories.js +65 -0
  260. package/src/components/Paragraphs/MarketingBanner/index.vue +118 -0
  261. package/src/components/Paragraphs/MarketingBanner/styles.scss +87 -0
  262. package/src/components/Paragraphs/ProofPoints/index.stories.js +173 -0
  263. package/src/components/Paragraphs/ProofPoints/index.vue +64 -0
  264. package/src/components/Paragraphs/RelatedInformation/index.stories.js +32 -0
  265. package/src/components/Paragraphs/RelatedInformation/index.vue +62 -0
  266. package/src/components/Paragraphs/RelatedInformation/styles.scss +50 -0
  267. package/src/components/Paragraphs/RichText/index.stories.js +393 -0
  268. package/src/components/Paragraphs/RichText/index.vue +113 -0
  269. package/src/components/Paragraphs/RichText/scss/base.scss +355 -0
  270. package/src/components/Paragraphs/RichText/scss/definition-list.scss +35 -0
  271. package/src/components/Paragraphs/RichText/scss/styled-list.scss +152 -0
  272. package/src/components/Paragraphs/RichText/scss/table.scss +85 -0
  273. package/src/components/Paragraphs/ScrollSpy/index.stories.js +184 -0
  274. package/src/components/Paragraphs/ScrollSpy/index.vue +147 -0
  275. package/src/components/Paragraphs/SelectableCards/Control/index.stories.js +29 -0
  276. package/src/components/Paragraphs/SelectableCards/cardbody.vue +25 -0
  277. package/src/components/Paragraphs/SelectableCards/cardtop.vue +113 -0
  278. package/src/components/Paragraphs/SelectableCards/index.stories.js +27 -0
  279. package/src/components/Paragraphs/SelectableCards/index.vue +116 -0
  280. package/src/components/Paragraphs/Statistics/index.stories.js +106 -0
  281. package/src/components/Paragraphs/Statistics/index.vue +95 -0
  282. package/src/components/Paragraphs/TabbedCards/TempIcons/cake-black-18dp.svg +1 -0
  283. package/src/components/Paragraphs/TabbedCards/TempIcons/commute-black-18dp.svg +1 -0
  284. package/src/components/Paragraphs/TabbedCards/TempIcons/fire_extinguisher-black-18dp.svg +1 -0
  285. package/src/components/Paragraphs/TabbedCards/TempIcons/free_breakfast-black-18dp.svg +1 -0
  286. package/src/components/Paragraphs/TabbedCards/TempIcons/portrait-black-18dp.svg +1 -0
  287. package/src/components/Paragraphs/TabbedCards/TempIcons/storefront-black-18dp.svg +1 -0
  288. package/src/components/Paragraphs/TabbedCards/TempIcons/tag_faces-black-18dp.svg +1 -0
  289. package/src/components/Paragraphs/TabbedCards/index.stories.js +36 -0
  290. package/src/components/Paragraphs/TabbedCards/index.vue +393 -0
  291. package/src/components/Paragraphs/Tabs/index.stories.js +60 -0
  292. package/src/components/Paragraphs/Tabs/index.vue +127 -0
  293. package/src/components/Paragraphs/Tabs/styles.scss +150 -0
  294. package/src/components/Paragraphs/TabulatedData/Constants.js +158 -0
  295. package/src/components/Paragraphs/TabulatedData/index.stories.js +39 -0
  296. package/src/components/Paragraphs/TabulatedData/index.vue +145 -0
  297. package/src/components/Paragraphs/TaskFinder/index.stories.js +45 -0
  298. package/src/components/Paragraphs/TaskFinder/index.vue +192 -0
  299. package/src/components/Paragraphs/TaskFinder/pdf/index.vue +109 -0
  300. package/src/components/Paragraphs/TaskFinder/task-finder-column.vue +146 -0
  301. package/src/components/Paragraphs/TextMedia/MediaTypes/Image/index.vue +24 -0
  302. package/src/components/Paragraphs/TextMedia/MediaTypes/Video/index.vue +29 -0
  303. package/src/components/Paragraphs/TextMedia/index.stories.js +94 -0
  304. package/src/components/Paragraphs/TextMedia/index.vue +150 -0
  305. package/src/components/Paragraphs/VideoGrid/index.stories.js +167 -0
  306. package/src/components/Paragraphs/VideoGrid/index.vue +124 -0
  307. package/src/components/Paragraphs/VideoPlayer/index.stories.js +95 -0
  308. package/src/components/Paragraphs/VideoPlayer/index.vue +110 -0
  309. package/src/components/Paragraphs/Webform/index.stories.js +70 -0
  310. package/src/components/Paragraphs/Webform/index.vue +103 -0
  311. package/src/components/SubComponents/Breadcrumb/constants.js +15 -0
  312. package/src/components/SubComponents/Breadcrumb/index.stories.js +22 -0
  313. package/src/components/SubComponents/Breadcrumb/index.vue +91 -0
  314. package/src/components/SubComponents/CardGroup/cardbody.vue +109 -0
  315. package/src/components/SubComponents/CardGroup/cardtop.vue +106 -0
  316. package/src/components/SubComponents/CardGroup/index.stories.js +145 -0
  317. package/src/components/SubComponents/CardGroup/index.vue +297 -0
  318. package/src/components/SubComponents/CtaButton/index.stories.js +357 -0
  319. package/src/components/SubComponents/CtaButton/index.vue +256 -0
  320. package/src/components/SubComponents/FormAddressPostcode/index.stories.js +43 -0
  321. package/src/components/SubComponents/FormAddressPostcode/index.vue +314 -0
  322. package/src/components/SubComponents/FormInstance/index.stories.js +8 -0
  323. package/src/components/SubComponents/FormInstance/index.vue +12 -0
  324. package/src/components/SubComponents/GoogleSearch/index.stories.js +8 -0
  325. package/src/components/SubComponents/GoogleSearch/index.vue +405 -0
  326. package/src/components/SubComponents/Icon/README.md +40 -0
  327. package/src/components/SubComponents/Icon/example.js +41 -0
  328. package/src/components/SubComponents/Icon/index.stories.js +84 -0
  329. package/src/components/SubComponents/Icon/index.vue +127 -0
  330. package/src/components/SubComponents/Icon/styles.scss +38 -0
  331. package/src/components/SubComponents/Loading/index.stories.js +9 -0
  332. package/src/components/SubComponents/Loading/index.vue +15 -0
  333. package/src/components/SubComponents/MediaPlayer/index.stories.js +58 -0
  334. package/src/components/SubComponents/MediaPlayer/index.vue +69 -0
  335. package/src/components/SubComponents/Pagination/index.stories.js +119 -0
  336. package/src/components/SubComponents/Pagination/index.vue +184 -0
  337. package/src/components/SubComponents/Pagination/pagination.js +58 -0
  338. package/src/components/SubComponents/ResourceGroup/List/index.stories.js +268 -0
  339. package/src/components/SubComponents/ResourceGroup/cardbody.vue +221 -0
  340. package/src/components/SubComponents/ResourceGroup/cardfooter.vue +61 -0
  341. package/src/components/SubComponents/ResourceGroup/cardtop.vue +94 -0
  342. package/src/components/SubComponents/ResourceGroup/index.stories.js +268 -0
  343. package/src/components/SubComponents/ResourceGroup/index.vue +575 -0
  344. package/src/components/SubComponents/ResourceGroup/styles.scss +317 -0
  345. package/src/components/SubComponents/ResourceGroup/switcher.vue +63 -0
  346. package/src/components/SubComponents/Search/SearchListing/index.vue +217 -0
  347. package/src/components/SubComponents/Search/index.stories.js +43 -0
  348. package/src/components/SubComponents/Search/index.vue +238 -0
  349. package/src/components/SubComponents/SingleImage/index.stories.js +60 -0
  350. package/src/components/SubComponents/SingleImage/index.vue +98 -0
  351. package/src/components/SubComponents/VideoThumbnail/index.stories.js +41 -0
  352. package/src/components/SubComponents/VideoThumbnail/index.vue +239 -0
  353. package/src/components/TheWelcome.vue +88 -0
  354. package/src/components/WelcomeItem.vue +87 -0
  355. package/src/components/icons/IconCommunity.vue +7 -0
  356. package/src/components/icons/IconDocumentation.vue +7 -0
  357. package/src/components/icons/IconEcosystem.vue +7 -0
  358. package/src/components/icons/IconSupport.vue +7 -0
  359. package/src/components/icons/IconTooling.vue +19 -0
  360. package/src/includes/scss/all.scss +2 -0
  361. package/src/includes/scss/mixins/all.scss +6 -0
  362. package/src/includes/scss/mixins/src/focus.scss +38 -0
  363. package/src/includes/scss/mixins/src/fp.scss +31 -0
  364. package/src/includes/scss/mixins/src/grid.scss +125 -0
  365. package/src/includes/scss/mixins/src/mq.scss +30 -0
  366. package/src/includes/scss/mixins/src/rtl.scss +8 -0
  367. package/src/includes/scss/mixins/src/units.scss +110 -0
  368. package/src/includes/scss/vars/all.scss +2 -0
  369. package/src/includes/scss/vars/src/breakpoints.scss +20 -0
  370. package/src/includes/scss/vars/src/colors.module.scss +53 -0
  371. package/src/includes/scss/vars/src/colors.scss +53 -0
  372. package/src/index.js +116 -0
  373. package/src/main.js +18 -0
  374. package/src/mock/accordion.js +104 -0
  375. package/src/mock/app-header.js +683 -0
  376. package/src/mock/control-selectable-cards.js +58 -0
  377. package/src/mock/jest.svgtransformer.js +7 -0
  378. package/src/mock/list-group.js +46 -0
  379. package/src/mock/proof-points.js +55 -0
  380. package/src/mock/related-info.js +44 -0
  381. package/src/mock/selectable-cards.js +48 -0
  382. package/src/mock/statistics.js +63 -0
  383. package/src/mock/styleMock.js +1 -0
  384. package/src/mock/tabbed-cards.js +197 -0
  385. package/src/mock/task-finder.js +68 -0
  386. package/src/mock/video-grid.js +409 -0
  387. package/src/mock/video-media.js +51 -0
  388. package/src/public/places/api/v1/geocode/json +69 -0
  389. package/src/public/places/api/v1/place/autocomplete/json +226 -0
  390. package/stylelint.config.js +63 -0
  391. package/vite.config.js +19 -0
  392. package/vitest.config.js +14 -0
@@ -0,0 +1,310 @@
1
+ <!-- eslint-disable vue/no-v-html -->
2
+ <template>
3
+ <section
4
+ class="section-group"
5
+ :class="generatedClass"
6
+ :style="applyBackgroundOn === 'section' ? backgroundStyle : null"
7
+ >
8
+ <slot v-if="$slots.top" name="top"></slot>
9
+ <container
10
+ :class="'section-group__container section-group__container--' + size"
11
+ :style="applyBackgroundOn === 'container' ? backgroundStyle : null"
12
+ >
13
+ <div
14
+ class="section-group__block"
15
+ :style="applyBackgroundOn === 'block' ? backgroundStyle : null"
16
+ >
17
+ <row v-if="title || subHeading || $slots.headerRight">
18
+ <column :class="'section-group__maincol'">
19
+ <div :class="`section-group__main ${contentClass}-main`">
20
+ <slot v-if="$slots.headerTop" name="headerTop"></slot>
21
+ <rich-text
22
+ v-if="title"
23
+ class="section-group__heading"
24
+ :content="title"
25
+ :tag="titleTag"
26
+ />
27
+ <div v-if="subHeading">
28
+ <rich-text
29
+ class="section-group__subheading section-group__row"
30
+ :content="subHeading"
31
+ />
32
+ </div>
33
+ <slot v-if="$slots.headerBottom" name="headerBottom"></slot>
34
+ </div>
35
+ </column>
36
+ <column
37
+ v-if="$slots.headerRight"
38
+ :md="'auto'"
39
+ class="section-group__headingRight section-group__row"
40
+ >
41
+ <slot name="headerRight"></slot>
42
+ </column>
43
+ </row>
44
+
45
+ <row
46
+ v-if="$slots.preContent"
47
+ class="section-group__preContent section-group__row"
48
+ >
49
+ <column>
50
+ <slot name="preContent"></slot>
51
+ </column>
52
+ </row>
53
+
54
+ <div
55
+ class="section-group__content section-group__row"
56
+ :class="{
57
+ ['section-group__content--withoutFooter']: !$slots.footer,
58
+ ['section-group__content--withoutTitle']: !(
59
+ $slots.preContent ||
60
+ title ||
61
+ subHeading ||
62
+ $slots.headerRight
63
+ ),
64
+ [`${contentClass}`]: hasContentClass
65
+ }"
66
+ :style="applyBackgroundOn === 'content' ? backgroundStyle : null"
67
+ >
68
+ <slot v-if="$slots.content" name="content"></slot>
69
+ <row v-if="!$slots.content && $slots.default">
70
+ <column>
71
+ <slot name="default"></slot>
72
+ </column>
73
+ </row>
74
+ </div>
75
+
76
+ <row
77
+ v-if="$slots.footer"
78
+ class="section-group__footer section-group__row"
79
+ >
80
+ <slot name="footer"></slot>
81
+ </row>
82
+ </div>
83
+ </container>
84
+ </section>
85
+ </template>
86
+
87
+ <script>
88
+ import Row from './../Row/index.vue'
89
+ import Column from './../Column/index.vue'
90
+ import Container from './../Container/index.vue'
91
+ import RichText from './../../Paragraphs/RichText/index.vue'
92
+ import colors from './../../../includes/scss/vars/src/colors.module.scss'
93
+
94
+ export default {
95
+ name: 'SectionGroup',
96
+ components: { Row, Column, RichText, Container },
97
+ props: {
98
+ size: {
99
+ type: String,
100
+ default: 'page',
101
+ validator: (value) =>
102
+ ['half-content', 'content', 'page', 'full'].indexOf(value) >= 0
103
+ },
104
+ backgroundVariant: {
105
+ type: String,
106
+ default: 'none',
107
+ validator: (value) =>
108
+ [
109
+ 'none',
110
+ 'light',
111
+ 'dark',
112
+ 'grey',
113
+ 'yellow',
114
+ 'white',
115
+ 'lightblue',
116
+ 'lightred'
117
+ ].indexOf(value) >= 0
118
+ },
119
+ applyBackgroundOn: {
120
+ type: String,
121
+ default: 'section',
122
+ validator: (value) =>
123
+ ['content', 'block', 'container', 'section'].indexOf(value) >= 0
124
+ },
125
+ backgroundImage: {
126
+ type: String,
127
+ default: ''
128
+ },
129
+ noPaddingTop: {
130
+ type: Boolean
131
+ },
132
+ noPaddingBottom: {
133
+ type: Boolean
134
+ },
135
+ bordered: {
136
+ type: Boolean
137
+ },
138
+ rtl: {
139
+ type: Boolean,
140
+ default: false
141
+ },
142
+ title: {
143
+ type: String,
144
+ default: null
145
+ },
146
+ subHeading: {
147
+ type: String,
148
+ default: null
149
+ },
150
+ titleTag: {
151
+ type: String,
152
+ default: 'h2'
153
+ },
154
+ contentClass: {
155
+ type: String,
156
+ default: ''
157
+ }
158
+ },
159
+ computed: {
160
+ generatedClass() {
161
+ return {
162
+ rtl: this.rtl,
163
+ [`section-group--noPaddingTop`]: this.noPaddingTop,
164
+ [`section-group--noPaddingBottom`]: this.noPaddingBottom,
165
+ [`section-group--size-` + this.size]: !!this.size
166
+ }
167
+ },
168
+ backgroundStyle() {
169
+ let styles
170
+ const borderRadius =
171
+ this.applyBackgroundOn !== 'section' ? '8px' : 'initial'
172
+ if (this.backgroundImage) {
173
+ styles = {
174
+ [`background-image`]: `url(${this.backgroundImage})`,
175
+ [`background-size`]: `cover`,
176
+ [`background-position`]: `center center`,
177
+ color: '#ffffff',
178
+ ['border-radius']: borderRadius
179
+ }
180
+ }
181
+ if (this.backgroundVariant) {
182
+ let bgColour
183
+ switch (this.backgroundVariant) {
184
+ case 'grey':
185
+ case 'light':
186
+ bgColour = colors.lightgray
187
+ break
188
+ case 'dark':
189
+ bgColour = colors.gray
190
+ break
191
+ case 'yellow':
192
+ bgColour = colors.orange
193
+ break
194
+ case 'white':
195
+ bgColour = colors.white
196
+ break
197
+ case 'lightblue':
198
+ bgColour = colors.lightblue
199
+ break
200
+ case 'lightred':
201
+ bgColour = colors.lightred
202
+ break
203
+ default:
204
+ bgColour = 'transparent'
205
+ }
206
+ styles = {
207
+ ...(styles || {}),
208
+ [`background-color`]: bgColour,
209
+ ['border-radius']: borderRadius
210
+ }
211
+ }
212
+
213
+ if (this.bordered) {
214
+ styles = {
215
+ ...(styles || {}),
216
+ [`border`]: `1px solid ` + colors.gray
217
+ }
218
+ }
219
+
220
+ return styles
221
+ },
222
+ hasContentClass() {
223
+ return this.contentClass.length > 0
224
+ }
225
+ },
226
+ mounted() {
227
+ window.addEventListener('resize', this.setColumnSize)
228
+ this.setColumnSize()
229
+ },
230
+ beforeDestroy() {
231
+ window.removeEventListener('resize', this.setColumnSize)
232
+ },
233
+ methods: {
234
+ setColumnSize() {
235
+ setTimeout(() => {
236
+ const parentWidth = window.screen.width
237
+ const isMobileView = parentWidth < 480
238
+ const isTabletView = !isMobileView && parentWidth < 767
239
+ this.$emit('isMobileView', isMobileView)
240
+ this.$emit('isTabletView', isTabletView)
241
+ this.$emit('isDesktopView', !isTabletView && !isMobileView)
242
+ this.$emit('isMobileOrTabletView', isMobileView || isTabletView)
243
+ })
244
+ }
245
+ }
246
+ }
247
+ </script>
248
+
249
+ <style lang="scss" scoped>
250
+ @import '../../../includes/scss/all';
251
+ .section-group {
252
+ $basePadding: 16px;
253
+ padding-top: $basePadding * 2;
254
+ padding-bottom: $basePadding * 2;
255
+
256
+ &--noPaddingTop {
257
+ padding-top: 0px;
258
+ }
259
+
260
+ &--noPaddingBottom {
261
+ padding-bottom: 0px;
262
+ }
263
+
264
+ &__row {
265
+ padding-top: $basePadding;
266
+ }
267
+
268
+ &.rtl {
269
+ @include makeRTL;
270
+ }
271
+
272
+ &__subheading {
273
+ display: inline-block;
274
+ }
275
+
276
+ &__content {
277
+ padding-bottom: $basePadding;
278
+ > :deep(.row) {
279
+ row-gap: calc(#{$basePadding} / 2);
280
+ }
281
+
282
+ &--withoutTitle {
283
+ padding-top: 0;
284
+ }
285
+ &--withoutFooter {
286
+ padding-bottom: 0;
287
+ }
288
+ }
289
+
290
+ &__heading {
291
+ display: inline-block;
292
+ padding-bottom: $basePadding;
293
+ }
294
+
295
+ @media screen and (min-width: 767px) {
296
+ &--size {
297
+ &-content {
298
+ .section-group__block {
299
+ max-width: calc(66%);
300
+ }
301
+ }
302
+ &-half-content {
303
+ .section-group__block {
304
+ max-width: calc(33% - 15px);
305
+ }
306
+ }
307
+ }
308
+ }
309
+ }
310
+ </style>
@@ -0,0 +1,74 @@
1
+ import SubHeader from './index.vue'
2
+
3
+ const items = [
4
+ {
5
+ icon:
6
+ '<svg width="37" height="36" viewBox="0 0 37 36" fill="none" xmlns="http://www.w3.org/2000/svg">\n' +
7
+ '<path fill-rule="evenodd" clip-rule="evenodd" d="M18.5 36C28.4411 36 36.5 27.9411 36.5 18C36.5 8.05887 28.4411 0 18.5 0C8.55887 0 0.5 8.05887 0.5 18C0.5 27.9411 8.55887 36 18.5 36ZM22.736 23.38C23.4293 22.7 23.776 21.8333 23.776 20.78C23.776 18.8867 22.636 17.6667 20.356 17.12L17.836 16.56C17.476 16.48 17.2227 16.3533 17.076 16.18C16.9293 15.9933 16.856 15.7667 16.856 15.5C16.856 15.14 17.0093 14.84 17.316 14.6C17.6227 14.36 18.0293 14.24 18.536 14.24C18.9893 14.24 19.4027 14.3467 19.776 14.56C20.1627 14.7733 20.4493 15.1067 20.636 15.56L23.536 14.8C23.2827 14.0533 22.8493 13.4267 22.236 12.92C21.6227 12.4133 20.8827 12.0667 20.016 11.88V9.6H17.356V11.84C16.196 12.0267 15.276 12.46 14.596 13.14C13.9293 13.8067 13.596 14.6533 13.596 15.68C13.596 16.7333 13.9027 17.5467 14.516 18.12C15.1293 18.68 15.9493 19.08 16.976 19.32L19.476 19.88C19.9027 19.96 20.2027 20.0933 20.376 20.28C20.5493 20.4667 20.636 20.7067 20.636 21C20.636 21.3733 20.4693 21.68 20.136 21.92C19.8027 22.1467 19.3493 22.26 18.776 22.26C17.5227 22.26 16.7093 21.7 16.336 20.58L13.276 21.52C13.516 22.36 14.0027 23.06 14.736 23.62C15.4693 24.18 16.3427 24.5467 17.356 24.72V27H20.016V24.7C21.136 24.5 22.0427 24.06 22.736 23.38Z" fill="#191919"/>\n' +
8
+ '</svg>\n',
9
+ title: 'Location',
10
+ description: '717 flinders street, Melbourne',
11
+ linkHref: 'https://www.google.com/maps?q=717 flinders street, Melbourne',
12
+ titleSize: 'extra-large',
13
+ isDescriptionBolded: true
14
+ },
15
+ {
16
+ icon:
17
+ '<svg width="37" height="36" viewBox="0 0 37 36" fill="none" xmlns="http://www.w3.org/2000/svg">\n' +
18
+ '<path fill-rule="evenodd" clip-rule="evenodd" d="M18.5 36C28.4411 36 36.5 27.9411 36.5 18C36.5 8.05887 28.4411 0 18.5 0C8.55887 0 0.5 8.05887 0.5 18C0.5 27.9411 8.55887 36 18.5 36ZM22.736 23.38C23.4293 22.7 23.776 21.8333 23.776 20.78C23.776 18.8867 22.636 17.6667 20.356 17.12L17.836 16.56C17.476 16.48 17.2227 16.3533 17.076 16.18C16.9293 15.9933 16.856 15.7667 16.856 15.5C16.856 15.14 17.0093 14.84 17.316 14.6C17.6227 14.36 18.0293 14.24 18.536 14.24C18.9893 14.24 19.4027 14.3467 19.776 14.56C20.1627 14.7733 20.4493 15.1067 20.636 15.56L23.536 14.8C23.2827 14.0533 22.8493 13.4267 22.236 12.92C21.6227 12.4133 20.8827 12.0667 20.016 11.88V9.6H17.356V11.84C16.196 12.0267 15.276 12.46 14.596 13.14C13.9293 13.8067 13.596 14.6533 13.596 15.68C13.596 16.7333 13.9027 17.5467 14.516 18.12C15.1293 18.68 15.9493 19.08 16.976 19.32L19.476 19.88C19.9027 19.96 20.2027 20.0933 20.376 20.28C20.5493 20.4667 20.636 20.7067 20.636 21C20.636 21.3733 20.4693 21.68 20.136 21.92C19.8027 22.1467 19.3493 22.26 18.776 22.26C17.5227 22.26 16.7093 21.7 16.336 20.58L13.276 21.52C13.516 22.36 14.0027 23.06 14.736 23.62C15.4693 24.18 16.3427 24.5467 17.356 24.72V27H20.016V24.7C21.136 24.5 22.0427 24.06 22.736 23.38Z" fill="#191919"/>\n' +
19
+ '</svg>\n',
20
+ title: 'Date',
21
+ description: 'Monday 27 September 2021',
22
+ titleSize: 'extra-large',
23
+ isDescriptionBolded: true
24
+ },
25
+ {
26
+ icon:
27
+ '<svg width="37" height="36" viewBox="0 0 37 36" fill="none" xmlns="http://www.w3.org/2000/svg">\n' +
28
+ '<path fill-rule="evenodd" clip-rule="evenodd" d="M18.5 36C28.4411 36 36.5 27.9411 36.5 18C36.5 8.05887 28.4411 0 18.5 0C8.55887 0 0.5 8.05887 0.5 18C0.5 27.9411 8.55887 36 18.5 36ZM22.736 23.38C23.4293 22.7 23.776 21.8333 23.776 20.78C23.776 18.8867 22.636 17.6667 20.356 17.12L17.836 16.56C17.476 16.48 17.2227 16.3533 17.076 16.18C16.9293 15.9933 16.856 15.7667 16.856 15.5C16.856 15.14 17.0093 14.84 17.316 14.6C17.6227 14.36 18.0293 14.24 18.536 14.24C18.9893 14.24 19.4027 14.3467 19.776 14.56C20.1627 14.7733 20.4493 15.1067 20.636 15.56L23.536 14.8C23.2827 14.0533 22.8493 13.4267 22.236 12.92C21.6227 12.4133 20.8827 12.0667 20.016 11.88V9.6H17.356V11.84C16.196 12.0267 15.276 12.46 14.596 13.14C13.9293 13.8067 13.596 14.6533 13.596 15.68C13.596 16.7333 13.9027 17.5467 14.516 18.12C15.1293 18.68 15.9493 19.08 16.976 19.32L19.476 19.88C19.9027 19.96 20.2027 20.0933 20.376 20.28C20.5493 20.4667 20.636 20.7067 20.636 21C20.636 21.3733 20.4693 21.68 20.136 21.92C19.8027 22.1467 19.3493 22.26 18.776 22.26C17.5227 22.26 16.7093 21.7 16.336 20.58L13.276 21.52C13.516 22.36 14.0027 23.06 14.736 23.62C15.4693 24.18 16.3427 24.5467 17.356 24.72V27H20.016V24.7C21.136 24.5 22.0427 24.06 22.736 23.38Z" fill="#191919"/>\n' +
29
+ '</svg>\n',
30
+ title: 'Time',
31
+ description: '2:04pm',
32
+ titleSize: 'extra-large',
33
+ isDescriptionBolded: true
34
+ },
35
+ {
36
+ icon:
37
+ '<svg width="37" height="36" viewBox="0 0 37 36" fill="none" xmlns="http://www.w3.org/2000/svg">\n' +
38
+ '<path fill-rule="evenodd" clip-rule="evenodd" d="M18.5 36C28.4411 36 36.5 27.9411 36.5 18C36.5 8.05887 28.4411 0 18.5 0C8.55887 0 0.5 8.05887 0.5 18C0.5 27.9411 8.55887 36 18.5 36ZM22.736 23.38C23.4293 22.7 23.776 21.8333 23.776 20.78C23.776 18.8867 22.636 17.6667 20.356 17.12L17.836 16.56C17.476 16.48 17.2227 16.3533 17.076 16.18C16.9293 15.9933 16.856 15.7667 16.856 15.5C16.856 15.14 17.0093 14.84 17.316 14.6C17.6227 14.36 18.0293 14.24 18.536 14.24C18.9893 14.24 19.4027 14.3467 19.776 14.56C20.1627 14.7733 20.4493 15.1067 20.636 15.56L23.536 14.8C23.2827 14.0533 22.8493 13.4267 22.236 12.92C21.6227 12.4133 20.8827 12.0667 20.016 11.88V9.6H17.356V11.84C16.196 12.0267 15.276 12.46 14.596 13.14C13.9293 13.8067 13.596 14.6533 13.596 15.68C13.596 16.7333 13.9027 17.5467 14.516 18.12C15.1293 18.68 15.9493 19.08 16.976 19.32L19.476 19.88C19.9027 19.96 20.2027 20.0933 20.376 20.28C20.5493 20.4667 20.636 20.7067 20.636 21C20.636 21.3733 20.4693 21.68 20.136 21.92C19.8027 22.1467 19.3493 22.26 18.776 22.26C17.5227 22.26 16.7093 21.7 16.336 20.58L13.276 21.52C13.516 22.36 14.0027 23.06 14.736 23.62C15.4693 24.18 16.3427 24.5467 17.356 24.72V27H20.016V24.7C21.136 24.5 22.0427 24.06 22.736 23.38Z" fill="#191919"/>\n' +
39
+ '</svg>\n',
40
+ title: 'Price',
41
+ description: 'Free admission',
42
+ titleSize: 'extra-large',
43
+ isDescriptionBolded: true
44
+ }
45
+ ]
46
+
47
+ export default {
48
+ title: 'Containers/SubHeader',
49
+ component: SubHeader,
50
+ argTypes: {
51
+ background: {
52
+ control: 'select',
53
+ options: ['none', 'light', 'dark', 'grey', 'yellow', 'white']
54
+ },
55
+ iconPosition: {
56
+ control: 'select',
57
+ options: ['after-title', 'before-description']
58
+ }
59
+ }
60
+ }
61
+
62
+ export const Default = {}
63
+
64
+ Default.args = {
65
+ itemList: items,
66
+ alignLeft: false,
67
+ cardColumnSize: 1,
68
+ singleLineCards: false,
69
+ showIcon: true,
70
+ background: 'none',
71
+ heading: 'Event Details',
72
+ iconPosition: 'after-title',
73
+ type: 'default'
74
+ }
@@ -0,0 +1,149 @@
1
+ <template>
2
+ <card-grid
3
+ v-if="itemList.length > 0"
4
+ :cards="itemList"
5
+ :class="`subheader subheader--${type}`"
6
+ :title="heading"
7
+ :title-tag="'h3'"
8
+ :force-lg-columns-per-row="cardColumnSize"
9
+ :force-md-columns-per-row="cardColumnSize"
10
+ :background-variant="background"
11
+ :is-selectable="true"
12
+ :row-spacing="isSingleColumn && !singleLineCards ? 'large' : 'small'"
13
+ @selected="selectedCard"
14
+ @gridColumnSize="
15
+ (gridColumnSize) => (isSingleColumn = gridColumnSize === 1)
16
+ "
17
+ >
18
+ <template v-slot:cardItem="{ card }">
19
+ <card-grid-item
20
+ :show-divider="!singleLineCards"
21
+ :card-header-title="singleLineCards ? null : card.title"
22
+ :header-size="card.titleSize"
23
+ :header-tag="'h2'"
24
+ :header-text-align="alignLeft ? 'left' : 'center'"
25
+ :background-variant="'transparent'"
26
+ :glyph-src="showIcon ? card.icon : null"
27
+ :icon-position="iconPosition"
28
+ :icon-is-bordered="false"
29
+ :disable-select="!card.linkHref"
30
+ :card-padding="'none'"
31
+ >
32
+ <!-- eslint-disable vue/no-v-html -->
33
+ <template v-slot:cardDescription>
34
+ <div
35
+ v-if="card.description"
36
+ class="subheader__description"
37
+ :class="{
38
+ [`w-100 text-left`]: alignLeft
39
+ }"
40
+ >
41
+ <strong
42
+ v-if="singleLineCards && card.title"
43
+ v-html="card.title + ':'"
44
+ >
45
+ </strong>
46
+ <span v-html="card.description"></span>
47
+ </div>
48
+ </template>
49
+ </card-grid-item>
50
+ </template>
51
+ </card-grid>
52
+ </template>
53
+ <script>
54
+ import { navigateToPath, isGovSite } from '../../../../lib/utility'
55
+ import CardGrid from '../../Common/CardGrid/index.vue'
56
+ import CardGridItem from '../../Common/CardGridItem/index.vue'
57
+
58
+ export default {
59
+ name: 'Subheader',
60
+ components: { CardGrid, CardGridItem },
61
+ props: {
62
+ itemList: {
63
+ type: Array,
64
+ required: true
65
+ },
66
+ cardColumnSize: {
67
+ type: Number,
68
+ default: null
69
+ },
70
+ singleLineCards: {
71
+ type: Boolean
72
+ },
73
+ background: {
74
+ type: String,
75
+ default: 'none'
76
+ },
77
+ heading: {
78
+ type: String,
79
+ default: ''
80
+ },
81
+ alignLeft: {
82
+ type: Boolean
83
+ },
84
+ showIcon: {
85
+ type: Boolean,
86
+ default: true
87
+ },
88
+ iconPosition: {
89
+ type: String,
90
+ default: null
91
+ },
92
+ type: {
93
+ type: String,
94
+ default: ''
95
+ }
96
+ },
97
+ data() {
98
+ return {
99
+ isSingleColumn: false
100
+ }
101
+ },
102
+ methods: {
103
+ selectedCard(card) {
104
+ // Some custom logic for gov caretaker logic
105
+ if (process.env.CARETAKER && process.env.CARETAKER === 'true') {
106
+ if (!isGovSite(card?.selectedCard?.linkHref)) {
107
+ this.$store.commit('page/SET_CARETAKER_REF', 'subheader')
108
+ this.$root.$emit('caretaker-open', card?.selectedCard?.linkHref)
109
+ } else {
110
+ navigateToPath.call(
111
+ this,
112
+ card?.selectedCard?.linkHref,
113
+ card?.ev?.ctrlKey === true || card?.ev?.metaKey === true
114
+ )
115
+ }
116
+ } else {
117
+ navigateToPath.call(
118
+ this,
119
+ card?.selectedCard?.linkHref,
120
+ card?.ev?.ctrlKey === true || card?.ev?.metaKey === true
121
+ )
122
+ }
123
+ }
124
+ }
125
+ }
126
+ </script>
127
+ <style lang="scss" scoped>
128
+ .subheader {
129
+ &--resource {
130
+ :deep(.card-grid-item__description--withIcon) {
131
+ align-items: center;
132
+ }
133
+ }
134
+ &--event {
135
+ background-color: #f3f3f3 !important;
136
+ padding: {
137
+ top: 16px !important;
138
+ bottom: 16px !important;
139
+ }
140
+ :deep(.card-grid-item__card .card-title) {
141
+ margin-bottom: 0;
142
+ font-size: 20px;
143
+ }
144
+ :deep(.icon) {
145
+ width: 20px;
146
+ }
147
+ }
148
+ }
149
+ </style>
@@ -0,0 +1,13 @@
1
+ import AlertStrip from './index.vue'
2
+
3
+ export default {
4
+ title: 'Global/AlertStrip',
5
+ component: AlertStrip,
6
+ args: {
7
+ isWarning: false,
8
+ desc: 'Refresh the page in order to show alert strip after dismissing it.',
9
+ url: '#'
10
+ },
11
+ };
12
+
13
+ export const Primary = {}
@@ -0,0 +1,145 @@
1
+ <template>
2
+ <div
3
+ v-if="showAlert"
4
+ dismissible
5
+ variant="warning"
6
+ class="alert alert-dismissible global-alert"
7
+ :class="{
8
+ 'global-alert__warning': isWarning,
9
+ 'global-alert__info': !isWarning
10
+ }"
11
+ dismiss-label="Close information message"
12
+ @dismissed="handleDismissed()"
13
+ >
14
+
15
+ <div class="global-alert__icon__wrapper">
16
+ <img
17
+ :src="isWarning ? warningIcon : infoIcon"
18
+ class="global-alert__icon"
19
+ :alt="isWarning ? 'warning' : 'info'"
20
+ />
21
+ </div>
22
+ <div class="global-alert__link__wrapper">
23
+ <a
24
+ :href="url"
25
+ class="global-alert__link"
26
+ tabindex="0"
27
+ @click.prevent="handleClick(url)"
28
+ >{{ desc }}</a
29
+ >
30
+ <button type="button" class="btn btn-close btn-close-white" data-bs-dismiss="alert" @click.prevent="showAlert = false, handleDismissed()" aria-label="Close"></button>
31
+ </div>
32
+ </div>
33
+ </template>
34
+
35
+ <script setup>
36
+ import warningIcon from '../../../assets/icons/Strip/Warning.svg?url'
37
+ import infoIcon from '../../../assets/icons/Strip/Information.svg?url'
38
+
39
+ const props = defineProps({
40
+ isWarning: {
41
+ type: Boolean,
42
+ default: false
43
+ },
44
+ desc: {
45
+ type: String,
46
+ default:
47
+ 'Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt.'
48
+ },
49
+ url: {
50
+ type: String,
51
+ default: '#'
52
+ }
53
+ })
54
+ </script>
55
+
56
+ <script>
57
+ import { isAbsoluteUrl } from '../../../../lib/utility'
58
+
59
+ export default {
60
+ name: "AlertStrip",
61
+
62
+ data() {
63
+ return {
64
+ showAlert: true
65
+ }
66
+
67
+ },
68
+ computed: {
69
+ type() {
70
+ return this.isWarning ? 'alert' : 'notice'
71
+ }
72
+ },
73
+ methods: {
74
+ handleClick(link) {
75
+ if (link) {
76
+ const attrs = {
77
+ group: this.type,
78
+ label: this.desc,
79
+ clickedOnPage: this.$route?.path,
80
+ globalStrip: true
81
+ }
82
+ if (isAbsoluteUrl(link)) {
83
+ window.open(link)
84
+ } else {
85
+ this.$router.push(link)
86
+ }
87
+ if (this.$gtm) {
88
+ this.$gtm.push({
89
+ event: `custom.interaction.${this.type}.click`,
90
+ ...attrs
91
+ })
92
+ }
93
+ }
94
+ },
95
+
96
+ handleDismissed() {
97
+ this.showAlert = false;
98
+ this.$emit('dismissed')
99
+ if (this.$gtm) {
100
+ const attrs = {
101
+ group: this.type,
102
+ label: this.desc,
103
+ clickedOnPage: this.$route?.path,
104
+ globalStrip: true
105
+ }
106
+ this.$gtm.push({
107
+ event: `custom.interaction.${this.type}.close`,
108
+ ...attrs
109
+ })
110
+ }
111
+ }
112
+ }
113
+ }
114
+ </script>
115
+
116
+ <style lang="scss">
117
+ .global-alert {
118
+ .close {
119
+ padding-right: 24px;
120
+ padding-left: 24px;
121
+ height: 100%;
122
+ text-indent: -9999em;
123
+ text-transform: uppercase;
124
+ background-image: url('../../../assets/icons/Strip/AlertDismiss.svg');
125
+ background-repeat: no-repeat;
126
+ background-position: center;
127
+ opacity: 1;
128
+
129
+ &:hover,
130
+ &:focus {
131
+ opacity: 1 !important;
132
+ }
133
+
134
+ &:focus {
135
+ outline: 4px solid #803b94;
136
+ outline-offset: -5px;
137
+ z-index: 0;
138
+ }
139
+ }
140
+ }
141
+ </style>
142
+
143
+ <style lang="scss" scoped>
144
+ @import './styles';
145
+ </style>