@worksafevictoria/wcl7.5 1.14.0-beta.1 → 1.14.0-beta.11

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 (27) hide show
  1. package/package.json +1 -1
  2. package/src/assets/icons/Mental-injury.svg +40 -0
  3. package/src/assets/icons/Physical-injury.svg +11 -0
  4. package/src/assets/icons/icon-view-off.svg +1 -0
  5. package/src/assets/icons/other.svg +19 -0
  6. package/src/components/Containers/SectionGroup/index.vue +23 -23
  7. package/src/components/Paragraphs/Accordion/index.stories.js +3 -3
  8. package/src/components/Paragraphs/Accordion/index.vue +3 -3
  9. package/src/components/Paragraphs/Directory/Asbestos/Records/SingleRecord/index.vue +3 -30
  10. package/src/components/Paragraphs/Directory/Records/PRS/recordContent.vue +11 -0
  11. package/src/components/Paragraphs/RTWPlanner/Home/index.vue +83 -0
  12. package/src/components/Paragraphs/RTWPlanner/NavBar/index.vue +44 -0
  13. package/src/components/Paragraphs/RTWPlanner/Planners/PlanTasks.vue +169 -0
  14. package/src/components/Paragraphs/RTWPlanner/Planners/index.vue +239 -0
  15. package/src/components/Paragraphs/RTWPlanner/icons/ChevRightIcon.vue +16 -0
  16. package/src/components/Paragraphs/RTWPlanner/icons/DeleteIcon.vue +13 -0
  17. package/src/components/Paragraphs/RTWPlanner/icons/MentalInjury.vue +42 -0
  18. package/src/components/Paragraphs/RTWPlanner/icons/NotepadIcon.vue +95 -0
  19. package/src/components/Paragraphs/RTWPlanner/icons/OtherInjury.vue +20 -0
  20. package/src/components/Paragraphs/RTWPlanner/icons/PhysicalInjury.vue +13 -0
  21. package/src/components/Paragraphs/RTWPlanner/icons/PlusCircleIcon.vue +36 -0
  22. package/src/components/Paragraphs/RTWPlanner/icons/TickCircleIcon.vue +13 -0
  23. package/src/components/Paragraphs/RTWPlanner/index.stories.js +26 -0
  24. package/src/components/Paragraphs/RTWPlanner/index.vue +41 -0
  25. package/src/components/Paragraphs/TextMedia/index.vue +107 -9
  26. package/src/components/Paragraphs/VideoPlayer/index.vue +157 -23
  27. package/src/components/SubComponents/VideoThumbnail/index.vue +5 -1
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@worksafevictoria/wcl7.5",
3
- "version": "1.14.0-beta.1",
3
+ "version": "1.14.0-beta.11",
4
4
  "main": "src/index.js",
5
5
  "license": "MIT",
6
6
  "repository": {
@@ -0,0 +1,40 @@
1
+ <svg
2
+ xmlns="http://www.w3.org/2000/svg"
3
+ width="800px"
4
+ height="800px"
5
+ viewBox="0 0 48 48"
6
+ fill="none"
7
+ >
8
+ <path
9
+ fill-rule="evenodd"
10
+ clip-rule="evenodd"
11
+ d="M37.2847 25.6154L37.1193 25.2621C36.4062 23.7381 36.1988 22.1238 36.1366 20.6919C36.1052 19.9703 36.11 19.257 36.1176 18.6014C36.1187 18.5113 36.1198 18.4225 36.1209 18.335C36.1279 17.7692 36.1342 17.2553 36.123 16.7604C36.0756 14.8106 35.4636 12.9118 34.355 11.2858C33.0921 9.71615 31.4415 8.48173 29.5544 7.70176L29.5216 7.6882L29.4893 7.67348C26.935 6.50995 24.1507 5.908 21.3318 5.91114L21.3296 5.91115C17.7824 5.91115 14.3879 7.29451 11.8909 9.74531C9.39511 12.1949 8 15.5091 8 18.9569C8 21.0012 8.59295 23.3328 9.62467 25.4904C10.6588 27.653 12.0607 29.4888 13.5372 30.6266L14.3164 31.2271V40.1425C14.6413 40.5448 15.2724 41.0416 16.219 41.4724C17.3773 41.9997 18.5419 42.2133 19.2158 42.1583L19.2971 42.1516H19.3786C21.3349 42.1516 22.2503 41.5988 22.6443 41.2626C22.7871 41.1407 22.8864 41.026 22.953 40.9356V35.4002L25.4499 36.0456L25.4511 36.0459L25.4521 36.0462L25.4534 36.0465L25.4656 36.0495C25.4811 36.0533 25.5077 36.0597 25.5448 36.0683C25.619 36.0855 25.7345 36.1111 25.8852 36.1414C26.1875 36.202 26.6274 36.2802 27.1577 36.3457C28.2343 36.4785 29.6077 36.5491 30.9339 36.3545C32.2715 36.1584 33.3862 35.7193 34.1529 34.9857C34.8668 34.3024 35.4954 33.1581 35.4954 31.0618V29.352L37.1767 29.0874L37.1781 29.0872L37.1862 29.0858C37.1922 29.0847 37.2007 29.0832 37.2118 29.0811C37.2228 29.0791 37.2362 29.0765 37.2518 29.0735C37.315 29.061 37.413 29.0403 37.5345 29.0101C37.7834 28.9483 38.1014 28.854 38.4114 28.7232C38.7332 28.5875 38.9648 28.4464 39.1013 28.3262C39.1288 28.3019 39.1481 28.2825 39.1614 28.268C39.1565 28.2144 39.1378 28.1044 39.068 27.9264C38.9588 27.6481 38.7721 27.3265 38.5331 26.9938C38.2994 26.6687 38.0509 26.3816 37.8573 26.1735C37.762 26.071 37.6837 25.9916 37.632 25.9404C37.6189 25.9274 37.6075 25.9163 37.5982 25.9072C37.5892 25.8984 37.582 25.8915 37.5767 25.8865L37.5685 25.8786L37.5674 25.8777L37.2847 25.6154ZM24.953 37.9829C24.953 37.9829 25.7548 38.1901 26.953 38.3355C30.4936 38.7652 37.4954 38.655 37.4954 31.0618C37.4954 31.0618 40.7982 30.5421 41.1327 28.6545C41.4671 26.767 38.9308 24.4144 38.9308 24.4144C38.0683 22.5713 38.0953 20.4009 38.1207 18.3634C38.1277 17.8001 38.1346 17.2469 38.1225 16.7137C38.0654 14.3491 37.3155 12.0508 35.9624 10.0936C34.4807 8.23043 32.5377 6.77069 30.3183 5.85341C27.5022 4.57059 24.4343 3.90769 21.3296 3.91115C17.2639 3.91115 13.3648 5.49632 10.4899 8.31794C7.61508 11.1396 6 14.9665 6 18.9569C6 23.7578 8.74879 29.4615 12.3164 32.2108V40.7048C13.3287 42.828 17.1475 44.3338 19.3786 44.1516C24.1168 44.1516 24.953 41.416 24.953 41.416V37.9829Z"
12
+ fill="#333333"
13
+ />
14
+ <path
15
+ d="M26.7229 20.1457C27.4959 20.1457 27.2508 19.9188 27.8892 19.4947C28.5374 19.918 29.3023 20.1399 30.0828 20.1311L32.5622 19.2531C33.2609 18.6926 33.7405 17.9155 33.9208 17.0521C34.1012 16.1886 33.9713 15.291 33.5529 14.5096C33.1345 13.7281 32.4529 13.1103 31.6224 12.7594C31.4328 11.9234 30.9551 11.1756 30.2686 10.6402L27.8484 9.81597H27.5759C27.0375 9.05158 26.2294 8.50633 25.3049 8.28388L21.116 8C20.2535 8.06974 19.4402 8.41984 18.807 8.99394C18.5078 8.92529 18.2016 8.88971 17.8941 8.88787C17.1498 8.88936 16.4218 9.10047 15.7981 9.49572C15.1743 9.89097 14.6815 10.4535 14.379 11.1153L12.4074 12.4744C11.9169 13.1213 11.6528 13.9044 11.6541 14.7084C11.6492 15.0445 11.6951 15.3796 11.7903 15.7028C11.273 16.3559 10.9949 17.1586 11.0001 17.9832C10.9988 18.9396 11.3743 19.8601 12.0492 20.5554C12.1036 21.2401 12.3495 21.8973 12.7601 22.4558C13.1708 23.0143 13.7306 23.4529 14.379 23.7242C15.1261 24.1799 15.7587 24.7929 16.2302 25.518C16.7018 26.243 16.8964 27.0617 17 27.9138H21.116V23.9363C21.1151 23.2301 21.3176 22.5377 21.7005 21.9378C22.0834 21.3378 22.2979 20.8543 22.9489 20.5421C23.5588 20.315 24.1084 19.9569 24.5566 19.4947C25.195 19.9188 25.95 20.1457 26.7229 20.1457Z"
16
+ fill="#333333"
17
+ />
18
+ <path
19
+ d="M34 23.5C34 24.3284 33.3284 25 32.5 25C31.6716 25 31 24.3284 31 23.5C31 22.6716 31.6716 22 32.5 22C33.3284 22 34 22.6716 34 23.5Z"
20
+ fill="#333333"
21
+ />
22
+ <path
23
+ fill-rule="evenodd"
24
+ clip-rule="evenodd"
25
+ d="M21 32H17V30H21V32Z"
26
+ fill="#333333"
27
+ />
28
+ <path
29
+ fill-rule="evenodd"
30
+ clip-rule="evenodd"
31
+ d="M21 36H17V34H21V36Z"
32
+ fill="#333333"
33
+ />
34
+ <path
35
+ fill-rule="evenodd"
36
+ clip-rule="evenodd"
37
+ d="M21 40H17V38H21V40Z"
38
+ fill="#333333"
39
+ />
40
+ </svg>
@@ -0,0 +1,11 @@
1
+ <svg
2
+ xmlns="http://www.w3.org/2000/svg"
3
+ fill="#000000"
4
+ width="800px"
5
+ height="800px"
6
+ viewBox="-32 0 512 512"
7
+ >
8
+ <path
9
+ d="M277.37 11.98C261.08 4.47 243.11 0 224 0c-53.69 0-99.5 33.13-118.51 80h81.19l90.69-68.02zM342.51 80c-7.9-19.47-20.67-36.2-36.49-49.52L239.99 80h102.52zM224 256c70.69 0 128-57.31 128-128 0-5.48-.95-10.7-1.61-16H97.61c-.67 5.3-1.61 10.52-1.61 16 0 70.69 57.31 128 128 128zM80 299.7V512h128.26l-98.45-221.52A132.835 132.835 0 0 0 80 299.7zM0 464c0 26.51 21.49 48 48 48V320.24C18.88 344.89 0 381.26 0 422.4V464zm256-48h-55.38l42.67 96H256c26.47 0 48-21.53 48-48s-21.53-48-48-48zm57.6-128h-16.71c-22.24 10.18-46.88 16-72.89 16s-50.65-5.82-72.89-16h-7.37l42.67 96H256c44.11 0 80 35.89 80 80 0 18.08-6.26 34.59-16.41 48H400c26.51 0 48-21.49 48-48v-41.6c0-74.23-60.17-134.4-134.4-134.4z"
10
+ />
11
+ </svg>
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" width="140.743" height="128.766" viewBox="0 0 140.743 128.766"><g transform="translate(0 0)"><path d="M5.986,128.766A5.986,5.986,0,0,1,.45,120.507a.323.323,0,0,1,.083-.056.35.35,0,0,0,.073-.046L117.334,3.677a4.454,4.454,0,0,0,1.036-1.742l.107-.108a5.986,5.986,0,1,1,8.465,8.465L103,34.206a125.465,125.465,0,0,1,25.74,21.55,12.981,12.981,0,0,1,.042,17.348A125.8,125.8,0,0,1,115.556,85.64a118.682,118.682,0,0,1-16.05,11.144,90.43,90.43,0,0,1-17.951,7.984,63.583,63.583,0,0,1-18.927,3.054h-1.8a67.061,67.061,0,0,1-25.8-5.62L10.213,127.02A5.951,5.951,0,0,1,5.986,128.766Zm78.962-75.9a1.515,1.515,0,0,0-1.076.452L50.589,86.6A1.514,1.514,0,0,0,51,89.032,25.738,25.738,0,0,0,69.553,90.17,27.416,27.416,0,0,0,87.511,72.044a25.711,25.711,0,0,0-1.2-18.323,1.51,1.51,0,0,0-1.36-.854Z" transform="translate(8.661 0)" fill="#fff"/><path d="M44.106,51.784a1.461,1.461,0,0,0,.365-1.437A25.83,25.83,0,0,1,43.417,43.4,26.937,26.937,0,0,1,70.355,16.467,25.6,25.6,0,0,1,77.3,17.5a1.461,1.461,0,0,0,1.437-.371L90.354,5.506a1.52,1.52,0,0,0-.6-2.52A62.333,62.333,0,0,0,70.355,0C44.615-.342,18.874,17.664,3.388,34.718a12.87,12.87,0,0,0-.042,17.36,126.959,126.959,0,0,0,20.58,18.138,1.532,1.532,0,0,0,1.951-.174Z" transform="translate(0 21.038)" fill="#fff"/></g></svg>
@@ -0,0 +1,19 @@
1
+ <svg
2
+ xmlns="http://www.w3.org/2000/svg"
3
+ viewBox="0 0 256 256"
4
+ fill="currentColor"
5
+ role="img"
6
+ aria-label="Icon"
7
+ focusable="false"
8
+ >
9
+ <g>
10
+ <circle cx="128" cy="22.4" r="21.1"/>
11
+ <path d="M223,51.5c-3.6-3.6-9.5-3.6-13.1,0l-23.3,23.3c0,0-18.1-18.2-18.3-18.3c-5.2-5.2-11.9-7.7-18.7-7.7H128h0h-21.6
12
+ c-6.8,0-13.5,2.6-18.7,7.7c-0.2,0.2-18.3,18.3-18.3,18.3L46.1,51.5c-3.6-3.6-9.5-3.6-13.1,0c-3.6,3.6-3.6,9.5,0,13.1l29.9,29.9
13
+ c3.6,3.6,9.5,3.6,13.1,0l18.4-18.5c0.5-0.5,1.1-0.8,1.9-0.8c1.5,0,2.6,1.2,2.6,2.6v23.8v44.9v95.1c0,0.5,0,0.9,0.1,1.4
14
+ c0.3,3.1,1.7,5.9,3.8,8c2.4,2.4,5.7,3.9,9.3,3.9c3.6,0,6.9-1.5,9.3-3.9c2.1-2.1,3.5-4.9,3.8-8c0-0.4,0.1-0.9,0.1-1.4v-92.4
15
+ c0-1.5,1.2-2.6,2.6-2.6s2.6,1.2,2.6,2.6v92.4c0,0.5,0,0.9,0.1,1.4c0.3,3.1,1.7,5.9,3.8,8c2.4,2.4,5.7,3.9,9.3,3.9s6.9-1.5,9.3-3.9
16
+ c2.1-2.1,3.5-4.9,3.8-8c0-0.4,0.1-0.9,0.1-1.4v-95.1h0V77.8c0-1.5,1.2-2.6,2.6-2.6c0.7,0,1.4,0.3,1.9,0.8L180,94.4
17
+ c3.6,3.6,9.5,3.6,13.1,0L223,64.5C226.6,60.9,226.6,55.1,223,51.5z"/>
18
+ </g>
19
+ </svg>
@@ -50,7 +50,7 @@
50
50
  <slot name="preContent"></slot>
51
51
  </column>
52
52
  </row>
53
-
53
+
54
54
  <div
55
55
  class="section-group__content section-group__row"
56
56
  :class="{
@@ -61,7 +61,7 @@
61
61
  subHeading ||
62
62
  $slots.headerRight
63
63
  ),
64
- [`${contentClass}`]: hasContentClass
64
+ [`${contentClass}`]: hasContentClass,
65
65
  }"
66
66
  :style="applyBackgroundOn === 'content' ? backgroundStyle : null"
67
67
  >
@@ -99,7 +99,7 @@ export default {
99
99
  type: String,
100
100
  default: 'page',
101
101
  validator: (value) =>
102
- ['half-content', 'content', 'page', 'full'].indexOf(value) >= 0
102
+ ['half-content', 'content', 'page', 'full'].indexOf(value) >= 0,
103
103
  },
104
104
  backgroundVariant: {
105
105
  type: String,
@@ -113,48 +113,48 @@ export default {
113
113
  'yellow',
114
114
  'white',
115
115
  'lightblue',
116
- 'lightred'
117
- ].indexOf(value) >= 0
116
+ 'lightred',
117
+ ].indexOf(value) >= 0,
118
118
  },
119
119
  applyBackgroundOn: {
120
120
  type: String,
121
121
  default: 'section',
122
122
  validator: (value) =>
123
- ['content', 'block', 'container', 'section'].indexOf(value) >= 0
123
+ ['content', 'block', 'container', 'section'].indexOf(value) >= 0,
124
124
  },
125
125
  backgroundImage: {
126
126
  type: String,
127
- default: ''
127
+ default: '',
128
128
  },
129
129
  noPaddingTop: {
130
- type: Boolean
130
+ type: Boolean,
131
131
  },
132
132
  noPaddingBottom: {
133
- type: Boolean
133
+ type: Boolean,
134
134
  },
135
135
  bordered: {
136
- type: Boolean
136
+ type: Boolean,
137
137
  },
138
138
  rtl: {
139
139
  type: Boolean,
140
- default: false
140
+ default: false,
141
141
  },
142
142
  title: {
143
143
  type: String,
144
- default: null
144
+ default: null,
145
145
  },
146
146
  subHeading: {
147
147
  type: String,
148
- default: null
148
+ default: null,
149
149
  },
150
150
  titleTag: {
151
151
  type: String,
152
- default: 'h2'
152
+ default: 'h2',
153
153
  },
154
154
  contentClass: {
155
155
  type: String,
156
- default: ''
157
- }
156
+ default: '',
157
+ },
158
158
  },
159
159
  computed: {
160
160
  generatedClass() {
@@ -162,7 +162,7 @@ export default {
162
162
  rtl: this.rtl,
163
163
  [`section-group--noPaddingTop`]: this.noPaddingTop,
164
164
  [`section-group--noPaddingBottom`]: this.noPaddingBottom,
165
- [`section-group--size-` + this.size]: !!this.size
165
+ [`section-group--size-` + this.size]: !!this.size,
166
166
  }
167
167
  },
168
168
  backgroundStyle() {
@@ -175,7 +175,7 @@ export default {
175
175
  [`background-size`]: `cover`,
176
176
  [`background-position`]: `center center`,
177
177
  color: '#ffffff',
178
- ['border-radius']: borderRadius
178
+ ['border-radius']: borderRadius,
179
179
  }
180
180
  }
181
181
  if (this.backgroundVariant) {
@@ -206,14 +206,14 @@ export default {
206
206
  styles = {
207
207
  ...(styles || {}),
208
208
  [`background-color`]: bgColour,
209
- ['border-radius']: borderRadius
209
+ ['border-radius']: borderRadius,
210
210
  }
211
211
  }
212
212
 
213
213
  if (this.bordered) {
214
214
  styles = {
215
215
  ...(styles || {}),
216
- [`border`]: `1px solid ` + colors.gray
216
+ [`border`]: `1px solid ` + colors.gray,
217
217
  }
218
218
  }
219
219
 
@@ -221,7 +221,7 @@ export default {
221
221
  },
222
222
  hasContentClass() {
223
223
  return this.contentClass.length > 0
224
- }
224
+ },
225
225
  },
226
226
  mounted() {
227
227
  window.addEventListener('resize', this.setColumnSize)
@@ -241,8 +241,8 @@ export default {
241
241
  this.$emit('isDesktopView', !isTabletView && !isMobileView)
242
242
  this.$emit('isMobileOrTabletView', isMobileView || isTabletView)
243
243
  })
244
- }
245
- }
244
+ },
245
+ },
246
246
  }
247
247
  </script>
248
248
 
@@ -5,7 +5,7 @@ const mockAccordionItems = [
5
5
  field_title: 'Item one',
6
6
  field_pre_heading: 'preheading text',
7
7
  field_rich_text: {
8
- value:
8
+ processed:
9
9
  '<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.</p>',
10
10
  },
11
11
  id: 'id-1',
@@ -14,7 +14,7 @@ const mockAccordionItems = [
14
14
  field_title: 'Item two',
15
15
  field_pre_heading: 'preheading text',
16
16
  field_rich_text: {
17
- value:
17
+ processed:
18
18
  '<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.</p>',
19
19
  },
20
20
  id: 'id-2',
@@ -23,7 +23,7 @@ const mockAccordionItems = [
23
23
  field_title: 'Item three',
24
24
  field_pre_heading: 'preheading text',
25
25
  field_rich_text: {
26
- value:
26
+ processed:
27
27
  '<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.</p>',
28
28
  },
29
29
  id: 'id-3',
@@ -22,7 +22,7 @@
22
22
  <stepper-item
23
23
  v-if="isStepper"
24
24
  :itemid="item.id ? item.id : '' + index"
25
- :content="hasContent(item) ? item.field_rich_text.value : ''"
25
+ :content="hasContent(item) ? item.field_rich_text.processed : ''"
26
26
  :title="item.field_title"
27
27
  class="accordion__item stepper"
28
28
  :rtl="rtl || item.field_rtl"
@@ -33,7 +33,7 @@
33
33
  <accordion-item
34
34
  v-if="!isStepper"
35
35
  :itemid="item.id ? item.id : '' + index"
36
- :content="hasContent(item) ? item.field_rich_text.value : ''"
36
+ :content="hasContent(item) ? item.field_rich_text.processed : ''"
37
37
  :title="item.field_title"
38
38
  class="accordion__item"
39
39
  :rtl="rtl || item.field_rtl"
@@ -124,7 +124,7 @@ export default {
124
124
  return false
125
125
  },
126
126
  hasContent(item) {
127
- return item?.field_rich_text?.value
127
+ return item?.field_rich_text?.processed
128
128
  },
129
129
  },
130
130
  }
@@ -63,7 +63,7 @@
63
63
  <div v-if="item.website">
64
64
  <row>
65
65
  <column>
66
- <h4>Website</h4>
66
+ <h5>Website</h5>
67
67
  </column>
68
68
  </row>
69
69
  <row v-if="item.website !== ''">
@@ -72,40 +72,13 @@
72
72
  {{ item.website }}
73
73
  </a>
74
74
  </row>
75
- <!-- <row v-if="item.phone1 !== ''">
76
- <column sm="2" class="label"> Phone </column>
77
- <column sm="4" class="dir-additional-records">
78
- {{ item.phone1 }}
79
- </column>
80
- </row> -->
81
- <row v-if="item.mobile1">
82
- <column sm="2" class="label"> Mobile </column>
83
- <column sm="4" class="dir-additional-records">
84
- {{ item.mobile1 }}
85
- </column>
86
- </row>
87
- <row v-if="item.email1">
88
- <column sm="2" class="label" > Email </column>
89
- <column sm="4" class="dir-additional-records">
90
- {{ item.email1 }}
91
- </column>
92
- </row>
93
- </div>
75
+ </div>
94
76
  <div v-if="item.serviceCategory">
95
77
  <row class="row-dir-additional">
96
78
  <column>
97
- <h4>{{ item.serviceCategory }}</h4>
79
+ <h5>{{ item.serviceCategory }}</h5>
98
80
  </column>
99
81
  </row>
100
- <!-- <row class="dir-additional-records">
101
- <column>
102
- <ul>
103
- <li v-for="serv in item.services.split(',')" :key="serv.id">
104
- {{ serv }}
105
- </li>
106
- </ul>
107
- </column>
108
- </row> -->
109
82
  </div>
110
83
  </div>
111
84
  </container>
@@ -1,6 +1,9 @@
1
1
  <template>
2
2
  <!-- eslint-disable vue/no-v-html -->
3
3
  <container>
4
+ <div>
5
+ <hr />
6
+ </div>
4
7
  <row>
5
8
  <column sm="9">
6
9
  <div v-if="item.outcome" class="record-details__outcome">
@@ -89,3 +92,11 @@ export default {
89
92
  }
90
93
  }
91
94
  </script>
95
+
96
+ <style lang="scss" scoped>
97
+
98
+ .record-details__outcome {
99
+ margin-left: 20px !important;
100
+ }
101
+
102
+ </style>
@@ -0,0 +1,83 @@
1
+ <template>
2
+ <div>
3
+ <TextMedia
4
+ :media-type="'image'"
5
+ :title-text="textMedia.title"
6
+ :title-tag="textMedia.titleTag"
7
+ :content="textMedia.content"
8
+ :image="textMedia.image"
9
+ :rtl="textMedia.rtl"
10
+ />
11
+
12
+ <Container fluid class="my-4">
13
+ <h2>Select your injury</h2>
14
+
15
+ <TextMedia
16
+ :media-type="'icon'"
17
+ :title-text="'Physical injuries'"
18
+ :content="`<p>
19
+ Physical injuries include anything that occurs to an employees body.
20
+ This tool supports employers to manage the return to work process
21
+ for non-complex physical injuries only.
22
+ </p><p><a href=&quot;#&quot; class=&quot;cta-button&quot;>Continue to planner</a></p>`"
23
+ :glyph="PhysicalInjury"
24
+ :icon-alt="'PhysicalInjury icon'"
25
+ :glyph-height="60"
26
+ :glyph-width="60"
27
+ />
28
+
29
+ <TextMedia
30
+ :media-type="'icon'"
31
+ :title-text="'Mental injuries'"
32
+ :content="`<p>
33
+ Mental injuries are complex and require tailored information for
34
+ employers to support injured workers with their return to work. This
35
+ tool does not currently give guidance for mental injuries.
36
+ </p><p><a href=&quot;#&quot; class=&quot;cta-button white&quot;>Continue to planner</a></p>`"
37
+ :glyph="MentalInjury"
38
+ :icon-alt="'MentalInjury icon'"
39
+ :glyph-height="60"
40
+ :glyph-width="60"
41
+ />
42
+
43
+ <TextMedia
44
+ :media-type="'icon'"
45
+ :title-text="'Other'"
46
+ :content="`<p>
47
+ If you are unsure about the injury type of your employee, gaining
48
+ additional support, reach out to your agent to get more information.
49
+ </p><p><a href=&quot;#&quot; class=&quot;cta-button white&quot;>More information</a></p>`"
50
+ :glyph="OtherInjury"
51
+ :icon-alt="'Other icon'"
52
+ :glyph-height="60"
53
+ :glyph-width="60"
54
+ />
55
+ </Container>
56
+ </div>
57
+ </template>
58
+
59
+ <script setup>
60
+ import { defineProps } from 'vue'
61
+
62
+ import Container from './../../../Containers/Container/index.vue'
63
+ import TextMedia from './../../TextMedia/index.vue'
64
+ import PhysicalInjury from './../../../../assets/icons/Physical-injury.svg?url'
65
+ import MentalInjury from './../../../../assets/icons/Mental-injury.svg?url'
66
+ import OtherInjury from './../../../../assets/icons/other.svg?url'
67
+ const emit = defineEmits(['newPlan'])
68
+
69
+ const props = defineProps({
70
+ textMedia: {
71
+ type: Object,
72
+ required: true,
73
+ },
74
+ })
75
+ </script>
76
+
77
+ <style scoped>
78
+ .lightgrey-bg {
79
+ border-radius: 12px;
80
+ border: 4px solid #727272;
81
+ background: #f5f5f5;
82
+ }
83
+ </style>
@@ -0,0 +1,44 @@
1
+ <template>
2
+ <BNavbar variant="light" class="border-bottom bg-white pb-0">
3
+ <BNavbarBrand>
4
+ <ChevRightIcon
5
+ class="ws-yellow"
6
+ style="width: 32px; height: 32px"
7
+ ></ChevRightIcon>
8
+ <strong>Return to Work Planner</strong>
9
+ </BNavbarBrand>
10
+ <BNavbarToggle target="nav-collapse" />
11
+ <BNavbarNav class="ms-auto align-items-center">
12
+ <BNavItem href="/return-work-home">
13
+ <strong>Home</strong>
14
+ </BNavItem>
15
+ <BNavItem href="/return-work-poc">
16
+ <NotepadIcon class="me-2" style="width: 1em; height: 1em" />
17
+ <strong>My Planners</strong>
18
+ </BNavItem>
19
+ </BNavbarNav>
20
+ </BNavbar>
21
+ </template>
22
+
23
+ <script setup>
24
+ import ChevRightIcon from './../icons/ChevRightIcon.vue'
25
+ import NotepadIcon from './../icons/NotepadIcon.vue'
26
+ import {
27
+ BNavbar,
28
+ BNavbarBrand,
29
+ BNavbarToggle,
30
+ BNavbarNav,
31
+ BNavItem,
32
+ } from 'bootstrap-vue-next'
33
+ </script>
34
+
35
+ <style lang="scss" scoped>
36
+ @import './../../../../includes/scss/all.scss';
37
+ .active {
38
+ color: black !important;
39
+ border-bottom: 5px solid $yellow;
40
+ }
41
+ .ws-yellow {
42
+ color: $yellow;
43
+ }
44
+ </style>
@@ -0,0 +1,169 @@
1
+ <template>
2
+ <Container>
3
+ <Row>
4
+ <Column col="12">
5
+ <h2 class="fw-bold my-4">{{ props.activePlanner?.name }}'s planner</h2>
6
+ </Column>
7
+ </Row>
8
+ <Row>
9
+ <Column col="12" md="8">
10
+ <div class="card shadow-sm border-3 rounded-3 p-4">
11
+ <BCardText v-html="activeContent.html"></BCardText>
12
+ <CtaButton
13
+ :rtl="
14
+ isTaskCompleted(activeTask.id, activeContent.id) ? true : false
15
+ "
16
+ :workwell="
17
+ isTaskCompleted(activeTask.id, activeContent.id) ? true : false
18
+ "
19
+ @click="toggleTask(activeTask.id, activeContent.id)"
20
+ class="mt-1"
21
+ >
22
+ {{
23
+ isTaskCompleted(activeTask.id, activeContent.id)
24
+ ? 'Completed'
25
+ : 'Mark Done'
26
+ }}
27
+ </CtaButton>
28
+ </div>
29
+ <div
30
+ role="button"
31
+ class="card shadow-sm border-3 rounded-3 p-4 mt-4 text-end"
32
+ :class="getNextTask() ? '' : 'disabled'"
33
+ @click="setActiveContent(getNextTask().task, getNextTask().content)"
34
+ >
35
+ <h4 class="fw-bold mt-0 mb-3">Go to next task</h4>
36
+ <p class="text-muted mb-0">
37
+ <span class="text-decoration-underline">
38
+ {{
39
+ getNextTask() ? getNextTask().content.btnText : 'No more tasks'
40
+ }}
41
+ </span>
42
+ </p>
43
+ </div>
44
+ </Column>
45
+ <Column col="12" md="4">
46
+ <div class="card shadow-sm border-3 rounded-3 p-4">
47
+ <h4 class="fw-bold mb-3">All tasks</h4>
48
+ <div v-for="task in props.tasks" :key="task.id" class="mb-3">
49
+ <p class="fw-bold">{{ task.title }}</p>
50
+ <div v-for="content in task.content" :key="content.id">
51
+ <button
52
+ class="d-flex justify-content-between align-items-center w-100 border-0 rounded-2 p-2 mb-2 text-start"
53
+ :class="
54
+ isTaskCompleted(task.id, content.id)
55
+ ? activeContent.id === content.id
56
+ ? 'bg-success-subtle text-dark fw-bold active-done'
57
+ : 'bg-success-subtle text-dark fw-bold'
58
+ : activeContent.id === content.id
59
+ ? 'active'
60
+ : 'bg-light text-muted'
61
+ "
62
+ @click="setActiveContent(task, content)"
63
+ >
64
+ <span class="text-decoration-underline">
65
+ {{ content.btnText }}
66
+ </span>
67
+ <span
68
+ v-if="isTaskCompleted(task.id, content.id)"
69
+ class="text-success"
70
+ >
71
+ <TickCircleIcon
72
+ class="ms-2"
73
+ style="width: 2em; height: 2em"
74
+ />
75
+ </span>
76
+ <span v-else class="text-muted">
77
+ <TickCircleIcon
78
+ class="ms-2"
79
+ style="width: 2em; height: 2em"
80
+ />
81
+ </span>
82
+ </button>
83
+ </div>
84
+ </div>
85
+ </div>
86
+ </Column>
87
+ </Row>
88
+ </Container>
89
+ </template>
90
+
91
+ <script setup>
92
+ import { ref } from 'vue'
93
+ import { CtaButton, Row, Column, Container } from '@worksafevictoria/wcl7.5'
94
+ import TickCircleIcon from './icons/TickCircleIcon.vue'
95
+
96
+ const props = defineProps({
97
+ activePlanner: { type: Object, required: true },
98
+ tasks: { type: Array, required: true }
99
+ })
100
+
101
+ const emit = defineEmits(['updatePlanner'])
102
+ const tasks = ref([])
103
+ const activeTask = ref(props.tasks[0] || { id: '', title: '', content: [] })
104
+ const activeContent = ref(
105
+ props.tasks[0]?.content[0] || { btnText: '', html: '' }
106
+ )
107
+
108
+ const toggleTask = (taskId, contentId) => {
109
+ const key = `${taskId}_${contentId}`
110
+ const updatedPlanner = {
111
+ ...props.activePlanner,
112
+ tasksCompleted: [...props.activePlanner.tasksCompleted]
113
+ }
114
+ const index = updatedPlanner.tasksCompleted.indexOf(key)
115
+ if (index === -1) {
116
+ updatedPlanner.tasksCompleted.push(key)
117
+ } else {
118
+ updatedPlanner.tasksCompleted.splice(index, 1)
119
+ }
120
+ emit('updatePlanner', updatedPlanner)
121
+ }
122
+
123
+ const isTaskCompleted = (taskId, contentId) => {
124
+ const key = `${taskId}_${contentId}`
125
+ return props.activePlanner.tasksCompleted.includes(key)
126
+ }
127
+
128
+ const setActiveContent = (task, content) => {
129
+ console.log('🚀 ~ setActiveContent ~ task:', task)
130
+ activeTask.value = task
131
+ activeContent.value = content
132
+ scrollTo(0, 0)
133
+ }
134
+
135
+ const getNextTask = () => {
136
+ for (const task of props.tasks) {
137
+ for (const content of task.content) {
138
+ if (activeContent.value.id === content.id) {
139
+ const currentTaskIndex = props.tasks.indexOf(task)
140
+ const currentContentIndex = task.content.indexOf(content)
141
+ if (currentContentIndex + 1 < task.content.length) {
142
+ return { task, content: task.content[currentContentIndex + 1] }
143
+ } else if (currentTaskIndex + 1 < props.tasks.length) {
144
+ const nextTask = props.tasks[currentTaskIndex + 1]
145
+ return { task: nextTask, content: nextTask.content[0] }
146
+ } else {
147
+ return null
148
+ }
149
+ }
150
+ }
151
+ }
152
+ }
153
+ </script>
154
+
155
+ <style lang="scss" scoped>
156
+ @import '@worksafevictoria/wcl7.5/src/includes/scss/all.scss';
157
+ .active {
158
+ color: black !important;
159
+ background-color: $yellow !important;
160
+ }
161
+ .active-done {
162
+ border-left: 10px solid $green !important;
163
+ }
164
+ .disabled {
165
+ pointer-events: none;
166
+ opacity: 0.5;
167
+ cursor: not-allowed;
168
+ }
169
+ </style>