@cloudscape-design/components 3.0.338 → 3.0.340

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.
Files changed (57) hide show
  1. package/alert/index.d.ts.map +1 -1
  2. package/alert/index.js +36 -1
  3. package/alert/index.js.map +1 -1
  4. package/app-layout/drawer/index.js +6 -5
  5. package/app-layout/drawer/index.js.map +1 -1
  6. package/app-layout/drawer/interfaces.d.ts +6 -3
  7. package/app-layout/drawer/interfaces.d.ts.map +1 -1
  8. package/app-layout/drawer/interfaces.js.map +1 -1
  9. package/app-layout/drawer/styles.css.js +10 -10
  10. package/app-layout/drawer/styles.scoped.css +32 -35
  11. package/app-layout/drawer/styles.selectors.js +10 -10
  12. package/app-layout/mobile-toolbar/index.d.ts.map +1 -1
  13. package/app-layout/mobile-toolbar/index.js +6 -5
  14. package/app-layout/mobile-toolbar/index.js.map +1 -1
  15. package/app-layout/mobile-toolbar/styles.css.js +8 -6
  16. package/app-layout/mobile-toolbar/styles.scoped.css +11 -23
  17. package/app-layout/mobile-toolbar/styles.selectors.js +8 -6
  18. package/app-layout/toggles/index.d.ts +3 -1
  19. package/app-layout/toggles/index.d.ts.map +1 -1
  20. package/app-layout/toggles/index.js +6 -3
  21. package/app-layout/toggles/index.js.map +1 -1
  22. package/app-layout/toggles/interfaces.d.ts +3 -2
  23. package/app-layout/toggles/interfaces.d.ts.map +1 -1
  24. package/app-layout/toggles/interfaces.js.map +1 -1
  25. package/app-layout/toggles/styles.css.js +2 -1
  26. package/app-layout/toggles/styles.scoped.css +31 -1
  27. package/app-layout/toggles/styles.selectors.js +2 -1
  28. package/app-layout/visual-refresh/drawers.d.ts.map +1 -1
  29. package/app-layout/visual-refresh/drawers.js +2 -2
  30. package/app-layout/visual-refresh/drawers.js.map +1 -1
  31. package/app-layout/visual-refresh/trigger-button.d.ts +1 -0
  32. package/app-layout/visual-refresh/trigger-button.d.ts.map +1 -1
  33. package/app-layout/visual-refresh/trigger-button.js +2 -2
  34. package/app-layout/visual-refresh/trigger-button.js.map +1 -1
  35. package/internal/analytics/components/analytics-funnel.js +2 -2
  36. package/internal/analytics/components/analytics-funnel.js.map +1 -1
  37. package/internal/analytics/hooks/use-funnel.js +1 -1
  38. package/internal/analytics/hooks/use-funnel.js.map +1 -1
  39. package/internal/base-component/styles.scoped.css +0 -5
  40. package/internal/environment.js +1 -1
  41. package/internal/generated/theming/index.cjs +0 -27
  42. package/internal/generated/theming/index.js +0 -27
  43. package/internal/manifest.json +1 -1
  44. package/package.json +1 -1
  45. package/table/body-cell/index.d.ts.map +1 -1
  46. package/table/body-cell/index.js +22 -3
  47. package/table/body-cell/index.js.map +1 -1
  48. package/table/body-cell/styles.css.js +28 -28
  49. package/table/body-cell/styles.scoped.css +93 -77
  50. package/table/body-cell/styles.selectors.js +28 -28
  51. package/test-utils/dom/app-layout/index.d.ts +1 -0
  52. package/test-utils/dom/app-layout/index.js +3 -0
  53. package/test-utils/dom/app-layout/index.js.map +1 -1
  54. package/test-utils/selectors/app-layout/index.d.ts +1 -0
  55. package/test-utils/selectors/app-layout/index.js +3 -0
  56. package/test-utils/selectors/app-layout/index.js.map +1 -1
  57. package/test-utils/tsconfig.tsbuildinfo +1 -1
@@ -1216,10 +1216,6 @@ export var preset = {
1216
1216
  "light": "{colorGreyTransparentHeavy}",
1217
1217
  "dark": "{colorGreyTransparentHeavy}"
1218
1218
  },
1219
- "colorShadowLayoutToggle": {
1220
- "light": "{colorGrey300}",
1221
- "dark": "{colorGrey650}"
1222
- },
1223
1219
  "colorShadowMedium": {
1224
1220
  "light": "{colorGreyTransparent}",
1225
1221
  "dark": "{colorGreyTransparent}"
@@ -3233,10 +3229,6 @@ export var preset = {
3233
3229
  "light": "{colorGreyTransparentHeavy}",
3234
3230
  "dark": "{colorGreyTransparentHeavy}"
3235
3231
  },
3236
- "colorShadowLayoutToggle": {
3237
- "light": "{colorGrey650}",
3238
- "dark": "{colorGrey650}"
3239
- },
3240
3232
  "colorShadowMedium": {
3241
3233
  "light": "{colorGreyTransparent}",
3242
3234
  "dark": "{colorGreyTransparent}"
@@ -4235,10 +4227,6 @@ export var preset = {
4235
4227
  "light": "{colorGreyTransparentHeavy}",
4236
4228
  "dark": "{colorGreyTransparentHeavy}"
4237
4229
  },
4238
- "colorShadowLayoutToggle": {
4239
- "light": "{colorGrey650}",
4240
- "dark": "{colorGrey650}"
4241
- },
4242
4230
  "colorShadowMedium": {
4243
4231
  "light": "{colorGreyTransparent}",
4244
4232
  "dark": "{colorGreyTransparent}"
@@ -5169,10 +5157,6 @@ export var preset = {
5169
5157
  "light": "{colorGreyTransparentHeavy}",
5170
5158
  "dark": "{colorGreyTransparentHeavy}"
5171
5159
  },
5172
- "colorShadowLayoutToggle": {
5173
- "light": "{colorGrey300}",
5174
- "dark": "{colorGrey650}"
5175
- },
5176
5160
  "colorShadowMedium": {
5177
5161
  "light": "{colorGreyTransparent}",
5178
5162
  "dark": "{colorGreyTransparent}"
@@ -6103,10 +6087,6 @@ export var preset = {
6103
6087
  "light": "{colorGreyTransparentHeavy}",
6104
6088
  "dark": "{colorGreyTransparentHeavy}"
6105
6089
  },
6106
- "colorShadowLayoutToggle": {
6107
- "light": "{colorGrey300}",
6108
- "dark": "{colorGrey650}"
6109
- },
6110
6090
  "colorShadowMedium": {
6111
6091
  "light": "{colorGreyTransparent}",
6112
6092
  "dark": "{colorGreyTransparent}"
@@ -7037,10 +7017,6 @@ export var preset = {
7037
7017
  "light": "{colorGreyTransparentHeavy}",
7038
7018
  "dark": "{colorGreyTransparentHeavy}"
7039
7019
  },
7040
- "colorShadowLayoutToggle": {
7041
- "light": "{colorGrey650}",
7042
- "dark": "{colorGrey650}"
7043
- },
7044
7020
  "colorShadowMedium": {
7045
7021
  "light": "{colorGreyTransparent}",
7046
7022
  "dark": "{colorGreyTransparent}"
@@ -7736,7 +7712,6 @@ export var preset = {
7736
7712
  "colorForegroundControlDefault": "color",
7737
7713
  "colorForegroundControlDisabled": "color",
7738
7714
  "colorShadowDefault": "color",
7739
- "colorShadowLayoutToggle": "color",
7740
7715
  "colorShadowMedium": "color",
7741
7716
  "colorShadowSide": "color",
7742
7717
  "colorStrokeChartLine": "color",
@@ -8815,7 +8790,6 @@ export var preset = {
8815
8790
  "colorForegroundControlDefault": "color-foreground-control-default",
8816
8791
  "colorForegroundControlDisabled": "color-foreground-control-disabled",
8817
8792
  "colorShadowDefault": "color-shadow-default",
8818
- "colorShadowLayoutToggle": "color-shadow-layout-toggle",
8819
8793
  "colorShadowMedium": "color-shadow-medium",
8820
8794
  "colorShadowSide": "color-shadow-side",
8821
8795
  "colorStrokeChartLine": "color-stroke-chart-line",
@@ -9492,7 +9466,6 @@ export var preset = {
9492
9466
  "colorForegroundControlDefault": "--color-foreground-control-default-rsunm6",
9493
9467
  "colorForegroundControlDisabled": "--color-foreground-control-disabled-f2499o",
9494
9468
  "colorShadowDefault": "--color-shadow-default-ukle9p",
9495
- "colorShadowLayoutToggle": "--color-shadow-layout-toggle-u6bbly",
9496
9469
  "colorShadowMedium": "--color-shadow-medium-ncb0av",
9497
9470
  "colorShadowSide": "--color-shadow-side-priy5p",
9498
9471
  "colorStrokeChartLine": "--color-stroke-chart-line-7sdstd",
@@ -1,3 +1,3 @@
1
1
  {
2
- "commit": "f2157d08391a051b016df6a34ee27029a2b2084d"
2
+ "commit": "d85259aaebc05fdf1fb4a2b939e95d2e034a6767"
3
3
  }
package/package.json CHANGED
@@ -136,7 +136,7 @@
136
136
  "./internal/base-component/index.js",
137
137
  "./internal/base-component/styles.css.js"
138
138
  ],
139
- "version": "3.0.338",
139
+ "version": "3.0.340",
140
140
  "repository": {
141
141
  "type": "git",
142
142
  "url": "https://github.com/cloudscape-design/components.git"
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"lib/default/","sources":["table/body-cell/index.tsx"],"names":[],"mappings":";AAMA,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,OAAO,EAAkB,mBAAmB,EAAE,MAAM,cAAc,CAAC;AASnE,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;AA2FD,wBAAgB,aAAa,CAAC,QAAQ,EAAE,EACtC,UAAU,EACV,GAAG,IAAI,EACR,EAAE,kBAAkB,CAAC,QAAQ,CAAC,GAAG;IAAE,UAAU,EAAE,OAAO,CAAA;CAAE,eAMxD"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"lib/default/","sources":["table/body-cell/index.tsx"],"names":[],"mappings":";AAMA,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,OAAO,EAAkB,mBAAmB,EAAE,MAAM,cAAc,CAAC;AAUnE,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;AAgHD,wBAAgB,aAAa,CAAC,QAAQ,EAAE,EACtC,UAAU,EACV,GAAG,IAAI,EACR,EAAE,kBAAkB,CAAC,QAAQ,CAAC,GAAG;IAAE,UAAU,EAAE,OAAO,CAAA;CAAE,eAMxD"}
@@ -9,6 +9,7 @@ import { TableTdElement } from './td-element';
9
9
  import { InlineEditor } from './inline-editor';
10
10
  import LiveRegion from '../../internal/components/live-region/index.js';
11
11
  import { useInternalI18n } from '../../internal/i18n/context';
12
+ import { usePrevious } from '../../internal/hooks/use-previous';
12
13
  const submitHandlerFallback = () => {
13
14
  throw new Error('The function `handleSubmit` is required for editable columns');
14
15
  };
@@ -31,13 +32,31 @@ function TableCellEditable(_a) {
31
32
  const [hasHover, setHasHover] = useState(false);
32
33
  const [hasFocus, setHasFocus] = useState(false);
33
34
  const showIcon = hasHover || hasFocus;
34
- 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: e => {
35
+ const prevSuccessfulEdit = usePrevious(successfulEdit);
36
+ const prevHasFocus = usePrevious(hasFocus);
37
+ const [showSuccessIcon, setShowSuccessIcon] = useState(false);
38
+ useEffect(() => {
39
+ // Hide the success icon after a successful edit, when cell loses focus.
40
+ if (successfulEdit && prevSuccessfulEdit && !hasFocus && prevHasFocus) {
41
+ setShowSuccessIcon(false);
42
+ }
43
+ // Show success icon right after a successful edit, when `successfulEdit` switches to true.
44
+ if (successfulEdit && !prevSuccessfulEdit) {
45
+ setShowSuccessIcon(true);
46
+ }
47
+ }, [hasFocus, successfulEdit, prevHasFocus, prevSuccessfulEdit]);
48
+ return (React.createElement(TableTdElement, Object.assign({}, rest, { nativeAttributes: tdNativeAttributes, className: clsx(className, styles['body-cell-editable'], isEditing && styles['body-cell-edit-active'], showSuccessIcon && showIcon && 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: e => {
49
+ setShowSuccessIcon(false);
35
50
  isFocusMoveNeededRef.current = true;
36
51
  onEditEnd(e);
37
52
  }, submitEdit: submitEdit !== null && submitEdit !== void 0 ? submitEdit : submitHandlerFallback })) : (React.createElement(React.Fragment, null,
38
53
  column.cell(item),
39
- successfulEdit && (React.createElement(React.Fragment, null,
40
- 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" },
54
+ showSuccessIcon && showIcon && (React.createElement(React.Fragment, null,
55
+ 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", onMouseDown: e => {
56
+ // Prevent the editor's Button blur event to be fired when clicking the success icon.
57
+ // This prevents unfocusing the button and triggers the `TableTdElement` onClick event which initiates the edit mode.
58
+ e.preventDefault();
59
+ } },
41
60
  React.createElement(Icon, { name: "status-positive", variant: "success" })),
42
61
  React.createElement(LiveRegion, null, i18n('ariaLabels.successfulEditLabel', (_c = ariaLabels === null || ariaLabels === void 0 ? void 0 : ariaLabels.successfulEditLabel) === null || _c === void 0 ? void 0 : _c.call(ariaLabels, column))))),
43
62
  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" }))))));
@@ -1 +1 @@
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, { useEffect, useRef, useState } from 'react';\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';\nimport { useInternalI18n } from '../../internal/i18n/context';\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 i18n = useInternalI18n('table');\n const editActivateRef = useRef<HTMLButtonElement>(null);\n const tdNativeAttributes = {\n 'data-inline-editing-active': isEditing.toString(),\n };\n const isFocusMoveNeededRef = useRef(false);\n\n useEffect(() => {\n if (!isEditing && editActivateRef.current && isFocusMoveNeededRef.current) {\n isFocusMoveNeededRef.current = false;\n editActivateRef.current.focus();\n }\n }, [isEditing]);\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={e => {\n isFocusMoveNeededRef.current = true;\n onEditEnd(e);\n }}\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>\n {i18n('ariaLabels.successfulEditLabel', ariaLabels?.successfulEditLabel?.(column))}\n </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"]}
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, { useEffect, useRef, useState } from 'react';\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';\nimport { useInternalI18n } from '../../internal/i18n/context';\nimport { usePrevious } from '../../internal/hooks/use-previous';\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 i18n = useInternalI18n('table');\n const editActivateRef = useRef<HTMLButtonElement>(null);\n const tdNativeAttributes = {\n 'data-inline-editing-active': isEditing.toString(),\n };\n const isFocusMoveNeededRef = useRef(false);\n\n useEffect(() => {\n if (!isEditing && editActivateRef.current && isFocusMoveNeededRef.current) {\n isFocusMoveNeededRef.current = false;\n editActivateRef.current.focus();\n }\n }, [isEditing]);\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 const prevSuccessfulEdit = usePrevious(successfulEdit);\n const prevHasFocus = usePrevious(hasFocus);\n const [showSuccessIcon, setShowSuccessIcon] = useState(false);\n\n useEffect(() => {\n // Hide the success icon after a successful edit, when cell loses focus.\n if (successfulEdit && prevSuccessfulEdit && !hasFocus && prevHasFocus) {\n setShowSuccessIcon(false);\n }\n // Show success icon right after a successful edit, when `successfulEdit` switches to true.\n if (successfulEdit && !prevSuccessfulEdit) {\n setShowSuccessIcon(true);\n }\n }, [hasFocus, successfulEdit, prevHasFocus, prevSuccessfulEdit]);\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 showSuccessIcon && showIcon && 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={e => {\n setShowSuccessIcon(false);\n isFocusMoveNeededRef.current = true;\n onEditEnd(e);\n }}\n submitEdit={submitEdit ?? submitHandlerFallback}\n />\n ) : (\n <>\n {column.cell(item)}\n {showSuccessIcon && showIcon && (\n <>\n <span\n className={styles['body-cell-success']}\n aria-label={ariaLabels?.successfulEditLabel?.(column)}\n role=\"img\"\n onMouseDown={e => {\n // Prevent the editor's Button blur event to be fired when clicking the success icon.\n // This prevents unfocusing the button and triggers the `TableTdElement` onClick event which initiates the edit mode.\n e.preventDefault();\n }}\n >\n <Icon name=\"status-positive\" variant=\"success\" />\n </span>\n <LiveRegion>\n {i18n('ariaLabels.successfulEditLabel', ariaLabels?.successfulEditLabel?.(column))}\n </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"]}
@@ -1,33 +1,33 @@
1
1
 
2
2
  import './styles.scoped.css';
3
3
  export default {
4
- "body-cell": "awsui_body-cell_c6tup_djrxv_93",
5
- "body-cell-wrap": "awsui_body-cell-wrap_c6tup_djrxv_103",
6
- "is-visual-refresh": "awsui_is-visual-refresh_c6tup_djrxv_115",
7
- "has-striped-rows": "awsui_has-striped-rows_c6tup_djrxv_127",
8
- "body-cell-edit-active": "awsui_body-cell-edit-active_c6tup_djrxv_130",
9
- "body-cell-editable": "awsui_body-cell-editable_c6tup_djrxv_130",
10
- "has-striped-rows-sticky-cell-pad-left": "awsui_has-striped-rows-sticky-cell-pad-left_c6tup_djrxv_136",
11
- "has-selection": "awsui_has-selection_c6tup_djrxv_139",
12
- "body-cell-first-row": "awsui_body-cell-first-row_c6tup_djrxv_145",
13
- "body-cell-last-row": "awsui_body-cell-last-row_c6tup_djrxv_148",
14
- "body-cell-selected": "awsui_body-cell-selected_c6tup_djrxv_148",
15
- "has-footer": "awsui_has-footer_c6tup_djrxv_148",
16
- "body-cell-shaded": "awsui_body-cell-shaded_c6tup_djrxv_158",
17
- "sticky-cell": "awsui_sticky-cell_c6tup_djrxv_175",
18
- "sticky-cell-pad-left": "awsui_sticky-cell-pad-left_c6tup_djrxv_183",
19
- "sticky-cell-last-right": "awsui_sticky-cell-last-right_c6tup_djrxv_200",
20
- "sticky-cell-last-left": "awsui_sticky-cell-last-left_c6tup_djrxv_204",
21
- "body-cell-next-selected": "awsui_body-cell-next-selected_c6tup_djrxv_227",
22
- "body-cell-prev-selected": "awsui_body-cell-prev-selected_c6tup_djrxv_231",
23
- "body-cell-success": "awsui_body-cell-success_c6tup_djrxv_255",
24
- "body-cell-editor": "awsui_body-cell-editor_c6tup_djrxv_255",
25
- "body-cell-success-form": "awsui_body-cell-success-form_c6tup_djrxv_277",
26
- "body-cell-editor-form": "awsui_body-cell-editor-form_c6tup_djrxv_277",
27
- "body-cell-success-row": "awsui_body-cell-success-row_c6tup_djrxv_286",
28
- "body-cell-editor-row": "awsui_body-cell-editor-row_c6tup_djrxv_286",
29
- "body-cell-success-controls": "awsui_body-cell-success-controls_c6tup_djrxv_296",
30
- "body-cell-editor-controls": "awsui_body-cell-editor-controls_c6tup_djrxv_296",
31
- "body-cell-has-success": "awsui_body-cell-has-success_c6tup_djrxv_315"
4
+ "body-cell": "awsui_body-cell_c6tup_xpjfg_93",
5
+ "body-cell-wrap": "awsui_body-cell-wrap_c6tup_xpjfg_103",
6
+ "is-visual-refresh": "awsui_is-visual-refresh_c6tup_xpjfg_115",
7
+ "has-striped-rows": "awsui_has-striped-rows_c6tup_xpjfg_127",
8
+ "body-cell-edit-active": "awsui_body-cell-edit-active_c6tup_xpjfg_130",
9
+ "body-cell-editable": "awsui_body-cell-editable_c6tup_xpjfg_130",
10
+ "has-striped-rows-sticky-cell-pad-left": "awsui_has-striped-rows-sticky-cell-pad-left_c6tup_xpjfg_136",
11
+ "has-selection": "awsui_has-selection_c6tup_xpjfg_139",
12
+ "body-cell-first-row": "awsui_body-cell-first-row_c6tup_xpjfg_145",
13
+ "body-cell-last-row": "awsui_body-cell-last-row_c6tup_xpjfg_148",
14
+ "body-cell-selected": "awsui_body-cell-selected_c6tup_xpjfg_148",
15
+ "has-footer": "awsui_has-footer_c6tup_xpjfg_148",
16
+ "body-cell-shaded": "awsui_body-cell-shaded_c6tup_xpjfg_158",
17
+ "sticky-cell": "awsui_sticky-cell_c6tup_xpjfg_175",
18
+ "sticky-cell-pad-left": "awsui_sticky-cell-pad-left_c6tup_xpjfg_183",
19
+ "sticky-cell-last-right": "awsui_sticky-cell-last-right_c6tup_xpjfg_200",
20
+ "sticky-cell-last-left": "awsui_sticky-cell-last-left_c6tup_xpjfg_204",
21
+ "body-cell-next-selected": "awsui_body-cell-next-selected_c6tup_xpjfg_227",
22
+ "body-cell-prev-selected": "awsui_body-cell-prev-selected_c6tup_xpjfg_231",
23
+ "body-cell-editor": "awsui_body-cell-editor_c6tup_xpjfg_255",
24
+ "body-cell-success": "awsui_body-cell-success_c6tup_xpjfg_260",
25
+ "body-cell-success-form": "awsui_body-cell-success-form_c6tup_xpjfg_285",
26
+ "body-cell-editor-form": "awsui_body-cell-editor-form_c6tup_xpjfg_285",
27
+ "body-cell-success-row": "awsui_body-cell-success-row_c6tup_xpjfg_294",
28
+ "body-cell-editor-row": "awsui_body-cell-editor-row_c6tup_xpjfg_294",
29
+ "body-cell-success-controls": "awsui_body-cell-success-controls_c6tup_xpjfg_304",
30
+ "body-cell-editor-controls": "awsui_body-cell-editor-controls_c6tup_xpjfg_304",
31
+ "body-cell-has-success": "awsui_body-cell-has-success_c6tup_xpjfg_328"
32
32
  };
33
33