@iamproperty/components 4.0.0 → 4.1.0-beta-2

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 (90) hide show
  1. package/assets/css/components/actionbar-global.css +1 -1
  2. package/assets/css/components/actionbar-global.css.map +1 -1
  3. package/assets/css/components/actionbar.css +1 -1
  4. package/assets/css/components/actionbar.css.map +1 -1
  5. package/assets/css/components/admin-panel.css +1 -1
  6. package/assets/css/components/admin-panel.css.map +1 -1
  7. package/assets/css/components/card-global.css +1 -1
  8. package/assets/css/components/card-global.css.map +1 -1
  9. package/assets/css/components/card.css +1 -1
  10. package/assets/css/components/card.css.map +1 -1
  11. package/assets/css/components/charts.css.map +1 -1
  12. package/assets/css/components/collapsible-side.css.map +1 -1
  13. package/assets/css/components/dialog.css +1 -1
  14. package/assets/css/components/dialog.css.map +1 -1
  15. package/assets/css/components/fileupload.css.map +1 -1
  16. package/assets/css/components/forms.css +1 -1
  17. package/assets/css/components/forms.css.map +1 -1
  18. package/assets/css/components/header.css.map +1 -1
  19. package/assets/css/components/lists.css.map +1 -1
  20. package/assets/css/components/nav-global.css +1 -1
  21. package/assets/css/components/nav-global.css.map +1 -1
  22. package/assets/css/components/nav.css.map +1 -1
  23. package/assets/css/components/nav.old.css.map +1 -1
  24. package/assets/css/components/notification.css.map +1 -1
  25. package/assets/css/components/pagination.css.map +1 -1
  26. package/assets/css/components/property-searchbar.css.map +1 -1
  27. package/assets/css/components/table.css +1 -1
  28. package/assets/css/components/table.css.map +1 -1
  29. package/assets/css/core.min.css +1 -1
  30. package/assets/css/core.min.css.map +1 -1
  31. package/assets/css/style.min.css +1 -1
  32. package/assets/css/style.min.css.map +1 -1
  33. package/assets/js/components/accordion/accordion.component.min.js +1 -1
  34. package/assets/js/components/actionbar/actionbar.component.js +45 -0
  35. package/assets/js/components/actionbar/actionbar.component.min.js +4 -4
  36. package/assets/js/components/actionbar/actionbar.component.min.js.map +1 -1
  37. package/assets/js/components/applied-filters/applied-filters.component.min.js +3 -3
  38. package/assets/js/components/applied-filters/applied-filters.component.min.js.map +1 -1
  39. package/assets/js/components/card/card.component.js +9 -1
  40. package/assets/js/components/card/card.component.min.js +7 -5
  41. package/assets/js/components/card/card.component.min.js.map +1 -1
  42. package/assets/js/components/collapsible-side/collapsible-side.component.min.js +1 -1
  43. package/assets/js/components/filterlist/filterlist.component.min.js +1 -1
  44. package/assets/js/components/header/header.component.min.js +1 -1
  45. package/assets/js/components/nav/nav.component.min.js +1 -1
  46. package/assets/js/components/notification/notification.component.min.js +1 -1
  47. package/assets/js/components/pagination/pagination.component.min.js +1 -1
  48. package/assets/js/components/table/table.component.js +3 -0
  49. package/assets/js/components/table/table.component.min.js +10 -10
  50. package/assets/js/components/table/table.component.min.js.map +1 -1
  51. package/assets/js/components/tabs/tabs.component.min.js +1 -1
  52. package/assets/js/dynamic.min.js +4 -4
  53. package/assets/js/dynamic.min.js.map +1 -1
  54. package/assets/js/modules/applied-filters.js +3 -3
  55. package/assets/js/modules/dialogs.js +17 -1
  56. package/assets/js/modules/table.js +68 -13
  57. package/assets/js/scripts.bundle.js +15 -13
  58. package/assets/js/scripts.bundle.js.map +1 -1
  59. package/assets/js/scripts.bundle.min.js +2 -2
  60. package/assets/js/scripts.bundle.min.js.map +1 -1
  61. package/assets/sass/_corefiles.scss +0 -1
  62. package/assets/sass/_func.scss +1 -0
  63. package/assets/sass/_functions/mixins.scss +22 -0
  64. package/assets/sass/components/actionbar-global.scss +69 -7
  65. package/assets/sass/components/actionbar.scss +20 -8
  66. package/assets/sass/components/admin-panel.scss +47 -2
  67. package/assets/sass/components/card-global.scss +53 -1
  68. package/assets/sass/components/card.scss +14 -12
  69. package/assets/sass/components/charts.scss +1 -1
  70. package/assets/sass/components/collapsible-side.scss +1 -1
  71. package/assets/sass/components/dialog.scss +50 -53
  72. package/assets/sass/components/fileupload.scss +1 -1
  73. package/assets/sass/components/forms.scss +99 -89
  74. package/assets/sass/components/nav-global.scss +15 -9
  75. package/assets/sass/components/nav.scss +9 -10
  76. package/assets/sass/components/notification.scss +1 -1
  77. package/assets/sass/components/table.scss +85 -4
  78. package/assets/sass/core.scss +1 -0
  79. package/assets/sass/error.scss +2 -1
  80. package/assets/sass/foundations/root.scss +3 -3
  81. package/assets/sass/main.scss +4 -3
  82. package/assets/ts/components/actionbar/actionbar.component.ts +67 -2
  83. package/assets/ts/components/card/card.component.ts +12 -2
  84. package/assets/ts/components/table/table.component.ts +4 -0
  85. package/assets/ts/modules/applied-filters.ts +6 -5
  86. package/assets/ts/modules/dialogs.ts +23 -1
  87. package/assets/ts/modules/table.ts +82 -13
  88. package/dist/components.es.js +900 -828
  89. package/dist/components.umd.js +55 -53
  90. package/package.json +1 -1
@@ -16,7 +16,7 @@ label {
16
16
  // #endregion
17
17
 
18
18
  // #region input field
19
- :is(input,textarea,output,select) {
19
+ :is(input:not([type="checkbox"]):not([type="radio"]),textarea,output,select) {
20
20
  display: block;
21
21
  width: 100%;
22
22
  max-width: $content-max-width;
@@ -192,111 +192,117 @@ div:has(> label:first-child):has(> input):has(> :is(.form-control-inline,.input-
192
192
 
193
193
  // #region prefix
194
194
  :is(.prefix, .suffix) {
195
- display: inline-block;
196
- width: auto;
197
- padding: var(--input-padding-block, #{rem(12)}) var(--input-padding-block, #{rem(16)});
198
- font-size: var(--input-fs, #{rem(16)});
199
- line-height: var(--input-lh, #{rem(20)});
200
- color: var(--colour-body);
201
- background-color: var(--colour-primary-theme);
202
- border: 2px solid var(--colour-primary);
203
- color: var(--colour-white);
204
- margin-bottom: 1rem;
205
- border-end-start-radius: rem(8);
206
- border-start-start-radius: rem(8);
207
- min-width: calc(#{rem(20 + 12 + 12)} + 4px);
208
- overflow: hidden;
209
- white-space: nowrap;
210
- text-align: center;
211
- text-overflow: ellipsis;
212
- position: relative;
213
-
214
- min-height: calc(var(--input-padding-block, #{rem(12)}) + var(--input-padding-block, #{rem(12)}) + var(--input-lh, #{rem(20)}) + 4px);
215
- max-height: calc(var(--input-padding-block, #{rem(12)}) + var(--input-padding-block, #{rem(12)}) + var(--input-lh, #{rem(20)}) + 4px);
216
-
195
+ display: none;
196
+ }
197
+ @supports selector(:has(*)) {
217
198
 
218
- &:after {
199
+ :is(.prefix, .suffix) {
219
200
  display: inline-block;
220
- max-width: rem(20);
221
- }
201
+ width: auto;
202
+ padding: var(--input-padding-block, #{rem(12)}) var(--input-padding-block, #{rem(16)});
203
+ font-size: var(--input-fs, #{rem(16)});
204
+ line-height: var(--input-lh, #{rem(20)});
205
+ color: var(--colour-body);
206
+ background-color: var(--colour-primary-theme);
207
+ border: 2px solid var(--colour-primary);
208
+ color: var(--colour-white);
209
+ margin-bottom: 1rem;
210
+ border-end-start-radius: rem(8);
211
+ border-start-start-radius: rem(8);
212
+ min-width: calc(#{rem(20 + 12 + 12)} + 4px);
213
+ overflow: hidden;
214
+ white-space: nowrap;
215
+ text-align: center;
216
+ text-overflow: ellipsis;
217
+ position: relative;
218
+
219
+ min-height: calc(var(--input-padding-block, #{rem(12)}) + var(--input-padding-block, #{rem(12)}) + var(--input-lh, #{rem(20)}) + 4px);
220
+ max-height: calc(var(--input-padding-block, #{rem(12)}) + var(--input-padding-block, #{rem(12)}) + var(--input-lh, #{rem(20)}) + 4px);
222
221
 
223
- &[class*="fa-"] {
224
- width: calc(#{rem(20 + 12 + 12)} + 4px);
225
- padding-inline: 0;
226
- }
227
222
 
228
- select {
229
- position: absolute;
230
- inset: 0;
231
- opacity: 0;
232
- cursor: pointer;
233
- }
223
+ &:after {
224
+ display: inline-block;
225
+ max-width: rem(20);
226
+ }
234
227
 
235
- span {
236
- display: none;
237
- }
228
+ &[class*="fa-"] {
229
+ width: calc(#{rem(20 + 12 + 12)} + 4px);
230
+ padding-inline: 0;
231
+ }
238
232
 
239
- select:has(option:nth-child(1):checked) ~ span:nth-of-type(1),
240
- select:has(option:nth-child(2):checked) ~ span:nth-of-type(2),
241
- select:has(option:nth-child(3):checked) ~ span:nth-of-type(3),
242
- select:has(option:nth-child(4):checked) ~ span:nth-of-type(4),
243
- select:has(option:nth-child(5):checked) ~ span:nth-of-type(5),
244
- select:has(option:nth-child(6):checked) ~ span:nth-of-type(6),
245
- select:has(option:nth-child(7):checked) ~ span:nth-of-type(7),
246
- select:has(option:nth-child(8):checked) ~ span:nth-of-type(8),
247
- select:has(option:nth-child(9):checked) ~ span:nth-of-type(9),
248
- select:has(option:nth-child(10):checked) ~ span:nth-of-type(10) {
233
+ select {
234
+ position: absolute;
235
+ inset: 0;
236
+ opacity: 0;
237
+ cursor: pointer;
238
+ }
249
239
 
250
- display: block;
251
- }
240
+ span {
241
+ display: none;
242
+ }
252
243
 
253
- select ~ span:after {
254
- content: " \f078";
255
- font-family: "Font Awesome 6 Pro";
256
- font-size: 0.8em;
257
- display: inline-block;
258
- padding-left: 1em;
259
- }
244
+ select:has(option:nth-child(1):checked) ~ span:nth-of-type(1),
245
+ select:has(option:nth-child(2):checked) ~ span:nth-of-type(2),
246
+ select:has(option:nth-child(3):checked) ~ span:nth-of-type(3),
247
+ select:has(option:nth-child(4):checked) ~ span:nth-of-type(4),
248
+ select:has(option:nth-child(5):checked) ~ span:nth-of-type(5),
249
+ select:has(option:nth-child(6):checked) ~ span:nth-of-type(6),
250
+ select:has(option:nth-child(7):checked) ~ span:nth-of-type(7),
251
+ select:has(option:nth-child(8):checked) ~ span:nth-of-type(8),
252
+ select:has(option:nth-child(9):checked) ~ span:nth-of-type(9),
253
+ select:has(option:nth-child(10):checked) ~ span:nth-of-type(10) {
254
+
255
+ display: block;
256
+ }
260
257
 
261
- select:focus-visible ~ span:after {
262
- content: "\f077";
258
+ select ~ span:after {
259
+ content: " \f078";
260
+ font-family: "Font Awesome 6 Pro";
261
+ font-size: 0.8em;
262
+ display: inline-block;
263
+ padding-left: 1em;
264
+ }
265
+
266
+ select:focus-visible ~ span:after {
267
+ content: "\f077";
268
+ }
263
269
  }
264
- }
265
270
 
266
- .prefix {
267
-
268
- border-right: none;
269
- }
271
+ .prefix {
272
+
273
+ border-right: none;
274
+ }
270
275
 
271
- .suffix {
272
-
273
- border-left: none;
274
- border-end-start-radius: 0;
275
- border-start-start-radius: 0;
276
- border-start-end-radius: rem(8)!important;
277
- border-end-end-radius: rem(8)!important;
278
- order: 2;
279
- }
276
+ .suffix {
277
+
278
+ border-left: none;
279
+ border-end-start-radius: 0;
280
+ border-start-start-radius: 0;
281
+ border-start-end-radius: rem(8)!important;
282
+ border-end-end-radius: rem(8)!important;
283
+ order: 2;
284
+ }
280
285
 
281
- .prefix span {
282
- display: none;
286
+ .prefix span {
287
+ display: none;
283
288
 
284
- small {
285
- font-size: 0.8em;
289
+ small {
290
+ font-size: 0.8em;
291
+ }
286
292
  }
287
- }
288
293
 
289
- .prefix ~ :is(input,textarea,output) {
290
-
291
- border-end-start-radius: 0;
292
- border-start-start-radius: 0;
293
- }
294
+ .prefix ~ :is(input,textarea,output) {
295
+
296
+ border-end-start-radius: 0;
297
+ border-start-start-radius: 0;
298
+ }
294
299
 
295
- .suffix ~ :is(input,textarea,output) {
296
- order: 1;
297
-
298
- border-start-end-radius: 0;
299
- border-end-end-radius: 0;
300
+ .suffix ~ :is(input,textarea,output) {
301
+ order: 1;
302
+
303
+ border-start-end-radius: 0;
304
+ border-end-end-radius: 0;
305
+ }
300
306
  }
301
307
  // #endregion
302
308
 
@@ -379,6 +385,8 @@ $icon-tick: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' view
379
385
  // #endregion
380
386
 
381
387
  // #region radio/checkbox field
388
+ @supports selector(:has(*)) {
389
+
382
390
  input:is([type="radio"],[type="checkbox"]) {
383
391
  position: absolute;
384
392
  top: 0;
@@ -629,6 +637,8 @@ input[type="checkbox"][disabled]:checked + label {
629
637
  border-color: #E0E0E0!important;
630
638
  }
631
639
  }
640
+
641
+ }
632
642
  // #endregion
633
643
 
634
644
  // #region Conditional reveal
@@ -10,11 +10,17 @@ body:has(iam-nav.open:not(.nav--sticky):not(.nav--xs-sticky)) {
10
10
  body {
11
11
 
12
12
  --nav-height: #{rem(96)};
13
+ --sticky-padding: 0px;
13
14
 
14
15
  &:has(iam-nav a[slot="secondary"]){
15
16
 
16
17
  --nav-height: #{rem(96 + 40)};
17
18
  }
19
+
20
+ &:has(iam-nav.nav--sticky) {
21
+
22
+ --sticky-padding: var(--nav-height);
23
+ }
18
24
  }
19
25
 
20
26
  // #region Create the correct padding top of the page
@@ -110,7 +116,7 @@ iam-nav {
110
116
  text-decoration: none;
111
117
  }
112
118
 
113
- a:not([slot="logo"]):not(:has(iam-card)) {
119
+ a:not([slot="logo"]):not(.btn):not(:has(iam-card)) {
114
120
 
115
121
  text-decoration: none;
116
122
 
@@ -165,7 +171,7 @@ iam-nav details {
165
171
 
166
172
  background-color: var(--colour-canvas);
167
173
 
168
- @media screen and (prefers-color-scheme: light) {
174
+ @include light-mode() {
169
175
  background-color: #EEEEEE;
170
176
  }
171
177
 
@@ -180,9 +186,9 @@ iam-nav details {
180
186
  background-color: var(--colour-white);
181
187
 
182
188
 
183
- @media screen and (prefers-color-scheme: dark) {
189
+ @include dark-mode() {
184
190
 
185
- background-color: var(--colour-canvas-2);
191
+ background-color: var(--colour-canvas-2);
186
192
  }
187
193
  display:block;
188
194
  border: none;
@@ -378,11 +384,11 @@ iam-nav details {
378
384
  box-shadow: 0px 6px 12px rgba(0, 0, 0, 0.11);
379
385
 
380
386
 
381
- @media screen and (prefers-color-scheme: light) {
387
+ @include light-mode() {
382
388
  background: var(--colour-white);
383
389
  @include reset-colours();
384
390
  }
385
- @media screen and (prefers-color-scheme: dark) {
391
+ @include dark-mode() {
386
392
 
387
393
  @include invert-colours();
388
394
  }
@@ -393,7 +399,7 @@ iam-nav details {
393
399
 
394
400
  background: var(--colour-canvas-2);
395
401
 
396
- @media screen and (prefers-color-scheme: light) {
402
+ @include light-mode() {
397
403
  background: #EEEEEE;
398
404
  }
399
405
  a {
@@ -426,7 +432,7 @@ iam-nav details {
426
432
  &[open] > div:not(:has(details)) {
427
433
  background: var(--colour-canvas);
428
434
 
429
- @media screen and (prefers-color-scheme: light) {
435
+ @include light-mode() {
430
436
  background: var(--colour-white);
431
437
  --colour-canvas-2: white;
432
438
  }
@@ -489,7 +495,7 @@ iam-nav details {
489
495
  }
490
496
  }
491
497
 
492
- a:not([slot="logo"]):not(:has(iam-card)) {
498
+ a:not([slot="logo"]):not(.btn):not(:has(iam-card)) {
493
499
 
494
500
  font-size: 1rem;
495
501
  line-height: rem(24);
@@ -98,7 +98,7 @@
98
98
  }
99
99
 
100
100
  .btn {
101
- @media screen and (prefers-color-scheme: light) {
101
+ @include light-mode() {
102
102
 
103
103
  @include reset-colours();
104
104
 
@@ -188,13 +188,13 @@
188
188
  flex-shrink: 0;
189
189
  }
190
190
 
191
- @media screen and (prefers-color-scheme: dark) {
191
+ @include dark-mode() {
192
192
  --colour-link: var(--colour-white);
193
193
  @include invert-colours();
194
194
  }
195
195
 
196
196
  // The menu is always white unless in dark mode
197
- @media screen and (prefers-color-scheme: light) {
197
+ @include light-mode() {
198
198
 
199
199
  background-color: var(--colour-white);
200
200
  @include reset-colours();
@@ -242,7 +242,7 @@
242
242
  flex-grow: 1;
243
243
  position: relative;
244
244
 
245
- @media screen and (prefers-color-scheme: light) {
245
+ @include light-mode() {
246
246
  background-color: #EEEEEE;
247
247
  }
248
248
 
@@ -393,14 +393,13 @@
393
393
  left: 0;
394
394
  width: 100%;
395
395
 
396
- @media screen and (prefers-color-scheme: light) {
396
+ @include light-mode(){
397
397
 
398
398
  background-color: #EEEEEE;
399
399
  @include reset-colours();
400
400
  }
401
401
 
402
- @media screen and (prefers-color-scheme: dark) {
403
-
402
+ @include dark-mode() {
404
403
 
405
404
  @include invert-colours();
406
405
  }
@@ -494,7 +493,7 @@
494
493
 
495
494
  background: #E6EAEC!important;
496
495
 
497
- @media screen and (prefers-color-scheme: dark) {
496
+ @include dark-mode() {
498
497
 
499
498
  background: var(--colour-canvas-2)!important;
500
499
  }
@@ -564,13 +563,13 @@
564
563
  flex-shrink: 0;
565
564
  }
566
565
 
567
- @media screen and (prefers-color-scheme: dark) {
566
+ @include dark-mode() {
568
567
  --colour-link: var(--colour-white);
569
568
  @include invert-colours();
570
569
  }
571
570
 
572
571
  // The menu is always white unless in dark mode
573
- @media screen and (prefers-color-scheme: light) {
572
+ @include light-mode() {
574
573
 
575
574
  background-color: var(--colour-white);
576
575
  @include reset-colours();
@@ -90,7 +90,7 @@
90
90
  display: flex;
91
91
  flex-wrap: nowrap;
92
92
 
93
- @media screen and (prefers-color-scheme: light) {
93
+ @include light-mode() {
94
94
  color: var(--colour-heading);
95
95
  }
96
96
 
@@ -76,7 +76,7 @@ tr td[colspan="100%"]:first-child:last-child span {
76
76
  @container (width >= 60em) {
77
77
  thead {
78
78
 
79
- th {
79
+ th:not(:empty) {
80
80
  white-space: nowrap;
81
81
  min-width: #{$td-mw};
82
82
  }
@@ -136,12 +136,17 @@ table.border-0 {
136
136
  margin-bottom: 0;
137
137
 
138
138
  td:has(input[type="checkbox"]) {
139
- width: rem(30);
140
- min-width: rem(30);
141
- max-width: rem(30);
139
+ width: rem(40);
140
+ min-width: rem(40);
141
+ max-width: rem(40);
142
142
  }
143
143
  }
144
144
 
145
+ @media screen and (prefers-color-scheme: dark) {
146
+
147
+ background: var(--colour-canvas-2);
148
+ }
149
+
145
150
  @media (forced-colors: active) {
146
151
  --wrapper-padding: 0;
147
152
  background: var(--colour-canvas-2);
@@ -170,6 +175,11 @@ table.border-0 {
170
175
  margin-right: -1.5rem;
171
176
  margin-bottom: 0;
172
177
  background: white;
178
+
179
+ @media screen and (prefers-color-scheme: dark) {
180
+
181
+ background: var(--colour-canvas-2);
182
+ }
173
183
  }
174
184
 
175
185
 
@@ -381,7 +391,13 @@ table.border-0 {
381
391
  margin-left: rem(-40);
382
392
  min-height: var(--row-height);
383
393
  text-align: right;
394
+ background: linear-gradient(90deg, transparent 0%, white 1.25rem);
395
+ cursor: default;
396
+
397
+ @media screen and (prefers-color-scheme: dark) {
398
+
384
399
  background: linear-gradient(90deg, transparent 0%, var(--colour-canvas-2) 1.25rem);
400
+ }
385
401
 
386
402
  &:after {
387
403
  bottom: 0;
@@ -622,3 +638,68 @@ table {
622
638
  color: var(--colour-primary);
623
639
  }
624
640
  }
641
+
642
+ // #region Table with actionbar
643
+
644
+ iam-table {
645
+
646
+ td:has([type="checkbox"]){
647
+ position: static!important;
648
+ width: rem(40);
649
+ }
650
+
651
+ input:is([type="radio"],[type="checkbox"]) + label {
652
+ padding-left: 0!important;
653
+ margin: 0!important;
654
+
655
+ &:before,
656
+ &:after {
657
+ top: 0!important;
658
+ }
659
+ }
660
+
661
+ table:has([type="checkbox"]:checked) tr:has([type="checkbox"]){
662
+
663
+ cursor: pointer;
664
+
665
+ &:is(:hover, :focus) {
666
+
667
+ background: var(--hover-background);
668
+ }
669
+
670
+ td {
671
+ background: transparent;
672
+ }
673
+
674
+ [type="checkbox"] {
675
+ width: 100%;
676
+ height: 100%;
677
+ max-height: var(--row-height);
678
+ max-width: 100%;
679
+ cursor: pointer;
680
+ pointer-events: all;
681
+ top: auto;
682
+ margin: 0;
683
+ margin-top: -0.75rem;
684
+ }
685
+
686
+ }
687
+ }
688
+
689
+ @container (width < 23.4375em) {
690
+
691
+ iam-table:has([slot="before"]) {
692
+
693
+ iam-actionbar {
694
+ background-color: #e6eaec;
695
+ }
696
+ .actionbar__sticky + * {
697
+ margin-top: 0!important;
698
+ }
699
+ }
700
+
701
+ .table__wrapper.has-actionbar {
702
+ margin-top: calc(-100vh - -6.75rem)!important;
703
+ }
704
+ }
705
+ // #endregion
@@ -2,5 +2,6 @@
2
2
 
3
3
  @use "_fonts";
4
4
  @use "_corefiles";
5
+ @use '../../assets/sass/components/nav-global.scss';
5
6
  @use "_forms";
6
7
  @use "_print";
@@ -2,4 +2,5 @@
2
2
 
3
3
  // Set mobile only variable so that the media query mixin doesn't print out non mobile rules
4
4
  @use "_func" as *;
5
- @import "_corefiles";
5
+ @import "_corefiles";
6
+ @import '../../assets/sass/components/nav-global.scss';
@@ -39,7 +39,7 @@
39
39
  }
40
40
 
41
41
  // Dark mode; functional colours get updated
42
- @media screen and (prefers-color-scheme: dark) {
42
+ @include dark-mode() {
43
43
  :root {
44
44
 
45
45
  @each $color, $value in $dark-mode-colors {
@@ -49,7 +49,7 @@
49
49
  }
50
50
  }
51
51
 
52
- @media screen and (prefers-color-scheme: light) {
52
+ @include light-mode() {
53
53
 
54
54
  // Reset the colours of lighter backgrounds to make sure they aren't over written by dark mode. Some other tweaks to colours are applied
55
55
  [class*="bg-"]:not(.bg-primary):not(.bg-dark):not(.bg-danger):not(.bg-white):not(.bg-canvas):not(.bg-canvas-2):not(.invert-colours) {
@@ -72,7 +72,7 @@
72
72
  }
73
73
  }
74
74
 
75
- @media screen and (prefers-color-scheme: dark) {
75
+ @include dark-mode() {
76
76
 
77
77
  // Reset the colours of lighter backgrounds to make sure they aren't over written by dark mode. Some other tweaks to colours are applied
78
78
  [class*="bg-"]:not(.bg-canvas):not(.bg-canvas-2) {
@@ -2,6 +2,7 @@
2
2
 
3
3
  @use "_fonts";
4
4
  @use "_corefiles";
5
- @use "_forms";
6
- @use "_components";
7
- @use "_print";
5
+ @import '../../assets/sass/components/nav-global.scss';
6
+ @import "_forms";
7
+ @import "_components";
8
+ @import "_print";
@@ -132,6 +132,43 @@ class iamActionbar extends HTMLElement {
132
132
  });
133
133
  }
134
134
  }
135
+
136
+ // Wtach div for the select inputs
137
+ if(this.hasAttribute('data-select-watch')){
138
+
139
+ const element = document.getElementById(this.getAttribute('data-select-watch'));
140
+ element.setAttribute('data-select-container','true');
141
+ Array.from(element.querySelectorAll('input[type="checkbox"]')).forEach((input,index) => {
142
+ input.parentElement.setAttribute('slot','checkbox');
143
+ });
144
+ element.addEventListener('change',(event) => {
145
+
146
+ if (event && event.target instanceof HTMLElement && event.target.closest('[type="checkbox"]')){
147
+
148
+ let count = element.querySelectorAll('input[type="checkbox"]').length;
149
+ let countChecked = element.querySelectorAll('input[type="checkbox"]:checked').length;
150
+ that.setAttribute('data-selected', count == countChecked ? "all" : countChecked);
151
+
152
+ let input = event.target.closest('[type="checkbox"]');
153
+
154
+ if(countChecked){
155
+ Array.from(element.querySelectorAll('input[type="checkbox"]')).forEach((input,index) => {
156
+
157
+ if(input.closest('iam-card'))
158
+ input.closest('iam-card').setAttribute('data-selected','true');
159
+ });
160
+ }
161
+ else {
162
+ Array.from(element.querySelectorAll('input[type="checkbox"]')).forEach((input,index) => {
163
+
164
+ if(input.closest('iam-card'))
165
+ input.closest('iam-card').removeAttribute('data-selected');
166
+ });
167
+ }
168
+
169
+ };
170
+ });
171
+ }
135
172
  // #endregion
136
173
 
137
174
  // #region switchviews
@@ -385,8 +422,36 @@ class iamActionbar extends HTMLElement {
385
422
 
386
423
  if(selectAll)
387
424
  setSelectAllInput(selectAll, newVal);
388
- const event = new CustomEvent("selected", { detail: { selected: newVal } });
389
- this.dispatchEvent(event);
425
+
426
+ const event = new CustomEvent("selected", { detail: { selected: newVal } });
427
+ this.dispatchEvent(event);
428
+
429
+ if(newVal == "all" && this.hasAttribute('data-select-watch')){
430
+
431
+ const element = document.getElementById(this.getAttribute('data-select-watch'));
432
+
433
+ Array.from(element.querySelectorAll('input[type="checkbox"]')).forEach((input,index) => {
434
+
435
+ input.checked = true;
436
+
437
+ if(input.closest('iam-card'))
438
+ input.closest('iam-card').setAttribute('data-selected','true');
439
+ });
440
+ }
441
+
442
+ if(newVal == "0" && this.hasAttribute('data-select-watch')){
443
+
444
+ const element = document.getElementById(this.getAttribute('data-select-watch'));
445
+
446
+ Array.from(element.querySelectorAll('input[type="checkbox"]')).forEach((input,index) => {
447
+
448
+ input.checked = false;
449
+
450
+ if(input.closest('iam-card'))
451
+ input.closest('iam-card').removeAttribute('data-selected','true');
452
+ });
453
+ }
454
+
390
455
  break;
391
456
  }
392
457
  }