@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.
- package/breadcrumb-group/implementation.d.ts.map +1 -1
- package/breadcrumb-group/implementation.js +61 -12
- package/breadcrumb-group/implementation.js.map +1 -1
- package/breadcrumb-group/interfaces.d.ts +3 -2
- package/breadcrumb-group/interfaces.d.ts.map +1 -1
- package/breadcrumb-group/interfaces.js.map +1 -1
- package/breadcrumb-group/item/funnel.d.ts +1 -0
- package/breadcrumb-group/item/funnel.d.ts.map +1 -1
- package/breadcrumb-group/item/funnel.js +3 -3
- package/breadcrumb-group/item/funnel.js.map +1 -1
- package/breadcrumb-group/item/item.d.ts +1 -1
- package/breadcrumb-group/item/item.d.ts.map +1 -1
- package/breadcrumb-group/item/item.js +19 -38
- package/breadcrumb-group/item/item.js.map +1 -1
- package/breadcrumb-group/item/styles.css.js +8 -9
- package/breadcrumb-group/item/styles.scoped.css +33 -32
- package/breadcrumb-group/item/styles.selectors.js +8 -9
- package/breadcrumb-group/styles.css.js +8 -7
- package/breadcrumb-group/styles.scoped.css +17 -57
- package/breadcrumb-group/styles.selectors.js +8 -7
- package/breadcrumb-group/utils.d.ts +5 -0
- package/breadcrumb-group/utils.d.ts.map +1 -1
- package/breadcrumb-group/utils.js +56 -0
- package/breadcrumb-group/utils.js.map +1 -1
- package/internal/environment.js +1 -1
- package/internal/environment.json +1 -1
- package/internal/manifest.json +1 -1
- package/package.json +1 -1
- package/side-navigation/analytics-metadata/interfaces.d.ts +19 -0
- package/side-navigation/analytics-metadata/interfaces.d.ts.map +1 -0
- package/side-navigation/analytics-metadata/interfaces.js +4 -0
- package/side-navigation/analytics-metadata/interfaces.js.map +1 -0
- package/side-navigation/analytics-metadata/styles.css.js +7 -0
- package/side-navigation/analytics-metadata/styles.scoped.css +8 -0
- package/side-navigation/analytics-metadata/styles.selectors.js +8 -0
- package/side-navigation/index.d.ts.map +1 -1
- package/side-navigation/index.js +10 -1
- package/side-navigation/index.js.map +1 -1
- package/side-navigation/parts.d.ts +2 -1
- package/side-navigation/parts.d.ts.map +1 -1
- package/side-navigation/parts.js +42 -21
- 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": "
|
|
6
|
-
"breadcrumb": "
|
|
7
|
-
"
|
|
8
|
-
"
|
|
9
|
-
"
|
|
10
|
-
"
|
|
11
|
-
"
|
|
12
|
-
"
|
|
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-
|
|
5
|
-
"
|
|
6
|
-
"
|
|
7
|
-
"
|
|
8
|
-
"
|
|
9
|
-
"
|
|
10
|
-
"
|
|
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-
|
|
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-
|
|
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-
|
|
228
|
-
.awsui_breadcrumb-
|
|
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-
|
|
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-
|
|
239
|
-
|
|
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-
|
|
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-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
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-
|
|
6
|
-
"
|
|
7
|
-
"
|
|
8
|
-
"
|
|
9
|
-
"
|
|
10
|
-
"
|
|
11
|
-
"
|
|
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"]}
|
package/internal/environment.js
CHANGED
package/internal/manifest.json
CHANGED
package/package.json
CHANGED
|
@@ -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 @@
|
|
|
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"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/side-navigation/index.tsx"],"names":[],"mappings":";
|
|
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"}
|
package/side-navigation/index.js
CHANGED
|
@@ -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
|
-
|
|
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;
|
|
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;
|
|
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"}
|
package/side-navigation/parts.js
CHANGED
|
@@ -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
|