@cloudscape-design/components-themeable 3.0.645 → 3.0.647
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/lib/internal/manifest.json +1 -1
- package/lib/internal/scss/form-field/styles.scss +1 -0
- package/lib/internal/scss/link/styles.scss +0 -5
- package/lib/internal/scss/slider/mixins.scss +18 -0
- package/lib/internal/scss/slider/styles.scss +45 -0
- package/lib/internal/scss/split-panel/styles.scss +2 -0
- package/lib/internal/template/autosuggest/internal.d.ts.map +1 -1
- package/lib/internal/template/autosuggest/internal.js +10 -0
- package/lib/internal/template/autosuggest/internal.js.map +1 -1
- package/lib/internal/template/breadcrumb-group/implementation.d.ts +8 -0
- package/lib/internal/template/breadcrumb-group/implementation.d.ts.map +1 -0
- package/lib/internal/template/breadcrumb-group/implementation.js +71 -0
- package/lib/internal/template/breadcrumb-group/implementation.js.map +1 -0
- package/lib/internal/template/breadcrumb-group/index.js +1 -1
- package/lib/internal/template/breadcrumb-group/index.js.map +1 -1
- package/lib/internal/template/breadcrumb-group/internal.d.ts +1 -11
- package/lib/internal/template/breadcrumb-group/internal.d.ts.map +1 -1
- package/lib/internal/template/breadcrumb-group/internal.js +2 -70
- package/lib/internal/template/breadcrumb-group/internal.js.map +1 -1
- package/lib/internal/template/breadcrumb-group/item/item.js +1 -1
- package/lib/internal/template/breadcrumb-group/item/item.js.map +1 -1
- package/lib/internal/template/breadcrumb-group/utils.d.ts +7 -0
- package/lib/internal/template/breadcrumb-group/utils.d.ts.map +1 -0
- package/lib/internal/template/breadcrumb-group/utils.js +6 -0
- package/lib/internal/template/breadcrumb-group/utils.js.map +1 -0
- package/lib/internal/template/drawer/implementation.d.ts +7 -0
- package/lib/internal/template/drawer/implementation.d.ts.map +1 -0
- package/lib/internal/template/drawer/implementation.js +24 -0
- package/lib/internal/template/drawer/implementation.js.map +1 -0
- package/lib/internal/template/drawer/index.d.ts +1 -1
- package/lib/internal/template/drawer/index.d.ts.map +1 -1
- package/lib/internal/template/drawer/index.js +4 -18
- package/lib/internal/template/drawer/index.js.map +1 -1
- package/lib/internal/template/drawer/internal.d.ts +2 -0
- package/lib/internal/template/drawer/internal.d.ts.map +1 -0
- package/lib/internal/template/drawer/internal.js +5 -0
- package/lib/internal/template/drawer/internal.js.map +1 -0
- package/lib/internal/template/form-field/styles.css.js +23 -23
- package/lib/internal/template/form-field/styles.scoped.css +38 -37
- package/lib/internal/template/form-field/styles.selectors.js +23 -23
- package/lib/internal/template/help-panel/implementation.d.ts +7 -0
- package/lib/internal/template/help-panel/implementation.d.ts.map +1 -0
- package/lib/internal/template/help-panel/implementation.js +27 -0
- package/lib/internal/template/help-panel/implementation.js.map +1 -0
- package/lib/internal/template/help-panel/index.d.ts +1 -1
- package/lib/internal/template/help-panel/index.d.ts.map +1 -1
- package/lib/internal/template/help-panel/index.js +4 -21
- package/lib/internal/template/help-panel/index.js.map +1 -1
- package/lib/internal/template/help-panel/internal.d.ts +2 -0
- package/lib/internal/template/help-panel/internal.d.ts.map +1 -0
- package/lib/internal/template/help-panel/internal.js +5 -0
- package/lib/internal/template/help-panel/internal.js.map +1 -0
- package/lib/internal/template/internal/base-component/styles.scoped.css +10 -0
- package/lib/internal/template/internal/components/options-list/utils/use-keyboard.d.ts +2 -1
- package/lib/internal/template/internal/components/options-list/utils/use-keyboard.d.ts.map +1 -1
- package/lib/internal/template/internal/components/options-list/utils/use-keyboard.js +4 -4
- package/lib/internal/template/internal/components/options-list/utils/use-keyboard.js.map +1 -1
- package/lib/internal/template/internal/environment.js +1 -1
- package/lib/internal/template/internal/environment.json +1 -1
- package/lib/internal/template/internal/generated/styles/tokens.d.ts +1 -0
- package/lib/internal/template/internal/generated/styles/tokens.js +1 -0
- package/lib/internal/template/internal/generated/theming/index.cjs +31 -0
- package/lib/internal/template/internal/generated/theming/index.js +31 -0
- package/lib/internal/template/internal/widgets/index.d.ts +4 -0
- package/lib/internal/template/internal/widgets/index.d.ts.map +1 -0
- package/lib/internal/template/internal/widgets/index.js +28 -0
- package/lib/internal/template/internal/widgets/index.js.map +1 -0
- package/lib/internal/template/link/styles.css.js +20 -20
- package/lib/internal/template/link/styles.scoped.css +71 -75
- package/lib/internal/template/link/styles.selectors.js +20 -20
- package/lib/internal/template/s3-resource-selector/s3-modal/index.js +2 -2
- package/lib/internal/template/s3-resource-selector/s3-modal/index.js.map +1 -1
- package/lib/internal/template/select/utils/use-select.d.ts.map +1 -1
- package/lib/internal/template/select/utils/use-select.js +15 -1
- package/lib/internal/template/select/utils/use-select.js.map +1 -1
- package/lib/internal/template/side-navigation/implementation.d.ts +7 -0
- package/lib/internal/template/side-navigation/implementation.d.ts.map +1 -0
- package/lib/internal/template/side-navigation/implementation.js +36 -0
- package/lib/internal/template/side-navigation/implementation.js.map +1 -0
- package/lib/internal/template/side-navigation/index.d.ts +1 -1
- package/lib/internal/template/side-navigation/index.d.ts.map +1 -1
- package/lib/internal/template/side-navigation/index.js +5 -29
- package/lib/internal/template/side-navigation/index.js.map +1 -1
- package/lib/internal/template/side-navigation/internal.d.ts +1 -17
- package/lib/internal/template/side-navigation/internal.d.ts.map +1 -1
- package/lib/internal/template/side-navigation/internal.js +2 -182
- package/lib/internal/template/side-navigation/internal.js.map +1 -1
- package/lib/internal/template/side-navigation/parts.d.ts +18 -0
- package/lib/internal/template/side-navigation/parts.d.ts.map +1 -0
- package/lib/internal/template/side-navigation/parts.js +185 -0
- package/lib/internal/template/side-navigation/parts.js.map +1 -0
- package/lib/internal/template/slider/internal.d.ts.map +1 -1
- package/lib/internal/template/slider/internal.js +6 -2
- package/lib/internal/template/slider/internal.js.map +1 -1
- package/lib/internal/template/slider/styles.css.js +25 -23
- package/lib/internal/template/slider/styles.scoped.css +95 -52
- package/lib/internal/template/slider/styles.selectors.js +25 -23
- package/lib/internal/template/slider/tick-marks.d.ts +1 -0
- package/lib/internal/template/slider/tick-marks.d.ts.map +1 -1
- package/lib/internal/template/slider/tick-marks.js +4 -1
- package/lib/internal/template/slider/tick-marks.js.map +1 -1
- package/lib/internal/template/split-panel/implementation.d.ts +1 -0
- package/lib/internal/template/split-panel/implementation.d.ts.map +1 -1
- package/lib/internal/template/split-panel/implementation.js +2 -0
- package/lib/internal/template/split-panel/implementation.js.map +1 -1
- package/lib/internal/template/split-panel/styles.css.js +57 -57
- package/lib/internal/template/split-panel/styles.scoped.css +78 -77
- package/lib/internal/template/split-panel/styles.selectors.js +57 -57
- package/lib/internal/template/split-panel/widget.d.ts +1 -5
- package/lib/internal/template/split-panel/widget.d.ts.map +1 -1
- package/lib/internal/template/split-panel/widget.js +1 -13
- package/lib/internal/template/split-panel/widget.js.map +1 -1
- package/lib/internal/template/table/selection/use-selection.d.ts.map +1 -1
- package/lib/internal/template/table/selection/use-selection.js +59 -64
- package/lib/internal/template/table/selection/use-selection.js.map +1 -1
- package/package.json +1 -1
|
@@ -2,62 +2,62 @@
|
|
|
2
2
|
// es-module interop with Babel and Typescript
|
|
3
3
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
4
|
module.exports.default = {
|
|
5
|
-
"drawer": "
|
|
6
|
-
"refresh": "
|
|
7
|
-
"animating": "
|
|
8
|
-
"preference-icon--svg": "awsui_preference-icon--
|
|
9
|
-
"preference-icon--layout-border": "awsui_preference-icon--layout-
|
|
10
|
-
"preference-icon--layout-background": "awsui_preference-icon--layout-
|
|
11
|
-
"preference-icon--layout-header": "awsui_preference-icon--layout-
|
|
12
|
-
"preference-icon--border": "awsui_preference-icon--
|
|
13
|
-
"preference-icon--primary-button": "awsui_preference-icon--primary-
|
|
14
|
-
"preference-icon--secondary": "awsui_preference-icon--
|
|
15
|
-
"preference-icon--disabled-element": "awsui_preference-icon--disabled-
|
|
16
|
-
"preference-icon--separator": "awsui_preference-icon--
|
|
17
|
-
"preference-icon--focus-text": "awsui_preference-icon--focus-
|
|
18
|
-
"preference-icon-refresh--svg": "awsui_preference-icon-refresh--
|
|
19
|
-
"preference-icon-refresh--layout-top": "awsui_preference-icon-refresh--layout-
|
|
20
|
-
"preference-icon-refresh--layout-main": "awsui_preference-icon-refresh--layout-
|
|
21
|
-
"preference-icon-refresh--primary": "awsui_preference-icon-refresh--
|
|
22
|
-
"preference-icon-refresh--disabled": "awsui_preference-icon-refresh--
|
|
23
|
-
"preference-icon-refresh--column-header": "awsui_preference-icon-refresh--column-
|
|
24
|
-
"preference-icon-refresh--window": "awsui_preference-icon-refresh--
|
|
25
|
-
"preference-icon-refresh--secondary": "awsui_preference-icon-refresh--
|
|
26
|
-
"preference-icon-refresh--default": "awsui_preference-icon-refresh--
|
|
27
|
-
"preference-icon-refresh--separator": "awsui_preference-icon-refresh--
|
|
28
|
-
"preference-icon-refresh--input-default": "awsui_preference-icon-refresh--input-
|
|
29
|
-
"preference-icon-refresh--heading": "awsui_preference-icon-refresh--
|
|
30
|
-
"root": "
|
|
31
|
-
"preferences-button": "awsui_preferences-
|
|
32
|
-
"close-button": "awsui_close-
|
|
33
|
-
"drawer-closed": "awsui_drawer-
|
|
34
|
-
"drawer-content-side": "awsui_drawer-content-
|
|
35
|
-
"drawer-content-bottom": "awsui_drawer-content-
|
|
36
|
-
"position-bottom": "awsui_position-
|
|
37
|
-
"position-side": "awsui_position-
|
|
38
|
-
"slider": "
|
|
39
|
-
"slider-side": "awsui_slider-
|
|
40
|
-
"slider-wrapper-bottom": "awsui_slider-wrapper-
|
|
41
|
-
"slider-wrapper-side": "awsui_slider-wrapper-
|
|
42
|
-
"open-button": "awsui_open-
|
|
43
|
-
"open-button-side": "awsui_open-button-
|
|
44
|
-
"slider-icon": "awsui_slider-
|
|
45
|
-
"slider-icon-bottom": "awsui_slider-icon-
|
|
46
|
-
"slider-icon-side": "awsui_slider-icon-
|
|
47
|
-
"pane-header-wrapper-bottom": "awsui_pane-header-wrapper-
|
|
48
|
-
"drawer-mobile": "awsui_drawer-
|
|
49
|
-
"drawer-disable-content-paddings": "awsui_drawer-disable-content-
|
|
50
|
-
"content-bottom": "awsui_content-
|
|
51
|
-
"pane-bottom-center-align": "awsui_pane-bottom-center-
|
|
52
|
-
"pane-bottom-content-nav-padding": "awsui_pane-bottom-content-nav-
|
|
53
|
-
"pane-bottom-content-tools-padding": "awsui_pane-bottom-content-tools-
|
|
54
|
-
"content-bottom-max-width": "awsui_content-bottom-max-
|
|
55
|
-
"content-side": "awsui_content-
|
|
56
|
-
"pane-header-wrapper-side": "awsui_pane-header-wrapper-
|
|
57
|
-
"pane-content-wrapper-side": "awsui_pane-content-wrapper-
|
|
58
|
-
"header": "
|
|
59
|
-
"header-text": "awsui_header-
|
|
60
|
-
"header-actions": "awsui_header-
|
|
61
|
-
"divider": "
|
|
5
|
+
"drawer": "awsui_drawer_1r9lg_1dqj1_201",
|
|
6
|
+
"refresh": "awsui_refresh_1r9lg_1dqj1_201",
|
|
7
|
+
"animating": "awsui_animating_1r9lg_1dqj1_215",
|
|
8
|
+
"preference-icon--svg": "awsui_preference-icon--svg_1r9lg_1dqj1_328",
|
|
9
|
+
"preference-icon--layout-border": "awsui_preference-icon--layout-border_1r9lg_1dqj1_331",
|
|
10
|
+
"preference-icon--layout-background": "awsui_preference-icon--layout-background_1r9lg_1dqj1_335",
|
|
11
|
+
"preference-icon--layout-header": "awsui_preference-icon--layout-header_1r9lg_1dqj1_338",
|
|
12
|
+
"preference-icon--border": "awsui_preference-icon--border_1r9lg_1dqj1_341",
|
|
13
|
+
"preference-icon--primary-button": "awsui_preference-icon--primary-button_1r9lg_1dqj1_345",
|
|
14
|
+
"preference-icon--secondary": "awsui_preference-icon--secondary_1r9lg_1dqj1_348",
|
|
15
|
+
"preference-icon--disabled-element": "awsui_preference-icon--disabled-element_1r9lg_1dqj1_351",
|
|
16
|
+
"preference-icon--separator": "awsui_preference-icon--separator_1r9lg_1dqj1_354",
|
|
17
|
+
"preference-icon--focus-text": "awsui_preference-icon--focus-text_1r9lg_1dqj1_357",
|
|
18
|
+
"preference-icon-refresh--svg": "awsui_preference-icon-refresh--svg_1r9lg_1dqj1_361",
|
|
19
|
+
"preference-icon-refresh--layout-top": "awsui_preference-icon-refresh--layout-top_1r9lg_1dqj1_364",
|
|
20
|
+
"preference-icon-refresh--layout-main": "awsui_preference-icon-refresh--layout-main_1r9lg_1dqj1_367",
|
|
21
|
+
"preference-icon-refresh--primary": "awsui_preference-icon-refresh--primary_1r9lg_1dqj1_370",
|
|
22
|
+
"preference-icon-refresh--disabled": "awsui_preference-icon-refresh--disabled_1r9lg_1dqj1_373",
|
|
23
|
+
"preference-icon-refresh--column-header": "awsui_preference-icon-refresh--column-header_1r9lg_1dqj1_376",
|
|
24
|
+
"preference-icon-refresh--window": "awsui_preference-icon-refresh--window_1r9lg_1dqj1_379",
|
|
25
|
+
"preference-icon-refresh--secondary": "awsui_preference-icon-refresh--secondary_1r9lg_1dqj1_383",
|
|
26
|
+
"preference-icon-refresh--default": "awsui_preference-icon-refresh--default_1r9lg_1dqj1_386",
|
|
27
|
+
"preference-icon-refresh--separator": "awsui_preference-icon-refresh--separator_1r9lg_1dqj1_389",
|
|
28
|
+
"preference-icon-refresh--input-default": "awsui_preference-icon-refresh--input-default_1r9lg_1dqj1_392",
|
|
29
|
+
"preference-icon-refresh--heading": "awsui_preference-icon-refresh--heading_1r9lg_1dqj1_395",
|
|
30
|
+
"root": "awsui_root_1r9lg_1dqj1_399",
|
|
31
|
+
"preferences-button": "awsui_preferences-button_1r9lg_1dqj1_434",
|
|
32
|
+
"close-button": "awsui_close-button_1r9lg_1dqj1_438",
|
|
33
|
+
"drawer-closed": "awsui_drawer-closed_1r9lg_1dqj1_450",
|
|
34
|
+
"drawer-content-side": "awsui_drawer-content-side_1r9lg_1dqj1_455",
|
|
35
|
+
"drawer-content-bottom": "awsui_drawer-content-bottom_1r9lg_1dqj1_471",
|
|
36
|
+
"position-bottom": "awsui_position-bottom_1r9lg_1dqj1_478",
|
|
37
|
+
"position-side": "awsui_position-side_1r9lg_1dqj1_505",
|
|
38
|
+
"slider": "awsui_slider_1r9lg_1dqj1_511",
|
|
39
|
+
"slider-side": "awsui_slider-side_1r9lg_1dqj1_546",
|
|
40
|
+
"slider-wrapper-bottom": "awsui_slider-wrapper-bottom_1r9lg_1dqj1_553",
|
|
41
|
+
"slider-wrapper-side": "awsui_slider-wrapper-side_1r9lg_1dqj1_564",
|
|
42
|
+
"open-button": "awsui_open-button_1r9lg_1dqj1_575",
|
|
43
|
+
"open-button-side": "awsui_open-button-side_1r9lg_1dqj1_579",
|
|
44
|
+
"slider-icon": "awsui_slider-icon_1r9lg_1dqj1_588",
|
|
45
|
+
"slider-icon-bottom": "awsui_slider-icon-bottom_1r9lg_1dqj1_594",
|
|
46
|
+
"slider-icon-side": "awsui_slider-icon-side_1r9lg_1dqj1_598",
|
|
47
|
+
"pane-header-wrapper-bottom": "awsui_pane-header-wrapper-bottom_1r9lg_1dqj1_602",
|
|
48
|
+
"drawer-mobile": "awsui_drawer-mobile_1r9lg_1dqj1_613",
|
|
49
|
+
"drawer-disable-content-paddings": "awsui_drawer-disable-content-paddings_1r9lg_1dqj1_617",
|
|
50
|
+
"content-bottom": "awsui_content-bottom_1r9lg_1dqj1_626",
|
|
51
|
+
"pane-bottom-center-align": "awsui_pane-bottom-center-align_1r9lg_1dqj1_642",
|
|
52
|
+
"pane-bottom-content-nav-padding": "awsui_pane-bottom-content-nav-padding_1r9lg_1dqj1_647",
|
|
53
|
+
"pane-bottom-content-tools-padding": "awsui_pane-bottom-content-tools-padding_1r9lg_1dqj1_651",
|
|
54
|
+
"content-bottom-max-width": "awsui_content-bottom-max-width_1r9lg_1dqj1_655",
|
|
55
|
+
"content-side": "awsui_content-side_1r9lg_1dqj1_660",
|
|
56
|
+
"pane-header-wrapper-side": "awsui_pane-header-wrapper-side_1r9lg_1dqj1_670",
|
|
57
|
+
"pane-content-wrapper-side": "awsui_pane-content-wrapper-side_1r9lg_1dqj1_676",
|
|
58
|
+
"header": "awsui_header_1r9lg_1dqj1_683",
|
|
59
|
+
"header-text": "awsui_header-text_1r9lg_1dqj1_693",
|
|
60
|
+
"header-actions": "awsui_header-actions_1r9lg_1dqj1_706",
|
|
61
|
+
"divider": "awsui_divider_1r9lg_1dqj1_714"
|
|
62
62
|
};
|
|
63
63
|
|
|
@@ -1,6 +1,2 @@
|
|
|
1
|
-
|
|
2
|
-
import { SplitPanelProps } from './interfaces';
|
|
3
|
-
type SplitPanelType = React.ForwardRefExoticComponent<SplitPanelProps & React.RefAttributes<HTMLElement>>;
|
|
4
|
-
export declare function createWidgetizedSplitPanel(SplitPanelLoader?: SplitPanelType): SplitPanelType;
|
|
5
|
-
export {};
|
|
1
|
+
export { createWidgetizedSplitPanel } from './implementation';
|
|
6
2
|
//# sourceMappingURL=widget.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"widget.d.ts","sourceRoot":"","sources":["../../../src/split-panel/widget.tsx"],"names":[],"mappings":"AAEA,OAAO,
|
|
1
|
+
{"version":3,"file":"widget.d.ts","sourceRoot":"","sources":["../../../src/split-panel/widget.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,0BAA0B,EAAE,MAAM,kBAAkB,CAAC"}
|
|
@@ -1,16 +1,4 @@
|
|
|
1
1
|
// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
|
2
2
|
// SPDX-License-Identifier: Apache-2.0
|
|
3
|
-
|
|
4
|
-
import { getGlobalFlag } from '../internal/utils/global-flags';
|
|
5
|
-
import { useVisualRefresh } from '../internal/hooks/use-visual-mode';
|
|
6
|
-
import { SplitPanelImplementation } from './implementation';
|
|
7
|
-
export function createWidgetizedSplitPanel(SplitPanelLoader) {
|
|
8
|
-
return React.forwardRef((props, ref) => {
|
|
9
|
-
const isRefresh = useVisualRefresh();
|
|
10
|
-
if (isRefresh && getGlobalFlag('appLayoutWidget') && SplitPanelLoader) {
|
|
11
|
-
return React.createElement(SplitPanelLoader, Object.assign({ ref: ref }, props));
|
|
12
|
-
}
|
|
13
|
-
return React.createElement(SplitPanelImplementation, Object.assign({ ref: ref }, props));
|
|
14
|
-
});
|
|
15
|
-
}
|
|
3
|
+
export { createWidgetizedSplitPanel } from './implementation';
|
|
16
4
|
//# sourceMappingURL=widget.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"widget.js","sourceRoot":"","sources":["../../../src/split-panel/widget.tsx"],"names":[],"mappings":"AAAA,qEAAqE;AACrE,sCAAsC;AACtC,OAAO,
|
|
1
|
+
{"version":3,"file":"widget.js","sourceRoot":"","sources":["../../../src/split-panel/widget.tsx"],"names":[],"mappings":"AAAA,qEAAqE;AACrE,sCAAsC;AACtC,OAAO,EAAE,0BAA0B,EAAE,MAAM,kBAAkB,CAAC","sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nexport { createWidgetizedSplitPanel } from './implementation';\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-selection.d.ts","sourceRoot":"","sources":["../../../../src/table/selection/use-selection.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAG3C,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAG9C,wBAAgB,YAAY,CAAC,CAAC,EAAE,EAC9B,KAAK,EACL,aAAkB,EAClB,aAAa,EACb,cAA4B,EAC5B,OAAO,EACP,iBAAiB,EACjB,UAAU,EACV,OAAO,GACR,EAAE,IAAI,CACL,UAAU,CAAC,CAAC,CAAC,EACX,YAAY,GACZ,OAAO,GACP,eAAe,GACf,eAAe,GACf,gBAAgB,GAChB,SAAS,GACT,mBAAmB,GACnB,SAAS,CACZ;;
|
|
1
|
+
{"version":3,"file":"use-selection.d.ts","sourceRoot":"","sources":["../../../../src/table/selection/use-selection.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAG3C,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAG9C,wBAAgB,YAAY,CAAC,CAAC,EAAE,EAC9B,KAAK,EACL,aAAkB,EAClB,aAAa,EACb,cAA4B,EAC5B,OAAO,EACP,iBAAiB,EACjB,UAAU,EACV,OAAO,GACR,EAAE,IAAI,CACL,UAAU,CAAC,CAAC,CAAC,EACX,YAAY,GACZ,OAAO,GACP,eAAe,GACf,eAAe,GACf,gBAAgB,GAChB,SAAS,GACT,mBAAmB,GACnB,SAAS,CACZ;;6BAuF0B,cAAc;kCAiBP,CAAC,KAAG,cAAc;+BAiBrB,OAAO;EAIrC"}
|
|
@@ -7,84 +7,78 @@ import { getTrackableValue } from '../utils';
|
|
|
7
7
|
import { joinStrings } from '../../internal/utils/strings';
|
|
8
8
|
import { ItemSet } from './utils';
|
|
9
9
|
export function useSelection({ items, selectedItems = [], selectionType, isItemDisabled = () => false, trackBy, onSelectionChange, ariaLabels, loading, }) {
|
|
10
|
-
|
|
11
|
-
const
|
|
12
|
-
|
|
10
|
+
// The name assigned to all radio- controls to combine them in a single group.
|
|
11
|
+
const selectionControlName = useUniqueId();
|
|
12
|
+
// Selection state for individual items.
|
|
13
13
|
const finalSelectedItems = selectionType === 'single' ? selectedItems.slice(0, 1) : selectedItems;
|
|
14
14
|
const selectedSet = new ItemSet(trackBy, finalSelectedItems);
|
|
15
|
-
const itemIndexesMap = new Map();
|
|
16
|
-
items.forEach((item, i) => itemIndexesMap.set(getTrackableValue(trackBy, item), i));
|
|
17
15
|
const isItemSelected = selectedSet.has.bind(selectedSet);
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
return [
|
|
26
|
-
// all items are disabled (or none are present)
|
|
27
|
-
allDisabled && disabled,
|
|
28
|
-
// all enabled items are selected (or none are present)
|
|
29
|
-
allEnabledSelected && (selected || disabled),
|
|
30
|
-
];
|
|
31
|
-
}, [true, true])
|
|
32
|
-
: [true, true];
|
|
33
|
-
// the page has at least one selected item
|
|
34
|
-
const hasSelected = finalSelectedItems.length > 0;
|
|
35
|
-
const handleToggleAll = () => {
|
|
36
|
-
const requestedItems = new ItemSet(trackBy, items);
|
|
37
|
-
const newSelectedItems = allEnabledSelected ? deselectItems(requestedItems) : selectItems(requestedItems);
|
|
38
|
-
fireNonCancelableEvent(onSelectionChange, { selectedItems: newSelectedItems });
|
|
39
|
-
};
|
|
40
|
-
const getRequestedItems = (item) => {
|
|
41
|
-
const requestedItems = new ItemSet(trackBy, [item]);
|
|
42
|
-
let lastClickedItemIndex = lastClickedItem ? itemIndexesMap.get(getTrackableValue(trackBy, lastClickedItem)) : -1;
|
|
43
|
-
if (lastClickedItemIndex === undefined) {
|
|
44
|
-
lastClickedItemIndex = -1;
|
|
16
|
+
// Derived selection state for all-items checkbox.
|
|
17
|
+
let allItemsDisabled = true;
|
|
18
|
+
let allEnabledItemsSelected = true;
|
|
19
|
+
if (selectionType === 'multi') {
|
|
20
|
+
for (const item of items) {
|
|
21
|
+
allItemsDisabled = allItemsDisabled && isItemDisabled(item);
|
|
22
|
+
allEnabledItemsSelected = allEnabledItemsSelected && (isItemSelected(item) || isItemDisabled(item));
|
|
45
23
|
}
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
24
|
+
}
|
|
25
|
+
const allItemsCheckboxSelected = finalSelectedItems.length > 0 && allEnabledItemsSelected;
|
|
26
|
+
const allItemsCheckboxIndeterminate = finalSelectedItems.length > 0 && !allEnabledItemsSelected;
|
|
27
|
+
// Shift-selection helpers.
|
|
28
|
+
const [shiftPressed, setShiftPressed] = useState(false);
|
|
29
|
+
const [lastClickedItem, setLastClickedItem] = useState(null);
|
|
30
|
+
const itemIndexesMap = new Map();
|
|
31
|
+
items.forEach((item, i) => itemIndexesMap.set(getTrackableValue(trackBy, item), i));
|
|
32
|
+
const getShiftSelectedItems = (item) => {
|
|
33
|
+
const lastClickedItemIndex = lastClickedItem
|
|
34
|
+
? itemIndexesMap.get(getTrackableValue(trackBy, lastClickedItem))
|
|
35
|
+
: undefined;
|
|
36
|
+
// We use lastClickedItemIndex to determine if filtering/sorting/pagination
|
|
37
|
+
// made previously selected item invisible, therefore we reset state for shift-select.
|
|
38
|
+
if (lastClickedItemIndex !== undefined) {
|
|
50
39
|
const currentItemIndex = itemIndexesMap.get(getTrackableValue(trackBy, item));
|
|
51
40
|
const start = Math.min(currentItemIndex, lastClickedItemIndex);
|
|
52
41
|
const end = Math.max(currentItemIndex, lastClickedItemIndex);
|
|
53
|
-
items.slice(start, end + 1)
|
|
42
|
+
return items.slice(start, end + 1);
|
|
54
43
|
}
|
|
55
|
-
return
|
|
44
|
+
return [item];
|
|
45
|
+
};
|
|
46
|
+
// Select items that are not already selected or disabled.
|
|
47
|
+
const selectItems = (requestedItems) => {
|
|
48
|
+
const newSelectedItems = [...selectedItems];
|
|
49
|
+
requestedItems.forEach(newItem => {
|
|
50
|
+
if (!isItemSelected(newItem) && !isItemDisabled(newItem)) {
|
|
51
|
+
newSelectedItems.push(newItem);
|
|
52
|
+
}
|
|
53
|
+
});
|
|
54
|
+
return newSelectedItems;
|
|
56
55
|
};
|
|
56
|
+
// Unselect items unless they are disabled.
|
|
57
57
|
const deselectItems = (requestedItems) => {
|
|
58
|
+
const requestedItemsSet = new ItemSet(trackBy, requestedItems);
|
|
58
59
|
const newSelectedItems = [];
|
|
59
60
|
selectedItems.forEach(selectedItem => {
|
|
60
|
-
const
|
|
61
|
-
if (!
|
|
61
|
+
const shouldUnselect = requestedItemsSet.has(selectedItem);
|
|
62
|
+
if (!shouldUnselect || isItemDisabled(selectedItem)) {
|
|
62
63
|
newSelectedItems.push(selectedItem);
|
|
63
64
|
}
|
|
64
65
|
});
|
|
65
66
|
return newSelectedItems;
|
|
66
67
|
};
|
|
67
|
-
const
|
|
68
|
-
const newSelectedItems =
|
|
69
|
-
|
|
70
|
-
const { selected, disabled } = getItemState(newItem);
|
|
71
|
-
if (!selected && !disabled) {
|
|
72
|
-
newSelectedItems.push(newItem);
|
|
73
|
-
}
|
|
74
|
-
});
|
|
75
|
-
return newSelectedItems;
|
|
68
|
+
const handleToggleAll = () => {
|
|
69
|
+
const newSelectedItems = allEnabledItemsSelected ? deselectItems(items) : selectItems(items);
|
|
70
|
+
fireNonCancelableEvent(onSelectionChange, { selectedItems: newSelectedItems });
|
|
76
71
|
};
|
|
77
|
-
const handleToggleItem = (item) =>
|
|
78
|
-
|
|
79
|
-
if (disabled || (selectionType === 'single' && selected)) {
|
|
72
|
+
const handleToggleItem = (item) => {
|
|
73
|
+
if (isItemDisabled(item)) {
|
|
80
74
|
return;
|
|
81
75
|
}
|
|
82
|
-
if (selectionType === 'single') {
|
|
76
|
+
if (selectionType === 'single' && !isItemSelected(item)) {
|
|
83
77
|
fireNonCancelableEvent(onSelectionChange, { selectedItems: [item] });
|
|
84
78
|
}
|
|
85
|
-
|
|
86
|
-
const requestedItems =
|
|
87
|
-
const selectedItems =
|
|
79
|
+
if (selectionType === 'multi') {
|
|
80
|
+
const requestedItems = shiftPressed ? getShiftSelectedItems(item) : [item];
|
|
81
|
+
const selectedItems = isItemSelected(item) ? deselectItems(requestedItems) : selectItems(requestedItems);
|
|
88
82
|
fireNonCancelableEvent(onSelectionChange, { selectedItems });
|
|
89
83
|
setLastClickedItem(item);
|
|
90
84
|
}
|
|
@@ -97,11 +91,11 @@ export function useSelection({ items, selectedItems = [], selectionType, isItemD
|
|
|
97
91
|
throw new Error('Invariant violation: calling selection props with missing selection type.');
|
|
98
92
|
}
|
|
99
93
|
return {
|
|
100
|
-
name:
|
|
101
|
-
disabled: allDisabled || !!loading,
|
|
94
|
+
name: selectionControlName,
|
|
102
95
|
selectionType: selectionType,
|
|
103
|
-
|
|
104
|
-
checked:
|
|
96
|
+
disabled: allItemsDisabled || !!loading,
|
|
97
|
+
checked: allItemsCheckboxSelected,
|
|
98
|
+
indeterminate: allItemsCheckboxIndeterminate,
|
|
105
99
|
onChange: handleToggleAll,
|
|
106
100
|
ariaLabel: joinStrings(ariaLabels === null || ariaLabels === void 0 ? void 0 : ariaLabels.selectionGroupLabel, (_a = ariaLabels === null || ariaLabels === void 0 ? void 0 : ariaLabels.allItemsSelectionLabel) === null || _a === void 0 ? void 0 : _a.call(ariaLabels, { selectedItems })),
|
|
107
101
|
};
|
|
@@ -112,12 +106,13 @@ export function useSelection({ items, selectedItems = [], selectionType, isItemD
|
|
|
112
106
|
throw new Error('Invariant violation: calling selection props with missing selection type.');
|
|
113
107
|
}
|
|
114
108
|
return {
|
|
115
|
-
name:
|
|
109
|
+
name: selectionControlName,
|
|
116
110
|
selectionType: selectionType,
|
|
117
|
-
ariaLabel: joinStrings(ariaLabels === null || ariaLabels === void 0 ? void 0 : ariaLabels.selectionGroupLabel, (_a = ariaLabels === null || ariaLabels === void 0 ? void 0 : ariaLabels.itemSelectionLabel) === null || _a === void 0 ? void 0 : _a.call(ariaLabels, { selectedItems }, item)),
|
|
118
|
-
onChange: handleToggleItem(item),
|
|
119
|
-
checked: isItemSelected(item),
|
|
120
111
|
disabled: isItemDisabled(item),
|
|
112
|
+
checked: isItemSelected(item),
|
|
113
|
+
indeterminate: false,
|
|
114
|
+
onChange: () => handleToggleItem(item),
|
|
115
|
+
ariaLabel: joinStrings(ariaLabels === null || ariaLabels === void 0 ? void 0 : ariaLabels.selectionGroupLabel, (_a = ariaLabels === null || ariaLabels === void 0 ? void 0 : ariaLabels.itemSelectionLabel) === null || _a === void 0 ? void 0 : _a.call(ariaLabels, { selectedItems }, item)),
|
|
121
116
|
};
|
|
122
117
|
},
|
|
123
118
|
updateShiftToggle: (value) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-selection.js","sourceRoot":"","sources":["../../../../src/table/selection/use-selection.ts"],"names":[],"mappings":"AAAA,qEAAqE;AACrE,sCAAsC;AACtC,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AACjC,OAAO,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAC/D,OAAO,EAAE,WAAW,EAAE,MAAM,oCAAoC,CAAC;AAEjE,OAAO,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAC7C,OAAO,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAC;AAE3D,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAElC,MAAM,UAAU,YAAY,CAAI,EAC9B,KAAK,EACL,aAAa,GAAG,EAAE,EAClB,aAAa,EACb,cAAc,GAAG,GAAG,EAAE,CAAC,KAAK,EAC5B,OAAO,EACP,iBAAiB,EACjB,UAAU,EACV,OAAO,GAWR;IACC,MAAM,CAAC,YAAY,EAAE,eAAe,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IACxD,MAAM,CAAC,eAAe,EAAE,kBAAkB,CAAC,GAAG,QAAQ,CAAW,IAAI,CAAC,CAAC;IACvE,MAAM,aAAa,GAAG,WAAW,EAAE,CAAC;IACpC,MAAM,kBAAkB,GAAG,aAAa,KAAK,QAAQ,CAAC,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC;IAClG,MAAM,WAAW,GAAG,IAAI,OAAO,CAAC,OAAO,EAAE,kBAAkB,CAAC,CAAC;IAC7D,MAAM,cAAc,GAAG,IAAI,GAAG,EAAE,CAAC;IACjC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC,cAAc,CAAC,GAAG,CAAC,iBAAiB,CAAC,OAAO,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IACpF,MAAM,cAAc,GAAG,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IACzD,MAAM,YAAY,GAAG,CAAC,IAAO,EAAE,EAAE,CAAC,CAAC;QACjC,QAAQ,EAAE,cAAc,CAAC,IAAI,CAAC;QAC9B,QAAQ,EAAE,cAAc,CAAC,IAAI,CAAC;KAC/B,CAAC,CAAC;IACH,MAAM,CAAC,WAAW,EAAE,kBAAkB,CAAC,GAAG,aAAa;QACrD,CAAC,CAAC,KAAK,CAAC,MAAM,CACV,CAAC,CAAC,WAAW,EAAE,kBAAkB,CAAC,EAAE,IAAI,EAAE,EAAE;YAC1C,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC;YAClD,OAAO;gBACL,+CAA+C;gBAC/C,WAAW,IAAI,QAAQ;gBACvB,uDAAuD;gBACvD,kBAAkB,IAAI,CAAC,QAAQ,IAAI,QAAQ,CAAC;aAC7C,CAAC;QACJ,CAAC,EACD,CAAC,IAAI,EAAE,IAAI,CAAC,CACb;QACH,CAAC,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IAEjB,0CAA0C;IAC1C,MAAM,WAAW,GAAG,kBAAkB,CAAC,MAAM,GAAG,CAAC,CAAC;IAElD,MAAM,eAAe,GAAG,GAAG,EAAE;QAC3B,MAAM,cAAc,GAAG,IAAI,OAAO,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;QACnD,MAAM,gBAAgB,GAAG,kBAAkB,CAAC,CAAC,CAAC,aAAa,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,cAAc,CAAC,CAAC;QAC1G,sBAAsB,CAAC,iBAAiB,EAAE,EAAE,aAAa,EAAE,gBAAgB,EAAE,CAAC,CAAC;IACjF,CAAC,CAAC;IAEF,MAAM,iBAAiB,GAAG,CAAC,IAAO,EAAE,EAAE;QACpC,MAAM,cAAc,GAAG,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;QACpD,IAAI,oBAAoB,GAAG,eAAe,CAAC,CAAC,CAAC,cAAc,CAAC,GAAG,CAAC,iBAAiB,CAAC,OAAO,EAAE,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAClH,IAAI,oBAAoB,KAAK,SAAS,EAAE;YACtC,oBAAoB,GAAG,CAAC,CAAC,CAAC;SAC3B;QACD,2EAA2E;QAC3E,qFAAqF;QACrF,IAAI,YAAY,IAAI,oBAAoB,KAAK,CAAC,CAAC,EAAE;YAC/C,0BAA0B;YAC1B,MAAM,gBAAgB,GAAG,cAAc,CAAC,GAAG,CAAC,iBAAiB,CAAC,OAAO,EAAE,IAAI,CAAC,CAAW,CAAC;YACxF,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,gBAAgB,EAAE,oBAAoB,CAAC,CAAC;YAC/D,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,gBAAgB,EAAE,oBAAoB,CAAC,CAAC;YAC7D,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,GAAG,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;SACvE;QACD,OAAO,cAAc,CAAC;IACxB,CAAC,CAAC;IAEF,MAAM,aAAa,GAAG,CAAC,cAA0B,EAAE,EAAE;QACnD,MAAM,gBAAgB,GAAa,EAAE,CAAC;QACtC,aAAa,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE;YACnC,MAAM,UAAU,GAAG,cAAc,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;YACpD,IAAI,CAAC,UAAU,IAAI,cAAc,CAAC,YAAY,CAAC,EAAE;gBAC/C,gBAAgB,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;aACrC;QACH,CAAC,CAAC,CAAC;QACH,OAAO,gBAAgB,CAAC;IAC1B,CAAC,CAAC;IAEF,MAAM,WAAW,GAAG,CAAC,cAA0B,EAAE,EAAE;QACjD,MAAM,gBAAgB,GAAG,CAAC,GAAG,aAAa,CAAC,CAAC;QAC5C,cAAc,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE;YAC/B,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,GAAG,YAAY,CAAC,OAAO,CAAC,CAAC;YACrD,IAAI,CAAC,QAAQ,IAAI,CAAC,QAAQ,EAAE;gBAC1B,gBAAgB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;aAChC;QACH,CAAC,CAAC,CAAC;QACH,OAAO,gBAAgB,CAAC;IAC1B,CAAC,CAAC;IAEF,MAAM,gBAAgB,GAAG,CAAC,IAAO,EAAE,EAAE,CAAC,GAAG,EAAE;QACzC,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC;QAClD,IAAI,QAAQ,IAAI,CAAC,aAAa,KAAK,QAAQ,IAAI,QAAQ,CAAC,EAAE;YACxD,OAAO;SACR;QACD,IAAI,aAAa,KAAK,QAAQ,EAAE;YAC9B,sBAAsB,CAAC,iBAAiB,EAAE,EAAE,aAAa,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;SACtE;aAAM;YACL,MAAM,cAAc,GAAG,iBAAiB,CAAC,IAAI,CAAC,CAAC;YAC/C,MAAM,aAAa,GAAG,QAAQ,CAAC,CAAC,CAAC,aAAa,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,cAAc,CAAC,CAAC;YAC7F,sBAAsB,CAAC,iBAAiB,EAAE,EAAE,aAAa,EAAE,CAAC,CAAC;YAC7D,kBAAkB,CAAC,IAAI,CAAC,CAAC;SAC1B;IACH,CAAC,CAAC;IAEF,OAAO;QACL,cAAc;QACd,iBAAiB,EAAE,GAAmB,EAAE;;YACtC,IAAI,CAAC,aAAa,EAAE;gBAClB,MAAM,IAAI,KAAK,CAAC,2EAA2E,CAAC,CAAC;aAC9F;YACD,OAAO;gBACL,IAAI,EAAE,aAAa;gBACnB,QAAQ,EAAE,WAAW,IAAI,CAAC,CAAC,OAAO;gBAClC,aAAa,EAAE,aAAa;gBAC5B,aAAa,EAAE,WAAW,IAAI,CAAC,kBAAkB;gBACjD,OAAO,EAAE,WAAW,IAAI,kBAAkB;gBAC1C,QAAQ,EAAE,eAAe;gBACzB,SAAS,EAAE,WAAW,CACpB,UAAU,aAAV,UAAU,uBAAV,UAAU,CAAE,mBAAmB,EAC/B,MAAA,UAAU,aAAV,UAAU,uBAAV,UAAU,CAAE,sBAAsB,2DAAG,EAAE,aAAa,EAAE,CAAC,CACxD;aACF,CAAC;QACJ,CAAC;QACD,qBAAqB,EAAE,CAAC,IAAO,EAAkB,EAAE;;YACjD,IAAI,CAAC,aAAa,EAAE;gBAClB,MAAM,IAAI,KAAK,CAAC,2EAA2E,CAAC,CAAC;aAC9F;YACD,OAAO;gBACL,IAAI,EAAE,aAAa;gBACnB,aAAa,EAAE,aAAa;gBAC5B,SAAS,EAAE,WAAW,CACpB,UAAU,aAAV,UAAU,uBAAV,UAAU,CAAE,mBAAmB,EAC/B,MAAA,UAAU,aAAV,UAAU,uBAAV,UAAU,CAAE,kBAAkB,2DAAG,EAAE,aAAa,EAAE,EAAE,IAAI,CAAC,CAC1D;gBACD,QAAQ,EAAE,gBAAgB,CAAC,IAAI,CAAC;gBAChC,OAAO,EAAE,cAAc,CAAC,IAAI,CAAC;gBAC7B,QAAQ,EAAE,cAAc,CAAC,IAAI,CAAC;aAC/B,CAAC;QACJ,CAAC;QACD,iBAAiB,EAAE,CAAC,KAAc,EAAE,EAAE;YACpC,eAAe,CAAC,KAAK,CAAC,CAAC;QACzB,CAAC;KACF,CAAC;AACJ,CAAC","sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { useState } from 'react';\nimport { fireNonCancelableEvent } from '../../internal/events';\nimport { useUniqueId } from '../../internal/hooks/use-unique-id';\nimport { TableProps } from '../interfaces';\nimport { getTrackableValue } from '../utils';\nimport { joinStrings } from '../../internal/utils/strings';\nimport { SelectionProps } from './interfaces';\nimport { ItemSet } from './utils';\n\nexport function useSelection<T>({\n items,\n selectedItems = [],\n selectionType,\n isItemDisabled = () => false,\n trackBy,\n onSelectionChange,\n ariaLabels,\n loading,\n}: Pick<\n TableProps<T>,\n | 'ariaLabels'\n | 'items'\n | 'selectedItems'\n | 'selectionType'\n | 'isItemDisabled'\n | 'trackBy'\n | 'onSelectionChange'\n | 'loading'\n>) {\n const [shiftPressed, setShiftPressed] = useState(false);\n const [lastClickedItem, setLastClickedItem] = useState<T | null>(null);\n const selectionName = useUniqueId();\n const finalSelectedItems = selectionType === 'single' ? selectedItems.slice(0, 1) : selectedItems;\n const selectedSet = new ItemSet(trackBy, finalSelectedItems);\n const itemIndexesMap = new Map();\n items.forEach((item, i) => itemIndexesMap.set(getTrackableValue(trackBy, item), i));\n const isItemSelected = selectedSet.has.bind(selectedSet);\n const getItemState = (item: T) => ({\n disabled: isItemDisabled(item),\n selected: isItemSelected(item),\n });\n const [allDisabled, allEnabledSelected] = selectionType\n ? items.reduce(\n ([allDisabled, allEnabledSelected], item) => {\n const { disabled, selected } = getItemState(item);\n return [\n // all items are disabled (or none are present)\n allDisabled && disabled,\n // all enabled items are selected (or none are present)\n allEnabledSelected && (selected || disabled),\n ];\n },\n [true, true]\n )\n : [true, true];\n\n // the page has at least one selected item\n const hasSelected = finalSelectedItems.length > 0;\n\n const handleToggleAll = () => {\n const requestedItems = new ItemSet(trackBy, items);\n const newSelectedItems = allEnabledSelected ? deselectItems(requestedItems) : selectItems(requestedItems);\n fireNonCancelableEvent(onSelectionChange, { selectedItems: newSelectedItems });\n };\n\n const getRequestedItems = (item: T) => {\n const requestedItems = new ItemSet(trackBy, [item]);\n let lastClickedItemIndex = lastClickedItem ? itemIndexesMap.get(getTrackableValue(trackBy, lastClickedItem)) : -1;\n if (lastClickedItemIndex === undefined) {\n lastClickedItemIndex = -1;\n }\n // we use lastClickedItemIndex to determine if filtering/sorting/pagination\n // made previously selected item invisible, therefore we reset state for shift-select\n if (shiftPressed && lastClickedItemIndex !== -1) {\n // item is always in items\n const currentItemIndex = itemIndexesMap.get(getTrackableValue(trackBy, item)) as number;\n const start = Math.min(currentItemIndex, lastClickedItemIndex);\n const end = Math.max(currentItemIndex, lastClickedItemIndex);\n items.slice(start, end + 1).forEach(item => requestedItems.put(item));\n }\n return requestedItems;\n };\n\n const deselectItems = (requestedItems: ItemSet<T>) => {\n const newSelectedItems: Array<T> = [];\n selectedItems.forEach(selectedItem => {\n const toUnselect = requestedItems.has(selectedItem);\n if (!toUnselect || isItemDisabled(selectedItem)) {\n newSelectedItems.push(selectedItem);\n }\n });\n return newSelectedItems;\n };\n\n const selectItems = (requestedItems: ItemSet<T>) => {\n const newSelectedItems = [...selectedItems];\n requestedItems.forEach(newItem => {\n const { selected, disabled } = getItemState(newItem);\n if (!selected && !disabled) {\n newSelectedItems.push(newItem);\n }\n });\n return newSelectedItems;\n };\n\n const handleToggleItem = (item: T) => () => {\n const { disabled, selected } = getItemState(item);\n if (disabled || (selectionType === 'single' && selected)) {\n return;\n }\n if (selectionType === 'single') {\n fireNonCancelableEvent(onSelectionChange, { selectedItems: [item] });\n } else {\n const requestedItems = getRequestedItems(item);\n const selectedItems = selected ? deselectItems(requestedItems) : selectItems(requestedItems);\n fireNonCancelableEvent(onSelectionChange, { selectedItems });\n setLastClickedItem(item);\n }\n };\n\n return {\n isItemSelected,\n getSelectAllProps: (): SelectionProps => {\n if (!selectionType) {\n throw new Error('Invariant violation: calling selection props with missing selection type.');\n }\n return {\n name: selectionName,\n disabled: allDisabled || !!loading,\n selectionType: selectionType,\n indeterminate: hasSelected && !allEnabledSelected,\n checked: hasSelected && allEnabledSelected,\n onChange: handleToggleAll,\n ariaLabel: joinStrings(\n ariaLabels?.selectionGroupLabel,\n ariaLabels?.allItemsSelectionLabel?.({ selectedItems })\n ),\n };\n },\n getItemSelectionProps: (item: T): SelectionProps => {\n if (!selectionType) {\n throw new Error('Invariant violation: calling selection props with missing selection type.');\n }\n return {\n name: selectionName,\n selectionType: selectionType,\n ariaLabel: joinStrings(\n ariaLabels?.selectionGroupLabel,\n ariaLabels?.itemSelectionLabel?.({ selectedItems }, item)\n ),\n onChange: handleToggleItem(item),\n checked: isItemSelected(item),\n disabled: isItemDisabled(item),\n };\n },\n updateShiftToggle: (value: boolean) => {\n setShiftPressed(value);\n },\n };\n}\n"]}
|
|
1
|
+
{"version":3,"file":"use-selection.js","sourceRoot":"","sources":["../../../../src/table/selection/use-selection.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 { useState } from 'react';\nimport { fireNonCancelableEvent } from '../../internal/events';\nimport { useUniqueId } from '../../internal/hooks/use-unique-id';\nimport { TableProps } from '../interfaces';\nimport { getTrackableValue } from '../utils';\nimport { joinStrings } from '../../internal/utils/strings';\nimport { SelectionProps } from './interfaces';\nimport { ItemSet } from './utils';\n\nexport function useSelection<T>({\n items,\n selectedItems = [],\n selectionType,\n isItemDisabled = () => false,\n trackBy,\n onSelectionChange,\n ariaLabels,\n loading,\n}: Pick<\n TableProps<T>,\n | 'ariaLabels'\n | 'items'\n | 'selectedItems'\n | 'selectionType'\n | 'isItemDisabled'\n | 'trackBy'\n | 'onSelectionChange'\n | 'loading'\n>) {\n // The name assigned to all radio- controls to combine them in a single group.\n const selectionControlName = useUniqueId();\n\n // Selection state for individual items.\n const finalSelectedItems = selectionType === 'single' ? selectedItems.slice(0, 1) : selectedItems;\n const selectedSet = new ItemSet(trackBy, finalSelectedItems);\n const isItemSelected = selectedSet.has.bind(selectedSet);\n\n // Derived selection state for all-items checkbox.\n let allItemsDisabled = true;\n let allEnabledItemsSelected = true;\n if (selectionType === 'multi') {\n for (const item of items) {\n allItemsDisabled = allItemsDisabled && isItemDisabled(item);\n allEnabledItemsSelected = allEnabledItemsSelected && (isItemSelected(item) || isItemDisabled(item));\n }\n }\n const allItemsCheckboxSelected = finalSelectedItems.length > 0 && allEnabledItemsSelected;\n const allItemsCheckboxIndeterminate = finalSelectedItems.length > 0 && !allEnabledItemsSelected;\n\n // Shift-selection helpers.\n const [shiftPressed, setShiftPressed] = useState(false);\n const [lastClickedItem, setLastClickedItem] = useState<null | T>(null);\n const itemIndexesMap = new Map<T, number>();\n items.forEach((item, i) => itemIndexesMap.set(getTrackableValue(trackBy, item), i));\n const getShiftSelectedItems = (item: T): T[] => {\n const lastClickedItemIndex = lastClickedItem\n ? itemIndexesMap.get(getTrackableValue(trackBy, lastClickedItem))\n : undefined;\n // We use lastClickedItemIndex to determine if filtering/sorting/pagination\n // made previously selected item invisible, therefore we reset state for shift-select.\n if (lastClickedItemIndex !== undefined) {\n const currentItemIndex = itemIndexesMap.get(getTrackableValue(trackBy, item))!;\n const start = Math.min(currentItemIndex, lastClickedItemIndex);\n const end = Math.max(currentItemIndex, lastClickedItemIndex);\n return items.slice(start, end + 1);\n }\n return [item];\n };\n\n // Select items that are not already selected or disabled.\n const selectItems = (requestedItems: readonly T[]) => {\n const newSelectedItems = [...selectedItems];\n requestedItems.forEach(newItem => {\n if (!isItemSelected(newItem) && !isItemDisabled(newItem)) {\n newSelectedItems.push(newItem);\n }\n });\n return newSelectedItems;\n };\n\n // Unselect items unless they are disabled.\n const deselectItems = (requestedItems: readonly T[]) => {\n const requestedItemsSet = new ItemSet(trackBy, requestedItems);\n const newSelectedItems: Array<T> = [];\n selectedItems.forEach(selectedItem => {\n const shouldUnselect = requestedItemsSet.has(selectedItem);\n if (!shouldUnselect || isItemDisabled(selectedItem)) {\n newSelectedItems.push(selectedItem);\n }\n });\n return newSelectedItems;\n };\n\n const handleToggleAll = () => {\n const newSelectedItems = allEnabledItemsSelected ? deselectItems(items) : selectItems(items);\n fireNonCancelableEvent(onSelectionChange, { selectedItems: newSelectedItems });\n };\n\n const handleToggleItem = (item: T) => {\n if (isItemDisabled(item)) {\n return;\n }\n if (selectionType === 'single' && !isItemSelected(item)) {\n fireNonCancelableEvent(onSelectionChange, { selectedItems: [item] });\n }\n if (selectionType === 'multi') {\n const requestedItems = shiftPressed ? getShiftSelectedItems(item) : [item];\n const selectedItems = isItemSelected(item) ? deselectItems(requestedItems) : selectItems(requestedItems);\n fireNonCancelableEvent(onSelectionChange, { selectedItems });\n setLastClickedItem(item);\n }\n };\n\n return {\n isItemSelected,\n getSelectAllProps: (): SelectionProps => {\n if (!selectionType) {\n throw new Error('Invariant violation: calling selection props with missing selection type.');\n }\n return {\n name: selectionControlName,\n selectionType: selectionType,\n disabled: allItemsDisabled || !!loading,\n checked: allItemsCheckboxSelected,\n indeterminate: allItemsCheckboxIndeterminate,\n onChange: handleToggleAll,\n ariaLabel: joinStrings(\n ariaLabels?.selectionGroupLabel,\n ariaLabels?.allItemsSelectionLabel?.({ selectedItems })\n ),\n };\n },\n getItemSelectionProps: (item: T): SelectionProps => {\n if (!selectionType) {\n throw new Error('Invariant violation: calling selection props with missing selection type.');\n }\n return {\n name: selectionControlName,\n selectionType: selectionType,\n disabled: isItemDisabled(item),\n checked: isItemSelected(item),\n indeterminate: false,\n onChange: () => handleToggleItem(item),\n ariaLabel: joinStrings(\n ariaLabels?.selectionGroupLabel,\n ariaLabels?.itemSelectionLabel?.({ selectedItems }, item)\n ),\n };\n },\n updateShiftToggle: (value: boolean) => {\n setShiftPressed(value);\n },\n };\n}\n"]}
|