@worksafevictoria/wcl7.5 1.10.0 → 1.12.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 (44) hide show
  1. package/package.json +1 -1
  2. package/src/assets/styles/generated-icons.scss +46 -46
  3. package/src/components/Common/CardGridItem/card-grid-item-caret.vue +40 -46
  4. package/src/components/Common/CardGridItem/card-grid-item-icon.vue +1 -1
  5. package/src/components/Common/CardGridItem/index.vue +153 -115
  6. package/src/components/Containers/Carousel/index.stories.js +6 -4
  7. package/src/components/Containers/Carousel/index.vue +131 -120
  8. package/src/components/Containers/HomepageHeader/index.stories.js +1 -1
  9. package/src/components/Containers/HomepageHeaderNew/index.stories.js +3 -15
  10. package/src/components/Containers/HomepageHeaderNew/index.vue +3 -7
  11. package/src/components/Global/AppFooter/index.vue +29 -19
  12. package/src/components/Global/AppHeader/ModalSearch/index.vue +7 -1
  13. package/src/components/Global/AppHeader/index.stories.js +2 -2
  14. package/src/components/Global/AppHeaderNew/ModalSearch/index.vue +21 -17
  15. package/src/components/Global/AppHeaderNew/includes.scss +4 -2
  16. package/src/components/Global/AppHeaderNew/index.stories.js +2 -2
  17. package/src/components/Global/AppHeaderNew/index.vue +126 -386
  18. package/src/components/Global/AppHeaderNew/mobile.scss +41 -6
  19. package/src/components/Global/AppHeaderNew/styles.scss +57 -45
  20. package/src/components/Global/BackToTop/index.vue +16 -16
  21. package/src/components/Global/ContrastMode/index.stories.js +1 -1
  22. package/src/components/Global/DirectoryFilters/index.vue +24 -18
  23. package/src/components/Global/HeroHeader/index.vue +62 -73
  24. package/src/components/Global/SocialShare/index.vue +114 -129
  25. package/src/components/Global/Strip/index.vue +43 -39
  26. package/src/components/Paragraphs/Accordion/AccordionItem/index.vue +22 -24
  27. package/src/components/Paragraphs/Accordion/StepperItem/index.vue +15 -15
  28. package/src/components/Paragraphs/Calculator/CardContainer/index.vue +74 -75
  29. package/src/components/Paragraphs/Calculator/RiskLevel/index.vue +31 -39
  30. package/src/components/Paragraphs/Directory/Asbestos/Records/SingleRecord/index.vue +104 -107
  31. package/src/components/Paragraphs/Directory/Asbestos/Records/index.vue +129 -64
  32. package/src/components/Paragraphs/Directory/HSCP/Records/SingleRecord/index.vue +127 -133
  33. package/src/components/Paragraphs/Directory/HSCP/Records/index.vue +112 -66
  34. package/src/components/Paragraphs/Statistics/index.vue +9 -9
  35. package/src/components/Paragraphs/Tabs/index.vue +4 -4
  36. package/src/components/Paragraphs/TabulatedData/index.vue +27 -20
  37. package/src/components/SubComponents/CtaButton/index.vue +47 -44
  38. package/src/components/SubComponents/Icon/README.md +2 -2
  39. package/src/components/SubComponents/Icon/example.js +1 -0
  40. package/src/components/SubComponents/Icon/index.stories.js +1 -1
  41. package/src/components/SubComponents/Icon/index.vue +47 -47
  42. package/src/components/SubComponents/ResourceGroup/cardbody.vue +18 -16
  43. package/src/components/SubComponents/VideoThumbnail/index.vue +8 -6
  44. package/src/mock/carousel-items.js +46 -81
@@ -12,14 +12,8 @@
12
12
  : false
13
13
  "
14
14
  >
15
- <row
16
- v-if="type === 'hero'"
17
- class="wcl-hero-header__wrap wcl-hero-header__showmore"
18
- >
19
- <container
20
- class="wcl-hero-header__content-wrapper__content"
21
- :class="{ rtl }"
22
- >
15
+ <row v-if="type === 'hero'" class="wcl-hero-header__wrap wcl-hero-header__showmore">
16
+ <container class="wcl-hero-header__content-wrapper__content" :class="{ rtl }">
23
17
  <row>
24
18
  <column class="wcl-hero-header__content-wrapper__content-col">
25
19
  <div>
@@ -28,7 +22,12 @@
28
22
  class="btn btn-link wcl-hero-header__showmore--link"
29
23
  @click="showMore"
30
24
  >
31
- <icon width="16px" height="10.61px" :glyph="CaretDown" />
25
+ <icon
26
+ width="16px"
27
+ height="10.61px"
28
+ :glyph="CaretDown"
29
+ icon-alt="expand icon"
30
+ />
32
31
  <span class="wcl-hero-header__showmore--text">Show more</span>
33
32
  </button>
34
33
  </div>
@@ -38,18 +37,14 @@
38
37
  </row>
39
38
  <row class="wcl-hero-header__wrap">
40
39
  <div class="wcl-hero-header__content-wrapper">
41
- <container
42
- class="wcl-hero-header__content-wrapper__content"
43
- :class="{ rtl }"
44
- >
40
+ <container class="wcl-hero-header__content-wrapper__content" :class="{ rtl }">
45
41
  <row>
46
42
  <column
47
43
  :xs="generateGridValue(type)"
48
44
  class="wcl-hero-header__content-wrapper__content-col"
49
45
  :md="7"
50
46
  :class="{
51
- [`wcl-hero-header__content-wrapper__content-col--split`]:
52
- $slots.side,
47
+ [`wcl-hero-header__content-wrapper__content-col--split`]: $slots.side,
53
48
  }"
54
49
  >
55
50
  <breadcrumb
@@ -64,10 +59,7 @@
64
59
  :content="strippedTitle"
65
60
  class="wcl-hero-header__title"
66
61
  />
67
- <div
68
- v-if="subTitle || $slots.description"
69
- class="header-rich-text-wrap"
70
- >
62
+ <div v-if="subTitle || $slots.description" class="header-rich-text-wrap">
71
63
  <rich-text
72
64
  v-if="subTitle"
73
65
  :content="subTitle"
@@ -120,9 +112,7 @@
120
112
  <column
121
113
  v-if="type === 'collection' && showMask"
122
114
  :sm="'7'"
123
- :style="
124
- image && image.url ? `background-image:url(${image.url})` : false
125
- "
115
+ :style="image && image.url ? `background-image:url(${image.url})` : false"
126
116
  class="wcl-hero-header__right type-collection"
127
117
  :class="{ 'rtl-flip': rtl }"
128
118
  :offset-sm="rtl ? 0 : 5"
@@ -131,6 +121,7 @@
131
121
  <img
132
122
  src="../../../assets/images/hero-header-mask.png"
133
123
  role="presentation"
124
+ alt="hero header mask"
134
125
  />
135
126
  </div>
136
127
  </column>
@@ -143,9 +134,7 @@
143
134
  :class="{ 'rtl-flip': rtl }"
144
135
  :offset-md="rtl ? 0 : 7"
145
136
  :offset-xs="rtl ? 0 : 7"
146
- :style="
147
- image && image.url ? `background-image:url(${image.url})` : false
148
- "
137
+ :style="image && image.url ? `background-image:url(${image.url})` : false"
149
138
  >
150
139
  &nbsp;
151
140
  </column>
@@ -155,19 +144,19 @@
155
144
  </container>
156
145
  </template>
157
146
  <script>
158
- import SocialShare from './../SocialShare/index.vue'
159
- import Container from './../../Containers/Container/index.vue'
160
- import Row from './../../Containers/Row/index.vue'
161
- import Column from './../../Containers/Column/index.vue'
162
- import Breadcrumb from './../../SubComponents/Breadcrumb/index.vue'
163
- import CtaButton from './../../SubComponents/CtaButton/index.vue'
164
- import Icon from './../../SubComponents/Icon/index.vue'
165
- import HeroHeaderChevron from './../../../assets/images/hero-header-chevron.svg?component'
166
- import CaretDown from './../../../assets/icons/chev-down-white.svg?url'
167
- import RichText from './../../Paragraphs/RichText/index.vue'
147
+ import SocialShare from "./../SocialShare/index.vue";
148
+ import Container from "./../../Containers/Container/index.vue";
149
+ import Row from "./../../Containers/Row/index.vue";
150
+ import Column from "./../../Containers/Column/index.vue";
151
+ import Breadcrumb from "./../../SubComponents/Breadcrumb/index.vue";
152
+ import CtaButton from "./../../SubComponents/CtaButton/index.vue";
153
+ import Icon from "./../../SubComponents/Icon/index.vue";
154
+ import HeroHeaderChevron from "./../../../assets/images/hero-header-chevron.svg?component";
155
+ import CaretDown from "./../../../assets/icons/chev-down-white.svg?url";
156
+ import RichText from "./../../Paragraphs/RichText/index.vue";
168
157
 
169
158
  export default {
170
- name: 'HeroHeader',
159
+ name: "HeroHeader",
171
160
  components: {
172
161
  Container,
173
162
  Row,
@@ -182,15 +171,15 @@ export default {
182
171
  props: {
183
172
  type: {
184
173
  type: String,
185
- default: 'default',
174
+ default: "default",
186
175
  },
187
176
  title: {
188
177
  type: String,
189
- default: '',
178
+ default: "",
190
179
  },
191
180
  description: {
192
181
  type: String,
193
- default: '',
182
+ default: "",
194
183
  },
195
184
  image: {
196
185
  type: Object,
@@ -234,33 +223,33 @@ export default {
234
223
  socialShareToggle: false,
235
224
  HeroHeaderChevron,
236
225
  CaretDown,
237
- }
226
+ };
238
227
  },
239
228
  computed: {
240
229
  generatedClass() {
241
- let c = `wcl-hero-header type-${this.type}`
230
+ let c = `wcl-hero-header type-${this.type}`;
242
231
  if (this.bgColor) {
243
- c = c + ' -with-bg'
232
+ c = c + " -with-bg";
244
233
  }
245
- return c
234
+ return c;
246
235
  },
247
236
  subTitle() {
248
- let content = undefined
237
+ let content = undefined;
249
238
  if (this.description) {
250
- if (typeof this.description === 'string') {
251
- content = this.description
252
- } else if (typeof this.description === 'object') {
253
- content = this.description.processed
239
+ if (typeof this.description === "string") {
240
+ content = this.description;
241
+ } else if (typeof this.description === "object") {
242
+ content = this.description.processed;
254
243
  }
255
244
  }
256
- if (content && !content.startsWith('<') && !this.tag?.startsWith('h')) {
257
- content = `<p class="intro">${content}</p>`
245
+ if (content && !content.startsWith("<") && !this.tag?.startsWith("h")) {
246
+ content = `<p class="intro">${content}</p>`;
258
247
  }
259
- return content
248
+ return content;
260
249
  },
261
250
  strippedTitle() {
262
- if (this.type === 'hero' && this.title.length > 122) {
263
- return this.title.slice(0, 122) + '...'
251
+ if (this.type === "hero" && this.title.length > 122) {
252
+ return this.title.slice(0, 122) + "...";
264
253
  }
265
254
  // Will reintroduce if business requirement
266
255
  // if (this.title?.includes('.')) {
@@ -269,7 +258,7 @@ export default {
269
258
  // return sentences.map((sentence) => sentence.trim()).join('.<br/>')
270
259
  // }
271
260
  // }
272
- return this.title
261
+ return this.title;
273
262
  },
274
263
  // Will reintroduce if business requirement
275
264
  // strippedDescription() {
@@ -282,57 +271,57 @@ export default {
282
271
  },
283
272
  mounted() {
284
273
  if (this.$bus) {
285
- this.$bus.$on('scrollToTop', () => {
274
+ this.$bus.$on("scrollToTop", () => {
286
275
  setTimeout(() => {
287
- const title = this.$refs.title
276
+ const title = this.$refs.title;
288
277
  if (title) {
289
- title.$el.setAttribute('tabindex', 0)
290
- title.$el.focus()
278
+ title.$el.setAttribute("tabindex", 0);
279
+ title.$el.focus();
291
280
  }
292
- }, 500)
293
- })
281
+ }, 500);
282
+ });
294
283
  }
295
284
  },
296
285
  beforeDestroy() {
297
286
  if (this.$bus) {
298
- this.$bus.$off('scrollToTop')
287
+ this.$bus.$off("scrollToTop");
299
288
  }
300
289
  },
301
290
  methods: {
302
291
  generateGridValue(type) {
303
292
  switch (type) {
304
293
  //the prop type default
305
- case 'default':
306
- return '6'
307
- case 'image':
308
- return '6'
294
+ case "default":
295
+ return "6";
296
+ case "image":
297
+ return "6";
309
298
  default:
310
- return '7'
299
+ return "7";
311
300
  }
312
301
  },
313
302
  showMore(ev) {
314
303
  if (ev?.target?.scrollIntoView) {
315
304
  ev.target.scrollIntoView({
316
- behavior: 'smooth',
305
+ behavior: "smooth",
317
306
  alignToTop: true,
318
- block: 'start',
319
- })
307
+ block: "start",
308
+ });
320
309
  }
321
310
  },
322
311
  fireGTM() {
323
312
  let attrs = {
324
313
  label: this.cta.uri,
325
314
  document_title: this.cta.filename,
326
- }
315
+ };
327
316
  if (this.$gtm) {
328
- this.$gtm.push({ event: 'custom.interaction.download', ...attrs })
317
+ this.$gtm.push({ event: "custom.interaction.download", ...attrs });
329
318
  }
330
319
  },
331
320
  },
332
- }
321
+ };
333
322
  </script>
334
323
  <style lang="scss" scoped>
335
- @import './styles';
324
+ @import "./styles";
336
325
 
337
326
  .wysiwyg {
338
327
  :deep(.cta-button:last-child) {
@@ -7,153 +7,138 @@
7
7
  <div class="social-share__wrap">
8
8
  <span class="social-share__header">Share</span>
9
9
  <div class="social-share__button-wrapper">
10
- <b-button
10
+ <a
11
11
  v-if="showEmail"
12
- tabindex="-1"
13
- variant="link"
14
- class="social-share__button"
12
+ :href="`mailto:?body=${url}`"
13
+ class="social-share__button social-share__anchor"
15
14
  >
16
15
  <div class="social-share__circle--black">
17
- <a
18
- tabindex="0"
19
- class="social-share__anchor"
20
- :href="`mailto:?body=${url}`"
21
- >
22
- <span class="visually-hidden">Email</span>
23
- <img
24
- role="presentation"
25
- class="social-share__img"
26
- :src="emailIcon"
27
- alt=""
28
- />
29
- </a></div
30
- ></b-button>
31
- <b-button
16
+ <span class="visually-hidden">Email</span>
17
+ <img
18
+ role="presentation"
19
+ class="social-share__img"
20
+ :src="emailIcon"
21
+ alt="social share email icon"
22
+ />
23
+ </div>
24
+ </a>
25
+
26
+ <a
32
27
  v-if="showFacebook"
33
- tabindex="-1"
34
- variant="link"
35
- class="social-share__button"
36
- ><div class="social-share__circle--black">
37
- <a
38
- tabindex="0"
39
- class="social-share__anchor"
40
- :href="`https://www.facebook.com/sharer.php?u=${url}`"
41
- target="_blank"
42
- >
43
- <span class="visually-hidden">Facebook</span>
44
- <img
45
- role="presentation"
46
- class="social-share__img"
47
- :src="facebookIcon"
48
- alt=""
49
- />
50
- </a></div
51
- ></b-button>
52
- <b-button
28
+ :href="`https://www.facebook.com/sharer.php?u=${url}`"
29
+ class="social-share__button social-share__anchor"
30
+ target="_blank"
31
+ >
32
+ <div class="social-share__circle--black">
33
+ <span class="visually-hidden">Facebook</span>
34
+ <img
35
+ role="presentation"
36
+ class="social-share__img"
37
+ :src="facebookIcon"
38
+ alt="social share facebook icon"
39
+ />
40
+ </div>
41
+ </a>
42
+
43
+ <a
53
44
  v-if="showTwitter"
54
- tabindex="-1"
55
- variant="link"
56
- class="social-share__button"
57
- ><div class="social-share__circle--black">
58
- <a
59
- tabindex="0"
60
- class="social-share__anchor"
61
- :href="`https://twitter.com/intent/tweet?url=${url}`"
62
- target="_blank"
63
- >
64
- <span class="visually-hidden">Twitter</span>
65
- <img
66
- role="presentation"
67
- class="social-share__img"
68
- :src="twitterIcon"
69
- alt=""
70
- />
71
- </a></div
72
- ></b-button>
45
+ :href="`https://twitter.com/intent/tweet?url=${url}`"
46
+ class="social-share__button social-share__anchor"
47
+ target="_blank"
48
+ >
49
+ <div class="social-share__circle--black">
50
+ <span class="visually-hidden">Twitter</span>
51
+ <img
52
+ role="presentation"
53
+ class="social-share__img"
54
+ :src="twitterIcon"
55
+ alt="social share twitter icon"
56
+ />
57
+ </div>
58
+ </a>
73
59
 
74
60
  <hr v-if="showPdf" class="social-share__hr" />
75
61
 
76
- <b-button
62
+ <a
77
63
  v-if="showPdf"
78
- tabindex="-1"
79
- variant="link"
64
+ href="#"
80
65
  class="social-share__button"
81
66
  @click.prevent="savePdf()"
82
- ><div class="social-share__circle--white">
83
- <a tabindex="0" class="social-share__anchor" href="#">
84
- <span class="visually-hidden">PDF</span>
85
- <img
86
- role="presentation"
87
- class="social-share__img-pdf"
88
- :src="officeFilePdfIcon"
89
- alt=""
90
- />
91
- </a></div
92
- ></b-button>
67
+ >
68
+ <div class="social-share__circle--white">
69
+ <span class="visually-hidden">PDF</span>
70
+ <img
71
+ role="presentation"
72
+ class="social-share__img-pdf"
73
+ :src="officeFilePdfIcon"
74
+ alt="social share pdf icon"
75
+ />
76
+ </div>
77
+ </a>
93
78
  </div>
94
79
  </div>
95
80
  </b-button-group>
96
81
  </template>
97
82
 
98
83
  <script>
99
- import emailIcon from '../../../assets/icons/SocialShare/email-white.svg?url'
100
- import facebookIcon from '../../../assets/icons/SocialShare/facebook-white.svg?url'
101
- import twitterIcon from '../../../assets/icons/SocialShare/x-icon-white.svg?url'
102
- import officeFilePdfIcon from '../../../assets/icons/SocialShare/office-file-pdf.svg?url'
103
- import { BButton, BButtonGroup } from 'bootstrap-vue-next'
84
+ import emailIcon from "../../../assets/icons/SocialShare/email-white.svg?url";
85
+ import facebookIcon from "../../../assets/icons/SocialShare/facebook-white.svg?url";
86
+ import twitterIcon from "../../../assets/icons/SocialShare/x-icon-white.svg?url";
87
+ import officeFilePdfIcon from "../../../assets/icons/SocialShare/office-file-pdf.svg?url";
88
+ import { BButton, BButtonGroup } from "bootstrap-vue-next";
104
89
 
105
90
  export default {
106
- name: 'SocialShare',
107
- components: { BButtonGroup, BButton },
108
- props: {
109
- rtl: {
110
- type: Boolean,
111
- default: false
112
- }
91
+ name: "SocialShare",
92
+ components: { BButtonGroup, BButton },
93
+ props: {
94
+ rtl: {
95
+ type: Boolean,
96
+ default: false,
113
97
  },
114
- data() {
115
- return {
116
- url: null,
117
- emailIcon,
118
- facebookIcon,
119
- twitterIcon,
120
- officeFilePdfIcon,
121
- mobileToggle: false,
122
- rightToggle: true
123
- };
98
+ },
99
+ data() {
100
+ return {
101
+ url: null,
102
+ emailIcon,
103
+ facebookIcon,
104
+ twitterIcon,
105
+ officeFilePdfIcon,
106
+ mobileToggle: false,
107
+ rightToggle: true,
108
+ };
109
+ },
110
+ computed: {
111
+ showFacebook() {
112
+ return true;
124
113
  },
125
- computed: {
126
- showFacebook() {
127
- return true;
128
- },
129
- showTwitter() {
130
- return true;
131
- },
132
- showEmail() {
133
- return true;
134
- },
135
- showPdf() {
136
- return this.$canPrint && this.$canPrint();
137
- }
114
+ showTwitter() {
115
+ return true;
138
116
  },
139
- mounted() {
140
- let winHref = window.location.href
141
- if (winHref.toLowerCase().includes("worksafe")) {
142
- this.url = window.location.href;
143
- }
117
+ showEmail() {
118
+ return true;
144
119
  },
145
- methods: {
146
- savePdf() {
147
- window.printOnLoad = true;
148
- let URL = `/pdf${window.location.pathname}`;
149
- window.open(URL);
150
- }
120
+ showPdf() {
121
+ return this.$canPrint && this.$canPrint();
122
+ },
123
+ },
124
+ mounted() {
125
+ let winHref = window.location.href;
126
+ if (winHref.toLowerCase().includes("worksafe")) {
127
+ this.url = window.location.href;
151
128
  }
152
- }
129
+ },
130
+ methods: {
131
+ savePdf() {
132
+ window.printOnLoad = true;
133
+ let URL = `/pdf${window.location.pathname}`;
134
+ window.open(URL);
135
+ },
136
+ },
137
+ };
153
138
  </script>
154
139
 
155
140
  <style lang="scss" scoped>
156
- @import '../../../includes/scss/all';
141
+ @import "../../../includes/scss/all";
157
142
 
158
143
  .social-share {
159
144
  background: $white;
@@ -167,7 +152,7 @@ export default {
167
152
  left: 0;
168
153
  z-index: 2;
169
154
 
170
- @include mq('sm') {
155
+ @include mq("sm") {
171
156
  position: relative;
172
157
  top: auto;
173
158
  left: auto;
@@ -179,7 +164,7 @@ export default {
179
164
  &__header {
180
165
  font-size: 14px;
181
166
  line-height: 50px;
182
- @include mq('sm') {
167
+ @include mq("sm") {
183
168
  line-height: 40px;
184
169
  }
185
170
  }
@@ -191,7 +176,7 @@ export default {
191
176
  align-content: center;
192
177
  margin: auto;
193
178
 
194
- @include mq('sm') {
179
+ @include mq("sm") {
195
180
  display: block;
196
181
  margin: 0;
197
182
  flex-direction: unset;
@@ -226,7 +211,7 @@ export default {
226
211
  left: 0px;
227
212
  position: relative;
228
213
 
229
- @include mq('sm') {
214
+ @include mq("sm") {
230
215
  display: none;
231
216
  }
232
217
  }
@@ -238,10 +223,10 @@ export default {
238
223
  border: 0;
239
224
  margin-bottom: 8px;
240
225
 
241
- @include mq('sm') {
226
+ @include mq("sm") {
242
227
  margin-right: 8px;
243
228
  }
244
- @include mq('xs') {
229
+ @include mq("xs") {
245
230
  margin-bottom: 0px;
246
231
  }
247
232
  a {
@@ -264,7 +249,7 @@ export default {
264
249
 
265
250
  &__vr {
266
251
  border: 0;
267
- @include mq('sm') {
252
+ @include mq("sm") {
268
253
  border-left: 2px solid $lightgray;
269
254
  margin-left: 12px;
270
255
  }
@@ -289,7 +274,7 @@ export default {
289
274
  }
290
275
  }
291
276
  }
292
- @include mq('sm') {
277
+ @include mq("sm") {
293
278
  .fixed {
294
279
  position: fixed;
295
280
  bottom: 0;
@@ -312,7 +297,7 @@ export default {
312
297
  left: inherit;
313
298
  right: 0;
314
299
 
315
- @include mq('sm') {
300
+ @include mq("sm") {
316
301
  border-radius: 0;
317
302
  }
318
303
  }