@cloudscape-design/components 3.0.757 → 3.0.758

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 (42) hide show
  1. package/breadcrumb-group/implementation.d.ts.map +1 -1
  2. package/breadcrumb-group/implementation.js +61 -12
  3. package/breadcrumb-group/implementation.js.map +1 -1
  4. package/breadcrumb-group/interfaces.d.ts +3 -2
  5. package/breadcrumb-group/interfaces.d.ts.map +1 -1
  6. package/breadcrumb-group/interfaces.js.map +1 -1
  7. package/breadcrumb-group/item/funnel.d.ts +1 -0
  8. package/breadcrumb-group/item/funnel.d.ts.map +1 -1
  9. package/breadcrumb-group/item/funnel.js +3 -3
  10. package/breadcrumb-group/item/funnel.js.map +1 -1
  11. package/breadcrumb-group/item/item.d.ts +1 -1
  12. package/breadcrumb-group/item/item.d.ts.map +1 -1
  13. package/breadcrumb-group/item/item.js +19 -38
  14. package/breadcrumb-group/item/item.js.map +1 -1
  15. package/breadcrumb-group/item/styles.css.js +8 -9
  16. package/breadcrumb-group/item/styles.scoped.css +33 -32
  17. package/breadcrumb-group/item/styles.selectors.js +8 -9
  18. package/breadcrumb-group/styles.css.js +8 -7
  19. package/breadcrumb-group/styles.scoped.css +17 -57
  20. package/breadcrumb-group/styles.selectors.js +8 -7
  21. package/breadcrumb-group/utils.d.ts +5 -0
  22. package/breadcrumb-group/utils.d.ts.map +1 -1
  23. package/breadcrumb-group/utils.js +56 -0
  24. package/breadcrumb-group/utils.js.map +1 -1
  25. package/internal/environment.js +1 -1
  26. package/internal/environment.json +1 -1
  27. package/internal/manifest.json +1 -1
  28. package/package.json +1 -1
  29. package/side-navigation/analytics-metadata/interfaces.d.ts +19 -0
  30. package/side-navigation/analytics-metadata/interfaces.d.ts.map +1 -0
  31. package/side-navigation/analytics-metadata/interfaces.js +4 -0
  32. package/side-navigation/analytics-metadata/interfaces.js.map +1 -0
  33. package/side-navigation/analytics-metadata/styles.css.js +7 -0
  34. package/side-navigation/analytics-metadata/styles.scoped.css +8 -0
  35. package/side-navigation/analytics-metadata/styles.selectors.js +8 -0
  36. package/side-navigation/index.d.ts.map +1 -1
  37. package/side-navigation/index.js +10 -1
  38. package/side-navigation/index.js.map +1 -1
  39. package/side-navigation/parts.d.ts +2 -1
  40. package/side-navigation/parts.d.ts.map +1 -1
  41. package/side-navigation/parts.js +42 -21
  42. package/side-navigation/parts.js.map +1 -1
@@ -2,14 +2,13 @@
2
2
  // es-module interop with Babel and Typescript
3
3
  Object.defineProperty(exports, "__esModule", { value: true });
4
4
  module.exports.default = {
5
- "link": "awsui_link_1kosq_15j42_141",
6
- "breadcrumb": "awsui_breadcrumb_1kosq_15j42_145",
7
- "icon": "awsui_icon_1kosq_15j42_148",
8
- "anchor": "awsui_anchor_1kosq_15j42_153",
9
- "last": "awsui_last_1kosq_15j42_199",
10
- "compressed": "awsui_compressed_1kosq_15j42_209",
11
- "text": "awsui_text_1kosq_15j42_213",
12
- "virtual-item": "awsui_virtual-item_1kosq_15j42_220",
13
- "text-hidden": "awsui_text-hidden_1kosq_15j42_227"
5
+ "link": "awsui_link_1kosq_e4knh_141",
6
+ "breadcrumb": "awsui_breadcrumb_1kosq_e4knh_145",
7
+ "ghost-breadcrumb": "awsui_ghost-breadcrumb_1kosq_e4knh_146",
8
+ "icon": "awsui_icon_1kosq_e4knh_149",
9
+ "anchor": "awsui_anchor_1kosq_e4knh_155",
10
+ "text": "awsui_text_1kosq_e4knh_202",
11
+ "last": "awsui_last_1kosq_e4knh_221",
12
+ "text-hidden": "awsui_text-hidden_1kosq_e4knh_233"
14
13
  };
15
14
 
@@ -1,12 +1,13 @@
1
1
 
2
2
  import './styles.scoped.css';
3
3
  export default {
4
- "breadcrumb-group": "awsui_breadcrumb-group_d19fg_dhp0d_141",
5
- "item": "awsui_item_d19fg_dhp0d_179",
6
- "breadcrumb-group-list": "awsui_breadcrumb-group-list_d19fg_dhp0d_214",
7
- "ellipsis": "awsui_ellipsis_d19fg_dhp0d_226",
8
- "icon": "awsui_icon_d19fg_dhp0d_236",
9
- "mobile": "awsui_mobile_d19fg_dhp0d_241",
10
- "mobile-short": "awsui_mobile-short_d19fg_dhp0d_254"
4
+ "breadcrumb-group": "awsui_breadcrumb-group_d19fg_1gdmp_141",
5
+ "breadcrumb-group-list": "awsui_breadcrumb-group-list_d19fg_1gdmp_179",
6
+ "ghost": "awsui_ghost_d19fg_1gdmp_190",
7
+ "item": "awsui_item_d19fg_1gdmp_195",
8
+ "ellipsis": "awsui_ellipsis_d19fg_1gdmp_196",
9
+ "hide": "awsui_hide_d19fg_1gdmp_203",
10
+ "visible": "awsui_visible_d19fg_1gdmp_209",
11
+ "icon": "awsui_icon_d19fg_1gdmp_213"
11
12
  };
12
13
 
@@ -138,7 +138,7 @@
138
138
  */
139
139
  /* Style used for links in slots/components that are text heavy, to help links stand out among
140
140
  surrounding text. (WCAG F73) https://www.w3.org/WAI/WCAG21/Techniques/failures/F73#description */
141
- .awsui_breadcrumb-group_d19fg_dhp0d_141:not(#\9) {
141
+ .awsui_breadcrumb-group_d19fg_1gdmp_141:not(#\9) {
142
142
  border-collapse: separate;
143
143
  border-spacing: 0;
144
144
  box-sizing: border-box;
@@ -177,43 +177,7 @@ surrounding text. (WCAG F73) https://www.w3.org/WAI/WCAG21/Techniques/failures/F
177
177
  padding-block: var(--space-xxs-p8yyaw, 4px);
178
178
  padding-inline: 0;
179
179
  }
180
- .awsui_breadcrumb-group_d19fg_dhp0d_141 > .awsui_item_d19fg_dhp0d_179:not(#\9) {
181
- border-collapse: separate;
182
- border-spacing: 0;
183
- box-sizing: border-box;
184
- caption-side: top;
185
- cursor: auto;
186
- direction: inherit;
187
- empty-cells: show;
188
- font-family: serif;
189
- font-size: medium;
190
- font-style: normal;
191
- font-variant: normal;
192
- font-weight: 400;
193
- font-stretch: normal;
194
- line-height: normal;
195
- -webkit-hyphens: none;
196
- hyphens: none;
197
- letter-spacing: normal;
198
- list-style: disc outside none;
199
- tab-size: 8;
200
- text-align: start;
201
- text-indent: 0;
202
- text-shadow: none;
203
- text-transform: none;
204
- visibility: visible;
205
- white-space: normal;
206
- word-spacing: normal;
207
- font-size: var(--font-size-body-m-x4okxb, 14px);
208
- line-height: var(--line-height-body-m-30ar75, 20px);
209
- color: var(--color-text-body-default-at06ol, #000716);
210
- font-weight: 400;
211
- font-family: var(--font-family-base-dnvic8, "Open Sans", "Helvetica Neue", Roboto, Arial, sans-serif);
212
- -webkit-font-smoothing: auto;
213
- -moz-osx-font-smoothing: auto;
214
- display: inline;
215
- }
216
- .awsui_breadcrumb-group_d19fg_dhp0d_141 > .awsui_breadcrumb-group-list_d19fg_dhp0d_214:not(#\9) {
180
+ .awsui_breadcrumb-group_d19fg_1gdmp_141 > .awsui_breadcrumb-group-list_d19fg_1gdmp_179:not(#\9) {
217
181
  display: flex;
218
182
  align-items: center;
219
183
  padding-block: 0;
@@ -222,37 +186,33 @@ surrounding text. (WCAG F73) https://www.w3.org/WAI/WCAG21/Techniques/failures/F
222
186
  margin-inline: 0;
223
187
  list-style: none;
224
188
  inline-size: 100%;
189
+ flex-wrap: nowrap;
190
+ }
191
+ .awsui_breadcrumb-group_d19fg_1gdmp_141 > .awsui_breadcrumb-group-list_d19fg_1gdmp_179.awsui_ghost_d19fg_1gdmp_190:not(#\9) {
225
192
  flex-wrap: wrap;
193
+ position: absolute;
194
+ inset-inline-start: -9000px;
226
195
  }
227
- .awsui_breadcrumb-group_d19fg_dhp0d_141 > .awsui_breadcrumb-group-list_d19fg_dhp0d_214 > .awsui_item_d19fg_dhp0d_179:not(#\9),
228
- .awsui_breadcrumb-group_d19fg_dhp0d_141 > .awsui_breadcrumb-group-list_d19fg_dhp0d_214 > .awsui_ellipsis_d19fg_dhp0d_226:not(#\9) {
196
+ .awsui_breadcrumb-group_d19fg_1gdmp_141 > .awsui_breadcrumb-group-list_d19fg_1gdmp_179 > .awsui_item_d19fg_1gdmp_195:not(#\9),
197
+ .awsui_breadcrumb-group_d19fg_1gdmp_141 > .awsui_breadcrumb-group-list_d19fg_1gdmp_179 > .awsui_ellipsis_d19fg_1gdmp_196:not(#\9) {
229
198
  display: inline-block;
230
199
  padding-block: 0;
231
200
  padding-inline: 0;
232
201
  margin-block: 0;
233
202
  margin-inline: 0;
234
203
  }
235
- .awsui_breadcrumb-group_d19fg_dhp0d_141 > .awsui_breadcrumb-group-list_d19fg_dhp0d_214 > .awsui_ellipsis_d19fg_dhp0d_226:not(#\9) {
204
+ .awsui_breadcrumb-group_d19fg_1gdmp_141 > .awsui_breadcrumb-group-list_d19fg_1gdmp_179 > .awsui_item_d19fg_1gdmp_195.awsui_hide_d19fg_1gdmp_203:not(#\9) {
236
205
  display: none;
237
206
  }
238
- .awsui_breadcrumb-group_d19fg_dhp0d_141 > .awsui_breadcrumb-group-list_d19fg_dhp0d_214 > .awsui_ellipsis_d19fg_dhp0d_226 > .awsui_icon_d19fg_dhp0d_236:not(#\9) {
239
- margin-block: 0;
240
- margin-inline: 10px;
241
- color: var(--color-text-breadcrumb-icon-ma8w3r, #7d8998);
242
- }
243
- .awsui_breadcrumb-group_d19fg_dhp0d_141.awsui_mobile_d19fg_dhp0d_241 > .awsui_breadcrumb-group-list_d19fg_dhp0d_214:not(#\9) {
244
- flex-wrap: nowrap;
207
+ .awsui_breadcrumb-group_d19fg_1gdmp_141 > .awsui_breadcrumb-group-list_d19fg_1gdmp_179 > .awsui_ellipsis_d19fg_1gdmp_196:not(#\9) {
208
+ display: none;
245
209
  }
246
- .awsui_breadcrumb-group_d19fg_dhp0d_141.awsui_mobile_d19fg_dhp0d_241 > .awsui_breadcrumb-group-list_d19fg_dhp0d_214 > .awsui_ellipsis_d19fg_dhp0d_226:not(#\9) {
210
+ .awsui_breadcrumb-group_d19fg_1gdmp_141 > .awsui_breadcrumb-group-list_d19fg_1gdmp_179 > .awsui_ellipsis_d19fg_1gdmp_196.awsui_visible_d19fg_1gdmp_209:not(#\9) {
247
211
  display: flex;
248
212
  flex-shrink: 0;
249
213
  }
250
- .awsui_breadcrumb-group_d19fg_dhp0d_141.awsui_mobile_d19fg_dhp0d_241 > .awsui_breadcrumb-group-list_d19fg_dhp0d_214 > .awsui_item_d19fg_dhp0d_179:not(#\9) {
251
- min-inline-size: 0;
252
- }
253
- .awsui_breadcrumb-group_d19fg_dhp0d_141.awsui_mobile_d19fg_dhp0d_241 > .awsui_breadcrumb-group-list_d19fg_dhp0d_214 > .awsui_item_d19fg_dhp0d_179:not(#\9):not(:first-child):not(:last-child) {
254
- display: none;
255
- }
256
- .awsui_breadcrumb-group_d19fg_dhp0d_141.awsui_mobile-short_d19fg_dhp0d_254 > .awsui_breadcrumb-group-list_d19fg_dhp0d_214 > .awsui_ellipsis_d19fg_dhp0d_226:not(#\9) {
257
- display: none;
214
+ .awsui_breadcrumb-group_d19fg_1gdmp_141 > .awsui_breadcrumb-group-list_d19fg_1gdmp_179 > .awsui_ellipsis_d19fg_1gdmp_196 > .awsui_icon_d19fg_1gdmp_213:not(#\9) {
215
+ margin-block: 0;
216
+ margin-inline: 10px;
217
+ color: var(--color-text-breadcrumb-icon-ma8w3r, #7d8998);
258
218
  }
@@ -2,12 +2,13 @@
2
2
  // es-module interop with Babel and Typescript
3
3
  Object.defineProperty(exports, "__esModule", { value: true });
4
4
  module.exports.default = {
5
- "breadcrumb-group": "awsui_breadcrumb-group_d19fg_dhp0d_141",
6
- "item": "awsui_item_d19fg_dhp0d_179",
7
- "breadcrumb-group-list": "awsui_breadcrumb-group-list_d19fg_dhp0d_214",
8
- "ellipsis": "awsui_ellipsis_d19fg_dhp0d_226",
9
- "icon": "awsui_icon_d19fg_dhp0d_236",
10
- "mobile": "awsui_mobile_d19fg_dhp0d_241",
11
- "mobile-short": "awsui_mobile-short_d19fg_dhp0d_254"
5
+ "breadcrumb-group": "awsui_breadcrumb-group_d19fg_1gdmp_141",
6
+ "breadcrumb-group-list": "awsui_breadcrumb-group-list_d19fg_1gdmp_179",
7
+ "ghost": "awsui_ghost_d19fg_1gdmp_190",
8
+ "item": "awsui_item_d19fg_1gdmp_195",
9
+ "ellipsis": "awsui_ellipsis_d19fg_1gdmp_196",
10
+ "hide": "awsui_hide_d19fg_1gdmp_203",
11
+ "visible": "awsui_visible_d19fg_1gdmp_209",
12
+ "icon": "awsui_icon_d19fg_1gdmp_213"
12
13
  };
13
14
 
@@ -4,4 +4,9 @@ export declare const getEventDetail: <T extends BreadcrumbGroupProps.Item>(item:
4
4
  text: string;
5
5
  href: string;
6
6
  };
7
+ export declare const getItemsDisplayProperties: (itemsWidths: Array<number>, navWidth: number | null) => {
8
+ shrinkFactors: number[];
9
+ minWidths: number[];
10
+ collapsed: number;
11
+ };
7
12
  //# sourceMappingURL=utils.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/breadcrumb-group/utils.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AAEpD,eAAO,MAAM,cAAc;;;;CAIzB,CAAC"}
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/breadcrumb-group/utils.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AAEpD,eAAO,MAAM,cAAc;;;;CAIzB,CAAC;AAKH,eAAO,MAAM,yBAAyB,gBAAiB,MAAM,MAAM,CAAC,YAAY,MAAM,GAAG,IAAI;;;;CAW5F,CAAC"}
@@ -3,4 +3,60 @@ export const getEventDetail = (item) => ({
3
3
  text: item.text,
4
4
  href: item.href,
5
5
  });
6
+ const defaultMinBreadcrumbWidth = 150;
7
+ const ellipsisWidth = 50;
8
+ export const getItemsDisplayProperties = (itemsWidths, navWidth) => {
9
+ const minBreadcrumbWidth = optimizeMinWidth(itemsWidths, navWidth);
10
+ const shrinkFactors = itemsWidths.map(width => (width <= minBreadcrumbWidth ? 0 : Math.round(width)));
11
+ const minWidths = itemsWidths.map(width => (width <= minBreadcrumbWidth ? 0 : minBreadcrumbWidth));
12
+ const collapsedWidths = itemsWidths.map(width => Math.min(width, minBreadcrumbWidth));
13
+ return {
14
+ shrinkFactors,
15
+ minWidths,
16
+ collapsed: computeNumberOfCollapsedItems(collapsedWidths, navWidth),
17
+ };
18
+ };
19
+ const computeNumberOfCollapsedItems = (collapsedWidths, navWidth) => {
20
+ if (!navWidth) {
21
+ return 0;
22
+ }
23
+ let collapsed = 0;
24
+ const itemsCount = collapsedWidths.length;
25
+ if (itemsCount > 2) {
26
+ collapsed = itemsCount - 2;
27
+ let remainingWidth = navWidth - collapsedWidths[0] - collapsedWidths[itemsCount - 1] - ellipsisWidth;
28
+ let j = 1;
29
+ while (remainingWidth > 0 && j < itemsCount - 1) {
30
+ remainingWidth -= collapsedWidths[itemsCount - 1 - j];
31
+ j++;
32
+ if (remainingWidth >= 0) {
33
+ collapsed--;
34
+ }
35
+ }
36
+ }
37
+ return collapsed;
38
+ };
39
+ const optimizeMinWidth = (itemsWidths, navWidth) => {
40
+ const collapsedWidths = itemsWidths.map(width => Math.min(width, defaultMinBreadcrumbWidth));
41
+ if (!navWidth) {
42
+ return defaultMinBreadcrumbWidth;
43
+ }
44
+ const itemsCount = collapsedWidths.length;
45
+ if (itemsCount > 2) {
46
+ const minCollapsedWidth = collapsedWidths[0] + ellipsisWidth + collapsedWidths[collapsedWidths.length - 1];
47
+ if (minCollapsedWidth > navWidth) {
48
+ return (navWidth - ellipsisWidth) / 2;
49
+ }
50
+ }
51
+ if (itemsCount === 2) {
52
+ const minCollapsedWidth = collapsedWidths[0] + collapsedWidths[1];
53
+ if (minCollapsedWidth > navWidth) {
54
+ return navWidth / 2;
55
+ }
56
+ }
57
+ if (itemsCount === 1) {
58
+ return Math.min(navWidth, collapsedWidths[0]);
59
+ }
60
+ return defaultMinBreadcrumbWidth;
61
+ };
6
62
  //# sourceMappingURL=utils.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/breadcrumb-group/utils.ts"],"names":[],"mappings":"AAIA,MAAM,CAAC,MAAM,cAAc,GAAG,CAAsC,IAAO,EAAE,EAAE,CAAC,CAAC;IAC/E,IAAI;IACJ,IAAI,EAAE,IAAI,CAAC,IAAI;IACf,IAAI,EAAE,IAAI,CAAC,IAAI;CAChB,CAAC,CAAC","sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { BreadcrumbGroupProps } from './interfaces';\n\nexport const getEventDetail = <T extends BreadcrumbGroupProps.Item>(item: T) => ({\n item,\n text: item.text,\n href: item.href,\n});\n"]}
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/breadcrumb-group/utils.ts"],"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 { BreadcrumbGroupProps } from './interfaces';\n\nexport const getEventDetail = <T extends BreadcrumbGroupProps.Item>(item: T) => ({\n item,\n text: item.text,\n href: item.href,\n});\n\nconst defaultMinBreadcrumbWidth = 150;\nconst ellipsisWidth = 50;\n\nexport const getItemsDisplayProperties = (itemsWidths: Array<number>, navWidth: number | null) => {\n const minBreadcrumbWidth = optimizeMinWidth(itemsWidths, navWidth);\n const shrinkFactors = itemsWidths.map(width => (width <= minBreadcrumbWidth ? 0 : Math.round(width)));\n const minWidths = itemsWidths.map(width => (width <= minBreadcrumbWidth ? 0 : minBreadcrumbWidth));\n const collapsedWidths = itemsWidths.map(width => Math.min(width, minBreadcrumbWidth));\n\n return {\n shrinkFactors,\n minWidths,\n collapsed: computeNumberOfCollapsedItems(collapsedWidths, navWidth),\n };\n};\n\nconst computeNumberOfCollapsedItems = (collapsedWidths: Array<number>, navWidth: number | null): number => {\n if (!navWidth) {\n return 0;\n }\n let collapsed = 0;\n const itemsCount = collapsedWidths.length;\n if (itemsCount > 2) {\n collapsed = itemsCount - 2;\n let remainingWidth = navWidth - collapsedWidths[0] - collapsedWidths[itemsCount - 1] - ellipsisWidth;\n let j = 1;\n while (remainingWidth > 0 && j < itemsCount - 1) {\n remainingWidth -= collapsedWidths[itemsCount - 1 - j];\n j++;\n if (remainingWidth >= 0) {\n collapsed--;\n }\n }\n }\n return collapsed;\n};\n\nconst optimizeMinWidth = (itemsWidths: Array<number>, navWidth: number | null): number => {\n const collapsedWidths = itemsWidths.map(width => Math.min(width, defaultMinBreadcrumbWidth));\n if (!navWidth) {\n return defaultMinBreadcrumbWidth;\n }\n const itemsCount = collapsedWidths.length;\n if (itemsCount > 2) {\n const minCollapsedWidth = collapsedWidths[0] + ellipsisWidth + collapsedWidths[collapsedWidths.length - 1];\n if (minCollapsedWidth > navWidth) {\n return (navWidth - ellipsisWidth) / 2;\n }\n }\n if (itemsCount === 2) {\n const minCollapsedWidth = collapsedWidths[0] + collapsedWidths[1];\n if (minCollapsedWidth > navWidth) {\n return navWidth / 2;\n }\n }\n if (itemsCount === 1) {\n return Math.min(navWidth, collapsedWidths[0]);\n }\n return defaultMinBreadcrumbWidth;\n};\n"]}
@@ -1,4 +1,4 @@
1
1
  export var PACKAGE_SOURCE = "components";
2
- export var PACKAGE_VERSION = "3.0.0 (093fdc0e)";
2
+ export var PACKAGE_VERSION = "3.0.0 (5f9aaa3c)";
3
3
  export var THEME = "open-source-visual-refresh";
4
4
  export var ALWAYS_VISUAL_REFRESH = true;
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "PACKAGE_SOURCE": "components",
3
- "PACKAGE_VERSION": "3.0.0 (093fdc0e)",
3
+ "PACKAGE_VERSION": "3.0.0 (5f9aaa3c)",
4
4
  "THEME": "default",
5
5
  "ALWAYS_VISUAL_REFRESH": false
6
6
  }
@@ -1,3 +1,3 @@
1
1
  {
2
- "commit": "093fdc0ea9a52ac78f1e8db74933f74aef92c089"
2
+ "commit": "5f9aaa3c40b15cc726a86b416444a8dfa4d33e75"
3
3
  }
package/package.json CHANGED
@@ -126,7 +126,7 @@
126
126
  "./internal/base-component/index.js",
127
127
  "./internal/base-component/styles.css.js"
128
128
  ],
129
- "version": "3.0.757",
129
+ "version": "3.0.758",
130
130
  "repository": {
131
131
  "type": "git",
132
132
  "url": "https://github.com/cloudscape-design/components.git"
@@ -0,0 +1,19 @@
1
+ import { GeneratedAnalyticsMetadataExpandableSectionExpand } from '../../expandable-section/analytics-metadata/interfaces';
2
+ export interface GeneratedAnalyticsMetadataSideNavigationClick {
3
+ action: 'click';
4
+ detail: {
5
+ label: string;
6
+ position?: string;
7
+ href?: string;
8
+ external: string;
9
+ };
10
+ }
11
+ export type GeneratedAnalyticsMetadataSideNavigationExpand = GeneratedAnalyticsMetadataExpandableSectionExpand;
12
+ export interface GeneratedAnalyticsMetadataSideNavigationComponent {
13
+ name: 'awsui.SideNavigation';
14
+ label: string;
15
+ properties: {
16
+ activeHref: string;
17
+ };
18
+ }
19
+ //# sourceMappingURL=interfaces.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"interfaces.d.ts","sourceRoot":"","sources":["../../../../src/side-navigation/analytics-metadata/interfaces.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,iDAAiD,EAAE,MAAM,wDAAwD,CAAC;AAE3H,MAAM,WAAW,6CAA6C;IAC5D,MAAM,EAAE,OAAO,CAAC;IAChB,MAAM,EAAE;QACN,KAAK,EAAE,MAAM,CAAC;QACd,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,QAAQ,EAAE,MAAM,CAAC;KAClB,CAAC;CACH;AAED,MAAM,MAAM,8CAA8C,GAAG,iDAAiD,CAAC;AAE/G,MAAM,WAAW,iDAAiD;IAChE,IAAI,EAAE,sBAAsB,CAAC;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE;QACV,UAAU,EAAE,MAAM,CAAC;KACpB,CAAC;CACH"}
@@ -0,0 +1,4 @@
1
+ // Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
2
+ // SPDX-License-Identifier: Apache-2.0
3
+ export {};
4
+ //# sourceMappingURL=interfaces.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"interfaces.js","sourceRoot":"","sources":["../../../../src/side-navigation/analytics-metadata/interfaces.ts"],"names":[],"mappings":"AAAA,qEAAqE;AACrE,sCAAsC","sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport { GeneratedAnalyticsMetadataExpandableSectionExpand } from '../../expandable-section/analytics-metadata/interfaces';\n\nexport interface GeneratedAnalyticsMetadataSideNavigationClick {\n action: 'click';\n detail: {\n label: string;\n position?: string;\n href?: string;\n external: string;\n };\n}\n\nexport type GeneratedAnalyticsMetadataSideNavigationExpand = GeneratedAnalyticsMetadataExpandableSectionExpand;\n\nexport interface GeneratedAnalyticsMetadataSideNavigationComponent {\n name: 'awsui.SideNavigation';\n label: string;\n properties: {\n activeHref: string;\n };\n}\n"]}
@@ -0,0 +1,7 @@
1
+
2
+ import './styles.scoped.css';
3
+ export default {
4
+ "header-link-text": "awsui_header-link-text_eymn4_rug8v_5",
5
+ "link-text": "awsui_link-text_eymn4_rug8v_6"
6
+ };
7
+
@@ -0,0 +1,8 @@
1
+ /*
2
+ Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
3
+ SPDX-License-Identifier: Apache-2.0
4
+ */
5
+ .awsui_header-link-text_eymn4_rug8v_5:not(#\9),
6
+ .awsui_link-text_eymn4_rug8v_6:not(#\9) {
7
+ /* used in analytics metadata */
8
+ }
@@ -0,0 +1,8 @@
1
+
2
+ // es-module interop with Babel and Typescript
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ module.exports.default = {
5
+ "header-link-text": "awsui_header-link-text_eymn4_rug8v_5",
6
+ "link-text": "awsui_link-text_eymn4_rug8v_6"
7
+ };
8
+
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/side-navigation/index.tsx"],"names":[],"mappings":";AAMA,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AAGnD,OAAO,EAAE,mBAAmB,EAAE,CAAC;AAE/B,MAAM,CAAC,OAAO,UAAU,cAAc,CAAC,EAAE,KAAU,EAAE,GAAG,KAAK,EAAE,EAAE,mBAAmB,eAGnF"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/side-navigation/index.tsx"],"names":[],"mappings":";AASA,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AAKnD,OAAO,EAAE,mBAAmB,EAAE,CAAC;AAE/B,MAAM,CAAC,OAAO,UAAU,cAAc,CAAC,EAAE,KAAU,EAAE,GAAG,KAAK,EAAE,EAAE,mBAAmB,eAkBnF"}
@@ -2,13 +2,22 @@ import { __rest } from "tslib";
2
2
  // Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
3
3
  // SPDX-License-Identifier: Apache-2.0
4
4
  import React from 'react';
5
+ import { getAnalyticsMetadataAttribute } from '@cloudscape-design/component-toolkit/internal/analytics-metadata';
5
6
  import useBaseComponent from '../internal/hooks/use-base-component';
6
7
  import { applyDisplayName } from '../internal/utils/apply-display-name';
7
8
  import { InternalSideNavigation } from './internal';
9
+ import analyticsSelectors from './analytics-metadata/styles.css.js';
8
10
  export default function SideNavigation(_a) {
9
11
  var { items = [] } = _a, props = __rest(_a, ["items"]);
10
12
  const internalProps = useBaseComponent('SideNavigation');
11
- return React.createElement(InternalSideNavigation, Object.assign({}, props, internalProps, { items: items }));
13
+ const componentAnalyticMetadata = {
14
+ name: 'awsui.SideNavigation',
15
+ label: `.${analyticsSelectors['header-link-text']}`,
16
+ properties: {
17
+ activeHref: props.activeHref || '',
18
+ },
19
+ };
20
+ return (React.createElement(InternalSideNavigation, Object.assign({}, props, internalProps, { items: items }, getAnalyticsMetadataAttribute({ component: componentAnalyticMetadata }))));
12
21
  }
13
22
  applyDisplayName(SideNavigation, 'SideNavigation');
14
23
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/side-navigation/index.tsx"],"names":[],"mappings":";AAAA,qEAAqE;AACrE,sCAAsC;AACtC,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,gBAAgB,MAAM,sCAAsC,CAAC;AACpE,OAAO,EAAE,gBAAgB,EAAE,MAAM,sCAAsC,CAAC;AAExE,OAAO,EAAE,sBAAsB,EAAE,MAAM,YAAY,CAAC;AAIpD,MAAM,CAAC,OAAO,UAAU,cAAc,CAAC,EAA6C;QAA7C,EAAE,KAAK,GAAG,EAAE,OAAiC,EAA5B,KAAK,cAAtB,SAAwB,CAAF;IAC3D,MAAM,aAAa,GAAG,gBAAgB,CAAC,gBAAgB,CAAC,CAAC;IACzD,OAAO,oBAAC,sBAAsB,oBAAK,KAAK,EAAM,aAAa,IAAE,KAAK,EAAE,KAAK,IAAI,CAAC;AAChF,CAAC;AAED,gBAAgB,CAAC,cAAc,EAAE,gBAAgB,CAAC,CAAC","sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport React from 'react';\n\nimport useBaseComponent from '../internal/hooks/use-base-component';\nimport { applyDisplayName } from '../internal/utils/apply-display-name';\nimport { SideNavigationProps } from './interfaces';\nimport { InternalSideNavigation } from './internal';\n\nexport { SideNavigationProps };\n\nexport default function SideNavigation({ items = [], ...props }: SideNavigationProps) {\n const internalProps = useBaseComponent('SideNavigation');\n return <InternalSideNavigation {...props} {...internalProps} items={items} />;\n}\n\napplyDisplayName(SideNavigation, 'SideNavigation');\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/side-navigation/index.tsx"],"names":[],"mappings":";AAAA,qEAAqE;AACrE,sCAAsC;AACtC,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EAAE,6BAA6B,EAAE,MAAM,kEAAkE,CAAC;AAEjH,OAAO,gBAAgB,MAAM,sCAAsC,CAAC;AACpE,OAAO,EAAE,gBAAgB,EAAE,MAAM,sCAAsC,CAAC;AAGxE,OAAO,EAAE,sBAAsB,EAAE,MAAM,YAAY,CAAC;AAEpD,OAAO,kBAAkB,MAAM,oCAAoC,CAAC;AAIpE,MAAM,CAAC,OAAO,UAAU,cAAc,CAAC,EAA6C;QAA7C,EAAE,KAAK,GAAG,EAAE,OAAiC,EAA5B,KAAK,cAAtB,SAAwB,CAAF;IAC3D,MAAM,aAAa,GAAG,gBAAgB,CAAC,gBAAgB,CAAC,CAAC;IAEzD,MAAM,yBAAyB,GAAsD;QACnF,IAAI,EAAE,sBAAsB;QAC5B,KAAK,EAAE,IAAI,kBAAkB,CAAC,kBAAkB,CAAC,EAAE;QACnD,UAAU,EAAE;YACV,UAAU,EAAE,KAAK,CAAC,UAAU,IAAI,EAAE;SACnC;KACF,CAAC;IACF,OAAO,CACL,oBAAC,sBAAsB,oBACjB,KAAK,EACL,aAAa,IACjB,KAAK,EAAE,KAAK,IACR,6BAA6B,CAAC,EAAE,SAAS,EAAE,yBAAyB,EAAE,CAAC,EAC3E,CACH,CAAC;AACJ,CAAC;AAED,gBAAgB,CAAC,cAAc,EAAE,gBAAgB,CAAC,CAAC","sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport React from 'react';\n\nimport { getAnalyticsMetadataAttribute } from '@cloudscape-design/component-toolkit/internal/analytics-metadata';\n\nimport useBaseComponent from '../internal/hooks/use-base-component';\nimport { applyDisplayName } from '../internal/utils/apply-display-name';\nimport { GeneratedAnalyticsMetadataSideNavigationComponent } from './analytics-metadata/interfaces';\nimport { SideNavigationProps } from './interfaces';\nimport { InternalSideNavigation } from './internal';\n\nimport analyticsSelectors from './analytics-metadata/styles.css.js';\n\nexport { SideNavigationProps };\n\nexport default function SideNavigation({ items = [], ...props }: SideNavigationProps) {\n const internalProps = useBaseComponent('SideNavigation');\n\n const componentAnalyticMetadata: GeneratedAnalyticsMetadataSideNavigationComponent = {\n name: 'awsui.SideNavigation',\n label: `.${analyticsSelectors['header-link-text']}`,\n properties: {\n activeHref: props.activeHref || '',\n },\n };\n return (\n <InternalSideNavigation\n {...props}\n {...internalProps}\n items={items}\n {...getAnalyticsMetadataAttribute({ component: componentAnalyticMetadata })}\n />\n );\n}\n\napplyDisplayName(SideNavigation, 'SideNavigation');\n"]}
@@ -4,6 +4,7 @@ interface BaseItemComponentProps {
4
4
  activeHref?: string;
5
5
  fireChange: (item: SideNavigationProps.Section | SideNavigationProps.ExpandableLinkGroup, expanded: boolean) => void;
6
6
  fireFollow: (item: SideNavigationProps.Link | SideNavigationProps.Header | SideNavigationProps.LinkGroup | SideNavigationProps.ExpandableLinkGroup, event: React.SyntheticEvent | Event) => void;
7
+ position?: string;
7
8
  }
8
9
  export interface HeaderProps extends BaseItemComponentProps {
9
10
  definition: SideNavigationProps.Header;
@@ -13,6 +14,6 @@ export interface NavigationItemsListProps extends BaseItemComponentProps {
13
14
  items: ReadonlyArray<SideNavigationProps.Item>;
14
15
  variant: 'section' | 'section-group' | 'link-group' | 'expandable-link-group' | 'root';
15
16
  }
16
- export declare function NavigationItemsList({ items, variant, activeHref, fireChange, fireFollow }: NavigationItemsListProps): JSX.Element;
17
+ export declare function NavigationItemsList({ items, variant, activeHref, fireChange, fireFollow, position, }: NavigationItemsListProps): JSX.Element;
17
18
  export {};
18
19
  //# sourceMappingURL=parts.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"parts.d.ts","sourceRoot":"","sources":["../../../src/side-navigation/parts.tsx"],"names":[],"mappings":"AAEA,OAAO,KAA+D,MAAM,OAAO,CAAC;AAUpF,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AAKnD,UAAU,sBAAsB;IAC9B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,CAAC,IAAI,EAAE,mBAAmB,CAAC,OAAO,GAAG,mBAAmB,CAAC,mBAAmB,EAAE,QAAQ,EAAE,OAAO,KAAK,IAAI,CAAC;IACrH,UAAU,EAAE,CACV,IAAI,EACA,mBAAmB,CAAC,IAAI,GACxB,mBAAmB,CAAC,MAAM,GAC1B,mBAAmB,CAAC,SAAS,GAC7B,mBAAmB,CAAC,mBAAmB,EAC3C,KAAK,EAAE,KAAK,CAAC,cAAc,GAAG,KAAK,KAChC,IAAI,CAAC;CACX;AAED,MAAM,WAAW,WAAY,SAAQ,sBAAsB;IACzD,UAAU,EAAE,mBAAmB,CAAC,MAAM,CAAC;CACxC;AAED,wBAAgB,MAAM,CAAC,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,EAAE,WAAW,eAkCzE;AAED,MAAM,WAAW,wBAAyB,SAAQ,sBAAsB;IACtE,KAAK,EAAE,aAAa,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC;IAC/C,OAAO,EAAE,SAAS,GAAG,eAAe,GAAG,YAAY,GAAG,uBAAuB,GAAG,MAAM,CAAC;CACxF;AAQD,wBAAgB,mBAAmB,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,EAAE,wBAAwB,eA2HnH"}
1
+ {"version":3,"file":"parts.d.ts","sourceRoot":"","sources":["../../../src/side-navigation/parts.tsx"],"names":[],"mappings":"AAEA,OAAO,KAA+D,MAAM,OAAO,CAAC;AAapF,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AAMnD,UAAU,sBAAsB;IAC9B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,CAAC,IAAI,EAAE,mBAAmB,CAAC,OAAO,GAAG,mBAAmB,CAAC,mBAAmB,EAAE,QAAQ,EAAE,OAAO,KAAK,IAAI,CAAC;IACrH,UAAU,EAAE,CACV,IAAI,EACA,mBAAmB,CAAC,IAAI,GACxB,mBAAmB,CAAC,MAAM,GAC1B,mBAAmB,CAAC,SAAS,GAC7B,mBAAmB,CAAC,mBAAmB,EAC3C,KAAK,EAAE,KAAK,CAAC,cAAc,GAAG,KAAK,KAChC,IAAI,CAAC;IACV,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,WAAY,SAAQ,sBAAsB;IACzD,UAAU,EAAE,mBAAmB,CAAC,MAAM,CAAC;CACxC;AAED,wBAAgB,MAAM,CAAC,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,EAAE,WAAW,eA+CzE;AAED,MAAM,WAAW,wBAAyB,SAAQ,sBAAsB;IACtE,KAAK,EAAE,aAAa,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC;IAC/C,OAAO,EAAE,SAAS,GAAG,eAAe,GAAG,YAAY,GAAG,uBAAuB,GAAG,MAAM,CAAC;CACxF;AAQD,wBAAgB,mBAAmB,CAAC,EAClC,KAAK,EACL,OAAO,EACP,UAAU,EACV,UAAU,EACV,UAAU,EACV,QAAa,GACd,EAAE,wBAAwB,eAgJ1B"}
@@ -2,6 +2,7 @@
2
2
  // SPDX-License-Identifier: Apache-2.0
3
3
  import React, { useCallback, useEffect, useMemo, useState } from 'react';
4
4
  import clsx from 'clsx';
5
+ import { getAnalyticsMetadataAttribute } from '@cloudscape-design/component-toolkit/internal/analytics-metadata';
5
6
  import InternalBox from '../box/internal';
6
7
  import InternalExpandableSection from '../expandable-section/internal';
7
8
  import InternalIcon from '../icon/internal';
@@ -9,6 +10,7 @@ import { isPlainLeftClick } from '../internal/events';
9
10
  import { useVisualRefresh } from '../internal/hooks/use-visual-mode';
10
11
  import { checkSafeUrl } from '../internal/utils/check-safe-url';
11
12
  import { hasActiveLink } from './util';
13
+ import analyticsSelectors from './analytics-metadata/styles.css.js';
12
14
  import styles from './styles.css.js';
13
15
  export function Header({ definition, activeHref, fireFollow }) {
14
16
  checkSafeUrl('SideNavigation', definition.href);
@@ -17,16 +19,25 @@ export function Header({ definition, activeHref, fireFollow }) {
17
19
  fireFollow(definition, event);
18
20
  }
19
21
  }, [fireFollow, definition]);
22
+ const clickActionAnalyticsMetadata = {
23
+ action: 'click',
24
+ detail: {
25
+ label: `.${analyticsSelectors['header-link-text']}`,
26
+ external: 'false',
27
+ href: definition.href,
28
+ position: 'header',
29
+ },
30
+ };
20
31
  return (React.createElement(React.Fragment, null,
21
32
  React.createElement("h2", { className: styles.header },
22
- React.createElement("a", { href: definition.href, className: clsx(styles['header-link'], { [styles['header-link--has-logo']]: !!definition.logo }), "aria-current": definition.href === activeHref ? 'page' : undefined, onClick: onClick },
33
+ React.createElement("a", Object.assign({ href: definition.href, className: clsx(styles['header-link'], { [styles['header-link--has-logo']]: !!definition.logo }), "aria-current": definition.href === activeHref ? 'page' : undefined, onClick: onClick }, getAnalyticsMetadataAttribute(clickActionAnalyticsMetadata)),
23
34
  definition.logo && (React.createElement("img", Object.assign({ className: clsx(styles['header-logo'], {
24
35
  [styles['header-logo--stretched']]: !definition.text,
25
36
  }) }, definition.logo))),
26
- React.createElement("span", { className: styles['header-link-text'] }, definition.text))),
37
+ React.createElement("span", { className: clsx(styles['header-link-text'], analyticsSelectors['header-link-text']) }, definition.text))),
27
38
  React.createElement(Divider, { isPresentational: true, variant: "header" })));
28
39
  }
29
- export function NavigationItemsList({ items, variant, activeHref, fireChange, fireFollow }) {
40
+ export function NavigationItemsList({ items, variant, activeHref, fireChange, fireFollow, position = '', }) {
30
41
  const lists = [];
31
42
  let currentListIndex = 0;
32
43
  lists[currentListIndex] = {
@@ -36,6 +47,7 @@ export function NavigationItemsList({ items, variant, activeHref, fireChange, fi
36
47
  items.forEach((item, index) => {
37
48
  var _a, _b, _c, _d, _e;
38
49
  const itemid = index + 1;
50
+ const itemPosition = `${position ? `${position},` : ''}${itemid}`;
39
51
  switch (item.type) {
40
52
  case 'divider': {
41
53
  const dividerIndex = lists.length;
@@ -53,35 +65,35 @@ export function NavigationItemsList({ items, variant, activeHref, fireChange, fi
53
65
  case 'link': {
54
66
  (_a = lists[currentListIndex].items) === null || _a === void 0 ? void 0 : _a.push({
55
67
  element: (React.createElement("li", { key: index, "data-itemid": `item-${itemid}`, className: styles['list-item'] },
56
- React.createElement(Link, { definition: item, activeHref: activeHref, fireChange: fireChange, fireFollow: fireFollow }))),
68
+ React.createElement(Link, { definition: item, activeHref: activeHref, fireChange: fireChange, fireFollow: fireFollow, position: itemPosition }))),
57
69
  });
58
70
  return;
59
71
  }
60
72
  case 'section': {
61
73
  (_b = lists[currentListIndex].items) === null || _b === void 0 ? void 0 : _b.push({
62
74
  element: (React.createElement("li", { key: index, "data-itemid": `item-${itemid}`, className: styles['list-item'] },
63
- React.createElement(Section, { definition: item, activeHref: activeHref, variant: variant, fireChange: fireChange, fireFollow: fireFollow }))),
75
+ React.createElement(Section, { definition: item, activeHref: activeHref, variant: variant, fireChange: fireChange, fireFollow: fireFollow, position: itemPosition }))),
64
76
  });
65
77
  return;
66
78
  }
67
79
  case 'section-group': {
68
80
  (_c = lists[currentListIndex].items) === null || _c === void 0 ? void 0 : _c.push({
69
81
  element: (React.createElement("li", { key: index, "data-itemid": `item-${itemid}`, className: styles['list-item'] },
70
- React.createElement(SectionGroup, { definition: item, activeHref: activeHref, fireChange: fireChange, fireFollow: fireFollow }))),
82
+ React.createElement(SectionGroup, { definition: item, activeHref: activeHref, fireChange: fireChange, fireFollow: fireFollow, position: itemPosition }))),
71
83
  });
72
84
  return;
73
85
  }
74
86
  case 'link-group': {
75
87
  (_d = lists[currentListIndex].items) === null || _d === void 0 ? void 0 : _d.push({
76
88
  element: (React.createElement("li", { key: index, "data-itemid": `item-${itemid}`, className: styles['list-item'] },
77
- React.createElement(LinkGroup, { definition: item, activeHref: activeHref, fireChange: fireChange, fireFollow: fireFollow }))),
89
+ React.createElement(LinkGroup, { definition: item, activeHref: activeHref, fireChange: fireChange, fireFollow: fireFollow, position: itemPosition }))),
78
90
  });
79
91
  return;
80
92
  }
81
93
  case 'expandable-link-group': {
82
94
  (_e = lists[currentListIndex].items) === null || _e === void 0 ? void 0 : _e.push({
83
95
  element: (React.createElement("li", { key: index, "data-itemid": `item-${itemid}`, className: styles['list-item'] },
84
- React.createElement(ExpandableLinkGroup, { definition: item, activeHref: activeHref, fireChange: fireChange, fireFollow: fireFollow, variant: variant }))),
96
+ React.createElement(ExpandableLinkGroup, { definition: item, activeHref: activeHref, fireChange: fireChange, fireFollow: fireFollow, variant: variant, position: itemPosition }))),
85
97
  });
86
98
  return;
87
99
  }
@@ -104,7 +116,7 @@ export function NavigationItemsList({ items, variant, activeHref, fireChange, fi
104
116
  function Divider({ variant = 'default', isPresentational = false }) {
105
117
  return (React.createElement("hr", { className: clsx(styles.divider, styles[`divider-${variant}`]), role: isPresentational ? 'presentation' : undefined }));
106
118
  }
107
- function Link({ definition, expanded, activeHref, fireFollow }) {
119
+ function Link({ definition, expanded, activeHref, fireFollow, position }) {
108
120
  checkSafeUrl('SideNavigation', definition.href);
109
121
  const isActive = definition.href === activeHref;
110
122
  const onClick = useCallback((event) => {
@@ -112,14 +124,23 @@ function Link({ definition, expanded, activeHref, fireFollow }) {
112
124
  fireFollow(definition, event);
113
125
  }
114
126
  }, [fireFollow, definition]);
127
+ const clickActionAnalyticsMetadata = {
128
+ action: 'click',
129
+ detail: {
130
+ label: `.${analyticsSelectors['link-text']}`,
131
+ external: `${!!definition.external}`,
132
+ href: definition.href,
133
+ position,
134
+ },
135
+ };
115
136
  return (React.createElement(React.Fragment, null,
116
- React.createElement("a", { href: definition.href, className: clsx(styles.link, { [styles['link-active']]: isActive }), target: definition.external ? '_blank' : undefined, rel: definition.external ? 'noopener noreferrer' : undefined, "aria-expanded": expanded, "aria-current": definition.href === activeHref ? 'page' : undefined, onClick: onClick },
117
- definition.text,
137
+ React.createElement("a", Object.assign({ href: definition.href, className: clsx(styles.link, { [styles['link-active']]: isActive }), target: definition.external ? '_blank' : undefined, rel: definition.external ? 'noopener noreferrer' : undefined, "aria-expanded": expanded, "aria-current": definition.href === activeHref ? 'page' : undefined, onClick: onClick }, getAnalyticsMetadataAttribute(clickActionAnalyticsMetadata)),
138
+ React.createElement("span", { className: analyticsSelectors['link-text'] }, definition.text),
118
139
  definition.external && (React.createElement("span", { "aria-label": definition.externalIconAriaLabel, role: definition.externalIconAriaLabel ? 'img' : undefined },
119
140
  React.createElement(InternalIcon, { name: "external", className: styles['external-icon'] })))),
120
141
  definition.info && React.createElement("span", { className: styles.info }, definition.info)));
121
142
  }
122
- function Section({ definition, activeHref, fireFollow, fireChange, variant }) {
143
+ function Section({ definition, activeHref, fireFollow, fireChange, variant, position }) {
123
144
  var _a;
124
145
  const [expanded, setExpanded] = useState((_a = definition.defaultExpanded) !== null && _a !== void 0 ? _a : true);
125
146
  const isVisualRefresh = useVisualRefresh();
@@ -132,20 +153,20 @@ function Section({ definition, activeHref, fireFollow, fireChange, variant }) {
132
153
  setExpanded((_a = definition.defaultExpanded) !== null && _a !== void 0 ? _a : true);
133
154
  }, [definition]);
134
155
  return (React.createElement(InternalExpandableSection, { variant: "footer", expanded: expanded, onChange: onExpandedChange, className: clsx(styles.section, variant === 'section-group' && styles['section--no-ident'], isVisualRefresh && styles.refresh), headerText: definition.text },
135
- React.createElement(NavigationItemsList, { variant: "section", items: definition.items, fireFollow: fireFollow, fireChange: fireChange, activeHref: activeHref })));
156
+ React.createElement(NavigationItemsList, { variant: "section", items: definition.items, fireFollow: fireFollow, fireChange: fireChange, activeHref: activeHref, position: position })));
136
157
  }
137
- function SectionGroup({ definition, activeHref, fireFollow, fireChange }) {
158
+ function SectionGroup({ definition, activeHref, fireFollow, fireChange, position }) {
138
159
  return (React.createElement("div", { className: styles['section-group'] },
139
160
  React.createElement(InternalBox, { className: styles['section-group-title'], variant: "h3" }, definition.title),
140
- React.createElement(NavigationItemsList, { variant: "section-group", items: definition.items, fireFollow: fireFollow, fireChange: fireChange, activeHref: activeHref })));
161
+ React.createElement(NavigationItemsList, { variant: "section-group", items: definition.items, fireFollow: fireFollow, fireChange: fireChange, activeHref: activeHref, position: position })));
141
162
  }
142
- function LinkGroup({ definition, activeHref, fireFollow, fireChange }) {
163
+ function LinkGroup({ definition, activeHref, fireFollow, fireChange, position }) {
143
164
  checkSafeUrl('SideNavigation', definition.href);
144
165
  return (React.createElement(React.Fragment, null,
145
- React.createElement(Link, { definition: { type: 'link', href: definition.href, text: definition.text, info: definition.info }, fireFollow: (_, event) => fireFollow(definition, event), fireChange: fireChange, activeHref: activeHref }),
146
- React.createElement(NavigationItemsList, { variant: "link-group", items: definition.items, fireFollow: fireFollow, fireChange: fireChange, activeHref: activeHref })));
166
+ React.createElement(Link, { definition: { type: 'link', href: definition.href, text: definition.text, info: definition.info }, fireFollow: (_, event) => fireFollow(definition, event), fireChange: fireChange, activeHref: activeHref, position: position }),
167
+ React.createElement(NavigationItemsList, { variant: "link-group", items: definition.items, fireFollow: fireFollow, fireChange: fireChange, activeHref: activeHref, position: position })));
147
168
  }
148
- function ExpandableLinkGroup({ definition, fireFollow, fireChange, activeHref, variant }) {
169
+ function ExpandableLinkGroup({ definition, fireFollow, fireChange, activeHref, variant, position, }) {
149
170
  // Check whether the definition contains an active link and memoize it to avoid
150
171
  // rechecking every time.
151
172
  const containsActiveLink = useMemo(() => {
@@ -179,7 +200,7 @@ function ExpandableLinkGroup({ definition, fireFollow, fireChange, activeHref, v
179
200
  fireChange(definition, true);
180
201
  }
181
202
  };
182
- return (React.createElement(InternalExpandableSection, { className: clsx(styles['expandable-link-group'], variant === 'section-group' && styles['expandable-link-group--no-ident']), variant: "navigation", expanded: userExpanded !== null && userExpanded !== void 0 ? userExpanded : expanded, onChange: onExpandedChange, headerText: React.createElement(Link, { definition: { type: 'link', href: definition.href, text: definition.text }, expanded: userExpanded !== null && userExpanded !== void 0 ? userExpanded : expanded, fireFollow: onHeaderFollow, fireChange: fireChange, activeHref: activeHref }) },
183
- React.createElement(NavigationItemsList, { variant: "expandable-link-group", items: definition.items, fireFollow: fireFollow, fireChange: fireChange, activeHref: activeHref })));
203
+ return (React.createElement(InternalExpandableSection, { className: clsx(styles['expandable-link-group'], variant === 'section-group' && styles['expandable-link-group--no-ident']), variant: "navigation", expanded: userExpanded !== null && userExpanded !== void 0 ? userExpanded : expanded, onChange: onExpandedChange, headerText: React.createElement(Link, { definition: { type: 'link', href: definition.href, text: definition.text }, expanded: userExpanded !== null && userExpanded !== void 0 ? userExpanded : expanded, fireFollow: onHeaderFollow, fireChange: fireChange, activeHref: activeHref, position: position }) },
204
+ React.createElement(NavigationItemsList, { variant: "expandable-link-group", items: definition.items, fireFollow: fireFollow, fireChange: fireChange, activeHref: activeHref, position: position })));
184
205
  }
185
206
  //# sourceMappingURL=parts.js.map