@iamproperty/components 4.1.0-beta-3 → 4.1.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 (128) hide show
  1. package/assets/css/components/accordion.css.map +1 -1
  2. package/assets/css/components/actionbar-global.css +1 -1
  3. package/assets/css/components/actionbar-global.css.map +1 -1
  4. package/assets/css/components/address-lookup.css +1 -0
  5. package/assets/css/components/address-lookup.css.map +1 -0
  6. package/assets/css/components/admin-panel.css +1 -1
  7. package/assets/css/components/admin-panel.css.map +1 -1
  8. package/assets/css/components/dialog.css +1 -1
  9. package/assets/css/components/dialog.css.map +1 -1
  10. package/assets/css/components/fileupload.css +1 -1
  11. package/assets/css/components/fileupload.css.map +1 -1
  12. package/assets/css/components/forms.css +1 -1
  13. package/assets/css/components/forms.css.map +1 -1
  14. package/assets/css/components/header.css +1 -1
  15. package/assets/css/components/header.css.map +1 -1
  16. package/assets/css/components/lists.css +1 -1
  17. package/assets/css/components/lists.css.map +1 -1
  18. package/assets/css/components/nav-global.css +1 -1
  19. package/assets/css/components/nav-global.css.map +1 -1
  20. package/assets/css/components/nav.css +1 -1
  21. package/assets/css/components/nav.css.map +1 -1
  22. package/assets/css/components/nav.old.css +1 -1
  23. package/assets/css/components/nav.old.css.map +1 -1
  24. package/assets/css/components/notification.css +1 -1
  25. package/assets/css/components/notification.css.map +1 -1
  26. package/assets/css/components/pagination.css +1 -1
  27. package/assets/css/components/pagination.css.map +1 -1
  28. package/assets/css/components/property-searchbar.css +1 -1
  29. package/assets/css/components/property-searchbar.css.map +1 -1
  30. package/assets/css/components/table.css +1 -1
  31. package/assets/css/components/table.css.map +1 -1
  32. package/assets/css/components/table.extras.css +1 -0
  33. package/assets/css/components/table.extras.css.map +1 -0
  34. package/assets/css/components/table.global.css +1 -0
  35. package/assets/css/components/table.global.css.map +1 -0
  36. package/assets/css/components/tabs.css +1 -1
  37. package/assets/css/components/tabs.css.map +1 -1
  38. package/assets/css/core.min.css +1 -1
  39. package/assets/css/core.min.css.map +1 -1
  40. package/assets/css/style.min.css +1 -1
  41. package/assets/css/style.min.css.map +1 -1
  42. package/assets/js/components/accordion/accordion.component.min.js +1 -1
  43. package/assets/js/components/actionbar/actionbar.component.min.js +1 -1
  44. package/assets/js/components/address-lookup/address-lookup.component.js +172 -0
  45. package/assets/js/components/address-lookup/address-lookup.component.min.js +36 -0
  46. package/assets/js/components/address-lookup/address-lookup.component.min.js.map +1 -0
  47. package/assets/js/components/applied-filters/applied-filters.component.min.js +2 -2
  48. package/assets/js/components/applied-filters/applied-filters.component.min.js.map +1 -1
  49. package/assets/js/components/card/card.component.min.js +1 -1
  50. package/assets/js/components/collapsible-side/collapsible-side.component.min.js +1 -1
  51. package/assets/js/components/filterlist/filterlist.component.min.js +1 -1
  52. package/assets/js/components/header/header.component.min.js +2 -2
  53. package/assets/js/components/nav/nav.component.min.js +2 -2
  54. package/assets/js/components/notification/notification.component.min.js +4 -4
  55. package/assets/js/components/notification/notification.component.min.js.map +1 -1
  56. package/assets/js/components/pagination/pagination.component.js +152 -7
  57. package/assets/js/components/pagination/pagination.component.min.js +38 -12
  58. package/assets/js/components/pagination/pagination.component.min.js.map +1 -1
  59. package/assets/js/components/table/table.component.js +95 -69
  60. package/assets/js/components/table/table.component.min.js +9 -13
  61. package/assets/js/components/table/table.component.min.js.map +1 -1
  62. package/assets/js/components/tabs/tabs.component.js +3 -1
  63. package/assets/js/components/tabs/tabs.component.min.js +7 -5
  64. package/assets/js/components/tabs/tabs.component.min.js.map +1 -1
  65. package/assets/js/dynamic.min.js +2 -2
  66. package/assets/js/dynamic.min.js.map +1 -1
  67. package/assets/js/modules/applied-filters.js +3 -4
  68. package/assets/js/modules/dynamicEvents.js +116 -0
  69. package/assets/js/modules/helpers.js +9 -0
  70. package/assets/js/modules/pagination.js +7 -10
  71. package/assets/js/modules/table.js +51 -52
  72. package/assets/js/modules/tabs.js +10 -1
  73. package/assets/js/scripts.bundle.js +53 -25
  74. package/assets/js/scripts.bundle.js.map +1 -1
  75. package/assets/js/scripts.bundle.min.js +2 -2
  76. package/assets/js/scripts.bundle.min.js.map +1 -1
  77. package/assets/js/tests/table.spec.js +0 -57
  78. package/assets/sass/_components.scss +2 -0
  79. package/assets/sass/_corefiles.scss +6 -2
  80. package/assets/sass/_functions/variables.scss +5 -1
  81. package/assets/sass/components/actionbar-global.scss +11 -2
  82. package/assets/sass/components/address-lookup.scss +22 -0
  83. package/assets/sass/components/admin-panel.scss +4 -0
  84. package/assets/sass/components/dialog.scss +5 -0
  85. package/assets/sass/components/fileupload.scss +2 -0
  86. package/assets/sass/components/forms.scss +217 -57
  87. package/assets/sass/components/lists.scss +119 -1
  88. package/assets/sass/components/nav-global.scss +1 -0
  89. package/assets/sass/components/notification.scss +6 -1
  90. package/assets/sass/components/pagination.scss +192 -100
  91. package/assets/sass/components/table.extras.scss +650 -0
  92. package/assets/sass/components/table.global.scss +103 -0
  93. package/assets/sass/components/table.scss +41 -565
  94. package/assets/sass/components/tabs.scss +95 -32
  95. package/assets/sass/foundations/brand.scss +4 -0
  96. package/assets/sass/foundations/buttons.scss +14 -12
  97. package/assets/sass/foundations/links.scss +2 -1
  98. package/assets/sass/helpers/dynamic.scss +3 -0
  99. package/assets/sass/templates/form.scss +84 -0
  100. package/assets/svg/logo.svg +7 -0
  101. package/assets/ts/components/address-lookup/address-lookup.component.ts +215 -0
  102. package/assets/ts/components/pagination/README.md +11 -0
  103. package/assets/ts/components/pagination/pagination.component.ts +182 -8
  104. package/assets/ts/components/table/README.md +4 -2
  105. package/assets/ts/components/table/table.component.ts +134 -83
  106. package/assets/ts/components/tabs/README.md +6 -5
  107. package/assets/ts/components/tabs/tabs.component.ts +3 -1
  108. package/assets/ts/modules/applied-filters.ts +5 -8
  109. package/assets/ts/modules/dynamicEvents.ts +145 -0
  110. package/assets/ts/modules/helpers.ts +16 -1
  111. package/assets/ts/modules/pagination.ts +7 -10
  112. package/assets/ts/modules/table.ts +70 -57
  113. package/assets/ts/modules/tabs.ts +21 -10
  114. package/assets/ts/tests/table.spec.ts +1 -61
  115. package/dist/components.es.js +1103 -993
  116. package/dist/components.umd.js +161 -76
  117. package/dist/style.css +1 -1
  118. package/package.json +3 -2
  119. package/src/components/AddressLookup/AddressLookup.vue +27 -0
  120. package/src/components/Pagination/README.md +11 -0
  121. package/src/components/Table/README.md +4 -3
  122. package/src/components/Table/Table.vue +4 -0
  123. package/src/components/Tabs/README.md +10 -7
  124. package/src/components/Tabs/Tab.vue +7 -8
  125. package/src/components/Tabs/Tabs.vue +0 -1
  126. package/src/index.js +1 -0
  127. package/assets/js/tests/pagination.spec.js +0 -15
  128. package/assets/ts/tests/pagination.spec.ts +0 -21
@@ -1,7 +1,11 @@
1
1
  @use "../_func" as *;
2
2
 
3
+ $icon-error: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 512 512'><!--! Font Awesome Pro 6.4.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license (Commercial License) Copyright 2023 Fonticons, Inc. --><path d='M256 32a224 224 0 1 1 0 448 224 224 0 1 1 0-448zm0 480A256 256 0 1 0 256 0a256 256 0 1 0 0 512zm0-384c-8.8 0-16 7.2-16 16V272c0 8.8 7.2 16 16 16s16-7.2 16-16V144c0-8.8-7.2-16-16-16zm24 224a24 24 0 1 0 -48 0 24 24 0 1 0 48 0z' fill='#dc3545'/></svg>");
4
+
5
+ $icon-tick: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 448 512'><!--! Font Awesome Pro 6.4.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license (Commercial License) Copyright 2023 Fonticons, Inc. --><path d='M441 103c9.4 9.4 9.4 24.6 0 33.9L177 401c-9.4 9.4-24.6 9.4-33.9 0L7 265c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l119 119L407 103c9.4-9.4 24.6-9.4 33.9 0z' fill='#0f9d58' /></svg>");
6
+
3
7
  // #region Form label
4
- label {
8
+ :is(label,.label) {
5
9
  font-size: rem(18);
6
10
  line-height: rem(21);
7
11
  margin-bottom: rem(8);
@@ -16,10 +20,9 @@ label {
16
20
  // #endregion
17
21
 
18
22
  // #region input field
19
- :is(input:not([type="checkbox"]):not([type="radio"]),textarea,output,select) {
23
+ :is(input:not([type="checkbox"]):not([type="radio"]):not([type="file"]),textarea,output,select:not(.select--minimal)) {
20
24
  display: block;
21
25
  width: 100%;
22
- max-width: $content-max-width;
23
26
  display: block;
24
27
  width: 100%;
25
28
  padding: var(--input-padding-block, #{rem(12)}) var(--input-padding-inline, #{rem(16)});
@@ -56,16 +59,19 @@ label {
56
59
  opacity: 0.4;
57
60
  cursor: not-allowed;
58
61
  }
62
+ }
63
+
64
+ :is(input:not([type="checkbox"]):not([type="radio"]):not([type="file"])){
59
65
 
66
+ max-width: $input-max-width;
60
67
  }
61
68
 
62
69
  textarea {
63
- min-height: calc(var(--input-padding-block, #{rem(12)}) + var(--input-padding-block, #{rem(12)}) + (var(--input-lh, #{rem(20)}) * 3) + 4px);
64
- max-height: calc(var(--input-padding-block, #{rem(12)}) + var(--input-padding-block, #{rem(12)}) + (var(--input-lh, #{rem(20)}) * 3) + 4px);
70
+ min-height: calc(var(--input-padding-block, #{rem(12)}) + var(--input-padding-block, #{rem(12)}) + (var(--input-lh, #{rem(20)}) * 3) + 4px)!important;
71
+ max-height: calc(var(--input-padding-block, #{rem(12)}) + var(--input-padding-block, #{rem(12)}) + (var(--input-lh, #{rem(20)}) * 3) + 4px)!important;
65
72
  }
66
73
  // #endregion
67
74
 
68
-
69
75
  // #region legend
70
76
  fieldset {
71
77
  width: 100%;
@@ -92,36 +98,25 @@ legend {
92
98
  // #region wrappers
93
99
  div:has(> label:first-child):has(> input) {
94
100
  position: relative;
95
- max-width: $content-max-width;
101
+ max-width: $input-max-width;
96
102
  margin-bottom: rem(24);
97
103
 
98
- &:has(input[readonly]):after{
99
- font-family: "Font Awesome 6 Pro";
100
- font-weight: 300;
101
- content: "\f023";
102
- position: absolute;
103
- font-size: var(--input-lh, #{rem(20)});
104
- height: var(--input-lh, #{rem(20)});
105
- width: var(--input-lh, #{rem(20)});
106
- bottom: calc(var(--input-padding-block, #{rem(12)}) + 2px);
107
- right: calc(var(--input-padding-block, #{rem(16)}) + 2px);
108
- text-align: center;
109
- }
110
104
 
111
- input:not([type="checkbox"]):not([type="radio"]), output, .prefix, .suffix {
112
- margin-bottom: 0;
105
+ input:not([type="checkbox"]):not([type="radio"]):not([type="file"]), output, .prefix, .suffix {
106
+ margin-bottom: 0!important;
113
107
  }
114
108
 
115
109
  display: flex;
116
110
  flex-wrap: wrap;
117
111
  align-items: center;
118
112
 
119
- > *:not(input:not([type="checkbox"]):not([type="radio"])):not(output):not(.prefix):not(.suffix) {
113
+
114
+ > *:not(input:not([type="checkbox"]):not([type="radio"]):not([type="file"])):not(output):not(.prefix):not(.suffix) {
120
115
  flex-shrink: 0;
121
116
  width: 100%;
122
117
  }
123
118
 
124
- :is(input:not([type="checkbox"]):not([type="radio"]),textarea,output) {
119
+ :is(input:not([type="checkbox"]):not([type="radio"]):not([type="file"]),textarea,output) {
125
120
  flex-shrink: 1;
126
121
  flex-grow: 1;
127
122
  width: 0;
@@ -189,7 +184,29 @@ div:has(> label:first-child):has(> input):has(> :is(.form-control-inline,.input-
189
184
  }
190
185
  // #endregion
191
186
 
187
+ // #region readonly
188
+ *:has( > input[readonly]) {
192
189
 
190
+ position: relative;
191
+
192
+ max-width: $input-max-width;
193
+
194
+
195
+ &:after{
196
+ font-family: "Font Awesome 6 Pro";
197
+ font-weight: 300;
198
+ content: "\f023";
199
+ position: absolute;
200
+ font-size: var(--input-lh, #{rem(20)});
201
+ height: var(--input-lh, #{rem(20)});
202
+ width: var(--input-lh, #{rem(20)});
203
+ bottom: calc(var(--input-padding-block, #{rem(12)}) + 2px);
204
+ right: calc(var(--input-padding-block, #{rem(16)}) + 2px);
205
+ text-align: center;
206
+ }
207
+ }
208
+
209
+ // #endregion
193
210
 
194
211
  // #region prefix
195
212
  :is(.prefix, .suffix) {
@@ -207,6 +224,7 @@ div:has(> label:first-child):has(> input):has(> :is(.form-control-inline,.input-
207
224
  background-color: var(--colour-primary-theme);
208
225
  border: 2px solid var(--colour-primary);
209
226
  color: var(--colour-white);
227
+ margin-top: 0!important;
210
228
  margin-bottom: 1rem;
211
229
  border-end-start-radius: rem(8);
212
230
  border-start-start-radius: rem(8);
@@ -219,7 +237,7 @@ div:has(> label:first-child):has(> input):has(> :is(.form-control-inline,.input-
219
237
 
220
238
  min-height: calc(var(--input-padding-block, #{rem(12)}) + var(--input-padding-block, #{rem(12)}) + var(--input-lh, #{rem(20)}) + 4px);
221
239
  max-height: calc(var(--input-padding-block, #{rem(12)}) + var(--input-padding-block, #{rem(12)}) + var(--input-lh, #{rem(20)}) + 4px);
222
-
240
+ flex-shrink: 0;
223
241
 
224
242
  &:after {
225
243
  display: inline-block;
@@ -292,13 +310,14 @@ div:has(> label:first-child):has(> input):has(> :is(.form-control-inline,.input-
292
310
  }
293
311
  }
294
312
 
295
- .prefix ~ :is(input:not([type="checkbox"]):not([type="radio"]),textarea,output) {
313
+ .prefix ~ :is(input:not([type="checkbox"]):not([type="radio"]):not([type="file"]),textarea,output) {
296
314
 
297
315
  border-end-start-radius: 0!important;
298
316
  border-start-start-radius: 0!important;
299
317
  }
300
318
 
301
- .suffix ~ :is(input:not([type="checkbox"]):not([type="radio"]),textarea,output) {
319
+ .suffix ~ :is(input:not([type="checkbox"]):not([type="radio"]):not([type="file"]),textarea,output),
320
+ :is(input:not([type="checkbox"]):not([type="radio"]):not([type="file"]),textarea,output):has(~ .suffix) {
302
321
  order: 1;
303
322
 
304
323
  border-start-end-radius: 0!important;
@@ -329,24 +348,20 @@ input[maxlength] + span {
329
348
 
330
349
  // #region Form validation
331
350
 
332
- $icon-error: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 512 512'><!--! Font Awesome Pro 6.4.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license (Commercial License) Copyright 2023 Fonticons, Inc. --><path d='M256 32a224 224 0 1 1 0 448 224 224 0 1 1 0-448zm0 480A256 256 0 1 0 256 0a256 256 0 1 0 0 512zm0-384c-8.8 0-16 7.2-16 16V272c0 8.8 7.2 16 16 16s16-7.2 16-16V144c0-8.8-7.2-16-16-16zm24 224a24 24 0 1 0 -48 0 24 24 0 1 0 48 0z' fill='#dc3545'/></svg>");
333
351
 
334
- $icon-tick: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 448 512'><!--! Font Awesome Pro 6.4.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license (Commercial License) Copyright 2023 Fonticons, Inc. --><path d='M441 103c9.4 9.4 9.4 24.6 0 33.9L177 401c-9.4 9.4-24.6 9.4-33.9 0L7 265c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l119 119L407 103c9.4-9.4 24.6-9.4 33.9 0z' fill='#0f9d58' /></svg>");
335
-
336
-
337
- .was-validated *:not(button):is(:invalid, .is-invalid):not(.is-valid) {
352
+ .was-validated *:not(button):is(:invalid, .is-invalid):not(.is-valid) + label,
353
+ .was-validated label:has(*:not(button):is(:invalid, .is-invalid):not(.is-valid)) {
338
354
 
339
355
  --colour-check-border: var(--colour-danger);
356
+ --colour-check-bg: #FCEBEC;
340
357
  border-color: var(--colour-danger);
341
358
  }
342
359
 
343
- .was-validated *:not(button):is(:invalid, .is-invalid):not(.is-valid) + label {
360
+ .was-validated *:not(button):is(:invalid, .is-invalid,:-internal-autofill-selected) {
344
361
 
345
- --colour-check-border: var(--colour-danger);
346
- --colour-check-bg: #FCEBEC;
362
+ border-color: var(--colour-danger)!important;
347
363
  }
348
-
349
- .was-validated input:is(:invalid, .is-invalid) {
364
+ .was-validated input:is(:invalid, .is-invalid,:-internal-autofill-selected) {
350
365
 
351
366
  background-image: escape-svg($icon-error);
352
367
  background-repeat: no-repeat;
@@ -380,9 +395,21 @@ $icon-tick: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' view
380
395
  display: none;
381
396
  }
382
397
 
383
- .was-validated:has(*:is(:invalid, .is-invalid)) .invalid-feedback {
398
+ // Postcode lookup validation
399
+ iam-address-lookup:has([required]){
400
+
401
+ --req-display: none;
402
+ }
403
+
404
+ .was-validated :is(:invalid, .is-invalid) ~ .invalid-feedback {
384
405
  display: block;
385
406
  }
407
+
408
+ .was-validated iam-address-lookup:has([required]:invalid) {
409
+ --error-border: var(--colour-danger);
410
+ --error-display: block;
411
+ }
412
+
386
413
  // #endregion
387
414
 
388
415
  // #region radio/checkbox field
@@ -399,24 +426,25 @@ input:is([type="radio"],[type="checkbox"]) {
399
426
  pointer-events: none;
400
427
  }
401
428
 
402
- :is(div,fieldset):has(> input:is([type="radio"],[type="checkbox"])) {
429
+ :is(div,fieldset,label):has(> input:is([type="radio"],[type="checkbox"])):not(:has(label input)) {
403
430
  position: relative;
404
431
  margin-bottom: rem(24);
405
432
  }
406
433
 
407
- :is(div,fieldset):has( > input[type="radio"]){
434
+ :is(div,fieldset,label):has( > input[type="radio"]){
408
435
 
409
436
  --border-radius: 50%;
410
437
  --outline-width: #{rem(8)};
411
438
  }
412
439
 
413
- :is(div,fieldset):has( > input[type="checkbox"]) {
440
+ :is(div,fieldset,label):has( > input[type="checkbox"]) {
414
441
 
415
442
  --border-radius: #{rem(4)};
416
443
  --outline-width: #{rem(4)};
417
444
  }
418
445
 
419
- input:is([type="radio"],[type="checkbox"]) + label:not(:has(> iam-card)) {
446
+ input:is([type="radio"],[type="checkbox"]) + label:not(:has(> iam-card)),
447
+ label:has(input:is([type="radio"],[type="checkbox"])):not(:has(> iam-card)){
420
448
 
421
449
  --tick-colour: transparent;
422
450
 
@@ -458,7 +486,8 @@ input:is([type="radio"],[type="checkbox"]) + label:not(:has(> iam-card)) {
458
486
  }
459
487
  }
460
488
 
461
- input[type="radio"] + label:not(:has(> iam-card)) {
489
+ input[type="radio"] + label:not(:has(> iam-card)),
490
+ label:has(input[type="radio"]):not(:has(> iam-card)) {
462
491
 
463
492
  &:after {
464
493
  content: ""!important;
@@ -469,7 +498,7 @@ input[type="radio"] + label:not(:has(> iam-card)) {
469
498
  display: none;
470
499
  position: absolute;
471
500
  top: rem(15 - 2);
472
- left: rem(5);
501
+ left: calc(#{rem(5)} + var(--outline-width));
473
502
  }
474
503
 
475
504
  &.radio--tick {
@@ -495,7 +524,8 @@ input[type="radio"] + label:not(:has(> iam-card)) {
495
524
 
496
525
  @media (forced-colors: active) {
497
526
 
498
- input:is([type="radio"],[type="checkbox"]):not(:checked) + label.radio--tick:not(:has(> iam-card)) {
527
+ input:is([type="radio"],[type="checkbox"]):not(:checked) + label.radio--tick:not(:has(> iam-card)),
528
+ label:has(input:is([type="radio"],[type="checkbox"]):not(:checked)).radio--tick:not(:has(> iam-card)) {
499
529
 
500
530
  &:before {
501
531
 
@@ -504,13 +534,15 @@ input[type="radio"] + label:not(:has(> iam-card)) {
504
534
  }
505
535
  }
506
536
 
507
- div:has(> :is(input[type="radio"],input[type="checkbox"]):nth-of-type(2)) {
537
+ // multiple radio's together
538
+ :is(div,fieldset):has(> :is(input[type="radio"],input[type="checkbox"]):nth-of-type(2)) {
508
539
  label:not(:has(> iam-card)) {
509
540
  margin-bottom: 0rem;
510
541
  }
511
542
  }
512
543
 
513
- input:is([type="radio"],[type="checkbox"]):checked + label {
544
+ input:is([type="radio"],[type="checkbox"]):checked + label,
545
+ label:has(input:is([type="radio"],[type="checkbox"]):checked) {
514
546
 
515
547
  --tick-colour: var(--colour-info);
516
548
 
@@ -527,13 +559,16 @@ input:is([type="radio"],[type="checkbox"]):checked + label {
527
559
  }
528
560
  }
529
561
 
530
- input[type="checkbox"]:not([disabled]):checked + label {
562
+ input[type="checkbox"]:not([disabled]):checked + label,
563
+ label:has(input[type="checkbox"]:not([disabled]):checked) {
531
564
 
532
565
  &:before {
533
566
  background: var(--colour-info)!important;
534
567
  }
535
568
  }
536
- input[type="checkbox"]:checked + label {
569
+
570
+ input[type="checkbox"]:checked + label,
571
+ label:has(input[type="checkbox"]:checked) {
537
572
 
538
573
  &:after {
539
574
  content: "\f00c";
@@ -555,7 +590,8 @@ input[type="checkbox"]:checked + label {
555
590
  }
556
591
  }
557
592
 
558
- input[type="checkbox"]:indeterminate + label {
593
+ input[type="checkbox"]:indeterminate + label,
594
+ label:has(input[type="checkbox"]:indeterminate) {
559
595
 
560
596
  &:before {
561
597
  background: var(--colour-info) !important;
@@ -583,11 +619,14 @@ input[type="checkbox"]:indeterminate + label {
583
619
  }
584
620
 
585
621
 
586
- input:is([type="radio"],[type="checkbox"]):checked:is(:focus,:hover,.focus) + label {
622
+ input:is([type="radio"],[type="checkbox"]):checked:is(:focus,:hover,.focus) + label,
623
+ label:has(input:is([type="radio"],[type="checkbox"]):checked:is(:focus,:hover,.focus)) {
587
624
 
588
625
  --tick-colour: var(--colour-info);
589
626
  }
590
- input:is([type="radio"],[type="checkbox"]):is(:focus,:hover,.focus) + label {
627
+
628
+ input:is([type="radio"],[type="checkbox"]):is(:focus,:hover,.focus) + label,
629
+ label:has(input:is([type="radio"],[type="checkbox"]):is(:focus,:hover,.focus)) {
591
630
 
592
631
  --tick-colour: var(--colour-muted);
593
632
 
@@ -596,7 +635,8 @@ input:is([type="radio"],[type="checkbox"]):is(:focus,:hover,.focus) + label {
596
635
  outline: var(--outline-width) solid var(--colour-light);
597
636
  }
598
637
  }
599
- input:is([type="radio"],[type="checkbox"]):is(:active,.active) + label {
638
+ input:is([type="radio"],[type="checkbox"]):is(:active,.active) + label,
639
+ label:has(input:is([type="radio"],[type="checkbox"]):is(:active,.active)) {
600
640
 
601
641
  --tick-colour: var(--colour-light);
602
642
 
@@ -607,7 +647,8 @@ input:is([type="radio"],[type="checkbox"]):is(:active,.active) + label {
607
647
  }
608
648
 
609
649
  // Disabled
610
- input:is([type="radio"],[type="checkbox"]):disabled + label {
650
+ input:is([type="radio"],[type="checkbox"]):disabled + label,
651
+ label:has(input:is([type="radio"],[type="checkbox"]):disabled) {
611
652
 
612
653
  opacity: 0.4;
613
654
  cursor: not-allowed;
@@ -623,14 +664,16 @@ input:is([type="radio"],[type="checkbox"]):disabled + label {
623
664
  }
624
665
  }
625
666
 
626
- input[type="radio"][disabled]:checked + label {
667
+ input[type="radio"][disabled]:checked + label,
668
+ label:has(input[type="radio"][disabled]:checked) {
627
669
 
628
670
  &:after {
629
671
  background-color: var(--colour-primary)!important;
630
672
  }
631
673
  }
632
674
 
633
- input[type="checkbox"][disabled]:checked + label {
675
+ input[type="checkbox"][disabled]:checked + label,
676
+ label:has(input[type="checkbox"][disabled]:checked) {
634
677
 
635
678
  &:before {
636
679
  background: #E0E0E0!important;
@@ -686,6 +729,7 @@ select[multiple]::-webkit-scrollbar-thumb {
686
729
 
687
730
  // #region Select
688
731
 
732
+
689
733
  select {
690
734
  $form-select-indicator-new: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'><path fill='none' stroke='white' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' d='m2 5 6 6 6-6'/></svg>") !default;
691
735
 
@@ -693,9 +737,11 @@ select {
693
737
  linear-gradient(to left, var(--colour-primary-theme), var(--colour-primary-theme) 100%) right top/calc(var(--input-padding-block, 0.75rem) + var(--input-padding-block, 0.75rem) + var(--input-lh, 1.25rem)) calc(var(--input-padding-block, 0.75rem) + var(--input-padding-block, 0.75rem) + var(--input-lh, 1.25rem)) no-repeat;
694
738
 
695
739
  padding-right: calc(var(--input-padding-inline, #{rem(16)}) + var(--input-padding-inline, #{rem(16)}) + var(--input-lh, 1.25rem));
696
-
697
740
  option {font-size: 1.2em;}
698
741
 
742
+
743
+ max-width: $select-max-width;
744
+
699
745
  &[multiple],
700
746
  &[size]:not([size="1"]) {
701
747
  background: none;
@@ -714,6 +760,54 @@ select {
714
760
  text-shadow: 0 0 0 $form-select-color;
715
761
  }
716
762
  }
763
+
764
+ div:has(> select){
765
+
766
+ margin-bottom: rem(24);
767
+
768
+ select {
769
+ margin-bottom: 0!important;
770
+ }
771
+ }
772
+
773
+ .select--minimal {
774
+
775
+ all: unset;
776
+ font-size: inherit;
777
+ background: none;
778
+ border: none;
779
+ display: inline-block;
780
+ margin: 0;
781
+ padding: 0 calc(1.25em + 0.8ch) 0 0.25em;
782
+ height: auto;
783
+ cursor: pointer;
784
+
785
+ option {
786
+ background-color: var(--colour-canvas);
787
+ padding-left: 1em;
788
+ }
789
+
790
+
791
+ &:is(:hover,:focus) {
792
+ outline: 1px solid var(--colour-info);
793
+ }
794
+ }
795
+
796
+ *:has(> .select--minimal){
797
+ position: relative;
798
+
799
+ &:after {
800
+ font-size: 0.8em;
801
+ line-height: 1em;
802
+ content: "\f078";
803
+ font-family: "Font Awesome 6 Pro";
804
+ position: absolute;
805
+ top: 50%;
806
+ transform: translate(0,-50%);
807
+ right: calc(0.25em + 0.8ch);
808
+ pointer-events: none;
809
+ }
810
+ }
717
811
  // #endregion
718
812
 
719
813
  // #region file upload
@@ -724,5 +818,71 @@ iam-fileupload {
724
818
  }
725
819
 
726
820
  }
821
+ // #endregion
727
822
 
728
- // #endregion
823
+
824
+ // #region label with input field in
825
+ :is(label, .label):has(:is(input,select)){
826
+
827
+ display: block;
828
+ margin-bottom: rem(24);
829
+
830
+ :is(input,select) {
831
+ margin-top: rem(8);
832
+ margin-bottom: 0!important;
833
+ }
834
+
835
+ :is(input,select) ~ span:not(:is(.suffix,.prefix,.invalid-feedback)) {
836
+ all: initial;
837
+ font-family: var(--font-body);
838
+ color: var(--colour-body);
839
+ margin-top: rem(8);
840
+ display: block;
841
+ line-height: 1.2;
842
+ }
843
+ .invalid-feedback {
844
+ font-size: 1rem;
845
+ font-weight: normal;
846
+ line-height: 1.2;
847
+ }
848
+
849
+ span:has(:is(input,select)) {
850
+ display: flex;
851
+ width: 100%;
852
+ }
853
+
854
+ :is(.suffix,.prefix) {
855
+ margin: rem(8) 0 0 0!important;
856
+ }
857
+ }
858
+
859
+ .was-validated label:has(:is(input:not([type="radio"]):not([type="checkbox"]),select)),
860
+ .was-validated fieldset:has(label input:is([type="radio"],[type="checkbox"]):invalid){
861
+
862
+ margin-bottom: 1.5rem;
863
+
864
+ &:has(:invalid):after {
865
+ content: "This field is required";
866
+ color: var(--colour-danger);
867
+ margin-top: rem(8);
868
+ background-image: escape-svg($icon-error);
869
+ background-repeat: no-repeat;
870
+ background-position: left top 1px;
871
+ background-size: var(--input-fs, #{rem(16)}) var(--input-fs, #{rem(16)});
872
+ padding-left: calc(var(--input-fs, #{rem(16)}) + #{rem(8)});
873
+ display: block;
874
+ width: 100%;
875
+ font-size: 1rem;
876
+ line-height: 1.2;
877
+ }
878
+
879
+ &[data-error]:has(:invalid):after {
880
+ content: attr(data-error)!important;
881
+ }
882
+
883
+ &.error-nowrap:after {
884
+ white-space: nowrap;
885
+ }
886
+ }
887
+
888
+ // #endregion
@@ -169,4 +169,122 @@
169
169
  }
170
170
  .list__wrapper--large {
171
171
  max-height: 37.5rem;
172
- }
172
+ }
173
+
174
+ // #region Step list
175
+ *:has(> .list--steps){
176
+ container-type: inline-size;
177
+ }
178
+
179
+ .list--steps {
180
+
181
+ display: flex;
182
+ justify-content: center;
183
+ list-style: none;
184
+ padding: 0 0 rem(6) 0;
185
+ gap: rem(12);
186
+ counter-reset: pages;
187
+ color: var(--colour-heading);
188
+ position: relative;
189
+ margin-bottom: rem(6);
190
+
191
+ li {
192
+ position: relative;
193
+ display: block;
194
+ padding-top: 2rem;
195
+ width: rem(24);
196
+ flex-grow: 0;
197
+ flex-shrink: 1;
198
+ overflow: hidden;
199
+ text-indent: -300px;
200
+
201
+
202
+ &:before {
203
+ counter-increment: pages;
204
+ content: counter(pages);
205
+ position: absolute;
206
+ top: 0;
207
+ left: 50%;
208
+ margin-left: rem(-12);
209
+ width: rem(24);
210
+ height: rem(24);
211
+ font-size: rem(18);
212
+ line-height: rem(24);
213
+ text-align: center;
214
+ font-weight: bold;;
215
+ border: 1px solid currentColor;
216
+ border-radius: 1rem;
217
+ text-indent: 0;
218
+ }
219
+
220
+ }
221
+
222
+ li.step--current:before {
223
+ background-color: var(--colour-primary-theme);
224
+ border-color: var(--colour-primary-theme);
225
+ color: var(--colour-white);
226
+ }
227
+ li.step--complete:before {
228
+ background-color: var(--colour-success);
229
+ border-color: var(--colour-success);
230
+
231
+ @include dark-mode {
232
+
233
+ background-color: var(--colour-complete);
234
+ border-color: var(--colour-complete);
235
+ }
236
+ //color: var(--colour-white);
237
+ }
238
+
239
+ &::after {
240
+ content: attr(data-mobile-text);
241
+ position: absolute;
242
+ bottom: 0;
243
+ left: 0;
244
+ width: 100%;
245
+ text-align: center;
246
+ display: block;
247
+ height: 1.5rem;
248
+ line-height: 1.5rem;
249
+ font-weight: bold;
250
+ }
251
+
252
+ @include container-up(sm){
253
+
254
+ padding: 0;
255
+
256
+ margin-bottom: rem(24);
257
+
258
+ &::after {
259
+ display: none;
260
+ }
261
+
262
+ li {
263
+ width: 100%;
264
+ flex-grow: 1;
265
+ text-indent: 0;
266
+ overflow: visible;
267
+
268
+ &:not(:last-child):after {
269
+ content: "";
270
+ position: absolute;
271
+ top: rem(12);
272
+ left: calc(50% + 2rem);
273
+
274
+ width: calc(100% - 2.5rem);
275
+ height: 2px;
276
+ font-size: rem(18);
277
+ background-color: var(--colour-heading);
278
+ }
279
+ }
280
+ }
281
+
282
+
283
+ @include container-up(md){
284
+
285
+ li {
286
+ max-width: 20%;
287
+ }
288
+ }
289
+ }
290
+ // #endregion
@@ -114,6 +114,7 @@ iam-nav {
114
114
  height: rem(48);
115
115
  padding: 0;
116
116
  text-decoration: none;
117
+ min-width: min(var(--svg-width), 14rem);
117
118
  }
118
119
 
119
120
  a:not([slot="logo"]):not(.btn):not(:has(iam-card)) {
@@ -9,7 +9,12 @@
9
9
  margin-bottom: 1rem;
10
10
  font-size: rem(15);
11
11
  border: rem(2) solid var(--colour,var(--colour-info));
12
- background: #e9f9fd;
12
+
13
+ @include light-mode(){
14
+
15
+ background: #e9f9fd;
16
+ }
17
+
13
18
  outline: var(--contrast-outline-width, 0px) solid var(--colour-primary);
14
19
 
15
20
  ::slotted(i),