@iamproperty/components 4.1.0-beta-2 → 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 (131) 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 +3 -3
  44. package/assets/js/components/actionbar/actionbar.component.min.js.map +1 -1
  45. package/assets/js/components/address-lookup/address-lookup.component.js +172 -0
  46. package/assets/js/components/address-lookup/address-lookup.component.min.js +36 -0
  47. package/assets/js/components/address-lookup/address-lookup.component.min.js.map +1 -0
  48. package/assets/js/components/applied-filters/applied-filters.component.min.js +2 -2
  49. package/assets/js/components/applied-filters/applied-filters.component.min.js.map +1 -1
  50. package/assets/js/components/card/card.component.min.js +1 -1
  51. package/assets/js/components/collapsible-side/collapsible-side.component.min.js +1 -1
  52. package/assets/js/components/filterlist/filterlist.component.min.js +1 -1
  53. package/assets/js/components/header/header.component.min.js +2 -2
  54. package/assets/js/components/nav/nav.component.min.js +2 -2
  55. package/assets/js/components/notification/notification.component.min.js +4 -4
  56. package/assets/js/components/notification/notification.component.min.js.map +1 -1
  57. package/assets/js/components/pagination/pagination.component.js +152 -7
  58. package/assets/js/components/pagination/pagination.component.min.js +38 -12
  59. package/assets/js/components/pagination/pagination.component.min.js.map +1 -1
  60. package/assets/js/components/table/table.component.js +95 -69
  61. package/assets/js/components/table/table.component.min.js +9 -13
  62. package/assets/js/components/table/table.component.min.js.map +1 -1
  63. package/assets/js/components/tabs/tabs.component.js +3 -1
  64. package/assets/js/components/tabs/tabs.component.min.js +7 -5
  65. package/assets/js/components/tabs/tabs.component.min.js.map +1 -1
  66. package/assets/js/dynamic.min.js +5 -5
  67. package/assets/js/dynamic.min.js.map +1 -1
  68. package/assets/js/modules/applied-filters.js +3 -4
  69. package/assets/js/modules/dialogs.js +15 -3
  70. package/assets/js/modules/dynamicEvents.js +116 -0
  71. package/assets/js/modules/helpers.js +9 -0
  72. package/assets/js/modules/pagination.js +7 -10
  73. package/assets/js/modules/table.js +51 -52
  74. package/assets/js/modules/tabs.js +10 -1
  75. package/assets/js/scripts.bundle.js +53 -25
  76. package/assets/js/scripts.bundle.js.map +1 -1
  77. package/assets/js/scripts.bundle.min.js +2 -2
  78. package/assets/js/scripts.bundle.min.js.map +1 -1
  79. package/assets/js/tests/table.spec.js +0 -57
  80. package/assets/sass/_components.scss +2 -0
  81. package/assets/sass/_corefiles.scss +6 -2
  82. package/assets/sass/_functions/variables.scss +5 -1
  83. package/assets/sass/components/actionbar-global.scss +11 -2
  84. package/assets/sass/components/address-lookup.scss +22 -0
  85. package/assets/sass/components/admin-panel.scss +4 -0
  86. package/assets/sass/components/dialog.scss +22 -13
  87. package/assets/sass/components/fileupload.scss +2 -0
  88. package/assets/sass/components/forms.scss +231 -71
  89. package/assets/sass/components/lists.scss +119 -1
  90. package/assets/sass/components/nav-global.scss +1 -0
  91. package/assets/sass/components/notification.scss +6 -1
  92. package/assets/sass/components/pagination.scss +192 -100
  93. package/assets/sass/components/table.extras.scss +650 -0
  94. package/assets/sass/components/table.global.scss +103 -0
  95. package/assets/sass/components/table.scss +41 -565
  96. package/assets/sass/components/tabs.scss +95 -32
  97. package/assets/sass/foundations/brand.scss +4 -0
  98. package/assets/sass/foundations/buttons.scss +14 -12
  99. package/assets/sass/foundations/links.scss +2 -1
  100. package/assets/sass/helpers/dynamic.scss +3 -0
  101. package/assets/sass/templates/form.scss +84 -0
  102. package/assets/svg/logo.svg +7 -0
  103. package/assets/ts/components/address-lookup/address-lookup.component.ts +215 -0
  104. package/assets/ts/components/pagination/README.md +11 -0
  105. package/assets/ts/components/pagination/pagination.component.ts +182 -8
  106. package/assets/ts/components/table/README.md +4 -2
  107. package/assets/ts/components/table/table.component.ts +134 -83
  108. package/assets/ts/components/tabs/README.md +6 -5
  109. package/assets/ts/components/tabs/tabs.component.ts +3 -1
  110. package/assets/ts/modules/applied-filters.ts +5 -8
  111. package/assets/ts/modules/dialogs.ts +19 -4
  112. package/assets/ts/modules/dynamicEvents.ts +145 -0
  113. package/assets/ts/modules/helpers.ts +16 -1
  114. package/assets/ts/modules/pagination.ts +7 -10
  115. package/assets/ts/modules/table.ts +70 -57
  116. package/assets/ts/modules/tabs.ts +21 -10
  117. package/assets/ts/tests/table.spec.ts +1 -61
  118. package/dist/components.es.js +1123 -1008
  119. package/dist/components.umd.js +165 -80
  120. package/dist/style.css +1 -1
  121. package/package.json +3 -2
  122. package/src/components/AddressLookup/AddressLookup.vue +27 -0
  123. package/src/components/Pagination/README.md +11 -0
  124. package/src/components/Table/README.md +4 -3
  125. package/src/components/Table/Table.vue +4 -0
  126. package/src/components/Tabs/README.md +10 -7
  127. package/src/components/Tabs/Tab.vue +7 -8
  128. package/src/components/Tabs/Tabs.vue +0 -1
  129. package/src/index.js +1 -0
  130. package/assets/js/tests/pagination.spec.js +0 -15
  131. 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
+ }
59
63
 
64
+ :is(input:not([type="checkbox"]):not([type="radio"]):not([type="file"])){
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, 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(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,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;
@@ -133,9 +128,9 @@ div:has(> label:first-child):has(> input) {
133
128
  }
134
129
 
135
130
  input[type="color"]{
136
- width: 3rem;
137
- flex-shrink: 0;
138
- flex-grow: 0;
131
+ width: 3rem!important;
132
+ flex-shrink: 0!important;
133
+ flex-grow: 0!important;
139
134
  border-start-end-radius: 0;
140
135
  border-end-end-radius: 0;
141
136
  padding: 0;
@@ -156,9 +151,10 @@ div:has(> label:first-child):has(> input) {
156
151
  }
157
152
 
158
153
  output {
159
- border-left: none;
160
- border-end-start-radius: 0;
161
- border-start-start-radius: 0;
154
+ border-left: none!important;
155
+ border-end-start-radius: 0!important;
156
+ border-start-start-radius: 0!important;
157
+ margin: 0!important;
162
158
  }
163
159
  }
164
160
 
@@ -188,7 +184,29 @@ div:has(> label:first-child):has(> input):has(> :is(.form-control-inline,.input-
188
184
  }
189
185
  // #endregion
190
186
 
187
+ // #region readonly
188
+ *:has( > input[readonly]) {
191
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
192
210
 
193
211
  // #region prefix
194
212
  :is(.prefix, .suffix) {
@@ -206,6 +224,7 @@ div:has(> label:first-child):has(> input):has(> :is(.form-control-inline,.input-
206
224
  background-color: var(--colour-primary-theme);
207
225
  border: 2px solid var(--colour-primary);
208
226
  color: var(--colour-white);
227
+ margin-top: 0!important;
209
228
  margin-bottom: 1rem;
210
229
  border-end-start-radius: rem(8);
211
230
  border-start-start-radius: rem(8);
@@ -218,7 +237,7 @@ div:has(> label:first-child):has(> input):has(> :is(.form-control-inline,.input-
218
237
 
219
238
  min-height: calc(var(--input-padding-block, #{rem(12)}) + var(--input-padding-block, #{rem(12)}) + var(--input-lh, #{rem(20)}) + 4px);
220
239
  max-height: calc(var(--input-padding-block, #{rem(12)}) + var(--input-padding-block, #{rem(12)}) + var(--input-lh, #{rem(20)}) + 4px);
221
-
240
+ flex-shrink: 0;
222
241
 
223
242
  &:after {
224
243
  display: inline-block;
@@ -291,17 +310,18 @@ div:has(> label:first-child):has(> input):has(> :is(.form-control-inline,.input-
291
310
  }
292
311
  }
293
312
 
294
- .prefix ~ :is(input,textarea,output) {
313
+ .prefix ~ :is(input:not([type="checkbox"]):not([type="radio"]):not([type="file"]),textarea,output) {
295
314
 
296
- border-end-start-radius: 0;
297
- border-start-start-radius: 0;
315
+ border-end-start-radius: 0!important;
316
+ border-start-start-radius: 0!important;
298
317
  }
299
318
 
300
- .suffix ~ :is(input,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) {
301
321
  order: 1;
302
322
 
303
- border-start-end-radius: 0;
304
- border-end-end-radius: 0;
323
+ border-start-end-radius: 0!important;
324
+ border-end-end-radius: 0!important;
305
325
  }
306
326
  }
307
327
  // #endregion
@@ -328,24 +348,20 @@ input[maxlength] + span {
328
348
 
329
349
  // #region Form validation
330
350
 
331
- $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>");
332
-
333
- $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>");
334
-
335
351
 
336
- .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)) {
337
354
 
338
355
  --colour-check-border: var(--colour-danger);
356
+ --colour-check-bg: #FCEBEC;
339
357
  border-color: var(--colour-danger);
340
358
  }
341
359
 
342
- .was-validated *:not(button):is(:invalid, .is-invalid):not(.is-valid) + label {
360
+ .was-validated *:not(button):is(:invalid, .is-invalid,:-internal-autofill-selected) {
343
361
 
344
- --colour-check-border: var(--colour-danger);
345
- --colour-check-bg: #FCEBEC;
362
+ border-color: var(--colour-danger)!important;
346
363
  }
347
-
348
- .was-validated input:is(:invalid, .is-invalid) {
364
+ .was-validated input:is(:invalid, .is-invalid,:-internal-autofill-selected) {
349
365
 
350
366
  background-image: escape-svg($icon-error);
351
367
  background-repeat: no-repeat;
@@ -379,9 +395,21 @@ $icon-tick: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' view
379
395
  display: none;
380
396
  }
381
397
 
382
- .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 {
383
405
  display: block;
384
406
  }
407
+
408
+ .was-validated iam-address-lookup:has([required]:invalid) {
409
+ --error-border: var(--colour-danger);
410
+ --error-display: block;
411
+ }
412
+
385
413
  // #endregion
386
414
 
387
415
  // #region radio/checkbox field
@@ -398,25 +426,25 @@ input:is([type="radio"],[type="checkbox"]) {
398
426
  pointer-events: none;
399
427
  }
400
428
 
401
- :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)) {
402
430
  position: relative;
403
-
404
- padding-bottom: rem(24);
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
 
@@ -441,7 +469,7 @@ input:is([type="radio"],[type="checkbox"]) + label:not(:has(> iam-card)) {
441
469
 
442
470
  &:last-child {
443
471
 
444
- margin-bottom: rem(24);
472
+ margin-bottom: 0;
445
473
  }
446
474
 
447
475
  &:before {
@@ -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)) {
508
- label:not(:has(> iam-card)):not(:last-of-type) {
537
+ // multiple radio's together
538
+ :is(div,fieldset):has(> :is(input[type="radio"],input[type="checkbox"]):nth-of-type(2)) {
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
822
+
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
+ }
727
887
 
728
- // #endregion
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),