@cloudscape-design/components-themeable 3.0.1330 → 3.0.1332

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 (34) 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/steps/styles.scss +7 -3
  4. package/lib/internal/template/internal/base-component/styles.scoped.css +1 -1
  5. package/lib/internal/template/internal/environment.js +2 -2
  6. package/lib/internal/template/internal/environment.json +2 -2
  7. package/lib/internal/template/internal/utils/date-time/format-date-localized.d.ts.map +1 -1
  8. package/lib/internal/template/internal/utils/date-time/format-date-localized.js +4 -3
  9. package/lib/internal/template/internal/utils/date-time/format-date-localized.js.map +1 -1
  10. package/lib/internal/template/internal/utils/date-time/intl-date-time-format-cache.d.ts +2 -0
  11. package/lib/internal/template/internal/utils/date-time/intl-date-time-format-cache.d.ts.map +1 -0
  12. package/lib/internal/template/internal/utils/date-time/intl-date-time-format-cache.js +27 -0
  13. package/lib/internal/template/internal/utils/date-time/intl-date-time-format-cache.js.map +1 -0
  14. package/lib/internal/template/steps/index.d.ts +1 -1
  15. package/lib/internal/template/steps/index.d.ts.map +1 -1
  16. package/lib/internal/template/steps/index.js +5 -3
  17. package/lib/internal/template/steps/index.js.map +1 -1
  18. package/lib/internal/template/steps/interfaces.d.ts +7 -0
  19. package/lib/internal/template/steps/interfaces.d.ts.map +1 -1
  20. package/lib/internal/template/steps/interfaces.js.map +1 -1
  21. package/lib/internal/template/steps/internal.d.ts +2 -2
  22. package/lib/internal/template/steps/internal.d.ts.map +1 -1
  23. package/lib/internal/template/steps/internal.js +11 -8
  24. package/lib/internal/template/steps/internal.js.map +1 -1
  25. package/lib/internal/template/steps/styles.css.js +13 -12
  26. package/lib/internal/template/steps/styles.scoped.css +27 -22
  27. package/lib/internal/template/steps/styles.selectors.js +13 -12
  28. package/lib/internal/template/table/internal.d.ts.map +1 -1
  29. package/lib/internal/template/table/internal.js +16 -17
  30. package/lib/internal/template/table/internal.js.map +1 -1
  31. package/lib/internal/template/table/use-column-widths.d.ts.map +1 -1
  32. package/lib/internal/template/table/use-column-widths.js +26 -6
  33. package/lib/internal/template/table/use-column-widths.js.map +1 -1
  34. package/package.json +1 -1
@@ -1,3 +1,3 @@
1
1
  {
2
- "commit": "9ef475158bf1a6dcf2f1e318d73c5cecd52610ee"
2
+ "commit": "1834b88ba2f931cd464f73584e916938740e2b12"
3
3
  }
@@ -1,6 +1,6 @@
1
1
 
2
2
  // Build environment
3
- $awsui-commit-hash: "9ef47515";
3
+ $awsui-commit-hash: "1834b88b";
4
4
  // Manually managed CSS-variables
5
5
  $maxContentWidth: --awsui-max-content-width-z17rmd;
6
6
  $minContentWidth: --awsui-min-content-width-z17rmd;
@@ -6,6 +6,13 @@
6
6
  @use '../internal/styles/tokens' as awsui;
7
7
  @use '../internal/styles' as styles;
8
8
 
9
+ .connector {
10
+ background-color: awsui.$color-border-divider-default;
11
+ }
12
+ .connector.connector-hidden {
13
+ background-color: transparent;
14
+ }
15
+
9
16
  .root {
10
17
  @include styles.styles-reset;
11
18
  @include styles.text-wrapping;
@@ -37,7 +44,6 @@
37
44
  > .connector {
38
45
  grid-row: 2;
39
46
  grid-column: 1;
40
- background-color: awsui.$color-border-divider-default;
41
47
  margin-block: 0;
42
48
  border-block: 0;
43
49
  border-inline: 0;
@@ -82,7 +88,6 @@
82
88
  > .connector {
83
89
  display: block;
84
90
  flex: 1;
85
- background-color: awsui.$color-border-divider-default;
86
91
  margin-block: 0;
87
92
  border-block: 0;
88
93
  border-inline: 0;
@@ -134,7 +139,6 @@
134
139
  grid-row: auto;
135
140
  grid-column: auto;
136
141
  flex: 1 1 auto;
137
- background-color: awsui.$color-border-divider-default;
138
142
  border-block: 0;
139
143
  border-inline: 0;
140
144
  inline-size: awsui.$border-divider-list-width;
@@ -3981,5 +3981,5 @@
3981
3981
  }
3982
3982
  }
3983
3983
  :root {
3984
- --awsui-version-info-9ef47515: true;
3984
+ --awsui-version-info-1834b88b: true;
3985
3985
  }
@@ -1,6 +1,6 @@
1
1
  export var PACKAGE_SOURCE = "components";
2
- export var PACKAGE_VERSION = "3.0.0 (9ef47515)";
3
- export var GIT_SHA = "9ef47515";
2
+ export var PACKAGE_VERSION = "3.0.0 (1834b88b)";
3
+ export var GIT_SHA = "1834b88b";
4
4
  export var THEME = "open-source-visual-refresh";
5
5
  export var SYSTEM = "core";
6
6
  export var ALWAYS_VISUAL_REFRESH = true;
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "PACKAGE_SOURCE": "components",
3
- "PACKAGE_VERSION": "3.0.0 (9ef47515)",
4
- "GIT_SHA": "9ef47515",
3
+ "PACKAGE_VERSION": "3.0.0 (1834b88b)",
4
+ "GIT_SHA": "1834b88b",
5
5
  "THEME": "default",
6
6
  "SYSTEM": "core",
7
7
  "ALWAYS_VISUAL_REFRESH": false,
@@ -1 +1 @@
1
- {"version":3,"file":"format-date-localized.d.ts","sourceRoot":"","sources":["../../../../../src/internal/utils/date-time/format-date-localized.ts"],"names":[],"mappings":"AAMA,MAAM,CAAC,OAAO,UAAU,mBAAmB,CAAC,EAC1C,IAAI,EAAE,OAAO,EACb,cAAc,EACd,UAAU,EACV,WAAW,EACX,UAAU,EACV,MAAM,GACP,EAAE;IACD,IAAI,EAAE,MAAM,CAAC;IACb,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,WAAW,EAAE,OAAO,CAAC;IACrB,UAAU,EAAE,OAAO,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,UAyCA"}
1
+ {"version":3,"file":"format-date-localized.d.ts","sourceRoot":"","sources":["../../../../../src/internal/utils/date-time/format-date-localized.ts"],"names":[],"mappings":"AAOA,MAAM,CAAC,OAAO,UAAU,mBAAmB,CAAC,EAC1C,IAAI,EAAE,OAAO,EACb,cAAc,EACd,UAAU,EACV,WAAW,EACX,UAAU,EACV,MAAM,GACP,EAAE;IACD,IAAI,EAAE,MAAM,CAAC;IACb,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,WAAW,EAAE,OAAO,CAAC;IACrB,UAAU,EAAE,OAAO,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,UAyCA"}
@@ -2,6 +2,7 @@
2
2
  // SPDX-License-Identifier: Apache-2.0
3
3
  import { isValid, parseISO } from 'date-fns';
4
4
  import { formatTimeOffsetLocalized } from './format-time-offset';
5
+ import { getDateTimeFormat } from './intl-date-time-format-cache';
5
6
  export default function formatDateLocalized({ date: isoDate, hideTimeOffset, isDateOnly, isMonthOnly, timeOffset, locale, }) {
6
7
  let date = parseISO(isoDate);
7
8
  // if the date is not ISO formatted, fallback to built-in date parsing
@@ -9,13 +10,13 @@ export default function formatDateLocalized({ date: isoDate, hideTimeOffset, isD
9
10
  date = new Date(isoDate);
10
11
  }
11
12
  if (isMonthOnly) {
12
- const formattedMonthDate = new Intl.DateTimeFormat(locale, {
13
+ const formattedMonthDate = getDateTimeFormat(locale, {
13
14
  month: 'long',
14
15
  year: 'numeric',
15
16
  }).format(date);
16
17
  return formattedMonthDate;
17
18
  }
18
- const formattedDate = new Intl.DateTimeFormat(locale, {
19
+ const formattedDate = getDateTimeFormat(locale, {
19
20
  month: 'long',
20
21
  year: 'numeric',
21
22
  day: 'numeric',
@@ -23,7 +24,7 @@ export default function formatDateLocalized({ date: isoDate, hideTimeOffset, isD
23
24
  if (isDateOnly) {
24
25
  return formattedDate;
25
26
  }
26
- const formattedTime = new Intl.DateTimeFormat(locale, {
27
+ const formattedTime = getDateTimeFormat(locale, {
27
28
  hour: '2-digit',
28
29
  hourCycle: 'h23',
29
30
  minute: '2-digit',
@@ -1 +1 @@
1
- {"version":3,"file":"format-date-localized.js","sourceRoot":"","sources":["../../../../../src/internal/utils/date-time/format-date-localized.ts"],"names":[],"mappings":"AAAA,qEAAqE;AACrE,sCAAsC;AACtC,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AAE7C,OAAO,EAAE,yBAAyB,EAAE,MAAM,sBAAsB,CAAC;AAEjE,MAAM,CAAC,OAAO,UAAU,mBAAmB,CAAC,EAC1C,IAAI,EAAE,OAAO,EACb,cAAc,EACd,UAAU,EACV,WAAW,EACX,UAAU,EACV,MAAM,GAQP;IACC,IAAI,IAAI,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC;IAC7B,sEAAsE;IACtE,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;QACnB,IAAI,GAAG,IAAI,IAAI,CAAC,OAAO,CAAC,CAAC;IAC3B,CAAC;IAED,IAAI,WAAW,EAAE,CAAC;QAChB,MAAM,kBAAkB,GAAG,IAAI,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE;YACzD,KAAK,EAAE,MAAM;YACb,IAAI,EAAE,SAAS;SAChB,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAEhB,OAAO,kBAAkB,CAAC;IAC5B,CAAC;IAED,MAAM,aAAa,GAAG,IAAI,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE;QACpD,KAAK,EAAE,MAAM;QACb,IAAI,EAAE,SAAS;QACf,GAAG,EAAE,SAAS;KACf,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAEhB,IAAI,UAAU,EAAE,CAAC;QACf,OAAO,aAAa,CAAC;IACvB,CAAC;IAED,MAAM,aAAa,GAAG,IAAI,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE;QACpD,IAAI,EAAE,SAAS;QACf,SAAS,EAAE,KAAK;QAChB,MAAM,EAAE,SAAS;QACjB,MAAM,EAAE,SAAS;KAClB,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAEhB,MAAM,iBAAiB,GAAG,aAAa,GAAG,oBAAoB,CAAC,MAAM,CAAC,GAAG,aAAa,CAAC;IAEvF,IAAI,cAAc,EAAE,CAAC;QACnB,OAAO,iBAAiB,CAAC;IAC3B,CAAC;IAED,MAAM,mBAAmB,GAAG,yBAAyB,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;IAC3E,OAAO,iBAAiB,GAAG,GAAG,GAAG,mBAAmB,CAAC;AACvD,CAAC;AAED,kFAAkF;AAClF,MAAM,iCAAiC,GAAG,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;AAEnE,SAAS,oBAAoB,CAAC,MAAe;IAC3C,OAAO,MAAM,IAAI,iCAAiC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC;AACnF,CAAC","sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { isValid, parseISO } from 'date-fns';\n\nimport { formatTimeOffsetLocalized } from './format-time-offset';\n\nexport default function formatDateLocalized({\n date: isoDate,\n hideTimeOffset,\n isDateOnly,\n isMonthOnly,\n timeOffset,\n locale,\n}: {\n date: string;\n hideTimeOffset?: boolean;\n isMonthOnly: boolean;\n isDateOnly: boolean;\n timeOffset?: number;\n locale?: string;\n}) {\n let date = parseISO(isoDate);\n // if the date is not ISO formatted, fallback to built-in date parsing\n if (!isValid(date)) {\n date = new Date(isoDate);\n }\n\n if (isMonthOnly) {\n const formattedMonthDate = new Intl.DateTimeFormat(locale, {\n month: 'long',\n year: 'numeric',\n }).format(date);\n\n return formattedMonthDate;\n }\n\n const formattedDate = new Intl.DateTimeFormat(locale, {\n month: 'long',\n year: 'numeric',\n day: 'numeric',\n }).format(date);\n\n if (isDateOnly) {\n return formattedDate;\n }\n\n const formattedTime = new Intl.DateTimeFormat(locale, {\n hour: '2-digit',\n hourCycle: 'h23',\n minute: '2-digit',\n second: '2-digit',\n }).format(date);\n\n const formattedDateTime = formattedDate + getDateTimeSeparator(locale) + formattedTime;\n\n if (hideTimeOffset) {\n return formattedDateTime;\n }\n\n const formattedTimeOffset = formatTimeOffsetLocalized(isoDate, timeOffset);\n return formattedDateTime + ' ' + formattedTimeOffset;\n}\n\n// Languages in which date and time are separated just with a space, without comma\nconst languagesWithoutDateTimeSeparator = ['ja', 'zh-CN', 'zh-TW'];\n\nfunction getDateTimeSeparator(locale?: string) {\n return locale && languagesWithoutDateTimeSeparator.includes(locale) ? ' ' : ', ';\n}\n"]}
1
+ {"version":3,"file":"format-date-localized.js","sourceRoot":"","sources":["../../../../../src/internal/utils/date-time/format-date-localized.ts"],"names":[],"mappings":"AAAA,qEAAqE;AACrE,sCAAsC;AACtC,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AAE7C,OAAO,EAAE,yBAAyB,EAAE,MAAM,sBAAsB,CAAC;AACjE,OAAO,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AAElE,MAAM,CAAC,OAAO,UAAU,mBAAmB,CAAC,EAC1C,IAAI,EAAE,OAAO,EACb,cAAc,EACd,UAAU,EACV,WAAW,EACX,UAAU,EACV,MAAM,GAQP;IACC,IAAI,IAAI,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC;IAC7B,sEAAsE;IACtE,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;QACnB,IAAI,GAAG,IAAI,IAAI,CAAC,OAAO,CAAC,CAAC;IAC3B,CAAC;IAED,IAAI,WAAW,EAAE,CAAC;QAChB,MAAM,kBAAkB,GAAG,iBAAiB,CAAC,MAAM,EAAE;YACnD,KAAK,EAAE,MAAM;YACb,IAAI,EAAE,SAAS;SAChB,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAEhB,OAAO,kBAAkB,CAAC;IAC5B,CAAC;IAED,MAAM,aAAa,GAAG,iBAAiB,CAAC,MAAM,EAAE;QAC9C,KAAK,EAAE,MAAM;QACb,IAAI,EAAE,SAAS;QACf,GAAG,EAAE,SAAS;KACf,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAEhB,IAAI,UAAU,EAAE,CAAC;QACf,OAAO,aAAa,CAAC;IACvB,CAAC;IAED,MAAM,aAAa,GAAG,iBAAiB,CAAC,MAAM,EAAE;QAC9C,IAAI,EAAE,SAAS;QACf,SAAS,EAAE,KAAK;QAChB,MAAM,EAAE,SAAS;QACjB,MAAM,EAAE,SAAS;KAClB,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAEhB,MAAM,iBAAiB,GAAG,aAAa,GAAG,oBAAoB,CAAC,MAAM,CAAC,GAAG,aAAa,CAAC;IAEvF,IAAI,cAAc,EAAE,CAAC;QACnB,OAAO,iBAAiB,CAAC;IAC3B,CAAC;IAED,MAAM,mBAAmB,GAAG,yBAAyB,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;IAC3E,OAAO,iBAAiB,GAAG,GAAG,GAAG,mBAAmB,CAAC;AACvD,CAAC;AAED,kFAAkF;AAClF,MAAM,iCAAiC,GAAG,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;AAEnE,SAAS,oBAAoB,CAAC,MAAe;IAC3C,OAAO,MAAM,IAAI,iCAAiC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC;AACnF,CAAC","sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { isValid, parseISO } from 'date-fns';\n\nimport { formatTimeOffsetLocalized } from './format-time-offset';\nimport { getDateTimeFormat } from './intl-date-time-format-cache';\n\nexport default function formatDateLocalized({\n date: isoDate,\n hideTimeOffset,\n isDateOnly,\n isMonthOnly,\n timeOffset,\n locale,\n}: {\n date: string;\n hideTimeOffset?: boolean;\n isMonthOnly: boolean;\n isDateOnly: boolean;\n timeOffset?: number;\n locale?: string;\n}) {\n let date = parseISO(isoDate);\n // if the date is not ISO formatted, fallback to built-in date parsing\n if (!isValid(date)) {\n date = new Date(isoDate);\n }\n\n if (isMonthOnly) {\n const formattedMonthDate = getDateTimeFormat(locale, {\n month: 'long',\n year: 'numeric',\n }).format(date);\n\n return formattedMonthDate;\n }\n\n const formattedDate = getDateTimeFormat(locale, {\n month: 'long',\n year: 'numeric',\n day: 'numeric',\n }).format(date);\n\n if (isDateOnly) {\n return formattedDate;\n }\n\n const formattedTime = getDateTimeFormat(locale, {\n hour: '2-digit',\n hourCycle: 'h23',\n minute: '2-digit',\n second: '2-digit',\n }).format(date);\n\n const formattedDateTime = formattedDate + getDateTimeSeparator(locale) + formattedTime;\n\n if (hideTimeOffset) {\n return formattedDateTime;\n }\n\n const formattedTimeOffset = formatTimeOffsetLocalized(isoDate, timeOffset);\n return formattedDateTime + ' ' + formattedTimeOffset;\n}\n\n// Languages in which date and time are separated just with a space, without comma\nconst languagesWithoutDateTimeSeparator = ['ja', 'zh-CN', 'zh-TW'];\n\nfunction getDateTimeSeparator(locale?: string) {\n return locale && languagesWithoutDateTimeSeparator.includes(locale) ? ' ' : ', ';\n}\n"]}
@@ -0,0 +1,2 @@
1
+ export declare function getDateTimeFormat(locale: string | undefined, options: Intl.DateTimeFormatOptions): Intl.DateTimeFormat;
2
+ //# sourceMappingURL=intl-date-time-format-cache.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"intl-date-time-format-cache.d.ts","sourceRoot":"","sources":["../../../../../src/internal/utils/date-time/intl-date-time-format-cache.ts"],"names":[],"mappings":"AAUA,wBAAgB,iBAAiB,CAC/B,MAAM,EAAE,MAAM,GAAG,SAAS,EAC1B,OAAO,EAAE,IAAI,CAAC,qBAAqB,GAClC,IAAI,CAAC,cAAc,CAWrB"}
@@ -0,0 +1,27 @@
1
+ // Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
2
+ // SPDX-License-Identifier: Apache-2.0
3
+ // Constructing Intl.DateTimeFormat is expensive (the browser parses locale data and
4
+ // resolves options), so we cache instances keyed by locale and options for reuse.
5
+ // No eviction: the number of unique locale/option combinations in an application is
6
+ // small and bounded.
7
+ const formatterCache = new Map();
8
+ export function getDateTimeFormat(locale, options) {
9
+ const cacheKey = createCacheKey(locale, options);
10
+ const cached = formatterCache.get(cacheKey);
11
+ if (cached) {
12
+ return cached;
13
+ }
14
+ const formatter = new Intl.DateTimeFormat(locale, options);
15
+ formatterCache.set(cacheKey, formatter);
16
+ return formatter;
17
+ }
18
+ // Options are sorted by key so the cache hits regardless of property order.
19
+ function createCacheKey(locale, options) {
20
+ const localeKey = locale !== null && locale !== void 0 ? locale : '';
21
+ const optionsKey = Object.keys(options)
22
+ .sort()
23
+ .map(key => `${key}:${options[key]}`)
24
+ .join(',');
25
+ return `${localeKey}|${optionsKey}`;
26
+ }
27
+ //# sourceMappingURL=intl-date-time-format-cache.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"intl-date-time-format-cache.js","sourceRoot":"","sources":["../../../../../src/internal/utils/date-time/intl-date-time-format-cache.ts"],"names":[],"mappings":"AAAA,qEAAqE;AACrE,sCAAsC;AAEtC,oFAAoF;AACpF,kFAAkF;AAElF,oFAAoF;AACpF,qBAAqB;AACrB,MAAM,cAAc,GAAG,IAAI,GAAG,EAA+B,CAAC;AAE9D,MAAM,UAAU,iBAAiB,CAC/B,MAA0B,EAC1B,OAAmC;IAEnC,MAAM,QAAQ,GAAG,cAAc,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACjD,MAAM,MAAM,GAAG,cAAc,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IAE5C,IAAI,MAAM,EAAE,CAAC;QACX,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,MAAM,SAAS,GAAG,IAAI,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC3D,cAAc,CAAC,GAAG,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;IACxC,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,4EAA4E;AAC5E,SAAS,cAAc,CAAC,MAA0B,EAAE,OAAmC;IACrF,MAAM,SAAS,GAAG,MAAM,aAAN,MAAM,cAAN,MAAM,GAAI,EAAE,CAAC;IAC/B,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC;SACpC,IAAI,EAAE;SACN,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,OAAO,CAAC,GAAuC,CAAC,EAAE,CAAC;SACxE,IAAI,CAAC,GAAG,CAAC,CAAC;IACb,OAAO,GAAG,SAAS,IAAI,UAAU,EAAE,CAAC;AACtC,CAAC","sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\n// Constructing Intl.DateTimeFormat is expensive (the browser parses locale data and\n// resolves options), so we cache instances keyed by locale and options for reuse.\n\n// No eviction: the number of unique locale/option combinations in an application is\n// small and bounded.\nconst formatterCache = new Map<string, Intl.DateTimeFormat>();\n\nexport function getDateTimeFormat(\n locale: string | undefined,\n options: Intl.DateTimeFormatOptions\n): Intl.DateTimeFormat {\n const cacheKey = createCacheKey(locale, options);\n const cached = formatterCache.get(cacheKey);\n\n if (cached) {\n return cached;\n }\n\n const formatter = new Intl.DateTimeFormat(locale, options);\n formatterCache.set(cacheKey, formatter);\n return formatter;\n}\n\n// Options are sorted by key so the cache hits regardless of property order.\nfunction createCacheKey(locale: string | undefined, options: Intl.DateTimeFormatOptions): string {\n const localeKey = locale ?? '';\n const optionsKey = Object.keys(options)\n .sort()\n .map(key => `${key}:${options[key as keyof Intl.DateTimeFormatOptions]}`)\n .join(',');\n return `${localeKey}|${optionsKey}`;\n}\n"]}
@@ -1,5 +1,5 @@
1
1
  import { StepsProps } from './interfaces';
2
2
  export { StepsProps };
3
- declare const Steps: ({ steps, ...props }: StepsProps) => JSX.Element;
3
+ declare const Steps: ({ steps, orientation, connectorLines, ...props }: StepsProps) => JSX.Element;
4
4
  export default Steps;
5
5
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/steps/index.tsx"],"names":[],"mappings":"AASA,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAG1C,OAAO,EAAE,UAAU,EAAE,CAAC;AAEtB,QAAA,MAAM,KAAK,GAAI,qBAAqB,UAAU,gBAM7C,CAAC;AAGF,eAAe,KAAK,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/steps/index.tsx"],"names":[],"mappings":"AASA,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAG1C,OAAO,EAAE,UAAU,EAAE,CAAC;AAEtB,QAAA,MAAM,KAAK,GAAI,kDAA2E,UAAU,gBAiBnG,CAAC;AAGF,eAAe,KAAK,CAAC"}
@@ -7,11 +7,13 @@ import useBaseComponent from '../internal/hooks/use-base-component';
7
7
  import { applyDisplayName } from '../internal/utils/apply-display-name';
8
8
  import { getExternalProps } from '../internal/utils/external-props';
9
9
  import InternalSteps from './internal';
10
- const Steps = ({ steps, ...props }) => {
10
+ const Steps = ({ steps, orientation = 'vertical', connectorLines = 'visible', ...props }) => {
11
11
  const baseProps = getBaseProps(props);
12
- const baseComponentProps = useBaseComponent('Steps');
12
+ const baseComponentProps = useBaseComponent('Steps', {
13
+ props: { orientation, connectorLines },
14
+ });
13
15
  const externalProps = getExternalProps(props);
14
- return React.createElement(InternalSteps, { ...baseProps, ...baseComponentProps, ...externalProps, steps: steps });
16
+ return (React.createElement(InternalSteps, { ...baseProps, ...baseComponentProps, ...externalProps, steps: steps, orientation: orientation, connectorLines: connectorLines }));
15
17
  };
16
18
  applyDisplayName(Steps, 'Steps');
17
19
  export default Steps;
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/steps/index.tsx"],"names":[],"mappings":"AAAA,qEAAqE;AACrE,sCAAsC;AACtC,YAAY,CAAC;AACb,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC1D,OAAO,gBAAgB,MAAM,sCAAsC,CAAC;AACpE,OAAO,EAAE,gBAAgB,EAAE,MAAM,sCAAsC,CAAC;AACxE,OAAO,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAC;AAEpE,OAAO,aAAa,MAAM,YAAY,CAAC;AAIvC,MAAM,KAAK,GAAG,CAAC,EAAE,KAAK,EAAE,GAAG,KAAK,EAAc,EAAE,EAAE;IAChD,MAAM,SAAS,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC;IACtC,MAAM,kBAAkB,GAAG,gBAAgB,CAAC,OAAO,CAAC,CAAC;IACrD,MAAM,aAAa,GAAG,gBAAgB,CAAC,KAAK,CAAC,CAAC;IAE9C,OAAO,oBAAC,aAAa,OAAK,SAAS,KAAM,kBAAkB,KAAM,aAAa,EAAE,KAAK,EAAE,KAAK,GAAI,CAAC;AACnG,CAAC,CAAC;AAEF,gBAAgB,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;AACjC,eAAe,KAAK,CAAC","sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n'use client';\nimport React from 'react';\n\nimport { getBaseProps } from '../internal/base-component';\nimport useBaseComponent from '../internal/hooks/use-base-component';\nimport { applyDisplayName } from '../internal/utils/apply-display-name';\nimport { getExternalProps } from '../internal/utils/external-props';\nimport { StepsProps } from './interfaces';\nimport InternalSteps from './internal';\n\nexport { StepsProps };\n\nconst Steps = ({ steps, ...props }: StepsProps) => {\n const baseProps = getBaseProps(props);\n const baseComponentProps = useBaseComponent('Steps');\n const externalProps = getExternalProps(props);\n\n return <InternalSteps {...baseProps} {...baseComponentProps} {...externalProps} steps={steps} />;\n};\n\napplyDisplayName(Steps, 'Steps');\nexport default Steps;\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/steps/index.tsx"],"names":[],"mappings":"AAAA,qEAAqE;AACrE,sCAAsC;AACtC,YAAY,CAAC;AACb,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC1D,OAAO,gBAAgB,MAAM,sCAAsC,CAAC;AACpE,OAAO,EAAE,gBAAgB,EAAE,MAAM,sCAAsC,CAAC;AACxE,OAAO,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAC;AAEpE,OAAO,aAAa,MAAM,YAAY,CAAC;AAIvC,MAAM,KAAK,GAAG,CAAC,EAAE,KAAK,EAAE,WAAW,GAAG,UAAU,EAAE,cAAc,GAAG,SAAS,EAAE,GAAG,KAAK,EAAc,EAAE,EAAE;IACtG,MAAM,SAAS,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC;IACtC,MAAM,kBAAkB,GAAG,gBAAgB,CAAC,OAAO,EAAE;QACnD,KAAK,EAAE,EAAE,WAAW,EAAE,cAAc,EAAE;KACvC,CAAC,CAAC;IACH,MAAM,aAAa,GAAG,gBAAgB,CAAC,KAAK,CAAC,CAAC;IAE9C,OAAO,CACL,oBAAC,aAAa,OACR,SAAS,KACT,kBAAkB,KAClB,aAAa,EACjB,KAAK,EAAE,KAAK,EACZ,WAAW,EAAE,WAAW,EACxB,cAAc,EAAE,cAAc,GAC9B,CACH,CAAC;AACJ,CAAC,CAAC;AAEF,gBAAgB,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;AACjC,eAAe,KAAK,CAAC","sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n'use client';\nimport React from 'react';\n\nimport { getBaseProps } from '../internal/base-component';\nimport useBaseComponent from '../internal/hooks/use-base-component';\nimport { applyDisplayName } from '../internal/utils/apply-display-name';\nimport { getExternalProps } from '../internal/utils/external-props';\nimport { StepsProps } from './interfaces';\nimport InternalSteps from './internal';\n\nexport { StepsProps };\n\nconst Steps = ({ steps, orientation = 'vertical', connectorLines = 'visible', ...props }: StepsProps) => {\n const baseProps = getBaseProps(props);\n const baseComponentProps = useBaseComponent('Steps', {\n props: { orientation, connectorLines },\n });\n const externalProps = getExternalProps(props);\n\n return (\n <InternalSteps\n {...baseProps}\n {...baseComponentProps}\n {...externalProps}\n steps={steps}\n orientation={orientation}\n connectorLines={connectorLines}\n />\n );\n};\n\napplyDisplayName(Steps, 'Steps');\nexport default Steps;\n"]}
@@ -16,6 +16,12 @@ export interface StepsProps extends BaseComponentProps {
16
16
  * By default the orientation is vertical.
17
17
  */
18
18
  orientation?: StepsProps.Orientation;
19
+ /**
20
+ * Determines whether the connector lines between steps are displayed. The following variants are available:
21
+ * * `visible` - Shows connector lines between consecutive steps.
22
+ * * `none` - Hides the connector lines between steps.
23
+ */
24
+ connectorLines?: StepsProps.ConnectorLinesVariant;
19
25
  /**
20
26
  * Render a step. This overrides the default icon, header, and details provided by the component.
21
27
  * The function is called for each step and should return an object with the following keys:
@@ -53,5 +59,6 @@ export declare namespace StepsProps {
53
59
  details?: React.ReactNode;
54
60
  }
55
61
  type Orientation = 'vertical' | 'horizontal';
62
+ type ConnectorLinesVariant = 'visible' | 'none';
56
63
  }
57
64
  //# sourceMappingURL=interfaces.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"interfaces.d.ts","sourceRoot":"","sources":["../../../src/steps/interfaces.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,oBAAoB,EAAE,MAAM,gCAAgC,CAAC;AACtE,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAE7D,MAAM,WAAW,UAAW,SAAQ,kBAAkB;IACpD;;;;;;;;OAQG;IACH,KAAK,EAAE,aAAa,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;IACtC;;;OAGG;IACH,WAAW,CAAC,EAAE,UAAU,CAAC,WAAW,CAAC;IACrC;;;;;;OAMG;IACH,UAAU,CAAC,EAAE,CAAC,IAAI,EAAE,UAAU,CAAC,IAAI,KAAK;QACtC,MAAM,EAAE,KAAK,CAAC,SAAS,CAAC;QACxB,OAAO,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;QAC1B,IAAI,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;KACxB,CAAC;IACF;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;;OAIG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB;;OAEG;IACH,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,yBAAiB,UAAU,CAAC;IAC1B,KAAY,MAAM,GAAG,oBAAoB,CAAC,IAAI,CAAC;IAE/C,UAAiB,IAAI;QACnB,MAAM,EAAE,MAAM,CAAC;QACf,mBAAmB,CAAC,EAAE,MAAM,CAAC;QAC7B,MAAM,EAAE,KAAK,CAAC,SAAS,CAAC;QACxB,OAAO,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;KAC3B;IAED,KAAY,WAAW,GAAG,UAAU,GAAG,YAAY,CAAC;CACrD"}
1
+ {"version":3,"file":"interfaces.d.ts","sourceRoot":"","sources":["../../../src/steps/interfaces.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,oBAAoB,EAAE,MAAM,gCAAgC,CAAC;AACtE,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAE7D,MAAM,WAAW,UAAW,SAAQ,kBAAkB;IACpD;;;;;;;;OAQG;IACH,KAAK,EAAE,aAAa,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;IACtC;;;OAGG;IACH,WAAW,CAAC,EAAE,UAAU,CAAC,WAAW,CAAC;IACrC;;;;OAIG;IACH,cAAc,CAAC,EAAE,UAAU,CAAC,qBAAqB,CAAC;IAClD;;;;;;OAMG;IACH,UAAU,CAAC,EAAE,CAAC,IAAI,EAAE,UAAU,CAAC,IAAI,KAAK;QACtC,MAAM,EAAE,KAAK,CAAC,SAAS,CAAC;QACxB,OAAO,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;QAC1B,IAAI,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;KACxB,CAAC;IACF;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;;OAIG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB;;OAEG;IACH,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,yBAAiB,UAAU,CAAC;IAC1B,KAAY,MAAM,GAAG,oBAAoB,CAAC,IAAI,CAAC;IAE/C,UAAiB,IAAI;QACnB,MAAM,EAAE,MAAM,CAAC;QACf,mBAAmB,CAAC,EAAE,MAAM,CAAC;QAC7B,MAAM,EAAE,KAAK,CAAC,SAAS,CAAC;QACxB,OAAO,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;KAC3B;IAED,KAAY,WAAW,GAAG,UAAU,GAAG,YAAY,CAAC;IAEpD,KAAY,qBAAqB,GAAG,SAAS,GAAG,MAAM,CAAC;CACxD"}
@@ -1 +1 @@
1
- {"version":3,"file":"interfaces.js","sourceRoot":"","sources":["../../../src/steps/interfaces.ts"],"names":[],"mappings":"","sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { StatusIndicatorProps } from '../status-indicator/interfaces';\nimport { BaseComponentProps } from '../types/base-component';\n\nexport interface StepsProps extends BaseComponentProps {\n /**\n * An array of individual steps\n *\n * Each step definition has the following properties:\n * * `status` (string) - Status of the step corresponding to a status indicator.\n * * `statusIconAriaLabel` - (string) - (Optional) Alternative text for the status icon.\n * * `header` (ReactNode) - Summary corresponding to the step.\n * * `details` (ReactNode) - (Optional) Additional information corresponding to the step.\n */\n steps: ReadonlyArray<StepsProps.Step>;\n /**\n * The visual orientation of the steps (vertical or horizontal).\n * By default the orientation is vertical.\n */\n orientation?: StepsProps.Orientation;\n /**\n * Render a step. This overrides the default icon, header, and details provided by the component.\n * The function is called for each step and should return an object with the following keys:\n * * `header` (React.ReactNode) - Summary corresponding to the step.\n * * `details` (React.ReactNode) - (Optional) Additional information corresponding to the step.\n * * `icon` (React.ReactNode) - (Optional) Replaces the standard step icon from the status indicator.\n */\n renderStep?: (step: StepsProps.Step) => {\n header: React.ReactNode;\n details?: React.ReactNode;\n icon?: React.ReactNode;\n };\n /**\n * Provides an `aria-label` to the progress steps container.\n * Don't use `ariaLabel` and `ariaLabelledby` at the same time.\n */\n ariaLabel?: string;\n /**\n * Sets the `aria-labelledby` property on the progress steps container.\n * If there's a visible label element that you can reference, use this instead of `ariaLabel`.\n * Don't use `ariaLabel` and `ariaLabelledby` at the same time.\n */\n ariaLabelledby?: string;\n /**\n * Sets the `aria-describedby` property on the progress steps container.\n */\n ariaDescribedby?: string;\n}\n\nexport namespace StepsProps {\n export type Status = StatusIndicatorProps.Type;\n\n export interface Step {\n status: Status;\n statusIconAriaLabel?: string;\n header: React.ReactNode;\n details?: React.ReactNode;\n }\n\n export type Orientation = 'vertical' | 'horizontal';\n}\n"]}
1
+ {"version":3,"file":"interfaces.js","sourceRoot":"","sources":["../../../src/steps/interfaces.ts"],"names":[],"mappings":"","sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { StatusIndicatorProps } from '../status-indicator/interfaces';\nimport { BaseComponentProps } from '../types/base-component';\n\nexport interface StepsProps extends BaseComponentProps {\n /**\n * An array of individual steps\n *\n * Each step definition has the following properties:\n * * `status` (string) - Status of the step corresponding to a status indicator.\n * * `statusIconAriaLabel` - (string) - (Optional) Alternative text for the status icon.\n * * `header` (ReactNode) - Summary corresponding to the step.\n * * `details` (ReactNode) - (Optional) Additional information corresponding to the step.\n */\n steps: ReadonlyArray<StepsProps.Step>;\n /**\n * The visual orientation of the steps (vertical or horizontal).\n * By default the orientation is vertical.\n */\n orientation?: StepsProps.Orientation;\n /**\n * Determines whether the connector lines between steps are displayed. The following variants are available:\n * * `visible` - Shows connector lines between consecutive steps.\n * * `none` - Hides the connector lines between steps.\n */\n connectorLines?: StepsProps.ConnectorLinesVariant;\n /**\n * Render a step. This overrides the default icon, header, and details provided by the component.\n * The function is called for each step and should return an object with the following keys:\n * * `header` (React.ReactNode) - Summary corresponding to the step.\n * * `details` (React.ReactNode) - (Optional) Additional information corresponding to the step.\n * * `icon` (React.ReactNode) - (Optional) Replaces the standard step icon from the status indicator.\n */\n renderStep?: (step: StepsProps.Step) => {\n header: React.ReactNode;\n details?: React.ReactNode;\n icon?: React.ReactNode;\n };\n /**\n * Provides an `aria-label` to the progress steps container.\n * Don't use `ariaLabel` and `ariaLabelledby` at the same time.\n */\n ariaLabel?: string;\n /**\n * Sets the `aria-labelledby` property on the progress steps container.\n * If there's a visible label element that you can reference, use this instead of `ariaLabel`.\n * Don't use `ariaLabel` and `ariaLabelledby` at the same time.\n */\n ariaLabelledby?: string;\n /**\n * Sets the `aria-describedby` property on the progress steps container.\n */\n ariaDescribedby?: string;\n}\n\nexport namespace StepsProps {\n export type Status = StatusIndicatorProps.Type;\n\n export interface Step {\n status: Status;\n statusIconAriaLabel?: string;\n header: React.ReactNode;\n details?: React.ReactNode;\n }\n\n export type Orientation = 'vertical' | 'horizontal';\n\n export type ConnectorLinesVariant = 'visible' | 'none';\n}\n"]}
@@ -1,7 +1,7 @@
1
1
  import { InternalBaseComponentProps } from '../internal/hooks/use-base-component';
2
2
  import { SomeRequired } from '../internal/types';
3
3
  import { StepsProps } from './interfaces';
4
- type InternalStepsProps = SomeRequired<StepsProps, 'steps'> & InternalBaseComponentProps;
5
- declare const InternalSteps: ({ steps, orientation, renderStep, ariaLabel, ariaLabelledby, ariaDescribedby, __internalRootRef, ...props }: InternalStepsProps) => JSX.Element;
4
+ type InternalStepsProps = SomeRequired<StepsProps, 'steps' | 'orientation' | 'connectorLines'> & InternalBaseComponentProps;
5
+ declare const InternalSteps: ({ steps, orientation, connectorLines, renderStep, ariaLabel, ariaLabelledby, ariaDescribedby, __internalRootRef, ...props }: InternalStepsProps) => JSX.Element;
6
6
  export default InternalSteps;
7
7
  //# sourceMappingURL=internal.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"internal.d.ts","sourceRoot":"","sources":["../../../src/steps/internal.tsx"],"names":[],"mappings":"AAOA,OAAO,EAAE,0BAA0B,EAAE,MAAM,sCAAsC,CAAC;AAClF,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAEjD,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAI1C,KAAK,kBAAkB,GAAG,YAAY,CAAC,UAAU,EAAE,OAAO,CAAC,GAAG,0BAA0B,CAAC;AA6FzF,QAAA,MAAM,aAAa,GAAI,6GASpB,kBAAkB,gBA8BpB,CAAC;AAEF,eAAe,aAAa,CAAC"}
1
+ {"version":3,"file":"internal.d.ts","sourceRoot":"","sources":["../../../src/steps/internal.tsx"],"names":[],"mappings":"AAOA,OAAO,EAAE,0BAA0B,EAAE,MAAM,sCAAsC,CAAC;AAClF,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAEjD,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAI1C,KAAK,kBAAkB,GAAG,YAAY,CAAC,UAAU,EAAE,OAAO,GAAG,aAAa,GAAG,gBAAgB,CAAC,GAC5F,0BAA0B,CAAC;AAkG7B,QAAA,MAAM,aAAa,GAAI,6HAUpB,kBAAkB,gBAsCpB,CAAC;AAEF,eAAe,aAAa,CAAC"}
@@ -16,15 +16,16 @@ const statusToColor = {
16
16
  loading: 'text-status-inactive',
17
17
  'not-started': 'text-status-inactive',
18
18
  };
19
- const CustomStep = ({ step, orientation, renderStep, }) => {
19
+ const CustomStep = ({ step, orientation, renderStep, hideConnectors, }) => {
20
20
  const { status, statusIconAriaLabel } = step;
21
21
  const { header, details, icon } = renderStep(step);
22
22
  const iconNode = icon ? icon : React.createElement(InternalStatusIcon, { type: status, iconAriaLabel: statusIconAriaLabel });
23
+ const connectorClassName = clsx(styles.connector, hideConnectors && styles['connector-hidden']);
23
24
  if (orientation === 'horizontal') {
24
25
  return (React.createElement("li", { className: styles.container },
25
26
  React.createElement("div", { className: styles.header },
26
27
  iconNode,
27
- React.createElement("hr", { className: styles.connector, role: "none" })),
28
+ React.createElement("hr", { className: connectorClassName, role: "none" })),
28
29
  React.createElement("div", { className: styles['horizontal-header'] }, header),
29
30
  details && React.createElement("div", { className: styles.details }, details)));
30
31
  }
@@ -35,24 +36,26 @@ const CustomStep = ({ step, orientation, renderStep, }) => {
35
36
  return (React.createElement("li", { className: clsx(styles.container, styles['custom-vertical']) },
36
37
  React.createElement("div", { className: styles.rail },
37
38
  iconNode,
38
- React.createElement("hr", { className: styles.connector, role: "none" })),
39
+ React.createElement("hr", { className: connectorClassName, role: "none" })),
39
40
  React.createElement("div", { className: styles.content },
40
41
  React.createElement("div", { className: styles.header }, header),
41
42
  details && React.createElement("div", { className: styles.details }, details))));
42
43
  };
43
- const InternalStep = ({ status, statusIconAriaLabel, header, details, orientation, }) => {
44
+ const InternalStep = ({ status, statusIconAriaLabel, header, details, orientation, hideConnectors, }) => {
45
+ const connectorClassName = clsx(styles.connector, hideConnectors && styles['connector-hidden']);
44
46
  return (React.createElement("li", { className: styles.container },
45
47
  React.createElement("div", { className: styles.header }, orientation === 'vertical' ? (React.createElement(InternalStatusIndicator, { type: status, iconAriaLabel: statusIconAriaLabel }, header)) : (React.createElement(React.Fragment, null,
46
48
  React.createElement(InternalBox, { color: statusToColor[status] },
47
49
  React.createElement(InternalStatusIcon, { type: status, iconAriaLabel: statusIconAriaLabel })),
48
- React.createElement("hr", { className: styles.connector, role: "none" })))),
49
- orientation === 'vertical' ? (React.createElement("hr", { className: styles.connector, role: "none" })) : (React.createElement("div", { className: styles['horizontal-header'] },
50
+ React.createElement("hr", { className: connectorClassName, role: "none" })))),
51
+ orientation === 'vertical' ? (React.createElement("hr", { className: connectorClassName, role: "none" })) : (React.createElement("div", { className: styles['horizontal-header'] },
50
52
  React.createElement(InternalBox, { color: statusToColor[status] }, header))),
51
53
  details && React.createElement("div", { className: styles.details }, details)));
52
54
  };
53
- const InternalSteps = ({ steps, orientation = 'vertical', renderStep, ariaLabel, ariaLabelledby, ariaDescribedby, __internalRootRef, ...props }) => {
55
+ const InternalSteps = ({ steps, orientation, connectorLines, renderStep, ariaLabel, ariaLabelledby, ariaDescribedby, __internalRootRef, ...props }) => {
56
+ const hideConnectors = connectorLines === 'none';
54
57
  return (React.createElement("div", { ...props, className: clsx(styles.root, props.className, orientation === 'horizontal' ? styles.horizontal : styles.vertical), ref: __internalRootRef },
55
- React.createElement("ol", { className: styles.list, "aria-label": ariaLabel, "aria-labelledby": ariaLabelledby, "aria-describedby": ariaDescribedby }, steps.map((step, index) => renderStep ? (React.createElement(CustomStep, { key: index, orientation: orientation, step: step, renderStep: renderStep })) : (React.createElement(InternalStep, { key: index, status: step.status, statusIconAriaLabel: step.statusIconAriaLabel, header: step.header, details: step.details, orientation: orientation }))))));
58
+ React.createElement("ol", { className: styles.list, "aria-label": ariaLabel, "aria-labelledby": ariaLabelledby, "aria-describedby": ariaDescribedby }, steps.map((step, index) => renderStep ? (React.createElement(CustomStep, { key: index, orientation: orientation, step: step, renderStep: renderStep, hideConnectors: hideConnectors })) : (React.createElement(InternalStep, { key: index, status: step.status, statusIconAriaLabel: step.statusIconAriaLabel, header: step.header, details: step.details, orientation: orientation, hideConnectors: hideConnectors }))))));
56
59
  };
57
60
  export default InternalSteps;
58
61
  //# sourceMappingURL=internal.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"internal.js","sourceRoot":"","sources":["../../../src/steps/internal.tsx"],"names":[],"mappings":"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","sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport React from 'react';\nimport clsx from 'clsx';\n\nimport { BoxProps } from '../box/interfaces';\nimport InternalBox from '../box/internal';\nimport { InternalBaseComponentProps } from '../internal/hooks/use-base-component';\nimport { SomeRequired } from '../internal/types';\nimport InternalStatusIndicator, { InternalStatusIcon } from '../status-indicator/internal';\nimport { StepsProps } from './interfaces';\n\nimport styles from './styles.css.js';\n\ntype InternalStepsProps = SomeRequired<StepsProps, 'steps'> & InternalBaseComponentProps;\n\nconst statusToColor: Record<StepsProps.Status, BoxProps.Color> = {\n error: 'text-status-error',\n warning: 'text-status-warning',\n success: 'text-status-success',\n info: 'text-status-info',\n stopped: 'text-status-inactive',\n pending: 'text-status-inactive',\n 'in-progress': 'text-status-inactive',\n loading: 'text-status-inactive',\n 'not-started': 'text-status-inactive',\n};\n\nconst CustomStep = ({\n step,\n orientation,\n renderStep,\n}: {\n step: StepsProps.Step;\n orientation: StepsProps.Orientation;\n renderStep: Required<StepsProps>['renderStep'];\n}) => {\n const { status, statusIconAriaLabel } = step;\n const { header, details, icon } = renderStep(step);\n const iconNode = icon ? icon : <InternalStatusIcon type={status} iconAriaLabel={statusIconAriaLabel} />;\n\n if (orientation === 'horizontal') {\n return (\n <li className={styles.container}>\n <div className={styles.header}>\n {iconNode}\n <hr className={styles.connector} role=\"none\" />\n </div>\n <div className={styles['horizontal-header']}>{header}</div>\n {details && <div className={styles.details}>{details}</div>}\n </li>\n );\n }\n\n // Vertical orientation: render the icon and the connector together in a column-1 \"rail\" so the\n // connector starts directly beneath the icon and stretches the full height of the step. Unlike\n // placing the header in the same row as the icon, this keeps the vertical line continuous even\n // when the custom header wraps onto multiple lines.\n return (\n <li className={clsx(styles.container, styles['custom-vertical'])}>\n <div className={styles.rail}>\n {iconNode}\n <hr className={styles.connector} role=\"none\" />\n </div>\n <div className={styles.content}>\n <div className={styles.header}>{header}</div>\n {details && <div className={styles.details}>{details}</div>}\n </div>\n </li>\n );\n};\n\nconst InternalStep = ({\n status,\n statusIconAriaLabel,\n header,\n details,\n orientation,\n}: StepsProps.Step & { orientation: StepsProps.Orientation }) => {\n return (\n <li className={styles.container}>\n <div className={styles.header}>\n {orientation === 'vertical' ? (\n <InternalStatusIndicator type={status} iconAriaLabel={statusIconAriaLabel}>\n {header}\n </InternalStatusIndicator>\n ) : (\n <>\n <InternalBox color={statusToColor[status]}>\n <InternalStatusIcon type={status} iconAriaLabel={statusIconAriaLabel} />\n </InternalBox>\n <hr className={styles.connector} role=\"none\" />\n </>\n )}\n </div>\n {orientation === 'vertical' ? (\n <hr className={styles.connector} role=\"none\" />\n ) : (\n <div className={styles['horizontal-header']}>\n <InternalBox color={statusToColor[status]}>{header}</InternalBox>\n </div>\n )}\n {details && <div className={styles.details}>{details}</div>}\n </li>\n );\n};\n\nconst InternalSteps = ({\n steps,\n orientation = 'vertical',\n renderStep,\n ariaLabel,\n ariaLabelledby,\n ariaDescribedby,\n __internalRootRef,\n ...props\n}: InternalStepsProps) => {\n return (\n <div\n {...props}\n className={clsx(styles.root, props.className, orientation === 'horizontal' ? styles.horizontal : styles.vertical)}\n ref={__internalRootRef}\n >\n <ol\n className={styles.list}\n aria-label={ariaLabel}\n aria-labelledby={ariaLabelledby}\n aria-describedby={ariaDescribedby}\n >\n {steps.map((step, index) =>\n renderStep ? (\n <CustomStep key={index} orientation={orientation} step={step} renderStep={renderStep} />\n ) : (\n <InternalStep\n key={index}\n status={step.status}\n statusIconAriaLabel={step.statusIconAriaLabel}\n header={step.header}\n details={step.details}\n orientation={orientation}\n />\n )\n )}\n </ol>\n </div>\n );\n};\n\nexport default InternalSteps;\n"]}
1
+ {"version":3,"file":"internal.js","sourceRoot":"","sources":["../../../src/steps/internal.tsx"],"names":[],"mappings":"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","sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport React from 'react';\nimport clsx from 'clsx';\n\nimport { BoxProps } from '../box/interfaces';\nimport InternalBox from '../box/internal';\nimport { InternalBaseComponentProps } from '../internal/hooks/use-base-component';\nimport { SomeRequired } from '../internal/types';\nimport InternalStatusIndicator, { InternalStatusIcon } from '../status-indicator/internal';\nimport { StepsProps } from './interfaces';\n\nimport styles from './styles.css.js';\n\ntype InternalStepsProps = SomeRequired<StepsProps, 'steps' | 'orientation' | 'connectorLines'> &\n InternalBaseComponentProps;\n\nconst statusToColor: Record<StepsProps.Status, BoxProps.Color> = {\n error: 'text-status-error',\n warning: 'text-status-warning',\n success: 'text-status-success',\n info: 'text-status-info',\n stopped: 'text-status-inactive',\n pending: 'text-status-inactive',\n 'in-progress': 'text-status-inactive',\n loading: 'text-status-inactive',\n 'not-started': 'text-status-inactive',\n};\n\nconst CustomStep = ({\n step,\n orientation,\n renderStep,\n hideConnectors,\n}: {\n step: StepsProps.Step;\n orientation: StepsProps.Orientation;\n renderStep: Required<StepsProps>['renderStep'];\n hideConnectors: boolean;\n}) => {\n const { status, statusIconAriaLabel } = step;\n const { header, details, icon } = renderStep(step);\n const iconNode = icon ? icon : <InternalStatusIcon type={status} iconAriaLabel={statusIconAriaLabel} />;\n const connectorClassName = clsx(styles.connector, hideConnectors && styles['connector-hidden']);\n\n if (orientation === 'horizontal') {\n return (\n <li className={styles.container}>\n <div className={styles.header}>\n {iconNode}\n <hr className={connectorClassName} role=\"none\" />\n </div>\n <div className={styles['horizontal-header']}>{header}</div>\n {details && <div className={styles.details}>{details}</div>}\n </li>\n );\n }\n\n // Vertical orientation: render the icon and the connector together in a column-1 \"rail\" so the\n // connector starts directly beneath the icon and stretches the full height of the step. Unlike\n // placing the header in the same row as the icon, this keeps the vertical line continuous even\n // when the custom header wraps onto multiple lines.\n return (\n <li className={clsx(styles.container, styles['custom-vertical'])}>\n <div className={styles.rail}>\n {iconNode}\n <hr className={connectorClassName} role=\"none\" />\n </div>\n <div className={styles.content}>\n <div className={styles.header}>{header}</div>\n {details && <div className={styles.details}>{details}</div>}\n </div>\n </li>\n );\n};\n\nconst InternalStep = ({\n status,\n statusIconAriaLabel,\n header,\n details,\n orientation,\n hideConnectors,\n}: StepsProps.Step & { orientation: StepsProps.Orientation; hideConnectors: boolean }) => {\n const connectorClassName = clsx(styles.connector, hideConnectors && styles['connector-hidden']);\n return (\n <li className={styles.container}>\n <div className={styles.header}>\n {orientation === 'vertical' ? (\n <InternalStatusIndicator type={status} iconAriaLabel={statusIconAriaLabel}>\n {header}\n </InternalStatusIndicator>\n ) : (\n <>\n <InternalBox color={statusToColor[status]}>\n <InternalStatusIcon type={status} iconAriaLabel={statusIconAriaLabel} />\n </InternalBox>\n <hr className={connectorClassName} role=\"none\" />\n </>\n )}\n </div>\n {orientation === 'vertical' ? (\n <hr className={connectorClassName} role=\"none\" />\n ) : (\n <div className={styles['horizontal-header']}>\n <InternalBox color={statusToColor[status]}>{header}</InternalBox>\n </div>\n )}\n {details && <div className={styles.details}>{details}</div>}\n </li>\n );\n};\n\nconst InternalSteps = ({\n steps,\n orientation,\n connectorLines,\n renderStep,\n ariaLabel,\n ariaLabelledby,\n ariaDescribedby,\n __internalRootRef,\n ...props\n}: InternalStepsProps) => {\n const hideConnectors = connectorLines === 'none';\n return (\n <div\n {...props}\n className={clsx(styles.root, props.className, orientation === 'horizontal' ? styles.horizontal : styles.vertical)}\n ref={__internalRootRef}\n >\n <ol\n className={styles.list}\n aria-label={ariaLabel}\n aria-labelledby={ariaLabelledby}\n aria-describedby={ariaDescribedby}\n >\n {steps.map((step, index) =>\n renderStep ? (\n <CustomStep\n key={index}\n orientation={orientation}\n step={step}\n renderStep={renderStep}\n hideConnectors={hideConnectors}\n />\n ) : (\n <InternalStep\n key={index}\n status={step.status}\n statusIconAriaLabel={step.statusIconAriaLabel}\n header={step.header}\n details={step.details}\n orientation={orientation}\n hideConnectors={hideConnectors}\n />\n )\n )}\n </ol>\n </div>\n );\n};\n\nexport default InternalSteps;\n"]}
@@ -1,17 +1,18 @@
1
1
 
2
2
  import './styles.scoped.css';
3
3
  export default {
4
- "root": "awsui_root_gxp9y_5skec_181",
5
- "list": "awsui_list_gxp9y_5skec_214",
6
- "container": "awsui_container_gxp9y_5skec_219",
7
- "header": "awsui_header_gxp9y_5skec_224",
8
- "details": "awsui_details_gxp9y_5skec_230",
9
- "connector": "awsui_connector_gxp9y_5skec_236",
10
- "custom": "awsui_custom_gxp9y_5skec_252",
11
- "horizontal": "awsui_horizontal_gxp9y_5skec_256",
12
- "horizontal-header": "awsui_horizontal-header_gxp9y_5skec_288",
13
- "custom-vertical": "awsui_custom-vertical_gxp9y_5skec_302",
14
- "rail": "awsui_rail_gxp9y_5skec_302",
15
- "content": "awsui_content_gxp9y_5skec_321"
4
+ "connector": "awsui_connector_gxp9y_m67w6_181",
5
+ "connector-hidden": "awsui_connector-hidden_gxp9y_m67w6_185",
6
+ "root": "awsui_root_gxp9y_m67w6_189",
7
+ "list": "awsui_list_gxp9y_m67w6_222",
8
+ "container": "awsui_container_gxp9y_m67w6_227",
9
+ "header": "awsui_header_gxp9y_m67w6_232",
10
+ "details": "awsui_details_gxp9y_m67w6_238",
11
+ "custom": "awsui_custom_gxp9y_m67w6_259",
12
+ "horizontal": "awsui_horizontal_gxp9y_m67w6_263",
13
+ "horizontal-header": "awsui_horizontal-header_gxp9y_m67w6_294",
14
+ "custom-vertical": "awsui_custom-vertical_gxp9y_m67w6_308",
15
+ "rail": "awsui_rail_gxp9y_m67w6_308",
16
+ "content": "awsui_content_gxp9y_m67w6_326"
16
17
  };
17
18
 
@@ -178,7 +178,15 @@
178
178
  */
179
179
  /* Style used for links in slots/components that are text heavy, to help links stand out among
180
180
  surrounding text. (WCAG F73) https://www.w3.org/WAI/WCAG21/Techniques/failures/F73#description */
181
- .awsui_root_gxp9y_5skec_181:not(#\9) {
181
+ .awsui_connector_gxp9y_m67w6_181:not(#\9) {
182
+ background-color: var(--color-border-divider-default-ipvpev, #eaeded);
183
+ }
184
+
185
+ .awsui_connector_gxp9y_m67w6_181.awsui_connector-hidden_gxp9y_m67w6_185:not(#\9) {
186
+ background-color: transparent;
187
+ }
188
+
189
+ .awsui_root_gxp9y_m67w6_189:not(#\9) {
182
190
  border-collapse: separate;
183
191
  border-spacing: 0;
184
192
  box-sizing: border-box;
@@ -211,32 +219,31 @@ surrounding text. (WCAG F73) https://www.w3.org/WAI/WCAG21/Techniques/failures/F
211
219
  min-inline-size: 0;
212
220
  word-break: break-word;
213
221
  }
214
- .awsui_root_gxp9y_5skec_181 > .awsui_list_gxp9y_5skec_214:not(#\9) {
222
+ .awsui_root_gxp9y_m67w6_189 > .awsui_list_gxp9y_m67w6_222:not(#\9) {
215
223
  list-style: none;
216
224
  padding-inline-start: 0;
217
225
  margin-block: 0;
218
226
  }
219
- .awsui_root_gxp9y_5skec_181 > .awsui_list_gxp9y_5skec_214 > .awsui_container_gxp9y_5skec_219:not(#\9) {
227
+ .awsui_root_gxp9y_m67w6_189 > .awsui_list_gxp9y_m67w6_222 > .awsui_container_gxp9y_m67w6_227:not(#\9) {
220
228
  display: grid;
221
229
  grid-template-columns: var(--space-static-l-ig026c, 20px) 1fr;
222
230
  grid-template-rows: minmax(var(--space-static-l-ig026c, 20px), auto);
223
231
  }
224
- .awsui_root_gxp9y_5skec_181 > .awsui_list_gxp9y_5skec_214 > .awsui_container_gxp9y_5skec_219 > .awsui_header_gxp9y_5skec_224:not(#\9) {
232
+ .awsui_root_gxp9y_m67w6_189 > .awsui_list_gxp9y_m67w6_222 > .awsui_container_gxp9y_m67w6_227 > .awsui_header_gxp9y_m67w6_232:not(#\9) {
225
233
  display: flex;
226
234
  gap: var(--space-xxs-jnczic, 4px);
227
235
  grid-row: 1;
228
236
  grid-column: 1/span 2;
229
237
  }
230
- .awsui_root_gxp9y_5skec_181 > .awsui_list_gxp9y_5skec_214 > .awsui_container_gxp9y_5skec_219 > .awsui_details_gxp9y_5skec_230:not(#\9) {
238
+ .awsui_root_gxp9y_m67w6_189 > .awsui_list_gxp9y_m67w6_222 > .awsui_container_gxp9y_m67w6_227 > .awsui_details_gxp9y_m67w6_238:not(#\9) {
231
239
  align-items: center;
232
240
  grid-row: 2;
233
241
  grid-column: 2;
234
242
  margin-block-end: var(--space-static-xs-4gq40t, 8px);
235
243
  }
236
- .awsui_root_gxp9y_5skec_181 > .awsui_list_gxp9y_5skec_214 > .awsui_container_gxp9y_5skec_219 > .awsui_connector_gxp9y_5skec_236:not(#\9) {
244
+ .awsui_root_gxp9y_m67w6_189 > .awsui_list_gxp9y_m67w6_222 > .awsui_container_gxp9y_m67w6_227 > .awsui_connector_gxp9y_m67w6_181:not(#\9) {
237
245
  grid-row: 2;
238
246
  grid-column: 1;
239
- background-color: var(--color-border-divider-default-ipvpev, #eaeded);
240
247
  margin-block: 0;
241
248
  border-block: 0;
242
249
  border-inline: 0;
@@ -246,35 +253,34 @@ surrounding text. (WCAG F73) https://www.w3.org/WAI/WCAG21/Techniques/failures/F
246
253
  position: relative;
247
254
  inset-inline-end: var(--space-static-xxxs-zckw10, 2px);
248
255
  }
249
- .awsui_root_gxp9y_5skec_181 > .awsui_list_gxp9y_5skec_214 > :not(#\9):last-of-type > .awsui_connector_gxp9y_5skec_236 {
256
+ .awsui_root_gxp9y_m67w6_189 > .awsui_list_gxp9y_m67w6_222 > :not(#\9):last-of-type > .awsui_connector_gxp9y_m67w6_181 {
250
257
  display: none;
251
258
  }
252
- .awsui_root_gxp9y_5skec_181 > .awsui_list_gxp9y_5skec_214.awsui_custom_gxp9y_5skec_252 > .awsui_details_gxp9y_5skec_230:not(#\9) {
259
+ .awsui_root_gxp9y_m67w6_189 > .awsui_list_gxp9y_m67w6_222.awsui_custom_gxp9y_m67w6_259 > .awsui_details_gxp9y_m67w6_238:not(#\9) {
253
260
  margin-block-end: 0;
254
261
  }
255
262
 
256
- .awsui_horizontal_gxp9y_5skec_256 > .awsui_list_gxp9y_5skec_214:not(#\9) {
263
+ .awsui_horizontal_gxp9y_m67w6_263 > .awsui_list_gxp9y_m67w6_222:not(#\9) {
257
264
  display: grid;
258
265
  align-items: flex-start;
259
266
  grid-template-columns: repeat(auto-fit, minmax(0, 1fr));
260
267
  grid-auto-flow: column;
261
268
  }
262
- .awsui_horizontal_gxp9y_5skec_256 > .awsui_list_gxp9y_5skec_214 > .awsui_container_gxp9y_5skec_219:not(#\9) {
269
+ .awsui_horizontal_gxp9y_m67w6_263 > .awsui_list_gxp9y_m67w6_222 > .awsui_container_gxp9y_m67w6_227:not(#\9) {
263
270
  display: grid;
264
271
  grid-template-columns: var(--space-static-l-ig026c, 20px) 1fr;
265
272
  grid-template-rows: minmax(var(--space-static-l-ig026c, 20px), auto);
266
273
  align-items: center;
267
274
  }
268
- .awsui_horizontal_gxp9y_5skec_256 > .awsui_list_gxp9y_5skec_214 > .awsui_container_gxp9y_5skec_219 > .awsui_header_gxp9y_5skec_224:not(#\9) {
275
+ .awsui_horizontal_gxp9y_m67w6_263 > .awsui_list_gxp9y_m67w6_222 > .awsui_container_gxp9y_m67w6_227 > .awsui_header_gxp9y_m67w6_232:not(#\9) {
269
276
  display: flex;
270
277
  grid-row: 1;
271
278
  grid-column: 1/span 2;
272
279
  align-items: center;
273
280
  }
274
- .awsui_horizontal_gxp9y_5skec_256 > .awsui_list_gxp9y_5skec_214 > .awsui_container_gxp9y_5skec_219 > .awsui_header_gxp9y_5skec_224 > .awsui_connector_gxp9y_5skec_236:not(#\9) {
281
+ .awsui_horizontal_gxp9y_m67w6_263 > .awsui_list_gxp9y_m67w6_222 > .awsui_container_gxp9y_m67w6_227 > .awsui_header_gxp9y_m67w6_232 > .awsui_connector_gxp9y_m67w6_181:not(#\9) {
275
282
  display: block;
276
283
  flex: 1;
277
- background-color: var(--color-border-divider-default-ipvpev, #eaeded);
278
284
  margin-block: 0;
279
285
  border-block: 0;
280
286
  border-inline: 0;
@@ -285,31 +291,30 @@ surrounding text. (WCAG F73) https://www.w3.org/WAI/WCAG21/Techniques/failures/F
285
291
  min-inline-size: var(--space-static-xs-4gq40t, 8px);
286
292
  margin-inline-end: var(--space-static-xxs-0cgyf1, 4px);
287
293
  }
288
- .awsui_horizontal_gxp9y_5skec_256 > .awsui_list_gxp9y_5skec_214 > .awsui_container_gxp9y_5skec_219 > .awsui_horizontal-header_gxp9y_5skec_288:not(#\9) {
294
+ .awsui_horizontal_gxp9y_m67w6_263 > .awsui_list_gxp9y_m67w6_222 > .awsui_container_gxp9y_m67w6_227 > .awsui_horizontal-header_gxp9y_m67w6_294:not(#\9) {
289
295
  grid-row: 2;
290
296
  grid-column: 1/span 3;
291
297
  padding-inline-end: var(--space-xs-kw7k3v, 8px);
292
298
  }
293
- .awsui_horizontal_gxp9y_5skec_256 > .awsui_list_gxp9y_5skec_214 > .awsui_container_gxp9y_5skec_219 > .awsui_details_gxp9y_5skec_230:not(#\9) {
299
+ .awsui_horizontal_gxp9y_m67w6_263 > .awsui_list_gxp9y_m67w6_222 > .awsui_container_gxp9y_m67w6_227 > .awsui_details_gxp9y_m67w6_238:not(#\9) {
294
300
  grid-row: 3;
295
301
  grid-column: 1/span 3;
296
302
  padding-inline-end: var(--space-xs-kw7k3v, 8px);
297
303
  }
298
- .awsui_horizontal_gxp9y_5skec_256 > .awsui_list_gxp9y_5skec_214 > .awsui_container_gxp9y_5skec_219:not(#\9):last-child > .awsui_header_gxp9y_5skec_224 > .awsui_connector_gxp9y_5skec_236 {
304
+ .awsui_horizontal_gxp9y_m67w6_263 > .awsui_list_gxp9y_m67w6_222 > .awsui_container_gxp9y_m67w6_227:not(#\9):last-child > .awsui_header_gxp9y_m67w6_232 > .awsui_connector_gxp9y_m67w6_181 {
299
305
  display: none;
300
306
  }
301
307
 
302
- .awsui_root_gxp9y_5skec_181 > .awsui_list_gxp9y_5skec_214 > .awsui_container_gxp9y_5skec_219.awsui_custom-vertical_gxp9y_5skec_302 > .awsui_rail_gxp9y_5skec_302:not(#\9) {
308
+ .awsui_root_gxp9y_m67w6_189 > .awsui_list_gxp9y_m67w6_222 > .awsui_container_gxp9y_m67w6_227.awsui_custom-vertical_gxp9y_m67w6_308 > .awsui_rail_gxp9y_m67w6_308:not(#\9) {
303
309
  grid-column: 1;
304
310
  display: flex;
305
311
  flex-direction: column;
306
312
  align-items: center;
307
313
  }
308
- .awsui_root_gxp9y_5skec_181 > .awsui_list_gxp9y_5skec_214 > .awsui_container_gxp9y_5skec_219.awsui_custom-vertical_gxp9y_5skec_302 > .awsui_rail_gxp9y_5skec_302 > .awsui_connector_gxp9y_5skec_236:not(#\9) {
314
+ .awsui_root_gxp9y_m67w6_189 > .awsui_list_gxp9y_m67w6_222 > .awsui_container_gxp9y_m67w6_227.awsui_custom-vertical_gxp9y_m67w6_308 > .awsui_rail_gxp9y_m67w6_308 > .awsui_connector_gxp9y_m67w6_181:not(#\9) {
309
315
  grid-row: auto;
310
316
  grid-column: auto;
311
317
  flex: 1 1 auto;
312
- background-color: var(--color-border-divider-default-ipvpev, #eaeded);
313
318
  border-block: 0;
314
319
  border-inline: 0;
315
320
  inline-size: var(--border-divider-list-width-2qbfmz, 1px);
@@ -318,11 +323,11 @@ surrounding text. (WCAG F73) https://www.w3.org/WAI/WCAG21/Techniques/failures/F
318
323
  inset-inline-end: 0;
319
324
  margin-block: var(--space-static-xxs-0cgyf1, 4px) 0;
320
325
  }
321
- .awsui_root_gxp9y_5skec_181 > .awsui_list_gxp9y_5skec_214 > .awsui_container_gxp9y_5skec_219.awsui_custom-vertical_gxp9y_5skec_302 > .awsui_content_gxp9y_5skec_321:not(#\9) {
326
+ .awsui_root_gxp9y_m67w6_189 > .awsui_list_gxp9y_m67w6_222 > .awsui_container_gxp9y_m67w6_227.awsui_custom-vertical_gxp9y_m67w6_308 > .awsui_content_gxp9y_m67w6_326:not(#\9) {
322
327
  grid-column: 2;
323
328
  min-inline-size: 0;
324
329
  }
325
330
 
326
- .awsui_root_gxp9y_5skec_181 > .awsui_list_gxp9y_5skec_214 > .awsui_container_gxp9y_5skec_219.awsui_custom-vertical_gxp9y_5skec_302:not(#\9):last-of-type > .awsui_rail_gxp9y_5skec_302 > .awsui_connector_gxp9y_5skec_236 {
331
+ .awsui_root_gxp9y_m67w6_189 > .awsui_list_gxp9y_m67w6_222 > .awsui_container_gxp9y_m67w6_227.awsui_custom-vertical_gxp9y_m67w6_308:not(#\9):last-of-type > .awsui_rail_gxp9y_m67w6_308 > .awsui_connector_gxp9y_m67w6_181 {
327
332
  display: none;
328
333
  }
@@ -2,17 +2,18 @@
2
2
  // es-module interop with Babel and Typescript
3
3
  Object.defineProperty(exports, "__esModule", { value: true });
4
4
  module.exports.default = {
5
- "root": "awsui_root_gxp9y_5skec_181",
6
- "list": "awsui_list_gxp9y_5skec_214",
7
- "container": "awsui_container_gxp9y_5skec_219",
8
- "header": "awsui_header_gxp9y_5skec_224",
9
- "details": "awsui_details_gxp9y_5skec_230",
10
- "connector": "awsui_connector_gxp9y_5skec_236",
11
- "custom": "awsui_custom_gxp9y_5skec_252",
12
- "horizontal": "awsui_horizontal_gxp9y_5skec_256",
13
- "horizontal-header": "awsui_horizontal-header_gxp9y_5skec_288",
14
- "custom-vertical": "awsui_custom-vertical_gxp9y_5skec_302",
15
- "rail": "awsui_rail_gxp9y_5skec_302",
16
- "content": "awsui_content_gxp9y_5skec_321"
5
+ "connector": "awsui_connector_gxp9y_m67w6_181",
6
+ "connector-hidden": "awsui_connector-hidden_gxp9y_m67w6_185",
7
+ "root": "awsui_root_gxp9y_m67w6_189",
8
+ "list": "awsui_list_gxp9y_m67w6_222",
9
+ "container": "awsui_container_gxp9y_m67w6_227",
10
+ "header": "awsui_header_gxp9y_m67w6_232",
11
+ "details": "awsui_details_gxp9y_m67w6_238",
12
+ "custom": "awsui_custom_gxp9y_m67w6_259",
13
+ "horizontal": "awsui_horizontal_gxp9y_m67w6_263",
14
+ "horizontal-header": "awsui_horizontal-header_gxp9y_m67w6_294",
15
+ "custom-vertical": "awsui_custom-vertical_gxp9y_m67w6_308",
16
+ "rail": "awsui_rail_gxp9y_m67w6_308",
17
+ "content": "awsui_content_gxp9y_m67w6_326"
17
18
  };
18
19
 
@@ -1 +1 @@
1
- {"version":3,"file":"internal.d.ts","sourceRoot":"","sources":["../../../src/table/internal.tsx"],"names":[],"mappings":"AA2CA,OAAO,EAAE,mBAAmB,EAAwB,MAAM,cAAc,CAAC;AA6CzE,eAAO,MAAM,sBAAsB,EAW9B,mBAAmB,CAAC;AAEzB,QAAA,MAAM,aAAa,EAwvBd,mBAAmB,CAAC;AAEzB,eAAe,aAAa,CAAC"}
1
+ {"version":3,"file":"internal.d.ts","sourceRoot":"","sources":["../../../src/table/internal.tsx"],"names":[],"mappings":"AA2CA,OAAO,EAAE,mBAAmB,EAAwB,MAAM,cAAc,CAAC;AA6CzE,eAAO,MAAM,sBAAsB,EAW9B,mBAAmB,CAAC;AAEzB,QAAA,MAAM,aAAa,EA0vBd,mBAAmB,CAAC;AAEzB,eAAe,aAAa,CAAC"}
@@ -1,6 +1,6 @@
1
1
  // Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
2
2
  // SPDX-License-Identifier: Apache-2.0
3
- import React, { useCallback, useImperativeHandle, useRef } from 'react';
3
+ import React, { useCallback, useImperativeHandle, useMemo, useRef } from 'react';
4
4
  import clsx from 'clsx';
5
5
  import { useContainerQuery } from '@cloudscape-design/component-toolkit';
6
6
  import { useMergeRefs, warnOnce } from '@cloudscape-design/component-toolkit/internal';
@@ -180,11 +180,7 @@ const InternalTable = React.forwardRef(({ header, footer, empty, filter, paginat
180
180
  const handleScroll = useScrollSync([wrapperRefObject, scrollbarRef, secondaryWrapperRef]);
181
181
  const { moveFocusDown, moveFocusUp, moveFocus } = useSelectionFocusMove(selectionType, allItems.length);
182
182
  const { onRowClickHandler, onRowContextMenuHandler } = useRowEvents({ onRowClick, onRowContextMenu });
183
- const visibleColumnDefinitions = getVisibleColumnDefinitions({
184
- columnDefinitions,
185
- columnDisplay,
186
- visibleColumns,
187
- });
183
+ const visibleColumnDefinitions = useMemo(() => getVisibleColumnDefinitions({ columnDefinitions, columnDisplay, visibleColumns }), [columnDefinitions, columnDisplay, visibleColumns]);
188
184
  const visibleColumnIds = visibleColumnDefinitions.map((col, idx) => getColumnKey(col, idx).toString());
189
185
  const { groupColumnMap, ...columnGroupsLayout } = useColumnGroups(columnDefinitions, visibleColumnIds, groupDefinitions, columnDisplay);
190
186
  const selectionProps = {
@@ -243,17 +239,20 @@ const InternalTable = React.forwardRef(({ header, footer, empty, filter, paginat
243
239
  const setHeaderRef = useCallback((id) => {
244
240
  headerIdRef.current = id;
245
241
  }, []);
246
- const visibleColumnWidthsWithSelection = [];
247
- const visibleColumnIdsWithSelection = [];
248
- if (hasSelection) {
249
- visibleColumnWidthsWithSelection.push({ id: selectionColumnId, width: SELECTION_COLUMN_WIDTH });
250
- visibleColumnIdsWithSelection.push(selectionColumnId);
251
- }
252
- for (let columnIndex = 0; columnIndex < visibleColumnDefinitions.length; columnIndex++) {
253
- const columnId = getColumnKey(visibleColumnDefinitions[columnIndex], columnIndex);
254
- visibleColumnWidthsWithSelection.push({ ...visibleColumnDefinitions[columnIndex], id: columnId });
255
- visibleColumnIdsWithSelection.push(columnId);
256
- }
242
+ const { visibleColumnWidthsWithSelection, visibleColumnIdsWithSelection } = useMemo(() => {
243
+ const widths = [];
244
+ const ids = [];
245
+ if (hasSelection) {
246
+ widths.push({ id: selectionColumnId, width: SELECTION_COLUMN_WIDTH });
247
+ ids.push(selectionColumnId);
248
+ }
249
+ for (let columnIndex = 0; columnIndex < visibleColumnDefinitions.length; columnIndex++) {
250
+ const columnId = getColumnKey(visibleColumnDefinitions[columnIndex], columnIndex);
251
+ widths.push({ ...visibleColumnDefinitions[columnIndex], id: columnId });
252
+ ids.push(columnId);
253
+ }
254
+ return { visibleColumnWidthsWithSelection: widths, visibleColumnIdsWithSelection: ids };
255
+ }, [hasSelection, visibleColumnDefinitions]);
257
256
  const stickyState = useStickyColumns({
258
257
  visibleColumns: visibleColumnIdsWithSelection,
259
258
  stickyColumnsFirst: ((_a = stickyColumns === null || stickyColumns === void 0 ? void 0 : stickyColumns.first) !== null && _a !== void 0 ? _a : 0) + ((stickyColumns === null || stickyColumns === void 0 ? void 0 : stickyColumns.first) && hasSelection ? 1 : 0),
@@ -1 +1 @@
1
- {"version":3,"file":"internal.js","sourceRoot":"","sources":["../../../src/table/internal.tsx"],"names":[],"mappings":"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","sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport React, { useCallback, useImperativeHandle, useRef } from 'react';\nimport clsx from 'clsx';\n\nimport { useContainerQuery } from '@cloudscape-design/component-toolkit';\nimport { useMergeRefs, warnOnce } from '@cloudscape-design/component-toolkit/internal';\nimport {\n GeneratedAnalyticsMetadataFragment,\n getAnalyticsMetadataAttribute,\n} from '@cloudscape-design/component-toolkit/internal/analytics-metadata';\n\nimport InternalContainer, { InternalContainerProps } from '../container/internal';\nimport { useFunnelSubStep } from '../internal/analytics/hooks/use-funnel';\nimport { getAnalyticsMetadataProps, getBaseProps } from '../internal/base-component';\nimport { getVisualContextClassname } from '../internal/components/visual-context';\nimport { CollectionLabelContext } from '../internal/context/collection-label-context';\nimport { LinkDefaultVariantContext } from '../internal/context/link-default-variant-context';\nimport {\n FilterRef,\n HeaderRef,\n PaginationRef,\n PreferencesRef,\n TableComponentsContextProvider,\n} from '../internal/context/table-component-context';\nimport { fireNonCancelableEvent } from '../internal/events';\nimport { InternalBaseComponentProps } from '../internal/hooks/use-base-component';\nimport { useMobile } from '../internal/hooks/use-mobile';\nimport useMouseDownTarget from '../internal/hooks/use-mouse-down-target';\nimport { usePerformanceMarks } from '../internal/hooks/use-performance-marks';\nimport { usePrevious } from '../internal/hooks/use-previous';\nimport { useScrollSync } from '../internal/hooks/use-scroll-sync';\nimport { useTableInteractionMetrics } from '../internal/hooks/use-table-interaction-metrics';\nimport { useVisualRefresh } from '../internal/hooks/use-visual-mode';\nimport { isDevelopment } from '../internal/is-development';\nimport { SomeRequired } from '../internal/types';\nimport InternalLiveRegion from '../live-region/internal';\nimport { GeneratedAnalyticsMetadataTableComponent } from './analytics-metadata/interfaces';\nimport { TableBodyCell } from './body-cell';\nimport { TableColGroup } from './column-groups/col-group';\nimport { useColumnGroups } from './column-groups/use-column-groups';\nimport { checkColumnWidths } from './column-widths-utils';\nimport { useExpandableTableProps } from './expandable-rows/expandable-rows-utils';\nimport { TableForwardRefType, TableProps, TableRow } from './interfaces';\nimport { NoDataCell } from './no-data-cell';\nimport { getLoaderContent } from './progressive-loading/items-loader';\nimport { TableLoaderCell } from './progressive-loading/loader-cell';\nimport { useProgressiveLoadingProps } from './progressive-loading/progressive-loading-utils';\nimport { ResizeTracker } from './resizer';\nimport { focusMarkers, useSelection, useSelectionFocusMove } from './selection';\nimport { TableBodySelectionCell } from './selection/selection-cell';\nimport { useGroupSelection } from './selection/use-group-selection';\nimport { SkeletonRows } from './skeleton-rows';\nimport { useStickyColumns } from './sticky-columns';\nimport StickyHeader, { StickyHeaderRef } from './sticky-header';\nimport { StickyScrollbar } from './sticky-scrollbar';\nimport {\n getTableRoleProps,\n getTableRowRoleProps,\n getTableWrapperRoleProps,\n GridNavigationProvider,\n TableRole,\n} from './table-role';\nimport Thead, { TheadProps } from './thead';\nimport ToolsHeader from './tools-header';\nimport { useCellEditing } from './use-cell-editing';\nimport { ColumnWidthDefinition, ColumnWidthsProvider, DEFAULT_COLUMN_WIDTH } from './use-column-widths';\nimport { usePreventStickyClickScroll } from './use-prevent-sticky-click-scroll';\nimport { useRowEvents } from './use-row-events';\nimport useTableFocusNavigation from './use-table-focus-navigation';\nimport { checkSortingState, getColumnKey, getItemKey, getVisibleColumnDefinitions, toContainerVariant } from './utils';\n\nimport buttonStyles from '../button/styles.css.js';\nimport headerStyles from '../header/styles.css.js';\nimport styles from './styles.css.js';\n\nconst GRID_NAVIGATION_PAGE_SIZE = 10;\nconst SELECTION_COLUMN_WIDTH = 54;\nconst selectionColumnId = Symbol('selection-column-id');\n\ntype InternalTableProps<T> = SomeRequired<\n TableProps<T>,\n 'items' | 'selectedItems' | 'variant' | 'firstIndex' | 'cellVerticalAlign'\n> &\n InternalBaseComponentProps & {\n __funnelSubStepProps?: InternalContainerProps['__funnelSubStepProps'];\n };\n\nexport const InternalTableAsSubstep = React.forwardRef(\n <T,>(props: InternalTableProps<T>, ref: React.Ref<TableProps.Ref>) => {\n const { funnelSubStepProps } = useFunnelSubStep();\n\n const tableProps: InternalTableProps<T> = {\n ...props,\n __funnelSubStepProps: funnelSubStepProps,\n };\n\n return <InternalTable {...tableProps} ref={ref} />;\n }\n) as TableForwardRefType;\n\nconst InternalTable = React.forwardRef(\n <T,>(\n {\n header,\n footer,\n empty,\n filter,\n pagination,\n preferences,\n items,\n columnDefinitions,\n groupDefinitions,\n trackBy,\n loading,\n loadingText,\n skeleton,\n selectionType: externalSelectionType,\n selectedItems,\n isItemDisabled,\n ariaLabels,\n onSelectionChange,\n onSortingChange,\n sortingColumn,\n sortingDescending,\n sortingDisabled,\n visibleColumns,\n stickyHeader,\n stickyHeaderVerticalOffset,\n onRowClick,\n onRowContextMenu,\n wrapLines,\n stripedRows,\n contentDensity,\n submitEdit,\n onEditCancel,\n resizableColumns,\n onColumnWidthsChange,\n variant,\n __internalRootRef,\n totalItemsCount,\n firstIndex,\n renderAriaLive,\n stickyColumns,\n columnDisplay,\n enableKeyboardNavigation,\n expandableRows: externalExpandableRows,\n getLoadingStatus,\n renderLoaderPending,\n renderLoaderLoading,\n renderLoaderError,\n renderLoaderEmpty,\n renderLoaderCounter,\n cellVerticalAlign,\n __funnelSubStepProps,\n ...rest\n }: InternalTableProps<T>,\n ref: React.Ref<TableProps.Ref>\n ) => {\n // Keyboard navigation defaults to `true` for tables with expandable rows.\n if (externalExpandableRows && enableKeyboardNavigation === undefined) {\n enableKeyboardNavigation = true;\n }\n\n const baseProps = getBaseProps(rest);\n\n const prevStickyHeader = usePrevious(stickyHeader);\n if (prevStickyHeader !== undefined && !!stickyHeader !== !!prevStickyHeader) {\n warnOnce(\n 'Table',\n `\\`stickyHeader\\` has changed from \"${prevStickyHeader}\" to \"${stickyHeader}\". It is not recommended to change the value of this property during the component lifecycle. Please set it to either \"true\" or \"false\" unconditionally.`\n );\n }\n\n const isMobile = useMobile();\n\n const expandableRows = useExpandableTableProps({\n items,\n expandableRows: externalExpandableRows,\n trackBy,\n ariaLabels,\n });\n const { allItems, isExpandable } = expandableRows;\n const { allRows } = useProgressiveLoadingProps({ getLoadingStatus, expandableRows });\n const selectionType = expandableRows.hasGroupSelection ? ('group' as const) : externalSelectionType;\n\n const [containerWidth, wrapperMeasureRef] = useContainerQuery<number>(rect => rect.borderBoxWidth);\n const wrapperMeasureRefObject = useRef(null);\n const wrapperMeasureMergedRef = useMergeRefs(wrapperMeasureRef, wrapperMeasureRefObject);\n\n const [tableWidth, tableMeasureRef] = useContainerQuery<number>(rect => rect.borderBoxWidth);\n const tableRefObject = useRef(null);\n\n const secondaryWrapperRef = React.useRef<HTMLDivElement>(null);\n const theadRef = useRef<HTMLTableRowElement>(null);\n const stickyHeaderRef = React.useRef<StickyHeaderRef>(null);\n const scrollbarRef = React.useRef<HTMLDivElement>(null);\n const { cancelEdit, ...cellEditing } = useCellEditing({ onCancel: onEditCancel, onSubmit: submitEdit });\n const paginationRef = useRef<PaginationRef>({});\n const filterRef = useRef<FilterRef>({});\n const preferencesRef = useRef<PreferencesRef>({});\n const headerRef = useRef<HeaderRef>({});\n /* istanbul ignore next: performance marks do not work in JSDOM */\n const getHeaderText = () =>\n toolsHeaderPerformanceMarkRef.current?.querySelector<HTMLElement>(`.${headerStyles['heading-text']}`)\n ?.innerText ?? toolsHeaderPerformanceMarkRef.current?.innerText;\n const getPatternIdentifier = () => {\n const hasActions = !!toolsHeaderPerformanceMarkRef.current?.querySelector<HTMLElement>(\n `.${headerStyles.actions} .${buttonStyles.button}`\n );\n\n if (hasActions) {\n return 'table-with-actions';\n }\n\n return '';\n };\n\n const performanceMarkAttributes = usePerformanceMarks(\n 'table',\n () => !loading,\n tableRefObject,\n () => ({\n loading: loading ?? false,\n header: getHeaderText(),\n }),\n [loading]\n );\n\n const analyticsMetadata = getAnalyticsMetadataProps(rest);\n const interactionMetadata = () => {\n const filterData = filterRef.current;\n const paginationData = paginationRef.current;\n return JSON.stringify({\n filterData,\n paginationData,\n sortingColumn: sortingColumn?.sortingField,\n sortingOrder: sortingColumn ? (sortingDescending ? 'Descending' : 'Ascending') : undefined,\n });\n };\n const getComponentConfiguration = () => {\n const headerData = headerRef.current;\n const filterData = filterRef.current;\n const paginationData = paginationRef.current;\n const preferencesData = preferencesRef.current;\n\n return {\n variant,\n flowType: rest.analyticsMetadata?.flowType,\n resourceType: rest.analyticsMetadata?.resourceType,\n instanceIdentifier: analyticsMetadata?.instanceIdentifier,\n taskName: analyticsMetadata?.instanceIdentifier ?? getHeaderText(),\n uxTaskName: getHeaderText(),\n patternIdentifier: getPatternIdentifier(),\n sortedBy: {\n columnId: sortingColumn?.sortingField,\n sortingOrder: sortingColumn ? (sortingDescending ? 'desc' : 'asc') : undefined,\n },\n filtered: filterData?.filtered ?? null,\n filteredBy: filterData?.filteredBy ?? [],\n filteredCount: filterData?.filterCount ?? null,\n totalNumberOfResources: headerData?.totalCount ?? null,\n tablePreferences: {\n visibleColumns: preferencesData?.visibleColumns ?? [],\n resourcesPerPage: preferencesData?.pageSize ?? null,\n },\n pagination: {\n currentPageIndex: paginationData?.currentPageIndex ?? 0,\n totalNumberOfPages: paginationData?.openEnd ? null : (paginationData?.totalPageCount ?? null),\n openEnd: Boolean(paginationData?.openEnd),\n },\n resourcesSelected: selectedItems?.length > 0,\n };\n };\n\n const { setLastUserAction, tableInteractionAttributes } = useTableInteractionMetrics({\n elementRef: tableRefObject,\n loading,\n items,\n instanceIdentifier: analyticsMetadata?.instanceIdentifier,\n itemCount: items.length,\n getComponentIdentifier: getHeaderText,\n getComponentConfiguration,\n interactionMetadata,\n });\n\n useImperativeHandle(\n ref,\n () => ({\n scrollToTop: stickyHeaderRef.current?.scrollToTop || (() => undefined),\n cancelEdit,\n }),\n [cancelEdit]\n );\n\n const wrapperRefObject = useRef<HTMLDivElement>(null);\n const handleScroll = useScrollSync([wrapperRefObject, scrollbarRef, secondaryWrapperRef]);\n\n const { moveFocusDown, moveFocusUp, moveFocus } = useSelectionFocusMove(selectionType, allItems.length);\n const { onRowClickHandler, onRowContextMenuHandler } = useRowEvents({ onRowClick, onRowContextMenu });\n\n const visibleColumnDefinitions = getVisibleColumnDefinitions({\n columnDefinitions,\n columnDisplay,\n visibleColumns,\n });\n\n const visibleColumnIds = visibleColumnDefinitions.map((col, idx) => getColumnKey(col, idx).toString());\n\n const { groupColumnMap, ...columnGroupsLayout } = useColumnGroups(\n columnDefinitions,\n visibleColumnIds,\n groupDefinitions,\n columnDisplay\n );\n\n const selectionProps = {\n items: allItems,\n rootItems: items,\n trackBy,\n selectedItems,\n totalItemsCount,\n selectionType,\n isItemDisabled,\n onSelectionChange,\n ariaLabels: {\n ...ariaLabels,\n // `selectionGroupLabel` should not be part of the selection control, it is already part of the selection column header.\n selectionGroupLabel: undefined,\n },\n loading,\n expandableRows,\n getLoadingStatus,\n setLastUserAction,\n };\n const normalSelection = useSelection(selectionProps);\n const groupSelection = useGroupSelection(selectionProps);\n const selection = selectionType === 'group' ? groupSelection : normalSelection;\n const isRowSelected = (row: TableRow<T>) => {\n if (row.type === 'data') {\n return selection.isItemSelected(row.item);\n }\n if (selectionType !== 'group') {\n return false;\n }\n // Group loader is selected when its parent is selected.\n return !row.item ? expandableRows.groupSelection.inverted : selection.isItemSelected(row.item);\n };\n\n if (isDevelopment) {\n if (resizableColumns) {\n checkColumnWidths(columnDefinitions);\n }\n if (sortingColumn?.sortingComparator) {\n checkSortingState(columnDefinitions, sortingColumn.sortingComparator);\n }\n }\n\n const isVisualRefresh = useVisualRefresh();\n const computedVariant = isVisualRefresh\n ? variant\n : ['embedded', 'full-page'].indexOf(variant) > -1\n ? 'container'\n : variant;\n const hasHeader = !!(header || filter || pagination || preferences);\n const hasSelection = !!selectionType;\n const hasFooterPagination = isMobile && variant === 'full-page' && !!pagination;\n const hasFooter = !!footer || hasFooterPagination;\n\n const headerIdRef = useRef<string | undefined>(undefined);\n const isLabelledByHeader = !ariaLabels?.tableLabel && !!header;\n const ariaLabelledby = isLabelledByHeader && headerIdRef.current ? headerIdRef.current : undefined;\n const setHeaderRef = useCallback((id: string) => {\n headerIdRef.current = id;\n }, []);\n\n const visibleColumnWidthsWithSelection: ColumnWidthDefinition[] = [];\n const visibleColumnIdsWithSelection: PropertyKey[] = [];\n if (hasSelection) {\n visibleColumnWidthsWithSelection.push({ id: selectionColumnId, width: SELECTION_COLUMN_WIDTH });\n visibleColumnIdsWithSelection.push(selectionColumnId);\n }\n for (let columnIndex = 0; columnIndex < visibleColumnDefinitions.length; columnIndex++) {\n const columnId = getColumnKey(visibleColumnDefinitions[columnIndex], columnIndex);\n visibleColumnWidthsWithSelection.push({ ...visibleColumnDefinitions[columnIndex], id: columnId });\n visibleColumnIdsWithSelection.push(columnId);\n }\n\n const stickyState = useStickyColumns({\n visibleColumns: visibleColumnIdsWithSelection,\n stickyColumnsFirst: (stickyColumns?.first ?? 0) + (stickyColumns?.first && hasSelection ? 1 : 0),\n stickyColumnsLast: stickyColumns?.last || 0,\n });\n\n const hasStickyColumns = !!((stickyColumns?.first ?? 0) + (stickyColumns?.last ?? 0) > 0);\n const hasEditableCells = !!columnDefinitions.find(col => col.editConfig);\n\n let tableRole: TableRole = 'table';\n if (isExpandable) {\n tableRole = 'treegrid';\n } else if (enableKeyboardNavigation) {\n tableRole = 'grid';\n } else if (hasEditableCells) {\n tableRole = 'grid-default';\n }\n\n const theadProps: TheadProps = {\n selectionType,\n getSelectAllProps: selection.getSelectAllProps,\n columnDefinitions: visibleColumnDefinitions,\n groupDefinitions,\n columnGroupsLayout,\n variant: computedVariant,\n tableVariant: computedVariant,\n wrapLines,\n resizableColumns,\n sortingColumn,\n sortingDisabled,\n sortingDescending,\n onSortingChange,\n onFocusMove: moveFocus,\n onResizeFinish(newWidth) {\n const widthsDetail = columnDefinitions.map(\n (column, index) =>\n newWidth.get(getColumnKey(column, index)) || (column.width as number) || DEFAULT_COLUMN_WIDTH\n );\n const widthsChanged = widthsDetail.some((width, index) => columnDefinitions[index].width !== width);\n if (widthsChanged) {\n fireNonCancelableEvent(onColumnWidthsChange, { widths: widthsDetail });\n }\n },\n singleSelectionHeaderAriaLabel: ariaLabels?.selectionGroupLabel,\n resizerRoleDescription: ariaLabels?.resizerRoleDescription,\n resizerTooltipText: ariaLabels?.resizerTooltipText,\n stripedRows,\n stickyState,\n stickyColumnsFirst: stickyColumns?.first ?? 0,\n stickyColumnsLast: stickyColumns?.last ?? 0,\n selectionColumnId,\n tableRole,\n isExpandable,\n setLastUserAction,\n };\n\n usePreventStickyClickScroll(wrapperRefObject);\n\n const wrapperRef = useMergeRefs(wrapperRefObject, stickyState.refs.wrapper);\n const tableRef = useMergeRefs(tableMeasureRef, tableRefObject, stickyState.refs.table);\n\n const wrapperProps = getTableWrapperRoleProps({\n tableRole,\n isScrollable: !!(tableWidth && containerWidth && tableWidth > containerWidth),\n ariaLabel: ariaLabels?.tableLabel,\n ariaLabelledby,\n });\n\n const getMouseDownTarget = useMouseDownTarget();\n\n useTableFocusNavigation({\n enableKeyboardNavigation,\n selectionType,\n tableRoot: tableRefObject,\n columnDefinitions: visibleColumnDefinitions,\n numRows: allRows?.length,\n });\n const toolsHeaderPerformanceMarkRef = useRef<HTMLDivElement>(null);\n // If is mobile, we take into consideration the AppLayout's mobile bar and we subtract the tools wrapper height so only the table header is sticky\n const [toolsHeaderHeight, toolsHeaderWrapperMeasureRef] = useContainerQuery(rect => rect.borderBoxHeight);\n const toolsHeaderWrapper = useMergeRefs(toolsHeaderPerformanceMarkRef, toolsHeaderWrapperMeasureRef);\n\n const colIndexOffset = selectionType ? 1 : 0;\n const totalColumnsCount = visibleColumnDefinitions.length + colIndexOffset;\n const headerRowCount = columnGroupsLayout?.rows.length || 1;\n\n return (\n <LinkDefaultVariantContext.Provider value={{ defaultVariant: 'primary' }}>\n <TableComponentsContextProvider value={{ paginationRef, filterRef, preferencesRef, headerRef }}>\n <ColumnWidthsProvider\n visibleColumns={visibleColumnWidthsWithSelection}\n resizableColumns={resizableColumns}\n containerRef={wrapperMeasureRefObject}\n groupColumnMap={groupColumnMap}\n >\n <InternalContainer\n {...baseProps}\n {...tableInteractionAttributes}\n __internalRootRef={__internalRootRef}\n className={clsx(baseProps.className, styles.root)}\n __funnelSubStepProps={__funnelSubStepProps}\n __fullPage={variant === 'full-page'}\n header={\n <>\n {hasHeader && (\n <div>\n <div\n ref={toolsHeaderWrapper}\n className={clsx(styles['header-controls'], styles[`variant-${computedVariant}`])}\n >\n <CollectionLabelContext.Provider value={{ assignId: setHeaderRef }}>\n <ToolsHeader\n header={header}\n filter={filter}\n pagination={pagination}\n preferences={preferences}\n setLastUserAction={setLastUserAction}\n />\n </CollectionLabelContext.Provider>\n </div>\n </div>\n )}\n {stickyHeader && (\n <StickyHeader\n ref={stickyHeaderRef}\n variant={computedVariant}\n theadProps={theadProps}\n wrapperRef={wrapperRefObject}\n theadRef={theadRef}\n secondaryWrapperRef={secondaryWrapperRef}\n tableRef={tableRefObject}\n onScroll={handleScroll}\n tableHasHeader={hasHeader}\n contentDensity={contentDensity}\n tableRole={tableRole}\n hasGroupedColumns={!!columnGroupsLayout && columnGroupsLayout.rows.length > 1}\n columnDefinitions={visibleColumnDefinitions}\n hasSelection={hasSelection}\n />\n )}\n </>\n }\n disableHeaderPaddings={true}\n disableContentPaddings={true}\n disableFooterPaddings={true}\n variant={toContainerVariant(computedVariant)}\n __disableFooterDivider={true}\n __disableStickyMobile={false}\n footer={\n hasFooter ? (\n <div className={clsx(styles['footer-wrapper'], styles[`variant-${computedVariant}`])}>\n <div className={clsx(styles.footer, hasFooterPagination && styles['footer-with-pagination'])}>\n {footer && <span>{footer}</span>}\n {hasFooterPagination && <div className={styles['footer-pagination']}>{pagination}</div>}\n </div>\n </div>\n ) : null\n }\n __stickyHeader={stickyHeader}\n __mobileStickyOffset={toolsHeaderHeight ?? 0}\n __stickyOffset={stickyHeaderVerticalOffset}\n {...focusMarkers.root}\n >\n <div\n ref={wrapperRef}\n className={clsx(styles.wrapper, styles[`variant-${computedVariant}`], {\n [styles['has-footer']]: hasFooter,\n [styles['has-header']]: hasHeader,\n })}\n style={stickyState.style.wrapper}\n onScroll={handleScroll}\n {...wrapperProps}\n >\n <div className={styles['wrapper-content-measure']} ref={wrapperMeasureMergedRef}></div>\n {!!renderAriaLive && !!firstIndex && !loading && (\n <InternalLiveRegion hidden={true} tagName=\"span\">\n <span>\n {renderAriaLive({\n firstIndex,\n lastIndex: firstIndex + items.length - 1,\n visibleItemsCount: allItems.length,\n totalItemsCount,\n })}\n </span>\n </InternalLiveRegion>\n )}\n <GridNavigationProvider\n keyboardNavigation={!!enableKeyboardNavigation}\n pageSize={GRID_NAVIGATION_PAGE_SIZE}\n getTable={() => tableRefObject.current}\n >\n <table\n {...performanceMarkAttributes}\n ref={tableRef}\n className={clsx(\n styles.table,\n resizableColumns && styles['table-layout-fixed'],\n columnGroupsLayout && columnGroupsLayout.rows.length > 1 && styles['has-grouped-header'],\n contentDensity === 'compact' && getVisualContextClassname('compact-table')\n )}\n {...getTableRoleProps({\n tableRole,\n totalItemsCount,\n totalColumnsCount: totalColumnsCount,\n headerRowCount,\n ariaLabel: ariaLabels?.tableLabel,\n ariaLabelledby,\n })}\n >\n {resizableColumns && columnGroupsLayout && columnGroupsLayout.rows.length > 1 && (\n <TableColGroup visibleColumnDefinitions={visibleColumnDefinitions} hasSelection={hasSelection} />\n )}\n <Thead\n ref={theadRef}\n hidden={stickyHeader}\n onFocusedComponentChange={focusId => stickyHeaderRef.current?.setFocus(focusId)}\n {...theadProps}\n />\n <tbody>\n {skeleton && allItems.length === 0 && loading ? (\n <SkeletonRows\n count={skeleton.totalRows}\n hasDataRows={false}\n totalColumnsCount={totalColumnsCount}\n loadingText={loadingText}\n hasSelection={hasSelection}\n hasFooter={hasFooter}\n stickyState={stickyState}\n tableRole={tableRole}\n ariaLabels={ariaLabels}\n cellVerticalAlign={cellVerticalAlign}\n computedVariant={computedVariant}\n visibleColumnDefinitions={visibleColumnDefinitions}\n wrapLines={wrapLines}\n resizableColumns={resizableColumns}\n colIndexOffset={colIndexOffset}\n />\n ) : !skeleton && (loading || allItems.length === 0) ? (\n <tr>\n <NoDataCell\n totalColumnsCount={totalColumnsCount}\n hasFooter={hasFooter}\n loading={loading}\n loadingText={loadingText}\n empty={empty}\n tableRef={tableRefObject}\n containerRef={wrapperMeasureRefObject}\n />\n </tr>\n ) : (\n allRows.map((row, rowIndex) => {\n const isFirstRow = rowIndex === 0;\n const hasSkeletonBelow =\n loading && skeleton && allItems.length > 0 && skeleton.totalRows - allItems.length > 0;\n const isLastDataRow = rowIndex === allRows.length - 1;\n const isLastRow = isLastDataRow && !hasSkeletonBelow;\n const rowExpandableProps =\n row.type === 'data' ? expandableRows.getExpandableItemProps(row.item) : undefined;\n const rowRoleProps = getTableRowRoleProps({\n tableRole,\n firstIndex,\n rowIndex,\n headerRowCount,\n level: row.type === 'loader' ? row.level : undefined,\n ...rowExpandableProps,\n });\n const getTableItemKey = (item: T) => getItemKey(trackBy, item, rowIndex);\n const sharedCellProps = {\n isFirstRow,\n isLastRow,\n isSelected: hasSelection && isRowSelected(row),\n isPrevSelected: hasSelection && !isFirstRow && isRowSelected(allRows[rowIndex - 1]),\n isNextSelected: hasSelection && !isLastDataRow && isRowSelected(allRows[rowIndex + 1]),\n isEvenRow: rowIndex % 2 === 0,\n stripedRows,\n hasSelection,\n hasFooter,\n stickyState,\n tableRole,\n };\n if (row.type === 'data') {\n const rowId = `${getTableItemKey(row.item)}`;\n return (\n <tr\n key={rowId}\n className={clsx(styles.row, sharedCellProps.isSelected && styles['row-selected'])}\n onFocus={({ currentTarget }) => {\n // When an element inside table row receives focus we want to adjust the scroll.\n // However, that behavior is unwanted when the focus is received as result of a click\n // as it causes the click to never reach the target element.\n if (!currentTarget.contains(getMouseDownTarget())) {\n stickyHeaderRef.current?.scrollToRow(currentTarget);\n }\n }}\n {...focusMarkers.item}\n onClick={onRowClickHandler && onRowClickHandler.bind(null, rowIndex, row.item)}\n onContextMenu={\n onRowContextMenuHandler && onRowContextMenuHandler.bind(null, rowIndex, row.item)\n }\n {...rowRoleProps}\n >\n {selection.getItemSelectionProps && (\n <TableBodySelectionCell\n {...sharedCellProps}\n columnId={selectionColumnId}\n selectionControlProps={{\n ...selection.getItemSelectionProps(row.item),\n onFocusDown: moveFocusDown,\n onFocusUp: moveFocusUp,\n rowIndex,\n itemKey: rowId,\n }}\n verticalAlign={cellVerticalAlign}\n tableVariant={computedVariant}\n />\n )}\n\n {visibleColumnDefinitions.map((column, colIndex) => {\n const colId = `${getColumnKey(column, colIndex)}`;\n const cellId = { row: rowId, col: colId };\n const isEditing = cellEditing.checkEditing(cellId);\n const successfulEdit = cellEditing.checkLastSuccessfulEdit(cellId);\n const isEditable = !!column.editConfig && !cellEditing.isLoading;\n const cellExpandableProps =\n isExpandable && colIndex === 0 ? rowExpandableProps : undefined;\n const counter = column.counter?.({\n item: row.item,\n itemsCount: rowExpandableProps?.itemsCount,\n selectedItemsCount: rowExpandableProps?.selectedItemsCount,\n });\n\n const analyticsMetadata: GeneratedAnalyticsMetadataFragment = {\n component: {\n innerContext: {\n position: `${rowIndex + 1},${colIndex + 1}`,\n columnId: column.id ? `${column.id}` : '',\n columnLabel: {\n selector: `table thead tr th:nth-child(${colIndex + (selectionType ? 2 : 1)})`,\n root: 'component',\n },\n item: rowId,\n } as GeneratedAnalyticsMetadataTableComponent['innerContext'],\n },\n };\n\n return (\n <TableBodyCell\n key={colId}\n {...sharedCellProps}\n resizableStyle={{\n width: column.width,\n minWidth: column.minWidth,\n maxWidth: column.maxWidth,\n }}\n ariaLabels={ariaLabels}\n column={column}\n item={row.item}\n wrapLines={wrapLines}\n isEditable={isEditable}\n isEditing={isEditing}\n isRowHeader={column.isRowHeader}\n successfulEdit={successfulEdit}\n resizableColumns={resizableColumns}\n onEditStart={() => cellEditing.startEdit(cellId)}\n onEditEnd={editCancelled => cellEditing.completeEdit(cellId, editCancelled)}\n submitEdit={cellEditing.submitEdit}\n columnId={column.id ?? colIndex}\n colIndex={colIndex + colIndexOffset}\n verticalAlign={column.verticalAlign ?? cellVerticalAlign}\n tableVariant={computedVariant}\n counter={counter}\n {...cellExpandableProps}\n {...getAnalyticsMetadataAttribute(analyticsMetadata)}\n />\n );\n })}\n </tr>\n );\n }\n const loaderSelectionProps =\n selection.getLoaderSelectionProps && selection.getLoaderSelectionProps(row.item);\n const rowSelection = selectionType === 'group' ? loaderSelectionProps : undefined;\n const loaderContent = getLoaderContent({\n item: row.item,\n loadingStatus: row.status,\n renderLoaderPending,\n renderLoaderLoading,\n renderLoaderError,\n renderLoaderEmpty,\n });\n const loaderCounter = renderLoaderCounter?.({\n item: row.item,\n loadingStatus: row.status,\n selected: !!rowSelection?.checked,\n });\n return (\n loaderContent && (\n <tr\n key={(row.item ? getTableItemKey(row.item) : 'root-' + rowIndex) + '-' + row.from}\n className={styles.row}\n {...rowRoleProps}\n >\n {selectionType ? (\n <TableBodySelectionCell\n {...sharedCellProps}\n columnId={selectionColumnId}\n verticalAlign={cellVerticalAlign}\n tableVariant={computedVariant}\n selectionControlProps={selectionType === 'group' ? loaderSelectionProps : undefined}\n isSelected={selectionType === 'group' && !!loaderSelectionProps?.checked}\n />\n ) : null}\n {visibleColumnDefinitions.map((column, colIndex) => (\n <TableLoaderCell\n key={getColumnKey(column, colIndex)}\n {...sharedCellProps}\n wrapLines={false}\n columnId={column.id ?? colIndex}\n colIndex={colIndex + colIndexOffset}\n isSelected={selectionType === 'group' && !!loaderSelectionProps?.checked}\n isRowHeader={colIndex === 0}\n level={row.level}\n item={row.item}\n trackBy={trackBy}\n counter={loaderCounter}\n >\n {loaderContent}\n </TableLoaderCell>\n ))}\n </tr>\n )\n );\n })\n )}\n {loading && skeleton && allItems.length > 0 && skeleton.totalRows - allItems.length > 0 && (\n <SkeletonRows\n count={skeleton.totalRows - allItems.length}\n hasDataRows={true}\n totalColumnsCount={totalColumnsCount}\n loadingText={loadingText}\n hasSelection={hasSelection}\n hasFooter={hasFooter}\n stickyState={stickyState}\n tableRole={tableRole}\n ariaLabels={ariaLabels}\n cellVerticalAlign={cellVerticalAlign}\n computedVariant={computedVariant}\n visibleColumnDefinitions={visibleColumnDefinitions}\n wrapLines={wrapLines}\n resizableColumns={resizableColumns}\n colIndexOffset={colIndexOffset}\n />\n )}\n </tbody>\n </table>\n </GridNavigationProvider>\n\n {resizableColumns && <ResizeTracker />}\n </div>\n\n <StickyScrollbar\n ref={scrollbarRef}\n wrapperRef={wrapperRefObject}\n tableRef={tableRefObject}\n onScroll={handleScroll}\n hasStickyColumns={hasStickyColumns}\n />\n </InternalContainer>\n </ColumnWidthsProvider>\n </TableComponentsContextProvider>\n </LinkDefaultVariantContext.Provider>\n );\n }\n) as TableForwardRefType;\n\nexport default InternalTable;\n"]}
1
+ {"version":3,"file":"internal.js","sourceRoot":"","sources":["../../../src/table/internal.tsx"],"names":[],"mappings":"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","sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport React, { useCallback, useImperativeHandle, useMemo, useRef } from 'react';\nimport clsx from 'clsx';\n\nimport { useContainerQuery } from '@cloudscape-design/component-toolkit';\nimport { useMergeRefs, warnOnce } from '@cloudscape-design/component-toolkit/internal';\nimport {\n GeneratedAnalyticsMetadataFragment,\n getAnalyticsMetadataAttribute,\n} from '@cloudscape-design/component-toolkit/internal/analytics-metadata';\n\nimport InternalContainer, { InternalContainerProps } from '../container/internal';\nimport { useFunnelSubStep } from '../internal/analytics/hooks/use-funnel';\nimport { getAnalyticsMetadataProps, getBaseProps } from '../internal/base-component';\nimport { getVisualContextClassname } from '../internal/components/visual-context';\nimport { CollectionLabelContext } from '../internal/context/collection-label-context';\nimport { LinkDefaultVariantContext } from '../internal/context/link-default-variant-context';\nimport {\n FilterRef,\n HeaderRef,\n PaginationRef,\n PreferencesRef,\n TableComponentsContextProvider,\n} from '../internal/context/table-component-context';\nimport { fireNonCancelableEvent } from '../internal/events';\nimport { InternalBaseComponentProps } from '../internal/hooks/use-base-component';\nimport { useMobile } from '../internal/hooks/use-mobile';\nimport useMouseDownTarget from '../internal/hooks/use-mouse-down-target';\nimport { usePerformanceMarks } from '../internal/hooks/use-performance-marks';\nimport { usePrevious } from '../internal/hooks/use-previous';\nimport { useScrollSync } from '../internal/hooks/use-scroll-sync';\nimport { useTableInteractionMetrics } from '../internal/hooks/use-table-interaction-metrics';\nimport { useVisualRefresh } from '../internal/hooks/use-visual-mode';\nimport { isDevelopment } from '../internal/is-development';\nimport { SomeRequired } from '../internal/types';\nimport InternalLiveRegion from '../live-region/internal';\nimport { GeneratedAnalyticsMetadataTableComponent } from './analytics-metadata/interfaces';\nimport { TableBodyCell } from './body-cell';\nimport { TableColGroup } from './column-groups/col-group';\nimport { useColumnGroups } from './column-groups/use-column-groups';\nimport { checkColumnWidths } from './column-widths-utils';\nimport { useExpandableTableProps } from './expandable-rows/expandable-rows-utils';\nimport { TableForwardRefType, TableProps, TableRow } from './interfaces';\nimport { NoDataCell } from './no-data-cell';\nimport { getLoaderContent } from './progressive-loading/items-loader';\nimport { TableLoaderCell } from './progressive-loading/loader-cell';\nimport { useProgressiveLoadingProps } from './progressive-loading/progressive-loading-utils';\nimport { ResizeTracker } from './resizer';\nimport { focusMarkers, useSelection, useSelectionFocusMove } from './selection';\nimport { TableBodySelectionCell } from './selection/selection-cell';\nimport { useGroupSelection } from './selection/use-group-selection';\nimport { SkeletonRows } from './skeleton-rows';\nimport { useStickyColumns } from './sticky-columns';\nimport StickyHeader, { StickyHeaderRef } from './sticky-header';\nimport { StickyScrollbar } from './sticky-scrollbar';\nimport {\n getTableRoleProps,\n getTableRowRoleProps,\n getTableWrapperRoleProps,\n GridNavigationProvider,\n TableRole,\n} from './table-role';\nimport Thead, { TheadProps } from './thead';\nimport ToolsHeader from './tools-header';\nimport { useCellEditing } from './use-cell-editing';\nimport { ColumnWidthDefinition, ColumnWidthsProvider, DEFAULT_COLUMN_WIDTH } from './use-column-widths';\nimport { usePreventStickyClickScroll } from './use-prevent-sticky-click-scroll';\nimport { useRowEvents } from './use-row-events';\nimport useTableFocusNavigation from './use-table-focus-navigation';\nimport { checkSortingState, getColumnKey, getItemKey, getVisibleColumnDefinitions, toContainerVariant } from './utils';\n\nimport buttonStyles from '../button/styles.css.js';\nimport headerStyles from '../header/styles.css.js';\nimport styles from './styles.css.js';\n\nconst GRID_NAVIGATION_PAGE_SIZE = 10;\nconst SELECTION_COLUMN_WIDTH = 54;\nconst selectionColumnId = Symbol('selection-column-id');\n\ntype InternalTableProps<T> = SomeRequired<\n TableProps<T>,\n 'items' | 'selectedItems' | 'variant' | 'firstIndex' | 'cellVerticalAlign'\n> &\n InternalBaseComponentProps & {\n __funnelSubStepProps?: InternalContainerProps['__funnelSubStepProps'];\n };\n\nexport const InternalTableAsSubstep = React.forwardRef(\n <T,>(props: InternalTableProps<T>, ref: React.Ref<TableProps.Ref>) => {\n const { funnelSubStepProps } = useFunnelSubStep();\n\n const tableProps: InternalTableProps<T> = {\n ...props,\n __funnelSubStepProps: funnelSubStepProps,\n };\n\n return <InternalTable {...tableProps} ref={ref} />;\n }\n) as TableForwardRefType;\n\nconst InternalTable = React.forwardRef(\n <T,>(\n {\n header,\n footer,\n empty,\n filter,\n pagination,\n preferences,\n items,\n columnDefinitions,\n groupDefinitions,\n trackBy,\n loading,\n loadingText,\n skeleton,\n selectionType: externalSelectionType,\n selectedItems,\n isItemDisabled,\n ariaLabels,\n onSelectionChange,\n onSortingChange,\n sortingColumn,\n sortingDescending,\n sortingDisabled,\n visibleColumns,\n stickyHeader,\n stickyHeaderVerticalOffset,\n onRowClick,\n onRowContextMenu,\n wrapLines,\n stripedRows,\n contentDensity,\n submitEdit,\n onEditCancel,\n resizableColumns,\n onColumnWidthsChange,\n variant,\n __internalRootRef,\n totalItemsCount,\n firstIndex,\n renderAriaLive,\n stickyColumns,\n columnDisplay,\n enableKeyboardNavigation,\n expandableRows: externalExpandableRows,\n getLoadingStatus,\n renderLoaderPending,\n renderLoaderLoading,\n renderLoaderError,\n renderLoaderEmpty,\n renderLoaderCounter,\n cellVerticalAlign,\n __funnelSubStepProps,\n ...rest\n }: InternalTableProps<T>,\n ref: React.Ref<TableProps.Ref>\n ) => {\n // Keyboard navigation defaults to `true` for tables with expandable rows.\n if (externalExpandableRows && enableKeyboardNavigation === undefined) {\n enableKeyboardNavigation = true;\n }\n\n const baseProps = getBaseProps(rest);\n\n const prevStickyHeader = usePrevious(stickyHeader);\n if (prevStickyHeader !== undefined && !!stickyHeader !== !!prevStickyHeader) {\n warnOnce(\n 'Table',\n `\\`stickyHeader\\` has changed from \"${prevStickyHeader}\" to \"${stickyHeader}\". It is not recommended to change the value of this property during the component lifecycle. Please set it to either \"true\" or \"false\" unconditionally.`\n );\n }\n\n const isMobile = useMobile();\n\n const expandableRows = useExpandableTableProps({\n items,\n expandableRows: externalExpandableRows,\n trackBy,\n ariaLabels,\n });\n const { allItems, isExpandable } = expandableRows;\n const { allRows } = useProgressiveLoadingProps({ getLoadingStatus, expandableRows });\n const selectionType = expandableRows.hasGroupSelection ? ('group' as const) : externalSelectionType;\n\n const [containerWidth, wrapperMeasureRef] = useContainerQuery<number>(rect => rect.borderBoxWidth);\n const wrapperMeasureRefObject = useRef(null);\n const wrapperMeasureMergedRef = useMergeRefs(wrapperMeasureRef, wrapperMeasureRefObject);\n\n const [tableWidth, tableMeasureRef] = useContainerQuery<number>(rect => rect.borderBoxWidth);\n const tableRefObject = useRef(null);\n\n const secondaryWrapperRef = React.useRef<HTMLDivElement>(null);\n const theadRef = useRef<HTMLTableRowElement>(null);\n const stickyHeaderRef = React.useRef<StickyHeaderRef>(null);\n const scrollbarRef = React.useRef<HTMLDivElement>(null);\n const { cancelEdit, ...cellEditing } = useCellEditing({ onCancel: onEditCancel, onSubmit: submitEdit });\n const paginationRef = useRef<PaginationRef>({});\n const filterRef = useRef<FilterRef>({});\n const preferencesRef = useRef<PreferencesRef>({});\n const headerRef = useRef<HeaderRef>({});\n /* istanbul ignore next: performance marks do not work in JSDOM */\n const getHeaderText = () =>\n toolsHeaderPerformanceMarkRef.current?.querySelector<HTMLElement>(`.${headerStyles['heading-text']}`)\n ?.innerText ?? toolsHeaderPerformanceMarkRef.current?.innerText;\n const getPatternIdentifier = () => {\n const hasActions = !!toolsHeaderPerformanceMarkRef.current?.querySelector<HTMLElement>(\n `.${headerStyles.actions} .${buttonStyles.button}`\n );\n\n if (hasActions) {\n return 'table-with-actions';\n }\n\n return '';\n };\n\n const performanceMarkAttributes = usePerformanceMarks(\n 'table',\n () => !loading,\n tableRefObject,\n () => ({\n loading: loading ?? false,\n header: getHeaderText(),\n }),\n [loading]\n );\n\n const analyticsMetadata = getAnalyticsMetadataProps(rest);\n const interactionMetadata = () => {\n const filterData = filterRef.current;\n const paginationData = paginationRef.current;\n return JSON.stringify({\n filterData,\n paginationData,\n sortingColumn: sortingColumn?.sortingField,\n sortingOrder: sortingColumn ? (sortingDescending ? 'Descending' : 'Ascending') : undefined,\n });\n };\n const getComponentConfiguration = () => {\n const headerData = headerRef.current;\n const filterData = filterRef.current;\n const paginationData = paginationRef.current;\n const preferencesData = preferencesRef.current;\n\n return {\n variant,\n flowType: rest.analyticsMetadata?.flowType,\n resourceType: rest.analyticsMetadata?.resourceType,\n instanceIdentifier: analyticsMetadata?.instanceIdentifier,\n taskName: analyticsMetadata?.instanceIdentifier ?? getHeaderText(),\n uxTaskName: getHeaderText(),\n patternIdentifier: getPatternIdentifier(),\n sortedBy: {\n columnId: sortingColumn?.sortingField,\n sortingOrder: sortingColumn ? (sortingDescending ? 'desc' : 'asc') : undefined,\n },\n filtered: filterData?.filtered ?? null,\n filteredBy: filterData?.filteredBy ?? [],\n filteredCount: filterData?.filterCount ?? null,\n totalNumberOfResources: headerData?.totalCount ?? null,\n tablePreferences: {\n visibleColumns: preferencesData?.visibleColumns ?? [],\n resourcesPerPage: preferencesData?.pageSize ?? null,\n },\n pagination: {\n currentPageIndex: paginationData?.currentPageIndex ?? 0,\n totalNumberOfPages: paginationData?.openEnd ? null : (paginationData?.totalPageCount ?? null),\n openEnd: Boolean(paginationData?.openEnd),\n },\n resourcesSelected: selectedItems?.length > 0,\n };\n };\n\n const { setLastUserAction, tableInteractionAttributes } = useTableInteractionMetrics({\n elementRef: tableRefObject,\n loading,\n items,\n instanceIdentifier: analyticsMetadata?.instanceIdentifier,\n itemCount: items.length,\n getComponentIdentifier: getHeaderText,\n getComponentConfiguration,\n interactionMetadata,\n });\n\n useImperativeHandle(\n ref,\n () => ({\n scrollToTop: stickyHeaderRef.current?.scrollToTop || (() => undefined),\n cancelEdit,\n }),\n [cancelEdit]\n );\n\n const wrapperRefObject = useRef<HTMLDivElement>(null);\n const handleScroll = useScrollSync([wrapperRefObject, scrollbarRef, secondaryWrapperRef]);\n\n const { moveFocusDown, moveFocusUp, moveFocus } = useSelectionFocusMove(selectionType, allItems.length);\n const { onRowClickHandler, onRowContextMenuHandler } = useRowEvents({ onRowClick, onRowContextMenu });\n\n const visibleColumnDefinitions = useMemo(\n () => getVisibleColumnDefinitions({ columnDefinitions, columnDisplay, visibleColumns }),\n [columnDefinitions, columnDisplay, visibleColumns]\n );\n\n const visibleColumnIds = visibleColumnDefinitions.map((col, idx) => getColumnKey(col, idx).toString());\n\n const { groupColumnMap, ...columnGroupsLayout } = useColumnGroups(\n columnDefinitions,\n visibleColumnIds,\n groupDefinitions,\n columnDisplay\n );\n\n const selectionProps = {\n items: allItems,\n rootItems: items,\n trackBy,\n selectedItems,\n totalItemsCount,\n selectionType,\n isItemDisabled,\n onSelectionChange,\n ariaLabels: {\n ...ariaLabels,\n // `selectionGroupLabel` should not be part of the selection control, it is already part of the selection column header.\n selectionGroupLabel: undefined,\n },\n loading,\n expandableRows,\n getLoadingStatus,\n setLastUserAction,\n };\n const normalSelection = useSelection(selectionProps);\n const groupSelection = useGroupSelection(selectionProps);\n const selection = selectionType === 'group' ? groupSelection : normalSelection;\n const isRowSelected = (row: TableRow<T>) => {\n if (row.type === 'data') {\n return selection.isItemSelected(row.item);\n }\n if (selectionType !== 'group') {\n return false;\n }\n // Group loader is selected when its parent is selected.\n return !row.item ? expandableRows.groupSelection.inverted : selection.isItemSelected(row.item);\n };\n\n if (isDevelopment) {\n if (resizableColumns) {\n checkColumnWidths(columnDefinitions);\n }\n if (sortingColumn?.sortingComparator) {\n checkSortingState(columnDefinitions, sortingColumn.sortingComparator);\n }\n }\n\n const isVisualRefresh = useVisualRefresh();\n const computedVariant = isVisualRefresh\n ? variant\n : ['embedded', 'full-page'].indexOf(variant) > -1\n ? 'container'\n : variant;\n const hasHeader = !!(header || filter || pagination || preferences);\n const hasSelection = !!selectionType;\n const hasFooterPagination = isMobile && variant === 'full-page' && !!pagination;\n const hasFooter = !!footer || hasFooterPagination;\n\n const headerIdRef = useRef<string | undefined>(undefined);\n const isLabelledByHeader = !ariaLabels?.tableLabel && !!header;\n const ariaLabelledby = isLabelledByHeader && headerIdRef.current ? headerIdRef.current : undefined;\n const setHeaderRef = useCallback((id: string) => {\n headerIdRef.current = id;\n }, []);\n\n const { visibleColumnWidthsWithSelection, visibleColumnIdsWithSelection } = useMemo(() => {\n const widths: ColumnWidthDefinition[] = [];\n const ids: PropertyKey[] = [];\n if (hasSelection) {\n widths.push({ id: selectionColumnId, width: SELECTION_COLUMN_WIDTH });\n ids.push(selectionColumnId);\n }\n for (let columnIndex = 0; columnIndex < visibleColumnDefinitions.length; columnIndex++) {\n const columnId = getColumnKey(visibleColumnDefinitions[columnIndex], columnIndex);\n widths.push({ ...visibleColumnDefinitions[columnIndex], id: columnId });\n ids.push(columnId);\n }\n return { visibleColumnWidthsWithSelection: widths, visibleColumnIdsWithSelection: ids };\n }, [hasSelection, visibleColumnDefinitions]);\n\n const stickyState = useStickyColumns({\n visibleColumns: visibleColumnIdsWithSelection,\n stickyColumnsFirst: (stickyColumns?.first ?? 0) + (stickyColumns?.first && hasSelection ? 1 : 0),\n stickyColumnsLast: stickyColumns?.last || 0,\n });\n\n const hasStickyColumns = !!((stickyColumns?.first ?? 0) + (stickyColumns?.last ?? 0) > 0);\n const hasEditableCells = !!columnDefinitions.find(col => col.editConfig);\n\n let tableRole: TableRole = 'table';\n if (isExpandable) {\n tableRole = 'treegrid';\n } else if (enableKeyboardNavigation) {\n tableRole = 'grid';\n } else if (hasEditableCells) {\n tableRole = 'grid-default';\n }\n\n const theadProps: TheadProps = {\n selectionType,\n getSelectAllProps: selection.getSelectAllProps,\n columnDefinitions: visibleColumnDefinitions,\n groupDefinitions,\n columnGroupsLayout,\n variant: computedVariant,\n tableVariant: computedVariant,\n wrapLines,\n resizableColumns,\n sortingColumn,\n sortingDisabled,\n sortingDescending,\n onSortingChange,\n onFocusMove: moveFocus,\n onResizeFinish(newWidth) {\n const widthsDetail = columnDefinitions.map(\n (column, index) =>\n newWidth.get(getColumnKey(column, index)) || (column.width as number) || DEFAULT_COLUMN_WIDTH\n );\n const widthsChanged = widthsDetail.some((width, index) => columnDefinitions[index].width !== width);\n if (widthsChanged) {\n fireNonCancelableEvent(onColumnWidthsChange, { widths: widthsDetail });\n }\n },\n singleSelectionHeaderAriaLabel: ariaLabels?.selectionGroupLabel,\n resizerRoleDescription: ariaLabels?.resizerRoleDescription,\n resizerTooltipText: ariaLabels?.resizerTooltipText,\n stripedRows,\n stickyState,\n stickyColumnsFirst: stickyColumns?.first ?? 0,\n stickyColumnsLast: stickyColumns?.last ?? 0,\n selectionColumnId,\n tableRole,\n isExpandable,\n setLastUserAction,\n };\n\n usePreventStickyClickScroll(wrapperRefObject);\n\n const wrapperRef = useMergeRefs(wrapperRefObject, stickyState.refs.wrapper);\n const tableRef = useMergeRefs(tableMeasureRef, tableRefObject, stickyState.refs.table);\n\n const wrapperProps = getTableWrapperRoleProps({\n tableRole,\n isScrollable: !!(tableWidth && containerWidth && tableWidth > containerWidth),\n ariaLabel: ariaLabels?.tableLabel,\n ariaLabelledby,\n });\n\n const getMouseDownTarget = useMouseDownTarget();\n\n useTableFocusNavigation({\n enableKeyboardNavigation,\n selectionType,\n tableRoot: tableRefObject,\n columnDefinitions: visibleColumnDefinitions,\n numRows: allRows?.length,\n });\n const toolsHeaderPerformanceMarkRef = useRef<HTMLDivElement>(null);\n // If is mobile, we take into consideration the AppLayout's mobile bar and we subtract the tools wrapper height so only the table header is sticky\n const [toolsHeaderHeight, toolsHeaderWrapperMeasureRef] = useContainerQuery(rect => rect.borderBoxHeight);\n const toolsHeaderWrapper = useMergeRefs(toolsHeaderPerformanceMarkRef, toolsHeaderWrapperMeasureRef);\n\n const colIndexOffset = selectionType ? 1 : 0;\n const totalColumnsCount = visibleColumnDefinitions.length + colIndexOffset;\n const headerRowCount = columnGroupsLayout?.rows.length || 1;\n\n return (\n <LinkDefaultVariantContext.Provider value={{ defaultVariant: 'primary' }}>\n <TableComponentsContextProvider value={{ paginationRef, filterRef, preferencesRef, headerRef }}>\n <ColumnWidthsProvider\n visibleColumns={visibleColumnWidthsWithSelection}\n resizableColumns={resizableColumns}\n containerRef={wrapperMeasureRefObject}\n groupColumnMap={groupColumnMap}\n >\n <InternalContainer\n {...baseProps}\n {...tableInteractionAttributes}\n __internalRootRef={__internalRootRef}\n className={clsx(baseProps.className, styles.root)}\n __funnelSubStepProps={__funnelSubStepProps}\n __fullPage={variant === 'full-page'}\n header={\n <>\n {hasHeader && (\n <div>\n <div\n ref={toolsHeaderWrapper}\n className={clsx(styles['header-controls'], styles[`variant-${computedVariant}`])}\n >\n <CollectionLabelContext.Provider value={{ assignId: setHeaderRef }}>\n <ToolsHeader\n header={header}\n filter={filter}\n pagination={pagination}\n preferences={preferences}\n setLastUserAction={setLastUserAction}\n />\n </CollectionLabelContext.Provider>\n </div>\n </div>\n )}\n {stickyHeader && (\n <StickyHeader\n ref={stickyHeaderRef}\n variant={computedVariant}\n theadProps={theadProps}\n wrapperRef={wrapperRefObject}\n theadRef={theadRef}\n secondaryWrapperRef={secondaryWrapperRef}\n tableRef={tableRefObject}\n onScroll={handleScroll}\n tableHasHeader={hasHeader}\n contentDensity={contentDensity}\n tableRole={tableRole}\n hasGroupedColumns={!!columnGroupsLayout && columnGroupsLayout.rows.length > 1}\n columnDefinitions={visibleColumnDefinitions}\n hasSelection={hasSelection}\n />\n )}\n </>\n }\n disableHeaderPaddings={true}\n disableContentPaddings={true}\n disableFooterPaddings={true}\n variant={toContainerVariant(computedVariant)}\n __disableFooterDivider={true}\n __disableStickyMobile={false}\n footer={\n hasFooter ? (\n <div className={clsx(styles['footer-wrapper'], styles[`variant-${computedVariant}`])}>\n <div className={clsx(styles.footer, hasFooterPagination && styles['footer-with-pagination'])}>\n {footer && <span>{footer}</span>}\n {hasFooterPagination && <div className={styles['footer-pagination']}>{pagination}</div>}\n </div>\n </div>\n ) : null\n }\n __stickyHeader={stickyHeader}\n __mobileStickyOffset={toolsHeaderHeight ?? 0}\n __stickyOffset={stickyHeaderVerticalOffset}\n {...focusMarkers.root}\n >\n <div\n ref={wrapperRef}\n className={clsx(styles.wrapper, styles[`variant-${computedVariant}`], {\n [styles['has-footer']]: hasFooter,\n [styles['has-header']]: hasHeader,\n })}\n style={stickyState.style.wrapper}\n onScroll={handleScroll}\n {...wrapperProps}\n >\n <div className={styles['wrapper-content-measure']} ref={wrapperMeasureMergedRef}></div>\n {!!renderAriaLive && !!firstIndex && !loading && (\n <InternalLiveRegion hidden={true} tagName=\"span\">\n <span>\n {renderAriaLive({\n firstIndex,\n lastIndex: firstIndex + items.length - 1,\n visibleItemsCount: allItems.length,\n totalItemsCount,\n })}\n </span>\n </InternalLiveRegion>\n )}\n <GridNavigationProvider\n keyboardNavigation={!!enableKeyboardNavigation}\n pageSize={GRID_NAVIGATION_PAGE_SIZE}\n getTable={() => tableRefObject.current}\n >\n <table\n {...performanceMarkAttributes}\n ref={tableRef}\n className={clsx(\n styles.table,\n resizableColumns && styles['table-layout-fixed'],\n columnGroupsLayout && columnGroupsLayout.rows.length > 1 && styles['has-grouped-header'],\n contentDensity === 'compact' && getVisualContextClassname('compact-table')\n )}\n {...getTableRoleProps({\n tableRole,\n totalItemsCount,\n totalColumnsCount: totalColumnsCount,\n headerRowCount,\n ariaLabel: ariaLabels?.tableLabel,\n ariaLabelledby,\n })}\n >\n {resizableColumns && columnGroupsLayout && columnGroupsLayout.rows.length > 1 && (\n <TableColGroup visibleColumnDefinitions={visibleColumnDefinitions} hasSelection={hasSelection} />\n )}\n <Thead\n ref={theadRef}\n hidden={stickyHeader}\n onFocusedComponentChange={focusId => stickyHeaderRef.current?.setFocus(focusId)}\n {...theadProps}\n />\n <tbody>\n {skeleton && allItems.length === 0 && loading ? (\n <SkeletonRows\n count={skeleton.totalRows}\n hasDataRows={false}\n totalColumnsCount={totalColumnsCount}\n loadingText={loadingText}\n hasSelection={hasSelection}\n hasFooter={hasFooter}\n stickyState={stickyState}\n tableRole={tableRole}\n ariaLabels={ariaLabels}\n cellVerticalAlign={cellVerticalAlign}\n computedVariant={computedVariant}\n visibleColumnDefinitions={visibleColumnDefinitions}\n wrapLines={wrapLines}\n resizableColumns={resizableColumns}\n colIndexOffset={colIndexOffset}\n />\n ) : !skeleton && (loading || allItems.length === 0) ? (\n <tr>\n <NoDataCell\n totalColumnsCount={totalColumnsCount}\n hasFooter={hasFooter}\n loading={loading}\n loadingText={loadingText}\n empty={empty}\n tableRef={tableRefObject}\n containerRef={wrapperMeasureRefObject}\n />\n </tr>\n ) : (\n allRows.map((row, rowIndex) => {\n const isFirstRow = rowIndex === 0;\n const hasSkeletonBelow =\n loading && skeleton && allItems.length > 0 && skeleton.totalRows - allItems.length > 0;\n const isLastDataRow = rowIndex === allRows.length - 1;\n const isLastRow = isLastDataRow && !hasSkeletonBelow;\n const rowExpandableProps =\n row.type === 'data' ? expandableRows.getExpandableItemProps(row.item) : undefined;\n const rowRoleProps = getTableRowRoleProps({\n tableRole,\n firstIndex,\n rowIndex,\n headerRowCount,\n level: row.type === 'loader' ? row.level : undefined,\n ...rowExpandableProps,\n });\n const getTableItemKey = (item: T) => getItemKey(trackBy, item, rowIndex);\n const sharedCellProps = {\n isFirstRow,\n isLastRow,\n isSelected: hasSelection && isRowSelected(row),\n isPrevSelected: hasSelection && !isFirstRow && isRowSelected(allRows[rowIndex - 1]),\n isNextSelected: hasSelection && !isLastDataRow && isRowSelected(allRows[rowIndex + 1]),\n isEvenRow: rowIndex % 2 === 0,\n stripedRows,\n hasSelection,\n hasFooter,\n stickyState,\n tableRole,\n };\n if (row.type === 'data') {\n const rowId = `${getTableItemKey(row.item)}`;\n return (\n <tr\n key={rowId}\n className={clsx(styles.row, sharedCellProps.isSelected && styles['row-selected'])}\n onFocus={({ currentTarget }) => {\n // When an element inside table row receives focus we want to adjust the scroll.\n // However, that behavior is unwanted when the focus is received as result of a click\n // as it causes the click to never reach the target element.\n if (!currentTarget.contains(getMouseDownTarget())) {\n stickyHeaderRef.current?.scrollToRow(currentTarget);\n }\n }}\n {...focusMarkers.item}\n onClick={onRowClickHandler && onRowClickHandler.bind(null, rowIndex, row.item)}\n onContextMenu={\n onRowContextMenuHandler && onRowContextMenuHandler.bind(null, rowIndex, row.item)\n }\n {...rowRoleProps}\n >\n {selection.getItemSelectionProps && (\n <TableBodySelectionCell\n {...sharedCellProps}\n columnId={selectionColumnId}\n selectionControlProps={{\n ...selection.getItemSelectionProps(row.item),\n onFocusDown: moveFocusDown,\n onFocusUp: moveFocusUp,\n rowIndex,\n itemKey: rowId,\n }}\n verticalAlign={cellVerticalAlign}\n tableVariant={computedVariant}\n />\n )}\n\n {visibleColumnDefinitions.map((column, colIndex) => {\n const colId = `${getColumnKey(column, colIndex)}`;\n const cellId = { row: rowId, col: colId };\n const isEditing = cellEditing.checkEditing(cellId);\n const successfulEdit = cellEditing.checkLastSuccessfulEdit(cellId);\n const isEditable = !!column.editConfig && !cellEditing.isLoading;\n const cellExpandableProps =\n isExpandable && colIndex === 0 ? rowExpandableProps : undefined;\n const counter = column.counter?.({\n item: row.item,\n itemsCount: rowExpandableProps?.itemsCount,\n selectedItemsCount: rowExpandableProps?.selectedItemsCount,\n });\n\n const analyticsMetadata: GeneratedAnalyticsMetadataFragment = {\n component: {\n innerContext: {\n position: `${rowIndex + 1},${colIndex + 1}`,\n columnId: column.id ? `${column.id}` : '',\n columnLabel: {\n selector: `table thead tr th:nth-child(${colIndex + (selectionType ? 2 : 1)})`,\n root: 'component',\n },\n item: rowId,\n } as GeneratedAnalyticsMetadataTableComponent['innerContext'],\n },\n };\n\n return (\n <TableBodyCell\n key={colId}\n {...sharedCellProps}\n resizableStyle={{\n width: column.width,\n minWidth: column.minWidth,\n maxWidth: column.maxWidth,\n }}\n ariaLabels={ariaLabels}\n column={column}\n item={row.item}\n wrapLines={wrapLines}\n isEditable={isEditable}\n isEditing={isEditing}\n isRowHeader={column.isRowHeader}\n successfulEdit={successfulEdit}\n resizableColumns={resizableColumns}\n onEditStart={() => cellEditing.startEdit(cellId)}\n onEditEnd={editCancelled => cellEditing.completeEdit(cellId, editCancelled)}\n submitEdit={cellEditing.submitEdit}\n columnId={column.id ?? colIndex}\n colIndex={colIndex + colIndexOffset}\n verticalAlign={column.verticalAlign ?? cellVerticalAlign}\n tableVariant={computedVariant}\n counter={counter}\n {...cellExpandableProps}\n {...getAnalyticsMetadataAttribute(analyticsMetadata)}\n />\n );\n })}\n </tr>\n );\n }\n const loaderSelectionProps =\n selection.getLoaderSelectionProps && selection.getLoaderSelectionProps(row.item);\n const rowSelection = selectionType === 'group' ? loaderSelectionProps : undefined;\n const loaderContent = getLoaderContent({\n item: row.item,\n loadingStatus: row.status,\n renderLoaderPending,\n renderLoaderLoading,\n renderLoaderError,\n renderLoaderEmpty,\n });\n const loaderCounter = renderLoaderCounter?.({\n item: row.item,\n loadingStatus: row.status,\n selected: !!rowSelection?.checked,\n });\n return (\n loaderContent && (\n <tr\n key={(row.item ? getTableItemKey(row.item) : 'root-' + rowIndex) + '-' + row.from}\n className={styles.row}\n {...rowRoleProps}\n >\n {selectionType ? (\n <TableBodySelectionCell\n {...sharedCellProps}\n columnId={selectionColumnId}\n verticalAlign={cellVerticalAlign}\n tableVariant={computedVariant}\n selectionControlProps={selectionType === 'group' ? loaderSelectionProps : undefined}\n isSelected={selectionType === 'group' && !!loaderSelectionProps?.checked}\n />\n ) : null}\n {visibleColumnDefinitions.map((column, colIndex) => (\n <TableLoaderCell\n key={getColumnKey(column, colIndex)}\n {...sharedCellProps}\n wrapLines={false}\n columnId={column.id ?? colIndex}\n colIndex={colIndex + colIndexOffset}\n isSelected={selectionType === 'group' && !!loaderSelectionProps?.checked}\n isRowHeader={colIndex === 0}\n level={row.level}\n item={row.item}\n trackBy={trackBy}\n counter={loaderCounter}\n >\n {loaderContent}\n </TableLoaderCell>\n ))}\n </tr>\n )\n );\n })\n )}\n {loading && skeleton && allItems.length > 0 && skeleton.totalRows - allItems.length > 0 && (\n <SkeletonRows\n count={skeleton.totalRows - allItems.length}\n hasDataRows={true}\n totalColumnsCount={totalColumnsCount}\n loadingText={loadingText}\n hasSelection={hasSelection}\n hasFooter={hasFooter}\n stickyState={stickyState}\n tableRole={tableRole}\n ariaLabels={ariaLabels}\n cellVerticalAlign={cellVerticalAlign}\n computedVariant={computedVariant}\n visibleColumnDefinitions={visibleColumnDefinitions}\n wrapLines={wrapLines}\n resizableColumns={resizableColumns}\n colIndexOffset={colIndexOffset}\n />\n )}\n </tbody>\n </table>\n </GridNavigationProvider>\n\n {resizableColumns && <ResizeTracker />}\n </div>\n\n <StickyScrollbar\n ref={scrollbarRef}\n wrapperRef={wrapperRefObject}\n tableRef={tableRefObject}\n onScroll={handleScroll}\n hasStickyColumns={hasStickyColumns}\n />\n </InternalContainer>\n </ColumnWidthsProvider>\n </TableComponentsContextProvider>\n </LinkDefaultVariantContext.Provider>\n );\n }\n) as TableForwardRefType;\n\nexport default InternalTable;\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"use-column-widths.d.ts","sourceRoot":"","sources":["../../../src/table/use-column-widths.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAiE,MAAM,OAAO,CAAC;AAKtF,OAAO,EAAE,gBAAgB,EAAoB,MAAM,uBAAuB,CAAC;AAE3E,eAAO,MAAM,oBAAoB,MAAM,CAAC;AAExC,MAAM,WAAW,qBAAsB,SAAQ,gBAAgB;IAC7D,EAAE,EAAE,WAAW,CAAC;CACjB;AA8CD,UAAU,aAAa;IACrB,eAAe,CAAC,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,WAAW,GAAG,gBAAgB,CAAC;IAC1E,YAAY,EAAE,GAAG,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;IACvC,YAAY,EAAE,CAAC,QAAQ,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;IAChE,WAAW,EAAE,CAAC,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;IAC9D,OAAO,EAAE,CAAC,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,IAAI,EAAE,IAAI,GAAG,WAAW,KAAK,IAAI,CAAC;IACpF,MAAM,EAAE,CAAC,QAAQ,EAAE,WAAW,EAAE,IAAI,EAAE,IAAI,GAAG,WAAW,KAAK,IAAI,CAAC;CACnE;AAED,QAAA,MAAM,aAAa,8BAOjB,CAAC;AAEH,UAAU,kBAAkB;IAC1B,cAAc,EAAE,SAAS,qBAAqB,EAAE,CAAC;IACjD,gBAAgB,EAAE,OAAO,GAAG,SAAS,CAAC;IACtC,YAAY,EAAE,KAAK,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;IAC3C,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,cAAc,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;CACxC;AAED,wBAAgB,oBAAoB,CAAC,EACnC,cAAc,EACd,gBAAgB,EAChB,YAAY,EACZ,cAAc,EACd,QAAQ,GACT,EAAE,kBAAkB,eAgLpB;AAED,wBAAgB,eAAe,kBAE9B"}
1
+ {"version":3,"file":"use-column-widths.d.ts","sourceRoot":"","sources":["../../../src/table/use-column-widths.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAiE,MAAM,OAAO,CAAC;AAKtF,OAAO,EAAE,gBAAgB,EAAoB,MAAM,uBAAuB,CAAC;AAE3E,eAAO,MAAM,oBAAoB,MAAM,CAAC;AAExC,MAAM,WAAW,qBAAsB,SAAQ,gBAAgB;IAC7D,EAAE,EAAE,WAAW,CAAC;CACjB;AA8CD,UAAU,aAAa;IACrB,eAAe,CAAC,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,WAAW,GAAG,gBAAgB,CAAC;IAC1E,YAAY,EAAE,GAAG,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;IACvC,YAAY,EAAE,CAAC,QAAQ,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;IAChE,WAAW,EAAE,CAAC,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;IAC9D,OAAO,EAAE,CAAC,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,IAAI,EAAE,IAAI,GAAG,WAAW,KAAK,IAAI,CAAC;IACpF,MAAM,EAAE,CAAC,QAAQ,EAAE,WAAW,EAAE,IAAI,EAAE,IAAI,GAAG,WAAW,KAAK,IAAI,CAAC;CACnE;AAED,QAAA,MAAM,aAAa,8BAOjB,CAAC;AAEH,UAAU,kBAAkB;IAC1B,cAAc,EAAE,SAAS,qBAAqB,EAAE,CAAC;IACjD,gBAAgB,EAAE,OAAO,GAAG,SAAS,CAAC;IACtC,YAAY,EAAE,KAAK,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;IAC3C,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,cAAc,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;CACxC;AAED,wBAAgB,oBAAoB,CAAC,EACnC,cAAc,EACd,gBAAgB,EAChB,YAAY,EACZ,cAAc,EACd,QAAQ,GACT,EAAE,kBAAkB,eAsMpB;AAED,wBAAgB,eAAe,kBAE9B"}
@@ -104,6 +104,15 @@ export function ColumnWidthsProvider({ visibleColumns, resizableColumns, contain
104
104
  maxWidth: !resizableColumns ? column.maxWidth : undefined,
105
105
  };
106
106
  };
107
+ // Mirrors the current primary cell widths onto the sticky header copies.
108
+ const syncStickyColumnWidths = useStableCallback(() => {
109
+ for (const { id } of visibleColumns) {
110
+ const element = stickyCellsRef.current.get(id);
111
+ if (element) {
112
+ setElementWidths(element, getColumnStyles(true, id));
113
+ }
114
+ }
115
+ });
107
116
  // Imperatively sets width style for a cell avoiding React state.
108
117
  // This allows setting the style as soon container's size change is observed.
109
118
  const updateColumnWidths = useStableCallback(() => {
@@ -130,13 +139,24 @@ export function ColumnWidthsProvider({ visibleColumns, resizableColumns, contain
130
139
  }
131
140
  }
132
141
  // Sticky column widths must always be synchronized regardless of columnWidths state.
133
- for (const { id } of visibleColumns) {
134
- const element = stickyCellsRef.current.get(id);
135
- if (element) {
136
- setElementWidths(element, getColumnStyles(true, id));
137
- }
138
- }
142
+ syncStickyColumnWidths();
139
143
  });
144
+ // Re-syncs the sticky header copies when the primary cells change width without a
145
+ // corresponding change to the column definitions. This happens with auto-layout
146
+ // columns whose widths depend on the rendered content (e.g. paginating or filtering).
147
+ // Fixed-width and resizable columns don't resize on data changes, so this stays idle.
148
+ // The effect re-observes when the set of visible columns changes, since that swaps
149
+ // the underlying cell elements.
150
+ useEffect(() => {
151
+ if (typeof ResizeObserver === 'undefined') {
152
+ return;
153
+ }
154
+ const observer = new ResizeObserver(() => syncStickyColumnWidths());
155
+ for (const element of cellsRef.current.values()) {
156
+ observer.observe(element);
157
+ }
158
+ return () => observer.disconnect();
159
+ }, [syncStickyColumnWidths, visibleColumns]);
140
160
  // Observes container size and requests an update to the last cell width as it depends on the container's width.
141
161
  useResizeObserver(containerRef, ({ contentBoxWidth: containerWidth }) => {
142
162
  containerWidthRef.current = containerWidth;
@@ -1 +1 @@
1
- {"version":3,"file":"use-column-widths.js","sourceRoot":"","sources":["../../../src/table/use-column-widths.tsx"],"names":[],"mappings":"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","sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport React, { createContext, useContext, useEffect, useRef, useState } from 'react';\n\nimport { useResizeObserver, useStableCallback } from '@cloudscape-design/component-toolkit/internal';\nimport { getLogicalBoundingClientRect } from '@cloudscape-design/component-toolkit/internal';\n\nimport { ColumnWidthStyle, setElementWidths } from './column-widths-utils';\n\nexport const DEFAULT_COLUMN_WIDTH = 120;\n\nexport interface ColumnWidthDefinition extends ColumnWidthStyle {\n id: PropertyKey;\n}\n\nfunction readWidths(\n getCell: (columnId: PropertyKey) => null | HTMLElement,\n visibleColumns: readonly ColumnWidthDefinition[]\n) {\n const result = new Map<PropertyKey, number>();\n for (let index = 0; index < visibleColumns.length; index++) {\n const column = visibleColumns[index];\n let width = (column.width as number) || 0;\n const minWidth = (column.minWidth as number) || width || DEFAULT_COLUMN_WIDTH;\n if (\n !width && // read width from the DOM if it is missing in the config\n index !== visibleColumns.length - 1 // skip reading for the last column, because it expands to fully fit the container\n ) {\n const colEl = getCell(column.id);\n width = colEl ? getLogicalBoundingClientRect(colEl).inlineSize : DEFAULT_COLUMN_WIDTH;\n }\n result.set(column.id, Math.max(width, minWidth));\n }\n return result;\n}\n\nfunction updateWidths(\n visibleColumns: readonly ColumnWidthDefinition[],\n oldWidths: Map<PropertyKey, number>,\n newWidth: number,\n columnId: PropertyKey\n): Map<PropertyKey, number> {\n const column = visibleColumns.find(column => column.id === columnId);\n let minWidth = DEFAULT_COLUMN_WIDTH;\n if (typeof column?.width === 'number' && column.width < DEFAULT_COLUMN_WIDTH) {\n minWidth = column?.width;\n }\n if (typeof column?.minWidth === 'number') {\n minWidth = column?.minWidth;\n }\n newWidth = Math.max(newWidth, minWidth);\n if (oldWidths.get(columnId) === newWidth) {\n return oldWidths;\n }\n const newWidths = new Map(oldWidths);\n newWidths.set(columnId, newWidth);\n return newWidths;\n}\n\ninterface WidthsContext {\n getColumnStyles(sticky: boolean, columnId: PropertyKey): ColumnWidthStyle;\n columnWidths: Map<PropertyKey, number>;\n updateColumn: (columnId: PropertyKey, newWidth: number) => void;\n updateGroup: (groupId: PropertyKey, newWidth: number) => void;\n setCell: (sticky: boolean, columnId: PropertyKey, node: null | HTMLElement) => void;\n setCol: (columnId: PropertyKey, node: null | HTMLElement) => void;\n}\n\nconst WidthsContext = createContext<WidthsContext>({\n getColumnStyles: () => ({}),\n columnWidths: new Map(),\n updateColumn: () => {},\n updateGroup: () => {},\n setCell: () => {},\n setCol: () => {},\n});\n\ninterface WidthProviderProps {\n visibleColumns: readonly ColumnWidthDefinition[];\n resizableColumns: boolean | undefined;\n containerRef: React.RefObject<HTMLElement>;\n children: React.ReactNode;\n groupColumnMap?: Map<string, string[]>;\n}\n\nexport function ColumnWidthsProvider({\n visibleColumns,\n resizableColumns,\n containerRef,\n groupColumnMap,\n children,\n}: WidthProviderProps) {\n const visibleColumnsRef = useRef<PropertyKey[] | null>(null);\n const containerWidthRef = useRef(0);\n const [columnWidths, setColumnWidths] = useState<null | Map<PropertyKey, number>>(null);\n\n const cellsRef = useRef(new Map<PropertyKey, HTMLElement>());\n const stickyCellsRef = useRef(new Map<PropertyKey, HTMLElement>());\n const colsRef = useRef(new Map<PropertyKey, HTMLElement>());\n const hasColElements = useRef(false);\n const getCell = (columnId: PropertyKey): null | HTMLElement => cellsRef.current.get(columnId) ?? null;\n const setCell = (sticky: boolean, columnId: PropertyKey, node: null | HTMLElement) => {\n const ref = sticky ? stickyCellsRef : cellsRef;\n if (node) {\n ref.current.set(columnId, node);\n } else {\n ref.current.delete(columnId);\n }\n };\n const setCol = (columnId: PropertyKey, node: null | HTMLElement) => {\n if (node) {\n colsRef.current.set(columnId, node);\n hasColElements.current = true;\n } else {\n colsRef.current.delete(columnId);\n hasColElements.current = colsRef.current.size > 0;\n }\n };\n\n const getColumnStyles = (sticky: boolean, columnId: PropertyKey): ColumnWidthStyle => {\n const column = visibleColumns.find(col => col.id === columnId);\n\n if (sticky) {\n // For sticky headers, mirror the primary cell's width.\n // Try DOM measurement first (handles columns not in visibleColumns like selection).\n const measured = cellsRef.current.get(columnId)?.getBoundingClientRect().width;\n /* istanbul ignore next: getBoundingClientRect returns 0 in JSDOM */\n if (measured) {\n return { width: measured };\n }\n return { width: columnWidths?.get(columnId) ?? column?.width };\n }\n\n if (!column) {\n return {};\n }\n\n if (resizableColumns && columnWidths) {\n const isLastColumn = column.id === visibleColumns[visibleColumns.length - 1]?.id;\n const totalWidth = visibleColumns.reduce(\n (sum, { id }) => sum + (columnWidths.get(id) || DEFAULT_COLUMN_WIDTH),\n 0\n );\n if (isLastColumn && containerWidthRef.current > totalWidth) {\n return { width: 'auto', minWidth: column.minWidth };\n }\n return { width: columnWidths.get(column.id), minWidth: column.minWidth };\n }\n\n return {\n width: column.width,\n minWidth: column.minWidth,\n maxWidth: !resizableColumns ? column.maxWidth : undefined,\n };\n };\n\n // Imperatively sets width style for a cell avoiding React state.\n // This allows setting the style as soon container's size change is observed.\n const updateColumnWidths = useStableCallback(() => {\n // When col elements exist (grouped columns), apply widths to <col> elements.\n // With table-layout:fixed, <col> widths control the actual column widths.\n if (hasColElements.current) {\n for (const { id } of visibleColumns) {\n const colElement = colsRef.current.get(id);\n if (colElement) {\n setElementWidths(colElement, getColumnStyles(false, id));\n }\n const element = cellsRef.current.get(id);\n if (element) {\n setElementWidths(element, getColumnStyles(false, id));\n }\n }\n } else {\n for (const { id } of visibleColumns) {\n const element = cellsRef.current.get(id);\n if (element) {\n setElementWidths(element, getColumnStyles(false, id));\n }\n }\n }\n\n // Sticky column widths must always be synchronized regardless of columnWidths state.\n for (const { id } of visibleColumns) {\n const element = stickyCellsRef.current.get(id);\n if (element) {\n setElementWidths(element, getColumnStyles(true, id));\n }\n }\n });\n\n // Observes container size and requests an update to the last cell width as it depends on the container's width.\n useResizeObserver(containerRef, ({ contentBoxWidth: containerWidth }) => {\n containerWidthRef.current = containerWidth;\n requestAnimationFrame(() => updateColumnWidths());\n });\n\n // The widths of the dynamically added columns (after the first render) if not set explicitly\n // will default to the DEFAULT_COLUMN_WIDTH.\n useEffect(() => {\n updateColumnWidths();\n\n if (!resizableColumns) {\n return;\n }\n let updated = false;\n const newColumnWidths = new Map(columnWidths);\n const lastVisible = visibleColumnsRef.current;\n if (lastVisible) {\n for (let index = 0; index < visibleColumns.length; index++) {\n const column = visibleColumns[index];\n if (!columnWidths?.get(column.id) && lastVisible.indexOf(column.id) === -1) {\n updated = true;\n const width = (column.width as number) || DEFAULT_COLUMN_WIDTH;\n const minWidth = (column.minWidth as number) || width;\n newColumnWidths.set(column.id, Math.max(width, minWidth));\n }\n }\n if (updated) {\n setColumnWidths(newColumnWidths);\n }\n }\n visibleColumnsRef.current = visibleColumns.map(column => column.id);\n }, [columnWidths, resizableColumns, visibleColumns, updateColumnWidths]);\n\n // Read the actual column widths after the first render to employ the browser defaults for\n // those columns without explicit width.\n useEffect(() => {\n if (!resizableColumns) {\n return;\n }\n setColumnWidths(() => readWidths(getCell, visibleColumns));\n // This code is intended to run only at the first render and should not re-run when table props change\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n function updateColumn(columnId: PropertyKey, newWidth: number) {\n setColumnWidths(columnWidths => updateWidths(visibleColumns, columnWidths ?? new Map(), newWidth, columnId));\n }\n\n function updateGroup(groupId: PropertyKey, newGroupWidth: number) {\n if (!columnWidths || !groupColumnMap) {\n return;\n }\n\n const columnIds = groupColumnMap.get(String(groupId)) ?? [];\n const rightmostColumn = columnIds[columnIds.length - 1];\n if (!rightmostColumn) {\n return;\n }\n\n let currentGroupWidth = 0;\n for (const id of columnIds) {\n currentGroupWidth += columnWidths.get(id) || DEFAULT_COLUMN_WIDTH;\n }\n\n const delta = newGroupWidth - currentGroupWidth;\n const currentColumnWidth = columnWidths.get(rightmostColumn) || DEFAULT_COLUMN_WIDTH;\n updateColumn(rightmostColumn, currentColumnWidth + delta);\n }\n\n return (\n <WidthsContext.Provider\n value={{ getColumnStyles, columnWidths: columnWidths ?? new Map(), updateColumn, updateGroup, setCell, setCol }}\n >\n {children}\n </WidthsContext.Provider>\n );\n}\n\nexport function useColumnWidths() {\n return useContext(WidthsContext);\n}\n"]}
1
+ {"version":3,"file":"use-column-widths.js","sourceRoot":"","sources":["../../../src/table/use-column-widths.tsx"],"names":[],"mappings":"AAAA,qEAAqE;AACrE,sCAAsC;AACtC,OAAO,KAAK,EAAE,EAAE,aAAa,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAEtF,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,+CAA+C,CAAC;AACrG,OAAO,EAAE,4BAA4B,EAAE,MAAM,+CAA+C,CAAC;AAE7F,OAAO,EAAoB,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAE3E,MAAM,CAAC,MAAM,oBAAoB,GAAG,GAAG,CAAC;AAMxC,SAAS,UAAU,CACjB,OAAsD,EACtD,cAAgD;IAEhD,MAAM,MAAM,GAAG,IAAI,GAAG,EAAuB,CAAC;IAC9C,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,cAAc,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,CAAC;QAC3D,MAAM,MAAM,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC;QACrC,IAAI,KAAK,GAAI,MAAM,CAAC,KAAgB,IAAI,CAAC,CAAC;QAC1C,MAAM,QAAQ,GAAI,MAAM,CAAC,QAAmB,IAAI,KAAK,IAAI,oBAAoB,CAAC;QAC9E,IACE,CAAC,KAAK,IAAI,yDAAyD;YACnE,KAAK,KAAK,cAAc,CAAC,MAAM,GAAG,CAAC,CAAC,kFAAkF;UACtH,CAAC;YACD,MAAM,KAAK,GAAG,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;YACjC,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,4BAA4B,CAAC,KAAK,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,oBAAoB,CAAC;QACxF,CAAC;QACD,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,EAAE,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC;IACnD,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,YAAY,CACnB,cAAgD,EAChD,SAAmC,EACnC,QAAgB,EAChB,QAAqB;IAErB,MAAM,MAAM,GAAG,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE,KAAK,QAAQ,CAAC,CAAC;IACrE,IAAI,QAAQ,GAAG,oBAAoB,CAAC;IACpC,IAAI,OAAO,CAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,KAAK,CAAA,KAAK,QAAQ,IAAI,MAAM,CAAC,KAAK,GAAG,oBAAoB,EAAE,CAAC;QAC7E,QAAQ,GAAG,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,KAAK,CAAC;IAC3B,CAAC;IACD,IAAI,OAAO,CAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,QAAQ,CAAA,KAAK,QAAQ,EAAE,CAAC;QACzC,QAAQ,GAAG,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,QAAQ,CAAC;IAC9B,CAAC;IACD,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;IACxC,IAAI,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,QAAQ,EAAE,CAAC;QACzC,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC,SAAS,CAAC,CAAC;IACrC,SAAS,CAAC,GAAG,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;IAClC,OAAO,SAAS,CAAC;AACnB,CAAC;AAWD,MAAM,aAAa,GAAG,aAAa,CAAgB;IACjD,eAAe,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC;IAC3B,YAAY,EAAE,IAAI,GAAG,EAAE;IACvB,YAAY,EAAE,GAAG,EAAE,GAAE,CAAC;IACtB,WAAW,EAAE,GAAG,EAAE,GAAE,CAAC;IACrB,OAAO,EAAE,GAAG,EAAE,GAAE,CAAC;IACjB,MAAM,EAAE,GAAG,EAAE,GAAE,CAAC;CACjB,CAAC,CAAC;AAUH,MAAM,UAAU,oBAAoB,CAAC,EACnC,cAAc,EACd,gBAAgB,EAChB,YAAY,EACZ,cAAc,EACd,QAAQ,GACW;IACnB,MAAM,iBAAiB,GAAG,MAAM,CAAuB,IAAI,CAAC,CAAC;IAC7D,MAAM,iBAAiB,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;IACpC,MAAM,CAAC,YAAY,EAAE,eAAe,CAAC,GAAG,QAAQ,CAAkC,IAAI,CAAC,CAAC;IAExF,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,GAAG,EAA4B,CAAC,CAAC;IAC7D,MAAM,cAAc,GAAG,MAAM,CAAC,IAAI,GAAG,EAA4B,CAAC,CAAC;IACnE,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,GAAG,EAA4B,CAAC,CAAC;IAC5D,MAAM,cAAc,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;IACrC,MAAM,OAAO,GAAG,CAAC,QAAqB,EAAsB,EAAE,WAAC,OAAA,MAAA,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,mCAAI,IAAI,CAAA,EAAA,CAAC;IACtG,MAAM,OAAO,GAAG,CAAC,MAAe,EAAE,QAAqB,EAAE,IAAwB,EAAE,EAAE;QACnF,MAAM,GAAG,GAAG,MAAM,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,QAAQ,CAAC;QAC/C,IAAI,IAAI,EAAE,CAAC;YACT,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;QAClC,CAAC;aAAM,CAAC;YACN,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QAC/B,CAAC;IACH,CAAC,CAAC;IACF,MAAM,MAAM,GAAG,CAAC,QAAqB,EAAE,IAAwB,EAAE,EAAE;QACjE,IAAI,IAAI,EAAE,CAAC;YACT,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;YACpC,cAAc,CAAC,OAAO,GAAG,IAAI,CAAC;QAChC,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;YACjC,cAAc,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,IAAI,GAAG,CAAC,CAAC;QACpD,CAAC;IACH,CAAC,CAAC;IAEF,MAAM,eAAe,GAAG,CAAC,MAAe,EAAE,QAAqB,EAAoB,EAAE;;QACnF,MAAM,MAAM,GAAG,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,KAAK,QAAQ,CAAC,CAAC;QAE/D,IAAI,MAAM,EAAE,CAAC;YACX,uDAAuD;YACvD,oFAAoF;YACpF,MAAM,QAAQ,GAAG,MAAA,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,0CAAE,qBAAqB,GAAG,KAAK,CAAC;YAC/E,oEAAoE;YACpE,IAAI,QAAQ,EAAE,CAAC;gBACb,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC;YAC7B,CAAC;YACD,OAAO,EAAE,KAAK,EAAE,MAAA,YAAY,aAAZ,YAAY,uBAAZ,YAAY,CAAE,GAAG,CAAC,QAAQ,CAAC,mCAAI,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,KAAK,EAAE,CAAC;QACjE,CAAC;QAED,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,OAAO,EAAE,CAAC;QACZ,CAAC;QAED,IAAI,gBAAgB,IAAI,YAAY,EAAE,CAAC;YACrC,MAAM,YAAY,GAAG,MAAM,CAAC,EAAE,MAAK,MAAA,cAAc,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC,CAAC,0CAAE,EAAE,CAAA,CAAC;YACjF,MAAM,UAAU,GAAG,cAAc,CAAC,MAAM,CACtC,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,oBAAoB,CAAC,EACrE,CAAC,CACF,CAAC;YACF,IAAI,YAAY,IAAI,iBAAiB,CAAC,OAAO,GAAG,UAAU,EAAE,CAAC;gBAC3D,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE,CAAC;YACtD,CAAC;YACD,OAAO,EAAE,KAAK,EAAE,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE,CAAC;QAC3E,CAAC;QAED,OAAO;YACL,KAAK,EAAE,MAAM,CAAC,KAAK;YACnB,QAAQ,EAAE,MAAM,CAAC,QAAQ;YACzB,QAAQ,EAAE,CAAC,gBAAgB,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS;SAC1D,CAAC;IACJ,CAAC,CAAC;IAEF,yEAAyE;IACzE,MAAM,sBAAsB,GAAG,iBAAiB,CAAC,GAAG,EAAE;QACpD,KAAK,MAAM,EAAE,EAAE,EAAE,IAAI,cAAc,EAAE,CAAC;YACpC,MAAM,OAAO,GAAG,cAAc,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAC/C,IAAI,OAAO,EAAE,CAAC;gBACZ,gBAAgB,CAAC,OAAO,EAAE,eAAe,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC;YACvD,CAAC;QACH,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,iEAAiE;IACjE,6EAA6E;IAC7E,MAAM,kBAAkB,GAAG,iBAAiB,CAAC,GAAG,EAAE;QAChD,6EAA6E;QAC7E,0EAA0E;QAC1E,IAAI,cAAc,CAAC,OAAO,EAAE,CAAC;YAC3B,KAAK,MAAM,EAAE,EAAE,EAAE,IAAI,cAAc,EAAE,CAAC;gBACpC,MAAM,UAAU,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;gBAC3C,IAAI,UAAU,EAAE,CAAC;oBACf,gBAAgB,CAAC,UAAU,EAAE,eAAe,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC;gBAC3D,CAAC;gBACD,MAAM,OAAO,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;gBACzC,IAAI,OAAO,EAAE,CAAC;oBACZ,gBAAgB,CAAC,OAAO,EAAE,eAAe,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC;gBACxD,CAAC;YACH,CAAC;QACH,CAAC;aAAM,CAAC;YACN,KAAK,MAAM,EAAE,EAAE,EAAE,IAAI,cAAc,EAAE,CAAC;gBACpC,MAAM,OAAO,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;gBACzC,IAAI,OAAO,EAAE,CAAC;oBACZ,gBAAgB,CAAC,OAAO,EAAE,eAAe,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC;gBACxD,CAAC;YACH,CAAC;QACH,CAAC;QAED,qFAAqF;QACrF,sBAAsB,EAAE,CAAC;IAC3B,CAAC,CAAC,CAAC;IAEH,kFAAkF;IAClF,gFAAgF;IAChF,sFAAsF;IACtF,sFAAsF;IACtF,mFAAmF;IACnF,gCAAgC;IAChC,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,OAAO,cAAc,KAAK,WAAW,EAAE,CAAC;YAC1C,OAAO;QACT,CAAC;QACD,MAAM,QAAQ,GAAG,IAAI,cAAc,CAAC,GAAG,EAAE,CAAC,sBAAsB,EAAE,CAAC,CAAC;QACpE,KAAK,MAAM,OAAO,IAAI,QAAQ,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC;YAChD,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QAC5B,CAAC;QACD,OAAO,GAAG,EAAE,CAAC,QAAQ,CAAC,UAAU,EAAE,CAAC;IACrC,CAAC,EAAE,CAAC,sBAAsB,EAAE,cAAc,CAAC,CAAC,CAAC;IAE7C,gHAAgH;IAChH,iBAAiB,CAAC,YAAY,EAAE,CAAC,EAAE,eAAe,EAAE,cAAc,EAAE,EAAE,EAAE;QACtE,iBAAiB,CAAC,OAAO,GAAG,cAAc,CAAC;QAC3C,qBAAqB,CAAC,GAAG,EAAE,CAAC,kBAAkB,EAAE,CAAC,CAAC;IACpD,CAAC,CAAC,CAAC;IAEH,6FAA6F;IAC7F,4CAA4C;IAC5C,SAAS,CAAC,GAAG,EAAE;QACb,kBAAkB,EAAE,CAAC;QAErB,IAAI,CAAC,gBAAgB,EAAE,CAAC;YACtB,OAAO;QACT,CAAC;QACD,IAAI,OAAO,GAAG,KAAK,CAAC;QACpB,MAAM,eAAe,GAAG,IAAI,GAAG,CAAC,YAAY,CAAC,CAAC;QAC9C,MAAM,WAAW,GAAG,iBAAiB,CAAC,OAAO,CAAC;QAC9C,IAAI,WAAW,EAAE,CAAC;YAChB,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,cAAc,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,CAAC;gBAC3D,MAAM,MAAM,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC;gBACrC,IAAI,CAAC,CAAA,YAAY,aAAZ,YAAY,uBAAZ,YAAY,CAAE,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAA,IAAI,WAAW,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;oBAC3E,OAAO,GAAG,IAAI,CAAC;oBACf,MAAM,KAAK,GAAI,MAAM,CAAC,KAAgB,IAAI,oBAAoB,CAAC;oBAC/D,MAAM,QAAQ,GAAI,MAAM,CAAC,QAAmB,IAAI,KAAK,CAAC;oBACtD,eAAe,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,EAAE,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC;gBAC5D,CAAC;YACH,CAAC;YACD,IAAI,OAAO,EAAE,CAAC;gBACZ,eAAe,CAAC,eAAe,CAAC,CAAC;YACnC,CAAC;QACH,CAAC;QACD,iBAAiB,CAAC,OAAO,GAAG,cAAc,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IACtE,CAAC,EAAE,CAAC,YAAY,EAAE,gBAAgB,EAAE,cAAc,EAAE,kBAAkB,CAAC,CAAC,CAAC;IAEzE,0FAA0F;IAC1F,wCAAwC;IACxC,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,CAAC,gBAAgB,EAAE,CAAC;YACtB,OAAO;QACT,CAAC;QACD,eAAe,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC,CAAC;QAC3D,sGAAsG;QACtG,uDAAuD;IACzD,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,SAAS,YAAY,CAAC,QAAqB,EAAE,QAAgB;QAC3D,eAAe,CAAC,YAAY,CAAC,EAAE,CAAC,YAAY,CAAC,cAAc,EAAE,YAAY,aAAZ,YAAY,cAAZ,YAAY,GAAI,IAAI,GAAG,EAAE,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC;IAC/G,CAAC;IAED,SAAS,WAAW,CAAC,OAAoB,EAAE,aAAqB;;QAC9D,IAAI,CAAC,YAAY,IAAI,CAAC,cAAc,EAAE,CAAC;YACrC,OAAO;QACT,CAAC;QAED,MAAM,SAAS,GAAG,MAAA,cAAc,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,mCAAI,EAAE,CAAC;QAC5D,MAAM,eAAe,GAAG,SAAS,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QACxD,IAAI,CAAC,eAAe,EAAE,CAAC;YACrB,OAAO;QACT,CAAC;QAED,IAAI,iBAAiB,GAAG,CAAC,CAAC;QAC1B,KAAK,MAAM,EAAE,IAAI,SAAS,EAAE,CAAC;YAC3B,iBAAiB,IAAI,YAAY,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,oBAAoB,CAAC;QACpE,CAAC;QAED,MAAM,KAAK,GAAG,aAAa,GAAG,iBAAiB,CAAC;QAChD,MAAM,kBAAkB,GAAG,YAAY,CAAC,GAAG,CAAC,eAAe,CAAC,IAAI,oBAAoB,CAAC;QACrF,YAAY,CAAC,eAAe,EAAE,kBAAkB,GAAG,KAAK,CAAC,CAAC;IAC5D,CAAC;IAED,OAAO,CACL,oBAAC,aAAa,CAAC,QAAQ,IACrB,KAAK,EAAE,EAAE,eAAe,EAAE,YAAY,EAAE,YAAY,aAAZ,YAAY,cAAZ,YAAY,GAAI,IAAI,GAAG,EAAE,EAAE,YAAY,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,EAAE,IAE9G,QAAQ,CACc,CAC1B,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,eAAe;IAC7B,OAAO,UAAU,CAAC,aAAa,CAAC,CAAC;AACnC,CAAC","sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport React, { createContext, useContext, useEffect, useRef, useState } from 'react';\n\nimport { useResizeObserver, useStableCallback } from '@cloudscape-design/component-toolkit/internal';\nimport { getLogicalBoundingClientRect } from '@cloudscape-design/component-toolkit/internal';\n\nimport { ColumnWidthStyle, setElementWidths } from './column-widths-utils';\n\nexport const DEFAULT_COLUMN_WIDTH = 120;\n\nexport interface ColumnWidthDefinition extends ColumnWidthStyle {\n id: PropertyKey;\n}\n\nfunction readWidths(\n getCell: (columnId: PropertyKey) => null | HTMLElement,\n visibleColumns: readonly ColumnWidthDefinition[]\n) {\n const result = new Map<PropertyKey, number>();\n for (let index = 0; index < visibleColumns.length; index++) {\n const column = visibleColumns[index];\n let width = (column.width as number) || 0;\n const minWidth = (column.minWidth as number) || width || DEFAULT_COLUMN_WIDTH;\n if (\n !width && // read width from the DOM if it is missing in the config\n index !== visibleColumns.length - 1 // skip reading for the last column, because it expands to fully fit the container\n ) {\n const colEl = getCell(column.id);\n width = colEl ? getLogicalBoundingClientRect(colEl).inlineSize : DEFAULT_COLUMN_WIDTH;\n }\n result.set(column.id, Math.max(width, minWidth));\n }\n return result;\n}\n\nfunction updateWidths(\n visibleColumns: readonly ColumnWidthDefinition[],\n oldWidths: Map<PropertyKey, number>,\n newWidth: number,\n columnId: PropertyKey\n): Map<PropertyKey, number> {\n const column = visibleColumns.find(column => column.id === columnId);\n let minWidth = DEFAULT_COLUMN_WIDTH;\n if (typeof column?.width === 'number' && column.width < DEFAULT_COLUMN_WIDTH) {\n minWidth = column?.width;\n }\n if (typeof column?.minWidth === 'number') {\n minWidth = column?.minWidth;\n }\n newWidth = Math.max(newWidth, minWidth);\n if (oldWidths.get(columnId) === newWidth) {\n return oldWidths;\n }\n const newWidths = new Map(oldWidths);\n newWidths.set(columnId, newWidth);\n return newWidths;\n}\n\ninterface WidthsContext {\n getColumnStyles(sticky: boolean, columnId: PropertyKey): ColumnWidthStyle;\n columnWidths: Map<PropertyKey, number>;\n updateColumn: (columnId: PropertyKey, newWidth: number) => void;\n updateGroup: (groupId: PropertyKey, newWidth: number) => void;\n setCell: (sticky: boolean, columnId: PropertyKey, node: null | HTMLElement) => void;\n setCol: (columnId: PropertyKey, node: null | HTMLElement) => void;\n}\n\nconst WidthsContext = createContext<WidthsContext>({\n getColumnStyles: () => ({}),\n columnWidths: new Map(),\n updateColumn: () => {},\n updateGroup: () => {},\n setCell: () => {},\n setCol: () => {},\n});\n\ninterface WidthProviderProps {\n visibleColumns: readonly ColumnWidthDefinition[];\n resizableColumns: boolean | undefined;\n containerRef: React.RefObject<HTMLElement>;\n children: React.ReactNode;\n groupColumnMap?: Map<string, string[]>;\n}\n\nexport function ColumnWidthsProvider({\n visibleColumns,\n resizableColumns,\n containerRef,\n groupColumnMap,\n children,\n}: WidthProviderProps) {\n const visibleColumnsRef = useRef<PropertyKey[] | null>(null);\n const containerWidthRef = useRef(0);\n const [columnWidths, setColumnWidths] = useState<null | Map<PropertyKey, number>>(null);\n\n const cellsRef = useRef(new Map<PropertyKey, HTMLElement>());\n const stickyCellsRef = useRef(new Map<PropertyKey, HTMLElement>());\n const colsRef = useRef(new Map<PropertyKey, HTMLElement>());\n const hasColElements = useRef(false);\n const getCell = (columnId: PropertyKey): null | HTMLElement => cellsRef.current.get(columnId) ?? null;\n const setCell = (sticky: boolean, columnId: PropertyKey, node: null | HTMLElement) => {\n const ref = sticky ? stickyCellsRef : cellsRef;\n if (node) {\n ref.current.set(columnId, node);\n } else {\n ref.current.delete(columnId);\n }\n };\n const setCol = (columnId: PropertyKey, node: null | HTMLElement) => {\n if (node) {\n colsRef.current.set(columnId, node);\n hasColElements.current = true;\n } else {\n colsRef.current.delete(columnId);\n hasColElements.current = colsRef.current.size > 0;\n }\n };\n\n const getColumnStyles = (sticky: boolean, columnId: PropertyKey): ColumnWidthStyle => {\n const column = visibleColumns.find(col => col.id === columnId);\n\n if (sticky) {\n // For sticky headers, mirror the primary cell's width.\n // Try DOM measurement first (handles columns not in visibleColumns like selection).\n const measured = cellsRef.current.get(columnId)?.getBoundingClientRect().width;\n /* istanbul ignore next: getBoundingClientRect returns 0 in JSDOM */\n if (measured) {\n return { width: measured };\n }\n return { width: columnWidths?.get(columnId) ?? column?.width };\n }\n\n if (!column) {\n return {};\n }\n\n if (resizableColumns && columnWidths) {\n const isLastColumn = column.id === visibleColumns[visibleColumns.length - 1]?.id;\n const totalWidth = visibleColumns.reduce(\n (sum, { id }) => sum + (columnWidths.get(id) || DEFAULT_COLUMN_WIDTH),\n 0\n );\n if (isLastColumn && containerWidthRef.current > totalWidth) {\n return { width: 'auto', minWidth: column.minWidth };\n }\n return { width: columnWidths.get(column.id), minWidth: column.minWidth };\n }\n\n return {\n width: column.width,\n minWidth: column.minWidth,\n maxWidth: !resizableColumns ? column.maxWidth : undefined,\n };\n };\n\n // Mirrors the current primary cell widths onto the sticky header copies.\n const syncStickyColumnWidths = useStableCallback(() => {\n for (const { id } of visibleColumns) {\n const element = stickyCellsRef.current.get(id);\n if (element) {\n setElementWidths(element, getColumnStyles(true, id));\n }\n }\n });\n\n // Imperatively sets width style for a cell avoiding React state.\n // This allows setting the style as soon container's size change is observed.\n const updateColumnWidths = useStableCallback(() => {\n // When col elements exist (grouped columns), apply widths to <col> elements.\n // With table-layout:fixed, <col> widths control the actual column widths.\n if (hasColElements.current) {\n for (const { id } of visibleColumns) {\n const colElement = colsRef.current.get(id);\n if (colElement) {\n setElementWidths(colElement, getColumnStyles(false, id));\n }\n const element = cellsRef.current.get(id);\n if (element) {\n setElementWidths(element, getColumnStyles(false, id));\n }\n }\n } else {\n for (const { id } of visibleColumns) {\n const element = cellsRef.current.get(id);\n if (element) {\n setElementWidths(element, getColumnStyles(false, id));\n }\n }\n }\n\n // Sticky column widths must always be synchronized regardless of columnWidths state.\n syncStickyColumnWidths();\n });\n\n // Re-syncs the sticky header copies when the primary cells change width without a\n // corresponding change to the column definitions. This happens with auto-layout\n // columns whose widths depend on the rendered content (e.g. paginating or filtering).\n // Fixed-width and resizable columns don't resize on data changes, so this stays idle.\n // The effect re-observes when the set of visible columns changes, since that swaps\n // the underlying cell elements.\n useEffect(() => {\n if (typeof ResizeObserver === 'undefined') {\n return;\n }\n const observer = new ResizeObserver(() => syncStickyColumnWidths());\n for (const element of cellsRef.current.values()) {\n observer.observe(element);\n }\n return () => observer.disconnect();\n }, [syncStickyColumnWidths, visibleColumns]);\n\n // Observes container size and requests an update to the last cell width as it depends on the container's width.\n useResizeObserver(containerRef, ({ contentBoxWidth: containerWidth }) => {\n containerWidthRef.current = containerWidth;\n requestAnimationFrame(() => updateColumnWidths());\n });\n\n // The widths of the dynamically added columns (after the first render) if not set explicitly\n // will default to the DEFAULT_COLUMN_WIDTH.\n useEffect(() => {\n updateColumnWidths();\n\n if (!resizableColumns) {\n return;\n }\n let updated = false;\n const newColumnWidths = new Map(columnWidths);\n const lastVisible = visibleColumnsRef.current;\n if (lastVisible) {\n for (let index = 0; index < visibleColumns.length; index++) {\n const column = visibleColumns[index];\n if (!columnWidths?.get(column.id) && lastVisible.indexOf(column.id) === -1) {\n updated = true;\n const width = (column.width as number) || DEFAULT_COLUMN_WIDTH;\n const minWidth = (column.minWidth as number) || width;\n newColumnWidths.set(column.id, Math.max(width, minWidth));\n }\n }\n if (updated) {\n setColumnWidths(newColumnWidths);\n }\n }\n visibleColumnsRef.current = visibleColumns.map(column => column.id);\n }, [columnWidths, resizableColumns, visibleColumns, updateColumnWidths]);\n\n // Read the actual column widths after the first render to employ the browser defaults for\n // those columns without explicit width.\n useEffect(() => {\n if (!resizableColumns) {\n return;\n }\n setColumnWidths(() => readWidths(getCell, visibleColumns));\n // This code is intended to run only at the first render and should not re-run when table props change\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n function updateColumn(columnId: PropertyKey, newWidth: number) {\n setColumnWidths(columnWidths => updateWidths(visibleColumns, columnWidths ?? new Map(), newWidth, columnId));\n }\n\n function updateGroup(groupId: PropertyKey, newGroupWidth: number) {\n if (!columnWidths || !groupColumnMap) {\n return;\n }\n\n const columnIds = groupColumnMap.get(String(groupId)) ?? [];\n const rightmostColumn = columnIds[columnIds.length - 1];\n if (!rightmostColumn) {\n return;\n }\n\n let currentGroupWidth = 0;\n for (const id of columnIds) {\n currentGroupWidth += columnWidths.get(id) || DEFAULT_COLUMN_WIDTH;\n }\n\n const delta = newGroupWidth - currentGroupWidth;\n const currentColumnWidth = columnWidths.get(rightmostColumn) || DEFAULT_COLUMN_WIDTH;\n updateColumn(rightmostColumn, currentColumnWidth + delta);\n }\n\n return (\n <WidthsContext.Provider\n value={{ getColumnStyles, columnWidths: columnWidths ?? new Map(), updateColumn, updateGroup, setCell, setCol }}\n >\n {children}\n </WidthsContext.Provider>\n );\n}\n\nexport function useColumnWidths() {\n return useContext(WidthsContext);\n}\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cloudscape-design/components-themeable",
3
- "version": "3.0.1330",
3
+ "version": "3.0.1332",
4
4
  "files": [
5
5
  "lib"
6
6
  ],