@cloudscape-design/components-themeable 3.0.166 → 3.0.168
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/code-editor/resizable-box/styles.scss +37 -0
- package/lib/internal/scss/code-editor/styles.scss +1 -29
- package/lib/internal/scss/select/parts/styles.scss +9 -0
- package/lib/internal/scss/table/body-cell/styles.scss +131 -29
- package/lib/internal/scss/table/header-cell/styles.scss +15 -7
- package/lib/internal/template/attribute-editor/additional-info.d.ts +2 -1
- package/lib/internal/template/attribute-editor/additional-info.d.ts.map +1 -1
- package/lib/internal/template/attribute-editor/additional-info.js +4 -2
- package/lib/internal/template/attribute-editor/additional-info.js.map +1 -1
- package/lib/internal/template/attribute-editor/internal.d.ts.map +1 -1
- package/lib/internal/template/attribute-editor/internal.js +5 -2
- package/lib/internal/template/attribute-editor/internal.js.map +1 -1
- package/lib/internal/template/button/internal.d.ts +1 -0
- package/lib/internal/template/button/internal.d.ts.map +1 -1
- package/lib/internal/template/button/internal.js +2 -2
- package/lib/internal/template/button/internal.js.map +1 -1
- package/lib/internal/template/code-editor/index.d.ts.map +1 -1
- package/lib/internal/template/code-editor/index.js +5 -8
- package/lib/internal/template/code-editor/index.js.map +1 -1
- package/lib/internal/template/code-editor/pane.d.ts.map +1 -1
- package/lib/internal/template/code-editor/pane.js +4 -4
- package/lib/internal/template/code-editor/pane.js.map +1 -1
- package/lib/internal/template/code-editor/resizable-box/index.d.ts +9 -0
- package/lib/internal/template/code-editor/resizable-box/index.d.ts.map +1 -0
- package/lib/internal/template/code-editor/resizable-box/index.js +44 -0
- package/lib/internal/template/code-editor/resizable-box/index.js.map +1 -0
- package/lib/internal/template/code-editor/resizable-box/styles.css.js +8 -0
- package/lib/internal/template/code-editor/resizable-box/styles.scoped.css +62 -0
- package/lib/internal/template/code-editor/resizable-box/styles.selectors.js +9 -0
- package/lib/internal/template/code-editor/styles.css.js +32 -33
- package/lib/internal/template/code-editor/styles.scoped.css +157 -199
- package/lib/internal/template/code-editor/styles.selectors.js +32 -33
- package/lib/internal/template/form-field/interfaces.d.ts +10 -0
- package/lib/internal/template/form-field/interfaces.d.ts.map +1 -1
- package/lib/internal/template/form-field/interfaces.js.map +1 -1
- package/lib/internal/template/form-field/internal.d.ts +1 -1
- package/lib/internal/template/form-field/internal.d.ts.map +1 -1
- package/lib/internal/template/form-field/internal.js +5 -4
- package/lib/internal/template/form-field/internal.js.map +1 -1
- package/lib/internal/template/input/internal.d.ts.map +1 -1
- package/lib/internal/template/input/internal.js +16 -4
- package/lib/internal/template/input/internal.js.map +1 -1
- package/lib/internal/template/internal/components/live-region/index.d.ts +2 -1
- package/lib/internal/template/internal/components/live-region/index.d.ts.map +1 -1
- package/lib/internal/template/internal/components/live-region/index.js +29 -6
- package/lib/internal/template/internal/components/live-region/index.js.map +1 -1
- package/lib/internal/template/internal/context/form-field-context.d.ts +6 -2
- package/lib/internal/template/internal/context/form-field-context.d.ts.map +1 -1
- package/lib/internal/template/internal/context/form-field-context.js +7 -1
- package/lib/internal/template/internal/context/form-field-context.js.map +1 -1
- package/lib/internal/template/internal/environment.js +1 -1
- package/lib/internal/template/internal/types.d.ts +9 -0
- package/lib/internal/template/internal/types.d.ts.map +1 -1
- package/lib/internal/template/internal/types.js +0 -2
- package/lib/internal/template/internal/types.js.map +1 -1
- package/lib/internal/template/package.json +0 -1
- package/lib/internal/template/progress-bar/index.d.ts.map +1 -1
- package/lib/internal/template/progress-bar/index.js +14 -3
- package/lib/internal/template/progress-bar/index.js.map +1 -1
- package/lib/internal/template/select/parts/styles.css.js +9 -9
- package/lib/internal/template/select/parts/styles.scoped.css +27 -9
- package/lib/internal/template/select/parts/styles.selectors.js +9 -9
- package/lib/internal/template/table/body-cell/click-away.d.ts +9 -0
- package/lib/internal/template/table/body-cell/click-away.d.ts.map +1 -0
- package/lib/internal/template/table/body-cell/click-away.js +38 -0
- package/lib/internal/template/table/body-cell/click-away.js.map +1 -0
- package/lib/internal/template/table/body-cell/index.d.ts +10 -19
- package/lib/internal/template/table/body-cell/index.d.ts.map +1 -1
- package/lib/internal/template/table/body-cell/index.js +49 -9
- package/lib/internal/template/table/body-cell/index.js.map +1 -1
- package/lib/internal/template/table/body-cell/inline-editor.d.ts +12 -0
- package/lib/internal/template/table/body-cell/inline-editor.d.ts.map +1 -0
- package/lib/internal/template/table/body-cell/inline-editor.js +88 -0
- package/lib/internal/template/table/body-cell/inline-editor.js.map +1 -0
- package/lib/internal/template/table/body-cell/styles.css.js +18 -12
- package/lib/internal/template/table/body-cell/styles.scoped.css +229 -46
- package/lib/internal/template/table/body-cell/styles.selectors.js +18 -12
- package/lib/internal/template/table/body-cell/td-element.d.ts +21 -0
- package/lib/internal/template/table/body-cell/td-element.d.ts.map +1 -0
- package/lib/internal/template/table/body-cell/td-element.js +11 -0
- package/lib/internal/template/table/body-cell/td-element.js.map +1 -0
- package/lib/internal/template/table/body-cell/use-stable-scroll-position.d.ts +17 -0
- package/lib/internal/template/table/body-cell/use-stable-scroll-position.d.ts.map +1 -0
- package/lib/internal/template/table/body-cell/use-stable-scroll-position.js +48 -0
- package/lib/internal/template/table/body-cell/use-stable-scroll-position.js.map +1 -0
- package/lib/internal/template/table/header-cell/index.d.ts +8 -7
- package/lib/internal/template/table/header-cell/index.d.ts.map +1 -1
- package/lib/internal/template/table/header-cell/index.js +6 -2
- package/lib/internal/template/table/header-cell/index.js.map +1 -1
- package/lib/internal/template/table/header-cell/styles.css.js +19 -18
- package/lib/internal/template/table/header-cell/styles.scoped.css +40 -35
- package/lib/internal/template/table/header-cell/styles.selectors.js +19 -18
- package/lib/internal/template/table/interfaces.d.ts +73 -6
- 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 +68 -18
- package/lib/internal/template/table/internal.js.map +1 -1
- package/lib/internal/template/table/thead.d.ts.map +1 -1
- package/lib/internal/template/table/thead.js +1 -1
- package/lib/internal/template/table/thead.js.map +1 -1
- package/lib/internal/template/table/use-table-focus-navigation.d.ts +16 -0
- package/lib/internal/template/table/use-table-focus-navigation.d.ts.map +1 -0
- package/lib/internal/template/table/use-table-focus-navigation.js +131 -0
- package/lib/internal/template/table/use-table-focus-navigation.js.map +1 -0
- package/lib/internal/template/tabs/index.d.ts +1 -1
- package/lib/internal/template/tabs/index.d.ts.map +1 -1
- package/lib/internal/template/tabs/index.js +2 -2
- package/lib/internal/template/tabs/index.js.map +1 -1
- package/lib/internal/template/tabs/interfaces.d.ts +14 -0
- package/lib/internal/template/tabs/interfaces.d.ts.map +1 -1
- package/lib/internal/template/tabs/interfaces.js.map +1 -1
- package/lib/internal/template/tabs/tab-header-bar.d.ts +2 -1
- package/lib/internal/template/tabs/tab-header-bar.d.ts.map +1 -1
- package/lib/internal/template/tabs/tab-header-bar.js +3 -7
- package/lib/internal/template/tabs/tab-header-bar.js.map +1 -1
- package/lib/internal/template/tag-editor/index.d.ts.map +1 -1
- package/lib/internal/template/tag-editor/index.js +1 -1
- package/lib/internal/template/tag-editor/index.js.map +1 -1
- package/lib/internal/template/test-utils/dom/table/index.d.ts +4 -0
- package/lib/internal/template/test-utils/dom/table/index.js +21 -5
- package/lib/internal/template/test-utils/dom/table/index.js.map +1 -1
- package/lib/internal/template/test-utils/selectors/table/index.d.ts +4 -0
- package/lib/internal/template/test-utils/selectors/table/index.js +21 -5
- package/lib/internal/template/test-utils/selectors/table/index.js.map +1 -1
- package/lib/internal/template/test-utils/tsconfig.tsbuildinfo +1 -1
- package/package.json +1 -1
- package/lib/internal/template/code-editor/resize-handler.d.ts +0 -3
- package/lib/internal/template/code-editor/resize-handler.d.ts.map +0 -1
- package/lib/internal/template/code-editor/resize-handler.js +0 -7
- package/lib/internal/template/code-editor/resize-handler.js.map +0 -1
- package/lib/internal/template/internal/components/dynamic-aria-live/index.d.ts +0 -28
- package/lib/internal/template/internal/components/dynamic-aria-live/index.d.ts.map +0 -1
- package/lib/internal/template/internal/components/dynamic-aria-live/index.js +0 -38
- package/lib/internal/template/internal/components/dynamic-aria-live/index.js.map +0 -1
- package/lib/internal/template/internal/components/live-region/aria-liva-tag.d.ts +0 -13
- package/lib/internal/template/internal/components/live-region/aria-liva-tag.d.ts.map +0 -1
- package/lib/internal/template/internal/components/live-region/aria-liva-tag.js +0 -18
- package/lib/internal/template/internal/components/live-region/aria-liva-tag.js.map +0 -1
- package/lib/internal/template/internal/components/live-region/utils.d.ts +0 -8
- package/lib/internal/template/internal/components/live-region/utils.d.ts.map +0 -1
- package/lib/internal/template/internal/components/live-region/utils.js +0 -24
- package/lib/internal/template/internal/components/live-region/utils.js.map +0 -1
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { __assign, __rest } from "tslib";
|
|
2
2
|
// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
|
3
3
|
// SPDX-License-Identifier: Apache-2.0
|
|
4
|
-
import React from 'react';
|
|
4
|
+
import React, { useEffect, useMemo, useState } from 'react';
|
|
5
5
|
import clsx from 'clsx';
|
|
6
6
|
import styles from './styles.css.js';
|
|
7
7
|
import { getBaseProps } from '../internal/base-component';
|
|
@@ -11,7 +11,9 @@ import { useUniqueId } from '../internal/hooks/use-unique-id';
|
|
|
11
11
|
import { Progress, ResultState, SmallText } from './internal';
|
|
12
12
|
import { applyDisplayName } from '../internal/utils/apply-display-name';
|
|
13
13
|
import useBaseComponent from '../internal/hooks/use-base-component';
|
|
14
|
-
import
|
|
14
|
+
import { throttle } from '../internal/utils/throttle';
|
|
15
|
+
import LiveRegion from '../internal/components/live-region';
|
|
16
|
+
var ASSERTION_FREQUENCY = 5000; // interval in ms between progress announcements
|
|
15
17
|
export default function ProgressBar(_a) {
|
|
16
18
|
var _b = _a.value, value = _b === void 0 ? 0 : _b, _c = _a.status, status = _c === void 0 ? 'in-progress' : _c, _d = _a.variant, variant = _d === void 0 ? 'standalone' : _d, resultButtonText = _a.resultButtonText, label = _a.label, description = _a.description, additionalInfo = _a.additionalInfo, resultText = _a.resultText, onResultButtonClick = _a.onResultButtonClick, rest = __rest(_a, ["value", "status", "variant", "resultButtonText", "label", "description", "additionalInfo", "resultText", "onResultButtonClick"]);
|
|
17
19
|
var __internalRootRef = useBaseComponent('ProgressBar').__internalRootRef;
|
|
@@ -20,6 +22,15 @@ export default function ProgressBar(_a) {
|
|
|
20
22
|
var labelId = "".concat(generatedName, "-label");
|
|
21
23
|
var isInFlash = variant === 'flash';
|
|
22
24
|
var isInProgressState = status === 'in-progress';
|
|
25
|
+
var _e = useState(''), assertion = _e[0], setAssertion = _e[1];
|
|
26
|
+
var throttledAssertion = useMemo(function () {
|
|
27
|
+
return throttle(function (value) {
|
|
28
|
+
setAssertion("".concat(label !== null && label !== void 0 ? label : '', ": ").concat(value, "%"));
|
|
29
|
+
}, ASSERTION_FREQUENCY);
|
|
30
|
+
}, [label]);
|
|
31
|
+
useEffect(function () {
|
|
32
|
+
throttledAssertion(value);
|
|
33
|
+
}, [throttledAssertion, value]);
|
|
23
34
|
if (isInFlash && resultButtonText) {
|
|
24
35
|
warnOnce('ProgressBar', 'The `resultButtonText` is ignored if you set `variant="flash"`, and the result button is not displayed. Use the `buttonText` property and the `onButtonClick` event listener of the flashbar item in which the progress bar component is embedded.');
|
|
25
36
|
}
|
|
@@ -29,7 +40,7 @@ export default function ProgressBar(_a) {
|
|
|
29
40
|
description && React.createElement(SmallText, { color: isInFlash ? 'inherit' : undefined }, description),
|
|
30
41
|
React.createElement("div", null, isInProgressState ? (React.createElement(React.Fragment, null,
|
|
31
42
|
React.createElement(Progress, { value: value, labelId: labelId, isInFlash: isInFlash }),
|
|
32
|
-
React.createElement(
|
|
43
|
+
React.createElement(LiveRegion, { delay: 0 }, assertion))) : (React.createElement(ResultState, { resultText: resultText, isInFlash: isInFlash, resultButtonText: resultButtonText, status: status, onClick: function () {
|
|
33
44
|
fireNonCancelableEvent(onResultButtonClick);
|
|
34
45
|
} })))),
|
|
35
46
|
additionalInfo && React.createElement(SmallText, { color: isInFlash ? 'inherit' : undefined }, additionalInfo)));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/progress-bar/index.tsx"],"names":[],"mappings":";AAAA,qEAAqE;AACrE,sCAAsC;AACtC,OAAO,KAAK,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/progress-bar/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 React, { useEffect, useMemo, useState } from 'react';\nimport clsx from 'clsx';\n\nimport styles from './styles.css.js';\nimport { getBaseProps } from '../internal/base-component';\nimport { warnOnce } from '../internal/logging';\nimport { ProgressBarProps } from './interfaces';\nimport { fireNonCancelableEvent } from '../internal/events';\nimport { useUniqueId } from '../internal/hooks/use-unique-id';\nimport { Progress, ResultState, SmallText } from './internal';\nimport { applyDisplayName } from '../internal/utils/apply-display-name';\nimport useBaseComponent from '../internal/hooks/use-base-component';\nimport { throttle } from '../internal/utils/throttle';\nimport LiveRegion from '../internal/components/live-region';\n\nconst ASSERTION_FREQUENCY = 5000; // interval in ms between progress announcements\n\nexport { ProgressBarProps };\n\nexport default function ProgressBar({\n value = 0,\n status = 'in-progress',\n variant = 'standalone',\n resultButtonText,\n label,\n description,\n additionalInfo,\n resultText,\n onResultButtonClick,\n ...rest\n}: ProgressBarProps) {\n const { __internalRootRef } = useBaseComponent('ProgressBar');\n const baseProps = getBaseProps(rest);\n const generatedName = useUniqueId('awsui-progress-bar-');\n\n const labelId = `${generatedName}-label`;\n const isInFlash = variant === 'flash';\n const isInProgressState = status === 'in-progress';\n\n const [assertion, setAssertion] = useState('');\n const throttledAssertion = useMemo(() => {\n return throttle((value: ProgressBarProps['value']) => {\n setAssertion(`${label ?? ''}: ${value}%`);\n }, ASSERTION_FREQUENCY);\n }, [label]);\n\n useEffect(() => {\n throttledAssertion(value);\n }, [throttledAssertion, value]);\n\n if (isInFlash && resultButtonText) {\n warnOnce(\n 'ProgressBar',\n 'The `resultButtonText` is ignored if you set `variant=\"flash\"`, and the result button is not displayed. Use the `buttonText` property and the `onButtonClick` event listener of the flashbar item in which the progress bar component is embedded.'\n );\n }\n\n return (\n <div\n {...baseProps}\n className={clsx(baseProps.className, styles.root, variant && styles[variant])}\n ref={__internalRootRef}\n >\n <div className={isInFlash ? styles['flash-container'] : undefined}>\n <div className={clsx(styles['word-wrap'], styles[`label-${variant}`])} id={labelId}>\n {label}\n </div>\n {description && <SmallText color={isInFlash ? 'inherit' : undefined}>{description}</SmallText>}\n <div>\n {isInProgressState ? (\n <>\n <Progress value={value} labelId={labelId} isInFlash={isInFlash} />\n <LiveRegion delay={0}>{assertion}</LiveRegion>\n </>\n ) : (\n <ResultState\n resultText={resultText}\n isInFlash={isInFlash}\n resultButtonText={resultButtonText}\n status={status}\n onClick={() => {\n fireNonCancelableEvent(onResultButtonClick);\n }}\n />\n )}\n </div>\n </div>\n {additionalInfo && <SmallText color={isInFlash ? 'inherit' : undefined}>{additionalInfo}</SmallText>}\n </div>\n );\n}\n\napplyDisplayName(ProgressBar, 'ProgressBar');\n"]}
|
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
|
|
2
2
|
import './styles.scoped.css';
|
|
3
3
|
export default {
|
|
4
|
-
"placeholder": "
|
|
5
|
-
"item": "
|
|
6
|
-
"checkbox": "
|
|
7
|
-
"filter": "
|
|
8
|
-
"trigger": "
|
|
9
|
-
"layout-strut": "awsui_layout-
|
|
10
|
-
"list-bottom": "awsui_list-
|
|
11
|
-
"selected-icon": "awsui_selected-
|
|
12
|
-
"show-label-tag": "awsui_show-label-
|
|
4
|
+
"placeholder": "awsui_placeholder_dwuol_1dfho_93",
|
|
5
|
+
"item": "awsui_item_dwuol_1dfho_98",
|
|
6
|
+
"checkbox": "awsui_checkbox_dwuol_1dfho_102",
|
|
7
|
+
"filter": "awsui_filter_dwuol_1dfho_111",
|
|
8
|
+
"trigger": "awsui_trigger_dwuol_1dfho_116",
|
|
9
|
+
"layout-strut": "awsui_layout-strut_dwuol_1dfho_140",
|
|
10
|
+
"list-bottom": "awsui_list-bottom_dwuol_1dfho_146",
|
|
11
|
+
"selected-icon": "awsui_selected-icon_dwuol_1dfho_150",
|
|
12
|
+
"show-label-tag": "awsui_show-label-tag_dwuol_1dfho_154"
|
|
13
13
|
};
|
|
14
14
|
|
|
@@ -90,16 +90,16 @@ surrounding text. (WCAG F73) https://www.w3.org/WAI/WCAG21/Techniques/failures/F
|
|
|
90
90
|
Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
|
91
91
|
SPDX-License-Identifier: Apache-2.0
|
|
92
92
|
*/
|
|
93
|
-
.
|
|
93
|
+
.awsui_placeholder_dwuol_1dfho_93:not(#\9) {
|
|
94
94
|
color: var(--color-text-input-placeholder-rtvjp5, #687078);
|
|
95
95
|
font-style: italic;
|
|
96
96
|
}
|
|
97
97
|
|
|
98
|
-
.
|
|
98
|
+
.awsui_item_dwuol_1dfho_98:not(#\9) {
|
|
99
99
|
display: flex;
|
|
100
100
|
align-items: center;
|
|
101
101
|
}
|
|
102
|
-
.
|
|
102
|
+
.awsui_item_dwuol_1dfho_98 > .awsui_checkbox_dwuol_1dfho_102:not(#\9) {
|
|
103
103
|
position: relative;
|
|
104
104
|
min-height: var(--size-control-eyly4k, 14px);
|
|
105
105
|
min-width: var(--size-control-eyly4k, 14px);
|
|
@@ -108,31 +108,49 @@ surrounding text. (WCAG F73) https://www.w3.org/WAI/WCAG21/Techniques/failures/F
|
|
|
108
108
|
margin-right: var(--space-field-horizontal-z3i1c8, 8px);
|
|
109
109
|
}
|
|
110
110
|
|
|
111
|
-
.
|
|
111
|
+
.awsui_filter_dwuol_1dfho_111:not(#\9) {
|
|
112
112
|
z-index: 4;
|
|
113
113
|
flex-shrink: 0;
|
|
114
114
|
}
|
|
115
115
|
|
|
116
|
-
.
|
|
116
|
+
.awsui_trigger_dwuol_1dfho_116:not(#\9) {
|
|
117
117
|
white-space: nowrap;
|
|
118
118
|
overflow: hidden;
|
|
119
119
|
text-overflow: ellipsis;
|
|
120
120
|
}
|
|
121
|
+
.awsui_trigger_dwuol_1dfho_116[data-awsui-focus-visible=true]:not(#\9):focus {
|
|
122
|
+
position: relative;
|
|
123
|
+
}
|
|
124
|
+
.awsui_trigger_dwuol_1dfho_116[data-awsui-focus-visible=true]:not(#\9):focus {
|
|
125
|
+
outline: 2px dotted transparent;
|
|
126
|
+
outline-offset: calc(calc(-1 * var(--space-scaled-xs-6859qs, 8px)) - 1px);
|
|
127
|
+
}
|
|
128
|
+
.awsui_trigger_dwuol_1dfho_116[data-awsui-focus-visible=true]:not(#\9):focus::before {
|
|
129
|
+
content: " ";
|
|
130
|
+
display: block;
|
|
131
|
+
position: absolute;
|
|
132
|
+
left: calc(-1 * calc(-1 * var(--space-scaled-xs-6859qs, 8px)));
|
|
133
|
+
top: calc(-1 * calc(-1 * var(--space-scaled-xxs-95dhkm, 4px)));
|
|
134
|
+
width: calc(100% + 2 * calc(-1 * var(--space-scaled-xs-6859qs, 8px)));
|
|
135
|
+
height: calc(100% + 2 * calc(-1 * var(--space-scaled-xxs-95dhkm, 4px)));
|
|
136
|
+
border-radius: var(--border-radius-control-default-focus-ring-hekmgc, 2px);
|
|
137
|
+
box-shadow: 0 0 0 2px var(--color-border-item-focused-n5kd8g, #0073bb);
|
|
138
|
+
}
|
|
121
139
|
|
|
122
|
-
.awsui_layout-
|
|
140
|
+
.awsui_layout-strut_dwuol_1dfho_140:not(#\9) {
|
|
123
141
|
width: 100%;
|
|
124
142
|
position: relative;
|
|
125
143
|
transform: translate3d(0, 0, 0);
|
|
126
144
|
}
|
|
127
145
|
|
|
128
|
-
.awsui_list-
|
|
146
|
+
.awsui_list-bottom_dwuol_1dfho_146:not(#\9) {
|
|
129
147
|
/* used in unit-tests */
|
|
130
148
|
}
|
|
131
149
|
|
|
132
|
-
.awsui_selected-
|
|
150
|
+
.awsui_selected-icon_dwuol_1dfho_150:not(#\9) {
|
|
133
151
|
color: var(--color-border-item-focused-n5kd8g, #0073bb);
|
|
134
152
|
}
|
|
135
153
|
|
|
136
|
-
.awsui_show-label-
|
|
154
|
+
.awsui_show-label-tag_dwuol_1dfho_154 > .awsui_selected-icon_dwuol_1dfho_150:not(#\9) {
|
|
137
155
|
padding-left: var(--space-scaled-s-cu1hzn, 12px);
|
|
138
156
|
}
|
|
@@ -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
|
-
"placeholder": "
|
|
6
|
-
"item": "
|
|
7
|
-
"checkbox": "
|
|
8
|
-
"filter": "
|
|
9
|
-
"trigger": "
|
|
10
|
-
"layout-strut": "awsui_layout-
|
|
11
|
-
"list-bottom": "awsui_list-
|
|
12
|
-
"selected-icon": "awsui_selected-
|
|
13
|
-
"show-label-tag": "awsui_show-label-
|
|
5
|
+
"placeholder": "awsui_placeholder_dwuol_1dfho_93",
|
|
6
|
+
"item": "awsui_item_dwuol_1dfho_98",
|
|
7
|
+
"checkbox": "awsui_checkbox_dwuol_1dfho_102",
|
|
8
|
+
"filter": "awsui_filter_dwuol_1dfho_111",
|
|
9
|
+
"trigger": "awsui_trigger_dwuol_1dfho_116",
|
|
10
|
+
"layout-strut": "awsui_layout-strut_dwuol_1dfho_140",
|
|
11
|
+
"list-bottom": "awsui_list-bottom_dwuol_1dfho_146",
|
|
12
|
+
"selected-icon": "awsui_selected-icon_dwuol_1dfho_150",
|
|
13
|
+
"show-label-tag": "awsui_show-label-tag_dwuol_1dfho_154"
|
|
14
14
|
};
|
|
15
15
|
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
export declare function useClickAway(onClick: () => void): React.MutableRefObject<any>;
|
|
3
|
+
interface ClickAwayActive {
|
|
4
|
+
onClick: () => void;
|
|
5
|
+
children: React.ReactNode;
|
|
6
|
+
}
|
|
7
|
+
export declare function ClickAway({ onClick, children }: ClickAwayActive): JSX.Element;
|
|
8
|
+
export {};
|
|
9
|
+
//# sourceMappingURL=click-away.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"click-away.d.ts","sourceRoot":"","sources":["../../../../src/table/body-cell/click-away.tsx"],"names":[],"mappings":"AAEA,OAAO,KAA4B,MAAM,OAAO,CAAC;AAIjD,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,IAAI,+BAgB/C;AAED,UAAU,eAAe;IACvB,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;CAC3B;AACD,wBAAgB,SAAS,CAAC,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAE,eAAe,eAa/D"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
|
2
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
3
|
+
import React, { useEffect, useRef } from 'react';
|
|
4
|
+
import { containsOrEqual } from '../../internal/utils/dom';
|
|
5
|
+
import { useStableEventHandler } from '../../internal/hooks/use-stable-event-handler';
|
|
6
|
+
export function useClickAway(onClick) {
|
|
7
|
+
var awayRef = useRef(null);
|
|
8
|
+
var onClickStable = useStableEventHandler(onClick);
|
|
9
|
+
useEffect(function () {
|
|
10
|
+
function handleClick(event) {
|
|
11
|
+
if (!containsOrEqual(awayRef.current, event.target)) {
|
|
12
|
+
onClickStable();
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
// contains returns wrong result if the next render would remove the element
|
|
16
|
+
// but capture phase happens before the render, so returns correct result
|
|
17
|
+
// Ref: https://github.com/facebook/react/issues/20325
|
|
18
|
+
document.addEventListener('click', handleClick, { capture: true });
|
|
19
|
+
return function () { return document.removeEventListener('click', handleClick, { capture: true }); };
|
|
20
|
+
}, [onClickStable]);
|
|
21
|
+
return awayRef;
|
|
22
|
+
}
|
|
23
|
+
export function ClickAway(_a) {
|
|
24
|
+
var onClick = _a.onClick, children = _a.children;
|
|
25
|
+
var onClickStable = useStableEventHandler(onClick);
|
|
26
|
+
var ref = useRef(null);
|
|
27
|
+
useEffect(function () {
|
|
28
|
+
function handleClick(event) {
|
|
29
|
+
if (!containsOrEqual(ref.current, event.target)) {
|
|
30
|
+
onClickStable();
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
document.addEventListener('click', handleClick, true);
|
|
34
|
+
return function () { return document.removeEventListener('click', handleClick, true); };
|
|
35
|
+
}, [onClickStable]);
|
|
36
|
+
return React.createElement("span", { ref: ref }, children);
|
|
37
|
+
}
|
|
38
|
+
//# sourceMappingURL=click-away.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"click-away.js","sourceRoot":"","sources":["../../../../src/table/body-cell/click-away.tsx"],"names":[],"mappings":"AAAA,qEAAqE;AACrE,sCAAsC;AACtC,OAAO,KAAK,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,OAAO,CAAC;AACjD,OAAO,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAC3D,OAAO,EAAE,qBAAqB,EAAE,MAAM,+CAA+C,CAAC;AAEtF,MAAM,UAAU,YAAY,CAAC,OAAmB;IAC9C,IAAM,OAAO,GAAG,MAAM,CAAM,IAAI,CAAC,CAAC;IAClC,IAAM,aAAa,GAAG,qBAAqB,CAAC,OAAO,CAAC,CAAC;IACrD,SAAS,CAAC;QACR,SAAS,WAAW,CAAC,KAAY;YAC/B,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,OAAO,EAAE,KAAK,CAAC,MAAc,CAAC,EAAE;gBAC3D,aAAa,EAAE,CAAC;aACjB;QACH,CAAC;QACD,4EAA4E;QAC5E,yEAAyE;QACzE,sDAAsD;QACtD,QAAQ,CAAC,gBAAgB,CAAC,OAAO,EAAE,WAAW,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;QACnE,OAAO,cAAM,OAAA,QAAQ,CAAC,mBAAmB,CAAC,OAAO,EAAE,WAAW,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,EAArE,CAAqE,CAAC;IACrF,CAAC,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC;IACpB,OAAO,OAAO,CAAC;AACjB,CAAC;AAMD,MAAM,UAAU,SAAS,CAAC,EAAsC;QAApC,OAAO,aAAA,EAAE,QAAQ,cAAA;IAC3C,IAAM,aAAa,GAAG,qBAAqB,CAAC,OAAO,CAAC,CAAC;IACrD,IAAM,GAAG,GAAG,MAAM,CAAkB,IAAI,CAAC,CAAC;IAC1C,SAAS,CAAC;QACR,SAAS,WAAW,CAAC,KAAY;YAC/B,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,OAAO,EAAE,KAAK,CAAC,MAAc,CAAC,EAAE;gBACvD,aAAa,EAAE,CAAC;aACjB;QACH,CAAC;QACD,QAAQ,CAAC,gBAAgB,CAAC,OAAO,EAAE,WAAW,EAAE,IAAI,CAAC,CAAC;QACtD,OAAO,cAAM,OAAA,QAAQ,CAAC,mBAAmB,CAAC,OAAO,EAAE,WAAW,EAAE,IAAI,CAAC,EAAxD,CAAwD,CAAC;IACxE,CAAC,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC;IACpB,OAAO,8BAAM,GAAG,EAAE,GAAG,IAAG,QAAQ,CAAQ,CAAC;AAC3C,CAAC","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 { containsOrEqual } from '../../internal/utils/dom';\nimport { useStableEventHandler } from '../../internal/hooks/use-stable-event-handler';\n\nexport function useClickAway(onClick: () => void) {\n const awayRef = useRef<any>(null);\n const onClickStable = useStableEventHandler(onClick);\n useEffect(() => {\n function handleClick(event: Event) {\n if (!containsOrEqual(awayRef.current, event.target as Node)) {\n onClickStable();\n }\n }\n // contains returns wrong result if the next render would remove the element\n // but capture phase happens before the render, so returns correct result\n // Ref: https://github.com/facebook/react/issues/20325\n document.addEventListener('click', handleClick, { capture: true });\n return () => document.removeEventListener('click', handleClick, { capture: true });\n }, [onClickStable]);\n return awayRef;\n}\n\ninterface ClickAwayActive {\n onClick: () => void;\n children: React.ReactNode;\n}\nexport function ClickAway({ onClick, children }: ClickAwayActive) {\n const onClickStable = useStableEventHandler(onClick);\n const ref = useRef<HTMLSpanElement>(null);\n useEffect(() => {\n function handleClick(event: Event) {\n if (!containsOrEqual(ref.current, event.target as Node)) {\n onClickStable();\n }\n }\n document.addEventListener('click', handleClick, true);\n return () => document.removeEventListener('click', handleClick, true);\n }, [onClickStable]);\n return <span ref={ref}>{children}</span>;\n}\n"]}
|
|
@@ -1,25 +1,16 @@
|
|
|
1
|
-
import React from 'react';
|
|
2
1
|
import { TableProps } from '../interfaces';
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
style?: React.CSSProperties;
|
|
6
|
-
wrapLines: boolean | undefined;
|
|
7
|
-
isFirstRow: boolean;
|
|
8
|
-
isLastRow: boolean;
|
|
9
|
-
isEvenRow?: boolean;
|
|
10
|
-
stripedRows?: boolean;
|
|
11
|
-
isSelected: boolean;
|
|
12
|
-
isNextSelected: boolean;
|
|
13
|
-
isPrevSelected: boolean;
|
|
14
|
-
children?: React.ReactNode;
|
|
15
|
-
hasSelection?: boolean;
|
|
16
|
-
hasFooter?: boolean;
|
|
17
|
-
}
|
|
18
|
-
export declare function TableBodyCell({ className, style, children, wrapLines, isFirstRow, isLastRow, isSelected, isNextSelected, isPrevSelected, isEvenRow, stripedRows, hasSelection, hasFooter, }: TableBodyCellProps): JSX.Element;
|
|
19
|
-
interface TableBodyCellContentProps<ItemType> extends TableBodyCellProps {
|
|
2
|
+
import { TableTdElementProps } from './td-element';
|
|
3
|
+
interface TableBodyCellProps<ItemType> extends TableTdElementProps {
|
|
20
4
|
column: TableProps.ColumnDefinition<ItemType>;
|
|
21
5
|
item: ItemType;
|
|
6
|
+
isEditing: boolean;
|
|
7
|
+
onEditStart: () => void;
|
|
8
|
+
onEditEnd: () => void;
|
|
9
|
+
submitEdit?: TableProps.SubmitEditFunction<ItemType>;
|
|
10
|
+
ariaLabels: TableProps['ariaLabels'];
|
|
22
11
|
}
|
|
23
|
-
export declare function
|
|
12
|
+
export declare function TableBodyCell<ItemType>({ isEditable, ...rest }: TableBodyCellProps<ItemType> & {
|
|
13
|
+
isEditable: boolean;
|
|
14
|
+
}): JSX.Element;
|
|
24
15
|
export {};
|
|
25
16
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/table/body-cell/index.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/table/body-cell/index.tsx"],"names":[],"mappings":"AASA,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,OAAO,EAAkB,mBAAmB,EAAE,MAAM,cAAc,CAAC;AAenE,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,WAAW,EAAE,MAAM,IAAI,CAAC;IACxB,SAAS,EAAE,MAAM,IAAI,CAAC;IACtB,UAAU,CAAC,EAAE,UAAU,CAAC,kBAAkB,CAAC,QAAQ,CAAC,CAAC;IACrD,UAAU,EAAE,UAAU,CAAC,YAAY,CAAC,CAAC;CACtC;AAsFD,wBAAgB,aAAa,CAAC,QAAQ,EAAE,EACtC,UAAU,EACV,GAAG,IAAI,EACR,EAAE,kBAAkB,CAAC,QAAQ,CAAC,GAAG;IAAE,UAAU,EAAE,OAAO,CAAA;CAAE,eAMxD"}
|
|
@@ -3,15 +3,55 @@ import { __assign, __rest } from "tslib";
|
|
|
3
3
|
// SPDX-License-Identifier: Apache-2.0
|
|
4
4
|
import clsx from 'clsx';
|
|
5
5
|
import styles from './styles.css.js';
|
|
6
|
-
import React from 'react';
|
|
7
|
-
import
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
6
|
+
import React, { useCallback, useRef } from 'react';
|
|
7
|
+
import useFocusVisible from '../../internal/hooks/focus-visible';
|
|
8
|
+
import { useEffectOnUpdate } from '../../internal/hooks/use-effect-on-update';
|
|
9
|
+
import Button from '../../button/internal';
|
|
10
|
+
import { TableTdElement } from './td-element';
|
|
11
|
+
import { InlineEditor } from './inline-editor';
|
|
12
|
+
import { useStableScrollPosition } from './use-stable-scroll-position';
|
|
13
|
+
var readonlyState = Object.freeze({
|
|
14
|
+
isEditing: false,
|
|
15
|
+
currentValue: undefined,
|
|
16
|
+
/* istanbul ignore next */
|
|
17
|
+
setValue: function () { }
|
|
18
|
+
});
|
|
19
|
+
var submitHandlerFallback = function () {
|
|
20
|
+
throw new Error('The function `handleSubmit` is required for editable columns');
|
|
21
|
+
};
|
|
22
|
+
function TableCellEditable(_a) {
|
|
23
|
+
var _b;
|
|
24
|
+
var className = _a.className, item = _a.item, column = _a.column, isEditing = _a.isEditing, onEditStart = _a.onEditStart, onEditEnd = _a.onEditEnd, submitEdit = _a.submitEdit, ariaLabels = _a.ariaLabels, isVisualRefresh = _a.isVisualRefresh, rest = __rest(_a, ["className", "item", "column", "isEditing", "onEditStart", "onEditEnd", "submitEdit", "ariaLabels", "isVisualRefresh"]);
|
|
25
|
+
var editActivateRef = useRef(null);
|
|
26
|
+
var cellRef = useRef(null);
|
|
27
|
+
var focusVisible = useFocusVisible();
|
|
28
|
+
var _c = useStableScrollPosition(cellRef), storeScrollPosition = _c.storeScrollPosition, restoreScrollPosition = _c.restoreScrollPosition;
|
|
29
|
+
var handleEditStart = function () {
|
|
30
|
+
storeScrollPosition();
|
|
31
|
+
if (!isEditing) {
|
|
32
|
+
onEditStart();
|
|
33
|
+
}
|
|
34
|
+
};
|
|
35
|
+
var scheduleRestoreScrollPosition = useCallback(function () { return setTimeout(restoreScrollPosition, 0); }, [restoreScrollPosition]);
|
|
36
|
+
var tdNativeAttributes = __assign(__assign({}, focusVisible), { onFocus: scheduleRestoreScrollPosition, 'data-inline-editing-active': isEditing.toString() });
|
|
37
|
+
useEffectOnUpdate(function () {
|
|
38
|
+
if (!isEditing && editActivateRef.current) {
|
|
39
|
+
editActivateRef.current.focus({ preventScroll: true });
|
|
40
|
+
}
|
|
41
|
+
var timer = scheduleRestoreScrollPosition();
|
|
42
|
+
return function () { return clearTimeout(timer); };
|
|
43
|
+
}, [isEditing, scheduleRestoreScrollPosition]);
|
|
44
|
+
return (React.createElement(TableTdElement, __assign({}, rest, { nativeAttributes: tdNativeAttributes, className: clsx(className, styles['body-cell-editable'], isEditing && styles['body-cell-edit-active'], isVisualRefresh && styles['is-visual-refresh']), onClick: handleEditStart, ref: cellRef }), isEditing ? (React.createElement(InlineEditor, { ariaLabels: ariaLabels, column: column, item: item, onEditEnd: onEditEnd, submitEdit: submitEdit !== null && submitEdit !== void 0 ? submitEdit : submitHandlerFallback, __onRender: restoreScrollPosition })) : (React.createElement(React.Fragment, null,
|
|
45
|
+
column.cell(item, readonlyState),
|
|
46
|
+
React.createElement("span", { className: styles['body-cell-editor'] },
|
|
47
|
+
React.createElement(Button, { __hideFocusOutline: true, __internalRootRef: editActivateRef, ariaLabel: (_b = ariaLabels === null || ariaLabels === void 0 ? void 0 : ariaLabels.activateEditLabel) === null || _b === void 0 ? void 0 : _b.call(ariaLabels, column), formAction: "none", iconName: "edit", variant: "inline-icon" }))))));
|
|
12
48
|
}
|
|
13
|
-
export function
|
|
14
|
-
var
|
|
15
|
-
|
|
49
|
+
export function TableBodyCell(_a) {
|
|
50
|
+
var isEditable = _a.isEditable, rest = __rest(_a, ["isEditable"]);
|
|
51
|
+
if (isEditable || rest.isEditing) {
|
|
52
|
+
return React.createElement(TableCellEditable, __assign({}, rest));
|
|
53
|
+
}
|
|
54
|
+
var column = rest.column, item = rest.item;
|
|
55
|
+
return React.createElement(TableTdElement, __assign({}, rest), column.cell(item, readonlyState));
|
|
16
56
|
}
|
|
17
57
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/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,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/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, { useCallback, useRef } from 'react';\nimport useFocusVisible from '../../internal/hooks/focus-visible';\nimport { useEffectOnUpdate } from '../../internal/hooks/use-effect-on-update';\nimport Button from '../../button/internal';\nimport { ButtonProps } from '../../button/interfaces';\nimport { TableProps } from '../interfaces';\nimport { TableTdElement, TableTdElementProps } from './td-element';\nimport { InlineEditor } from './inline-editor';\nimport { useStableScrollPosition } from './use-stable-scroll-position';\n\nconst readonlyState = Object.freeze({\n isEditing: false,\n currentValue: undefined,\n /* istanbul ignore next */\n setValue: () => {},\n});\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 onEditStart: () => void;\n onEditEnd: () => 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 ...rest\n}: TableBodyCellProps<ItemType>) {\n const editActivateRef = useRef<ButtonProps.Ref>(null);\n const cellRef = useRef<HTMLTableCellElement>(null);\n const focusVisible = useFocusVisible();\n const { storeScrollPosition, restoreScrollPosition } = useStableScrollPosition(cellRef);\n\n const handleEditStart = () => {\n storeScrollPosition();\n if (!isEditing) {\n onEditStart();\n }\n };\n\n const scheduleRestoreScrollPosition = useCallback(\n () => setTimeout(restoreScrollPosition, 0),\n [restoreScrollPosition]\n );\n\n const tdNativeAttributes = {\n ...(focusVisible as Record<string, string>),\n onFocus: scheduleRestoreScrollPosition,\n 'data-inline-editing-active': isEditing.toString(),\n };\n\n useEffectOnUpdate(() => {\n if (!isEditing && editActivateRef.current) {\n editActivateRef.current.focus({ preventScroll: true });\n }\n const timer = scheduleRestoreScrollPosition();\n return () => clearTimeout(timer);\n }, [isEditing, scheduleRestoreScrollPosition]);\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 isVisualRefresh && styles['is-visual-refresh']\n )}\n onClick={handleEditStart}\n ref={cellRef}\n >\n {isEditing ? (\n <InlineEditor\n ariaLabels={ariaLabels}\n column={column}\n item={item}\n onEditEnd={onEditEnd}\n submitEdit={submitEdit ?? submitHandlerFallback}\n __onRender={restoreScrollPosition}\n />\n ) : (\n <>\n {column.cell(item, readonlyState)}\n <span className={styles['body-cell-editor']}>\n <Button\n __hideFocusOutline={true}\n __internalRootRef={editActivateRef}\n ariaLabel={ariaLabels?.activateEditLabel?.(column)}\n formAction=\"none\"\n iconName=\"edit\"\n variant=\"inline-icon\"\n />\n </span>\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, readonlyState)}</TableTdElement>;\n}\n"]}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { TableProps } from '../interfaces';
|
|
2
|
+
interface InlineEditorProps<ItemType> {
|
|
3
|
+
ariaLabels: TableProps['ariaLabels'];
|
|
4
|
+
column: TableProps.ColumnDefinition<ItemType>;
|
|
5
|
+
item: ItemType;
|
|
6
|
+
onEditEnd: () => void;
|
|
7
|
+
submitEdit: TableProps.SubmitEditFunction<ItemType>;
|
|
8
|
+
__onRender?: () => void;
|
|
9
|
+
}
|
|
10
|
+
export declare function InlineEditor<ItemType>({ ariaLabels, item, column, onEditEnd, submitEdit, __onRender, }: InlineEditorProps<ItemType>): JSX.Element;
|
|
11
|
+
export {};
|
|
12
|
+
//# sourceMappingURL=inline-editor.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"inline-editor.d.ts","sourceRoot":"","sources":["../../../../src/table/body-cell/inline-editor.tsx"],"names":[],"mappings":"AAOA,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAO3C,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,MAAM,IAAI,CAAC;IACtB,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,eAqG7B"}
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
import { __awaiter, __generator } from "tslib";
|
|
2
|
+
// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
|
3
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
4
|
+
import React, { useEffect, useState } from 'react';
|
|
5
|
+
import Button from '../../button/internal';
|
|
6
|
+
import FormField from '../../form-field/internal';
|
|
7
|
+
import SpaceBetween from '../../space-between/internal';
|
|
8
|
+
import { useClickAway } from './click-away';
|
|
9
|
+
import styles from './styles.css.js';
|
|
10
|
+
// A function that does nothing
|
|
11
|
+
var noop = function () { return undefined; };
|
|
12
|
+
export function InlineEditor(_a) {
|
|
13
|
+
var _b, _c;
|
|
14
|
+
var ariaLabels = _a.ariaLabels, item = _a.item, column = _a.column, onEditEnd = _a.onEditEnd, submitEdit = _a.submitEdit, __onRender = _a.__onRender;
|
|
15
|
+
var _d = useState(false), currentEditLoading = _d[0], setCurrentEditLoading = _d[1];
|
|
16
|
+
var _e = useState(), currentEditValue = _e[0], setCurrentEditValue = _e[1];
|
|
17
|
+
var cellContext = {
|
|
18
|
+
isEditing: true,
|
|
19
|
+
currentValue: currentEditValue,
|
|
20
|
+
setValue: setCurrentEditValue
|
|
21
|
+
};
|
|
22
|
+
function finishEdit(cancel) {
|
|
23
|
+
if (cancel === void 0) { cancel = false; }
|
|
24
|
+
if (!cancel) {
|
|
25
|
+
setCurrentEditValue(undefined);
|
|
26
|
+
}
|
|
27
|
+
onEditEnd();
|
|
28
|
+
}
|
|
29
|
+
function onSubmitClick(evt) {
|
|
30
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
31
|
+
var e_1;
|
|
32
|
+
return __generator(this, function (_a) {
|
|
33
|
+
switch (_a.label) {
|
|
34
|
+
case 0:
|
|
35
|
+
evt.preventDefault();
|
|
36
|
+
if (currentEditValue === undefined) {
|
|
37
|
+
finishEdit();
|
|
38
|
+
return [2 /*return*/];
|
|
39
|
+
}
|
|
40
|
+
setCurrentEditLoading(true);
|
|
41
|
+
_a.label = 1;
|
|
42
|
+
case 1:
|
|
43
|
+
_a.trys.push([1, 3, , 4]);
|
|
44
|
+
return [4 /*yield*/, submitEdit(item, column, currentEditValue)];
|
|
45
|
+
case 2:
|
|
46
|
+
_a.sent();
|
|
47
|
+
setCurrentEditLoading(false);
|
|
48
|
+
finishEdit();
|
|
49
|
+
return [3 /*break*/, 4];
|
|
50
|
+
case 3:
|
|
51
|
+
e_1 = _a.sent();
|
|
52
|
+
setCurrentEditLoading(false);
|
|
53
|
+
return [3 /*break*/, 4];
|
|
54
|
+
case 4: return [2 /*return*/];
|
|
55
|
+
}
|
|
56
|
+
});
|
|
57
|
+
});
|
|
58
|
+
}
|
|
59
|
+
function onCancel() {
|
|
60
|
+
if (currentEditLoading) {
|
|
61
|
+
return;
|
|
62
|
+
}
|
|
63
|
+
finishEdit(true);
|
|
64
|
+
}
|
|
65
|
+
function handleEscape(event) {
|
|
66
|
+
if (event.key === 'Escape') {
|
|
67
|
+
onCancel();
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
var clickAwayRef = useClickAway(onCancel);
|
|
71
|
+
useEffect(function () {
|
|
72
|
+
if (__onRender) {
|
|
73
|
+
var timer_1 = setTimeout(__onRender, 1);
|
|
74
|
+
return function () { return clearTimeout(timer_1); };
|
|
75
|
+
}
|
|
76
|
+
}, [__onRender]);
|
|
77
|
+
// asserting non-undefined editConfig here because this component is unreachable otherwise
|
|
78
|
+
var _f = column.editConfig, _g = _f.ariaLabel, ariaLabel = _g === void 0 ? undefined : _g, _h = _f.validation, validation = _h === void 0 ? noop : _h, errorIconAriaLabel = _f.errorIconAriaLabel;
|
|
79
|
+
return (React.createElement("form", { ref: clickAwayRef, onSubmit: onSubmitClick, onKeyDown: handleEscape, className: styles['body-cell-editor-form'] },
|
|
80
|
+
React.createElement(FormField, { stretch: true, label: ariaLabel, __hideLabel: true, __disableGutters: true, __useReactAutofocus: true, i18nStrings: { errorIconAriaLabel: errorIconAriaLabel }, errorText: validation(item, currentEditValue) },
|
|
81
|
+
React.createElement("div", { className: styles['body-cell-editor-row'] },
|
|
82
|
+
column.cell(item, cellContext),
|
|
83
|
+
React.createElement("span", { className: styles['body-cell-editor-controls'] },
|
|
84
|
+
React.createElement(SpaceBetween, { direction: "horizontal", size: "xxs" },
|
|
85
|
+
!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,
|
|
86
|
+
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 })))))));
|
|
87
|
+
}
|
|
88
|
+
//# sourceMappingURL=inline-editor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"inline-editor.js","sourceRoot":"","sources":["../../../../src/table/body-cell/inline-editor.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, useState } from 'react';\nimport Button from '../../button/internal';\nimport FormField from '../../form-field/internal';\nimport SpaceBetween from '../../space-between/internal';\nimport { useClickAway } from './click-away';\nimport { TableProps } from '../interfaces';\nimport styles from './styles.css.js';\nimport { Optional } from '../../internal/types';\n\n// A function that does nothing\nconst noop = () => undefined;\n\ninterface InlineEditorProps<ItemType> {\n ariaLabels: TableProps['ariaLabels'];\n column: TableProps.ColumnDefinition<ItemType>;\n item: ItemType;\n onEditEnd: () => void;\n submitEdit: TableProps.SubmitEditFunction<ItemType>;\n __onRender?: () => void;\n}\n\nexport function InlineEditor<ItemType>({\n ariaLabels,\n item,\n column,\n onEditEnd,\n submitEdit,\n __onRender,\n}: InlineEditorProps<ItemType>) {\n const [currentEditLoading, setCurrentEditLoading] = useState(false);\n const [currentEditValue, setCurrentEditValue] = useState<Optional<any>>();\n\n const cellContext = {\n isEditing: true,\n currentValue: currentEditValue,\n setValue: setCurrentEditValue,\n };\n\n function finishEdit(cancel = false) {\n if (!cancel) {\n setCurrentEditValue(undefined);\n }\n onEditEnd();\n }\n\n async function onSubmitClick(evt: React.FormEvent) {\n evt.preventDefault();\n if (currentEditValue === undefined) {\n finishEdit();\n return;\n }\n\n setCurrentEditLoading(true);\n try {\n await submitEdit(item, column, currentEditValue);\n setCurrentEditLoading(false);\n finishEdit();\n } catch (e) {\n setCurrentEditLoading(false);\n }\n }\n\n function onCancel() {\n if (currentEditLoading) {\n return;\n }\n finishEdit(true);\n }\n\n function handleEscape(event: React.KeyboardEvent): void {\n if (event.key === 'Escape') {\n onCancel();\n }\n }\n\n const clickAwayRef = useClickAway(onCancel);\n\n useEffect(() => {\n if (__onRender) {\n const timer = setTimeout(__onRender, 1);\n return () => clearTimeout(timer);\n }\n }, [__onRender]);\n\n // asserting non-undefined editConfig here because this component is unreachable otherwise\n const { ariaLabel = undefined, validation = noop, errorIconAriaLabel } = column.editConfig!;\n\n return (\n <form\n ref={clickAwayRef}\n onSubmit={onSubmitClick}\n onKeyDown={handleEscape}\n className={styles['body-cell-editor-form']}\n >\n <FormField\n stretch={true}\n label={ariaLabel}\n __hideLabel={true}\n __disableGutters={true}\n __useReactAutofocus={true}\n i18nStrings={{ errorIconAriaLabel }}\n errorText={validation(item, currentEditValue)}\n >\n <div className={styles['body-cell-editor-row']}>\n {column.cell(item, cellContext)}\n <span className={styles['body-cell-editor-controls']}>\n <SpaceBetween direction=\"horizontal\" size=\"xxs\">\n {!currentEditLoading ? (\n <Button\n ariaLabel={ariaLabels?.cancelEditLabel?.(column)}\n formAction=\"none\"\n iconName=\"close\"\n variant=\"inline-icon\"\n onClick={onCancel}\n />\n ) : null}\n <Button\n ariaLabel={ariaLabels?.submitEditLabel?.(column)}\n formAction=\"submit\"\n iconName=\"check\"\n variant=\"inline-icon\"\n loading={currentEditLoading}\n />\n </SpaceBetween>\n </span>\n </div>\n </FormField>\n </form>\n );\n}\n"]}
|
|
@@ -1,17 +1,23 @@
|
|
|
1
1
|
|
|
2
2
|
import './styles.scoped.css';
|
|
3
3
|
export default {
|
|
4
|
-
"body-cell": "awsui_body-
|
|
5
|
-
"body-cell-wrap": "awsui_body-cell-
|
|
6
|
-
"
|
|
7
|
-
"
|
|
8
|
-
"body-cell-
|
|
9
|
-
"
|
|
10
|
-
"
|
|
11
|
-
"body-cell-
|
|
12
|
-
"body-cell-
|
|
13
|
-
"
|
|
14
|
-
"has-
|
|
15
|
-
"
|
|
4
|
+
"body-cell": "awsui_body-cell_c6tup_164cf_93",
|
|
5
|
+
"body-cell-wrap": "awsui_body-cell-wrap_c6tup_164cf_102",
|
|
6
|
+
"is-visual-refresh": "awsui_is-visual-refresh_c6tup_164cf_114",
|
|
7
|
+
"has-striped-rows": "awsui_has-striped-rows_c6tup_164cf_126",
|
|
8
|
+
"body-cell-edit-active": "awsui_body-cell-edit-active_c6tup_164cf_129",
|
|
9
|
+
"body-cell-editable": "awsui_body-cell-editable_c6tup_164cf_129",
|
|
10
|
+
"has-selection": "awsui_has-selection_c6tup_164cf_135",
|
|
11
|
+
"body-cell-first-row": "awsui_body-cell-first-row_c6tup_164cf_141",
|
|
12
|
+
"body-cell-last-row": "awsui_body-cell-last-row_c6tup_164cf_144",
|
|
13
|
+
"body-cell-selected": "awsui_body-cell-selected_c6tup_164cf_144",
|
|
14
|
+
"has-footer": "awsui_has-footer_c6tup_164cf_144",
|
|
15
|
+
"body-cell-shaded": "awsui_body-cell-shaded_c6tup_164cf_154",
|
|
16
|
+
"body-cell-next-selected": "awsui_body-cell-next-selected_c6tup_164cf_176",
|
|
17
|
+
"body-cell-prev-selected": "awsui_body-cell-prev-selected_c6tup_164cf_180",
|
|
18
|
+
"body-cell-editor": "awsui_body-cell-editor_c6tup_164cf_204",
|
|
19
|
+
"body-cell-editor-form": "awsui_body-cell-editor-form_c6tup_164cf_214",
|
|
20
|
+
"body-cell-editor-row": "awsui_body-cell-editor-row_c6tup_164cf_223",
|
|
21
|
+
"body-cell-editor-controls": "awsui_body-cell-editor-controls_c6tup_164cf_233"
|
|
16
22
|
};
|
|
17
23
|
|