@cloudscape-design/components-themeable 3.0.1377 → 3.0.1379

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 (189) hide show
  1. package/lib/internal/manifest.json +1 -1
  2. package/lib/internal/scss/internal/generated/custom-css-properties/index.scss +1 -1
  3. package/lib/internal/scss/table/body-cell/styles.scss +5 -3
  4. package/lib/internal/scss/table/cell-base/_cell-box.scss +14 -10
  5. package/lib/internal/scss/table/header-cell/styles.scss +6 -2
  6. package/lib/internal/scss/table/resizer/styles.scss +2 -1
  7. package/lib/internal/scss/table-body/styles.scss +12 -0
  8. package/lib/internal/scss/table-body-cell/styles.scss +41 -0
  9. package/lib/internal/scss/table-head/styles.scss +12 -0
  10. package/lib/internal/scss/table-header-cell/styles.scss +57 -0
  11. package/lib/internal/scss/table-root/styles.scss +39 -0
  12. package/lib/internal/scss/table-row/styles.scss +47 -0
  13. package/lib/internal/template/i18n/messages/all.all.js +1 -1
  14. package/lib/internal/template/i18n/messages/all.all.json +1 -1
  15. package/lib/internal/template/i18n/messages/all.th.js +1 -1
  16. package/lib/internal/template/i18n/messages/all.th.json +1 -1
  17. package/lib/internal/template/index.d.ts +6 -0
  18. package/lib/internal/template/index.d.ts.map +1 -1
  19. package/lib/internal/template/index.js +6 -0
  20. package/lib/internal/template/index.js.map +1 -1
  21. package/lib/internal/template/internal/base-component/styles.scoped.css +1 -1
  22. package/lib/internal/template/internal/components/radio-button/index.d.ts.map +1 -1
  23. package/lib/internal/template/internal/components/radio-button/index.js +2 -2
  24. package/lib/internal/template/internal/components/radio-button/index.js.map +1 -1
  25. package/lib/internal/template/internal/environment.js +2 -2
  26. package/lib/internal/template/internal/environment.json +2 -2
  27. package/lib/internal/template/package.json +18 -0
  28. package/lib/internal/template/radio-button/interfaces.d.ts +14 -0
  29. package/lib/internal/template/radio-button/interfaces.d.ts.map +1 -1
  30. package/lib/internal/template/radio-button/interfaces.js.map +1 -1
  31. package/lib/internal/template/table/body-cell/styles.css.js +47 -46
  32. package/lib/internal/template/table/body-cell/styles.scoped.css +376 -376
  33. package/lib/internal/template/table/body-cell/styles.selectors.js +47 -46
  34. package/lib/internal/template/table/body-cell/td-element.d.ts.map +1 -1
  35. package/lib/internal/template/table/body-cell/td-element.js +12 -12
  36. package/lib/internal/template/table/body-cell/td-element.js.map +1 -1
  37. package/lib/internal/template/table/header-cell/styles.css.js +39 -38
  38. package/lib/internal/template/table/header-cell/styles.scoped.css +80 -80
  39. package/lib/internal/template/table/header-cell/styles.selectors.js +39 -38
  40. package/lib/internal/template/table/header-cell/th-element.d.ts.map +1 -1
  41. package/lib/internal/template/table/header-cell/th-element.js +18 -8
  42. package/lib/internal/template/table/header-cell/th-element.js.map +1 -1
  43. package/lib/internal/template/table/internal.d.ts.map +1 -1
  44. package/lib/internal/template/table/internal.js +9 -3
  45. package/lib/internal/template/table/internal.js.map +1 -1
  46. package/lib/internal/template/table/sticky-columns/use-sticky-columns.d.ts.map +1 -1
  47. package/lib/internal/template/table/sticky-columns/use-sticky-columns.js +13 -3
  48. package/lib/internal/template/table/sticky-columns/use-sticky-columns.js.map +1 -1
  49. package/lib/internal/template/table-body/index.d.ts +5 -0
  50. package/lib/internal/template/table-body/index.d.ts.map +1 -0
  51. package/lib/internal/template/table-body/index.js +14 -0
  52. package/lib/internal/template/table-body/index.js.map +1 -0
  53. package/lib/internal/template/table-body/interfaces.d.ts +18 -0
  54. package/lib/internal/template/table-body/interfaces.d.ts.map +1 -0
  55. package/lib/internal/template/table-body/interfaces.js +2 -0
  56. package/lib/internal/template/table-body/interfaces.js.map +1 -0
  57. package/lib/internal/template/table-body/internal.d.ts +7 -0
  58. package/lib/internal/template/table-body/internal.d.ts.map +1 -0
  59. package/lib/internal/template/table-body/internal.js +13 -0
  60. package/lib/internal/template/table-body/internal.js.map +1 -0
  61. package/lib/internal/template/table-body/styles.css.js +7 -0
  62. package/lib/internal/template/table-body/styles.scoped.css +11 -0
  63. package/lib/internal/template/table-body/styles.selectors.js +8 -0
  64. package/lib/internal/template/table-body-cell/index.d.ts +5 -0
  65. package/lib/internal/template/table-body-cell/index.d.ts.map +1 -0
  66. package/lib/internal/template/table-body-cell/index.js +17 -0
  67. package/lib/internal/template/table-body-cell/index.js.map +1 -0
  68. package/lib/internal/template/table-body-cell/interfaces.d.ts +21 -0
  69. package/lib/internal/template/table-body-cell/interfaces.d.ts.map +1 -0
  70. package/lib/internal/template/table-body-cell/interfaces.js +2 -0
  71. package/lib/internal/template/table-body-cell/interfaces.js.map +1 -0
  72. package/lib/internal/template/table-body-cell/internal.d.ts +26 -0
  73. package/lib/internal/template/table-body-cell/internal.d.ts.map +1 -0
  74. package/lib/internal/template/table-body-cell/internal.js +36 -0
  75. package/lib/internal/template/table-body-cell/internal.js.map +1 -0
  76. package/lib/internal/template/table-body-cell/styles.css.js +7 -0
  77. package/lib/internal/template/table-body-cell/styles.scoped.css +38 -0
  78. package/lib/internal/template/table-body-cell/styles.selectors.js +8 -0
  79. package/lib/internal/template/table-head/index.d.ts +5 -0
  80. package/lib/internal/template/table-head/index.d.ts.map +1 -0
  81. package/lib/internal/template/table-head/index.js +14 -0
  82. package/lib/internal/template/table-head/index.js.map +1 -0
  83. package/lib/internal/template/table-head/interfaces.d.ts +8 -0
  84. package/lib/internal/template/table-head/interfaces.d.ts.map +1 -0
  85. package/lib/internal/template/table-head/interfaces.js +2 -0
  86. package/lib/internal/template/table-head/interfaces.js.map +1 -0
  87. package/lib/internal/template/table-head/internal.d.ts +6 -0
  88. package/lib/internal/template/table-head/internal.d.ts.map +1 -0
  89. package/lib/internal/template/table-head/internal.js +13 -0
  90. package/lib/internal/template/table-head/internal.js.map +1 -0
  91. package/lib/internal/template/table-head/styles.css.js +7 -0
  92. package/lib/internal/template/table-head/styles.scoped.css +11 -0
  93. package/lib/internal/template/table-head/styles.selectors.js +8 -0
  94. package/lib/internal/template/table-header-cell/index.d.ts +5 -0
  95. package/lib/internal/template/table-header-cell/index.d.ts.map +1 -0
  96. package/lib/internal/template/table-header-cell/index.js +16 -0
  97. package/lib/internal/template/table-header-cell/index.js.map +1 -0
  98. package/lib/internal/template/table-header-cell/interfaces.d.ts +22 -0
  99. package/lib/internal/template/table-header-cell/interfaces.d.ts.map +1 -0
  100. package/lib/internal/template/table-header-cell/interfaces.js +2 -0
  101. package/lib/internal/template/table-header-cell/interfaces.js.map +1 -0
  102. package/lib/internal/template/table-header-cell/internal.d.ts +18 -0
  103. package/lib/internal/template/table-header-cell/internal.d.ts.map +1 -0
  104. package/lib/internal/template/table-header-cell/internal.js +33 -0
  105. package/lib/internal/template/table-header-cell/internal.js.map +1 -0
  106. package/lib/internal/template/table-header-cell/styles.css.js +11 -0
  107. package/lib/internal/template/table-header-cell/styles.scoped.css +49 -0
  108. package/lib/internal/template/table-header-cell/styles.selectors.js +12 -0
  109. package/lib/internal/template/table-root/context.d.ts +10 -0
  110. package/lib/internal/template/table-root/context.d.ts.map +1 -0
  111. package/lib/internal/template/table-root/context.js +16 -0
  112. package/lib/internal/template/table-root/context.js.map +1 -0
  113. package/lib/internal/template/table-root/grid-template-columns.d.ts +3 -0
  114. package/lib/internal/template/table-root/grid-template-columns.d.ts.map +1 -0
  115. package/lib/internal/template/table-root/grid-template-columns.js +34 -0
  116. package/lib/internal/template/table-root/grid-template-columns.js.map +1 -0
  117. package/lib/internal/template/table-root/index.d.ts +5 -0
  118. package/lib/internal/template/table-root/index.d.ts.map +1 -0
  119. package/lib/internal/template/table-root/index.js +17 -0
  120. package/lib/internal/template/table-root/index.js.map +1 -0
  121. package/lib/internal/template/table-root/interfaces.d.ts +64 -0
  122. package/lib/internal/template/table-root/interfaces.d.ts.map +1 -0
  123. package/lib/internal/template/table-root/interfaces.js +2 -0
  124. package/lib/internal/template/table-root/interfaces.js.map +1 -0
  125. package/lib/internal/template/table-root/internal.d.ts +6 -0
  126. package/lib/internal/template/table-root/internal.d.ts.map +1 -0
  127. package/lib/internal/template/table-root/internal.js +58 -0
  128. package/lib/internal/template/table-root/internal.js.map +1 -0
  129. package/lib/internal/template/table-root/styles.css.js +10 -0
  130. package/lib/internal/template/table-root/styles.scoped.css +71 -0
  131. package/lib/internal/template/table-root/styles.selectors.js +11 -0
  132. package/lib/internal/template/table-row/index.d.ts +5 -0
  133. package/lib/internal/template/table-row/index.d.ts.map +1 -0
  134. package/lib/internal/template/table-row/index.js +16 -0
  135. package/lib/internal/template/table-row/index.js.map +1 -0
  136. package/lib/internal/template/table-row/interfaces.d.ts +39 -0
  137. package/lib/internal/template/table-row/interfaces.d.ts.map +1 -0
  138. package/lib/internal/template/table-row/interfaces.js +2 -0
  139. package/lib/internal/template/table-row/interfaces.js.map +1 -0
  140. package/lib/internal/template/table-row/internal.d.ts +6 -0
  141. package/lib/internal/template/table-row/internal.d.ts.map +1 -0
  142. package/lib/internal/template/table-row/internal.js +13 -0
  143. package/lib/internal/template/table-row/internal.js.map +1 -0
  144. package/lib/internal/template/table-row/styles.css.js +7 -0
  145. package/lib/internal/template/table-row/styles.scoped.css +42 -0
  146. package/lib/internal/template/table-row/styles.selectors.js +8 -0
  147. package/lib/internal/template/test-utils/dom/index.d.ts +168 -0
  148. package/lib/internal/template/test-utils/dom/index.js +116 -1
  149. package/lib/internal/template/test-utils/dom/index.js.map +1 -1
  150. package/lib/internal/template/test-utils/dom/table-body/index.d.ts +4 -0
  151. package/lib/internal/template/test-utils/dom/table-body/index.js +11 -0
  152. package/lib/internal/template/test-utils/dom/table-body/index.js.map +1 -0
  153. package/lib/internal/template/test-utils/dom/table-body-cell/index.d.ts +4 -0
  154. package/lib/internal/template/test-utils/dom/table-body-cell/index.js +11 -0
  155. package/lib/internal/template/test-utils/dom/table-body-cell/index.js.map +1 -0
  156. package/lib/internal/template/test-utils/dom/table-head/index.d.ts +4 -0
  157. package/lib/internal/template/test-utils/dom/table-head/index.js +11 -0
  158. package/lib/internal/template/test-utils/dom/table-head/index.js.map +1 -0
  159. package/lib/internal/template/test-utils/dom/table-header-cell/index.d.ts +4 -0
  160. package/lib/internal/template/test-utils/dom/table-header-cell/index.js +11 -0
  161. package/lib/internal/template/test-utils/dom/table-header-cell/index.js.map +1 -0
  162. package/lib/internal/template/test-utils/dom/table-root/index.d.ts +4 -0
  163. package/lib/internal/template/test-utils/dom/table-root/index.js +11 -0
  164. package/lib/internal/template/test-utils/dom/table-root/index.js.map +1 -0
  165. package/lib/internal/template/test-utils/dom/table-row/index.d.ts +4 -0
  166. package/lib/internal/template/test-utils/dom/table-row/index.js +11 -0
  167. package/lib/internal/template/test-utils/dom/table-row/index.js.map +1 -0
  168. package/lib/internal/template/test-utils/selectors/index.d.ts +108 -0
  169. package/lib/internal/template/test-utils/selectors/index.js +86 -1
  170. package/lib/internal/template/test-utils/selectors/index.js.map +1 -1
  171. package/lib/internal/template/test-utils/selectors/table-body/index.d.ts +4 -0
  172. package/lib/internal/template/test-utils/selectors/table-body/index.js +11 -0
  173. package/lib/internal/template/test-utils/selectors/table-body/index.js.map +1 -0
  174. package/lib/internal/template/test-utils/selectors/table-body-cell/index.d.ts +4 -0
  175. package/lib/internal/template/test-utils/selectors/table-body-cell/index.js +11 -0
  176. package/lib/internal/template/test-utils/selectors/table-body-cell/index.js.map +1 -0
  177. package/lib/internal/template/test-utils/selectors/table-head/index.d.ts +4 -0
  178. package/lib/internal/template/test-utils/selectors/table-head/index.js +11 -0
  179. package/lib/internal/template/test-utils/selectors/table-head/index.js.map +1 -0
  180. package/lib/internal/template/test-utils/selectors/table-header-cell/index.d.ts +4 -0
  181. package/lib/internal/template/test-utils/selectors/table-header-cell/index.js +11 -0
  182. package/lib/internal/template/test-utils/selectors/table-header-cell/index.js.map +1 -0
  183. package/lib/internal/template/test-utils/selectors/table-root/index.d.ts +4 -0
  184. package/lib/internal/template/test-utils/selectors/table-root/index.js +11 -0
  185. package/lib/internal/template/test-utils/selectors/table-root/index.js.map +1 -0
  186. package/lib/internal/template/test-utils/selectors/table-row/index.d.ts +4 -0
  187. package/lib/internal/template/test-utils/selectors/table-row/index.js +11 -0
  188. package/lib/internal/template/test-utils/selectors/table-row/index.js.map +1 -0
  189. package/package.json +1 -1
@@ -1,3 +1,3 @@
1
1
  {
2
- "commit": "839ce39b08a54ee2921104cfe5722f48e44dbb3b"
2
+ "commit": "3ac674ad15b166eec43ec29f82b32b2b8837e02e"
3
3
  }
@@ -1,6 +1,6 @@
1
1
 
2
2
  // Build environment
3
- $awsui-commit-hash: "839ce39b";
3
+ $awsui-commit-hash: "3ac674ad";
4
4
  // Manually managed CSS-variables
5
5
  $maxContentWidth: --awsui-max-content-width-66120l;
6
6
  $minContentWidth: --awsui-min-content-width-66120l;
@@ -82,7 +82,7 @@ $editing-cell-padding-block: awsui.$space-scaled-xxxs;
82
82
  &-content {
83
83
  box-sizing: border-box;
84
84
 
85
- &:not(.body-cell-wrap) {
85
+ &.with-paddings:not(.body-cell-wrap) {
86
86
  white-space: nowrap;
87
87
  overflow: hidden;
88
88
  text-overflow: ellipsis;
@@ -136,8 +136,10 @@ $editing-cell-padding-block: awsui.$space-scaled-xxxs;
136
136
  border-inline-start: none;
137
137
  }
138
138
  }
139
- // Guard selected out: a selected first row must keep its (thicker, coloured) selected
140
- // top border, which the transparent placeholder would otherwise cover.
139
+ // First/last-row transparent placeholder. `:not(.body-cell-selected)` keeps a selected row's own border.
140
+ // Keyed on `.body-cell` with no grid-mode guard, so it is the single source of the placeholder for
141
+ // every cell — the existing Table's rows and the atomic cells (grid and auto) alike; load-bearing for
142
+ // grid selection-control centering.
141
143
  tr:first-child > &:not(.body-cell-selected) {
142
144
  border-block-start: cell-base.$border-placeholder;
143
145
  }
@@ -4,23 +4,27 @@
4
4
  @use '../../internal/styles/tokens' as awsui;
5
5
 
6
6
  $cell-vertical-padding: awsui.$space-scaled-xs;
7
- // Calculate padding to prevent a shift in content after selection due to the difference
8
- // between selected border widths and normal row divider widths (visual refresh).
7
+ // Extra padding so content doesn't shift on selection (VR: the selected border is wider than the divider).
9
8
  $cell-vertical-padding-w-border: calc(
10
9
  #{$cell-vertical-padding} + (#{awsui.$border-item-width} - #{awsui.$border-divider-list-width})
11
10
  );
12
11
  $cell-horizontal-padding: awsui.$space-scaled-l;
13
12
  $cell-edge-horizontal-padding: calc(#{awsui.$space-l} - #{awsui.$border-item-width});
14
13
  $border-placeholder: awsui.$border-item-width solid transparent;
14
+ // Divider inset from the cell's top/bottom edges. Shared with the existing Table's resizer so the two match.
15
+ $divider-block-gap: calc(2 * #{awsui.$space-xs} + #{awsui.$space-xxxs});
15
16
  $cell-offset: calc(#{awsui.$space-m} + #{awsui.$space-xs});
16
- // Ensuring enough space for absolute-positioned focus outlines of focus-able cell content elements.
17
+ // Space reserved for focus outlines of focusable cell content.
17
18
  $cell-negative-space-vertical: 2px;
18
19
 
20
+ // Padding is opt-in: only content carrying `.with-paddings` gets it (stamped unless `disablePaddings`).
21
+ // A control cell omits the class, so no padding/negative-margin applies — nothing to override, at any
22
+ // specificity, even as new edge/state rules are added.
19
23
  @mixin cell-padding-inline-start($padding) {
20
24
  $max-nesting-levels: 9;
21
25
  $offset-padding: calc($padding - 1 * awsui.$border-divider-list-width);
22
26
 
23
- > .body-cell-content {
27
+ > .body-cell-content.with-paddings {
24
28
  padding-inline-start: $offset-padding;
25
29
  }
26
30
  > .expandable-toggle-wrapper {
@@ -29,7 +33,7 @@ $cell-negative-space-vertical: 2px;
29
33
 
30
34
  @for $i from 0 through $max-nesting-levels {
31
35
  &.expandable-level-#{$i} {
32
- > .body-cell-content {
36
+ > .body-cell-content.with-paddings {
33
37
  padding-inline-start: calc(#{$offset-padding} / 2);
34
38
  margin-inline-start: calc(#{$offset-padding} / 2 + #{$i} * #{$cell-offset});
35
39
  }
@@ -39,7 +43,7 @@ $cell-negative-space-vertical: 2px;
39
43
  }
40
44
  }
41
45
  &.expandable-level-next {
42
- > .body-cell-content {
46
+ > .body-cell-content.with-paddings {
43
47
  padding-inline-start: calc(#{$offset-padding} / 2);
44
48
  margin-inline-start: calc(#{$offset-padding} / 2 + #{$max-nesting-levels} * #{$cell-offset});
45
49
  }
@@ -49,24 +53,24 @@ $cell-negative-space-vertical: 2px;
49
53
  }
50
54
  }
51
55
  @mixin cell-padding-inline-end($padding) {
52
- > .body-cell-content {
56
+ > .body-cell-content.with-paddings {
53
57
  padding-inline-end: calc(#{$padding} - 1 * #{awsui.$border-divider-list-width});
54
58
  }
55
59
  }
56
60
  @mixin cell-padding-block($padding) {
57
- > .body-cell-content {
61
+ > .body-cell-content.with-paddings {
58
62
  padding-block: calc(#{$padding} - 1 * #{awsui.$border-divider-list-width} + #{$cell-negative-space-vertical});
59
63
  margin-block: calc(-1 * #{$cell-negative-space-vertical});
60
64
  }
61
65
  }
62
66
  @mixin cell-padding-block-start($padding) {
63
- > .body-cell-content {
67
+ > .body-cell-content.with-paddings {
64
68
  padding-block-start: calc(#{$padding} - 1 * #{awsui.$border-divider-list-width} + #{$cell-negative-space-vertical});
65
69
  margin-block-start: calc(-1 * #{$cell-negative-space-vertical});
66
70
  }
67
71
  }
68
72
  @mixin cell-padding-block-end($padding) {
69
- > .body-cell-content {
73
+ > .body-cell-content.with-paddings {
70
74
  padding-block-end: calc(#{$padding} - 1 * #{awsui.$border-divider-list-width} + #{$cell-negative-space-vertical});
71
75
  margin-block-end: calc(-1 * #{$cell-negative-space-vertical});
72
76
  }
@@ -295,7 +295,9 @@ settings icon in the pagination slot.
295
295
  @include header-cell-focus-outline-first(awsui.$space-table-header-focus-outline-gutter);
296
296
  }
297
297
 
298
- &:first-child:not(.has-striped-rows):not(.sticky-cell-pad-inline-start):not(.header-cell-group):not(
298
+ // Opt-in gate: a control header (`disablePaddings`) omits `.with-paddings`, so this high-specificity
299
+ // <th> offset simply doesn't apply — a low-specificity reset could not override it.
300
+ &:first-child.with-paddings:not(.has-striped-rows):not(.sticky-cell-pad-inline-start):not(.header-cell-group):not(
299
301
  .header-cell-grouped
300
302
  ) {
301
303
  @include cell-offset(awsui.$space-xxxs);
@@ -306,7 +308,9 @@ settings icon in the pagination slot.
306
308
  shaded background makes the child content appear too close
307
309
  to the table edge.
308
310
  */
309
- &:first-child.has-striped-rows:not(.sticky-cell-pad-inline-start):not(.header-cell-group):not(.header-cell-grouped) {
311
+ &:first-child.with-paddings.has-striped-rows:not(.sticky-cell-pad-inline-start):not(.header-cell-group):not(
312
+ .header-cell-grouped
313
+ ) {
310
314
  @include cell-offset(awsui.$space-xxs);
311
315
  }
312
316
 
@@ -5,6 +5,7 @@
5
5
 
6
6
  @use '../../internal/styles/index' as styles;
7
7
  @use '../../internal/styles/tokens' as awsui;
8
+ @use '../cell-base/cell-box' as cell-base;
8
9
  @use '@cloudscape-design/component-toolkit/internal/focus-visible' as focus-visible;
9
10
 
10
11
  //stylelint-disable-next-line selector-combinator-disallowed-list,selector-max-universal
@@ -15,7 +16,7 @@
15
16
 
16
17
  $handle-width: awsui.$space-xl;
17
18
  $active-separator-width: 2px;
18
- $block-gap: calc(2 * #{awsui.$space-xs} + #{awsui.$space-xxxs});
19
+ $block-gap: cell-base.$divider-block-gap;
19
20
 
20
21
  .resizer-wrapper {
21
22
  inset-block: 0;
@@ -0,0 +1,12 @@
1
+ /*
2
+ Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
3
+ SPDX-License-Identifier: Apache-2.0
4
+ */
5
+
6
+ .body {
7
+ position: relative;
8
+ }
9
+
10
+ .body-grid {
11
+ display: block;
12
+ }
@@ -0,0 +1,41 @@
1
+ /*
2
+ Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
3
+ SPDX-License-Identifier: Apache-2.0
4
+ */
5
+
6
+ @use '../internal/styles/tokens' as awsui;
7
+
8
+ .cell {
9
+ box-sizing: border-box;
10
+ }
11
+
12
+ // Selection is a background fill plus a layout-neutral `::after` ring: the cell keeps the base
13
+ // `.body-cell` borders/padding, so the row never grows and content never shifts on toggle.
14
+ [data-awsui-selected] > .cell {
15
+ background-color: awsui.$color-background-item-selected;
16
+ }
17
+ [data-awsui-shaded] > .cell {
18
+ background-color: awsui.$color-background-cell-shaded;
19
+ }
20
+
21
+ tr:has(+ [data-awsui-shaded]) > .cell {
22
+ border-block-end-color: awsui.$color-border-cell-shaded;
23
+ }
24
+ [data-awsui-shaded]:not(:last-child) > .cell {
25
+ border-block-end-color: awsui.$color-border-cell-shaded;
26
+ }
27
+
28
+ [data-awsui-selected]:has(+ [data-awsui-selected]) > .cell {
29
+ border-block-end-color: transparent;
30
+ }
31
+
32
+ tr:not([data-awsui-selected]):has(+ [data-awsui-selected]) > .cell {
33
+ border-block-end-color: transparent;
34
+ }
35
+
36
+ .cell-grid {
37
+ min-inline-size: 0;
38
+ align-self: stretch;
39
+ display: grid;
40
+ align-items: center;
41
+ }
@@ -0,0 +1,12 @@
1
+ /*
2
+ Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
3
+ SPDX-License-Identifier: Apache-2.0
4
+ */
5
+
6
+ .head {
7
+ position: relative;
8
+ }
9
+
10
+ .head-grid {
11
+ display: block;
12
+ }
@@ -0,0 +1,57 @@
1
+ /*
2
+ Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
3
+ SPDX-License-Identifier: Apache-2.0
4
+ */
5
+
6
+ @use '../internal/styles/tokens' as awsui;
7
+ @use '../table/cell-base/cell-box' as cell-base;
8
+
9
+ .header-cell {
10
+ box-sizing: border-box;
11
+ }
12
+
13
+ // Presentation-only divider `::after` (the substrate has no Resizer child); geometry mirrors the existing
14
+ // Table's resizer `.divider` via the shared `$divider-block-gap`.
15
+ .header-cell:not(:last-child):not(.no-divider)::after {
16
+ content: '';
17
+ position: absolute;
18
+ inset-inline-end: 0;
19
+ inset-block-start: 0;
20
+ inset-block-end: 0;
21
+ min-block-size: awsui.$line-height-heading-xs;
22
+ max-block-size: calc(100% - #{cell-base.$divider-block-gap});
23
+ margin-block: auto;
24
+ border-inline-start: awsui.$border-divider-list-width solid awsui.$color-border-divider-default;
25
+ box-sizing: border-box;
26
+ pointer-events: none;
27
+ }
28
+
29
+ .header-cell.disable-paddings {
30
+ padding-block: 0;
31
+ padding-inline: 0;
32
+ }
33
+
34
+ .header-cell-content {
35
+ padding-block: awsui.$space-scaled-xxs;
36
+ padding-inline-start: awsui.$space-s;
37
+ padding-inline-end: awsui.$space-s;
38
+ line-height: awsui.$line-height-body-m;
39
+ }
40
+
41
+ .header-cell.disable-paddings > .header-cell-content {
42
+ padding-block: 0;
43
+ padding-inline: 0;
44
+ }
45
+
46
+ // VR-gated: the substrate is shared with the existing Table, which still supports non-VR mode.
47
+ .header-cell.is-visual-refresh:first-child > .header-cell-content {
48
+ padding-inline-start: 0;
49
+ }
50
+
51
+ // Stretch to the row track, else an empty control header collapses to ~1px, leaving a stray divider stub.
52
+ .header-cell-grid {
53
+ min-inline-size: 0;
54
+ align-self: stretch;
55
+ display: grid;
56
+ align-items: center;
57
+ }
@@ -0,0 +1,39 @@
1
+ /*
2
+ Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
3
+ SPDX-License-Identifier: Apache-2.0
4
+ */
5
+
6
+ @use '../internal/styles/index' as styles;
7
+ @use '../internal/styles/tokens' as awsui;
8
+ @use '@cloudscape-design/component-toolkit/internal/focus-visible' as focus-visible;
9
+
10
+ .root {
11
+ @include styles.styles-reset;
12
+ position: relative;
13
+ display: flex;
14
+ flex-direction: column;
15
+ inline-size: 100%;
16
+ background: awsui.$color-background-container-content;
17
+ }
18
+
19
+ .body-scroller {
20
+ overflow-x: auto;
21
+ @include focus-visible.when-visible {
22
+ @include styles.container-focus();
23
+ }
24
+ }
25
+
26
+ .table {
27
+ inline-size: 100%;
28
+ // Separate borders: the collapsed model breaks sticky columns and blurs the selected-row outline corners.
29
+ border-collapse: separate;
30
+ border-spacing: 0;
31
+ }
32
+
33
+ .table-auto {
34
+ table-layout: auto;
35
+ }
36
+
37
+ .table-grid {
38
+ display: block;
39
+ }
@@ -0,0 +1,47 @@
1
+ /*
2
+ Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
3
+ SPDX-License-Identifier: Apache-2.0
4
+ */
5
+
6
+ @use '../internal/styles/tokens' as awsui;
7
+
8
+ .row {
9
+ position: relative;
10
+ box-sizing: border-box;
11
+ }
12
+
13
+ .row-grid {
14
+ display: grid;
15
+ inline-size: 100%;
16
+ align-items: center;
17
+ }
18
+
19
+ // Selection outline drawn as a layout-neutral `::after` on the row. Scoped to the hashed `.row` (not the
20
+ // bare `data-awsui-selected` attribute) so it can't leak onto unrelated consumer elements. In grid mode
21
+ // the abs-pos `::after` is a grid item — its containing block is the column tracks, so `inset:0` hugs the
22
+ // columns (stops at underfill, follows overflow); auto mode falls back to the row box.
23
+ .row[data-awsui-selected]::after {
24
+ content: '';
25
+ position: absolute;
26
+ inset: 0;
27
+ grid-column: 1 / -1;
28
+ grid-row: 1;
29
+ border-block-start: awsui.$border-width-item-selected solid awsui.$color-border-item-selected;
30
+ border-block-end: awsui.$border-width-item-selected solid awsui.$color-border-item-selected;
31
+ border-inline-start: awsui.$border-width-item-selected solid awsui.$color-border-item-selected;
32
+ border-inline-end: awsui.$border-width-item-selected solid awsui.$color-border-item-selected;
33
+ border-start-start-radius: awsui.$border-radius-item;
34
+ border-start-end-radius: awsui.$border-radius-item;
35
+ border-end-start-radius: awsui.$border-radius-item;
36
+ border-end-end-radius: awsui.$border-radius-item;
37
+ pointer-events: none;
38
+ }
39
+ .row[data-awsui-selected]:has(+ .row[data-awsui-selected])::after {
40
+ border-end-start-radius: 0;
41
+ border-end-end-radius: 0;
42
+ }
43
+ .row[data-awsui-selected] + .row[data-awsui-selected]::after {
44
+ border-block-start-width: 0;
45
+ border-start-start-radius: 0;
46
+ border-start-end-radius: 0;
47
+ }