@cloudscape-design/components-themeable 3.0.267 → 3.0.269
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/table/body-cell/styles.scss +162 -0
- package/lib/internal/template/attribute-editor/row.d.ts.map +1 -1
- package/lib/internal/template/attribute-editor/row.js +3 -1
- package/lib/internal/template/attribute-editor/row.js.map +1 -1
- package/lib/internal/template/cards/styles.css.js +37 -37
- package/lib/internal/template/cards/styles.scoped.css +52 -52
- package/lib/internal/template/cards/styles.selectors.js +37 -37
- package/lib/internal/template/code-editor/index.d.ts.map +1 -1
- package/lib/internal/template/code-editor/index.js +1 -14
- package/lib/internal/template/code-editor/index.js.map +1 -1
- package/lib/internal/template/code-editor/pane.d.ts +1 -2
- package/lib/internal/template/code-editor/pane.d.ts.map +1 -1
- package/lib/internal/template/code-editor/pane.js +8 -3
- package/lib/internal/template/code-editor/pane.js.map +1 -1
- package/lib/internal/template/code-editor/status-bar.d.ts +3 -3
- package/lib/internal/template/code-editor/status-bar.d.ts.map +1 -1
- package/lib/internal/template/code-editor/status-bar.js +5 -3
- package/lib/internal/template/code-editor/status-bar.js.map +1 -1
- package/lib/internal/template/internal/base-component/styles.scoped.css +9 -7
- package/lib/internal/template/internal/components/button-trigger/styles.css.js +9 -9
- package/lib/internal/template/internal/components/button-trigger/styles.scoped.css +24 -24
- package/lib/internal/template/internal/components/button-trigger/styles.selectors.js +9 -9
- package/lib/internal/template/internal/components/filtering-token/styles.css.js +7 -7
- package/lib/internal/template/internal/components/filtering-token/styles.scoped.css +15 -15
- package/lib/internal/template/internal/components/filtering-token/styles.selectors.js +7 -7
- package/lib/internal/template/internal/environment.js +1 -1
- package/lib/internal/template/modal/internal.d.ts +1 -1
- package/lib/internal/template/modal/internal.d.ts.map +1 -1
- package/lib/internal/template/modal/internal.js +24 -15
- package/lib/internal/template/modal/internal.js.map +1 -1
- package/lib/internal/template/table/body-cell/index.d.ts +2 -1
- package/lib/internal/template/table/body-cell/index.d.ts.map +1 -1
- package/lib/internal/template/table/body-cell/index.js +9 -4
- package/lib/internal/template/table/body-cell/index.js.map +1 -1
- package/lib/internal/template/table/body-cell/inline-editor.d.ts +1 -1
- package/lib/internal/template/table/body-cell/inline-editor.d.ts.map +1 -1
- package/lib/internal/template/table/body-cell/inline-editor.js +5 -3
- package/lib/internal/template/table/body-cell/inline-editor.js.map +1 -1
- package/lib/internal/template/table/body-cell/styles.css.js +40 -18
- package/lib/internal/template/table/body-cell/styles.scoped.css +226 -56
- package/lib/internal/template/table/body-cell/styles.selectors.js +40 -18
- package/lib/internal/template/table/header-cell/index.js +1 -1
- package/lib/internal/template/table/header-cell/index.js.map +1 -1
- package/lib/internal/template/table/interfaces.d.ts +6 -0
- package/lib/internal/template/table/interfaces.d.ts.map +1 -1
- package/lib/internal/template/table/interfaces.js.map +1 -1
- package/lib/internal/template/table/internal.d.ts.map +1 -1
- package/lib/internal/template/table/internal.js +20 -18
- package/lib/internal/template/table/internal.js.map +1 -1
- package/lib/internal/template/table/selection-control/index.d.ts +2 -8
- package/lib/internal/template/table/selection-control/index.d.ts.map +1 -1
- package/lib/internal/template/table/selection-control/index.js.map +1 -1
- package/lib/internal/template/table/table-wrapper.d.ts +13 -0
- package/lib/internal/template/table/table-wrapper.d.ts.map +1 -0
- package/lib/internal/template/table/table-wrapper.js +15 -0
- package/lib/internal/template/table/table-wrapper.js.map +1 -0
- package/lib/internal/template/table/thead.d.ts +2 -2
- package/lib/internal/template/table/thead.d.ts.map +1 -1
- package/lib/internal/template/table/thead.js +3 -3
- package/lib/internal/template/table/thead.js.map +1 -1
- package/lib/internal/template/table/use-column-widths.js +1 -1
- package/lib/internal/template/table/use-column-widths.js.map +1 -1
- package/lib/internal/template/table/use-selection.d.ts +12 -18
- package/lib/internal/template/table/use-selection.d.ts.map +1 -1
- package/lib/internal/template/table/use-selection.js +20 -12
- package/lib/internal/template/table/use-selection.js.map +1 -1
- package/lib/internal/template/table/use-table-focus-navigation.d.ts.map +1 -1
- package/lib/internal/template/table/use-table-focus-navigation.js +9 -34
- package/lib/internal/template/table/use-table-focus-navigation.js.map +1 -1
- package/lib/internal/template/test-utils/dom/table/index.d.ts +3 -0
- package/lib/internal/template/test-utils/dom/table/index.js +16 -15
- package/lib/internal/template/test-utils/dom/table/index.js.map +1 -1
- package/lib/internal/template/test-utils/selectors/table/index.d.ts +3 -0
- package/lib/internal/template/test-utils/selectors/table/index.js +16 -15
- package/lib/internal/template/test-utils/selectors/table/index.js.map +1 -1
- package/lib/internal/template/test-utils/tsconfig.tsbuildinfo +1 -1
- package/lib/internal/template/tiles/styles.css.js +28 -28
- package/lib/internal/template/tiles/styles.scoped.css +69 -69
- package/lib/internal/template/tiles/styles.selectors.js +28 -28
- package/lib/internal/template/token-group/styles.css.js +7 -7
- package/lib/internal/template/token-group/styles.scoped.css +17 -17
- package/lib/internal/template/token-group/styles.selectors.js +7 -7
- package/package.json +1 -1
- package/lib/internal/scss/table/header-cell/styles.scss +0 -160
- package/lib/internal/template/table/header-cell/styles.css.js +0 -24
- package/lib/internal/template/table/header-cell/styles.scoped.css +0 -252
- package/lib/internal/template/table/header-cell/styles.selectors.js +0 -25
|
@@ -94,16 +94,16 @@ surrounding text. (WCAG F73) https://www.w3.org/WAI/WCAG21/Techniques/failures/F
|
|
|
94
94
|
Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
|
95
95
|
SPDX-License-Identifier: Apache-2.0
|
|
96
96
|
*/
|
|
97
|
-
.awsui_button-
|
|
97
|
+
.awsui_button-trigger_18eso_170ad_97 > .awsui_arrow_18eso_170ad_97:not(#\9) {
|
|
98
98
|
transition: transform var(--motion-duration-rotate-180-ofa1ir, 135ms) var(--motion-easing-rotate-180-3rbbga, cubic-bezier(0.165, 0.84, 0.44, 1));
|
|
99
99
|
}
|
|
100
100
|
@media (prefers-reduced-motion: reduce) {
|
|
101
|
-
.awsui_button-
|
|
101
|
+
.awsui_button-trigger_18eso_170ad_97 > .awsui_arrow_18eso_170ad_97:not(#\9) {
|
|
102
102
|
animation: none;
|
|
103
103
|
transition: none;
|
|
104
104
|
}
|
|
105
105
|
}
|
|
106
|
-
.awsui-motion-disabled .awsui_button-
|
|
106
|
+
.awsui-motion-disabled .awsui_button-trigger_18eso_170ad_97 > .awsui_arrow_18eso_170ad_97:not(#\9), .awsui-mode-entering .awsui_button-trigger_18eso_170ad_97 > .awsui_arrow_18eso_170ad_97:not(#\9) {
|
|
107
107
|
animation: none;
|
|
108
108
|
transition: none;
|
|
109
109
|
}
|
|
@@ -112,7 +112,7 @@ surrounding text. (WCAG F73) https://www.w3.org/WAI/WCAG21/Techniques/failures/F
|
|
|
112
112
|
Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
|
113
113
|
SPDX-License-Identifier: Apache-2.0
|
|
114
114
|
*/
|
|
115
|
-
.awsui_button-
|
|
115
|
+
.awsui_button-trigger_18eso_170ad_97:not(#\9) {
|
|
116
116
|
/* stylelint-disable-next-line plugin/no-unsupported-browser-features */
|
|
117
117
|
border-collapse: separate;
|
|
118
118
|
border-spacing: 0;
|
|
@@ -160,58 +160,58 @@ surrounding text. (WCAG F73) https://www.w3.org/WAI/WCAG21/Techniques/failures/F
|
|
|
160
160
|
border: var(--border-field-width-y6x4sn, 1px) solid var(--color-border-input-default-t7b5of, #879596);
|
|
161
161
|
min-height: var(--size-vertical-input-ikahdk, 32px);
|
|
162
162
|
}
|
|
163
|
-
.awsui_button-
|
|
163
|
+
.awsui_button-trigger_18eso_170ad_97.awsui_has-caret_18eso_170ad_137:not(#\9) {
|
|
164
164
|
padding-right: var(--space-field-icon-offset-alfd6o, 32px);
|
|
165
165
|
}
|
|
166
|
-
.awsui_button-
|
|
166
|
+
.awsui_button-trigger_18eso_170ad_97 > .awsui_placeholder_18eso_170ad_140:not(#\9) {
|
|
167
167
|
color: var(--color-text-input-placeholder-rtvjp5, #687078);
|
|
168
168
|
font-style: italic;
|
|
169
169
|
}
|
|
170
|
-
.awsui_button-
|
|
170
|
+
.awsui_button-trigger_18eso_170ad_97 > .awsui_arrow_18eso_170ad_97:not(#\9) {
|
|
171
171
|
position: absolute;
|
|
172
172
|
right: var(--space-field-horizontal-z3i1c8, 8px);
|
|
173
173
|
top: calc(50% - var(--font-body-m-line-height-i7xxvv, 22px) / 2);
|
|
174
174
|
color: var(--color-text-button-inline-icon-default-qhj7jl, #545b64);
|
|
175
175
|
}
|
|
176
|
-
.awsui_button-
|
|
176
|
+
.awsui_button-trigger_18eso_170ad_97:not(#\9):hover > .awsui_arrow_18eso_170ad_97 {
|
|
177
177
|
color: var(--color-text-button-inline-icon-hover-84mkuo, #16191f);
|
|
178
178
|
}
|
|
179
|
-
.awsui_button-
|
|
179
|
+
.awsui_button-trigger_18eso_170ad_97.awsui_pressed_18eso_170ad_153 > .awsui_arrow_18eso_170ad_97:not(#\9) {
|
|
180
180
|
transform: rotate(-180deg);
|
|
181
181
|
}
|
|
182
|
-
.awsui_button-
|
|
182
|
+
.awsui_button-trigger_18eso_170ad_97.awsui_disabled_18eso_170ad_156:not(#\9) {
|
|
183
183
|
background-color: var(--color-background-input-disabled-5vlksk, #eaeded);
|
|
184
184
|
border: var(--border-field-width-y6x4sn, 1px) solid var(--color-border-input-disabled-ek5o0x, #eaeded);
|
|
185
185
|
color: var(--color-text-input-disabled-zfb02z, #879596);
|
|
186
186
|
cursor: auto;
|
|
187
187
|
}
|
|
188
|
-
.awsui_button-
|
|
188
|
+
.awsui_button-trigger_18eso_170ad_97.awsui_disabled_18eso_170ad_156 > .awsui_arrow_18eso_170ad_97:not(#\9) {
|
|
189
189
|
color: var(--color-text-button-inline-icon-disabled-sesloi, #aab7b8);
|
|
190
190
|
}
|
|
191
|
-
.awsui_button-
|
|
191
|
+
.awsui_button-trigger_18eso_170ad_97.awsui_disabled_18eso_170ad_156.awsui_in-filtering-token_18eso_170ad_165:not(#\9) {
|
|
192
192
|
border-color: var(--color-border-control-disabled-zgidl5, #d5dbdb);
|
|
193
193
|
}
|
|
194
|
-
.awsui_button-
|
|
194
|
+
.awsui_button-trigger_18eso_170ad_97.awsui_disabled_18eso_170ad_156 > .awsui_placeholder_18eso_170ad_140:not(#\9) {
|
|
195
195
|
color: var(--color-text-input-placeholder-disabled-60yf1a, #687078);
|
|
196
196
|
}
|
|
197
|
-
.awsui_button-
|
|
197
|
+
.awsui_button-trigger_18eso_170ad_97.awsui_read-only_18eso_170ad_171:not(#\9) {
|
|
198
198
|
background-color: var(--color-background-input-default-ewlytp, #ffffff);
|
|
199
199
|
border: var(--border-field-width-y6x4sn, 1px) solid var(--color-border-input-disabled-ek5o0x, #eaeded);
|
|
200
200
|
}
|
|
201
|
-
.awsui_button-
|
|
201
|
+
.awsui_button-trigger_18eso_170ad_97:not(#\9):focus {
|
|
202
202
|
outline: none;
|
|
203
203
|
text-decoration: none;
|
|
204
204
|
}
|
|
205
|
-
body[data-awsui-focus-visible=true] .awsui_button-
|
|
205
|
+
body[data-awsui-focus-visible=true] .awsui_button-trigger_18eso_170ad_97:not(#\9):not(.awsui_in-filtering-token_18eso_170ad_165):focus {
|
|
206
206
|
outline: 2px dotted transparent;
|
|
207
207
|
border: var(--border-field-width-y6x4sn, 1px) solid var(--color-border-item-focused-n5kd8g, #0073bb);
|
|
208
208
|
border-radius: var(--border-radius-input-fterib, 2px);
|
|
209
209
|
box-shadow: 0 0 0 var(--border-control-focus-ring-shadow-spread-glnuoy, 1px) var(--color-border-item-focused-n5kd8g, #0073bb);
|
|
210
210
|
}
|
|
211
|
-
.awsui_button-
|
|
211
|
+
.awsui_button-trigger_18eso_170ad_97:not(#\9):not(.awsui_in-filtering-token_18eso_170ad_165):invalid {
|
|
212
212
|
box-shadow: none;
|
|
213
213
|
}
|
|
214
|
-
.awsui_button-
|
|
214
|
+
.awsui_button-trigger_18eso_170ad_97:not(#\9):not(.awsui_in-filtering-token_18eso_170ad_165).awsui_invalid_18eso_170ad_188, .awsui_button-trigger_18eso_170ad_97:not(#\9):not(.awsui_in-filtering-token_18eso_170ad_165).awsui_invalid_18eso_170ad_188:focus {
|
|
215
215
|
color: var(--color-text-status-error-jer77f, #d13212);
|
|
216
216
|
border-color: var(--color-text-status-error-jer77f, #d13212);
|
|
217
217
|
padding-left: calc(
|
|
@@ -219,23 +219,23 @@ body[data-awsui-focus-visible=true] .awsui_button-trigger_18eso_1gx6f_97:not(#\9
|
|
|
219
219
|
);
|
|
220
220
|
border-left-width: var(--border-invalid-width-glmng5, 4px);
|
|
221
221
|
}
|
|
222
|
-
.awsui_button-
|
|
222
|
+
.awsui_button-trigger_18eso_170ad_97:not(#\9):not(.awsui_in-filtering-token_18eso_170ad_165).awsui_invalid_18eso_170ad_188:focus, .awsui_button-trigger_18eso_170ad_97:not(#\9):not(.awsui_in-filtering-token_18eso_170ad_165).awsui_invalid_18eso_170ad_188:focus:focus {
|
|
223
223
|
box-shadow: 0 0 0 var(--border-control-invalid-focus-ring-shadow-spread-6t5p47, 1px) var(--color-border-item-focused-n5kd8g, #0073bb);
|
|
224
224
|
}
|
|
225
|
-
.awsui_button-
|
|
226
|
-
border-color: var(--color-border-item-selected-
|
|
225
|
+
.awsui_button-trigger_18eso_170ad_97.awsui_in-filtering-token_18eso_170ad_165:not(#\9) {
|
|
226
|
+
border-color: var(--color-border-item-selected-592lau, #0073bb);
|
|
227
227
|
border-top-right-radius: 0;
|
|
228
228
|
border-bottom-right-radius: 0;
|
|
229
229
|
height: 100%;
|
|
230
230
|
}
|
|
231
|
-
body[data-awsui-focus-visible=true] .awsui_button-
|
|
231
|
+
body[data-awsui-focus-visible=true] .awsui_button-trigger_18eso_170ad_97.awsui_in-filtering-token_18eso_170ad_165:not(#\9):focus {
|
|
232
232
|
position: relative;
|
|
233
233
|
}
|
|
234
|
-
body[data-awsui-focus-visible=true] .awsui_button-
|
|
234
|
+
body[data-awsui-focus-visible=true] .awsui_button-trigger_18eso_170ad_97.awsui_in-filtering-token_18eso_170ad_165:not(#\9):focus {
|
|
235
235
|
outline: 2px dotted transparent;
|
|
236
236
|
outline-offset: calc(var(--space-filtering-token-operation-select-focus-outline-gutter-0nruvp, 0px) - 1px);
|
|
237
237
|
}
|
|
238
|
-
body[data-awsui-focus-visible=true] .awsui_button-
|
|
238
|
+
body[data-awsui-focus-visible=true] .awsui_button-trigger_18eso_170ad_97.awsui_in-filtering-token_18eso_170ad_165:not(#\9):focus::before {
|
|
239
239
|
content: " ";
|
|
240
240
|
display: block;
|
|
241
241
|
position: absolute;
|
|
@@ -2,14 +2,14 @@
|
|
|
2
2
|
// es-module interop with Babel and Typescript
|
|
3
3
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
4
|
module.exports.default = {
|
|
5
|
-
"button-trigger": "awsui_button-
|
|
6
|
-
"arrow": "
|
|
7
|
-
"has-caret": "awsui_has-
|
|
8
|
-
"placeholder": "
|
|
9
|
-
"pressed": "
|
|
10
|
-
"disabled": "
|
|
11
|
-
"in-filtering-token": "awsui_in-filtering-
|
|
12
|
-
"read-only": "awsui_read-
|
|
13
|
-
"invalid": "
|
|
5
|
+
"button-trigger": "awsui_button-trigger_18eso_170ad_97",
|
|
6
|
+
"arrow": "awsui_arrow_18eso_170ad_97",
|
|
7
|
+
"has-caret": "awsui_has-caret_18eso_170ad_137",
|
|
8
|
+
"placeholder": "awsui_placeholder_18eso_170ad_140",
|
|
9
|
+
"pressed": "awsui_pressed_18eso_170ad_153",
|
|
10
|
+
"disabled": "awsui_disabled_18eso_170ad_156",
|
|
11
|
+
"in-filtering-token": "awsui_in-filtering-token_18eso_170ad_165",
|
|
12
|
+
"read-only": "awsui_read-only_18eso_170ad_171",
|
|
13
|
+
"invalid": "awsui_invalid_18eso_170ad_188"
|
|
14
14
|
};
|
|
15
15
|
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
|
|
2
2
|
import './styles.scoped.css';
|
|
3
3
|
export default {
|
|
4
|
-
"root": "
|
|
5
|
-
"token": "
|
|
6
|
-
"show-operation": "awsui_show-
|
|
7
|
-
"select": "
|
|
8
|
-
"token-content": "awsui_token-
|
|
9
|
-
"dismiss-button": "awsui_dismiss-
|
|
10
|
-
"token-disabled": "awsui_token-
|
|
4
|
+
"root": "awsui_root_10m3l_pt0za_97",
|
|
5
|
+
"token": "awsui_token_10m3l_pt0za_102",
|
|
6
|
+
"show-operation": "awsui_show-operation_10m3l_pt0za_113",
|
|
7
|
+
"select": "awsui_select_10m3l_pt0za_119",
|
|
8
|
+
"token-content": "awsui_token-content_10m3l_pt0za_123",
|
|
9
|
+
"dismiss-button": "awsui_dismiss-button_10m3l_pt0za_127",
|
|
10
|
+
"token-disabled": "awsui_token-disabled_10m3l_pt0za_163"
|
|
11
11
|
};
|
|
12
12
|
|
|
@@ -94,13 +94,13 @@ surrounding text. (WCAG F73) https://www.w3.org/WAI/WCAG21/Techniques/failures/F
|
|
|
94
94
|
Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
|
95
95
|
SPDX-License-Identifier: Apache-2.0
|
|
96
96
|
*/
|
|
97
|
-
.
|
|
97
|
+
.awsui_root_10m3l_pt0za_97:not(#\9) {
|
|
98
98
|
display: flex;
|
|
99
99
|
align-content: stretch;
|
|
100
100
|
}
|
|
101
101
|
|
|
102
|
-
.
|
|
103
|
-
border: var(--border-field-width-y6x4sn, 1px) solid var(--color-border-item-selected-
|
|
102
|
+
.awsui_token_10m3l_pt0za_102:not(#\9) {
|
|
103
|
+
border: var(--border-field-width-y6x4sn, 1px) solid var(--color-border-item-selected-592lau, #0073bb);
|
|
104
104
|
display: flex;
|
|
105
105
|
align-items: stretch;
|
|
106
106
|
background: var(--color-background-item-selected-fva7ca, #f1faff);
|
|
@@ -110,37 +110,37 @@ surrounding text. (WCAG F73) https://www.w3.org/WAI/WCAG21/Techniques/failures/F
|
|
|
110
110
|
box-sizing: border-box;
|
|
111
111
|
}
|
|
112
112
|
|
|
113
|
-
.awsui_show-
|
|
113
|
+
.awsui_show-operation_10m3l_pt0za_113:not(#\9) {
|
|
114
114
|
border-left: none;
|
|
115
115
|
border-top-left-radius: 0;
|
|
116
116
|
border-bottom-left-radius: 0;
|
|
117
117
|
}
|
|
118
118
|
|
|
119
|
-
.
|
|
119
|
+
.awsui_select_10m3l_pt0za_119:not(#\9) {
|
|
120
120
|
/* used in test-utils */
|
|
121
121
|
}
|
|
122
122
|
|
|
123
|
-
.awsui_token-
|
|
123
|
+
.awsui_token-content_10m3l_pt0za_123:not(#\9) {
|
|
124
124
|
padding: var(--space-scaled-xxs-95dhkm, 4px) var(--space-field-horizontal-z3i1c8, 8px);
|
|
125
125
|
}
|
|
126
126
|
|
|
127
|
-
.awsui_dismiss-
|
|
127
|
+
.awsui_dismiss-button_10m3l_pt0za_127:not(#\9) {
|
|
128
128
|
width: 30px;
|
|
129
129
|
margin: 0;
|
|
130
130
|
border: none;
|
|
131
131
|
padding: 0 var(--space-xxs-ynfts5, 4px);
|
|
132
132
|
color: var(--color-text-interactive-default-9me1cm, #545b64);
|
|
133
133
|
background-color: transparent;
|
|
134
|
-
border-left: var(--border-field-width-y6x4sn, 1px) solid var(--color-border-item-selected-
|
|
134
|
+
border-left: var(--border-field-width-y6x4sn, 1px) solid var(--color-border-item-selected-592lau, #0073bb);
|
|
135
135
|
}
|
|
136
|
-
body[data-awsui-focus-visible=true] .awsui_dismiss-
|
|
136
|
+
body[data-awsui-focus-visible=true] .awsui_dismiss-button_10m3l_pt0za_127:not(#\9):focus {
|
|
137
137
|
position: relative;
|
|
138
138
|
}
|
|
139
|
-
body[data-awsui-focus-visible=true] .awsui_dismiss-
|
|
139
|
+
body[data-awsui-focus-visible=true] .awsui_dismiss-button_10m3l_pt0za_127:not(#\9):focus {
|
|
140
140
|
outline: 2px dotted transparent;
|
|
141
141
|
outline-offset: calc(var(--space-filtering-token-dismiss-button-focus-outline-gutter-25v038, 0px) - 1px);
|
|
142
142
|
}
|
|
143
|
-
body[data-awsui-focus-visible=true] .awsui_dismiss-
|
|
143
|
+
body[data-awsui-focus-visible=true] .awsui_dismiss-button_10m3l_pt0za_127:not(#\9):focus::before {
|
|
144
144
|
content: " ";
|
|
145
145
|
display: block;
|
|
146
146
|
position: absolute;
|
|
@@ -151,22 +151,22 @@ body[data-awsui-focus-visible=true] .awsui_dismiss-button_10m3l_ceye0_127:not(#\
|
|
|
151
151
|
border-radius: var(--border-radius-control-default-focus-ring-hekmgc, 2px);
|
|
152
152
|
box-shadow: 0 0 0 2px var(--color-border-item-focused-n5kd8g, #0073bb);
|
|
153
153
|
}
|
|
154
|
-
.awsui_dismiss-
|
|
154
|
+
.awsui_dismiss-button_10m3l_pt0za_127:not(#\9):focus {
|
|
155
155
|
outline: none;
|
|
156
156
|
text-decoration: none;
|
|
157
157
|
}
|
|
158
|
-
.awsui_dismiss-
|
|
158
|
+
.awsui_dismiss-button_10m3l_pt0za_127:not(#\9):hover {
|
|
159
159
|
cursor: pointer;
|
|
160
160
|
color: var(--color-text-interactive-hover-79wpl9, #16191f);
|
|
161
161
|
}
|
|
162
162
|
|
|
163
|
-
.awsui_token-
|
|
163
|
+
.awsui_token-disabled_10m3l_pt0za_163:not(#\9) {
|
|
164
164
|
border-color: var(--color-border-control-disabled-zgidl5, #d5dbdb);
|
|
165
165
|
background-color: var(--color-background-container-content-o88wxm, #ffffff);
|
|
166
166
|
color: var(--color-text-disabled-pjiy51, #aab7b8);
|
|
167
167
|
pointer-events: none;
|
|
168
168
|
}
|
|
169
|
-
.awsui_token-
|
|
169
|
+
.awsui_token-disabled_10m3l_pt0za_163 > .awsui_dismiss-button_10m3l_pt0za_127:not(#\9) {
|
|
170
170
|
color: var(--color-text-interactive-disabled-jcikk2, #aab7b8);
|
|
171
171
|
border-color: var(--color-border-control-disabled-zgidl5, #d5dbdb);
|
|
172
172
|
}
|
|
@@ -2,12 +2,12 @@
|
|
|
2
2
|
// es-module interop with Babel and Typescript
|
|
3
3
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
4
|
module.exports.default = {
|
|
5
|
-
"root": "
|
|
6
|
-
"token": "
|
|
7
|
-
"show-operation": "awsui_show-
|
|
8
|
-
"select": "
|
|
9
|
-
"token-content": "awsui_token-
|
|
10
|
-
"dismiss-button": "awsui_dismiss-
|
|
11
|
-
"token-disabled": "awsui_token-
|
|
5
|
+
"root": "awsui_root_10m3l_pt0za_97",
|
|
6
|
+
"token": "awsui_token_10m3l_pt0za_102",
|
|
7
|
+
"show-operation": "awsui_show-operation_10m3l_pt0za_113",
|
|
8
|
+
"select": "awsui_select_10m3l_pt0za_119",
|
|
9
|
+
"token-content": "awsui_token-content_10m3l_pt0za_123",
|
|
10
|
+
"dismiss-button": "awsui_dismiss-button_10m3l_pt0za_127",
|
|
11
|
+
"token-disabled": "awsui_token-disabled_10m3l_pt0za_163"
|
|
12
12
|
};
|
|
13
13
|
|
|
@@ -3,6 +3,6 @@ import { InternalBaseComponentProps } from '../internal/hooks/use-base-component
|
|
|
3
3
|
import { ModalProps } from './interfaces';
|
|
4
4
|
import { SomeRequired } from '../internal/types';
|
|
5
5
|
type InternalModalProps = SomeRequired<ModalProps, 'size' | 'closeAriaLabel'> & InternalBaseComponentProps;
|
|
6
|
-
export default function InternalModal({
|
|
6
|
+
export default function InternalModal({ modalRoot, ...rest }: InternalModalProps): JSX.Element;
|
|
7
7
|
export {};
|
|
8
8
|
//# sourceMappingURL=internal.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"internal.d.ts","sourceRoot":"lib/default/","sources":["modal/internal.tsx"],"names":[],"mappings":";AAOA,OAAO,EAAE,0BAA0B,EAAE,MAAM,sCAAsC,CAAC;AAYlF,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE1C,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAKjD,KAAK,kBAAkB,GAAG,YAAY,CAAC,UAAU,EAAE,MAAM,GAAG,gBAAgB,CAAC,GAAG,0BAA0B,CAAC;AAE3G,MAAM,CAAC,OAAO,UAAU,aAAa,CAAC,
|
|
1
|
+
{"version":3,"file":"internal.d.ts","sourceRoot":"lib/default/","sources":["modal/internal.tsx"],"names":[],"mappings":";AAOA,OAAO,EAAE,0BAA0B,EAAE,MAAM,sCAAsC,CAAC;AAYlF,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE1C,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAKjD,KAAK,kBAAkB,GAAG,YAAY,CAAC,UAAU,EAAE,MAAM,GAAG,gBAAgB,CAAC,GAAG,0BAA0B,CAAC;AAE3G,MAAM,CAAC,OAAO,UAAU,aAAa,CAAC,EAAE,SAAS,EAAE,GAAG,IAAI,EAAE,EAAE,kBAAkB,eAM/E"}
|
|
@@ -11,7 +11,7 @@ import { useUniqueId } from '../internal/hooks/use-unique-id';
|
|
|
11
11
|
import { InternalButton } from '../button/internal';
|
|
12
12
|
import InternalHeader from '../header/internal';
|
|
13
13
|
import Portal from '../internal/components/portal';
|
|
14
|
-
import { useContainerBreakpoints } from '../internal/hooks/container-queries';
|
|
14
|
+
import { useContainerBreakpoints, useContainerQuery } from '../internal/hooks/container-queries';
|
|
15
15
|
import { useVisualRefresh } from '../internal/hooks/use-visual-mode';
|
|
16
16
|
import { FormFieldContext } from '../internal/context/form-field-context';
|
|
17
17
|
import { disableBodyScrolling, enableBodyScrolling } from './body-scroll';
|
|
@@ -20,7 +20,14 @@ import FocusLock from '../internal/components/focus-lock';
|
|
|
20
20
|
import { useInternalI18n } from '../internal/i18n/context';
|
|
21
21
|
import { useIntersectionObserver } from '../internal/hooks/use-intersection-observer';
|
|
22
22
|
export default function InternalModal(_a) {
|
|
23
|
-
var {
|
|
23
|
+
var { modalRoot } = _a, rest = __rest(_a, ["modalRoot"]);
|
|
24
|
+
return (React.createElement(Portal, { container: modalRoot },
|
|
25
|
+
React.createElement(InnerModal, Object.assign({}, rest))));
|
|
26
|
+
}
|
|
27
|
+
// Separate component to prevent the Portal from getting in the way of refs, as it needs extra cycles to render the inner components.
|
|
28
|
+
// useContainerQuery needs its targeted element to exist on the first render in order to work properly.
|
|
29
|
+
function InnerModal(_a) {
|
|
30
|
+
var { size, visible, header, children, footer, disableContentPaddings, onDismiss, __internalRootRef = null } = _a, rest = __rest(_a, ["size", "visible", "header", "children", "footer", "disableContentPaddings", "onDismiss", "__internalRootRef"]);
|
|
24
31
|
const instanceUniqueId = useUniqueId();
|
|
25
32
|
const headerId = `${rest.id || instanceUniqueId}-header`;
|
|
26
33
|
const lastMouseDownElementRef = useRef(null);
|
|
@@ -72,18 +79,20 @@ export default function InternalModal(_a) {
|
|
|
72
79
|
// We use an empty div element at the end of the content slot as a sentinel
|
|
73
80
|
// to detect when the user has scrolled to the bottom.
|
|
74
81
|
const { ref: stickySentinelRef, isIntersecting: footerStuck } = useIntersectionObserver();
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
React.createElement("
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
82
|
+
// Add extra scroll padding to account for the height of the sticky footer,
|
|
83
|
+
// to prevent it from covering focused elements.
|
|
84
|
+
const [footerHeight, footerRef] = useContainerQuery(rect => rect.borderBoxHeight);
|
|
85
|
+
return (React.createElement(FormFieldContext.Provider, { value: {} },
|
|
86
|
+
React.createElement("div", Object.assign({}, baseProps, { className: clsx(styles.root, { [styles.hidden]: !visible }, baseProps.className, isRefresh && styles.refresh), role: "dialog", "aria-modal": true, "aria-labelledby": headerId, onMouseDown: onOverlayMouseDown, onClick: onOverlayClick, ref: mergedRef, style: footerHeight ? { scrollPaddingBottom: footerHeight } : undefined }),
|
|
87
|
+
React.createElement(FocusLock, { disabled: !visible, autoFocus: true, restoreFocus: true, className: styles['focus-lock'] },
|
|
88
|
+
React.createElement("div", { className: clsx(styles.dialog, styles[size], styles[`breakpoint-${breakpoint}`], isRefresh && styles.refresh), onKeyDown: escKeyHandler, tabIndex: -1 },
|
|
89
|
+
React.createElement("div", { className: styles.container },
|
|
90
|
+
React.createElement("div", { className: styles.header },
|
|
91
|
+
React.createElement(InternalHeader, { variant: "h2", __disableActionsWrapping: true, actions: React.createElement(InternalButton, { ariaLabel: closeAriaLabel, className: styles['dismiss-control'], variant: "modal-dismiss", iconName: "close", formAction: "none", onClick: onCloseButtonClick }) },
|
|
92
|
+
React.createElement("span", { id: headerId, className: styles['header--text'] }, header))),
|
|
93
|
+
React.createElement("div", { className: clsx(styles.content, { [styles['no-paddings']]: disableContentPaddings }) },
|
|
94
|
+
children,
|
|
95
|
+
React.createElement("div", { ref: stickySentinelRef })),
|
|
96
|
+
footer && (React.createElement("div", { ref: footerRef, className: clsx(styles.footer, footerStuck && styles['footer--stuck']) }, footer))))))));
|
|
88
97
|
}
|
|
89
98
|
//# sourceMappingURL=internal.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"internal.js","sourceRoot":"lib/default/","sources":["modal/internal.tsx"],"names":[],"mappings":"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","sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport React, { useEffect, useRef } from 'react';\nimport { useMergeRefs } from '../internal/hooks/use-merge-refs';\nimport clsx from 'clsx';\n\nimport { getBaseProps } from '../internal/base-component';\nimport { InternalBaseComponentProps } from '../internal/hooks/use-base-component';\nimport { fireNonCancelableEvent } from '../internal/events';\nimport { KeyCode } from '../internal/keycode';\nimport { useUniqueId } from '../internal/hooks/use-unique-id';\nimport { InternalButton } from '../button/internal';\nimport InternalHeader from '../header/internal';\nimport Portal from '../internal/components/portal';\nimport { useContainerBreakpoints } from '../internal/hooks/container-queries';\nimport { useVisualRefresh } from '../internal/hooks/use-visual-mode';\nimport { FormFieldContext } from '../internal/context/form-field-context';\n\nimport { disableBodyScrolling, enableBodyScrolling } from './body-scroll';\nimport { ModalProps } from './interfaces';\nimport styles from './styles.css.js';\nimport { SomeRequired } from '../internal/types';\nimport FocusLock from '../internal/components/focus-lock';\nimport { useInternalI18n } from '../internal/i18n/context';\nimport { useIntersectionObserver } from '../internal/hooks/use-intersection-observer';\n\ntype InternalModalProps = SomeRequired<ModalProps, 'size' | 'closeAriaLabel'> & InternalBaseComponentProps;\n\nexport default function InternalModal({\n size,\n visible,\n header,\n children,\n footer,\n disableContentPaddings,\n onDismiss,\n modalRoot,\n __internalRootRef = null,\n ...rest\n}: InternalModalProps) {\n const instanceUniqueId = useUniqueId();\n const headerId = `${rest.id || instanceUniqueId}-header`;\n const lastMouseDownElementRef = useRef<HTMLElement | null>(null);\n const [breakpoint, breakpointsRef] = useContainerBreakpoints(['xs']);\n\n const i18n = useInternalI18n('modal');\n const closeAriaLabel = i18n('closeAriaLabel', rest.closeAriaLabel);\n\n const refObject = useRef<HTMLDivElement>(null);\n const mergedRef = useMergeRefs(breakpointsRef, refObject, __internalRootRef);\n\n const isRefresh = useVisualRefresh();\n\n const baseProps = getBaseProps(rest);\n\n // enable body scroll and restore focus if unmounting while visible\n useEffect(() => {\n return () => {\n enableBodyScrolling();\n };\n }, []);\n\n // enable / disable body scroll\n useEffect(() => {\n if (visible) {\n disableBodyScrolling();\n } else {\n enableBodyScrolling();\n }\n }, [visible]);\n\n // Because we hide the element with styles (and not actually detach it from DOM), we need to scroll to top\n useEffect(() => {\n if (visible && refObject.current) {\n refObject.current.scrollTop = 0;\n }\n }, [visible]);\n\n const dismiss = (reason: string) => fireNonCancelableEvent(onDismiss, { reason });\n\n const onOverlayMouseDown = (event: React.MouseEvent) => {\n lastMouseDownElementRef.current = event.target as HTMLElement;\n };\n const onOverlayClick = (event: React.MouseEvent) => {\n const overlay = refObject.current;\n const lastClicked = lastMouseDownElementRef.current;\n\n if (event.target === overlay && lastClicked === overlay) {\n dismiss('overlay');\n }\n };\n const onCloseButtonClick = () => dismiss('closeButton');\n const escKeyHandler = (event: React.KeyboardEvent) => {\n if (event.keyCode === KeyCode.escape) {\n dismiss('keyboard');\n }\n };\n\n // We use an empty div element at the end of the content slot as a sentinel\n // to detect when the user has scrolled to the bottom.\n const { ref: stickySentinelRef, isIntersecting: footerStuck } = useIntersectionObserver();\n\n return (\n <Portal container={modalRoot}>\n <FormFieldContext.Provider value={{}}>\n <div\n {...baseProps}\n className={clsx(styles.root, { [styles.hidden]: !visible }, baseProps.className, isRefresh && styles.refresh)}\n role=\"dialog\"\n aria-modal={true}\n aria-labelledby={headerId}\n onMouseDown={onOverlayMouseDown}\n onClick={onOverlayClick}\n ref={mergedRef}\n >\n <FocusLock disabled={!visible} autoFocus={true} restoreFocus={true} className={styles['focus-lock']}>\n <div\n className={clsx(\n styles.dialog,\n styles[size],\n styles[`breakpoint-${breakpoint}`],\n isRefresh && styles.refresh\n )}\n onKeyDown={escKeyHandler}\n tabIndex={-1}\n >\n <div className={styles.container}>\n <div className={styles.header}>\n <InternalHeader\n variant=\"h2\"\n __disableActionsWrapping={true}\n actions={\n <InternalButton\n ariaLabel={closeAriaLabel}\n className={styles['dismiss-control']}\n variant=\"modal-dismiss\"\n iconName=\"close\"\n formAction=\"none\"\n onClick={onCloseButtonClick}\n />\n }\n >\n <span id={headerId} className={styles['header--text']}>\n {header}\n </span>\n </InternalHeader>\n </div>\n <div className={clsx(styles.content, { [styles['no-paddings']]: disableContentPaddings })}>\n {children}\n <div ref={stickySentinelRef} />\n </div>\n {footer && <div className={clsx(styles.footer, footerStuck && styles['footer--stuck'])}>{footer}</div>}\n </div>\n </div>\n </FocusLock>\n </div>\n </FormFieldContext.Provider>\n </Portal>\n );\n}\n"]}
|
|
1
|
+
{"version":3,"file":"internal.js","sourceRoot":"lib/default/","sources":["modal/internal.tsx"],"names":[],"mappings":"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","sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport React, { useEffect, useRef } from 'react';\nimport { useMergeRefs } from '../internal/hooks/use-merge-refs';\nimport clsx from 'clsx';\n\nimport { getBaseProps } from '../internal/base-component';\nimport { InternalBaseComponentProps } from '../internal/hooks/use-base-component';\nimport { fireNonCancelableEvent } from '../internal/events';\nimport { KeyCode } from '../internal/keycode';\nimport { useUniqueId } from '../internal/hooks/use-unique-id';\nimport { InternalButton } from '../button/internal';\nimport InternalHeader from '../header/internal';\nimport Portal from '../internal/components/portal';\nimport { useContainerBreakpoints, useContainerQuery } from '../internal/hooks/container-queries';\nimport { useVisualRefresh } from '../internal/hooks/use-visual-mode';\nimport { FormFieldContext } from '../internal/context/form-field-context';\n\nimport { disableBodyScrolling, enableBodyScrolling } from './body-scroll';\nimport { ModalProps } from './interfaces';\nimport styles from './styles.css.js';\nimport { SomeRequired } from '../internal/types';\nimport FocusLock from '../internal/components/focus-lock';\nimport { useInternalI18n } from '../internal/i18n/context';\nimport { useIntersectionObserver } from '../internal/hooks/use-intersection-observer';\n\ntype InternalModalProps = SomeRequired<ModalProps, 'size' | 'closeAriaLabel'> & InternalBaseComponentProps;\n\nexport default function InternalModal({ modalRoot, ...rest }: InternalModalProps) {\n return (\n <Portal container={modalRoot}>\n <InnerModal {...rest} />\n </Portal>\n );\n}\n\n// Separate component to prevent the Portal from getting in the way of refs, as it needs extra cycles to render the inner components.\n// useContainerQuery needs its targeted element to exist on the first render in order to work properly.\nfunction InnerModal({\n size,\n visible,\n header,\n children,\n footer,\n disableContentPaddings,\n onDismiss,\n __internalRootRef = null,\n ...rest\n}: InternalModalProps) {\n const instanceUniqueId = useUniqueId();\n const headerId = `${rest.id || instanceUniqueId}-header`;\n const lastMouseDownElementRef = useRef<HTMLElement | null>(null);\n const [breakpoint, breakpointsRef] = useContainerBreakpoints(['xs']);\n\n const i18n = useInternalI18n('modal');\n const closeAriaLabel = i18n('closeAriaLabel', rest.closeAriaLabel);\n\n const refObject = useRef<HTMLDivElement>(null);\n const mergedRef = useMergeRefs(breakpointsRef, refObject, __internalRootRef);\n\n const isRefresh = useVisualRefresh();\n\n const baseProps = getBaseProps(rest);\n\n // enable body scroll and restore focus if unmounting while visible\n useEffect(() => {\n return () => {\n enableBodyScrolling();\n };\n }, []);\n\n // enable / disable body scroll\n useEffect(() => {\n if (visible) {\n disableBodyScrolling();\n } else {\n enableBodyScrolling();\n }\n }, [visible]);\n\n // Because we hide the element with styles (and not actually detach it from DOM), we need to scroll to top\n useEffect(() => {\n if (visible && refObject.current) {\n refObject.current.scrollTop = 0;\n }\n }, [visible]);\n\n const dismiss = (reason: string) => fireNonCancelableEvent(onDismiss, { reason });\n\n const onOverlayMouseDown = (event: React.MouseEvent) => {\n lastMouseDownElementRef.current = event.target as HTMLElement;\n };\n const onOverlayClick = (event: React.MouseEvent) => {\n const overlay = refObject.current;\n const lastClicked = lastMouseDownElementRef.current;\n\n if (event.target === overlay && lastClicked === overlay) {\n dismiss('overlay');\n }\n };\n const onCloseButtonClick = () => dismiss('closeButton');\n const escKeyHandler = (event: React.KeyboardEvent) => {\n if (event.keyCode === KeyCode.escape) {\n dismiss('keyboard');\n }\n };\n\n // We use an empty div element at the end of the content slot as a sentinel\n // to detect when the user has scrolled to the bottom.\n const { ref: stickySentinelRef, isIntersecting: footerStuck } = useIntersectionObserver();\n\n // Add extra scroll padding to account for the height of the sticky footer,\n // to prevent it from covering focused elements.\n const [footerHeight, footerRef] = useContainerQuery(rect => rect.borderBoxHeight);\n\n return (\n <FormFieldContext.Provider value={{}}>\n <div\n {...baseProps}\n className={clsx(styles.root, { [styles.hidden]: !visible }, baseProps.className, isRefresh && styles.refresh)}\n role=\"dialog\"\n aria-modal={true}\n aria-labelledby={headerId}\n onMouseDown={onOverlayMouseDown}\n onClick={onOverlayClick}\n ref={mergedRef}\n style={footerHeight ? { scrollPaddingBottom: footerHeight } : undefined}\n >\n <FocusLock disabled={!visible} autoFocus={true} restoreFocus={true} className={styles['focus-lock']}>\n <div\n className={clsx(\n styles.dialog,\n styles[size],\n styles[`breakpoint-${breakpoint}`],\n isRefresh && styles.refresh\n )}\n onKeyDown={escKeyHandler}\n tabIndex={-1}\n >\n <div className={styles.container}>\n <div className={styles.header}>\n <InternalHeader\n variant=\"h2\"\n __disableActionsWrapping={true}\n actions={\n <InternalButton\n ariaLabel={closeAriaLabel}\n className={styles['dismiss-control']}\n variant=\"modal-dismiss\"\n iconName=\"close\"\n formAction=\"none\"\n onClick={onCloseButtonClick}\n />\n }\n >\n <span id={headerId} className={styles['header--text']}>\n {header}\n </span>\n </InternalHeader>\n </div>\n <div className={clsx(styles.content, { [styles['no-paddings']]: disableContentPaddings })}>\n {children}\n <div ref={stickySentinelRef} />\n </div>\n {footer && (\n <div ref={footerRef} className={clsx(styles.footer, footerStuck && styles['footer--stuck'])}>\n {footer}\n </div>\n )}\n </div>\n </div>\n </FocusLock>\n </div>\n </FormFieldContext.Provider>\n );\n}\n"]}
|
|
@@ -5,8 +5,9 @@ interface TableBodyCellProps<ItemType> extends TableTdElementProps {
|
|
|
5
5
|
column: TableProps.ColumnDefinition<ItemType>;
|
|
6
6
|
item: ItemType;
|
|
7
7
|
isEditing: boolean;
|
|
8
|
+
successfulEdit?: boolean;
|
|
8
9
|
onEditStart: () => void;
|
|
9
|
-
onEditEnd: () => void;
|
|
10
|
+
onEditEnd: (cancelled: boolean) => void;
|
|
10
11
|
submitEdit?: TableProps.SubmitEditFunction<ItemType>;
|
|
11
12
|
ariaLabels: TableProps['ariaLabels'];
|
|
12
13
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"lib/default/","sources":["table/body-cell/index.tsx"],"names":[],"mappings":";AAOA,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,OAAO,EAAkB,mBAAmB,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"lib/default/","sources":["table/body-cell/index.tsx"],"names":[],"mappings":";AAOA,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,OAAO,EAAkB,mBAAmB,EAAE,MAAM,cAAc,CAAC;AAQnE,UAAU,kBAAkB,CAAC,QAAQ,CAAE,SAAQ,mBAAmB;IAChE,MAAM,EAAE,UAAU,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC;IAC9C,IAAI,EAAE,QAAQ,CAAC;IACf,SAAS,EAAE,OAAO,CAAC;IACnB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,WAAW,EAAE,MAAM,IAAI,CAAC;IACxB,SAAS,EAAE,CAAC,SAAS,EAAE,OAAO,KAAK,IAAI,CAAC;IACxC,UAAU,CAAC,EAAE,UAAU,CAAC,kBAAkB,CAAC,QAAQ,CAAC,CAAC;IACrD,UAAU,EAAE,UAAU,CAAC,YAAY,CAAC,CAAC;CACtC;AAoFD,wBAAgB,aAAa,CAAC,QAAQ,EAAE,EACtC,UAAU,EACV,GAAG,IAAI,EACR,EAAE,kBAAkB,CAAC,QAAQ,CAAC,GAAG;IAAE,UAAU,EAAE,OAAO,CAAA;CAAE,eAMxD"}
|
|
@@ -8,12 +8,13 @@ import { useEffectOnUpdate } from '../../internal/hooks/use-effect-on-update';
|
|
|
8
8
|
import Icon from '../../icon/internal';
|
|
9
9
|
import { TableTdElement } from './td-element';
|
|
10
10
|
import { InlineEditor } from './inline-editor';
|
|
11
|
+
import LiveRegion from '../../internal/components/live-region/index.js';
|
|
11
12
|
const submitHandlerFallback = () => {
|
|
12
13
|
throw new Error('The function `handleSubmit` is required for editable columns');
|
|
13
14
|
};
|
|
14
15
|
function TableCellEditable(_a) {
|
|
15
|
-
var _b;
|
|
16
|
-
var { className, item, column, isEditing, onEditStart, onEditEnd, submitEdit, ariaLabels, isVisualRefresh } = _a, rest = __rest(_a, ["className", "item", "column", "isEditing", "onEditStart", "onEditEnd", "submitEdit", "ariaLabels", "isVisualRefresh"]);
|
|
16
|
+
var _b, _c, _d;
|
|
17
|
+
var { className, item, column, isEditing, onEditStart, onEditEnd, submitEdit, ariaLabels, isVisualRefresh, successfulEdit = false } = _a, rest = __rest(_a, ["className", "item", "column", "isEditing", "onEditStart", "onEditEnd", "submitEdit", "ariaLabels", "isVisualRefresh", "successfulEdit"]);
|
|
17
18
|
const editActivateRef = useRef(null);
|
|
18
19
|
const tdNativeAttributes = {
|
|
19
20
|
'data-inline-editing-active': isEditing.toString(),
|
|
@@ -27,9 +28,13 @@ function TableCellEditable(_a) {
|
|
|
27
28
|
const [hasHover, setHasHover] = useState(false);
|
|
28
29
|
const [hasFocus, setHasFocus] = useState(false);
|
|
29
30
|
const showIcon = hasHover || hasFocus;
|
|
30
|
-
return (React.createElement(TableTdElement, Object.assign({}, rest, { nativeAttributes: tdNativeAttributes, className: clsx(className, styles['body-cell-editable'], isEditing && styles['body-cell-edit-active'], isVisualRefresh && styles['is-visual-refresh']), onClick: !isEditing ? onEditStart : undefined, onMouseEnter: () => setHasHover(true), onMouseLeave: () => setHasHover(false) }), isEditing ? (React.createElement(InlineEditor, { ariaLabels: ariaLabels, column: column, item: item, onEditEnd: onEditEnd, submitEdit: submitEdit !== null && submitEdit !== void 0 ? submitEdit : submitHandlerFallback })) : (React.createElement(React.Fragment, null,
|
|
31
|
+
return (React.createElement(TableTdElement, Object.assign({}, rest, { nativeAttributes: tdNativeAttributes, className: clsx(className, styles['body-cell-editable'], isEditing && styles['body-cell-edit-active'], successfulEdit && styles['body-cell-has-success'], isVisualRefresh && styles['is-visual-refresh']), onClick: !isEditing ? onEditStart : undefined, onMouseEnter: () => setHasHover(true), onMouseLeave: () => setHasHover(false) }), isEditing ? (React.createElement(InlineEditor, { ariaLabels: ariaLabels, column: column, item: item, onEditEnd: onEditEnd, submitEdit: submitEdit !== null && submitEdit !== void 0 ? submitEdit : submitHandlerFallback })) : (React.createElement(React.Fragment, null,
|
|
31
32
|
column.cell(item),
|
|
32
|
-
|
|
33
|
+
successfulEdit && (React.createElement(React.Fragment, null,
|
|
34
|
+
React.createElement("span", { className: styles['body-cell-success'], "aria-label": (_b = ariaLabels === null || ariaLabels === void 0 ? void 0 : ariaLabels.successfulEditLabel) === null || _b === void 0 ? void 0 : _b.call(ariaLabels, column), role: "img" },
|
|
35
|
+
React.createElement(Icon, { name: "status-positive", variant: "success" })),
|
|
36
|
+
React.createElement(LiveRegion, null, (_c = ariaLabels === null || ariaLabels === void 0 ? void 0 : ariaLabels.successfulEditLabel) === null || _c === void 0 ? void 0 : _c.call(ariaLabels, column)))),
|
|
37
|
+
React.createElement("button", { className: styles['body-cell-editor'], "aria-label": (_d = ariaLabels === null || ariaLabels === void 0 ? void 0 : ariaLabels.activateEditLabel) === null || _d === void 0 ? void 0 : _d.call(ariaLabels, column, item), ref: editActivateRef, onFocus: () => setHasFocus(true), onBlur: () => setHasFocus(false) }, showIcon && React.createElement(Icon, { name: "edit" }))))));
|
|
33
38
|
}
|
|
34
39
|
export function TableBodyCell(_a) {
|
|
35
40
|
var { isEditable } = _a, rest = __rest(_a, ["isEditable"]);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"lib/default/","sources":["table/body-cell/index.tsx"],"names":[],"mappings":";AAAA,qEAAqE;AACrE,sCAAsC;AACtC,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,MAAM,MAAM,iBAAiB,CAAC;AACrC,OAAO,KAAK,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAChD,OAAO,EAAE,iBAAiB,EAAE,MAAM,2CAA2C,CAAC;AAC9E,OAAO,IAAI,MAAM,qBAAqB,CAAC;AAEvC,OAAO,EAAE,cAAc,EAAuB,MAAM,cAAc,CAAC;AACnE,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"lib/default/","sources":["table/body-cell/index.tsx"],"names":[],"mappings":"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","sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport clsx from 'clsx';\nimport styles from './styles.css.js';\nimport React, { useRef, useState } from 'react';\nimport { useEffectOnUpdate } from '../../internal/hooks/use-effect-on-update';\nimport Icon from '../../icon/internal';\nimport { TableProps } from '../interfaces';\nimport { TableTdElement, TableTdElementProps } from './td-element';\nimport { InlineEditor } from './inline-editor';\nimport LiveRegion from '../../internal/components/live-region/index.js';\n\nconst submitHandlerFallback = () => {\n throw new Error('The function `handleSubmit` is required for editable columns');\n};\n\ninterface TableBodyCellProps<ItemType> extends TableTdElementProps {\n column: TableProps.ColumnDefinition<ItemType>;\n item: ItemType;\n isEditing: boolean;\n successfulEdit?: boolean;\n onEditStart: () => void;\n onEditEnd: (cancelled: boolean) => void;\n submitEdit?: TableProps.SubmitEditFunction<ItemType>;\n ariaLabels: TableProps['ariaLabels'];\n}\n\nfunction TableCellEditable<ItemType>({\n className,\n item,\n column,\n isEditing,\n onEditStart,\n onEditEnd,\n submitEdit,\n ariaLabels,\n isVisualRefresh,\n successfulEdit = false,\n ...rest\n}: TableBodyCellProps<ItemType>) {\n const editActivateRef = useRef<HTMLButtonElement>(null);\n const tdNativeAttributes = {\n 'data-inline-editing-active': isEditing.toString(),\n };\n\n useEffectOnUpdate(() => {\n if (!isEditing && editActivateRef.current) {\n editActivateRef.current.focus();\n }\n }, [isEditing]);\n\n // To improve the initial page render performance we only show the edit icon when necessary.\n const [hasHover, setHasHover] = useState(false);\n const [hasFocus, setHasFocus] = useState(false);\n const showIcon = hasHover || hasFocus;\n\n return (\n <TableTdElement\n {...rest}\n nativeAttributes={tdNativeAttributes as TableTdElementProps['nativeAttributes']}\n className={clsx(\n className,\n styles['body-cell-editable'],\n isEditing && styles['body-cell-edit-active'],\n successfulEdit && styles['body-cell-has-success'],\n isVisualRefresh && styles['is-visual-refresh']\n )}\n onClick={!isEditing ? onEditStart : undefined}\n onMouseEnter={() => setHasHover(true)}\n onMouseLeave={() => setHasHover(false)}\n >\n {isEditing ? (\n <InlineEditor\n ariaLabels={ariaLabels}\n column={column}\n item={item}\n onEditEnd={onEditEnd}\n submitEdit={submitEdit ?? submitHandlerFallback}\n />\n ) : (\n <>\n {column.cell(item)}\n {successfulEdit && (\n <>\n <span\n className={styles['body-cell-success']}\n aria-label={ariaLabels?.successfulEditLabel?.(column)}\n role=\"img\"\n >\n <Icon name=\"status-positive\" variant=\"success\" />\n </span>\n <LiveRegion>{ariaLabels?.successfulEditLabel?.(column)}</LiveRegion>\n </>\n )}\n <button\n className={styles['body-cell-editor']}\n aria-label={ariaLabels?.activateEditLabel?.(column, item)}\n ref={editActivateRef}\n onFocus={() => setHasFocus(true)}\n onBlur={() => setHasFocus(false)}\n >\n {showIcon && <Icon name=\"edit\" />}\n </button>\n </>\n )}\n </TableTdElement>\n );\n}\n\nexport function TableBodyCell<ItemType>({\n isEditable,\n ...rest\n}: TableBodyCellProps<ItemType> & { isEditable: boolean }) {\n if (isEditable || rest.isEditing) {\n return <TableCellEditable {...rest} />;\n }\n const { column, item } = rest;\n return <TableTdElement {...rest}>{column.cell(item)}</TableTdElement>;\n}\n"]}
|
|
@@ -4,7 +4,7 @@ interface InlineEditorProps<ItemType> {
|
|
|
4
4
|
ariaLabels: TableProps['ariaLabels'];
|
|
5
5
|
column: TableProps.ColumnDefinition<ItemType>;
|
|
6
6
|
item: ItemType;
|
|
7
|
-
onEditEnd: () => void;
|
|
7
|
+
onEditEnd: (cancelled: boolean) => void;
|
|
8
8
|
submitEdit: TableProps.SubmitEditFunction<ItemType>;
|
|
9
9
|
__onRender?: () => void;
|
|
10
10
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"inline-editor.d.ts","sourceRoot":"lib/default/","sources":["table/body-cell/inline-editor.tsx"],"names":[],"mappings":";AAOA,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"inline-editor.d.ts","sourceRoot":"lib/default/","sources":["table/body-cell/inline-editor.tsx"],"names":[],"mappings":";AAOA,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAS3C,UAAU,iBAAiB,CAAC,QAAQ;IAClC,UAAU,EAAE,UAAU,CAAC,YAAY,CAAC,CAAC;IACrC,MAAM,EAAE,UAAU,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC;IAC9C,IAAI,EAAE,QAAQ,CAAC;IACf,SAAS,EAAE,CAAC,SAAS,EAAE,OAAO,KAAK,IAAI,CAAC;IACxC,UAAU,EAAE,UAAU,CAAC,kBAAkB,CAAC,QAAQ,CAAC,CAAC;IACpD,UAAU,CAAC,EAAE,MAAM,IAAI,CAAC;CACzB;AAED,wBAAgB,YAAY,CAAC,QAAQ,EAAE,EACrC,UAAU,EACV,IAAI,EACJ,MAAM,EACN,SAAS,EACT,UAAU,EACV,UAAU,GACX,EAAE,iBAAiB,CAAC,QAAQ,CAAC,eAkH7B"}
|
|
@@ -8,10 +8,11 @@ import SpaceBetween from '../../space-between/internal';
|
|
|
8
8
|
import { useClickAway } from './click-away';
|
|
9
9
|
import styles from './styles.css.js';
|
|
10
10
|
import FocusLock from '../../internal/components/focus-lock';
|
|
11
|
+
import LiveRegion from '../../internal/components/live-region';
|
|
11
12
|
// A function that does nothing
|
|
12
13
|
const noop = () => undefined;
|
|
13
14
|
export function InlineEditor({ ariaLabels, item, column, onEditEnd, submitEdit, __onRender, }) {
|
|
14
|
-
var _a, _b, _c;
|
|
15
|
+
var _a, _b, _c, _d;
|
|
15
16
|
const [currentEditLoading, setCurrentEditLoading] = useState(false);
|
|
16
17
|
const [currentEditValue, setCurrentEditValue] = useState();
|
|
17
18
|
const focusLockRef = useRef(null);
|
|
@@ -23,7 +24,7 @@ export function InlineEditor({ ariaLabels, item, column, onEditEnd, submitEdit,
|
|
|
23
24
|
if (!cancel) {
|
|
24
25
|
setCurrentEditValue(undefined);
|
|
25
26
|
}
|
|
26
|
-
onEditEnd();
|
|
27
|
+
onEditEnd(cancel);
|
|
27
28
|
}
|
|
28
29
|
function onSubmitClick(evt) {
|
|
29
30
|
var _a;
|
|
@@ -74,6 +75,7 @@ export function InlineEditor({ ariaLabels, item, column, onEditEnd, submitEdit,
|
|
|
74
75
|
React.createElement("span", { className: styles['body-cell-editor-controls'] },
|
|
75
76
|
React.createElement(SpaceBetween, { direction: "horizontal", size: "xxs" },
|
|
76
77
|
!currentEditLoading ? (React.createElement(Button, { ariaLabel: (_b = ariaLabels === null || ariaLabels === void 0 ? void 0 : ariaLabels.cancelEditLabel) === null || _b === void 0 ? void 0 : _b.call(ariaLabels, column), formAction: "none", iconName: "close", variant: "inline-icon", onClick: onCancel })) : null,
|
|
77
|
-
React.createElement(Button, { ariaLabel: (_c = ariaLabels === null || ariaLabels === void 0 ? void 0 : ariaLabels.submitEditLabel) === null || _c === void 0 ? void 0 : _c.call(ariaLabels, column), formAction: "submit", iconName: "check", variant: "inline-icon", loading: currentEditLoading }))
|
|
78
|
+
React.createElement(Button, { ariaLabel: (_c = ariaLabels === null || ariaLabels === void 0 ? void 0 : ariaLabels.submitEditLabel) === null || _c === void 0 ? void 0 : _c.call(ariaLabels, column), formAction: "submit", iconName: "check", variant: "inline-icon", loading: currentEditLoading })),
|
|
79
|
+
React.createElement(LiveRegion, null, currentEditLoading ? (_d = ariaLabels === null || ariaLabels === void 0 ? void 0 : ariaLabels.submittingEditText) === null || _d === void 0 ? void 0 : _d.call(ariaLabels, column) : ''))))))));
|
|
78
80
|
}
|
|
79
81
|
//# sourceMappingURL=inline-editor.js.map
|