@cloudscape-design/components 3.0.1307 → 3.0.1309
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/app-layout/visual-refresh-toolbar/drawer/global-ai-drawer.d.ts.map +1 -1
- package/app-layout/visual-refresh-toolbar/drawer/global-ai-drawer.js +4 -2
- package/app-layout/visual-refresh-toolbar/drawer/global-ai-drawer.js.map +1 -1
- package/app-layout/visual-refresh-toolbar/drawer/global-bottom-drawer.d.ts.map +1 -1
- package/app-layout/visual-refresh-toolbar/drawer/global-bottom-drawer.js +4 -2
- package/app-layout/visual-refresh-toolbar/drawer/global-bottom-drawer.js.map +1 -1
- package/app-layout/visual-refresh-toolbar/drawer/global-drawer.d.ts.map +1 -1
- package/app-layout/visual-refresh-toolbar/drawer/global-drawer.js +3 -2
- package/app-layout/visual-refresh-toolbar/drawer/global-drawer.js.map +1 -1
- package/app-layout/visual-refresh-toolbar/drawer/local-drawer.d.ts.map +1 -1
- package/app-layout/visual-refresh-toolbar/drawer/local-drawer.js +2 -2
- package/app-layout/visual-refresh-toolbar/drawer/local-drawer.js.map +1 -1
- package/app-layout/visual-refresh-toolbar/interfaces.d.ts +1 -0
- package/app-layout/visual-refresh-toolbar/interfaces.d.ts.map +1 -1
- package/app-layout/visual-refresh-toolbar/interfaces.js.map +1 -1
- package/app-layout/visual-refresh-toolbar/state/use-app-layout.d.ts.map +1 -1
- package/app-layout/visual-refresh-toolbar/state/use-app-layout.js +12 -1
- package/app-layout/visual-refresh-toolbar/state/use-app-layout.js.map +1 -1
- package/badge/styles.css.js +10 -10
- package/badge/styles.scoped.css +29 -16
- package/badge/styles.selectors.js +10 -10
- package/collection-preferences/content-display/content-display-option.js +1 -1
- package/collection-preferences/content-display/content-display-option.js.map +1 -1
- package/collection-preferences/content-display/index.d.ts +3 -7
- package/collection-preferences/content-display/index.d.ts.map +1 -1
- package/collection-preferences/content-display/index.js +63 -27
- package/collection-preferences/content-display/index.js.map +1 -1
- package/collection-preferences/content-display/utils.d.ts +41 -2
- package/collection-preferences/content-display/utils.d.ts.map +1 -1
- package/collection-preferences/content-display/utils.js +107 -13
- package/collection-preferences/content-display/utils.js.map +1 -1
- package/collection-preferences/index.d.ts.map +1 -1
- package/collection-preferences/index.js +2 -2
- package/collection-preferences/index.js.map +1 -1
- package/collection-preferences/interfaces.d.ts +30 -2
- package/collection-preferences/interfaces.d.ts.map +1 -1
- package/collection-preferences/interfaces.js.map +1 -1
- package/collection-preferences/styles.css.js +38 -36
- package/collection-preferences/styles.scoped.css +81 -37
- package/collection-preferences/styles.selectors.js +38 -36
- package/collection-preferences/utils.d.ts +1 -0
- package/collection-preferences/utils.d.ts.map +1 -1
- package/collection-preferences/utils.js +14 -0
- package/collection-preferences/utils.js.map +1 -1
- package/expandable-section/styles.css.js +35 -35
- package/expandable-section/styles.scoped.css +68 -68
- package/expandable-section/styles.selectors.js +35 -35
- package/i18n/messages/all.all.js +1 -1
- package/i18n/messages/all.all.json +1 -1
- package/i18n/messages/all.en.js +1 -1
- package/i18n/messages/all.en.json +1 -1
- package/i18n/messages-types.d.ts +4 -0
- package/i18n/messages-types.d.ts.map +1 -1
- package/i18n/messages-types.js.map +1 -1
- package/icon/interfaces.d.ts +1 -1
- package/icon/interfaces.d.ts.map +1 -1
- package/icon/interfaces.js.map +1 -1
- package/icon/internal.js +2 -2
- package/icon/internal.js.map +1 -1
- package/icon/styles.css.js +41 -39
- package/icon/styles.scoped.css +104 -85
- package/icon/styles.selectors.js +41 -39
- package/internal/base-component/styles.scoped.css +35 -3
- package/internal/environment.js +2 -2
- package/internal/environment.json +2 -2
- package/internal/generated/styles/tokens.d.ts +23 -1
- package/internal/generated/styles/tokens.js +23 -1
- package/internal/generated/theming/index.cjs +476 -4
- package/internal/generated/theming/index.cjs.d.ts +216 -0
- package/internal/generated/theming/index.d.ts +216 -0
- package/internal/generated/theming/index.js +476 -4
- package/internal/hooks/use-width-change/index.d.ts +12 -0
- package/internal/hooks/use-width-change/index.d.ts.map +1 -0
- package/internal/hooks/use-width-change/index.js +33 -0
- package/internal/hooks/use-width-change/index.js.map +1 -0
- package/internal/manifest.json +1 -1
- package/manifest.json +2 -2
- package/package.json +1 -1
- package/pagination/internal.d.ts.map +1 -1
- package/pagination/internal.js +4 -1
- package/pagination/internal.js.map +1 -1
- package/prompt-input/internal.d.ts.map +1 -1
- package/prompt-input/internal.js +9 -2
- package/prompt-input/internal.js.map +1 -1
- package/prompt-input/tokens/use-token-mode.d.ts.map +1 -1
- package/prompt-input/tokens/use-token-mode.js +0 -9
- package/prompt-input/tokens/use-token-mode.js.map +1 -1
- package/table/column-groups/col-group.d.ts +12 -0
- package/table/column-groups/col-group.d.ts.map +1 -0
- package/table/column-groups/col-group.js +24 -0
- package/table/column-groups/col-group.js.map +1 -0
- package/table/column-groups/split-utils.d.ts +31 -0
- package/table/column-groups/split-utils.d.ts.map +1 -0
- package/table/column-groups/split-utils.js +43 -0
- package/table/column-groups/split-utils.js.map +1 -0
- package/table/column-groups/use-column-groups.d.ts +7 -0
- package/table/column-groups/use-column-groups.d.ts.map +1 -0
- package/table/column-groups/use-column-groups.js +23 -0
- package/table/column-groups/use-column-groups.js.map +1 -0
- package/table/column-groups/utils.d.ts +54 -0
- package/table/column-groups/utils.d.ts.map +1 -0
- package/table/column-groups/utils.js +204 -0
- package/table/column-groups/utils.js.map +1 -0
- package/table/header-cell/common-props.d.ts +23 -0
- package/table/header-cell/common-props.d.ts.map +1 -0
- package/table/header-cell/common-props.js +4 -0
- package/table/header-cell/common-props.js.map +1 -0
- package/table/header-cell/group-header-cell.d.ts +45 -0
- package/table/header-cell/group-header-cell.d.ts.map +1 -0
- package/table/header-cell/group-header-cell.js +44 -0
- package/table/header-cell/group-header-cell.js.map +1 -0
- package/table/header-cell/index.d.ts +12 -22
- package/table/header-cell/index.d.ts.map +1 -1
- package/table/header-cell/index.js +3 -3
- package/table/header-cell/index.js.map +1 -1
- package/table/header-cell/styles.css.js +33 -30
- package/table/header-cell/styles.scoped.css +92 -68
- package/table/header-cell/styles.selectors.js +33 -30
- package/table/header-cell/th-element.d.ts +16 -0
- package/table/header-cell/th-element.d.ts.map +1 -1
- package/table/header-cell/th-element.js +6 -4
- package/table/header-cell/th-element.js.map +1 -1
- package/table/index.d.ts.map +1 -1
- package/table/index.js +5 -2
- package/table/index.js.map +1 -1
- package/table/interfaces.d.ts +37 -1
- package/table/interfaces.d.ts.map +1 -1
- package/table/interfaces.js.map +1 -1
- package/table/internal.d.ts.map +1 -1
- package/table/internal.js +17 -5
- package/table/internal.js.map +1 -1
- package/table/resizer/index.d.ts +9 -2
- package/table/resizer/index.d.ts.map +1 -1
- package/table/resizer/index.js +5 -5
- package/table/resizer/index.js.map +1 -1
- package/table/resizer/styles.css.js +16 -13
- package/table/resizer/styles.scoped.css +36 -26
- package/table/resizer/styles.selectors.js +16 -13
- package/table/sticky-header.d.ts +3 -0
- package/table/sticky-header.d.ts.map +1 -1
- package/table/sticky-header.js +7 -2
- package/table/sticky-header.js.map +1 -1
- package/table/sticky-scrolling.d.ts.map +1 -1
- package/table/sticky-scrolling.js +6 -1
- package/table/sticky-scrolling.js.map +1 -1
- package/table/styles.css.js +35 -34
- package/table/styles.scoped.css +47 -41
- package/table/styles.selectors.js +35 -34
- package/table/table-role/grid-navigation.d.ts.map +1 -1
- package/table/table-role/grid-navigation.js +5 -7
- package/table/table-role/grid-navigation.js.map +1 -1
- package/table/table-role/table-role-helper.d.ts +3 -0
- package/table/table-role/table-role-helper.d.ts.map +1 -1
- package/table/table-role/table-role-helper.js +9 -4
- package/table/table-role/table-role-helper.js.map +1 -1
- package/table/table-role/utils.d.ts +19 -0
- package/table/table-role/utils.d.ts.map +1 -1
- package/table/table-role/utils.js +86 -7
- package/table/table-role/utils.js.map +1 -1
- package/table/thead.d.ts +5 -0
- package/table/thead.d.ts.map +1 -1
- package/table/thead.js +145 -18
- package/table/thead.js.map +1 -1
- package/table/use-column-widths.d.ts +4 -0
- package/table/use-column-widths.d.ts.map +1 -1
- package/table/use-column-widths.js +68 -18
- package/table/use-column-widths.js.map +1 -1
- package/table/use-sticky-header.d.ts.map +1 -1
- package/table/use-sticky-header.js +4 -1
- package/table/use-sticky-header.js.map +1 -1
- package/table/utils.d.ts.map +1 -1
- package/table/utils.js +14 -4
- package/table/utils.js.map +1 -1
- package/test-utils/dom/collection-preferences/content-display-preference.d.ts +28 -2
- package/test-utils/dom/collection-preferences/content-display-preference.js +60 -2
- package/test-utils/dom/collection-preferences/content-display-preference.js.map +1 -1
- package/test-utils/dom/table/index.d.ts +18 -1
- package/test-utils/dom/table/index.js +22 -3
- package/test-utils/dom/table/index.js.map +1 -1
- package/test-utils/selectors/collection-preferences/content-display-preference.d.ts +28 -2
- package/test-utils/selectors/collection-preferences/content-display-preference.js +52 -2
- package/test-utils/selectors/collection-preferences/content-display-preference.js.map +1 -1
- package/test-utils/selectors/table/index.d.ts +18 -1
- package/test-utils/selectors/table/index.js +22 -3
- package/test-utils/selectors/table/index.js.map +1 -1
- package/wizard/wizard-step-list.js +4 -4
- package/wizard/wizard-step-list.js.map +1 -1
|
@@ -13,8 +13,22 @@ export declare class ContentDisplayOptionWrapper extends ComponentWrapper {
|
|
|
13
13
|
findLabel(): ElementWrapper;
|
|
14
14
|
/**
|
|
15
15
|
* Returns the visibility toggle for the option item.
|
|
16
|
+
* Note that, despite its typings, this may return null for group items since groups do not have a visibility toggle.
|
|
16
17
|
*/
|
|
17
18
|
findVisibilityToggle(): ToggleWrapper;
|
|
19
|
+
/**
|
|
20
|
+
* Returns all child option items nested under this item when it is a group.
|
|
21
|
+
* Returns `null` when this item is a leaf column (has no nested children).
|
|
22
|
+
*
|
|
23
|
+
* The children are the leaf-level `ContentDisplayOptionWrapper`s inside the group's
|
|
24
|
+
* nested `InternalList` — i.e. they already carry a drag handle and visibility toggle.
|
|
25
|
+
*
|
|
26
|
+
* @param option.group When `true`, returns only group items. When `false`, returns only leaf column items.
|
|
27
|
+
* When omitted, returns all child items regardless of type.
|
|
28
|
+
*/
|
|
29
|
+
findChildrenOptions(option?: {
|
|
30
|
+
group?: boolean;
|
|
31
|
+
}): import("@cloudscape-design/test-utils-core/selectors").MultiElementWrapper<ContentDisplayOptionWrapper> | null;
|
|
18
32
|
}
|
|
19
33
|
export default class ContentDisplayPreferenceWrapper extends ComponentWrapper {
|
|
20
34
|
static rootSelector: string;
|
|
@@ -34,9 +48,21 @@ export default class ContentDisplayPreferenceWrapper extends ComponentWrapper {
|
|
|
34
48
|
*/
|
|
35
49
|
findOptionByIndex(index: number): ContentDisplayOptionWrapper;
|
|
36
50
|
/**
|
|
37
|
-
* Returns
|
|
51
|
+
* Returns the top-level items in the preference list.
|
|
52
|
+
*
|
|
53
|
+
* For tables **without** column grouping this returns all column options.
|
|
54
|
+
* For tables **with** column grouping this returns the top-level entries only
|
|
55
|
+
* (which are group items). Use `.findChildrenOptions()` on a group item to
|
|
56
|
+
* access the leaf columns nested within it.
|
|
57
|
+
*
|
|
58
|
+
* @param option.group When `true`, returns only group items. When `false`, returns only leaf column items.
|
|
59
|
+
* When omitted, returns all top-level items regardless of type.
|
|
60
|
+
* @param option.visible When `true`, returns only visible items. When `false`, returns only hidden items.
|
|
61
|
+
* Note that group items have no visibility toggle and are excluded when this filter is active.
|
|
38
62
|
*/
|
|
39
|
-
findOptions(
|
|
63
|
+
findOptions(option?: {
|
|
64
|
+
group?: boolean;
|
|
65
|
+
}): import("@cloudscape-design/test-utils-core/selectors").MultiElementWrapper<ContentDisplayOptionWrapper>;
|
|
40
66
|
/**
|
|
41
67
|
* Returns the text filter input.
|
|
42
68
|
*/
|
|
@@ -27,10 +27,40 @@ class ContentDisplayOptionWrapper extends selectors_1.ComponentWrapper {
|
|
|
27
27
|
}
|
|
28
28
|
/**
|
|
29
29
|
* Returns the visibility toggle for the option item.
|
|
30
|
+
* Note that, despite its typings, this may return null for group items since groups do not have a visibility toggle.
|
|
30
31
|
*/
|
|
31
32
|
findVisibilityToggle() {
|
|
32
33
|
return this.getListItem().findContent().findComponent(`.${styles_selectors_js_1.default['content-display-option-toggle']}`, toggle_1.default);
|
|
33
34
|
}
|
|
35
|
+
/**
|
|
36
|
+
* Returns all child option items nested under this item when it is a group.
|
|
37
|
+
* Returns `null` when this item is a leaf column (has no nested children).
|
|
38
|
+
*
|
|
39
|
+
* The children are the leaf-level `ContentDisplayOptionWrapper`s inside the group's
|
|
40
|
+
* nested `InternalList` — i.e. they already carry a drag handle and visibility toggle.
|
|
41
|
+
*
|
|
42
|
+
* @param option.group When `true`, returns only group items. When `false`, returns only leaf column items.
|
|
43
|
+
* When omitted, returns all child items regardless of type.
|
|
44
|
+
*/
|
|
45
|
+
/* istanbul ignore next: :has() selector not supported in JSDOM */
|
|
46
|
+
findChildrenOptions(option = {}) {
|
|
47
|
+
const groupWrapper = this.getListItem().findContent().find('[data-item-type="group"]');
|
|
48
|
+
if (!groupWrapper) {
|
|
49
|
+
return null;
|
|
50
|
+
}
|
|
51
|
+
const nestedList = groupWrapper.find(`.${list_1.default.rootSelector}`);
|
|
52
|
+
if (!nestedList) {
|
|
53
|
+
return null;
|
|
54
|
+
}
|
|
55
|
+
const list = new list_1.default(nestedList.getElement());
|
|
56
|
+
if (option.group === true) {
|
|
57
|
+
return list.findAll(`li:has([data-item-type="group"])`).map(item => new ContentDisplayOptionWrapper(item.getElement()));
|
|
58
|
+
}
|
|
59
|
+
if (option.group === false) {
|
|
60
|
+
return list.findAll(`li:has([data-item-type="column"])`).map(item => new ContentDisplayOptionWrapper(item.getElement()));
|
|
61
|
+
}
|
|
62
|
+
return list.findItems().map(item => new ContentDisplayOptionWrapper(item.getElement()));
|
|
63
|
+
}
|
|
34
64
|
}
|
|
35
65
|
exports.ContentDisplayOptionWrapper = ContentDisplayOptionWrapper;
|
|
36
66
|
class ContentDisplayPreferenceWrapper extends selectors_1.ComponentWrapper {
|
|
@@ -59,9 +89,29 @@ class ContentDisplayPreferenceWrapper extends selectors_1.ComponentWrapper {
|
|
|
59
89
|
return item && new ContentDisplayOptionWrapper(item.getElement());
|
|
60
90
|
}
|
|
61
91
|
/**
|
|
62
|
-
* Returns
|
|
92
|
+
* Returns the top-level items in the preference list.
|
|
93
|
+
*
|
|
94
|
+
* For tables **without** column grouping this returns all column options.
|
|
95
|
+
* For tables **with** column grouping this returns the top-level entries only
|
|
96
|
+
* (which are group items). Use `.findChildrenOptions()` on a group item to
|
|
97
|
+
* access the leaf columns nested within it.
|
|
98
|
+
*
|
|
99
|
+
* @param option.group When `true`, returns only group items. When `false`, returns only leaf column items.
|
|
100
|
+
* When omitted, returns all top-level items regardless of type.
|
|
101
|
+
* @param option.visible When `true`, returns only visible items. When `false`, returns only hidden items.
|
|
102
|
+
* Note that group items have no visibility toggle and are excluded when this filter is active.
|
|
63
103
|
*/
|
|
64
|
-
findOptions() {
|
|
104
|
+
findOptions(option = {}) {
|
|
105
|
+
/* istanbul ignore next: :has() selector not supported in JSDOM */ if (option.group === true) {
|
|
106
|
+
// Only group items — identified by the data-item-type="group" wrapper inside the list item
|
|
107
|
+
return this.getList().findAll(`li:has([data-item-type="group"])`).map(wrapper => new ContentDisplayOptionWrapper(wrapper.getElement()));
|
|
108
|
+
}
|
|
109
|
+
/* istanbul ignore next: :has() selector not supported in JSDOM */
|
|
110
|
+
if (option.group === false) {
|
|
111
|
+
// Only leaf column items — identified by the data-item-type="column" wrapper
|
|
112
|
+
return this.getList().findAll(`li:has([data-item-type="column"])`).map(wrapper => new ContentDisplayOptionWrapper(wrapper.getElement()));
|
|
113
|
+
}
|
|
114
|
+
// No group filter — return all top-level items
|
|
65
115
|
return this.getList().findItems().map(wrapper => new ContentDisplayOptionWrapper(wrapper.getElement()));
|
|
66
116
|
}
|
|
67
117
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"content-display-preference.js","sourceRoot":"","sources":["../../../../../src/test-utils/selectors/collection-preferences/content-display-preference.ts"],"names":[],"mappings":";;;AAAA,qEAAqE;AACrE,sCAAsC;AACtC,4EAAgG;AAChG,kCAAuD;AACvD,gDAA+C;AAC/C,sCAAsC;AACtC,6FAAyE;AACzE,MAAM,YAAY,GAAG,CAAC,MAAc,EAAU,EAAE,CAAC,6BAAM,CAAC,mBAAmB,MAAM,EAAE,CAAC,CAAC;AACrF,MAAa,2BAA4B,SAAQ,4BAAgB;IACvD,WAAW;QACjB,OAAO,IAAI,sBAAe,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC;IAChD,CAAC;IACD;;OAEG;IACH,cAAc;QACZ,OAAO,IAAI,CAAC,WAAW,EAAE,CAAC,cAAc,EAAG,CAAC;IAC9C,CAAC;IAED;;OAEG;IACH,SAAS;QACP,OAAO,IAAI,CAAC,WAAW,EAAE,CAAC,WAAW,EAAE,CAAC,eAAe,CAAC,6BAAM,CAAC,8BAA8B,CAAC,CAAE,CAAC;IACnG,CAAC;IAED
|
|
1
|
+
{"version":3,"file":"content-display-preference.js","sourceRoot":"","sources":["../../../../../src/test-utils/selectors/collection-preferences/content-display-preference.ts"],"names":[],"mappings":"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"}
|
|
@@ -15,7 +15,19 @@ export default class TableWrapper extends ComponentWrapper {
|
|
|
15
15
|
*/
|
|
16
16
|
findHeaderRegion(): ElementWrapper;
|
|
17
17
|
findFooterSlot(): ElementWrapper;
|
|
18
|
-
|
|
18
|
+
/**
|
|
19
|
+
* Returns column header cells from the table's header region.
|
|
20
|
+
*
|
|
21
|
+
* By default, returns all leaf-column headers (`scope="col"`).
|
|
22
|
+
* For tables without column grouping this is equivalent to the previous behavior.
|
|
23
|
+
* For tables with column grouping this excludes group header cells.
|
|
24
|
+
*
|
|
25
|
+
* @param option.groupId When provided, returns only leaf columns belonging to this group
|
|
26
|
+
* (matched via `data-column-group-id` attribute).
|
|
27
|
+
*/
|
|
28
|
+
findColumnHeaders(option?: {
|
|
29
|
+
groupId?: string;
|
|
30
|
+
}): import("@cloudscape-design/test-utils-core/selectors").MultiElementWrapper<ElementWrapper>;
|
|
19
31
|
/**
|
|
20
32
|
* Returns the element the user clicks when resizing a column.
|
|
21
33
|
*
|
|
@@ -45,6 +57,11 @@ export default class TableWrapper extends ComponentWrapper {
|
|
|
45
57
|
findEmptyRegion(): ElementWrapper;
|
|
46
58
|
findEmptySlot(): ElementWrapper;
|
|
47
59
|
findLoadingText(): ElementWrapper;
|
|
60
|
+
/**
|
|
61
|
+
* Returns the clickable sorting area of a column header.
|
|
62
|
+
*
|
|
63
|
+
* @param colIndex 1-based index of the column.
|
|
64
|
+
*/
|
|
48
65
|
findColumnSortingArea(colIndex: number): ElementWrapper;
|
|
49
66
|
/**
|
|
50
67
|
* Returns the column that is used for ascending sorting.
|
|
@@ -40,7 +40,21 @@ class TableWrapper extends selectors_1.ComponentWrapper {
|
|
|
40
40
|
findFooterSlot() {
|
|
41
41
|
return this.containerWrapper.findFooter();
|
|
42
42
|
}
|
|
43
|
-
|
|
43
|
+
/**
|
|
44
|
+
* Returns column header cells from the table's header region.
|
|
45
|
+
*
|
|
46
|
+
* By default, returns all leaf-column headers (`scope="col"`).
|
|
47
|
+
* For tables without column grouping this is equivalent to the previous behavior.
|
|
48
|
+
* For tables with column grouping this excludes group header cells.
|
|
49
|
+
*
|
|
50
|
+
* @param option.groupId When provided, returns only leaf columns belonging to this group
|
|
51
|
+
* (matched via `data-column-group-id` attribute).
|
|
52
|
+
*/
|
|
53
|
+
findColumnHeaders(option = {}) {
|
|
54
|
+
const { groupId } = option;
|
|
55
|
+
if (groupId !== undefined) {
|
|
56
|
+
return this.findActiveTHead().findAll(`th[data-column-group-id="${groupId}"]`);
|
|
57
|
+
}
|
|
44
58
|
return this.findActiveTHead().findAll('tr > *');
|
|
45
59
|
}
|
|
46
60
|
/**
|
|
@@ -49,7 +63,7 @@ class TableWrapper extends selectors_1.ComponentWrapper {
|
|
|
49
63
|
* @param columnIndex 1-based index of the column containing the resizer.
|
|
50
64
|
*/
|
|
51
65
|
findColumnResizer(columnIndex) {
|
|
52
|
-
return this.findActiveTHead().find(`th:nth-child(${columnIndex}) .${styles_selectors_js_5.default.resizer}`);
|
|
66
|
+
return this.findActiveTHead().find(`th[data-column-index="${columnIndex}"] .${styles_selectors_js_5.default.resizer}, tr:not([data-group-level]) > th:nth-child(${columnIndex}) .${styles_selectors_js_5.default.resizer}`);
|
|
53
67
|
}
|
|
54
68
|
/**
|
|
55
69
|
* Returns a table cell based on given row and column indices.
|
|
@@ -89,8 +103,13 @@ class TableWrapper extends selectors_1.ComponentWrapper {
|
|
|
89
103
|
findLoadingText() {
|
|
90
104
|
return this.findByClassName(styles_selectors_js_7.default.loading);
|
|
91
105
|
}
|
|
106
|
+
/**
|
|
107
|
+
* Returns the clickable sorting area of a column header.
|
|
108
|
+
*
|
|
109
|
+
* @param colIndex 1-based index of the column.
|
|
110
|
+
*/
|
|
92
111
|
findColumnSortingArea(colIndex) {
|
|
93
|
-
return this.findActiveTHead().find(`tr > *:nth-child(${colIndex}) [role=button]`);
|
|
112
|
+
return this.findActiveTHead().find(`th[data-column-index="${colIndex}"] [role=button], tr:not([data-group-level]) > *:nth-child(${colIndex}) [role=button]`);
|
|
94
113
|
}
|
|
95
114
|
/**
|
|
96
115
|
* Returns the column that is used for ascending sorting.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/test-utils/selectors/table/index.ts"],"names":[],"mappings":";;AAAA,qEAAqE;AACrE,sCAAsC;AACtC,4EAAgG;AAChG,sEAAqE;AACrE,4CAA4C;AAC5C,8CAA8C;AAC9C,wDAAuD;AACvD,gDAA+C;AAC/C,+GAAuG;AACvG,sFAA0E;AAC1E,wFAA8E;AAC9E,gGAA8F;AAC9F,oFAAuE;AACvE,sFAA2E;AAC3E,4EAAwD;AACxD,yFAA6E;AAC7E,MAAqB,YAAa,SAAQ,4BAAgB;IAA1D;;QAEU,qBAAgB,GAAG,IAAI,mBAAgB,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/test-utils/selectors/table/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -13,7 +13,7 @@ export const StepStatusValues = {
|
|
|
13
13
|
Next: 'next',
|
|
14
14
|
};
|
|
15
15
|
export function getStepStatus(index, activeStepIndex, farthestStepIndex, isLoadingNextStep, allowSkipTo, steps) {
|
|
16
|
-
var _a;
|
|
16
|
+
var _a, _b;
|
|
17
17
|
if (activeStepIndex === index) {
|
|
18
18
|
return StepStatusValues.Active;
|
|
19
19
|
}
|
|
@@ -24,12 +24,12 @@ export function getStepStatus(index, activeStepIndex, farthestStepIndex, isLoadi
|
|
|
24
24
|
return StepStatusValues.Visited;
|
|
25
25
|
}
|
|
26
26
|
if (allowSkipTo && index > activeStepIndex) {
|
|
27
|
-
//
|
|
27
|
+
// All steps between current and target are optional — can skip over them
|
|
28
28
|
if (canSkip(activeStepIndex + 1, index, steps)) {
|
|
29
29
|
return StepStatusValues.Next;
|
|
30
30
|
}
|
|
31
|
-
//
|
|
32
|
-
if (index === activeStepIndex + 1 && ((_a = steps[index]) === null || _a === void 0 ? void 0 : _a.isOptional)) {
|
|
31
|
+
// If either the current step or the next step is optional, we can navigate to it
|
|
32
|
+
if (index === activeStepIndex + 1 && (((_a = steps[index]) === null || _a === void 0 ? void 0 : _a.isOptional) || ((_b = steps[activeStepIndex]) === null || _b === void 0 ? void 0 : _b.isOptional))) {
|
|
33
33
|
return StepStatusValues.Next;
|
|
34
34
|
}
|
|
35
35
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wizard-step-list.js","sourceRoot":"","sources":["../../../src/wizard/wizard-step-list.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 { useUniqueId } from '@cloudscape-design/component-toolkit/internal';\n\nimport { getNavigationActionDetail } from './analytics-metadata/utils';\nimport { WizardProps } from './interfaces';\n\nimport analyticsSelectors from './analytics-metadata/styles.css.js';\nimport styles from './styles.css.js';\n\nexport const StepStatusValues = {\n Active: 'active',\n Visited: 'visited',\n Unvisited: 'unvisited',\n Next: 'next',\n} as const;\n\nexport type StepStatus = (typeof StepStatusValues)[keyof typeof StepStatusValues];\n\nexport interface WizardStepListProps {\n activeStepIndex: number;\n farthestStepIndex: number;\n allowSkipTo: boolean;\n i18nStrings: WizardProps.I18nStrings;\n isLoadingNextStep: boolean;\n onStepClick: (stepIndex: number) => void;\n onSkipToClick: (stepIndex: number) => void;\n steps: ReadonlyArray<WizardProps.Step>;\n}\n\nexport function getStepStatus(\n index: number,\n activeStepIndex: number,\n farthestStepIndex: number,\n isLoadingNextStep: boolean,\n allowSkipTo: boolean,\n steps: ReadonlyArray<{ isOptional?: boolean }>\n): StepStatus {\n if (activeStepIndex === index) {\n return StepStatusValues.Active;\n }\n if (isLoadingNextStep) {\n return StepStatusValues.Unvisited;\n }\n if (farthestStepIndex >= index) {\n return StepStatusValues.Visited;\n }\n if (allowSkipTo && index > activeStepIndex) {\n // Can we skip to this step? (all steps between current and this one are optional)\n if (canSkip(activeStepIndex + 1, index, steps)) {\n return StepStatusValues.Next;\n }\n // Immediate next step is also navigable if it's optional\n if (index === activeStepIndex + 1 && steps[index]?.isOptional) {\n return StepStatusValues.Next;\n }\n }\n return StepStatusValues.Unvisited;\n}\n\nexport function canSkip(fromIndex: number, toIndex: number, steps: ReadonlyArray<{ isOptional?: boolean }>): boolean {\n // Can't skip if there are no steps to skip over\n if (fromIndex >= toIndex) {\n return false;\n }\n for (let i = fromIndex; i < toIndex; i++) {\n if (!steps[i].isOptional) {\n return false;\n }\n }\n return true;\n}\n\nexport function handleStepNavigation(\n stepIndex: number,\n status: StepStatus,\n onStepClick: (index: number) => void,\n onSkipToClick: (index: number) => void\n): void {\n if (status === StepStatusValues.Visited) {\n onStepClick(stepIndex);\n } else if (status === StepStatusValues.Next) {\n onSkipToClick(stepIndex);\n }\n}\n\nexport default function WizardStepList({\n activeStepIndex,\n farthestStepIndex,\n allowSkipTo,\n i18nStrings,\n isLoadingNextStep,\n onStepClick,\n onSkipToClick,\n steps,\n}: WizardStepListProps) {\n return (\n <ul className={styles.refresh}>\n {steps.map((step, index) => (\n <WizardStepListItem\n key={index}\n index={index}\n step={step}\n activeStepIndex={activeStepIndex}\n farthestStepIndex={farthestStepIndex}\n allowSkipTo={allowSkipTo}\n i18nStrings={i18nStrings}\n isLoadingNextStep={isLoadingNextStep}\n onStepClick={onStepClick}\n onSkipToClick={onSkipToClick}\n steps={steps}\n />\n ))}\n </ul>\n );\n}\n\ninterface WizardStepListItemProps {\n index: number;\n step: WizardProps.Step;\n activeStepIndex: number;\n farthestStepIndex: number;\n allowSkipTo: boolean;\n i18nStrings: WizardProps.I18nStrings;\n isLoadingNextStep: boolean;\n onStepClick: (stepIndex: number) => void;\n onSkipToClick: (stepIndex: number) => void;\n steps: ReadonlyArray<WizardProps.Step>;\n}\n\nfunction WizardStepListItem({\n index,\n step,\n activeStepIndex,\n farthestStepIndex,\n allowSkipTo,\n i18nStrings,\n isLoadingNextStep,\n onStepClick,\n onSkipToClick,\n steps,\n}: WizardStepListItemProps) {\n const status = getStepStatus(index, activeStepIndex, farthestStepIndex, isLoadingNextStep, allowSkipTo, steps);\n const isClickable = status === StepStatusValues.Visited || status === StepStatusValues.Next;\n const stepLabel = i18nStrings.stepNumberLabel?.(index + 1);\n const fullStepLabel = `${stepLabel}: ${step.title}`;\n const optionalDescriptionId = useUniqueId('wizard-step-optional-');\n const state = {\n active: 'active',\n unvisited: 'disabled',\n visited: 'enabled',\n next: 'enabled',\n }[status];\n\n const handleInteraction = () => handleStepNavigation(index, status, onStepClick, onSkipToClick);\n\n return (\n <li className={clsx(styles[`${state}`], styles['navigation-link-item'])}>\n <hr />\n\n <span className={clsx(styles.number, styles['navigation-link-label'])}>\n {i18nStrings.stepNumberLabel?.(index + 1)}\n {step.isOptional && <i id={optionalDescriptionId}>{` - ${i18nStrings.optional}`}</i>}\n </span>\n\n <a\n className={clsx(styles['navigation-link'], {\n [styles['navigation-link-active']]: status === StepStatusValues.Active,\n [styles['navigation-link-disabled']]: status === StepStatusValues.Unvisited,\n })}\n aria-current={status === StepStatusValues.Active ? 'step' : undefined}\n aria-disabled={status === StepStatusValues.Unvisited ? 'true' : undefined}\n onClick={event => {\n event.preventDefault();\n handleInteraction();\n }}\n onKeyDown={event => {\n if (event.key === ' ' || event.key === 'Enter') {\n event.preventDefault();\n }\n // Enter activates the button on key down instead of key up.\n if (event.key === 'Enter') {\n handleInteraction();\n }\n }}\n onKeyUp={event => {\n // Emulate button behavior, which also fires on space.\n if (event.key === ' ') {\n handleInteraction();\n }\n }}\n role=\"button\"\n tabIndex={isClickable ? 0 : undefined}\n aria-label={fullStepLabel}\n aria-describedby={step.isOptional ? optionalDescriptionId : undefined}\n {...(status === StepStatusValues.Unvisited\n ? {}\n : getNavigationActionDetail(index, 'step', true, `.${analyticsSelectors['step-title']}`))}\n >\n <div className={styles.circle} />\n\n <span className={clsx(styles.title, analyticsSelectors['step-title'])}>{step.title}</span>\n </a>\n </li>\n );\n}\n"]}
|
|
1
|
+
{"version":3,"file":"wizard-step-list.js","sourceRoot":"","sources":["../../../src/wizard/wizard-step-list.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 { useUniqueId } from '@cloudscape-design/component-toolkit/internal';\n\nimport { getNavigationActionDetail } from './analytics-metadata/utils';\nimport { WizardProps } from './interfaces';\n\nimport analyticsSelectors from './analytics-metadata/styles.css.js';\nimport styles from './styles.css.js';\n\nexport const StepStatusValues = {\n Active: 'active',\n Visited: 'visited',\n Unvisited: 'unvisited',\n Next: 'next',\n} as const;\n\nexport type StepStatus = (typeof StepStatusValues)[keyof typeof StepStatusValues];\n\nexport interface WizardStepListProps {\n activeStepIndex: number;\n farthestStepIndex: number;\n allowSkipTo: boolean;\n i18nStrings: WizardProps.I18nStrings;\n isLoadingNextStep: boolean;\n onStepClick: (stepIndex: number) => void;\n onSkipToClick: (stepIndex: number) => void;\n steps: ReadonlyArray<WizardProps.Step>;\n}\n\nexport function getStepStatus(\n index: number,\n activeStepIndex: number,\n farthestStepIndex: number,\n isLoadingNextStep: boolean,\n allowSkipTo: boolean,\n steps: ReadonlyArray<{ isOptional?: boolean }>\n): StepStatus {\n if (activeStepIndex === index) {\n return StepStatusValues.Active;\n }\n if (isLoadingNextStep) {\n return StepStatusValues.Unvisited;\n }\n if (farthestStepIndex >= index) {\n return StepStatusValues.Visited;\n }\n if (allowSkipTo && index > activeStepIndex) {\n // All steps between current and target are optional — can skip over them\n if (canSkip(activeStepIndex + 1, index, steps)) {\n return StepStatusValues.Next;\n }\n // If either the current step or the next step is optional, we can navigate to it\n if (index === activeStepIndex + 1 && (steps[index]?.isOptional || steps[activeStepIndex]?.isOptional)) {\n return StepStatusValues.Next;\n }\n }\n return StepStatusValues.Unvisited;\n}\n\nexport function canSkip(fromIndex: number, toIndex: number, steps: ReadonlyArray<{ isOptional?: boolean }>): boolean {\n // Can't skip if there are no steps to skip over\n if (fromIndex >= toIndex) {\n return false;\n }\n for (let i = fromIndex; i < toIndex; i++) {\n if (!steps[i].isOptional) {\n return false;\n }\n }\n return true;\n}\n\nexport function handleStepNavigation(\n stepIndex: number,\n status: StepStatus,\n onStepClick: (index: number) => void,\n onSkipToClick: (index: number) => void\n): void {\n if (status === StepStatusValues.Visited) {\n onStepClick(stepIndex);\n } else if (status === StepStatusValues.Next) {\n onSkipToClick(stepIndex);\n }\n}\n\nexport default function WizardStepList({\n activeStepIndex,\n farthestStepIndex,\n allowSkipTo,\n i18nStrings,\n isLoadingNextStep,\n onStepClick,\n onSkipToClick,\n steps,\n}: WizardStepListProps) {\n return (\n <ul className={styles.refresh}>\n {steps.map((step, index) => (\n <WizardStepListItem\n key={index}\n index={index}\n step={step}\n activeStepIndex={activeStepIndex}\n farthestStepIndex={farthestStepIndex}\n allowSkipTo={allowSkipTo}\n i18nStrings={i18nStrings}\n isLoadingNextStep={isLoadingNextStep}\n onStepClick={onStepClick}\n onSkipToClick={onSkipToClick}\n steps={steps}\n />\n ))}\n </ul>\n );\n}\n\ninterface WizardStepListItemProps {\n index: number;\n step: WizardProps.Step;\n activeStepIndex: number;\n farthestStepIndex: number;\n allowSkipTo: boolean;\n i18nStrings: WizardProps.I18nStrings;\n isLoadingNextStep: boolean;\n onStepClick: (stepIndex: number) => void;\n onSkipToClick: (stepIndex: number) => void;\n steps: ReadonlyArray<WizardProps.Step>;\n}\n\nfunction WizardStepListItem({\n index,\n step,\n activeStepIndex,\n farthestStepIndex,\n allowSkipTo,\n i18nStrings,\n isLoadingNextStep,\n onStepClick,\n onSkipToClick,\n steps,\n}: WizardStepListItemProps) {\n const status = getStepStatus(index, activeStepIndex, farthestStepIndex, isLoadingNextStep, allowSkipTo, steps);\n const isClickable = status === StepStatusValues.Visited || status === StepStatusValues.Next;\n const stepLabel = i18nStrings.stepNumberLabel?.(index + 1);\n const fullStepLabel = `${stepLabel}: ${step.title}`;\n const optionalDescriptionId = useUniqueId('wizard-step-optional-');\n const state = {\n active: 'active',\n unvisited: 'disabled',\n visited: 'enabled',\n next: 'enabled',\n }[status];\n\n const handleInteraction = () => handleStepNavigation(index, status, onStepClick, onSkipToClick);\n\n return (\n <li className={clsx(styles[`${state}`], styles['navigation-link-item'])}>\n <hr />\n\n <span className={clsx(styles.number, styles['navigation-link-label'])}>\n {i18nStrings.stepNumberLabel?.(index + 1)}\n {step.isOptional && <i id={optionalDescriptionId}>{` - ${i18nStrings.optional}`}</i>}\n </span>\n\n <a\n className={clsx(styles['navigation-link'], {\n [styles['navigation-link-active']]: status === StepStatusValues.Active,\n [styles['navigation-link-disabled']]: status === StepStatusValues.Unvisited,\n })}\n aria-current={status === StepStatusValues.Active ? 'step' : undefined}\n aria-disabled={status === StepStatusValues.Unvisited ? 'true' : undefined}\n onClick={event => {\n event.preventDefault();\n handleInteraction();\n }}\n onKeyDown={event => {\n if (event.key === ' ' || event.key === 'Enter') {\n event.preventDefault();\n }\n // Enter activates the button on key down instead of key up.\n if (event.key === 'Enter') {\n handleInteraction();\n }\n }}\n onKeyUp={event => {\n // Emulate button behavior, which also fires on space.\n if (event.key === ' ') {\n handleInteraction();\n }\n }}\n role=\"button\"\n tabIndex={isClickable ? 0 : undefined}\n aria-label={fullStepLabel}\n aria-describedby={step.isOptional ? optionalDescriptionId : undefined}\n {...(status === StepStatusValues.Unvisited\n ? {}\n : getNavigationActionDetail(index, 'step', true, `.${analyticsSelectors['step-title']}`))}\n >\n <div className={styles.circle} />\n\n <span className={clsx(styles.title, analyticsSelectors['step-title'])}>{step.title}</span>\n </a>\n </li>\n );\n}\n"]}
|