@cloudscape-design/components-themeable 3.0.1360 → 3.0.1362
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/alert/styles.scss +13 -12
- package/lib/internal/scss/badge/styles.scss +38 -49
- package/lib/internal/scss/button/styles.scss +51 -51
- package/lib/internal/scss/cards/styles.scss +4 -0
- package/lib/internal/scss/container/styles.scss +2 -0
- package/lib/internal/scss/icon/hover-motion.scss +24 -12
- package/lib/internal/scss/input/styles.scss +4 -0
- package/lib/internal/scss/internal/generated/custom-css-properties/index.scss +175 -174
- package/lib/internal/scss/internal/styles/forms/mixins.scss +11 -2
- package/lib/internal/scss/internal/styles/style-api.scss +60 -10
- package/lib/internal/scss/pagination/styles.scss +3 -1
- package/lib/internal/scss/table/styles.scss +5 -0
- package/lib/internal/template/action-card/internal.d.ts.map +1 -1
- package/lib/internal/template/action-card/internal.js +5 -2
- package/lib/internal/template/action-card/internal.js.map +1 -1
- package/lib/internal/template/alert/styles.css.js +27 -27
- package/lib/internal/template/alert/styles.scoped.css +50 -50
- package/lib/internal/template/alert/styles.selectors.js +27 -27
- package/lib/internal/template/annotation-context/annotation/styles.css.js +13 -13
- package/lib/internal/template/annotation-context/annotation/styles.scoped.css +21 -21
- package/lib/internal/template/annotation-context/annotation/styles.selectors.js +13 -13
- package/lib/internal/template/app-layout/notifications/styles.css.js +3 -3
- package/lib/internal/template/app-layout/notifications/styles.scoped.css +7 -7
- package/lib/internal/template/app-layout/notifications/styles.selectors.js +3 -3
- package/lib/internal/template/app-layout/toggles/index.d.ts.map +1 -1
- package/lib/internal/template/app-layout/toggles/index.js +1 -1
- package/lib/internal/template/app-layout/toggles/index.js.map +1 -1
- package/lib/internal/template/app-layout/visual-refresh/styles.css.js +86 -86
- package/lib/internal/template/app-layout/visual-refresh/styles.scoped.css +258 -258
- package/lib/internal/template/app-layout/visual-refresh/styles.selectors.js +86 -86
- package/lib/internal/template/app-layout/visual-refresh/trigger-button.d.ts.map +1 -1
- package/lib/internal/template/app-layout/visual-refresh/trigger-button.js +1 -1
- package/lib/internal/template/app-layout/visual-refresh/trigger-button.js.map +1 -1
- package/lib/internal/template/app-layout/visual-refresh-toolbar/drawer/styles.css.js +32 -32
- package/lib/internal/template/app-layout/visual-refresh-toolbar/drawer/styles.scoped.css +89 -89
- package/lib/internal/template/app-layout/visual-refresh-toolbar/drawer/styles.selectors.js +32 -32
- package/lib/internal/template/app-layout/visual-refresh-toolbar/navigation/styles.css.js +6 -6
- package/lib/internal/template/app-layout/visual-refresh-toolbar/navigation/styles.scoped.css +13 -13
- package/lib/internal/template/app-layout/visual-refresh-toolbar/navigation/styles.selectors.js +6 -6
- package/lib/internal/template/app-layout/visual-refresh-toolbar/skeleton/styles.css.js +30 -30
- package/lib/internal/template/app-layout/visual-refresh-toolbar/skeleton/styles.scoped.css +68 -68
- package/lib/internal/template/app-layout/visual-refresh-toolbar/skeleton/styles.selectors.js +30 -30
- package/lib/internal/template/app-layout/visual-refresh-toolbar/toolbar/trigger-button/index.d.ts.map +1 -1
- package/lib/internal/template/app-layout/visual-refresh-toolbar/toolbar/trigger-button/index.js +1 -1
- package/lib/internal/template/app-layout/visual-refresh-toolbar/toolbar/trigger-button/index.js.map +1 -1
- package/lib/internal/template/attribute-editor/styles.css.js +15 -15
- package/lib/internal/template/attribute-editor/styles.scoped.css +28 -28
- package/lib/internal/template/attribute-editor/styles.selectors.js +15 -15
- package/lib/internal/template/breadcrumb-group/all-items-dropdown.js +2 -2
- package/lib/internal/template/breadcrumb-group/all-items-dropdown.js.map +1 -1
- package/lib/internal/template/breadcrumb-group/item/styles.css.js +7 -7
- package/lib/internal/template/breadcrumb-group/item/styles.scoped.css +28 -28
- package/lib/internal/template/breadcrumb-group/item/styles.selectors.js +7 -7
- package/lib/internal/template/button/internal.d.ts.map +1 -1
- package/lib/internal/template/button/internal.js +2 -0
- package/lib/internal/template/button/internal.js.map +1 -1
- package/lib/internal/template/button/styles.css.js +23 -23
- package/lib/internal/template/button/styles.scoped.css +261 -261
- package/lib/internal/template/button/styles.selectors.js +23 -23
- package/lib/internal/template/button-dropdown/category-elements/expandable-category-element.d.ts.map +1 -1
- package/lib/internal/template/button-dropdown/category-elements/expandable-category-element.js +2 -2
- package/lib/internal/template/button-dropdown/category-elements/expandable-category-element.js.map +1 -1
- package/lib/internal/template/button-dropdown/filter.d.ts +1 -1
- package/lib/internal/template/button-dropdown/filter.d.ts.map +1 -1
- package/lib/internal/template/button-dropdown/internal.d.ts.map +1 -1
- package/lib/internal/template/button-dropdown/internal.js +9 -3
- package/lib/internal/template/button-dropdown/internal.js.map +1 -1
- package/lib/internal/template/button-dropdown/item-element/index.d.ts.map +1 -1
- package/lib/internal/template/button-dropdown/item-element/index.js +2 -2
- package/lib/internal/template/button-dropdown/item-element/index.js.map +1 -1
- package/lib/internal/template/button-dropdown/item-element/styles.css.js +21 -21
- package/lib/internal/template/button-dropdown/item-element/styles.scoped.css +37 -37
- package/lib/internal/template/button-dropdown/item-element/styles.selectors.js +21 -21
- package/lib/internal/template/button-dropdown/utils/use-button-dropdown.d.ts +5 -3
- package/lib/internal/template/button-dropdown/utils/use-button-dropdown.d.ts.map +1 -1
- package/lib/internal/template/button-dropdown/utils/use-button-dropdown.js +14 -2
- package/lib/internal/template/button-dropdown/utils/use-button-dropdown.js.map +1 -1
- package/lib/internal/template/cards/styles.css.js +39 -38
- package/lib/internal/template/cards/styles.scoped.css +42 -39
- package/lib/internal/template/cards/styles.selectors.js +39 -38
- package/lib/internal/template/checkbox/styles.css.js +3 -3
- package/lib/internal/template/checkbox/styles.scoped.css +11 -11
- package/lib/internal/template/checkbox/styles.selectors.js +3 -3
- package/lib/internal/template/code-editor/tab-button.d.ts.map +1 -1
- package/lib/internal/template/code-editor/tab-button.js +1 -1
- package/lib/internal/template/code-editor/tab-button.js.map +1 -1
- package/lib/internal/template/container/styles.css.js +33 -33
- package/lib/internal/template/container/styles.scoped.css +57 -56
- package/lib/internal/template/container/styles.selectors.js +33 -33
- package/lib/internal/template/content-layout/styles.css.js +14 -14
- package/lib/internal/template/content-layout/styles.scoped.css +27 -27
- package/lib/internal/template/content-layout/styles.selectors.js +14 -14
- package/lib/internal/template/dropdown/styles.css.js +20 -20
- package/lib/internal/template/dropdown/styles.scoped.css +49 -49
- package/lib/internal/template/dropdown/styles.selectors.js +20 -20
- package/lib/internal/template/expandable-section/expandable-section-header.d.ts.map +1 -1
- package/lib/internal/template/expandable-section/expandable-section-header.js +13 -7
- package/lib/internal/template/expandable-section/expandable-section-header.js.map +1 -1
- package/lib/internal/template/file-token-group/styles.css.js +23 -23
- package/lib/internal/template/file-token-group/styles.scoped.css +36 -36
- package/lib/internal/template/file-token-group/styles.selectors.js +23 -23
- package/lib/internal/template/flashbar/collapsible-flashbar.d.ts.map +1 -1
- package/lib/internal/template/flashbar/collapsible-flashbar.js +3 -3
- package/lib/internal/template/flashbar/collapsible-flashbar.js.map +1 -1
- package/lib/internal/template/flashbar/styles.css.js +50 -50
- package/lib/internal/template/flashbar/styles.scoped.css +192 -192
- package/lib/internal/template/flashbar/styles.selectors.js +50 -50
- package/lib/internal/template/help-panel/styles.css.js +6 -6
- package/lib/internal/template/help-panel/styles.scoped.css +72 -72
- package/lib/internal/template/help-panel/styles.selectors.js +6 -6
- package/lib/internal/template/input/index.d.ts.map +1 -1
- package/lib/internal/template/input/index.js +3 -2
- package/lib/internal/template/input/index.js.map +1 -1
- package/lib/internal/template/input/interfaces.d.ts +6 -0
- package/lib/internal/template/input/interfaces.d.ts.map +1 -1
- package/lib/internal/template/input/interfaces.js.map +1 -1
- package/lib/internal/template/input/internal.d.ts +0 -1
- package/lib/internal/template/input/internal.d.ts.map +1 -1
- package/lib/internal/template/input/internal.js +26 -12
- package/lib/internal/template/input/internal.js.map +1 -1
- package/lib/internal/template/input/styles.css.js +29 -28
- package/lib/internal/template/input/styles.scoped.css +134 -131
- package/lib/internal/template/input/styles.selectors.js +29 -28
- package/lib/internal/template/internal/base-component/styles.scoped.css +1 -1
- package/lib/internal/template/internal/components/button-trigger/index.d.ts.map +1 -1
- package/lib/internal/template/internal/components/button-trigger/index.js +2 -2
- package/lib/internal/template/internal/components/button-trigger/index.js.map +1 -1
- package/lib/internal/template/internal/components/drag-handle/button.d.ts.map +1 -1
- package/lib/internal/template/internal/components/drag-handle/button.js +3 -1
- package/lib/internal/template/internal/components/drag-handle/button.js.map +1 -1
- package/lib/internal/template/internal/components/drag-handle-wrapper/index.d.ts.map +1 -1
- package/lib/internal/template/internal/components/drag-handle-wrapper/index.js +2 -1
- package/lib/internal/template/internal/components/drag-handle-wrapper/index.js.map +1 -1
- package/lib/internal/template/internal/components/drag-handle-wrapper/styles.css.js +30 -30
- package/lib/internal/template/internal/components/drag-handle-wrapper/styles.scoped.css +58 -58
- package/lib/internal/template/internal/components/drag-handle-wrapper/styles.selectors.js +30 -30
- package/lib/internal/template/internal/components/expand-toggle-button/index.d.ts.map +1 -1
- package/lib/internal/template/internal/components/expand-toggle-button/index.js +1 -1
- package/lib/internal/template/internal/components/expand-toggle-button/index.js.map +1 -1
- package/lib/internal/template/internal/components/menu-dropdown/index.d.ts.map +1 -1
- package/lib/internal/template/internal/components/menu-dropdown/index.js +1 -1
- package/lib/internal/template/internal/components/menu-dropdown/index.js.map +1 -1
- package/lib/internal/template/internal/components/option/styles.css.js +17 -17
- package/lib/internal/template/internal/components/option/styles.scoped.css +31 -31
- package/lib/internal/template/internal/components/option/styles.selectors.js +17 -17
- package/lib/internal/template/internal/components/radio-button/styles.css.js +7 -7
- package/lib/internal/template/internal/components/radio-button/styles.scoped.css +18 -18
- package/lib/internal/template/internal/components/radio-button/styles.selectors.js +7 -7
- package/lib/internal/template/internal/components/selectable-item/styles.css.js +22 -22
- package/lib/internal/template/internal/components/selectable-item/styles.scoped.css +57 -57
- package/lib/internal/template/internal/components/selectable-item/styles.selectors.js +22 -22
- package/lib/internal/template/internal/components/token-list/styles.css.js +10 -10
- package/lib/internal/template/internal/components/token-list/styles.scoped.css +25 -25
- package/lib/internal/template/internal/components/token-list/styles.selectors.js +10 -10
- package/lib/internal/template/internal/components/token-list/token-limit-toggle.d.ts.map +1 -1
- package/lib/internal/template/internal/components/token-list/token-limit-toggle.js +2 -2
- package/lib/internal/template/internal/components/token-list/token-limit-toggle.js.map +1 -1
- package/lib/internal/template/internal/environment.js +2 -2
- package/lib/internal/template/internal/environment.json +2 -2
- package/lib/internal/template/internal/generated/custom-css-properties/index.d.ts +1 -0
- package/lib/internal/template/internal/generated/custom-css-properties/index.d.ts.map +1 -1
- package/lib/internal/template/internal/generated/custom-css-properties/index.js +174 -173
- package/lib/internal/template/internal/generated/custom-css-properties/index.js.map +1 -1
- package/lib/internal/template/internal/generated/styles/tokens.js +200 -200
- package/lib/internal/template/internal/generated/theming/index.cjs +200 -200
- package/lib/internal/template/internal/generated/theming/index.js +200 -200
- package/lib/internal/template/internal/utils/focus-visible.d.ts +15 -0
- package/lib/internal/template/internal/utils/focus-visible.d.ts.map +1 -0
- package/lib/internal/template/internal/utils/focus-visible.js +21 -0
- package/lib/internal/template/internal/utils/focus-visible.js.map +1 -0
- package/lib/internal/template/item-card/styles.css.js +14 -14
- package/lib/internal/template/item-card/styles.scoped.css +63 -63
- package/lib/internal/template/item-card/styles.selectors.js +14 -14
- package/lib/internal/template/link/internal.d.ts.map +1 -1
- package/lib/internal/template/link/internal.js +2 -0
- package/lib/internal/template/link/internal.js.map +1 -1
- package/lib/internal/template/link/styles.css.js +21 -21
- package/lib/internal/template/link/styles.scoped.css +104 -104
- package/lib/internal/template/link/styles.selectors.js +21 -21
- package/lib/internal/template/modal/styles.css.js +31 -31
- package/lib/internal/template/modal/styles.scoped.css +48 -48
- package/lib/internal/template/modal/styles.selectors.js +31 -31
- package/lib/internal/template/pagination/internal.d.ts.map +1 -1
- package/lib/internal/template/pagination/internal.js +4 -4
- package/lib/internal/template/pagination/internal.js.map +1 -1
- package/lib/internal/template/pagination/styles.css.js +12 -12
- package/lib/internal/template/pagination/styles.scoped.css +31 -31
- package/lib/internal/template/pagination/styles.selectors.js +12 -12
- package/lib/internal/template/progress-bar/styles.css.js +19 -19
- package/lib/internal/template/progress-bar/styles.scoped.css +58 -58
- package/lib/internal/template/progress-bar/styles.selectors.js +19 -19
- package/lib/internal/template/prompt-input/styles.css.js +26 -26
- package/lib/internal/template/prompt-input/styles.scoped.css +105 -105
- package/lib/internal/template/prompt-input/styles.selectors.js +26 -26
- package/lib/internal/template/property-filter/filtering-token/index.js +4 -4
- package/lib/internal/template/property-filter/filtering-token/index.js.map +1 -1
- package/lib/internal/template/segmented-control/segment.d.ts.map +1 -1
- package/lib/internal/template/segmented-control/segment.js +1 -1
- package/lib/internal/template/segmented-control/segment.js.map +1 -1
- package/lib/internal/template/segmented-control/styles.css.js +16 -16
- package/lib/internal/template/segmented-control/styles.scoped.css +46 -46
- package/lib/internal/template/segmented-control/styles.selectors.js +16 -16
- package/lib/internal/template/select/parts/filter.d.ts +1 -1
- package/lib/internal/template/select/parts/filter.d.ts.map +1 -1
- package/lib/internal/template/select/parts/styles.css.js +21 -21
- package/lib/internal/template/select/parts/styles.scoped.css +24 -24
- package/lib/internal/template/select/parts/styles.selectors.js +21 -21
- package/lib/internal/template/side-navigation/parts.js +3 -3
- package/lib/internal/template/side-navigation/parts.js.map +1 -1
- package/lib/internal/template/side-navigation/styles.css.js +64 -64
- package/lib/internal/template/side-navigation/styles.scoped.css +111 -111
- package/lib/internal/template/side-navigation/styles.selectors.js +64 -64
- package/lib/internal/template/slider/styles.css.js +26 -26
- package/lib/internal/template/slider/styles.scoped.css +165 -165
- package/lib/internal/template/slider/styles.selectors.js +26 -26
- package/lib/internal/template/spinner/styles.css.js +14 -14
- package/lib/internal/template/spinner/styles.scoped.css +40 -40
- package/lib/internal/template/spinner/styles.selectors.js +14 -14
- package/lib/internal/template/table/header-cell/index.d.ts.map +1 -1
- package/lib/internal/template/table/header-cell/index.js +2 -1
- package/lib/internal/template/table/header-cell/index.js.map +1 -1
- package/lib/internal/template/table/styles.css.js +37 -37
- package/lib/internal/template/table/styles.scoped.css +47 -44
- package/lib/internal/template/table/styles.selectors.js +37 -37
- package/lib/internal/template/tabs/styles.css.js +30 -30
- package/lib/internal/template/tabs/styles.scoped.css +76 -76
- package/lib/internal/template/tabs/styles.selectors.js +30 -30
- package/lib/internal/template/tabs/tab-header-bar.d.ts.map +1 -1
- package/lib/internal/template/tabs/tab-header-bar.js +1 -1
- package/lib/internal/template/tabs/tab-header-bar.js.map +1 -1
- package/lib/internal/template/tag-editor/styles.css.js +3 -3
- package/lib/internal/template/tag-editor/styles.scoped.css +13 -13
- package/lib/internal/template/tag-editor/styles.selectors.js +3 -3
- package/lib/internal/template/test-utils/dom/input/index.d.ts +1 -0
- package/lib/internal/template/test-utils/dom/input/index.js +3 -0
- package/lib/internal/template/test-utils/dom/input/index.js.map +1 -1
- package/lib/internal/template/test-utils/selectors/input/index.d.ts +1 -0
- package/lib/internal/template/test-utils/selectors/input/index.js +3 -0
- package/lib/internal/template/test-utils/selectors/input/index.js.map +1 -1
- package/lib/internal/template/text-content/styles.css.js +1 -1
- package/lib/internal/template/text-content/styles.scoped.css +66 -66
- package/lib/internal/template/text-content/styles.selectors.js +1 -1
- package/lib/internal/template/textarea/styles.css.js +9 -9
- package/lib/internal/template/textarea/styles.scoped.css +51 -51
- package/lib/internal/template/textarea/styles.selectors.js +9 -9
- package/lib/internal/template/toggle/styles.css.js +10 -10
- package/lib/internal/template/toggle/styles.scoped.css +23 -23
- package/lib/internal/template/toggle/styles.selectors.js +10 -10
- package/lib/internal/template/token/dismiss-button.js +2 -2
- package/lib/internal/template/token/dismiss-button.js.map +1 -1
- package/lib/internal/template/token/styles.css.js +14 -14
- package/lib/internal/template/token/styles.scoped.css +46 -46
- package/lib/internal/template/token/styles.selectors.js +14 -14
- package/lib/internal/template/top-navigation/parts/overflow-menu/menu-item.d.ts.map +1 -1
- package/lib/internal/template/top-navigation/parts/overflow-menu/menu-item.js +5 -5
- package/lib/internal/template/top-navigation/parts/overflow-menu/menu-item.js.map +1 -1
- package/package.json +1 -1
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
/* stylelint-enable @cloudscape-design/no-motion-outside-of-mixin, selector-combinator-disallowed-list, selector-pseudo-class-no-unknown, selector-class-pattern */
|
|
7
7
|
/* Style used for links in slots/components that are text heavy, to help links stand out among
|
|
8
8
|
surrounding text. (WCAG F73) https://www.w3.org/WAI/WCAG21/Techniques/failures/F73#description */
|
|
9
|
-
.awsui_item-
|
|
9
|
+
.awsui_item-element_93a1u_1rolk_9:not(#\9) {
|
|
10
10
|
position: relative;
|
|
11
11
|
z-index: 1;
|
|
12
12
|
border-block: var(--border-item-width-pyfg4s, 1px) solid transparent;
|
|
@@ -18,22 +18,22 @@ surrounding text. (WCAG F73) https://www.w3.org/WAI/WCAG21/Techniques/failures/F
|
|
|
18
18
|
margin-block-start: calc(-1 * var(--border-width-dropdown-4gpjx5, 1px));
|
|
19
19
|
cursor: pointer;
|
|
20
20
|
}
|
|
21
|
-
.awsui_item-
|
|
21
|
+
.awsui_item-element_93a1u_1rolk_9.awsui_no-content-styling_93a1u_1rolk_21:not(#\9) {
|
|
22
22
|
padding-block: 0;
|
|
23
23
|
padding-inline: 0;
|
|
24
24
|
color: var(--color-text-dropdown-item-default-u2mfqy, #16191f);
|
|
25
25
|
}
|
|
26
|
-
.awsui_item-
|
|
26
|
+
.awsui_item-element_93a1u_1rolk_9.awsui_disabled_93a1u_1rolk_26:not(#\9) {
|
|
27
27
|
cursor: default;
|
|
28
28
|
color: var(--color-text-dropdown-item-disabled-2udtn0, #aab7b8);
|
|
29
29
|
}
|
|
30
|
-
.awsui_item-
|
|
30
|
+
.awsui_item-element_93a1u_1rolk_9:not(#\9):first-child {
|
|
31
31
|
margin-block-start: 0;
|
|
32
32
|
}
|
|
33
|
-
.awsui_item-
|
|
33
|
+
.awsui_item-element_93a1u_1rolk_9.awsui_show-divider_93a1u_1rolk_33:not(#\9) {
|
|
34
34
|
border-block-end: var(--border-item-width-pyfg4s, 1px) solid var(--color-border-dropdown-group-y5droz, #eaeded);
|
|
35
35
|
}
|
|
36
|
-
.awsui_item-
|
|
36
|
+
.awsui_item-element_93a1u_1rolk_9.awsui_highlighted_93a1u_1rolk_36:not(#\9) {
|
|
37
37
|
color: var(--color-text-dropdown-item-highlighted-dikwgu, #16191f);
|
|
38
38
|
z-index: 2;
|
|
39
39
|
background-color: var(--color-background-dropdown-item-hover-pvfsrg, #f2f3f3);
|
|
@@ -43,19 +43,19 @@ surrounding text. (WCAG F73) https://www.w3.org/WAI/WCAG21/Techniques/failures/F
|
|
|
43
43
|
border-end-start-radius: var(--border-radius-item-mitz8h, 0px);
|
|
44
44
|
border-end-end-radius: var(--border-radius-item-mitz8h, 0px);
|
|
45
45
|
}
|
|
46
|
-
.awsui_item-
|
|
46
|
+
.awsui_item-element_93a1u_1rolk_9.awsui_highlighted_93a1u_1rolk_36.awsui_disabled_93a1u_1rolk_26:not(#\9) {
|
|
47
47
|
color: var(--color-text-dropdown-item-dimmed-asp9ue, #aab7b8);
|
|
48
48
|
border-color: var(--color-border-dropdown-item-dimmed-hover-54pdcr, #879596);
|
|
49
49
|
background-color: var(--color-background-dropdown-item-dimmed-vz24i5, transparent);
|
|
50
50
|
}
|
|
51
|
-
.awsui_item-
|
|
51
|
+
.awsui_item-element_93a1u_1rolk_9.awsui_highlighted_93a1u_1rolk_36.awsui_is-focused_93a1u_1rolk_51:not(#\9) {
|
|
52
52
|
border-color: var(--color-border-dropdown-item-focused-y1x3ts, #0073bb);
|
|
53
53
|
}
|
|
54
|
-
.awsui_item-
|
|
54
|
+
.awsui_item-element_93a1u_1rolk_9.awsui_highlighted_93a1u_1rolk_36.awsui_is-focused_93a1u_1rolk_51:not(#\9):not(.awsui_visual-refresh_93a1u_1rolk_54) {
|
|
55
55
|
box-shadow: inset 0 0 0 var(--border-control-focus-ring-shadow-spread-iijyo6, 1px) var(--color-border-item-focused-sewkzn, #0073bb);
|
|
56
56
|
}
|
|
57
57
|
|
|
58
|
-
.awsui_menu-
|
|
58
|
+
.awsui_menu-item_93a1u_1rolk_58:not(#\9) {
|
|
59
59
|
min-inline-size: 0;
|
|
60
60
|
word-break: break-word;
|
|
61
61
|
display: flex;
|
|
@@ -67,17 +67,17 @@ surrounding text. (WCAG F73) https://www.w3.org/WAI/WCAG21/Techniques/failures/F
|
|
|
67
67
|
/* stylelint-disable selector-max-type */
|
|
68
68
|
/* stylelint-enable selector-max-type */
|
|
69
69
|
}
|
|
70
|
-
.awsui_menu-
|
|
70
|
+
.awsui_menu-item_93a1u_1rolk_58.awsui_no-content-styling_93a1u_1rolk_21:not(#\9) {
|
|
71
71
|
padding-block: 0;
|
|
72
72
|
padding-inline: 0;
|
|
73
73
|
color: var(--color-text-dropdown-item-default-u2mfqy, #16191f);
|
|
74
74
|
}
|
|
75
|
-
.awsui_menu-
|
|
75
|
+
.awsui_menu-item_93a1u_1rolk_58.awsui_link-style_93a1u_1rolk_75:not(#\9) {
|
|
76
76
|
padding-block-end: calc(var(--space-option-padding-vertical-hggcse, 4px) + var(--space-xxxs-3ulqs3, 2px));
|
|
77
77
|
text-underline-offset: 0.25em;
|
|
78
78
|
text-decoration-thickness: var(--font-decoration-thickness-link-n3u7wl, 1px);
|
|
79
79
|
text-decoration-style: var(--font-decoration-style-link-lw1s9g, solid);
|
|
80
|
-
color: var(--awsui-style-color-default-
|
|
80
|
+
color: var(--awsui-style-color-default-66120l, var(--color-text-link-default-qabnuk, #0073bb));
|
|
81
81
|
font-weight: inherit;
|
|
82
82
|
letter-spacing: normal;
|
|
83
83
|
text-decoration-line: underline;
|
|
@@ -88,30 +88,30 @@ surrounding text. (WCAG F73) https://www.w3.org/WAI/WCAG21/Techniques/failures/F
|
|
|
88
88
|
transition-duration: var(--motion-duration-refresh-only-medium-s8g1xv, 0ms);
|
|
89
89
|
}
|
|
90
90
|
@media (prefers-reduced-motion: reduce) {
|
|
91
|
-
.awsui_menu-
|
|
91
|
+
.awsui_menu-item_93a1u_1rolk_58.awsui_link-style_93a1u_1rolk_75:not(#\9) {
|
|
92
92
|
animation: none;
|
|
93
93
|
transition: none;
|
|
94
94
|
}
|
|
95
95
|
}
|
|
96
|
-
.awsui-motion-disabled .awsui_menu-
|
|
96
|
+
.awsui-motion-disabled .awsui_menu-item_93a1u_1rolk_58.awsui_link-style_93a1u_1rolk_75:not(#\9), .awsui-mode-entering .awsui_menu-item_93a1u_1rolk_58.awsui_link-style_93a1u_1rolk_75:not(#\9) {
|
|
97
97
|
animation: none;
|
|
98
98
|
transition: none;
|
|
99
99
|
}
|
|
100
|
-
.awsui_menu-
|
|
100
|
+
.awsui_menu-item_93a1u_1rolk_58.awsui_link-style_93a1u_1rolk_75:not(#\9):hover {
|
|
101
101
|
cursor: pointer;
|
|
102
|
-
color: var(--awsui-style-color-hover-
|
|
102
|
+
color: var(--awsui-style-color-hover-66120l, var(--color-text-link-hover-n1r6g0, #0a4a74));
|
|
103
103
|
}
|
|
104
|
-
.awsui_menu-
|
|
104
|
+
.awsui_menu-item_93a1u_1rolk_58.awsui_link-style_93a1u_1rolk_75:not(#\9):focus {
|
|
105
105
|
outline: none;
|
|
106
106
|
}
|
|
107
|
-
.awsui_menu-
|
|
108
|
-
color: var(--awsui-style-color-active-
|
|
107
|
+
.awsui_menu-item_93a1u_1rolk_58.awsui_link-style_93a1u_1rolk_75:not(#\9):active {
|
|
108
|
+
color: var(--awsui-style-color-active-66120l, var(--color-text-link-hover-n1r6g0, #0a4a74));
|
|
109
109
|
}
|
|
110
|
-
.awsui_menu-
|
|
110
|
+
.awsui_menu-item_93a1u_1rolk_58.awsui_link-style_93a1u_1rolk_75:not(#\9):active, .awsui_menu-item_93a1u_1rolk_58.awsui_link-style_93a1u_1rolk_75:not(#\9):focus, .awsui_menu-item_93a1u_1rolk_58.awsui_link-style_93a1u_1rolk_75:not(#\9):hover {
|
|
111
111
|
text-decoration-line: underline;
|
|
112
112
|
text-decoration-color: var(--color-text-link-decoration-hover-opkmr8, currentColor);
|
|
113
113
|
}
|
|
114
|
-
.awsui_menu-
|
|
114
|
+
.awsui_menu-item_93a1u_1rolk_58.awsui_link-style_93a1u_1rolk_75.awsui_current-breadcrumb_93a1u_1rolk_112:not(#\9) {
|
|
115
115
|
font-weight: var(--font-weight-button-2p3grf, 700);
|
|
116
116
|
-webkit-font-smoothing: var(--font-smoothing-webkit-dpz0hr, auto);
|
|
117
117
|
-moz-osx-font-smoothing: var(--font-smoothing-moz-osx-kjlydy, auto);
|
|
@@ -119,63 +119,63 @@ surrounding text. (WCAG F73) https://www.w3.org/WAI/WCAG21/Techniques/failures/F
|
|
|
119
119
|
font-weight: var(--font-weight-bold-xpar9m, 700);
|
|
120
120
|
text-decoration: none;
|
|
121
121
|
}
|
|
122
|
-
.awsui_menu-
|
|
122
|
+
.awsui_menu-item_93a1u_1rolk_58.awsui_link-style_93a1u_1rolk_75.awsui_link-style-highlighted_93a1u_1rolk_120:not(#\9) {
|
|
123
123
|
color: var(--color-text-link-hover-n1r6g0, #0a4a74);
|
|
124
124
|
}
|
|
125
|
-
.awsui_menu-
|
|
125
|
+
.awsui_menu-item_93a1u_1rolk_58:not(#\9):focus {
|
|
126
126
|
outline: none;
|
|
127
127
|
}
|
|
128
|
-
.awsui_has-category-
|
|
128
|
+
.awsui_has-category-header_93a1u_1rolk_126 > .awsui_menu-item_93a1u_1rolk_58:not(#\9), .awsui_has-category-header_93a1u_1rolk_126 > .awsui_item-tooltip-wrapper_93a1u_1rolk_126 > .awsui_menu-item_93a1u_1rolk_58:not(#\9), .awsui_has-category-header_93a1u_1rolk_126:not(#\9):not(.awsui_has-checkmark_93a1u_1rolk_126) > span > .awsui_menu-item_93a1u_1rolk_58 {
|
|
129
129
|
padding-inline-start: calc(var(--space-xs-m9b7jf, 8px) + var(--space-option-padding-horizontal-5om7we, 20px));
|
|
130
130
|
}
|
|
131
|
-
.awsui_has-category-
|
|
131
|
+
.awsui_has-category-header_93a1u_1rolk_126 > .awsui_menu-item_93a1u_1rolk_58.awsui_no-content-styling_93a1u_1rolk_21:not(#\9), .awsui_has-category-header_93a1u_1rolk_126 > .awsui_item-tooltip-wrapper_93a1u_1rolk_126 > .awsui_menu-item_93a1u_1rolk_58.awsui_no-content-styling_93a1u_1rolk_21:not(#\9), .awsui_has-category-header_93a1u_1rolk_126:not(#\9):not(.awsui_has-checkmark_93a1u_1rolk_126) > span > .awsui_menu-item_93a1u_1rolk_58.awsui_no-content-styling_93a1u_1rolk_21 {
|
|
132
132
|
padding-inline-start: 0;
|
|
133
133
|
}
|
|
134
134
|
|
|
135
|
-
.
|
|
135
|
+
.awsui_icon_93a1u_1rolk_133:not(#\9) {
|
|
136
136
|
padding-inline-end: var(--space-xxs-3o1yoq, 4px);
|
|
137
137
|
flex-shrink: 0;
|
|
138
138
|
}
|
|
139
|
-
.
|
|
139
|
+
.awsui_icon_93a1u_1rolk_133.awsui_checkmark_93a1u_1rolk_137:not(#\9) {
|
|
140
140
|
color: var(--color-item-selected-2irl78, #0073bb);
|
|
141
141
|
}
|
|
142
|
-
.
|
|
142
|
+
.awsui_icon_93a1u_1rolk_133.awsui_disabled_93a1u_1rolk_26:not(#\9) {
|
|
143
143
|
color: var(--color-text-interactive-disabled-tuxgxq, #aab7b8);
|
|
144
144
|
}
|
|
145
145
|
|
|
146
|
-
.awsui_external-
|
|
146
|
+
.awsui_external-icon_93a1u_1rolk_144:not(#\9) {
|
|
147
147
|
margin-inline-start: var(--space-xxs-3o1yoq, 4px);
|
|
148
148
|
}
|
|
149
149
|
|
|
150
|
-
.awsui_content-
|
|
150
|
+
.awsui_content-wrapper_93a1u_1rolk_148:not(#\9) {
|
|
151
151
|
flex: 1;
|
|
152
152
|
display: flex;
|
|
153
153
|
flex-direction: column;
|
|
154
154
|
}
|
|
155
155
|
|
|
156
|
-
.awsui_main-
|
|
156
|
+
.awsui_main-row_93a1u_1rolk_154:not(#\9) {
|
|
157
157
|
display: flex;
|
|
158
158
|
justify-content: space-between;
|
|
159
159
|
align-items: center;
|
|
160
160
|
gap: var(--space-s-kll7oj, 12px);
|
|
161
161
|
}
|
|
162
162
|
|
|
163
|
-
.awsui_label-
|
|
163
|
+
.awsui_label-tag_93a1u_1rolk_161:not(#\9) {
|
|
164
164
|
color: var(--color-text-body-default-b2us04, #16191f);
|
|
165
165
|
}
|
|
166
|
-
.awsui_label-
|
|
166
|
+
.awsui_label-tag_93a1u_1rolk_161.awsui_disabled_93a1u_1rolk_26:not(#\9) {
|
|
167
167
|
color: var(--color-text-interactive-disabled-tuxgxq, #aab7b8);
|
|
168
168
|
}
|
|
169
169
|
|
|
170
|
-
.awsui_secondary-
|
|
170
|
+
.awsui_secondary-text_93a1u_1rolk_168:not(#\9) {
|
|
171
171
|
font-size: var(--font-size-body-s-89y7qg, 12px);
|
|
172
172
|
line-height: var(--line-height-body-s-gako33, 16px);
|
|
173
173
|
letter-spacing: var(--letter-spacing-body-s-dzcybc, normal);
|
|
174
174
|
color: var(--color-text-dropdown-item-secondary-1qkuo5, #687078);
|
|
175
175
|
}
|
|
176
|
-
.awsui_secondary-
|
|
176
|
+
.awsui_secondary-text_93a1u_1rolk_168.awsui_highlighted_93a1u_1rolk_36:not(#\9) {
|
|
177
177
|
color: var(--color-text-dropdown-item-highlighted-dikwgu, #16191f);
|
|
178
178
|
}
|
|
179
|
-
.awsui_secondary-
|
|
179
|
+
.awsui_secondary-text_93a1u_1rolk_168.awsui_disabled_93a1u_1rolk_26:not(#\9) {
|
|
180
180
|
color: var(--color-text-interactive-disabled-tuxgxq, #aab7b8);
|
|
181
181
|
}
|
|
@@ -2,26 +2,26 @@
|
|
|
2
2
|
// es-module interop with Babel and Typescript
|
|
3
3
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
4
|
module.exports.default = {
|
|
5
|
-
"item-element": "awsui_item-
|
|
6
|
-
"no-content-styling": "awsui_no-content-
|
|
7
|
-
"disabled": "
|
|
8
|
-
"show-divider": "awsui_show-
|
|
9
|
-
"highlighted": "
|
|
10
|
-
"is-focused": "awsui_is-
|
|
11
|
-
"visual-refresh": "awsui_visual-
|
|
12
|
-
"menu-item": "awsui_menu-
|
|
13
|
-
"link-style": "awsui_link-
|
|
14
|
-
"current-breadcrumb": "awsui_current-
|
|
15
|
-
"link-style-highlighted": "awsui_link-style-
|
|
16
|
-
"has-category-header": "awsui_has-category-
|
|
17
|
-
"item-tooltip-wrapper": "awsui_item-tooltip-
|
|
18
|
-
"has-checkmark": "awsui_has-
|
|
19
|
-
"icon": "
|
|
20
|
-
"checkmark": "
|
|
21
|
-
"external-icon": "awsui_external-
|
|
22
|
-
"content-wrapper": "awsui_content-
|
|
23
|
-
"main-row": "awsui_main-
|
|
24
|
-
"label-tag": "awsui_label-
|
|
25
|
-
"secondary-text": "awsui_secondary-
|
|
5
|
+
"item-element": "awsui_item-element_93a1u_1rolk_9",
|
|
6
|
+
"no-content-styling": "awsui_no-content-styling_93a1u_1rolk_21",
|
|
7
|
+
"disabled": "awsui_disabled_93a1u_1rolk_26",
|
|
8
|
+
"show-divider": "awsui_show-divider_93a1u_1rolk_33",
|
|
9
|
+
"highlighted": "awsui_highlighted_93a1u_1rolk_36",
|
|
10
|
+
"is-focused": "awsui_is-focused_93a1u_1rolk_51",
|
|
11
|
+
"visual-refresh": "awsui_visual-refresh_93a1u_1rolk_54",
|
|
12
|
+
"menu-item": "awsui_menu-item_93a1u_1rolk_58",
|
|
13
|
+
"link-style": "awsui_link-style_93a1u_1rolk_75",
|
|
14
|
+
"current-breadcrumb": "awsui_current-breadcrumb_93a1u_1rolk_112",
|
|
15
|
+
"link-style-highlighted": "awsui_link-style-highlighted_93a1u_1rolk_120",
|
|
16
|
+
"has-category-header": "awsui_has-category-header_93a1u_1rolk_126",
|
|
17
|
+
"item-tooltip-wrapper": "awsui_item-tooltip-wrapper_93a1u_1rolk_126",
|
|
18
|
+
"has-checkmark": "awsui_has-checkmark_93a1u_1rolk_126",
|
|
19
|
+
"icon": "awsui_icon_93a1u_1rolk_133",
|
|
20
|
+
"checkmark": "awsui_checkmark_93a1u_1rolk_137",
|
|
21
|
+
"external-icon": "awsui_external-icon_93a1u_1rolk_144",
|
|
22
|
+
"content-wrapper": "awsui_content-wrapper_93a1u_1rolk_148",
|
|
23
|
+
"main-row": "awsui_main-row_93a1u_1rolk_154",
|
|
24
|
+
"label-tag": "awsui_label-tag_93a1u_1rolk_161",
|
|
25
|
+
"secondary-text": "awsui_secondary-text_93a1u_1rolk_168"
|
|
26
26
|
};
|
|
27
27
|
|
|
@@ -1,11 +1,13 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
-
import { CancelableEventHandler } from '../../types/events';
|
|
2
|
+
import { CancelableEventHandler, NonCancelableCustomEvent } from '../../types/events';
|
|
3
3
|
import { ButtonDropdownProps, ButtonDropdownSettings, GroupToggle, HighlightProps, ItemActivate } from '../interfaces';
|
|
4
|
+
type DropdownFocusLeaveEvent = NonCancelableCustomEvent<Pick<React.FocusEvent, 'target' | 'relatedTarget'>>;
|
|
4
5
|
interface UseButtonDropdownOptions extends ButtonDropdownSettings {
|
|
5
6
|
items: ButtonDropdownProps.Items;
|
|
6
7
|
onItemClick?: CancelableEventHandler<ButtonDropdownProps.ItemClickDetails>;
|
|
7
8
|
onItemFollow?: CancelableEventHandler<ButtonDropdownProps.ItemClickDetails>;
|
|
8
9
|
onReturnFocus: () => void;
|
|
10
|
+
isTriggerElement: (element: Element) => boolean;
|
|
9
11
|
expandToViewport?: boolean;
|
|
10
12
|
hasFiltering: boolean;
|
|
11
13
|
}
|
|
@@ -15,7 +17,7 @@ interface UseButtonDropdownApi extends HighlightProps {
|
|
|
15
17
|
onKeyUp: (event: React.KeyboardEvent) => void;
|
|
16
18
|
onItemActivate: ItemActivate;
|
|
17
19
|
onGroupToggle: GroupToggle;
|
|
18
|
-
onDropdownFocusLeave: () => void;
|
|
20
|
+
onDropdownFocusLeave: (event: DropdownFocusLeaveEvent) => void;
|
|
19
21
|
onDropdownBlur: () => void;
|
|
20
22
|
toggleDropdown: (options?: {
|
|
21
23
|
moveHighlightOnOpen?: boolean;
|
|
@@ -27,6 +29,6 @@ interface UseButtonDropdownApi extends HighlightProps {
|
|
|
27
29
|
filteredItems: ButtonDropdownProps.Items;
|
|
28
30
|
showExpandableGroups: boolean;
|
|
29
31
|
}
|
|
30
|
-
export declare function useButtonDropdown({ items, onItemClick, onItemFollow, onReturnFocus, hasExpandableGroups, isInRestrictedView, expandToViewport, hasFiltering, }: UseButtonDropdownOptions): UseButtonDropdownApi;
|
|
32
|
+
export declare function useButtonDropdown({ items, onItemClick, onItemFollow, onReturnFocus, isTriggerElement, hasExpandableGroups, isInRestrictedView, expandToViewport, hasFiltering, }: UseButtonDropdownOptions): UseButtonDropdownApi;
|
|
31
33
|
export {};
|
|
32
34
|
//# sourceMappingURL=use-button-dropdown.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-button-dropdown.d.ts","sourceRoot":"","sources":["../../../../src/button-dropdown/utils/use-button-dropdown.ts"],"names":[],"mappings":"AAEA,OAAO,KAA+C,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"use-button-dropdown.d.ts","sourceRoot":"","sources":["../../../../src/button-dropdown/utils/use-button-dropdown.ts"],"names":[],"mappings":"AAEA,OAAO,KAA+C,MAAM,OAAO,CAAC;AAOpE,OAAO,EAAE,sBAAsB,EAAE,wBAAwB,EAAE,MAAM,oBAAoB,CAAC;AACtF,OAAO,EAAE,mBAAmB,EAAE,sBAAsB,EAAE,WAAW,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAKvH,KAAK,uBAAuB,GAAG,wBAAwB,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE,QAAQ,GAAG,eAAe,CAAC,CAAC,CAAC;AAE5G,UAAU,wBAAyB,SAAQ,sBAAsB;IAC/D,KAAK,EAAE,mBAAmB,CAAC,KAAK,CAAC;IACjC,WAAW,CAAC,EAAE,sBAAsB,CAAC,mBAAmB,CAAC,gBAAgB,CAAC,CAAC;IAC3E,YAAY,CAAC,EAAE,sBAAsB,CAAC,mBAAmB,CAAC,gBAAgB,CAAC,CAAC;IAC5E,aAAa,EAAE,MAAM,IAAI,CAAC;IAE1B,gBAAgB,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,OAAO,CAAC;IAChD,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,YAAY,EAAE,OAAO,CAAC;CACvB;AAED,UAAU,oBAAqB,SAAQ,cAAc;IACnD,MAAM,EAAE,OAAO,CAAC;IAChB,SAAS,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,aAAa,KAAK,IAAI,CAAC;IAChD,OAAO,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,aAAa,KAAK,IAAI,CAAC;IAC9C,cAAc,EAAE,YAAY,CAAC;IAC7B,aAAa,EAAE,WAAW,CAAC;IAC3B,oBAAoB,EAAE,CAAC,KAAK,EAAE,uBAAuB,KAAK,IAAI,CAAC;IAC/D,cAAc,EAAE,MAAM,IAAI,CAAC;IAC3B,cAAc,EAAE,CAAC,OAAO,CAAC,EAAE;QAAE,mBAAmB,CAAC,EAAE,OAAO,CAAA;KAAE,KAAK,IAAI,CAAC;IACtE,aAAa,EAAE,MAAM,IAAI,CAAC;IAC1B,eAAe,EAAE,CAAC,YAAY,EAAE,OAAO,KAAK,IAAI,CAAC;IACjD,cAAc,EAAE,MAAM,CAAC;IACvB,iBAAiB,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAC3C,aAAa,EAAE,mBAAmB,CAAC,KAAK,CAAC;IACzC,oBAAoB,EAAE,OAAO,CAAC;CAC/B;AAED,wBAAgB,iBAAiB,CAAC,EAChC,KAAK,EACL,WAAW,EACX,YAAY,EACZ,aAAa,EACb,gBAAgB,EAChB,mBAAmB,EACnB,kBAA0B,EAC1B,gBAAwB,EACxB,YAAY,GACb,EAAE,wBAAwB,GAAG,oBAAoB,CAuQjD"}
|
|
@@ -4,10 +4,12 @@ import { useEffect, useMemo, useRef, useState } from 'react';
|
|
|
4
4
|
import { useOpenState } from '../../internal/components/options-list/utils/use-open-state';
|
|
5
5
|
import { fireCancelableEvent, isPlainLeftClick } from '../../internal/events';
|
|
6
6
|
import { KeyCode } from '../../internal/keycode';
|
|
7
|
+
import { isElement } from '../../internal/utils/dom';
|
|
8
|
+
import { isKeyboardInteraction } from '../../internal/utils/focus-visible';
|
|
7
9
|
import { filterItems } from './filter-items';
|
|
8
10
|
import useHighlightedMenu from './use-highlighted-menu';
|
|
9
11
|
import { getItemTarget, isCheckboxItem, isItemGroup, isLinkItem } from './utils';
|
|
10
|
-
export function useButtonDropdown({ items, onItemClick, onItemFollow, onReturnFocus, hasExpandableGroups, isInRestrictedView = false, expandToViewport = false, hasFiltering, }) {
|
|
12
|
+
export function useButtonDropdown({ items, onItemClick, onItemFollow, onReturnFocus, isTriggerElement, hasExpandableGroups, isInRestrictedView = false, expandToViewport = false, hasFiltering, }) {
|
|
11
13
|
const [filteringValue, setFilteringValue] = useState('');
|
|
12
14
|
const filteredItems = useMemo(() => (hasFiltering && filteringValue ? filterItems(items, filteringValue) : items), [hasFiltering, filteringValue, items]);
|
|
13
15
|
const showExpandableGroups = hasExpandableGroups && !filteringValue;
|
|
@@ -41,8 +43,18 @@ export function useButtonDropdown({ items, onItemClick, onItemFollow, onReturnFo
|
|
|
41
43
|
}
|
|
42
44
|
openStateProps.toggleDropdown();
|
|
43
45
|
};
|
|
44
|
-
const onDropdownFocusLeave = () => {
|
|
46
|
+
const onDropdownFocusLeave = (event) => {
|
|
45
47
|
if (hasFiltering && isOpen) {
|
|
48
|
+
const { relatedTarget } = event.detail;
|
|
49
|
+
// When focus moves from the filter input to the trigger via a mouse click, the trigger's
|
|
50
|
+
// own click handler already closes the dropdown.
|
|
51
|
+
const clickedTrigger = !!relatedTarget &&
|
|
52
|
+
isElement(relatedTarget) &&
|
|
53
|
+
isTriggerElement(relatedTarget) &&
|
|
54
|
+
!isKeyboardInteraction(relatedTarget);
|
|
55
|
+
if (clickedTrigger) {
|
|
56
|
+
return;
|
|
57
|
+
}
|
|
46
58
|
if (expandToViewport) {
|
|
47
59
|
// When expanded to viewport the focus can't move naturally to the next element.
|
|
48
60
|
// Returning the focus to the trigger instead.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-button-dropdown.js","sourceRoot":"","sources":["../../../../src/button-dropdown/utils/use-button-dropdown.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 React, { useEffect, useMemo, useRef, useState } from 'react';\n\nimport { useOpenState } from '../../internal/components/options-list/utils/use-open-state';\nimport { fireCancelableEvent, isPlainLeftClick } from '../../internal/events';\nimport { KeyCode } from '../../internal/keycode';\nimport { CancelableEventHandler } from '../../types/events';\nimport { ButtonDropdownProps, ButtonDropdownSettings, GroupToggle, HighlightProps, ItemActivate } from '../interfaces';\nimport { filterItems } from './filter-items';\nimport useHighlightedMenu from './use-highlighted-menu';\nimport { getItemTarget, isCheckboxItem, isItemGroup, isLinkItem } from './utils';\n\ninterface UseButtonDropdownOptions extends ButtonDropdownSettings {\n items: ButtonDropdownProps.Items;\n onItemClick?: CancelableEventHandler<ButtonDropdownProps.ItemClickDetails>;\n onItemFollow?: CancelableEventHandler<ButtonDropdownProps.ItemClickDetails>;\n onReturnFocus: () => void;\n expandToViewport?: boolean;\n hasFiltering: boolean;\n}\n\ninterface UseButtonDropdownApi extends HighlightProps {\n isOpen: boolean;\n onKeyDown: (event: React.KeyboardEvent) => void;\n onKeyUp: (event: React.KeyboardEvent) => void;\n onItemActivate: ItemActivate;\n onGroupToggle: GroupToggle;\n onDropdownFocusLeave: () => void;\n onDropdownBlur: () => void;\n toggleDropdown: (options?: { moveHighlightOnOpen?: boolean }) => void;\n closeDropdown: () => void;\n setIsUsingMouse: (isUsingMouse: boolean) => void;\n filteringValue: string;\n setFilteringValue: (value: string) => void;\n filteredItems: ButtonDropdownProps.Items;\n showExpandableGroups: boolean;\n}\n\nexport function useButtonDropdown({\n items,\n onItemClick,\n onItemFollow,\n onReturnFocus,\n hasExpandableGroups,\n isInRestrictedView = false,\n expandToViewport = false,\n hasFiltering,\n}: UseButtonDropdownOptions): UseButtonDropdownApi {\n const [filteringValue, setFilteringValue] = useState('');\n\n const filteredItems = useMemo(\n () => (hasFiltering && filteringValue ? filterItems(items, filteringValue) : items),\n [hasFiltering, filteringValue, items]\n );\n\n const showExpandableGroups = hasExpandableGroups && !filteringValue;\n\n const {\n targetItem,\n isHighlighted,\n isKeyboardHighlight,\n isExpanded,\n highlightItem,\n moveHighlight,\n expandGroup,\n collapseGroup,\n reset,\n setIsUsingMouse,\n } = useHighlightedMenu({\n items: filteredItems,\n hasExpandableGroups: showExpandableGroups,\n isInRestrictedView,\n });\n\n // If the filtering input changes, the options list also changes,\n // so the highlight isn't valid anymore.\n const prevFilteringValue = useRef(filteringValue);\n useEffect(() => {\n if (prevFilteringValue.current !== filteringValue) {\n prevFilteringValue.current = filteringValue;\n reset();\n }\n }, [filteringValue, reset]);\n\n const { isOpen, closeDropdown: closeDropdownState, ...openStateProps } = useOpenState({ onClose: reset });\n\n const closeDropdown = () => {\n setFilteringValue('');\n closeDropdownState();\n };\n\n const toggleDropdown = (options: { moveHighlightOnOpen?: boolean } = {}) => {\n const moveHighlightOnOpen = options.moveHighlightOnOpen ?? true;\n if (!isOpen && moveHighlightOnOpen && !hasFiltering) {\n moveHighlight(1);\n }\n if (isOpen) {\n setFilteringValue('');\n }\n openStateProps.toggleDropdown();\n };\n\n const onDropdownFocusLeave = () => {\n if (hasFiltering && isOpen) {\n if (expandToViewport) {\n // When expanded to viewport the focus can't move naturally to the next element.\n // Returning the focus to the trigger instead.\n onReturnFocus();\n }\n closeDropdown();\n }\n };\n\n // Close when focus leaves the entire widget (trigger and menu), for example when focus\n // moves to an app layout drawer or an element in a different frame. The filtering variant\n // keeps focus inside the dropdown content and closes via onDropdownFocusLeave instead.\n const onDropdownBlur = () => {\n if (isOpen && !hasFiltering) {\n closeDropdown();\n }\n };\n\n const onGroupToggle: GroupToggle = item => (!isExpanded(item) ? expandGroup(item) : collapseGroup());\n\n const onItemActivate: ItemActivate = (item, event) => {\n const isCheckbox = isCheckboxItem(item);\n const isLink = isLinkItem(item);\n const details = {\n id: item.id || 'undefined',\n href: isLink ? item.href : undefined,\n external: isLink ? item.external : undefined,\n target: isLink ? getItemTarget(item) : undefined,\n checked: isCheckbox ? !item.checked : undefined,\n };\n onReturnFocus();\n if (onItemFollow && isLink && isPlainLeftClick(event)) {\n fireCancelableEvent(onItemFollow, details, event);\n }\n if (onItemClick) {\n fireCancelableEvent(onItemClick, details, event);\n }\n closeDropdown();\n };\n\n const openAndSelectFirst = (event: React.KeyboardEvent) => {\n toggleDropdown();\n event.preventDefault();\n };\n\n const actOnParentDropdown = (event: React.KeyboardEvent) => {\n // if there is no highlighted item we act on the trigger by opening or closing dropdown\n if (!targetItem) {\n if (isOpen && !isInRestrictedView) {\n toggleDropdown();\n } else {\n openAndSelectFirst(event);\n }\n } else {\n if (isItemGroup(targetItem)) {\n onGroupToggle(targetItem, event);\n } else {\n onItemActivate(targetItem, event);\n }\n }\n };\n\n const activate = (event: React.KeyboardEvent, isEnter?: boolean) => {\n setIsUsingMouse(false);\n\n // if item is a link we rely on default behavior of an anchor, no need to prevent\n if (targetItem && isLinkItem(targetItem) && isEnter) {\n return;\n }\n\n event.preventDefault();\n actOnParentDropdown(event);\n };\n\n const onKeyDown = (event: React.KeyboardEvent) => {\n setIsUsingMouse(false);\n switch (event.keyCode) {\n case KeyCode.down: {\n if (!isOpen) {\n toggleDropdown();\n if (!hasFiltering) {\n moveHighlight(1, true);\n }\n } else {\n moveHighlight(1);\n }\n event.preventDefault();\n break;\n }\n case KeyCode.up: {\n if (!isOpen) {\n toggleDropdown();\n if (!hasFiltering) {\n moveHighlight(-1, true);\n }\n } else {\n moveHighlight(-1);\n }\n event.preventDefault();\n break;\n }\n case KeyCode.space: {\n // Prevent scrolling the list of items and highlighting the trigger when filtering\n // isn't active. Hitting space when filtering is active should just type a space\n // character into the input, or activate the clear button.\n if (!hasFiltering && !isOpen) {\n event.preventDefault();\n }\n break;\n }\n case KeyCode.enter: {\n // While filtering, pressing Enter without a highlighted item should not select\n // any item or close the dropdown.\n if (isOpen && hasFiltering && !targetItem) {\n break;\n }\n if (!targetItem?.disabled) {\n activate(event, true);\n }\n break;\n }\n case KeyCode.left:\n case KeyCode.right: {\n // When filtering is enabled and there's text in the filter input, left/right\n // arrow keys should move the caret between the characters.\n if (hasFiltering && filteringValue) {\n break;\n }\n if (targetItem && !targetItem.disabled && isItemGroup(targetItem) && !isExpanded(targetItem)) {\n expandGroup();\n } else if (hasExpandableGroups) {\n collapseGroup();\n }\n\n event.preventDefault();\n break;\n }\n case KeyCode.escape: {\n onReturnFocus();\n closeDropdown();\n event.preventDefault();\n if (isOpen) {\n event.stopPropagation();\n }\n break;\n }\n case KeyCode.tab: {\n // In filtering mode the dropdown contains multiple focusable elements (the filter\n // input and its clear button). Tabbing between them must not close the dropdown, so\n // closing on Tab is handled by onDropdownFocusLeave instead, which only fires once\n // focus actually leaves the dropdown.\n if (hasFiltering) {\n break;\n }\n // When expanded to viewport the focus can't move naturally to the next element.\n // Returning the focus to the trigger instead.\n if (expandToViewport) {\n onReturnFocus();\n }\n closeDropdown();\n break;\n }\n }\n };\n const onKeyUp = (event: React.KeyboardEvent) => {\n // When using a roving tabindex (filtering disabled), we need to handle activating items\n // with Space separately because there is a bug in Firefox where changing the focus during\n // a Space keydown event it will trigger unexpected click events on the new element.\n // See https://bugzilla.mozilla.org/show_bug.cgi?id=1220143\n if (event.keyCode === KeyCode.space && !targetItem?.disabled && !hasFiltering) {\n activate(event);\n }\n };\n\n return {\n isOpen,\n targetItem,\n isHighlighted,\n isKeyboardHighlight,\n isExpanded,\n highlightItem,\n onKeyDown,\n onKeyUp,\n onItemActivate,\n onGroupToggle,\n onDropdownFocusLeave,\n onDropdownBlur,\n toggleDropdown,\n closeDropdown,\n setIsUsingMouse,\n filteringValue,\n setFilteringValue,\n filteredItems,\n showExpandableGroups,\n };\n}\n"]}
|
|
1
|
+
{"version":3,"file":"use-button-dropdown.js","sourceRoot":"","sources":["../../../../src/button-dropdown/utils/use-button-dropdown.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 React, { useEffect, useMemo, useRef, useState } from 'react';\n\nimport { useOpenState } from '../../internal/components/options-list/utils/use-open-state';\nimport { fireCancelableEvent, isPlainLeftClick } from '../../internal/events';\nimport { KeyCode } from '../../internal/keycode';\nimport { isElement } from '../../internal/utils/dom';\nimport { isKeyboardInteraction } from '../../internal/utils/focus-visible';\nimport { CancelableEventHandler, NonCancelableCustomEvent } from '../../types/events';\nimport { ButtonDropdownProps, ButtonDropdownSettings, GroupToggle, HighlightProps, ItemActivate } from '../interfaces';\nimport { filterItems } from './filter-items';\nimport useHighlightedMenu from './use-highlighted-menu';\nimport { getItemTarget, isCheckboxItem, isItemGroup, isLinkItem } from './utils';\n\ntype DropdownFocusLeaveEvent = NonCancelableCustomEvent<Pick<React.FocusEvent, 'target' | 'relatedTarget'>>;\n\ninterface UseButtonDropdownOptions extends ButtonDropdownSettings {\n items: ButtonDropdownProps.Items;\n onItemClick?: CancelableEventHandler<ButtonDropdownProps.ItemClickDetails>;\n onItemFollow?: CancelableEventHandler<ButtonDropdownProps.ItemClickDetails>;\n onReturnFocus: () => void;\n // Returns whether the given element is (or is inside) the dropdown trigger.\n isTriggerElement: (element: Element) => boolean;\n expandToViewport?: boolean;\n hasFiltering: boolean;\n}\n\ninterface UseButtonDropdownApi extends HighlightProps {\n isOpen: boolean;\n onKeyDown: (event: React.KeyboardEvent) => void;\n onKeyUp: (event: React.KeyboardEvent) => void;\n onItemActivate: ItemActivate;\n onGroupToggle: GroupToggle;\n onDropdownFocusLeave: (event: DropdownFocusLeaveEvent) => void;\n onDropdownBlur: () => void;\n toggleDropdown: (options?: { moveHighlightOnOpen?: boolean }) => void;\n closeDropdown: () => void;\n setIsUsingMouse: (isUsingMouse: boolean) => void;\n filteringValue: string;\n setFilteringValue: (value: string) => void;\n filteredItems: ButtonDropdownProps.Items;\n showExpandableGroups: boolean;\n}\n\nexport function useButtonDropdown({\n items,\n onItemClick,\n onItemFollow,\n onReturnFocus,\n isTriggerElement,\n hasExpandableGroups,\n isInRestrictedView = false,\n expandToViewport = false,\n hasFiltering,\n}: UseButtonDropdownOptions): UseButtonDropdownApi {\n const [filteringValue, setFilteringValue] = useState('');\n\n const filteredItems = useMemo(\n () => (hasFiltering && filteringValue ? filterItems(items, filteringValue) : items),\n [hasFiltering, filteringValue, items]\n );\n\n const showExpandableGroups = hasExpandableGroups && !filteringValue;\n\n const {\n targetItem,\n isHighlighted,\n isKeyboardHighlight,\n isExpanded,\n highlightItem,\n moveHighlight,\n expandGroup,\n collapseGroup,\n reset,\n setIsUsingMouse,\n } = useHighlightedMenu({\n items: filteredItems,\n hasExpandableGroups: showExpandableGroups,\n isInRestrictedView,\n });\n\n // If the filtering input changes, the options list also changes,\n // so the highlight isn't valid anymore.\n const prevFilteringValue = useRef(filteringValue);\n useEffect(() => {\n if (prevFilteringValue.current !== filteringValue) {\n prevFilteringValue.current = filteringValue;\n reset();\n }\n }, [filteringValue, reset]);\n\n const { isOpen, closeDropdown: closeDropdownState, ...openStateProps } = useOpenState({ onClose: reset });\n\n const closeDropdown = () => {\n setFilteringValue('');\n closeDropdownState();\n };\n\n const toggleDropdown = (options: { moveHighlightOnOpen?: boolean } = {}) => {\n const moveHighlightOnOpen = options.moveHighlightOnOpen ?? true;\n if (!isOpen && moveHighlightOnOpen && !hasFiltering) {\n moveHighlight(1);\n }\n if (isOpen) {\n setFilteringValue('');\n }\n openStateProps.toggleDropdown();\n };\n\n const onDropdownFocusLeave = (event: DropdownFocusLeaveEvent) => {\n if (hasFiltering && isOpen) {\n const { relatedTarget } = event.detail;\n // When focus moves from the filter input to the trigger via a mouse click, the trigger's\n // own click handler already closes the dropdown.\n const clickedTrigger =\n !!relatedTarget &&\n isElement(relatedTarget) &&\n isTriggerElement(relatedTarget) &&\n !isKeyboardInteraction(relatedTarget);\n if (clickedTrigger) {\n return;\n }\n if (expandToViewport) {\n // When expanded to viewport the focus can't move naturally to the next element.\n // Returning the focus to the trigger instead.\n onReturnFocus();\n }\n closeDropdown();\n }\n };\n\n // Close when focus leaves the entire widget (trigger and menu), for example when focus\n // moves to an app layout drawer or an element in a different frame. The filtering variant\n // keeps focus inside the dropdown content and closes via onDropdownFocusLeave instead.\n const onDropdownBlur = () => {\n if (isOpen && !hasFiltering) {\n closeDropdown();\n }\n };\n\n const onGroupToggle: GroupToggle = item => (!isExpanded(item) ? expandGroup(item) : collapseGroup());\n\n const onItemActivate: ItemActivate = (item, event) => {\n const isCheckbox = isCheckboxItem(item);\n const isLink = isLinkItem(item);\n const details = {\n id: item.id || 'undefined',\n href: isLink ? item.href : undefined,\n external: isLink ? item.external : undefined,\n target: isLink ? getItemTarget(item) : undefined,\n checked: isCheckbox ? !item.checked : undefined,\n };\n onReturnFocus();\n if (onItemFollow && isLink && isPlainLeftClick(event)) {\n fireCancelableEvent(onItemFollow, details, event);\n }\n if (onItemClick) {\n fireCancelableEvent(onItemClick, details, event);\n }\n closeDropdown();\n };\n\n const openAndSelectFirst = (event: React.KeyboardEvent) => {\n toggleDropdown();\n event.preventDefault();\n };\n\n const actOnParentDropdown = (event: React.KeyboardEvent) => {\n // if there is no highlighted item we act on the trigger by opening or closing dropdown\n if (!targetItem) {\n if (isOpen && !isInRestrictedView) {\n toggleDropdown();\n } else {\n openAndSelectFirst(event);\n }\n } else {\n if (isItemGroup(targetItem)) {\n onGroupToggle(targetItem, event);\n } else {\n onItemActivate(targetItem, event);\n }\n }\n };\n\n const activate = (event: React.KeyboardEvent, isEnter?: boolean) => {\n setIsUsingMouse(false);\n\n // if item is a link we rely on default behavior of an anchor, no need to prevent\n if (targetItem && isLinkItem(targetItem) && isEnter) {\n return;\n }\n\n event.preventDefault();\n actOnParentDropdown(event);\n };\n\n const onKeyDown = (event: React.KeyboardEvent) => {\n setIsUsingMouse(false);\n switch (event.keyCode) {\n case KeyCode.down: {\n if (!isOpen) {\n toggleDropdown();\n if (!hasFiltering) {\n moveHighlight(1, true);\n }\n } else {\n moveHighlight(1);\n }\n event.preventDefault();\n break;\n }\n case KeyCode.up: {\n if (!isOpen) {\n toggleDropdown();\n if (!hasFiltering) {\n moveHighlight(-1, true);\n }\n } else {\n moveHighlight(-1);\n }\n event.preventDefault();\n break;\n }\n case KeyCode.space: {\n // Prevent scrolling the list of items and highlighting the trigger when filtering\n // isn't active. Hitting space when filtering is active should just type a space\n // character into the input, or activate the clear button.\n if (!hasFiltering && !isOpen) {\n event.preventDefault();\n }\n break;\n }\n case KeyCode.enter: {\n // While filtering, pressing Enter without a highlighted item should not select\n // any item or close the dropdown.\n if (isOpen && hasFiltering && !targetItem) {\n break;\n }\n if (!targetItem?.disabled) {\n activate(event, true);\n }\n break;\n }\n case KeyCode.left:\n case KeyCode.right: {\n // When filtering is enabled and there's text in the filter input, left/right\n // arrow keys should move the caret between the characters.\n if (hasFiltering && filteringValue) {\n break;\n }\n if (targetItem && !targetItem.disabled && isItemGroup(targetItem) && !isExpanded(targetItem)) {\n expandGroup();\n } else if (hasExpandableGroups) {\n collapseGroup();\n }\n\n event.preventDefault();\n break;\n }\n case KeyCode.escape: {\n onReturnFocus();\n closeDropdown();\n event.preventDefault();\n if (isOpen) {\n event.stopPropagation();\n }\n break;\n }\n case KeyCode.tab: {\n // In filtering mode the dropdown contains multiple focusable elements (the filter\n // input and its clear button). Tabbing between them must not close the dropdown, so\n // closing on Tab is handled by onDropdownFocusLeave instead, which only fires once\n // focus actually leaves the dropdown.\n if (hasFiltering) {\n break;\n }\n // When expanded to viewport the focus can't move naturally to the next element.\n // Returning the focus to the trigger instead.\n if (expandToViewport) {\n onReturnFocus();\n }\n closeDropdown();\n break;\n }\n }\n };\n const onKeyUp = (event: React.KeyboardEvent) => {\n // When using a roving tabindex (filtering disabled), we need to handle activating items\n // with Space separately because there is a bug in Firefox where changing the focus during\n // a Space keydown event it will trigger unexpected click events on the new element.\n // See https://bugzilla.mozilla.org/show_bug.cgi?id=1220143\n if (event.keyCode === KeyCode.space && !targetItem?.disabled && !hasFiltering) {\n activate(event);\n }\n };\n\n return {\n isOpen,\n targetItem,\n isHighlighted,\n isKeyboardHighlight,\n isExpanded,\n highlightItem,\n onKeyDown,\n onKeyUp,\n onItemActivate,\n onGroupToggle,\n onDropdownFocusLeave,\n onDropdownBlur,\n toggleDropdown,\n closeDropdown,\n setIsUsingMouse,\n filteringValue,\n setFilteringValue,\n filteredItems,\n showExpandableGroups,\n };\n}\n"]}
|
|
@@ -1,43 +1,44 @@
|
|
|
1
1
|
|
|
2
2
|
import './styles.scoped.css';
|
|
3
3
|
export default {
|
|
4
|
-
"root": "
|
|
5
|
-
"header
|
|
6
|
-
"header-
|
|
7
|
-
"
|
|
8
|
-
"list
|
|
9
|
-
"
|
|
10
|
-
"
|
|
11
|
-
"list-grid-
|
|
12
|
-
"list-grid-
|
|
13
|
-
"list-grid-
|
|
14
|
-
"list-grid-
|
|
15
|
-
"list-grid-
|
|
16
|
-
"list-grid-
|
|
17
|
-
"list-grid-
|
|
18
|
-
"list-grid-
|
|
19
|
-
"list-grid-
|
|
20
|
-
"list-grid-
|
|
21
|
-
"list-grid-
|
|
22
|
-
"list-grid-
|
|
23
|
-
"list-grid-
|
|
24
|
-
"list-grid-
|
|
25
|
-
"list-grid-
|
|
26
|
-
"list-grid-
|
|
27
|
-
"list-grid-
|
|
28
|
-
"list-grid-
|
|
29
|
-
"
|
|
30
|
-
"
|
|
31
|
-
"
|
|
32
|
-
"
|
|
33
|
-
"
|
|
34
|
-
"
|
|
35
|
-
"card-header
|
|
36
|
-
"card-header-inner
|
|
37
|
-
"card-
|
|
38
|
-
"
|
|
39
|
-
"section
|
|
40
|
-
"section-
|
|
41
|
-
"
|
|
4
|
+
"root": "awsui_root_p8a6i_1ktd8_9",
|
|
5
|
+
"header": "awsui_header_p8a6i_1ktd8_41",
|
|
6
|
+
"header-variant-full-page": "awsui_header-variant-full-page_p8a6i_1ktd8_41",
|
|
7
|
+
"header-refresh": "awsui_header-refresh_p8a6i_1ktd8_44",
|
|
8
|
+
"list": "awsui_list_p8a6i_1ktd8_51",
|
|
9
|
+
"list-grid-1": "awsui_list-grid-1_p8a6i_1ktd8_62",
|
|
10
|
+
"card": "awsui_card_p8a6i_1ktd8_62",
|
|
11
|
+
"list-grid-2": "awsui_list-grid-2_p8a6i_1ktd8_65",
|
|
12
|
+
"list-grid-3": "awsui_list-grid-3_p8a6i_1ktd8_68",
|
|
13
|
+
"list-grid-4": "awsui_list-grid-4_p8a6i_1ktd8_71",
|
|
14
|
+
"list-grid-5": "awsui_list-grid-5_p8a6i_1ktd8_74",
|
|
15
|
+
"list-grid-6": "awsui_list-grid-6_p8a6i_1ktd8_77",
|
|
16
|
+
"list-grid-7": "awsui_list-grid-7_p8a6i_1ktd8_80",
|
|
17
|
+
"list-grid-8": "awsui_list-grid-8_p8a6i_1ktd8_83",
|
|
18
|
+
"list-grid-9": "awsui_list-grid-9_p8a6i_1ktd8_86",
|
|
19
|
+
"list-grid-10": "awsui_list-grid-10_p8a6i_1ktd8_89",
|
|
20
|
+
"list-grid-11": "awsui_list-grid-11_p8a6i_1ktd8_92",
|
|
21
|
+
"list-grid-12": "awsui_list-grid-12_p8a6i_1ktd8_95",
|
|
22
|
+
"list-grid-13": "awsui_list-grid-13_p8a6i_1ktd8_98",
|
|
23
|
+
"list-grid-14": "awsui_list-grid-14_p8a6i_1ktd8_101",
|
|
24
|
+
"list-grid-15": "awsui_list-grid-15_p8a6i_1ktd8_104",
|
|
25
|
+
"list-grid-16": "awsui_list-grid-16_p8a6i_1ktd8_107",
|
|
26
|
+
"list-grid-17": "awsui_list-grid-17_p8a6i_1ktd8_110",
|
|
27
|
+
"list-grid-18": "awsui_list-grid-18_p8a6i_1ktd8_113",
|
|
28
|
+
"list-grid-19": "awsui_list-grid-19_p8a6i_1ktd8_116",
|
|
29
|
+
"list-grid-20": "awsui_list-grid-20_p8a6i_1ktd8_119",
|
|
30
|
+
"selection-control": "awsui_selection-control_p8a6i_1ktd8_123",
|
|
31
|
+
"loading": "awsui_loading_p8a6i_1ktd8_133",
|
|
32
|
+
"empty": "awsui_empty_p8a6i_1ktd8_134",
|
|
33
|
+
"has-header": "awsui_has-header_p8a6i_1ktd8_141",
|
|
34
|
+
"refresh": "awsui_refresh_p8a6i_1ktd8_144",
|
|
35
|
+
"card-header": "awsui_card-header_p8a6i_1ktd8_160",
|
|
36
|
+
"card-header-inner": "awsui_card-header-inner_p8a6i_1ktd8_169",
|
|
37
|
+
"card-header-inner-selectable": "awsui_card-header-inner-selectable_p8a6i_1ktd8_172",
|
|
38
|
+
"card-selected": "awsui_card-selected_p8a6i_1ktd8_175",
|
|
39
|
+
"section": "awsui_section_p8a6i_1ktd8_179",
|
|
40
|
+
"section-header": "awsui_section-header_p8a6i_1ktd8_186",
|
|
41
|
+
"section-content": "awsui_section-content_p8a6i_1ktd8_192",
|
|
42
|
+
"footer-pagination": "awsui_footer-pagination_p8a6i_1ktd8_204"
|
|
42
43
|
};
|
|
43
44
|
|