@iamproperty/components 7.5.1--beta12 → 7.6.1

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 (190) hide show
  1. package/assets/css/components/actionbar.component.css +1 -1
  2. package/assets/css/components/actionbar.component.css.map +1 -1
  3. package/assets/css/components/actionbar.global.css +1 -1
  4. package/assets/css/components/actionbar.global.css.map +1 -1
  5. package/assets/css/components/address-lookup.component.css +1 -1
  6. package/assets/css/components/address-lookup.component.css.map +1 -1
  7. package/assets/css/components/address-lookup.preload.css +1 -1
  8. package/assets/css/components/address-lookup.preload.css.map +1 -1
  9. package/assets/css/components/barchart.component.css +1 -1
  10. package/assets/css/components/barchart.component.css.map +1 -1
  11. package/assets/css/components/calendar.component.css +1 -1
  12. package/assets/css/components/calendar.component.css.map +1 -1
  13. package/assets/css/components/card.component.css +1 -1
  14. package/assets/css/components/card.component.css.map +1 -1
  15. package/assets/css/components/carousel.component.css +1 -1
  16. package/assets/css/components/carousel.component.css.map +1 -1
  17. package/assets/css/components/charts.css +1 -1
  18. package/assets/css/components/charts.css.map +1 -1
  19. package/assets/css/components/charts.module.css +1 -1
  20. package/assets/css/components/charts.module.css.map +1 -1
  21. package/assets/css/components/collapsible-side.css +1 -1
  22. package/assets/css/components/collapsible-side.css.map +1 -1
  23. package/assets/css/components/content.component.css +1 -1
  24. package/assets/css/components/content.component.css.map +1 -1
  25. package/assets/css/components/darkmode.component.css +1 -1
  26. package/assets/css/components/darkmode.component.css.map +1 -1
  27. package/assets/css/components/doughnutchart.component.css +1 -1
  28. package/assets/css/components/doughnutchart.component.css.map +1 -1
  29. package/assets/css/components/fileupload.css +1 -1
  30. package/assets/css/components/fileupload.css.map +1 -1
  31. package/assets/css/components/filter-card.component.css +1 -1
  32. package/assets/css/components/filter-card.component.css.map +1 -1
  33. package/assets/css/components/inline-edit.css +1 -1
  34. package/assets/css/components/inline-edit.css.map +1 -1
  35. package/assets/css/components/input-range.component.css +1 -1
  36. package/assets/css/components/input-range.component.css.map +1 -1
  37. package/assets/css/components/input.component.css +1 -1
  38. package/assets/css/components/input.component.css.map +1 -1
  39. package/assets/css/components/milestone.css +1 -1
  40. package/assets/css/components/milestone.css.map +1 -1
  41. package/assets/css/components/modal.component.css +1 -1
  42. package/assets/css/components/modal.component.css.map +1 -1
  43. package/assets/css/components/multi-step-modal.component.css +1 -1
  44. package/assets/css/components/multi-step-modal.component.css.map +1 -1
  45. package/assets/css/components/multiselect.css +1 -1
  46. package/assets/css/components/multiselect.css.map +1 -1
  47. package/assets/css/components/nav.component.css +1 -1
  48. package/assets/css/components/nav.component.css.map +1 -1
  49. package/assets/css/components/nav.global.css +1 -1
  50. package/assets/css/components/nav.global.css.map +1 -1
  51. package/assets/css/components/notification.css +1 -1
  52. package/assets/css/components/notification.css.map +1 -1
  53. package/assets/css/components/pagination.css +1 -1
  54. package/assets/css/components/pagination.css.map +1 -1
  55. package/assets/css/components/password.component.css +1 -1
  56. package/assets/css/components/password.component.css.map +1 -1
  57. package/assets/css/components/property-searchbar.css +1 -1
  58. package/assets/css/components/property-searchbar.css.map +1 -1
  59. package/assets/css/components/rank.component.css +1 -1
  60. package/assets/css/components/rank.component.css.map +1 -1
  61. package/assets/css/components/rankings.component.css +1 -1
  62. package/assets/css/components/rankings.component.css.map +1 -1
  63. package/assets/css/components/rankings.global.css +1 -1
  64. package/assets/css/components/rankings.global.css.map +1 -1
  65. package/assets/css/components/slider.css +1 -1
  66. package/assets/css/components/slider.css.map +1 -1
  67. package/assets/css/components/split-button.component.css +1 -1
  68. package/assets/css/components/split-button.component.css.map +1 -1
  69. package/assets/css/components/table-basic.component.css +1 -1
  70. package/assets/css/components/table-basic.component.css.map +1 -1
  71. package/assets/css/components/table-basic.global.css +1 -1
  72. package/assets/css/components/table-basic.global.css.map +1 -1
  73. package/assets/css/components/table.component.css +1 -1
  74. package/assets/css/components/table.component.css.map +1 -1
  75. package/assets/css/components/table.global.css +1 -1
  76. package/assets/css/components/table.global.css.map +1 -1
  77. package/assets/css/components/tabs.component.css +1 -1
  78. package/assets/css/components/tabs.component.css.map +1 -1
  79. package/assets/css/core.min.css +1 -1
  80. package/assets/css/core.min.css.map +1 -1
  81. package/assets/css/mobile-core.min.css +1 -1
  82. package/assets/css/mobile-core.min.css.map +1 -1
  83. package/assets/css/mobile.min.css +1 -1
  84. package/assets/css/mobile.min.css.map +1 -1
  85. package/assets/css/style.min.css +1 -1
  86. package/assets/css/style.min.css.map +1 -1
  87. package/assets/js/components/accordion/accordion.component.min.js +2 -2
  88. package/assets/js/components/actionbar/actionbar.component.min.js +4 -4
  89. package/assets/js/components/address-lookup/address-lookup.component.min.js +3 -3
  90. package/assets/js/components/advanced-select/advanced-select.component.min.js +2 -2
  91. package/assets/js/components/applied-filters/applied-filters.component.min.js +2 -2
  92. package/assets/js/components/barchart/barchart.component.min.js +9 -9
  93. package/assets/js/components/barchart/barchart.component.min.js.map +1 -1
  94. package/assets/js/components/bento-grid/bento-grid.component.js +1 -0
  95. package/assets/js/components/bento-grid/bento-grid.component.min.js +3 -3
  96. package/assets/js/components/bento-grid/bento-grid.component.min.js.map +1 -1
  97. package/assets/js/components/calendar/calendar.component.min.js +3 -3
  98. package/assets/js/components/card/card.component.min.js +3 -3
  99. package/assets/js/components/carousel/carousel.component.min.js +3 -3
  100. package/assets/js/components/collapsible-side/collapsible-side.component.min.js +3 -3
  101. package/assets/js/components/content/content.component.min.js +3 -3
  102. package/assets/js/components/darkmode/darkmode.component.js +42 -34
  103. package/assets/js/components/darkmode/darkmode.component.min.js +5 -5
  104. package/assets/js/components/darkmode/darkmode.component.min.js.map +1 -1
  105. package/assets/js/components/doughnutchart/doughnutchart.component.min.js +8 -8
  106. package/assets/js/components/fileupload/fileupload.component.min.js +3 -3
  107. package/assets/js/components/filter-card/filter-card.component.min.js +3 -3
  108. package/assets/js/components/filterlist/filterlist.component.min.js +2 -2
  109. package/assets/js/components/header/header.component.min.js +2 -2
  110. package/assets/js/components/inline-edit/inline-edit.component.min.js +4 -4
  111. package/assets/js/components/input/input.component.min.js +3 -3
  112. package/assets/js/components/input-range/input-range.component.min.js +5 -5
  113. package/assets/js/components/marketing/marketing.component.min.js +2 -2
  114. package/assets/js/components/menu/menu.component.min.js +2 -2
  115. package/assets/js/components/milestone/milestone.component.min.js +2 -2
  116. package/assets/js/components/milestone-group/milestone-group.component.min.js +2 -2
  117. package/assets/js/components/modal/modal.component.min.js +4 -4
  118. package/assets/js/components/multi-step/multi-step.component.min.js +2 -2
  119. package/assets/js/components/multi-step-modal/multi-step-modal.component.min.js +3 -3
  120. package/assets/js/components/multiselect/multiselect.component.min.js +3 -3
  121. package/assets/js/components/nav/nav.component.js +1 -1
  122. package/assets/js/components/nav/nav.component.min.js +6 -6
  123. package/assets/js/components/nav/nav.component.min.js.map +1 -1
  124. package/assets/js/components/notification/notification.component.min.js +3 -3
  125. package/assets/js/components/pagination/pagination.component.min.js +3 -3
  126. package/assets/js/components/password/password.component.min.js +6 -6
  127. package/assets/js/components/popover/popover.component.min.js +2 -2
  128. package/assets/js/components/rank/rank.component.min.js +2 -2
  129. package/assets/js/components/rankings/rankings.component.min.js +6 -6
  130. package/assets/js/components/record-card/record-card.component.min.js +2 -2
  131. package/assets/js/components/search/search.component.min.js +2 -2
  132. package/assets/js/components/slider/slider.component.min.js +3 -3
  133. package/assets/js/components/split-button/split-button.component.min.js +3 -3
  134. package/assets/js/components/std-address-lookup/std-address-lookup.component.js +29 -2
  135. package/assets/js/components/std-address-lookup/std-address-lookup.component.min.js +10 -10
  136. package/assets/js/components/std-address-lookup/std-address-lookup.component.min.js.map +1 -1
  137. package/assets/js/components/table/table.component.min.js +4 -4
  138. package/assets/js/components/table-ajax/table-ajax.component.min.js +4 -4
  139. package/assets/js/components/table-basic/table-basic.component.min.js +4 -4
  140. package/assets/js/components/table-no-submit/table-no-submit.component.min.js +6 -6
  141. package/assets/js/components/table-no-submit/table-no-submit.component.min.js.map +1 -1
  142. package/assets/js/components/table-submit/table-submit.component.min.js +4 -4
  143. package/assets/js/components/tabs/tabs.component.js +0 -4
  144. package/assets/js/components/tabs/tabs.component.min.js +4 -8
  145. package/assets/js/components/tabs/tabs.component.min.js.map +1 -1
  146. package/assets/js/components/tooltip/tooltip.component.min.js +2 -2
  147. package/assets/js/components/video-card/video-card.component.min.js +2 -2
  148. package/assets/js/components/word-count/word-count.component.min.js +2 -2
  149. package/assets/js/scripts.bundle.js +2 -2
  150. package/assets/js/scripts.bundle.min.js +2 -2
  151. package/assets/sass/_functions/utility-mixins.scss +30 -13
  152. package/assets/sass/_functions/variables.scss +10 -90
  153. package/assets/sass/components/actionbar.component.scss +2 -8
  154. package/assets/sass/components/actionbar.global.scss +2 -2
  155. package/assets/sass/components/address-lookup.preload.scss +10 -0
  156. package/assets/sass/components/charts.module.scss +10 -10
  157. package/assets/sass/components/collapsible-side.scss +2 -6
  158. package/assets/sass/components/darkmode.component.scss +1 -1
  159. package/assets/sass/components/filter-card.component.scss +1 -1
  160. package/assets/sass/components/input-range.component.scss +16 -8
  161. package/assets/sass/components/milestone.scss +2 -2
  162. package/assets/sass/components/nav.component.scss +28 -43
  163. package/assets/sass/components/nav.global.scss +116 -28
  164. package/assets/sass/components/notification.scss +16 -31
  165. package/assets/sass/components/property-searchbar.scss +1 -1
  166. package/assets/sass/components/split-button.component.scss +4 -0
  167. package/assets/sass/components/table-basic.component.scss +2 -1
  168. package/assets/sass/components/table-basic.global.scss +7 -8
  169. package/assets/sass/elements/admin-panel.scss +0 -4
  170. package/assets/sass/elements/buttons--action.scss +1 -1
  171. package/assets/sass/elements/buttons--compact.scss +8 -8
  172. package/assets/sass/elements/buttons--global.scss +9 -8
  173. package/assets/sass/elements/details.scss +2 -2
  174. package/assets/sass/elements/forms.scss +5 -4
  175. package/assets/sass/elements/links.scss +2 -2
  176. package/assets/sass/elements/prefix.scss +12 -1
  177. package/assets/sass/elements/type.scss +6 -6
  178. package/assets/sass/foundations/reboot.scss +1 -7
  179. package/assets/sass/foundations/root.scss +203 -47
  180. package/assets/sass/templates/auth.scss +0 -4
  181. package/assets/sass/templates/form.scss +3 -6
  182. package/assets/ts/components/bento-grid/bento-grid.component.ts +1 -0
  183. package/assets/ts/components/darkmode/darkmode.component.ts +55 -36
  184. package/assets/ts/components/nav/nav.component.ts +1 -1
  185. package/assets/ts/components/std-address-lookup/std-address-lookup.component.ts +36 -2
  186. package/assets/ts/components/tabs/tabs.component.ts +0 -4
  187. package/dist/components.es.js +76 -74
  188. package/dist/components.umd.js +141 -145
  189. package/package.json +4 -5
  190. package/src/components/NoteFeed/NoteFeed.vue +1 -1
@@ -17,20 +17,158 @@ $darkMode: 'true' !default;
17
17
  #{$var}: #{$value};
18
18
  }
19
19
 
20
- // Wider colours
21
- @each $colour, $value in $wider-colours {
22
- --wider-colour-#{$colour}: #{$value};
23
- }
24
- @each $colour, $value in $wider-colours-hover {
25
- --wider-colour-#{$colour}-hover: #{$value};
26
- }
27
- @each $colour, $value in $wider-colours-active {
28
- --wider-colour-#{$colour}-active: #{$value};
29
- }
20
+ color-scheme: light dark;
21
+
22
+ --colour-black: #000000;
23
+ --colour-white: #fcfcfc;
24
+
25
+ /* #region Theme colours */
26
+ --colour-primary-theme: #00313c;
27
+ --colour-primary: light-dark(#00313c,#b3c1c5);
28
+
29
+ --colour-secondary-theme: #b4e6a5;
30
+ --colour-secondary: #b4e6a5;
31
+
32
+ --colour-success-theme: #b4e6a5;
33
+ --colour-success: #b4e6a5;
34
+
35
+ --colour-info-theme: #1ebee6;
36
+ --colour-info: light-dark(#1ebee6,#35c5e9);
37
+
38
+ --colour-warning-theme: #ffa500;
39
+ --colour-warning: light-dark(#ffa500,#ffb733);
40
+
41
+ --colour-danger-theme: #dc3545;
42
+ --colour-danger: light-dark(#dc3545,#e7727d);
43
+
44
+ --colour-light-theme: #eeeeee;
45
+ --colour-light: #eeeeee;
46
+
47
+ --colour-dark-theme: #46003c;
48
+ --colour-dark: light-dark(#46003c,#b599b1);
49
+ /* #endregion */
50
+
51
+ /* #region functional colours */
52
+ --colour-muted: #9d9d9d;
53
+
54
+ --colour-canvas: light-dark(#fcfcfc,#262626);
55
+ --colour-canvas-2: light-dark(#ffffff,#313131);
56
+ --colour-body-default: light-dark(#595959,#bfbfbf);
57
+ --colour-body: light-dark(#595959,#bfbfbf);
58
+ --colour-heading: light-dark(var(--colour-primary-theme),var(--colour-primary));
59
+ --colour-link: light-dark(var(--colour-primary-theme),var(--colour-white));
60
+ --colour-hover: light-dark(var(--colour-primary-theme),var(--colour-white));
61
+ --colour-focus: light-dark(var(--colour-primary-theme),var(--colour-white));
62
+ --colour-active: light-dark(var(--colour-primary-theme),var(--colour-white));
63
+ --colour-border: light-dark(#d8d8d8,var(--colour-white));
64
+ --colour-brand: light-dark(var(--colour-primary-theme),var(--colour-white));
65
+
66
+ --colour-btn: var(--colour-primary-theme);
67
+ --colour-btn-bg: light-dark(var(--colour-warning-theme),var(--colour-white));
68
+ --colour-btn-border: light-dark(var(--colour-warning-theme),var(--colour-white));
69
+ --colour-btn-bg-hover: transparent;
70
+ --colour-btn-hover: light-dark(var(--colour-primary-theme),var(--colour-white));
71
+
72
+ --colour-btn-secondary: light-dark(var(--colour-primary-theme),var(--colour-white));
73
+ --colour-btn-secondary-border: light-dark(var(--colour-primary-theme),var(--colour-white));
74
+ --colour-btn-secondary-bg: transparent;
75
+ --colour-btn-secondary-bg-hover: light-dark(var(--colour-primary-theme),var(--colour-white));
76
+ --colour-btn-secondary-hover: light-dark(var(--colour-inverted),var(--colour-primary-theme));
77
+ --colour-btn-action-hover-bg: light-dark(var(--colour-light),#313131);
78
+
79
+ --colour-activeLink: light-dark(#e8f9fd,#173c45);
80
+ --colour-activeLinkBorder: light-dark(#1dbde6,#1dbde6);
81
+
82
+ --colour-underline: var(--colour-secondary-theme);
83
+ --colour-selected: var(--colour-info-theme);
84
+
85
+ --colour-inverted: #fcfcfc;
86
+
87
+ --colour-notification-bg: light-dark(#e9f9fd,var(--colour-canvas-2));
88
+ --colour-notification-warning-bg: light-dark(#fff6e6,var(--colour-canvas-2));
89
+ --colour-notification-danger-bg: light-dark(#fcebec,var(--colour-canvas-2));
90
+ --colour-notification-success-bg: light-dark(#f8fdf6,var(--colour-canvas-2));
91
+ /* #endregion */
92
+
93
+ /* #region Wider colours */
94
+ --wider-colour-1: #EEEEEE;
95
+ --wider-colour-2: #EBD7F6;
96
+ --wider-colour-3: #BEE8F8;
97
+ --wider-colour-4: #A6DCC7;
98
+ --wider-colour-5: #FAD0DA;
99
+ --wider-colour-6: #AFCCF2;
100
+ --wider-colour-7: #FFD2B4;
101
+ --wider-colour-8: #CDF0F2;
102
+ --wider-colour-9: #FFABC2;
103
+ --wider-colour-10: #DCEAF2;
104
+ --wider-colour-11: #EEBCB3;
105
+ --wider-colour-12: #F0BDFF;
106
+ --wider-colour-13: #FFF8CF;
107
+ --wider-colour-14: #92E3DF;
108
+ --wider-colour-15: #FEEAE8;
109
+ --wider-colour-16: #8BC3A6;
110
+ --wider-colour-17: #FEF0A6;
111
+ --wider-colour-18: #FFBDA0;
112
+ --wider-colour-19: #CBEFE1;
113
+ --wider-colour-20: #FFDD90;
114
+ --wider-colour-21: #97DBF2;
115
+ --wider-colour-22: #FFAF91;
116
+ --wider-colour-23: #C2DCD9;
117
+ /* #endregion */
118
+ /* #region Wider colours hover */
119
+ --wider-colour-1-hover: #E0E0E0;
120
+ --wider-colour-2-hover: #DFCCE8;
121
+ --wider-colour-3-hover: #B6DEED;
122
+ --wider-colour-4-hover: #98CBB7;
123
+ --wider-colour-5-hover: #EFC8D1;
124
+ --wider-colour-6-hover: #A6C1E5;
125
+ --wider-colour-7-hover: #F4CAAF;
126
+ --wider-colour-8-hover: #C2E3E5;
127
+ --wider-colour-9-hover: #F5A2B9;
128
+ --wider-colour-10-hover: #CFDCE3;
129
+ --wider-colour-11-hover: #E3B2A9;
130
+ --wider-colour-12-hover: #E3B2F2;
131
+ --wider-colour-13-hover: #F0E9C2;
132
+ --wider-colour-14-hover: #8AD9D6;
133
+ --wider-colour-15-hover: #F8E1DF;
134
+ --wider-colour-16-hover: #81B59A;
135
+ --wider-colour-17-hover: #F2E5A0;
136
+ --wider-colour-18-hover: #F2B69D;
137
+ --wider-colour-19-hover: #C2E3D7;
138
+ --wider-colour-20-hover: #F2D28A;
139
+ --wider-colour-21-hover: #8FD0E6;
140
+ --wider-colour-22-hover: #F0A68B;
141
+ --wider-colour-23-hover: #B9D1CE;
142
+ /* #endregion */
143
+ /* #region Wider colours active */
144
+ --wider-colour-1-active: #D6D6D6;
145
+ --wider-colour-2-active: #D4C2DD;
146
+ --wider-colour-3-active: #ABD1DF;
147
+ --wider-colour-4-active: #95C6B3;
148
+ --wider-colour-5-active: #E1BBC4;
149
+ --wider-colour-6-active: #9EB8DA;
150
+ --wider-colour-7-active: #E6BDA2;
151
+ --wider-colour-8-active: #B9D8DA;
152
+ --wider-colour-9-active: #E69AAF;
153
+ --wider-colour-10-active: #C6D3DA;
154
+ --wider-colour-11-active: #D6A9A1;
155
+ --wider-colour-12-active: #D8AAE6;
156
+ --wider-colour-13-active: #E6DFBA;
157
+ --wider-colour-14-active: #83CCC9;
158
+ --wider-colour-15-active: #F4E0DE;
159
+ --wider-colour-16-active: #7DB095;
160
+ --wider-colour-17-active: #FEF0A6;
161
+ --wider-colour-18-active: #E6AA90;
162
+ --wider-colour-19-active: #CBEFE1;
163
+ --wider-colour-20-active: #E6C782;
164
+ --wider-colour-21-active: #88C5DA;
165
+ --wider-colour-22-active: #E69E83;
166
+ --wider-colour-23-active: #AFC6C3;
167
+ /* #endregion */
168
+
30
169
 
31
170
  // Extra vars needed
32
171
  --content-max-width: #{$content-max-width};
33
- --colour-brand: var(--colour-primary);
34
172
 
35
173
  // Cards variables
36
174
  --card-top-padding: 2rem;
@@ -97,64 +235,82 @@ $darkMode: 'true' !default;
97
235
  }
98
236
  }
99
237
 
100
- // Dark mode; functional colours get updated
101
- @media screen and (prefers-color-scheme: light) {
102
- :root {
103
- --theme: light;
104
- --body-theme: light;
105
- }
238
+ .light-theme{
239
+ color-scheme: light;
240
+ }
241
+ .dark-theme{
242
+ color-scheme: dark;
106
243
  }
107
- @media screen and (prefers-color-scheme: dark) {
108
- :root {
109
- --theme: dark;
110
- --body-theme: dark;
244
+
245
+
246
+ // On any background colour we change the default text colour to our primary colour to stand out more
247
+ [class*='bg-']:not(.bg-canvas):not(.bg-canvas-2):not(.bg-light):not(.invert-colours):not(iam-header):not(iam-notification):not(.bg-primary, .bg-danger, .bg-dark) {
248
+
249
+ --colour-heading: var(--colour-primary-theme);
250
+ --colour-body: var(--colour-primary-theme);
251
+ color: var(--colour-primary-theme);
252
+
253
+ > * {
254
+
255
+ color-scheme: light;
111
256
  }
112
257
  }
113
258
 
114
259
 
115
260
  :is(.bg-primary, .bg-danger, .bg-dark) {
116
- --theme: dark;
261
+
262
+ --colour-heading: var(--colour-white);
263
+ --colour-body: var(--colour-white);
264
+ color: var(--colour-white);
117
265
 
118
266
  > * {
119
- color: var(--colour-heading);
267
+
268
+ color-scheme: dark;
120
269
  }
121
270
  }
122
271
 
272
+ // #region When the theme is set to dark via the dark mode component
273
+ // OR when the dark mode is set via the browser or device when no component is present
274
+ .dark-theme :is(.bg-primary, .bg-danger, .bg-dark):not(iam-header) {
123
275
 
124
- @container style(--theme: dark) {
125
- * > *,
126
- [class*='bg-'] {
127
- @each $color, $value in $dark-mode-colors {
128
- --colour-#{$color}: #{$value};
129
- }
130
- @each $color, $value in $dark-mode-functional-colors {
131
- --colour-#{$color}: #{$value};
132
- }
276
+ --colour-heading: var(--colour-primary-theme);
277
+ --colour-body: var(--colour-primary-theme);
278
+ color: var(--colour-primary-theme);
279
+
280
+ // Apply the light colour scheme not on the background element but just its children so that the background colour isn't overwritten
281
+ > * {
282
+ color-scheme: light;
133
283
  }
134
284
  }
135
285
 
136
- @container style(--body-theme: dark) {
137
-
286
+ .dark-theme .bg-light {
287
+ color-scheme: light;
288
+ }
289
+
290
+ @media (prefers-color-scheme: dark) {
291
+ html:not(.light-theme) :is(.bg-primary, .bg-danger, .bg-dark):not(iam-header) {
138
292
 
139
- [class*='bg-']:not(.bg-canvas):not(.bg-canvas-2):not(.bg-light):not(.ds-header):not(iam-header) {
140
- --theme: light;
293
+ --colour-heading: var(--colour-primary-theme);
294
+ --colour-body: var(--colour-primary-theme);
295
+ color: var(--colour-primary-theme);
141
296
 
297
+ // Apply the light colour scheme not on the background element but just its children so that the background colour isn't overwritten
142
298
  > * {
143
- color: var(--colour-heading);
299
+ color-scheme: light;
144
300
  }
145
- }
301
+ }
146
302
 
147
- }
303
+ html:not(.light-theme) .bg-light {
148
304
 
305
+ color-scheme: light;
306
+ }
307
+ }
308
+ // #endregion
149
309
 
150
- @container style(--theme: light) {
151
- * > * {
152
- @each $color, $value in $theme-colors {
153
- --colour-#{$color}: #{$value};
154
- }
155
- @each $color, $value in $non-theme-colors {
156
- --colour-#{$color}: #{$value};
157
- }
310
+ .invert-colours {
311
+ > * {
312
+ color-scheme: dark;
313
+ color: var(--colour-white);
158
314
  }
159
315
  }
160
316
 
@@ -60,10 +60,6 @@ $darkMode: 'true' !default;
60
60
  overflow: hidden;
61
61
  }
62
62
 
63
- @include light-mode($darkMode) {
64
- background-color: #e9f9fd;
65
- }
66
-
67
63
  > figure {
68
64
  position: relative;
69
65
  display: block;
@@ -9,9 +9,7 @@ $darkMode: 'true' !default;
9
9
 
10
10
  @include layer('templates', $layers) {
11
11
  body:has(.template--form) {
12
- @include light-mode($darkMode) {
13
- background-color: #e9f9fd;
14
- }
12
+ background-color: #e9f9fd;
15
13
  }
16
14
 
17
15
  .template--form {
@@ -42,9 +40,8 @@ $darkMode: 'true' !default;
42
40
  max-width: var(--content-max-width);
43
41
  }
44
42
 
45
- @include light-mode($darkMode) {
46
- background-color: #e9f9fd;
47
- }
43
+ background-color: #e9f9fd;
44
+
48
45
 
49
46
  .form-panel {
50
47
  display: block;
@@ -45,6 +45,7 @@ class iamBentoGrid extends HTMLElement {
45
45
 
46
46
  Array.from(arrDetails).forEach((details: HTMLDetailsElement) => {
47
47
  details.classList.add('bg-primary');
48
+ details.classList.add('invert-colours');
48
49
  const summary = details.querySelector('summary');
49
50
 
50
51
  summary?.classList.add('h3');
@@ -30,58 +30,77 @@ class iamDarkMode extends HTMLElement {
30
30
  }
31
31
 
32
32
  connectedCallback(): void {
33
- const label = this.querySelector('label');
34
33
 
35
34
  const storedTheme = localStorage.getItem('user-theme');
36
-
37
- console.log(storedTheme);
35
+ const hasDarkPreference = window.matchMedia('(prefers-color-scheme: dark)').matches;
38
36
 
39
37
  // Work from local storage first then look at the media preferences
40
- label?.innerHTML = `<input type="checkbox" name="dark-mode" /> Light mode`;
41
- if (storedTheme == 'dark-theme') {
42
- label?.innerHTML = `<input type="checkbox" name="dark-mode" checked="checked" /> Dark mode`;
38
+ this?.innerHTML = `<label class="toggle"><input type="checkbox" name="dark-mode" /> <span style="all: unset!important;">Light mode</span></label>`;
39
+
40
+ const label = this.querySelector('label');
41
+ const input = this.querySelector('input');
42
+ const span = this.querySelector('span');
43
+
44
+ const setDark = () => {
45
+
46
+ document.documentElement.classList.add('dark-theme');
47
+ document.documentElement.classList.remove('light-theme');
48
+
49
+ input.checked = true;
50
+ span?.innerHTML = `Dark mode`;
43
51
  label?.classList.add('dark-theme');
44
- document.documentElement.className = 'dark-theme';
45
- } else if (storedTheme == 'light-theme') {
46
- label?.innerHTML = `<input type="checkbox" name="dark-mode" /> Light mode`;
47
- label?.classList.remove('dark-theme');
48
- document.documentElement.className = 'light-theme';
49
52
  }
50
53
 
51
- const hasDarkPreference = window.matchMedia('(prefers-color-scheme: dark)').matches;
52
- if (hasDarkPreference) {
53
- label?.innerHTML = `<input type="checkbox" name="dark-mode" checked="checked" /> Dark mode`;
54
+ const unsetDark = () => {
55
+
56
+ document.documentElement.classList.remove('dark-theme');
57
+ document.documentElement.classList.add('light-theme');
58
+
59
+ input.checked = false;
60
+ span?.innerHTML = `Light mode`;
54
61
  label?.classList.remove('dark-theme');
55
62
  }
56
63
 
57
- this.addEventListener('click', (event) => {
58
- if (label?.querySelector('input:checked')) {
59
- label?.innerHTML = `<input type="checkbox" name="dark-mode" checked="checked" /> Dark mode`;
64
+ if (storedTheme == 'light-theme') {
65
+ document.documentElement.classList.add('light-theme');
66
+ }
67
+ else if (storedTheme == 'dark-theme') {
68
+ setDark();
69
+ }
70
+ else if(hasDarkPreference) {
71
+ setDark();
72
+ }
73
+
74
+ input.addEventListener('change', () => {
75
+
76
+ if(input.checked){
60
77
  localStorage.setItem('user-theme', 'dark-theme');
61
- document.documentElement.className = 'dark-theme';
62
- label?.classList.add('dark-theme');
63
- } else {
64
- label?.innerHTML = `<input type="checkbox" name="dark-mode" /> Light mode`;
78
+ setDark();
79
+ }
80
+ else {
65
81
  localStorage.setItem('user-theme', 'light-theme');
66
- document.documentElement.className = 'light-theme';
67
- label?.classList.remove('dark-theme');
82
+ unsetDark();
68
83
  }
69
- });
70
84
 
71
- window.matchMedia('(prefers-color-scheme: dark)').addEventListener('change', ({ matches }) => {
72
- if (matches) {
73
- label?.innerHTML = `<input type="checkbox" name="dark-mode" checked="checked" /> Dark mode`;
74
- label?.classList.add('dark-theme');
75
- document.documentElement.className = 'dark-theme';
76
- }
85
+ // Dispatch event so other toggles can then detect it
86
+ const customEvent = new CustomEvent('theme-change');
87
+ document.dispatchEvent(customEvent);
77
88
  });
78
89
 
79
- window.matchMedia('(prefers-color-scheme: light)').addEventListener('change', ({ matches }) => {
80
- if (matches) {
81
- label?.innerHTML = `<input type="checkbox" name="dark-mode" /> Light mode`;
82
- label?.classList.remove('dark-theme');
83
- document.documentElement.className = 'light-theme';
84
- }
90
+ // Detect if the theme has been changed outside of this toggle; i.e. another toggle or via other javascript
91
+ document.addEventListener('theme-change', () => {
92
+
93
+ if(document.documentElement.classList.contains('dark-theme'))
94
+ setDark();
95
+ else
96
+ unsetDark();
97
+ })
98
+
99
+ window.matchMedia('(prefers-color-scheme: dark)').addEventListener('change', ({ matches }) => {
100
+ if (matches)
101
+ setDark();
102
+ else
103
+ unsetDark();
85
104
  });
86
105
  }
87
106
  }
@@ -40,7 +40,7 @@ class iamNav extends HTMLElement {
40
40
  </div>
41
41
  <div class="dialog__wrapper d-none" id="search-wrapper"></div>
42
42
  <slot name="actions"></slot>
43
- <div class="menu__secondary">
43
+ <div class="menu__secondary bg-light">
44
44
  <div class="container">
45
45
  <slot name="secondary"></slot>
46
46
  </div>
@@ -1604,7 +1604,7 @@ class iamSTDAddressLookup extends HTMLElement {
1604
1604
  <option></option>
1605
1605
  ${countiesString}
1606
1606
  </select></label>
1607
- <label>Postcode${this.hasAttribute('data-show-required') ? '*' : ''} <input name="postcode" type="text" required data-required data-readonly maxlength="8" ${this.hasAttribute('data-required') ? ' required' : ''}/></label>
1607
+ <label>Postcode${this.hasAttribute('data-show-required') ? '*' : ''} <input name="postcode" type="text" ${!this.hasAttribute('data-required') || this.hasAttribute('data-required') && this.getAttribute('data-required') == 'false' ? 'required data-required' : ''} data-readonly maxlength="8" ${this.hasAttribute('data-required') ? ' required' : ''}/></label>
1608
1608
  <label>Country${this.hasAttribute('data-show-required') && this.hasAttribute('data-country-required') ? '*' : (!this.hasAttribute('data-show-required') && !this.hasAttribute('data-county-required') ? ' (optional)' : '')}
1609
1609
  <select name="region" data-readonly ${this.hasAttribute('data-country-required') ? 'data-required' : ''}>
1610
1610
  <option value=""></option>
@@ -1661,7 +1661,7 @@ class iamSTDAddressLookup extends HTMLElement {
1661
1661
  </fieldset>
1662
1662
 
1663
1663
  <button slot="actions" type="button" id="overseasToggle" class="link toggleOverseas">Use overseas address</button>` : ''}
1664
-
1664
+ ${this.hasAttribute('data-address-unknown') ? `<label slot="actions"><input type="checkbox" value="true" name="${this.getAttribute('data-address-unknown')}" ${this.hasAttribute('data-address-unknown-checked') ? 'checked="checked"' : '' }/> Address unknown</label>` : ``}
1665
1665
  <div class="bg-light text-center px-3" slot="afterList">
1666
1666
  <p class="p-2">Can't find an address? Check details with the <br/><a href="" class="fa-new"><i class="fa-regular fa-arrow-up-right-from-square"></i>Royal mail address finder</a></p>
1667
1667
  ${this.hasAttribute('data-allow-overseas') ? `<hr/><p class="p-2">If the address doesn’t exist you can enter manually <br /><button type="button" id="overseasToggleInline" class="mt-1 mb-0 btn btn-action"><i class="fa-regular fa-edit me-1"></i>Enter address manually</button></p>` : ''}
@@ -1731,6 +1731,7 @@ class iamSTDAddressLookup extends HTMLElement {
1731
1731
  addressComponent.dispatchEvent(updateEvent);
1732
1732
 
1733
1733
  languageToggle.focus();
1734
+
1734
1735
  });
1735
1736
 
1736
1737
 
@@ -1753,6 +1754,39 @@ class iamSTDAddressLookup extends HTMLElement {
1753
1754
  }
1754
1755
  });
1755
1756
 
1757
+
1758
+ // If the address unknown checkbox if checked then remove any required fields so you can post the form
1759
+ if(this.hasAttribute('data-address-unknown')){
1760
+ const addressUnknownInput = this.querySelector(`[name="${this.getAttribute('data-address-unknown')}"]`);
1761
+
1762
+ if(addressUnknownInput && addressUnknownInput.checked) {
1763
+
1764
+ Array.from(this.querySelectorAll('[required]')).forEach(element => {
1765
+ element.removeAttribute('required');
1766
+ element.setAttribute('data-not-unknown-required','true');
1767
+ });
1768
+ }
1769
+
1770
+ addressUnknownInput?.addEventListener('change',(event) => {
1771
+ if(addressUnknownInput.checked) {
1772
+ Array.from(this.querySelectorAll('[required]')).forEach(element => {
1773
+ element.removeAttribute('required');
1774
+ element.setAttribute('data-not-unknown-required','true');
1775
+ });
1776
+
1777
+ const updateEvent = new CustomEvent('address-unknown');
1778
+ this.dispatchEvent(updateEvent);
1779
+ }
1780
+ else {
1781
+ Array.from(this.querySelectorAll('[data-not-unknown-required')).forEach(element => {
1782
+ element.setAttribute('required','true');
1783
+ });
1784
+
1785
+ const updateEvent = new CustomEvent('address-known');
1786
+ this.dispatchEvent(updateEvent);
1787
+ }
1788
+ });
1789
+ }
1756
1790
  }
1757
1791
  }
1758
1792
 
@@ -23,10 +23,6 @@ class iamTabs extends HTMLElement {
23
23
  <style>
24
24
 
25
25
  ${loadCSS}
26
-
27
- :host(.admin-panel){
28
- display: contents!important;
29
- }
30
26
 
31
27
  ${this.hasAttribute('css') ? `@import "${this.getAttribute('css')}";` : ``}
32
28
  </style>