@iamproperty/components 7.2.0 → 7.2.1--beta2

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 (126) 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/barchart.component.css +1 -1
  6. package/assets/css/components/barchart.component.css.map +1 -1
  7. package/assets/css/components/card.component.css +1 -1
  8. package/assets/css/components/card.component.css.map +1 -1
  9. package/assets/css/components/carousel.component.css +1 -1
  10. package/assets/css/components/carousel.component.css.map +1 -1
  11. package/assets/css/components/doughnutchart.component.css +1 -1
  12. package/assets/css/components/doughnutchart.component.css.map +1 -1
  13. package/assets/css/components/pagination.css +1 -1
  14. package/assets/css/components/pagination.css.map +1 -1
  15. package/assets/css/components/table-basic.component.css +1 -0
  16. package/assets/css/components/table-basic.component.css.map +1 -0
  17. package/assets/css/components/table-basic.global.css +1 -0
  18. package/assets/css/components/table-basic.global.css.map +1 -0
  19. package/assets/css/components/table.component.css +1 -1
  20. package/assets/css/components/table.component.css.map +1 -1
  21. package/assets/css/components/table.global.css +1 -1
  22. package/assets/css/components/table.global.css.map +1 -1
  23. package/assets/css/components/tabs.config.css +1 -0
  24. package/assets/css/components/tabs.config.css.map +1 -0
  25. package/assets/css/components/tabs.css +1 -1
  26. package/assets/css/components/tabs.css.map +1 -1
  27. package/assets/css/core.min.css +1 -1
  28. package/assets/css/core.min.css.map +1 -1
  29. package/assets/css/mobile-core.min.css +1 -1
  30. package/assets/css/mobile-core.min.css.map +1 -1
  31. package/assets/css/mobile.min.css +1 -1
  32. package/assets/css/mobile.min.css.map +1 -1
  33. package/assets/css/style.min.css +1 -1
  34. package/assets/css/style.min.css.map +1 -1
  35. package/assets/js/components/accordion/accordion.component.min.js +1 -1
  36. package/assets/js/components/actionbar/actionbar.component.min.js +4 -4
  37. package/assets/js/components/address-lookup/address-lookup.component.min.js +1 -1
  38. package/assets/js/components/applied-filters/applied-filters.component.min.js +1 -1
  39. package/assets/js/components/barchart/barchart.component.min.js +2 -2
  40. package/assets/js/components/barchart/barchart.component.min.js.map +1 -1
  41. package/assets/js/components/bento-grid/bento-grid.component.min.js +1 -1
  42. package/assets/js/components/card/card.component.min.js +2 -2
  43. package/assets/js/components/carousel/carousel.component.min.js +2 -2
  44. package/assets/js/components/collapsible-side/collapsible-side.component.min.js +1 -1
  45. package/assets/js/components/doughnutchart/doughnutchart.component.min.js +2 -2
  46. package/assets/js/components/doughnutchart/doughnutchart.component.min.js.map +1 -1
  47. package/assets/js/components/fileupload/fileupload.component.min.js +1 -1
  48. package/assets/js/components/filter-card/filter-card.component.min.js +1 -1
  49. package/assets/js/components/filterlist/filterlist.component.min.js +1 -1
  50. package/assets/js/components/header/header.component.min.js +1 -1
  51. package/assets/js/components/inline-edit/inline-edit.component.min.js +1 -1
  52. package/assets/js/components/marketing/marketing.component.min.js +1 -1
  53. package/assets/js/components/menu/menu.component.min.js +1 -1
  54. package/assets/js/components/multi-step/multi-step.component.min.js +1 -1
  55. package/assets/js/components/multiselect/multiselect.component.min.js +1 -1
  56. package/assets/js/components/nav/nav.component.min.js +1 -1
  57. package/assets/js/components/notification/notification.component.min.js +1 -1
  58. package/assets/js/components/pagination/pagination.component.js +11 -4
  59. package/assets/js/components/pagination/pagination.component.min.js +5 -5
  60. package/assets/js/components/pagination/pagination.component.min.js.map +1 -1
  61. package/assets/js/components/record-card/record-card.component.min.js +1 -1
  62. package/assets/js/components/search/search.component.min.js +1 -1
  63. package/assets/js/components/search/search.component.min.js.map +1 -1
  64. package/assets/js/components/slider/slider.component.min.js +1 -1
  65. package/assets/js/components/table/table.component.js +36 -198
  66. package/assets/js/components/table/table.component.min.js +13 -23
  67. package/assets/js/components/table/table.component.min.js.map +1 -1
  68. package/assets/js/components/table-ajax/table-ajax.component.js +46 -0
  69. package/assets/js/components/table-ajax/table-ajax.component.min.js +22 -0
  70. package/assets/js/components/table-ajax/table-ajax.component.min.js.map +1 -0
  71. package/assets/js/components/table-basic/table-basic.component.js +46 -0
  72. package/assets/js/components/table-basic/table-basic.component.min.js +22 -0
  73. package/assets/js/components/table-basic/table-basic.component.min.js.map +1 -0
  74. package/assets/js/components/table-no-submit/table-no-submit.component.js +77 -0
  75. package/assets/js/components/table-no-submit/table-no-submit.component.min.js +22 -0
  76. package/assets/js/components/table-no-submit/table-no-submit.component.min.js.map +1 -0
  77. package/assets/js/components/table-submit/table-submit.component.js +55 -0
  78. package/assets/js/components/table-submit/table-submit.component.min.js +22 -0
  79. package/assets/js/components/table-submit/table-submit.component.min.js.map +1 -0
  80. package/assets/js/components/tabs/tabs.component.js +2 -0
  81. package/assets/js/components/tabs/tabs.component.min.js +6 -4
  82. package/assets/js/components/tabs/tabs.component.min.js.map +1 -1
  83. package/assets/js/components/video-card/video-card.component.min.js +1 -1
  84. package/assets/js/modules/helpers.js +4 -0
  85. package/assets/js/modules/table.js +544 -294
  86. package/assets/js/modules/tabs.js +43 -13
  87. package/assets/js/scripts.bundle.js +3 -3
  88. package/assets/js/scripts.bundle.js.map +1 -1
  89. package/assets/js/scripts.bundle.min.js +2 -2
  90. package/assets/js/scripts.bundle.min.js.map +1 -1
  91. package/assets/js/scripts.js +31 -24
  92. package/assets/js/tests/table.spec.js +0 -31
  93. package/assets/sass/_components.scss +3 -0
  94. package/assets/sass/components/actionbar.component.scss +1 -0
  95. package/assets/sass/components/actionbar.global.scss +0 -70
  96. package/assets/sass/components/pagination.scss +2 -1
  97. package/assets/sass/components/table-basic.component.scss +132 -0
  98. package/assets/sass/components/table-basic.global.scss +365 -0
  99. package/assets/sass/components/table.component.scss +2 -133
  100. package/assets/sass/components/table.global.scss +175 -434
  101. package/assets/sass/components/tabs.config.scss +27 -0
  102. package/assets/sass/components/tabs.scss +33 -1
  103. package/assets/sass/elements/buttons--global.scss +2 -1
  104. package/assets/sass/elements/table.element.scss +9 -7
  105. package/assets/sass/foundations/root.scss +1 -1
  106. package/assets/ts/components/pagination/pagination.component.ts +17 -4
  107. package/assets/ts/components/table/table.component.ts +49 -243
  108. package/assets/ts/components/table-ajax/table-ajax.component.ts +64 -0
  109. package/assets/ts/components/table-basic/README.md +40 -0
  110. package/assets/ts/components/table-basic/table-basic.component.ts +56 -0
  111. package/assets/ts/components/table-no-submit/table-no-submit.component.ts +134 -0
  112. package/assets/ts/components/table-submit/table-submit.component.ts +64 -0
  113. package/assets/ts/components/tabs/tabs.component.ts +2 -0
  114. package/assets/ts/modules/helpers.ts +6 -0
  115. package/assets/ts/modules/table.ts +656 -328
  116. package/assets/ts/modules/tabs.ts +54 -12
  117. package/assets/ts/scripts.ts +5 -3
  118. package/assets/ts/tests/table.spec.ts +0 -38
  119. package/dist/components.es.js +138 -136
  120. package/dist/components.umd.js +108 -116
  121. package/package.json +1 -1
  122. package/src/components/Table/TableAjax.vue +34 -0
  123. package/src/components/Table/TableBasic.vue +34 -0
  124. package/src/components/Table/TableNoSubmit.vue +34 -0
  125. package/src/components/Table/TableSubmit.vue +34 -0
  126. package/src/components/Table/Table.spec.js +0 -47
@@ -2,376 +2,107 @@
2
2
 
3
3
  $darkMode: 'true' !default;
4
4
 
5
- // #region Container type
6
- *:has(> iam-table) {
7
- container-type: inline-size;
8
- }
9
- // #endregion
5
+ @use './table-basic.global.scss' with (
6
+ $darkMode: $darkMode
7
+ );
10
8
 
11
- // #region Basic table stuff
12
- iam-table {
13
- --hover-background: var(--colour-light);
14
- --row-bg: var(--colour-canvas-2);
15
- thead tr {
16
- background: var(--row-bg);
17
- }
18
- tbody tr {
19
- background: var(--row-bg);
9
+ $selector: 'iam-table, iam-table-basic, iam-table-no-submit, iam-table-submit';
20
10
 
21
- &:is(:hover, :focus-within, .hover) {
22
- --bg-colour-rgb: 238, 238, 238;
23
- --row-bg: var(--hover-background);
24
- background: var(--row-bg);
11
+ // #region Tables are only stacked on mobile
12
+ :is(#{$selector}):not(.table--fullwidth).table--cta {
13
+ @container (width < 23.4375em) {
14
+ tbody tr td:last-child {
15
+ display: block !important;
25
16
  }
26
17
  }
27
-
28
- &[data-expandable] [data-expand-button][aria-expanded] {
29
- background-color: transparent;
30
- }
31
18
  }
32
19
  // #endregion
33
20
 
34
- // #region Tables are only stacked on mobile
35
- @container (width < 23.4375em) {
36
- iam-table:not(.table--fullwidth) {
37
- thead {
38
- display: none;
39
- }
21
+ // #region As part of the iam-table component
40
22
 
41
- tbody {
42
- display: block;
43
- overflow: visible;
44
-
45
- tr td:first-child {
46
- padding-top: 0;
47
- }
48
- }
49
-
50
- tr {
51
- display: block;
52
- position: relative;
53
- border: none;
54
- background: var(--row-bg);
55
- padding: var(--wrapper-padding);
56
- box-shadow: 0px 6px 12px rgba(0, 0, 0, 0.11);
57
- border-radius: rem(8);
58
- height: auto;
59
-
60
- & + tr {
61
- margin-top: rem(32);
62
- }
63
-
64
- &:is(:hover, :focus, .hover) {
65
- --row-bg: var(--colour-canvas-2);
66
- }
67
- }
68
-
69
- :is(td, th) {
70
- display: block;
71
- @include var(border-color, --colour-border);
72
-
73
- padding-right: 0;
74
-
75
- &:nth-child(1) {
76
- border-top: none;
77
- }
78
-
79
- &[data-label]:not([data-label='']):before {
80
- content: attr(data-label);
81
- color: var(--colour-heading);
82
- padding: 0 0 rem(6) 0;
83
- margin-bottom: 0;
84
- display: block;
85
- font-weight: bold;
86
- }
87
- }
88
-
89
- td:first-child::after {
90
- top: 1.75rem !important;
91
- }
92
-
93
- td::after {
94
- top: 2.5rem;
95
- }
96
-
97
- .td--fixed {
98
- padding-right: 50%;
99
- }
100
-
101
- tbody tr td:not(:first-child) {
102
- border-top: var(--border-width) solid currentColor;
103
- border-color: var(--colour-border) !important;
104
- }
105
-
106
- tr:not([data-view='full']) td p {
107
- display: -webkit-box;
108
- -webkit-box-orient: vertical;
109
- -webkit-line-clamp: 2;
110
- overflow: hidden;
111
- }
112
-
113
- td:has([data-expand-button]) {
114
- height: 0;
115
- padding: 0;
116
- position: relative;
117
- }
118
- td:has([data-expand-button]) + td {
119
- border-top: none !important;
120
- padding-top: 0 !important;
121
- }
122
- [data-expand-button] {
123
- top: 0;
124
- right: 0;
125
- background: transparent !important;
126
- border: none;
127
- position: absolute;
128
- overflow: hidden;
129
- --compact-size: #{rem(32)};
130
-
131
- &:before {
132
- font-family: 'Font Awesome 6 Pro';
133
- content: '\f055';
134
- font-weight: 300 !important;
135
- font-size: rem(28);
136
- line-height: var(--compact-size) !important;
137
- }
138
-
139
- &[aria-expanded] {
140
- &:before {
141
- content: '\f056';
142
- font-weight: 900 !important;
143
- }
144
- }
145
- }
146
-
147
- .dialog__wrapper:not([slot='overflow']) {
148
- margin-top: -0.5rem;
149
- margin-left: -1rem;
150
- z-index: 10;
151
- }
152
- }
153
-
154
- iam-table:not(.table--fullwidth) tbody tr:not([data-view='full']) {
155
- td:not(.td--fixed) + td:not(.td--fixed) + td + td {
156
- display: none;
157
- }
23
+ :is(#{$selector}) iam-actionbar {
24
+ margin: 0 1.5rem 1rem 1.5rem;
25
+
26
+ @container (width < 23.4375em) {
27
+ box-shadow: 0px 6px 12px rgba(0, 0, 0, 0.11);
28
+ border-radius: 0.5rem;
158
29
  }
30
+ }
31
+ :is(#{$selector}).table--fullwidth:has(iam-actionbar) {
32
+ padding-top: 0;
33
+ }
34
+ :is(#{$selector}).table--fullwidth iam-actionbar {
35
+ margin: -2rem -2rem 2rem -2rem;
36
+ box-shadow: none;
37
+ border-radius: 0;
38
+ }
159
39
 
160
- iam-table.table--cta:not(.table--fullwidth) tr td:not(:first-child):last-child {
161
- display: block !important;
162
- position: static;
163
- width: 100%;
164
- min-width: 100%;
165
- margin-left: 0;
166
- padding-left: 0;
167
- text-align: left;
168
- min-height: 0;
40
+ :is(#{$selector}).table--fullwidth iam-actionbar:has(+ table input:checked) {
41
+ margin: -2rem -2rem 2rem -2rem;
42
+ box-shadow: none;
43
+ border-radius: 0;
169
44
 
170
- &:after {
171
- display: none;
172
- }
45
+ @include light-mode($darkMode) {
46
+ background-color: #e6eaec;
173
47
  }
174
48
  }
175
- // #endregion
176
-
177
- // #region CTA column
178
- @container (width > 23.4375em) {
179
- iam-table.table--cta:not(.table--loading):has(tr:first-child td:first-child:last-child) {
180
- padding-right: calc(var(--wrapper-padding) + 1.5rem);
181
- }
182
49
 
183
- iam-table.table--cta:not(.table--loading):not(:has(tr:first-child td:first-child:last-child)) {
184
- tr > th:nth-last-child(2),
185
- tr > td:nth-last-child(2) {
186
- padding-right: var(--cta-width);
187
- }
188
-
189
- tr > *:not(:first-child):last-child {
190
- position: absolute;
191
- left: calc(100% - var(--cta-width));
192
- top: auto;
193
- background: transparent;
194
- width: var(--cta-width);
195
- min-height: calc(var(--row-height) - 2px);
196
- text-align: right;
197
- background: linear-gradient(90deg, transparent 0%, var(--row-bg) 1.25rem);
198
- cursor: default;
199
- padding-bottom: 0;
200
-
201
- a {
202
- white-space: nowrap;
203
- padding-right: 0.2rem;
204
- padding-bottom: 0;
205
- }
206
- }
50
+ // Actionbar
51
+ .actionbar__sticky-wrapper {
52
+ container-type: inline-size;
207
53
 
208
- tbody tr:hover > *:not(:first-child):last-child {
209
- background: linear-gradient(90deg, transparent 0%, var(--row-bg) 1.25rem);
210
- }
54
+ @include media-breakpoint-up(sm, $mobileOnly) {
55
+ padding: 0 !important;
211
56
  }
212
57
  }
213
- // #endregion
214
58
 
215
- // #region Max height tables
216
- iam-table:is(.mh-sm, .mh-md, .mh-lg):not(.table--cta) {
217
- position: relative;
218
-
219
- thead {
59
+ @container (width < 23.4375em) {
60
+ :is(#{$selector}):is(.actionbar__sticky-wrapper) > .actionbar__sticky {
61
+ display: block;
220
62
  position: sticky;
221
- top: 0;
222
63
  left: 0;
223
- z-index: 1;
224
- background-color: var(--row-bg);
64
+ top: calc(var(--sticky-padding) + #{rem(16)});
65
+ z-index: var(--index-menu);
66
+ pointer-events: none;
225
67
 
226
- &:before {
68
+ &:after {
227
69
  content: '';
228
- position: absolute;
229
- bottom: 0;
230
- left: 0;
70
+ display: block;
231
71
  width: 100%;
232
- height: 2px;
233
- background: var(--colour-primary);
234
- }
235
- }
236
- tbody {
237
- position: relative;
238
-
239
- tr:first-child td {
240
- border-top: 0;
241
- }
242
- tr:last-child td {
243
- border-bottom: 0;
244
- }
245
- }
246
- }
247
- //#endregion
248
-
249
- // #region Statuses
250
- table {
251
- .hide-status:after {
252
- display: none;
253
- }
254
-
255
- :not(.hide-status):is(
256
- [data-content='low'],
257
- [data-content='medium'],
258
- [data-content='high'],
259
- [data-content='unknown'],
260
- [data-content='due'],
261
- [data-content='overdue'],
262
- [data-content='incomplete'],
263
- [data-content='requires approval'],
264
- [data-content='upcoming'],
265
- [data-content='approval required'],
266
- [data-content='warning'],
267
- [data-content='verified'],
268
- [data-content='not started'],
269
- [data-content='to do'],
270
- [data-content='on track'],
271
- [data-content='completed'],
272
- [data-content='complete'],
273
- .alert-status:not([data-content='0']):not([data-content='']):not(:empty)
274
- ) {
275
- position: relative;
276
- padding-left: 1.5rem;
277
-
278
- &::before {
279
- margin-left: -1.5rem !important;
72
+ height: calc(100vh - #{rem(68 + 24 + 16)});
73
+ pointer-events: none;
280
74
  }
281
75
 
282
- &:after {
283
- font-family: 'Font Awesome 6 Pro';
284
- position: absolute;
285
- top: 1rem;
286
- left: 0;
287
- font-size: rem(16);
288
- line-height: 1;
289
- height: rem(16);
290
- width: rem(16);
291
- display: inline-block;
76
+ & + * {
77
+ margin-top: calc(-100vh - -6.75rem);
292
78
  }
293
79
  }
294
80
 
295
- [data-content='high']:after {
296
- content: '\f325';
297
- font-weight: normal;
298
- color: var(--colour-danger);
299
- }
300
-
301
- [data-content='medium']:after {
302
- content: '\f7a4';
303
- font-weight: normal;
304
- color: var(--colour-warning);
305
- }
306
-
307
- [data-content='low']:after {
308
- content: '\e404';
309
- font-weight: normal;
310
- color: var(--colour-complete);
311
- }
312
-
313
- [data-content='unknown']:after {
314
- content: '\e404';
315
- font-weight: normal;
316
- color: var(--colour-muted);
317
- }
318
-
319
- :is([data-content='overdue'], [data-content='due'], [data-content='incomplete']):after {
320
- content: '\f024';
321
- color: var(--colour-danger);
322
- }
323
-
324
- :is([data-content='not started'], [data-content='to do'], [data-content='on track']):after {
325
- content: '\f024';
326
- color: var(--colour-muted);
327
- }
328
-
329
- :is(
330
- [data-content='requires approval'],
331
- [data-content='approval required'],
332
- [data-content='action required'],
333
- [data-content='upcoming']
334
- ):after {
335
- content: '\f024';
336
- color: var(--colour-warning);
337
- }
338
-
339
- :is([data-content='warning']):after {
340
- content: '\f071';
341
- color: var(--colour-warning);
81
+ :is(#{$selector}):is(.actionbar__sticky) > iam-actionbar {
82
+ pointer-events: all !important;
83
+ display: block;
84
+ border: none;
85
+ background: var(--colour-canvas-2);
86
+ //box-shadow: 0px 6px 12px rgba(0, 0, 0, 0.11);
87
+ border-radius: 0.5rem;
88
+ margin-bottom: rem(24);
342
89
  }
343
-
344
- :is(
345
- [data-content='manually verified'],
346
- [data-content='verified'],
347
- [data-content='completed'],
348
- [data-content='complete']
349
- ):after {
350
- content: '\f00c';
351
- font-weight: normal;
352
- color: var(--colour-complete);
353
- }
354
-
355
- .alert-status:not([data-content='0']):not([data-content='']):not(:empty):after {
356
- content: '\f0f3';
357
- color: var(--colour-primary);
358
- }
359
- }
360
- // #endregion
361
-
362
- // #region filters
363
- iam-table .table--filtered tbody tr:not(.filtered--show) {
364
- display: none !important;
365
90
  }
366
91
 
367
- iam-table table:not(.table--filtered):not(.table--ajax) tbody tr:nth-child(15) ~ tr {
368
- display: none;
92
+ @include container-up(sm) {
93
+ :is(#{$selector}).table--fullwidth iam-actionbar,
94
+ :is(#{$selector}) iam-actionbar {
95
+ margin-left: -2rem;
96
+ margin-right: -2rem;
97
+ margin-top: -2rem;
98
+ margin-bottom: 2rem;
99
+ }
369
100
  }
370
101
  // #endregion
371
102
 
372
103
  // #region Table with actionbar
373
104
 
374
- iam-table {
105
+ :is(#{$selector}) {
375
106
  input:is([type='radio'], [type='checkbox']) + label:not(.radio--tick) {
376
107
  padding-left: 0 !important;
377
108
  margin: 0 !important;
@@ -380,6 +111,7 @@ iam-table {
380
111
  &:after {
381
112
  top: 0.75rem !important;
382
113
  left: 0.25rem !important;
114
+ --border-radius: 0.25rem;
383
115
  }
384
116
  }
385
117
 
@@ -403,13 +135,16 @@ iam-table {
403
135
  }
404
136
  }
405
137
 
406
- tr:has([type='checkbox']:checked) {
138
+ tr:has([type='checkbox']:hover, [type='checkbox']:focus) {
139
+ --row-bg: #eeeeee;
140
+ }
141
+ tr:has([type='checkbox']:hover:checked, [type='checkbox']:focus:checked, [type='checkbox']:checked) {
407
142
  --row-bg: #e0e0e0;
408
143
  }
409
144
  }
410
145
 
411
146
  @container (width < 23.4375em) {
412
- iam-table:has([slot='before']) {
147
+ :is(#{$selector}) {
413
148
  iam-actionbar {
414
149
  @include light-mode($darkMode) {
415
150
  background-color: #e6eaec;
@@ -420,7 +155,7 @@ iam-table {
420
155
  }
421
156
  }
422
157
 
423
- iam-table {
158
+ :is(#{$selector}) {
424
159
  input:is([type='radio'], [type='checkbox']) + label:not(.radio--tick) {
425
160
  padding-left: 0 !important;
426
161
  margin: 0 !important;
@@ -447,28 +182,21 @@ iam-table {
447
182
  // #endregion
448
183
 
449
184
  // #region Expandable tables
450
- iam-table.table--fullwidth:not([data-expandable]) {
451
- th.expand-button-heading {
452
- display: none;
453
- }
454
- td:has([data-expand-button]) {
455
- display: none;
456
- }
457
- }
458
-
459
- @container (width > 23.4375em) {
460
- iam-table:not([data-expandable]) {
461
- th.expand-button-heading {
462
- display: none;
463
- }
464
- td.td--expand {
465
- display: none;
466
- }
185
+ :is(#{$selector})[data-expandable] {
186
+ td:has([data-expand-button]),
187
+ .expand-button-heading {
188
+ display: table-cell;
467
189
  }
468
190
 
469
- iam-table[data-expandable] {
191
+ @mixin fullwidthexpand() {
470
192
  [data-expand-button] {
471
- margin: 0;
193
+ margin: 0.25rem 0 0 0;
194
+
195
+ &:not(:hover, :focus) {
196
+ background-color: transparent;
197
+ border-color: transparent;
198
+ }
199
+
472
200
  &:before {
473
201
  font-family: 'Font Awesome 6 Pro';
474
202
  content: '\f078';
@@ -491,32 +219,36 @@ iam-table.table--fullwidth:not([data-expandable]) {
491
219
  -webkit-box-orient: vertical;
492
220
  -webkit-line-clamp: 2;
493
221
  overflow: hidden;
222
+ min-width: 10rem;
494
223
  }
495
224
  }
225
+
226
+ &.table--fullwidth {
227
+ @include fullwidthexpand();
228
+ }
229
+
230
+ @container (width > 23.4375em) {
231
+ @include fullwidthexpand();
232
+ }
496
233
  }
497
234
  // #endregion
498
235
 
499
236
  // #region fixed columns
500
- @container (width < 23.4375em) {
501
- iam-table:not(.table--fullwidth) {
502
- .td--fixed + td:not(.td--fixed) {
503
- border-top: none;
237
+ :is(#{$selector}):not(.table--fullwidth) {
238
+ @container (width < 23.4375em) {
239
+ tr {
240
+ position: relative;
241
+ }
242
+ .td--fixed + .td--fixed {
243
+ border: none;
504
244
  }
505
245
  }
506
246
  }
507
- @container (width > 23.4375em) {
508
- iam-table {
509
- --width-adjust: 0px;
510
-
511
- &:has([type='checkbox']) {
512
- --width-adjust: -1rem;
513
- }
514
247
 
248
+ :is(#{$selector}) {
249
+ @container (width > 23.4375em) {
515
250
  .th--fixed {
516
- min-width: calc(rem(48 + 24) + var(--width-adjust));
517
- position: absolute;
518
- padding: 0;
519
-
251
+ /*
520
252
  &:after {
521
253
  top: auto;
522
254
  left: 0;
@@ -526,95 +258,73 @@ iam-table.table--fullwidth:not([data-expandable]) {
526
258
  height: calc(var(--row-height) - 2px);
527
259
  background: linear-gradient(90deg, var(--row-bg) calc(100% - 1.5rem), transparent 100%);
528
260
  }
261
+ */
529
262
  }
530
263
 
264
+ .th--fixed,
531
265
  .td--fixed {
532
- position: absolute;
533
266
  position: absolute;
534
267
  left: auto;
535
268
  top: auto;
536
269
  z-index: 3;
537
- padding: rem(4) 0 0 0;
538
- min-width: rem(48 + 24);
270
+ padding: 0 0 0 0;
271
+ min-width: rem(48 + 6);
539
272
  height: calc(var(--row-height) - 2px);
540
273
  text-align: left;
541
- background: linear-gradient(90deg, var(--row-bg) calc(100% - 1.5rem), transparent 100%);
274
+ background: var(--row-bg);
542
275
 
543
276
  &:has([open]) {
544
277
  z-index: 4;
545
278
  }
546
279
  }
547
280
 
548
- tr {
549
- &:has(.td--fixed) {
550
- height: 3.5rem;
551
- }
552
-
553
- &:is(:hover, :focus) .td--fixed {
554
- background: linear-gradient(90deg, var(--row-bg) calc(100% - 1.5rem), transparent 100%);
555
- }
281
+ .th--fixed:has(+ th:not(.th--fixed)),
282
+ .td--fixed:has(+ td:not(.td--fixed)) {
556
283
 
557
- &:has([data-expand-button]) {
558
- height: calc(rem(74) - 2px);
559
- }
284
+ background: linear-gradient(90deg, var(--row-bg) calc(100% - 1rem), transparent 100%);
560
285
  }
561
286
 
562
287
  .th--fixed + th:not(.th--fixed),
563
288
  .td--fixed + td:not(.td--fixed) {
564
- padding-left: calc(rem(48 + 24) + var(--width-adjust));
289
+ padding-left: calc(rem(48 + 6))!important;
565
290
  }
566
291
 
567
- .th--fixed:not(.expand-button-heading) + .th--fixed + th:not(.th--fixed),
568
- .td--fixed:not(.td--expand) + .td--fixed + td:not(.td--fixed) {
569
- padding-left: calc(rem(48 + 4 + 48 + 24) + var(--width-adjust));
292
+ .th--fixed + .th--fixed,
293
+ .td--fixed + .td--fixed {
294
+ left: rem(48);
570
295
  }
571
296
 
572
- &[data-expandable] .th--fixed + .th--fixed + th:not(.th--fixed),
573
- &[data-expandable] .td--fixed + .td--fixed + td:not(.td--fixed) {
574
- padding-left: calc(rem(48 + 4 + 48 + 24) + var(--width-adjust));
297
+ .th--fixed + .th--fixed + th:not(.th--fixed),
298
+ .td--fixed + .td--fixed + td:not(.td--fixed) {
299
+ padding-left: calc(rem(48 + 48 + 6))!important;
575
300
  }
576
301
 
577
- .th--fixed + .th--fixed,
578
- .td--fixed + .td--fixed {
579
- padding-left: calc(rem(48 + 4) + var(--width-adjust));
580
- min-width: calc(rem(48 + 4 + 48 + 24) + var(--width-adjust));
581
- }
582
302
 
583
- .th--fixed:has(+ .th--fixed),
584
- .td--fixed:has(+ .td--fixed) {
585
- min-width: calc(rem(48 + 4) + var(--width-adjust));
586
- z-index: 5;
303
+ .th--fixed + .th--fixed + .th--fixed,
304
+ .td--fixed + .td--fixed + .td--fixed {
305
+ left: rem(48 + 48);
587
306
  }
588
307
 
308
+ .th--fixed + .th--fixed + .th--fixed + th:not(.th--fixed),
309
+ .td--fixed + .td--fixed + .td--fixed + td:not(.td--fixed) {
310
+ padding-left: calc(rem(48 + 48 + 48 + 6))!important;
311
+ }
312
+
589
313
  .dialog__wrapper {
590
314
  z-index: 10;
591
315
  }
592
316
  .dialog__wrapper:has([open]) {
593
317
  z-index: 20;
594
318
  }
595
-
596
- &[data-expandable] input:is([type='radio'], [type='checkbox']) + label:before,
597
- &[data-expandable] input:is([type='radio'], [type='checkbox']) + label:after {
598
- left: 1.25rem !important;
599
- }
600
319
  }
320
+ }
321
+ // #endregion
601
322
 
602
- iam-table:not([data-expandable]) {
603
- th.expand-button-heading + th {
604
- padding-left: 0 !important;
605
- }
606
- td.td--expand + td {
607
- padding-left: 0 !important;
608
- }
609
-
610
- th.expand-button-heading + .th--fixed {
611
- min-width: calc(rem(48 + 24) + var(--width-adjust)) !important;
612
- }
613
- td.td--expand + .td--fixed {
614
- min-width: calc(rem(48 + 24) + var(--width-adjust)) !important;
615
- }
616
- }
323
+ // #region
324
+ :is(#{$selector})td:has(.dialog__wrapper) {
325
+ padding-top: 0.25rem;
617
326
  }
327
+
618
328
  // #endregion
619
329
 
620
330
  // #region sort by column header
@@ -626,34 +336,32 @@ $icon-sort-asc: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg'
626
336
  $icon-sort-desc: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 384 512'><!--!Font Awesome Pro 6.7.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license (Commercial License) Copyright 2025 Fonticons, Inc.--><path d='M174.6 472.6c4.5 4.7 10.8 7.4 17.4 7.4s12.8-2.7 17.4-7.4l168-176c9.2-9.6 8.8-24.8-.8-33.9s-24.8-8.8-33.9 .8L216 396.1 216 56c0-13.3-10.7-24-24-24s-24 10.7-24 24l0 340.1L41.4 263.4c-9.2-9.6-24.3-9.9-33.9-.8s-9.9 24.3-.8 33.9l168 176z'/></svg>");
627
337
 
628
338
  @mixin column-sort {
629
- &:has(th[data-sort]) th,
630
- td {
631
- padding-block: 0.75rem;
632
- padding-left: 0.5rem;
633
- padding-right: 2.5rem;
634
- }
635
-
636
339
  th[data-sort] {
637
340
  background-repeat: no-repeat;
638
341
  background-size: 1rem 1rem;
639
342
  background-position: calc(100% - 0.5rem) 50%;
343
+ padding-top: 0.75rem;
640
344
  cursor: pointer;
641
345
 
642
346
  &:hover {
643
347
  background-color: var(--colour-light);
644
- background-image: $icon-sort;
348
+ background-image: #{escape-svg($icon-sort)};
645
349
  }
646
350
  }
647
351
 
352
+ &:has(th[data-sort]) :is(th, td) {
353
+ padding-left: 0.25rem!important;
354
+ }
355
+
648
356
  th[data-sort][data-order-by='asc'] {
649
- background-image: $icon-sort-asc;
357
+ background-image: #{escape-svg($icon-sort-asc)};
650
358
  }
651
359
  th[data-sort][data-order-by='desc'] {
652
- background-image: $icon-sort-desc;
360
+ background-image: #{escape-svg($icon-sort-desc)};
653
361
  }
654
362
  }
655
363
 
656
- iam-table {
364
+ :is(#{$selector}) {
657
365
  &.table--fullwidth {
658
366
  @include column-sort;
659
367
  }
@@ -665,8 +373,41 @@ iam-table {
665
373
 
666
374
  // #endregion
667
375
 
376
+ // #region hide columns
668
377
  @for $i from 1 through 30 {
669
- iam-table [data-hide-col#{$i}] + table :is(thead, tbody) :is(th, td):nth-child(#{$i}) {
378
+ :is(#{$selector}) [data-hide-col#{$i}] + table :is(thead, tbody) :is(th, td):nth-child(#{$i}) {
670
379
  display: none;
671
380
  }
672
381
  }
382
+ // #endregion
383
+
384
+ // #region filters
385
+ :is(#{$selector}) .table--filtered tbody tr:not(.filtered--show) {
386
+ display: none !important;
387
+ }
388
+
389
+ :is(#{$selector}) table:not(.table--filtered):not(.table--ajax) tbody tr:nth-child(15) ~ tr {
390
+ //display: none;
391
+ }
392
+ // #endregion
393
+
394
+ // #region max height tables
395
+
396
+
397
+ iam-table-basic:is(.mh-lg,.mh-md,.mh-sm) {
398
+
399
+ thead {
400
+ position: sticky;
401
+ top: 0;
402
+ z-index: 9999;
403
+
404
+ tr {
405
+
406
+ background: var(--row-bg);
407
+ background: linear-gradient(0deg,var(--colour-primary) 2px, var(--row-bg) 2px);
408
+ border: none;
409
+ }
410
+ }
411
+ }
412
+
413
+ // #endregion