@cloudscape-design/components 3.0.936 → 3.0.938

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 (79) hide show
  1. package/alert/actions-wrapper/index.d.ts +3 -1
  2. package/alert/actions-wrapper/index.d.ts.map +1 -1
  3. package/alert/actions-wrapper/index.js +24 -3
  4. package/alert/actions-wrapper/index.js.map +1 -1
  5. package/alert/index.d.ts.map +1 -1
  6. package/alert/index.js +21 -3
  7. package/alert/index.js.map +1 -1
  8. package/alert/internal.d.ts +3 -1
  9. package/alert/internal.d.ts.map +1 -1
  10. package/alert/internal.js +19 -18
  11. package/alert/internal.js.map +1 -1
  12. package/alert/styles.css.js +27 -28
  13. package/alert/styles.scoped.css +54 -54
  14. package/alert/styles.selectors.js +27 -28
  15. package/app-layout/visual-refresh-toolbar/interfaces.js.map +1 -1
  16. package/flashbar/collapsible-flashbar.d.ts.map +1 -1
  17. package/flashbar/collapsible-flashbar.js +2 -2
  18. package/flashbar/collapsible-flashbar.js.map +1 -1
  19. package/flashbar/common.d.ts +0 -1
  20. package/flashbar/common.d.ts.map +1 -1
  21. package/flashbar/common.js +1 -4
  22. package/flashbar/common.js.map +1 -1
  23. package/flashbar/flash.d.ts.map +1 -1
  24. package/flashbar/flash.js +4 -2
  25. package/flashbar/flash.js.map +1 -1
  26. package/flashbar/non-collapsible-flashbar.d.ts.map +1 -1
  27. package/flashbar/non-collapsible-flashbar.js +2 -2
  28. package/flashbar/non-collapsible-flashbar.js.map +1 -1
  29. package/flashbar/styles.css.js +50 -50
  30. package/flashbar/styles.scoped.css +152 -153
  31. package/flashbar/styles.selectors.js +50 -50
  32. package/form/index.d.ts.map +1 -1
  33. package/form/index.js +34 -6
  34. package/form/index.js.map +1 -1
  35. package/form/internal.d.ts +2 -1
  36. package/form/internal.d.ts.map +1 -1
  37. package/form/internal.js +2 -2
  38. package/form/internal.js.map +1 -1
  39. package/internal/analytics/hooks/use-funnel.d.ts +4 -0
  40. package/internal/analytics/hooks/use-funnel.d.ts.map +1 -1
  41. package/internal/analytics/hooks/use-funnel.js +10 -1
  42. package/internal/analytics/hooks/use-funnel.js.map +1 -1
  43. package/internal/base-component/styles.scoped.css +3 -0
  44. package/internal/environment.js +1 -1
  45. package/internal/environment.json +1 -1
  46. package/internal/events/index.js.map +1 -1
  47. package/internal/generated/styles/tokens.d.ts +1 -0
  48. package/internal/generated/styles/tokens.js +1 -0
  49. package/internal/generated/theming/index.cjs +15 -4
  50. package/internal/generated/theming/index.js +15 -4
  51. package/internal/manifest.json +1 -1
  52. package/internal/plugins/api.d.ts.map +1 -1
  53. package/internal/plugins/api.js +2 -0
  54. package/internal/plugins/api.js.map +1 -1
  55. package/internal/utils/check-safe-url.d.ts.map +1 -1
  56. package/internal/utils/check-safe-url.js +2 -0
  57. package/internal/utils/check-safe-url.js.map +1 -1
  58. package/package.json +3 -3
  59. package/split-panel/bottom.d.ts +3 -2
  60. package/split-panel/bottom.d.ts.map +1 -1
  61. package/split-panel/bottom.js +11 -8
  62. package/split-panel/bottom.js.map +1 -1
  63. package/split-panel/implementation.d.ts.map +1 -1
  64. package/split-panel/implementation.js +5 -5
  65. package/split-panel/implementation.js.map +1 -1
  66. package/split-panel/side.d.ts +3 -2
  67. package/split-panel/side.d.ts.map +1 -1
  68. package/split-panel/side.js +4 -3
  69. package/split-panel/side.js.map +1 -1
  70. package/split-panel/styles.css.js +27 -26
  71. package/split-panel/styles.scoped.css +46 -44
  72. package/split-panel/styles.selectors.js +27 -26
  73. package/table/body-cell/inline-editor.d.ts.map +1 -1
  74. package/table/body-cell/inline-editor.js +2 -0
  75. package/table/body-cell/inline-editor.js.map +1 -1
  76. package/test-utils/tsconfig.tsbuildinfo +1 -1
  77. package/wizard/wizard-form.d.ts.map +1 -1
  78. package/wizard/wizard-form.js +22 -9
  79. package/wizard/wizard-form.js.map +1 -1
@@ -2,55 +2,55 @@
2
2
  // es-module interop with Babel and Typescript
3
3
  Object.defineProperty(exports, "__esModule", { value: true });
4
4
  module.exports.default = {
5
- "flash-with-motion": "awsui_flash-with-motion_1q84n_ld8k0_157",
6
- "enter": "awsui_enter_1q84n_ld8k0_157",
7
- "flash-body": "awsui_flash-body_1q84n_ld8k0_171",
8
- "flash-message": "awsui_flash-message_1q84n_ld8k0_171",
9
- "flash-header": "awsui_flash-header_1q84n_ld8k0_171",
10
- "flash-content": "awsui_flash-content_1q84n_ld8k0_172",
11
- "action-button-wrapper": "awsui_action-button-wrapper_1q84n_ld8k0_173",
12
- "dismiss-button-wrapper": "awsui_dismiss-button-wrapper_1q84n_ld8k0_174",
13
- "flash-icon": "awsui_flash-icon_1q84n_ld8k0_197",
14
- "entering": "awsui_entering_1q84n_ld8k0_210",
15
- "entered": "awsui_entered_1q84n_ld8k0_231",
16
- "exiting": "awsui_exiting_1q84n_ld8k0_336",
17
- "stack": "awsui_stack_1q84n_ld8k0_370",
18
- "animation-running": "awsui_animation-running_1q84n_ld8k0_370",
19
- "item": "awsui_item_1q84n_ld8k0_370",
20
- "flash-list-item": "awsui_flash-list-item_1q84n_ld8k0_371",
21
- "notification-bar": "awsui_notification-bar_1q84n_ld8k0_372",
22
- "collapsed": "awsui_collapsed_1q84n_ld8k0_392",
23
- "animation-ready": "awsui_animation-ready_1q84n_ld8k0_392",
24
- "expanded-only": "awsui_expanded-only_1q84n_ld8k0_392",
25
- "expanded": "awsui_expanded_1q84n_ld8k0_392",
26
- "flash": "awsui_flash_1q84n_ld8k0_157",
27
- "collapsible": "awsui_collapsible_1q84n_ld8k0_448",
28
- "short-list": "awsui_short-list_1q84n_ld8k0_454",
29
- "visual-refresh": "awsui_visual-refresh_1q84n_ld8k0_454",
30
- "status": "awsui_status_1q84n_ld8k0_601",
31
- "header": "awsui_header_1q84n_ld8k0_601",
32
- "item-count": "awsui_item-count_1q84n_ld8k0_602",
33
- "button": "awsui_button_1q84n_ld8k0_603",
34
- "type-count": "awsui_type-count_1q84n_ld8k0_636",
35
- "count-number": "awsui_count-number_1q84n_ld8k0_636",
36
- "icon": "awsui_icon_1q84n_ld8k0_670",
37
- "floating": "awsui_floating_1q84n_ld8k0_711",
38
- "flashbar": "awsui_flashbar_1q84n_ld8k0_715",
39
- "initial-hidden": "awsui_initial-hidden_1q84n_ld8k0_773",
40
- "flash-list": "awsui_flash-list_1q84n_ld8k0_371",
41
- "flash-focus-container": "awsui_flash-focus-container_1q84n_ld8k0_795",
42
- "flash-text": "awsui_flash-text_1q84n_ld8k0_825",
43
- "hidden": "awsui_hidden_1q84n_ld8k0_844",
44
- "header-replacement": "awsui_header-replacement_1q84n_ld8k0_849",
45
- "content-replacement": "awsui_content-replacement_1q84n_ld8k0_854",
46
- "dismiss-button": "awsui_dismiss-button_1q84n_ld8k0_174",
47
- "breakpoint-default": "awsui_breakpoint-default_1q84n_ld8k0_873",
48
- "action-button": "awsui_action-button_1q84n_ld8k0_173",
49
- "action-slot": "awsui_action-slot_1q84n_ld8k0_883",
50
- "flash-type-success": "awsui_flash-type-success_1q84n_ld8k0_887",
51
- "flash-type-error": "awsui_flash-type-error_1q84n_ld8k0_891",
52
- "flash-type-info": "awsui_flash-type-info_1q84n_ld8k0_895",
53
- "flash-type-in-progress": "awsui_flash-type-in-progress_1q84n_ld8k0_896",
54
- "flash-type-warning": "awsui_flash-type-warning_1q84n_ld8k0_900"
5
+ "flash-with-motion": "awsui_flash-with-motion_1q84n_tmdyd_157",
6
+ "enter": "awsui_enter_1q84n_tmdyd_157",
7
+ "flash-body": "awsui_flash-body_1q84n_tmdyd_171",
8
+ "flash-message": "awsui_flash-message_1q84n_tmdyd_171",
9
+ "flash-header": "awsui_flash-header_1q84n_tmdyd_171",
10
+ "flash-content": "awsui_flash-content_1q84n_tmdyd_172",
11
+ "action-button-wrapper": "awsui_action-button-wrapper_1q84n_tmdyd_173",
12
+ "dismiss-button-wrapper": "awsui_dismiss-button-wrapper_1q84n_tmdyd_174",
13
+ "flash-icon": "awsui_flash-icon_1q84n_tmdyd_197",
14
+ "entering": "awsui_entering_1q84n_tmdyd_210",
15
+ "entered": "awsui_entered_1q84n_tmdyd_231",
16
+ "exiting": "awsui_exiting_1q84n_tmdyd_336",
17
+ "stack": "awsui_stack_1q84n_tmdyd_370",
18
+ "animation-running": "awsui_animation-running_1q84n_tmdyd_370",
19
+ "item": "awsui_item_1q84n_tmdyd_370",
20
+ "flash-list-item": "awsui_flash-list-item_1q84n_tmdyd_371",
21
+ "notification-bar": "awsui_notification-bar_1q84n_tmdyd_372",
22
+ "collapsed": "awsui_collapsed_1q84n_tmdyd_392",
23
+ "animation-ready": "awsui_animation-ready_1q84n_tmdyd_392",
24
+ "expanded-only": "awsui_expanded-only_1q84n_tmdyd_392",
25
+ "expanded": "awsui_expanded_1q84n_tmdyd_392",
26
+ "flash": "awsui_flash_1q84n_tmdyd_157",
27
+ "collapsible": "awsui_collapsible_1q84n_tmdyd_448",
28
+ "short-list": "awsui_short-list_1q84n_tmdyd_454",
29
+ "visual-refresh": "awsui_visual-refresh_1q84n_tmdyd_454",
30
+ "status": "awsui_status_1q84n_tmdyd_601",
31
+ "header": "awsui_header_1q84n_tmdyd_601",
32
+ "item-count": "awsui_item-count_1q84n_tmdyd_602",
33
+ "button": "awsui_button_1q84n_tmdyd_603",
34
+ "type-count": "awsui_type-count_1q84n_tmdyd_636",
35
+ "count-number": "awsui_count-number_1q84n_tmdyd_636",
36
+ "icon": "awsui_icon_1q84n_tmdyd_670",
37
+ "floating": "awsui_floating_1q84n_tmdyd_711",
38
+ "flashbar": "awsui_flashbar_1q84n_tmdyd_715",
39
+ "initial-hidden": "awsui_initial-hidden_1q84n_tmdyd_773",
40
+ "flash-list": "awsui_flash-list_1q84n_tmdyd_371",
41
+ "flash-focus-container": "awsui_flash-focus-container_1q84n_tmdyd_797",
42
+ "flash-text": "awsui_flash-text_1q84n_tmdyd_828",
43
+ "hidden": "awsui_hidden_1q84n_tmdyd_847",
44
+ "header-replacement": "awsui_header-replacement_1q84n_tmdyd_852",
45
+ "content-replacement": "awsui_content-replacement_1q84n_tmdyd_857",
46
+ "dismiss-button": "awsui_dismiss-button_1q84n_tmdyd_174",
47
+ "action-wrapped": "awsui_action-wrapped_1q84n_tmdyd_875",
48
+ "action-button": "awsui_action-button_1q84n_tmdyd_173",
49
+ "action-slot": "awsui_action-slot_1q84n_tmdyd_882",
50
+ "flash-type-success": "awsui_flash-type-success_1q84n_tmdyd_886",
51
+ "flash-type-error": "awsui_flash-type-error_1q84n_tmdyd_890",
52
+ "flash-type-info": "awsui_flash-type-info_1q84n_tmdyd_894",
53
+ "flash-type-in-progress": "awsui_flash-type-in-progress_1q84n_tmdyd_895",
54
+ "flash-type-warning": "awsui_flash-type-warning_1q84n_tmdyd_899"
55
55
  };
56
56
 
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/form/index.tsx"],"names":[],"mappings":";AAWA,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAMzC,OAAO,EAAE,SAAS,EAAE,CAAC;AAgDrB,MAAM,CAAC,OAAO,UAAU,IAAI,CAAC,EAAE,OAAqB,EAAE,GAAG,KAAK,EAAE,EAAE,SAAS,eAwC1E"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/form/index.tsx"],"names":[],"mappings":";AAaA,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAMzC,OAAO,EAAE,SAAS,EAAE,CAAC;AAwFrB,MAAM,CAAC,OAAO,UAAU,IAAI,CAAC,EAAE,OAAqB,EAAE,GAAG,KAAK,EAAE,EAAE,SAAS,eAwC1E"}
package/form/index.js CHANGED
@@ -4,36 +4,64 @@ import { __rest } from "tslib";
4
4
  import React, { useEffect } from 'react';
5
5
  import { FunnelMetrics } from '../internal/analytics';
6
6
  import { AnalyticsFunnel, AnalyticsFunnelStep } from '../internal/analytics/components/analytics-funnel';
7
- import { useFunnel, useFunnelNameSelector, useFunnelStep } from '../internal/analytics/hooks/use-funnel';
7
+ import { useFunnel, useFunnelNameSelector, useFunnelStepRef } from '../internal/analytics/hooks/use-funnel';
8
+ import { getSubStepAllSelector, getTextFromSelector } from '../internal/analytics/selectors';
8
9
  import { getAnalyticsMetadataProps } from '../internal/base-component';
9
10
  import { ButtonContext } from '../internal/context/button-context';
10
11
  import useBaseComponent from '../internal/hooks/use-base-component';
12
+ import { useUniqueId } from '../internal/hooks/use-unique-id';
11
13
  import { applyDisplayName } from '../internal/utils/apply-display-name';
12
14
  import InternalForm from './internal';
13
15
  import headerStyles from '../header/styles.css.js';
14
16
  import analyticsSelectors from './analytics-metadata/styles.css.js';
15
17
  const FormWithAnalytics = (_a) => {
16
- var { variant = 'full-page', actions, errorText } = _a, props = __rest(_a, ["variant", "actions", "errorText"]);
18
+ var { variant = 'full-page', actions, errorText, __internalRootRef } = _a, props = __rest(_a, ["variant", "actions", "errorText", "__internalRootRef"]);
17
19
  const { funnelIdentifier, funnelInteractionId, funnelProps, funnelSubmit, funnelNextOrSubmitAttempt, errorCount, submissionAttempt, funnelErrorContext, } = useFunnel();
18
- const { funnelStepProps } = useFunnelStep();
20
+ const funnelStepInfo = useFunnelStepRef();
19
21
  const handleActionButtonClick = ({ variant }) => {
20
22
  if (variant === 'primary') {
21
23
  funnelNextOrSubmitAttempt();
22
24
  funnelSubmit();
23
25
  }
24
26
  };
27
+ const errorSlotId = useUniqueId('form-error-');
25
28
  useEffect(() => {
29
+ var _a, _b;
26
30
  if (funnelInteractionId && errorText) {
27
31
  errorCount.current++;
28
- FunnelMetrics.funnelError({ funnelInteractionId, funnelIdentifier, funnelErrorContext });
32
+ const stepName = getTextFromSelector(funnelStepInfo.current.stepNameSelector);
33
+ FunnelMetrics.funnelStepError({
34
+ funnelInteractionId,
35
+ stepNumber: funnelStepInfo.current.stepNumber,
36
+ stepNameSelector: funnelStepInfo.current.stepNameSelector,
37
+ stepName,
38
+ stepIdentifier: funnelStepInfo.current.stepIdentifier,
39
+ currentDocument: (_a = __internalRootRef.current) === null || _a === void 0 ? void 0 : _a.ownerDocument,
40
+ totalSubSteps: funnelStepInfo.current.subStepCount.current,
41
+ funnelIdentifier,
42
+ subStepAllSelector: getSubStepAllSelector(),
43
+ stepErrorContext: funnelStepInfo.current.stepErrorContext,
44
+ subStepConfiguration: (_b = funnelStepInfo.current.subStepConfiguration.current) === null || _b === void 0 ? void 0 : _b.get(funnelStepInfo.current.stepNumber),
45
+ stepErrorSelector: '#' + errorSlotId,
46
+ });
29
47
  return () => {
30
48
  // eslint-disable-next-line react-hooks/exhaustive-deps
31
49
  errorCount.current--;
32
50
  };
33
51
  }
34
- }, [funnelInteractionId, funnelIdentifier, errorText, submissionAttempt, errorCount, funnelErrorContext]);
52
+ }, [
53
+ funnelInteractionId,
54
+ funnelIdentifier,
55
+ errorText,
56
+ submissionAttempt,
57
+ errorCount,
58
+ funnelErrorContext,
59
+ errorSlotId,
60
+ __internalRootRef,
61
+ funnelStepInfo,
62
+ ]);
35
63
  return (React.createElement(ButtonContext.Provider, { value: { onClick: handleActionButtonClick } },
36
- React.createElement(InternalForm, Object.assign({ variant: variant, actions: actions, errorText: errorText }, props, funnelProps, funnelStepProps, { __injectAnalyticsComponentMetadata: true }))));
64
+ React.createElement(InternalForm, Object.assign({ variant: variant, actions: actions, errorText: errorText, __errorSlotId: errorSlotId }, props, funnelProps, funnelStepInfo.current.funnelStepProps, { __internalRootRef: __internalRootRef, __injectAnalyticsComponentMetadata: true }))));
37
65
  };
38
66
  export default function Form(_a) {
39
67
  var { variant = 'full-page' } = _a, props = __rest(_a, ["variant"]);
package/form/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/form/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 } from 'react';\n\nimport { FunnelMetrics } from '../internal/analytics';\nimport { AnalyticsFunnel, AnalyticsFunnelStep } from '../internal/analytics/components/analytics-funnel';\nimport { useFunnel, useFunnelNameSelector, useFunnelStep } from '../internal/analytics/hooks/use-funnel';\nimport { BasePropsWithAnalyticsMetadata, getAnalyticsMetadataProps } from '../internal/base-component';\nimport { ButtonContext, ButtonContextProps } from '../internal/context/button-context';\nimport useBaseComponent from '../internal/hooks/use-base-component';\nimport { applyDisplayName } from '../internal/utils/apply-display-name';\nimport { FormProps } from './interfaces';\nimport InternalForm from './internal';\n\nimport headerStyles from '../header/styles.css.js';\nimport analyticsSelectors from './analytics-metadata/styles.css.js';\n\nexport { FormProps };\n\nconst FormWithAnalytics = ({ variant = 'full-page', actions, errorText, ...props }: FormProps) => {\n const {\n funnelIdentifier,\n funnelInteractionId,\n funnelProps,\n funnelSubmit,\n funnelNextOrSubmitAttempt,\n errorCount,\n submissionAttempt,\n funnelErrorContext,\n } = useFunnel();\n const { funnelStepProps } = useFunnelStep();\n\n const handleActionButtonClick: ButtonContextProps['onClick'] = ({ variant }) => {\n if (variant === 'primary') {\n funnelNextOrSubmitAttempt();\n funnelSubmit();\n }\n };\n\n useEffect(() => {\n if (funnelInteractionId && errorText) {\n errorCount.current++;\n FunnelMetrics.funnelError({ funnelInteractionId, funnelIdentifier, funnelErrorContext });\n return () => {\n // eslint-disable-next-line react-hooks/exhaustive-deps\n errorCount.current--;\n };\n }\n }, [funnelInteractionId, funnelIdentifier, errorText, submissionAttempt, errorCount, funnelErrorContext]);\n\n return (\n <ButtonContext.Provider value={{ onClick: handleActionButtonClick }}>\n <InternalForm\n variant={variant}\n actions={actions}\n errorText={errorText}\n {...props}\n {...funnelProps}\n {...funnelStepProps}\n __injectAnalyticsComponentMetadata={true}\n />\n </ButtonContext.Provider>\n );\n};\n\nexport default function Form({ variant = 'full-page', ...props }: FormProps) {\n const analyticsMetadata = getAnalyticsMetadataProps(props as BasePropsWithAnalyticsMetadata);\n const baseComponentProps = useBaseComponent(\n 'Form',\n {\n props: {\n variant,\n flowType: analyticsMetadata?.flowType,\n },\n metadata: {\n hasResourceType: Boolean(analyticsMetadata?.resourceType),\n hasInstanceIdentifier: Boolean(analyticsMetadata?.instanceIdentifier),\n },\n },\n analyticsMetadata\n );\n const inheritedFunnelNameSelector = useFunnelNameSelector();\n const funnelNameSelector =\n inheritedFunnelNameSelector || `.${analyticsSelectors.header} .${headerStyles['heading-text']}`;\n\n return (\n <AnalyticsFunnel\n funnelIdentifier={analyticsMetadata?.instanceIdentifier}\n funnelFlowType={analyticsMetadata?.flowType}\n funnelErrorContext={analyticsMetadata?.errorContext}\n funnelResourceType={analyticsMetadata?.resourceType}\n funnelType=\"single-page\"\n optionalStepNumbers={[]}\n totalFunnelSteps={1}\n funnelNameSelectors={() => [funnelNameSelector, `.${analyticsSelectors.header}`]}\n >\n <AnalyticsFunnelStep\n stepIdentifier={analyticsMetadata?.instanceIdentifier}\n stepErrorContext={analyticsMetadata?.errorContext}\n stepNumber={1}\n >\n <FormWithAnalytics variant={variant} {...props} {...baseComponentProps} />\n </AnalyticsFunnelStep>\n </AnalyticsFunnel>\n );\n}\n\napplyDisplayName(Form, 'Form');\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/form/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 } from 'react';\n\nimport { FunnelMetrics } from '../internal/analytics';\nimport { AnalyticsFunnel, AnalyticsFunnelStep } from '../internal/analytics/components/analytics-funnel';\nimport { useFunnel, useFunnelNameSelector, useFunnelStepRef } from '../internal/analytics/hooks/use-funnel';\nimport { getSubStepAllSelector, getTextFromSelector } from '../internal/analytics/selectors';\nimport { BasePropsWithAnalyticsMetadata, getAnalyticsMetadataProps } from '../internal/base-component';\nimport { ButtonContext, ButtonContextProps } from '../internal/context/button-context';\nimport useBaseComponent from '../internal/hooks/use-base-component';\nimport { useUniqueId } from '../internal/hooks/use-unique-id';\nimport { applyDisplayName } from '../internal/utils/apply-display-name';\nimport { FormProps } from './interfaces';\nimport InternalForm from './internal';\n\nimport headerStyles from '../header/styles.css.js';\nimport analyticsSelectors from './analytics-metadata/styles.css.js';\n\nexport { FormProps };\n\nconst FormWithAnalytics = ({\n variant = 'full-page',\n actions,\n errorText,\n __internalRootRef,\n ...props\n}: FormProps & ReturnType<typeof useBaseComponent<HTMLElement>>) => {\n const {\n funnelIdentifier,\n funnelInteractionId,\n funnelProps,\n funnelSubmit,\n funnelNextOrSubmitAttempt,\n errorCount,\n submissionAttempt,\n funnelErrorContext,\n } = useFunnel();\n\n const funnelStepInfo = useFunnelStepRef();\n\n const handleActionButtonClick: ButtonContextProps['onClick'] = ({ variant }) => {\n if (variant === 'primary') {\n funnelNextOrSubmitAttempt();\n funnelSubmit();\n }\n };\n\n const errorSlotId = useUniqueId('form-error-');\n\n useEffect(() => {\n if (funnelInteractionId && errorText) {\n errorCount.current++;\n\n const stepName = getTextFromSelector(funnelStepInfo.current.stepNameSelector);\n\n FunnelMetrics.funnelStepError({\n funnelInteractionId,\n stepNumber: funnelStepInfo.current.stepNumber,\n stepNameSelector: funnelStepInfo.current.stepNameSelector,\n stepName,\n stepIdentifier: funnelStepInfo.current.stepIdentifier,\n currentDocument: __internalRootRef.current?.ownerDocument,\n totalSubSteps: funnelStepInfo.current.subStepCount.current,\n funnelIdentifier,\n subStepAllSelector: getSubStepAllSelector(),\n stepErrorContext: funnelStepInfo.current.stepErrorContext,\n subStepConfiguration: funnelStepInfo.current.subStepConfiguration.current?.get(\n funnelStepInfo.current.stepNumber\n ),\n stepErrorSelector: '#' + errorSlotId,\n });\n\n return () => {\n // eslint-disable-next-line react-hooks/exhaustive-deps\n errorCount.current--;\n };\n }\n }, [\n funnelInteractionId,\n funnelIdentifier,\n errorText,\n submissionAttempt,\n errorCount,\n funnelErrorContext,\n errorSlotId,\n __internalRootRef,\n funnelStepInfo,\n ]);\n\n return (\n <ButtonContext.Provider value={{ onClick: handleActionButtonClick }}>\n <InternalForm\n variant={variant}\n actions={actions}\n errorText={errorText}\n __errorSlotId={errorSlotId}\n {...props}\n {...funnelProps}\n {...funnelStepInfo.current.funnelStepProps}\n __internalRootRef={__internalRootRef}\n __injectAnalyticsComponentMetadata={true}\n />\n </ButtonContext.Provider>\n );\n};\n\nexport default function Form({ variant = 'full-page', ...props }: FormProps) {\n const analyticsMetadata = getAnalyticsMetadataProps(props as BasePropsWithAnalyticsMetadata);\n const baseComponentProps = useBaseComponent<HTMLElement>(\n 'Form',\n {\n props: {\n variant,\n flowType: analyticsMetadata?.flowType,\n },\n metadata: {\n hasResourceType: Boolean(analyticsMetadata?.resourceType),\n hasInstanceIdentifier: Boolean(analyticsMetadata?.instanceIdentifier),\n },\n },\n analyticsMetadata\n );\n const inheritedFunnelNameSelector = useFunnelNameSelector();\n const funnelNameSelector =\n inheritedFunnelNameSelector || `.${analyticsSelectors.header} .${headerStyles['heading-text']}`;\n\n return (\n <AnalyticsFunnel\n funnelIdentifier={analyticsMetadata?.instanceIdentifier}\n funnelFlowType={analyticsMetadata?.flowType}\n funnelErrorContext={analyticsMetadata?.errorContext}\n funnelResourceType={analyticsMetadata?.resourceType}\n funnelType=\"single-page\"\n optionalStepNumbers={[]}\n totalFunnelSteps={1}\n funnelNameSelectors={() => [funnelNameSelector, `.${analyticsSelectors.header}`]}\n >\n <AnalyticsFunnelStep\n stepIdentifier={analyticsMetadata?.instanceIdentifier}\n stepErrorContext={analyticsMetadata?.errorContext}\n stepNumber={1}\n >\n <FormWithAnalytics variant={variant} {...props} {...baseComponentProps} />\n </AnalyticsFunnelStep>\n </AnalyticsFunnel>\n );\n}\n\napplyDisplayName(Form, 'Form');\n"]}
@@ -3,7 +3,8 @@ import { InternalBaseComponentProps } from '../internal/hooks/use-base-component
3
3
  import { FormProps } from './interfaces';
4
4
  type InternalFormProps = {
5
5
  __injectAnalyticsComponentMetadata?: boolean;
6
+ __errorSlotId?: string;
6
7
  } & FormProps & InternalBaseComponentProps;
7
- export default function InternalForm({ children, header, errorText, errorIconAriaLabel: errorIconAriaLabelOverride, actions, secondaryActions, __internalRootRef, __injectAnalyticsComponentMetadata, ...props }: InternalFormProps): JSX.Element;
8
+ export default function InternalForm({ children, header, errorText, errorIconAriaLabel: errorIconAriaLabelOverride, actions, secondaryActions, __internalRootRef, __injectAnalyticsComponentMetadata, __errorSlotId, ...props }: InternalFormProps): JSX.Element;
8
9
  export {};
9
10
  //# sourceMappingURL=internal.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"internal.d.ts","sourceRoot":"","sources":["../../../src/form/internal.tsx"],"names":[],"mappings":";AAWA,OAAO,EAAE,0BAA0B,EAAE,MAAM,sCAAsC,CAAC;AAGlF,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAKzC,KAAK,iBAAiB,GAAG;IACvB,kCAAkC,CAAC,EAAE,OAAO,CAAC;CAC9C,GAAG,SAAS,GACX,0BAA0B,CAAC;AAE7B,MAAM,CAAC,OAAO,UAAU,YAAY,CAAC,EACnC,QAAQ,EACR,MAAM,EACN,SAAS,EACT,kBAAkB,EAAE,0BAA0B,EAC9C,OAAO,EACP,gBAAgB,EAChB,iBAAiB,EACjB,kCAAkC,EAClC,GAAG,KAAK,EACT,EAAE,iBAAiB,eA4CnB"}
1
+ {"version":3,"file":"internal.d.ts","sourceRoot":"","sources":["../../../src/form/internal.tsx"],"names":[],"mappings":";AAWA,OAAO,EAAE,0BAA0B,EAAE,MAAM,sCAAsC,CAAC;AAGlF,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAKzC,KAAK,iBAAiB,GAAG;IACvB,kCAAkC,CAAC,EAAE,OAAO,CAAC;IAC7C,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB,GAAG,SAAS,GACX,0BAA0B,CAAC;AAE7B,MAAM,CAAC,OAAO,UAAU,YAAY,CAAC,EACnC,QAAQ,EACR,MAAM,EACN,SAAS,EACT,kBAAkB,EAAE,0BAA0B,EAC9C,OAAO,EACP,gBAAgB,EAChB,iBAAiB,EACjB,kCAAkC,EAClC,aAAa,EACb,GAAG,KAAK,EACT,EAAE,iBAAiB,eA8CnB"}
package/form/internal.js CHANGED
@@ -12,7 +12,7 @@ import InternalLiveRegion from '../live-region/internal';
12
12
  import analyticsSelectors from './analytics-metadata/styles.css.js';
13
13
  import styles from './styles.css.js';
14
14
  export default function InternalForm(_a) {
15
- var { children, header, errorText, errorIconAriaLabel: errorIconAriaLabelOverride, actions, secondaryActions, __internalRootRef, __injectAnalyticsComponentMetadata } = _a, props = __rest(_a, ["children", "header", "errorText", "errorIconAriaLabel", "actions", "secondaryActions", "__internalRootRef", "__injectAnalyticsComponentMetadata"]);
15
+ var { children, header, errorText, errorIconAriaLabel: errorIconAriaLabelOverride, actions, secondaryActions, __internalRootRef, __injectAnalyticsComponentMetadata, __errorSlotId } = _a, props = __rest(_a, ["children", "header", "errorText", "errorIconAriaLabel", "actions", "secondaryActions", "__internalRootRef", "__injectAnalyticsComponentMetadata", "__errorSlotId"]);
16
16
  const baseProps = getBaseProps(props);
17
17
  const i18n = useInternalI18n('form');
18
18
  const errorIconAriaLabel = i18n('errorIconAriaLabel', errorIconAriaLabelOverride);
@@ -29,7 +29,7 @@ export default function InternalForm(_a) {
29
29
  children && React.createElement("div", { className: styles.content }, children),
30
30
  errorText && (React.createElement(InternalBox, { margin: { top: 'l' } },
31
31
  React.createElement(InternalAlert, { type: "error", statusIconAriaLabel: errorIconAriaLabel },
32
- React.createElement("div", { className: styles.error }, errorText)))),
32
+ React.createElement("div", { className: styles.error, id: __errorSlotId }, errorText)))),
33
33
  (actions || secondaryActions) && (React.createElement("div", { className: styles.footer },
34
34
  React.createElement("div", { className: styles['actions-section'] },
35
35
  actions && React.createElement("div", { className: styles.actions }, actions),
@@ -1 +1 @@
1
- {"version":3,"file":"internal.js","sourceRoot":"","sources":["../../../src/form/internal.tsx"],"names":[],"mappings":";AAAA,qEAAqE;AACrE,sCAAsC;AACtC,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,IAAI,MAAM,MAAM,CAAC;AAExB,OAAO,EAAE,6BAA6B,EAAE,MAAM,kEAAkE,CAAC;AAEjH,OAAO,aAAa,MAAM,mBAAmB,CAAC;AAC9C,OAAO,WAAW,MAAM,iBAAiB,CAAC;AAC1C,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAE1D,OAAO,kBAAkB,MAAM,yBAAyB,CAAC;AAIzD,OAAO,kBAAkB,MAAM,oCAAoC,CAAC;AACpE,OAAO,MAAM,MAAM,iBAAiB,CAAC;AAOrC,MAAM,CAAC,OAAO,UAAU,YAAY,CAAC,EAUjB;QAViB,EACnC,QAAQ,EACR,MAAM,EACN,SAAS,EACT,kBAAkB,EAAE,0BAA0B,EAC9C,OAAO,EACP,gBAAgB,EAChB,iBAAiB,EACjB,kCAAkC,OAEhB,EADf,KAAK,cAT2B,mJAUpC,CADS;IAER,MAAM,SAAS,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC;IACtC,MAAM,IAAI,GAAG,eAAe,CAAC,MAAM,CAAC,CAAC;IACrC,MAAM,kBAAkB,GAAG,IAAI,CAAC,oBAAoB,EAAE,0BAA0B,CAAC,CAAC;IAClF,MAAM,0BAA0B,GAA2C;QACzE,SAAS,EAAE;YACT,IAAI,EAAE,YAAY;YAClB,KAAK,EAAE;gBACL,QAAQ,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,IAAI,kBAAkB,CAAC,MAAM,IAAI,OAAO,EAAE,CAAC;aACxF;SACF;KACF,CAAC;IAEF,OAAO,CACL,6CACM,SAAS,IACb,GAAG,EAAE,iBAAiB,EACtB,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,SAAS,CAAC,SAAS,CAAC,IAC7C,CAAC,kCAAkC,CAAC,CAAC,CAAC,6BAA6B,CAAC,0BAA0B,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAExG,MAAM,IAAI,6BAAK,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,kBAAkB,CAAC,MAAM,CAAC,IAAG,MAAM,CAAO;QACxF,QAAQ,IAAI,6BAAK,SAAS,EAAE,MAAM,CAAC,OAAO,IAAG,QAAQ,CAAO;QAC5D,SAAS,IAAI,CACZ,oBAAC,WAAW,IAAC,MAAM,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE;YAC/B,oBAAC,aAAa,IAAC,IAAI,EAAC,OAAO,EAAC,mBAAmB,EAAE,kBAAkB;gBACjE,6BAAK,SAAS,EAAE,MAAM,CAAC,KAAK,IAAG,SAAS,CAAO,CACjC,CACJ,CACf;QACA,CAAC,OAAO,IAAI,gBAAgB,CAAC,IAAI,CAChC,6BAAK,SAAS,EAAE,MAAM,CAAC,MAAM;YAC3B,6BAAK,SAAS,EAAE,MAAM,CAAC,iBAAiB,CAAC;gBACtC,OAAO,IAAI,6BAAK,SAAS,EAAE,MAAM,CAAC,OAAO,IAAG,OAAO,CAAO;gBAC1D,gBAAgB,IAAI,6BAAK,SAAS,EAAE,MAAM,CAAC,mBAAmB,CAAC,IAAG,gBAAgB,CAAO,CACtF,CACF,CACP;QACA,SAAS,IAAI,CACZ,oBAAC,kBAAkB,IAAC,MAAM,EAAE,IAAI,EAAE,OAAO,EAAC,MAAM,EAAC,SAAS,EAAE,IAAI;YAC7D,kBAAkB;;YAAI,SAAS,CACb,CACtB,CACG,CACP,CAAC;AACJ,CAAC","sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport React from 'react';\nimport clsx from 'clsx';\n\nimport { getAnalyticsMetadataAttribute } from '@cloudscape-design/component-toolkit/internal/analytics-metadata';\n\nimport InternalAlert from '../alert/internal';\nimport InternalBox from '../box/internal';\nimport { useInternalI18n } from '../i18n/context';\nimport { getBaseProps } from '../internal/base-component';\nimport { InternalBaseComponentProps } from '../internal/hooks/use-base-component';\nimport InternalLiveRegion from '../live-region/internal';\nimport { GeneratedAnalyticsMetadataFormFragment } from './analytics-metadata/interfaces';\nimport { FormProps } from './interfaces';\n\nimport analyticsSelectors from './analytics-metadata/styles.css.js';\nimport styles from './styles.css.js';\n\ntype InternalFormProps = {\n __injectAnalyticsComponentMetadata?: boolean;\n} & FormProps &\n InternalBaseComponentProps;\n\nexport default function InternalForm({\n children,\n header,\n errorText,\n errorIconAriaLabel: errorIconAriaLabelOverride,\n actions,\n secondaryActions,\n __internalRootRef,\n __injectAnalyticsComponentMetadata,\n ...props\n}: InternalFormProps) {\n const baseProps = getBaseProps(props);\n const i18n = useInternalI18n('form');\n const errorIconAriaLabel = i18n('errorIconAriaLabel', errorIconAriaLabelOverride);\n const analyticsComponentMetadata: GeneratedAnalyticsMetadataFormFragment = {\n component: {\n name: 'awsui.Form',\n label: {\n selector: ['h1', 'h2', 'h3'].map(heading => `.${analyticsSelectors.header} ${heading}`),\n },\n },\n };\n\n return (\n <div\n {...baseProps}\n ref={__internalRootRef}\n className={clsx(styles.root, baseProps.className)}\n {...(__injectAnalyticsComponentMetadata ? getAnalyticsMetadataAttribute(analyticsComponentMetadata) : {})}\n >\n {header && <div className={clsx(styles.header, analyticsSelectors.header)}>{header}</div>}\n {children && <div className={styles.content}>{children}</div>}\n {errorText && (\n <InternalBox margin={{ top: 'l' }}>\n <InternalAlert type=\"error\" statusIconAriaLabel={errorIconAriaLabel}>\n <div className={styles.error}>{errorText}</div>\n </InternalAlert>\n </InternalBox>\n )}\n {(actions || secondaryActions) && (\n <div className={styles.footer}>\n <div className={styles['actions-section']}>\n {actions && <div className={styles.actions}>{actions}</div>}\n {secondaryActions && <div className={styles['secondary-actions']}>{secondaryActions}</div>}\n </div>\n </div>\n )}\n {errorText && (\n <InternalLiveRegion hidden={true} tagName=\"span\" assertive={true}>\n {errorIconAriaLabel}, {errorText}\n </InternalLiveRegion>\n )}\n </div>\n );\n}\n"]}
1
+ {"version":3,"file":"internal.js","sourceRoot":"","sources":["../../../src/form/internal.tsx"],"names":[],"mappings":";AAAA,qEAAqE;AACrE,sCAAsC;AACtC,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,IAAI,MAAM,MAAM,CAAC;AAExB,OAAO,EAAE,6BAA6B,EAAE,MAAM,kEAAkE,CAAC;AAEjH,OAAO,aAAa,MAAM,mBAAmB,CAAC;AAC9C,OAAO,WAAW,MAAM,iBAAiB,CAAC;AAC1C,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAE1D,OAAO,kBAAkB,MAAM,yBAAyB,CAAC;AAIzD,OAAO,kBAAkB,MAAM,oCAAoC,CAAC;AACpE,OAAO,MAAM,MAAM,iBAAiB,CAAC;AAQrC,MAAM,CAAC,OAAO,UAAU,YAAY,CAAC,EAWjB;QAXiB,EACnC,QAAQ,EACR,MAAM,EACN,SAAS,EACT,kBAAkB,EAAE,0BAA0B,EAC9C,OAAO,EACP,gBAAgB,EAChB,iBAAiB,EACjB,kCAAkC,EAClC,aAAa,OAEK,EADf,KAAK,cAV2B,oKAWpC,CADS;IAER,MAAM,SAAS,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC;IACtC,MAAM,IAAI,GAAG,eAAe,CAAC,MAAM,CAAC,CAAC;IACrC,MAAM,kBAAkB,GAAG,IAAI,CAAC,oBAAoB,EAAE,0BAA0B,CAAC,CAAC;IAClF,MAAM,0BAA0B,GAA2C;QACzE,SAAS,EAAE;YACT,IAAI,EAAE,YAAY;YAClB,KAAK,EAAE;gBACL,QAAQ,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,IAAI,kBAAkB,CAAC,MAAM,IAAI,OAAO,EAAE,CAAC;aACxF;SACF;KACF,CAAC;IAEF,OAAO,CACL,6CACM,SAAS,IACb,GAAG,EAAE,iBAAiB,EACtB,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,SAAS,CAAC,SAAS,CAAC,IAC7C,CAAC,kCAAkC,CAAC,CAAC,CAAC,6BAA6B,CAAC,0BAA0B,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAExG,MAAM,IAAI,6BAAK,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,kBAAkB,CAAC,MAAM,CAAC,IAAG,MAAM,CAAO;QACxF,QAAQ,IAAI,6BAAK,SAAS,EAAE,MAAM,CAAC,OAAO,IAAG,QAAQ,CAAO;QAC5D,SAAS,IAAI,CACZ,oBAAC,WAAW,IAAC,MAAM,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE;YAC/B,oBAAC,aAAa,IAAC,IAAI,EAAC,OAAO,EAAC,mBAAmB,EAAE,kBAAkB;gBACjE,6BAAK,SAAS,EAAE,MAAM,CAAC,KAAK,EAAE,EAAE,EAAE,aAAa,IAC5C,SAAS,CACN,CACQ,CACJ,CACf;QACA,CAAC,OAAO,IAAI,gBAAgB,CAAC,IAAI,CAChC,6BAAK,SAAS,EAAE,MAAM,CAAC,MAAM;YAC3B,6BAAK,SAAS,EAAE,MAAM,CAAC,iBAAiB,CAAC;gBACtC,OAAO,IAAI,6BAAK,SAAS,EAAE,MAAM,CAAC,OAAO,IAAG,OAAO,CAAO;gBAC1D,gBAAgB,IAAI,6BAAK,SAAS,EAAE,MAAM,CAAC,mBAAmB,CAAC,IAAG,gBAAgB,CAAO,CACtF,CACF,CACP;QACA,SAAS,IAAI,CACZ,oBAAC,kBAAkB,IAAC,MAAM,EAAE,IAAI,EAAE,OAAO,EAAC,MAAM,EAAC,SAAS,EAAE,IAAI;YAC7D,kBAAkB;;YAAI,SAAS,CACb,CACtB,CACG,CACP,CAAC;AACJ,CAAC","sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport React from 'react';\nimport clsx from 'clsx';\n\nimport { getAnalyticsMetadataAttribute } from '@cloudscape-design/component-toolkit/internal/analytics-metadata';\n\nimport InternalAlert from '../alert/internal';\nimport InternalBox from '../box/internal';\nimport { useInternalI18n } from '../i18n/context';\nimport { getBaseProps } from '../internal/base-component';\nimport { InternalBaseComponentProps } from '../internal/hooks/use-base-component';\nimport InternalLiveRegion from '../live-region/internal';\nimport { GeneratedAnalyticsMetadataFormFragment } from './analytics-metadata/interfaces';\nimport { FormProps } from './interfaces';\n\nimport analyticsSelectors from './analytics-metadata/styles.css.js';\nimport styles from './styles.css.js';\n\ntype InternalFormProps = {\n __injectAnalyticsComponentMetadata?: boolean;\n __errorSlotId?: string;\n} & FormProps &\n InternalBaseComponentProps;\n\nexport default function InternalForm({\n children,\n header,\n errorText,\n errorIconAriaLabel: errorIconAriaLabelOverride,\n actions,\n secondaryActions,\n __internalRootRef,\n __injectAnalyticsComponentMetadata,\n __errorSlotId,\n ...props\n}: InternalFormProps) {\n const baseProps = getBaseProps(props);\n const i18n = useInternalI18n('form');\n const errorIconAriaLabel = i18n('errorIconAriaLabel', errorIconAriaLabelOverride);\n const analyticsComponentMetadata: GeneratedAnalyticsMetadataFormFragment = {\n component: {\n name: 'awsui.Form',\n label: {\n selector: ['h1', 'h2', 'h3'].map(heading => `.${analyticsSelectors.header} ${heading}`),\n },\n },\n };\n\n return (\n <div\n {...baseProps}\n ref={__internalRootRef}\n className={clsx(styles.root, baseProps.className)}\n {...(__injectAnalyticsComponentMetadata ? getAnalyticsMetadataAttribute(analyticsComponentMetadata) : {})}\n >\n {header && <div className={clsx(styles.header, analyticsSelectors.header)}>{header}</div>}\n {children && <div className={styles.content}>{children}</div>}\n {errorText && (\n <InternalBox margin={{ top: 'l' }}>\n <InternalAlert type=\"error\" statusIconAriaLabel={errorIconAriaLabel}>\n <div className={styles.error} id={__errorSlotId}>\n {errorText}\n </div>\n </InternalAlert>\n </InternalBox>\n )}\n {(actions || secondaryActions) && (\n <div className={styles.footer}>\n <div className={styles['actions-section']}>\n {actions && <div className={styles.actions}>{actions}</div>}\n {secondaryActions && <div className={styles['secondary-actions']}>{secondaryActions}</div>}\n </div>\n </div>\n )}\n {errorText && (\n <InternalLiveRegion hidden={true} tagName=\"span\" assertive={true}>\n {errorIconAriaLabel}, {errorText}\n </InternalLiveRegion>\n )}\n </div>\n );\n}\n"]}
@@ -32,6 +32,10 @@ export declare const useFunnelSubStep: () => import("../context/analytics-contex
32
32
  * The context contains additional properties of the FunnelStep.
33
33
  */
34
34
  export declare const useFunnelStep: () => import("../context/analytics-context").FunnelStepContextValue;
35
+ /**
36
+ * This function provides a stable React ref to the current funnel step information.
37
+ */
38
+ export declare const useFunnelStepRef: () => import("react").MutableRefObject<import("../context/analytics-context").FunnelStepContextValue>;
35
39
  /**
36
40
  * Custom React Hook to manage and interact with Funnel.
37
41
  * This hook will provide necessary properties required to track
@@ -1 +1 @@
1
- {"version":3,"file":"use-funnel.d.ts","sourceRoot":"","sources":["../../../../../src/internal/analytics/hooks/use-funnel.ts"],"names":[],"mappings":";AAOA,OAAO,EAEL,kBAAkB,EAInB,MAAM,8BAA8B,CAAC;AAQtC;;;;;;;;;GASG;AACH,eAAO,MAAM,gBAAgB;;;;;;;;;;;;CAuI5B,CAAC;AAEF;;;;;;;GAOG;AACH,eAAO,MAAM,aAAa,qEAGzB,CAAC;AAEF;;;;;;GAMG;AACH,MAAM,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,SAAS,CAAC,CAAC;AAChF,KAAK,SAAS,GAAG,MAAM,kBAAkB,GAAG;IAC1C,WAAW,EAAE,WAAW,CAAC;CAC1B,CAAC;AAEF,eAAO,MAAM,SAAS,EAAE,SASvB,CAAC;AAEF,eAAO,MAAM,qBAAqB,0BAGjC,CAAC"}
1
+ {"version":3,"file":"use-funnel.d.ts","sourceRoot":"","sources":["../../../../../src/internal/analytics/hooks/use-funnel.ts"],"names":[],"mappings":";AAOA,OAAO,EAEL,kBAAkB,EAInB,MAAM,8BAA8B,CAAC;AAQtC;;;;;;;;;GASG;AACH,eAAO,MAAM,gBAAgB;;;;;;;;;;;;CAuI5B,CAAC;AAEF;;;;;;;GAOG;AACH,eAAO,MAAM,aAAa,qEAGzB,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,gBAAgB,uGAK5B,CAAC;AAEF;;;;;;GAMG;AACH,MAAM,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,SAAS,CAAC,CAAC;AAChF,KAAK,SAAS,GAAG,MAAM,kBAAkB,GAAG;IAC1C,WAAW,EAAE,WAAW,CAAC;CAC1B,CAAC;AAEF,eAAO,MAAM,SAAS,EAAE,SASvB,CAAC;AAEF,eAAO,MAAM,qBAAqB,0BAGjC,CAAC"}
@@ -1,7 +1,7 @@
1
1
  // Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
2
2
  // SPDX-License-Identifier: Apache-2.0
3
3
  import { __awaiter } from "tslib";
4
- import { useContext } from 'react';
4
+ import { useContext, useRef } from 'react';
5
5
  import { nodeBelongs } from '../../utils/node-belongs';
6
6
  import { FunnelMetrics } from '../';
7
7
  import { FunnelContext, FunnelNameSelectorContext, FunnelStepContext, FunnelSubStepContext, } from '../context/analytics-context';
@@ -141,6 +141,15 @@ export const useFunnelStep = () => {
141
141
  const context = useContext(FunnelStepContext);
142
142
  return context;
143
143
  };
144
+ /**
145
+ * This function provides a stable React ref to the current funnel step information.
146
+ */
147
+ export const useFunnelStepRef = () => {
148
+ const funnelStep = useFunnelStep();
149
+ const funnelStepRef = useRef(funnelStep);
150
+ funnelStepRef.current = funnelStep;
151
+ return funnelStepRef;
152
+ };
144
153
  export const useFunnel = () => {
145
154
  const context = useContext(FunnelContext);
146
155
  const funnelProps = context.funnelInteractionId
@@ -1 +1 @@
1
- {"version":3,"file":"use-funnel.js","sourceRoot":"","sources":["../../../../../src/internal/analytics/hooks/use-funnel.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport { useContext } from 'react';\n\nimport { nodeBelongs } from '../../utils/node-belongs';\nimport { FunnelMetrics } from '../';\nimport {\n FunnelContext,\n FunnelContextValue,\n FunnelNameSelectorContext,\n FunnelStepContext,\n FunnelSubStepContext,\n} from '../context/analytics-context';\nimport {\n DATA_ATTR_FUNNEL_INTERACTION_ID,\n DATA_ATTR_FUNNEL_SUBSTEP,\n getSubStepAllSelector,\n getTextFromSelector,\n} from '../selectors';\n\n/**\n * Custom React Hook to manage and interact with FunnelSubStep.\n * This hook will provide necessary properties and methods required\n * to track and manage interactions with a FunnelSubStep component.\n *\n * The `onFocus` method is used to track the beginning of interaction with the FunnelSubStep.\n * The `onBlur` method is used to track the completion of interaction with the FunnelSubStep.\n * The subStepId is a unique identifier for the funnel sub-step.\n * The subStepRef is a reference to the DOM element of the funnel sub-step.\n */\nexport const useFunnelSubStep = () => {\n const context = useContext(FunnelSubStepContext);\n const { funnelInteractionId, funnelIdentifier, funnelState, latestFocusCleanupFunction } = useFunnel();\n const { stepNumber, stepIdentifier, stepNameSelector, subStepConfiguration } = useFunnelStep();\n\n const {\n subStepIdentifier,\n subStepId,\n subStepSelector,\n subStepNameSelector,\n subStepRef,\n isNestedSubStep,\n mousePressed,\n isFocusedSubStep,\n focusCleanupFunction,\n } = context;\n\n if (isNestedSubStep) {\n return context;\n }\n\n const onFocus = async (event: React.FocusEvent<HTMLDivElement>) => {\n const element = event.target;\n // Ignore spurious focus events, such as when the browser window is focused again.\n await new Promise(r => setTimeout(r, 1));\n if (document.activeElement !== element) {\n return;\n }\n\n if (isFocusedSubStep.current) {\n return;\n }\n isFocusedSubStep.current = true;\n\n if (funnelInteractionId && subStepId) {\n /*\n If the previously focused substep has provided a cleanup function, we\n call it here on behalf of the previously focused substep.\n */\n latestFocusCleanupFunction.current?.();\n\n const subStepName = getTextFromSelector(subStepNameSelector);\n const stepName = getTextFromSelector(stepNameSelector);\n const subStepNumber = subStepConfiguration.current\n ?.get(stepNumber)\n ?.find(step => step.name === subStepName)?.number;\n FunnelMetrics.funnelSubStepStart({\n funnelIdentifier,\n funnelInteractionId,\n subStepIdentifier,\n subStepSelector,\n subStepNameSelector,\n subStepName,\n subStepNumber,\n stepIdentifier,\n stepNumber,\n stepName,\n stepNameSelector,\n subStepAllSelector: getSubStepAllSelector(),\n });\n\n /*\n This cleanup function will be called when the user leaves this substep.\n The function might be called either:\n\n - by the next focused substep as `latestFocusCleanupFunction`\n (through a separate instance of the function we're currently in), or\n\n - by the same substep as `focusCleanupFunction`\n (through the `onMouseUp` handler or the `onBlur` handler).\n */\n let cleanupFunctionHasBeenRun = false;\n focusCleanupFunction.current = () => {\n if (cleanupFunctionHasBeenRun) {\n return;\n }\n cleanupFunctionHasBeenRun = true;\n\n const subStepNumber = subStepConfiguration.current?.get(stepNumber)?.find(s => s.name === subStepName)?.number;\n\n if (funnelState.current !== 'cancelled') {\n FunnelMetrics.funnelSubStepComplete({\n funnelIdentifier,\n funnelInteractionId,\n subStepIdentifier,\n subStepSelector,\n subStepNameSelector,\n subStepName,\n subStepNumber,\n stepIdentifier,\n stepNumber,\n stepName,\n stepNameSelector,\n subStepAllSelector: getSubStepAllSelector(),\n });\n }\n };\n latestFocusCleanupFunction.current = focusCleanupFunction.current;\n }\n };\n\n const onBlur = (event: React.FocusEvent<HTMLDivElement>) => {\n if (mousePressed.current) {\n /*\n Ignore blur events that are caused by mouse interaction, because these events don't\n always reflect user intention. For example, clicking the label of an interactive form\n element will briefly blur it.\n The mouse-caused events are handled in the global `onMouseUp` handler of the substep\n context instead.\n */\n return;\n }\n\n if (!subStepRef.current || !event.relatedTarget || !nodeBelongs(subStepRef.current, event.relatedTarget)) {\n isFocusedSubStep.current = false;\n\n if (funnelInteractionId && subStepId && funnelState.current !== 'cancelled') {\n /*\n Run this substep's own focus cleanup function if another substep\n hasn't already done it for us.\n */\n focusCleanupFunction.current?.();\n }\n }\n };\n\n const funnelSubStepProps: Record<string, any> = funnelInteractionId\n ? {\n [DATA_ATTR_FUNNEL_SUBSTEP]: subStepId,\n onFocus,\n onBlur,\n }\n : {};\n\n return { funnelSubStepProps, ...context };\n};\n\n/**\n * Custom React Hook to manage and interact with FunnelStep.\n * This hook will provide necessary properties required to track\n * and manage interactions with a FunnelStep component.\n *\n * The 'data-analytics-funnel-step' property of funnelStepProps is used to track the index of the current step in the funnel.\n * The context contains additional properties of the FunnelStep.\n */\nexport const useFunnelStep = () => {\n const context = useContext(FunnelStepContext);\n return context;\n};\n\n/**\n * Custom React Hook to manage and interact with Funnel.\n * This hook will provide necessary properties required to track\n * and manage interactions with a Funnel component.\n *\n * The 'data-analytics-funnel-interaction-id' property of funnelProps is used to track the unique identifier of the current interaction with the funnel.\n */\nexport type FunnelProps = Record<string, string | number | boolean | undefined>;\ntype UseFunnel = () => FunnelContextValue & {\n funnelProps: FunnelProps;\n};\n\nexport const useFunnel: UseFunnel = () => {\n const context = useContext(FunnelContext);\n const funnelProps: FunnelProps = context.funnelInteractionId\n ? {\n [DATA_ATTR_FUNNEL_INTERACTION_ID]: context.funnelInteractionId,\n }\n : {};\n\n return { funnelProps, ...context };\n};\n\nexport const useFunnelNameSelector = () => {\n const context = useContext(FunnelNameSelectorContext);\n return context;\n};\n"]}
1
+ {"version":3,"file":"use-funnel.js","sourceRoot":"","sources":["../../../../../src/internal/analytics/hooks/use-funnel.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport { useContext, useRef } from 'react';\n\nimport { nodeBelongs } from '../../utils/node-belongs';\nimport { FunnelMetrics } from '../';\nimport {\n FunnelContext,\n FunnelContextValue,\n FunnelNameSelectorContext,\n FunnelStepContext,\n FunnelSubStepContext,\n} from '../context/analytics-context';\nimport {\n DATA_ATTR_FUNNEL_INTERACTION_ID,\n DATA_ATTR_FUNNEL_SUBSTEP,\n getSubStepAllSelector,\n getTextFromSelector,\n} from '../selectors';\n\n/**\n * Custom React Hook to manage and interact with FunnelSubStep.\n * This hook will provide necessary properties and methods required\n * to track and manage interactions with a FunnelSubStep component.\n *\n * The `onFocus` method is used to track the beginning of interaction with the FunnelSubStep.\n * The `onBlur` method is used to track the completion of interaction with the FunnelSubStep.\n * The subStepId is a unique identifier for the funnel sub-step.\n * The subStepRef is a reference to the DOM element of the funnel sub-step.\n */\nexport const useFunnelSubStep = () => {\n const context = useContext(FunnelSubStepContext);\n const { funnelInteractionId, funnelIdentifier, funnelState, latestFocusCleanupFunction } = useFunnel();\n const { stepNumber, stepIdentifier, stepNameSelector, subStepConfiguration } = useFunnelStep();\n\n const {\n subStepIdentifier,\n subStepId,\n subStepSelector,\n subStepNameSelector,\n subStepRef,\n isNestedSubStep,\n mousePressed,\n isFocusedSubStep,\n focusCleanupFunction,\n } = context;\n\n if (isNestedSubStep) {\n return context;\n }\n\n const onFocus = async (event: React.FocusEvent<HTMLDivElement>) => {\n const element = event.target;\n // Ignore spurious focus events, such as when the browser window is focused again.\n await new Promise(r => setTimeout(r, 1));\n if (document.activeElement !== element) {\n return;\n }\n\n if (isFocusedSubStep.current) {\n return;\n }\n isFocusedSubStep.current = true;\n\n if (funnelInteractionId && subStepId) {\n /*\n If the previously focused substep has provided a cleanup function, we\n call it here on behalf of the previously focused substep.\n */\n latestFocusCleanupFunction.current?.();\n\n const subStepName = getTextFromSelector(subStepNameSelector);\n const stepName = getTextFromSelector(stepNameSelector);\n const subStepNumber = subStepConfiguration.current\n ?.get(stepNumber)\n ?.find(step => step.name === subStepName)?.number;\n FunnelMetrics.funnelSubStepStart({\n funnelIdentifier,\n funnelInteractionId,\n subStepIdentifier,\n subStepSelector,\n subStepNameSelector,\n subStepName,\n subStepNumber,\n stepIdentifier,\n stepNumber,\n stepName,\n stepNameSelector,\n subStepAllSelector: getSubStepAllSelector(),\n });\n\n /*\n This cleanup function will be called when the user leaves this substep.\n The function might be called either:\n\n - by the next focused substep as `latestFocusCleanupFunction`\n (through a separate instance of the function we're currently in), or\n\n - by the same substep as `focusCleanupFunction`\n (through the `onMouseUp` handler or the `onBlur` handler).\n */\n let cleanupFunctionHasBeenRun = false;\n focusCleanupFunction.current = () => {\n if (cleanupFunctionHasBeenRun) {\n return;\n }\n cleanupFunctionHasBeenRun = true;\n\n const subStepNumber = subStepConfiguration.current?.get(stepNumber)?.find(s => s.name === subStepName)?.number;\n\n if (funnelState.current !== 'cancelled') {\n FunnelMetrics.funnelSubStepComplete({\n funnelIdentifier,\n funnelInteractionId,\n subStepIdentifier,\n subStepSelector,\n subStepNameSelector,\n subStepName,\n subStepNumber,\n stepIdentifier,\n stepNumber,\n stepName,\n stepNameSelector,\n subStepAllSelector: getSubStepAllSelector(),\n });\n }\n };\n latestFocusCleanupFunction.current = focusCleanupFunction.current;\n }\n };\n\n const onBlur = (event: React.FocusEvent<HTMLDivElement>) => {\n if (mousePressed.current) {\n /*\n Ignore blur events that are caused by mouse interaction, because these events don't\n always reflect user intention. For example, clicking the label of an interactive form\n element will briefly blur it.\n The mouse-caused events are handled in the global `onMouseUp` handler of the substep\n context instead.\n */\n return;\n }\n\n if (!subStepRef.current || !event.relatedTarget || !nodeBelongs(subStepRef.current, event.relatedTarget)) {\n isFocusedSubStep.current = false;\n\n if (funnelInteractionId && subStepId && funnelState.current !== 'cancelled') {\n /*\n Run this substep's own focus cleanup function if another substep\n hasn't already done it for us.\n */\n focusCleanupFunction.current?.();\n }\n }\n };\n\n const funnelSubStepProps: Record<string, any> = funnelInteractionId\n ? {\n [DATA_ATTR_FUNNEL_SUBSTEP]: subStepId,\n onFocus,\n onBlur,\n }\n : {};\n\n return { funnelSubStepProps, ...context };\n};\n\n/**\n * Custom React Hook to manage and interact with FunnelStep.\n * This hook will provide necessary properties required to track\n * and manage interactions with a FunnelStep component.\n *\n * The 'data-analytics-funnel-step' property of funnelStepProps is used to track the index of the current step in the funnel.\n * The context contains additional properties of the FunnelStep.\n */\nexport const useFunnelStep = () => {\n const context = useContext(FunnelStepContext);\n return context;\n};\n\n/**\n * This function provides a stable React ref to the current funnel step information.\n */\nexport const useFunnelStepRef = () => {\n const funnelStep = useFunnelStep();\n const funnelStepRef = useRef<ReturnType<typeof useFunnelStep>>(funnelStep);\n funnelStepRef.current = funnelStep;\n return funnelStepRef;\n};\n\n/**\n * Custom React Hook to manage and interact with Funnel.\n * This hook will provide necessary properties required to track\n * and manage interactions with a Funnel component.\n *\n * The 'data-analytics-funnel-interaction-id' property of funnelProps is used to track the unique identifier of the current interaction with the funnel.\n */\nexport type FunnelProps = Record<string, string | number | boolean | undefined>;\ntype UseFunnel = () => FunnelContextValue & {\n funnelProps: FunnelProps;\n};\n\nexport const useFunnel: UseFunnel = () => {\n const context = useContext(FunnelContext);\n const funnelProps: FunnelProps = context.funnelInteractionId\n ? {\n [DATA_ATTR_FUNNEL_INTERACTION_ID]: context.funnelInteractionId,\n }\n : {};\n\n return { funnelProps, ...context };\n};\n\nexport const useFunnelNameSelector = () => {\n const context = useContext(FunnelNameSelectorContext);\n return context;\n};\n"]}
@@ -588,6 +588,7 @@
588
588
  --space-flashbar-action-left-qkhz5m:12px;
589
589
  --space-flashbar-dismiss-right-tcpfax:0px;
590
590
  --space-flashbar-horizontal-xmjla3:16px;
591
+ --space-flashbar-vertical-cgkvxy:8px;
591
592
  --space-grid-gutter-ieqn7e:20px;
592
593
  --space-key-value-gap-0517k5:0px;
593
594
  --space-layout-content-bottom-noqzmw:40px;
@@ -1061,6 +1062,7 @@
1061
1062
  --space-content-header-padding-bottom-y2enua:12px;
1062
1063
  --space-dark-header-overlap-distance-lxpp0s:32px;
1063
1064
  --space-expandable-section-icon-offset-top-ekk5vc:0px;
1065
+ --space-flashbar-vertical-cgkvxy:4px;
1064
1066
  --space-grid-gutter-ieqn7e:16px;
1065
1067
  --space-layout-content-bottom-noqzmw:24px;
1066
1068
  --space-layout-content-horizontal-7l52k3:16px;
@@ -1119,6 +1121,7 @@
1119
1121
  --space-card-vertical-m591he:12px;
1120
1122
  --space-container-header-bottom-vj01hn:4px;
1121
1123
  --space-content-header-padding-bottom-y2enua:12px;
1124
+ --space-flashbar-vertical-cgkvxy:4px;
1122
1125
  --space-panel-content-bottom-7k6er3:32px;
1123
1126
  --space-panel-content-top-wac3yp:16px;
1124
1127
  --space-panel-header-vertical-gv9pti:16px;
@@ -1,4 +1,4 @@
1
1
  export var PACKAGE_SOURCE = "components";
2
- export var PACKAGE_VERSION = "3.0.0 (95c8e7c9)";
2
+ export var PACKAGE_VERSION = "3.0.0 (d520ccdb)";
3
3
  export var THEME = "open-source-visual-refresh";
4
4
  export var ALWAYS_VISUAL_REFRESH = true;
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "PACKAGE_SOURCE": "components",
3
- "PACKAGE_VERSION": "3.0.0 (95c8e7c9)",
3
+ "PACKAGE_VERSION": "3.0.0 (d520ccdb)",
4
4
  "THEME": "open-source-visual-refresh",
5
5
  "ALWAYS_VISUAL_REFRESH": true
6
6
  }
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/internal/events/index.ts"],"names":[],"mappings":"AAYA,MAAM,eAAe;IAGnB,YACS,aAAsB,KAAK,EAC3B,SAAmB,IAAI;QADvB,eAAU,GAAV,UAAU,CAAiB;QAC3B,WAAM,GAAN,MAAM,CAAiB;QAJhC,qBAAgB,GAAG,KAAK,CAAC;QACzB,iBAAY,GAAG,KAAK,CAAC;IAIlB,CAAC;IAEJ,cAAc;QACZ,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC;IAC/B,CAAC;IAED,eAAe;QACb,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;IAC3B,CAAC;CACF;AA0BD,MAAM,UAAU,iBAAiB,CAAI,EAAE,UAAU,EAAE,MAAM,EAAsB;IAC7E,OAAO,IAAI,eAAe,CAAC,UAAU,EAAE,MAAM,CAAgB,CAAC;AAChE,CAAC;AAED,MAAM,UAAU,sBAAsB,CAAW,OAAiD,EAAE,MAAU;IAC5G,IAAI,CAAC,OAAO,EAAE;QACZ,OAAO;KACR;IACD,MAAM,KAAK,GAAG,iBAAiB,CAAC,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;IAC/D,OAAO,CAAC,KAAK,CAAC,CAAC;AACjB,CAAC;AAED,MAAM,UAAU,mBAAmB,CACjC,OAA8C,EAC9C,MAAS,EACT,WAA0C;IAE1C,IAAI,CAAC,OAAO,EAAE;QACZ,OAAO,KAAK,CAAC;KACd;IACD,MAAM,KAAK,GAAG,iBAAiB,CAAC,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;IAC9D,OAAO,CAAC,KAAK,CAAC,CAAC;IACf,IAAI,KAAK,CAAC,gBAAgB,IAAI,WAAW,EAAE;QACzC,WAAW,CAAC,cAAc,EAAE,CAAC;KAC9B;IACD,IAAI,KAAK,CAAC,YAAY,IAAI,WAAW,EAAE;QACrC,WAAW,CAAC,eAAe,EAAE,CAAC;KAC/B;IACD,OAAO,KAAK,CAAC,gBAAgB,CAAC;AAChC,CAAC;AAED,MAAM,UAAU,iBAAiB,CAC/B,OAA0D,EAC1D,UAA+B;IAE/B,OAAO,mBAAmB,CACxB,OAAO,EACP;QACE,OAAO,EAAE,UAAU,CAAC,OAAO;QAC3B,GAAG,EAAE,UAAU,CAAC,GAAG;QACnB,OAAO,EAAE,UAAU,CAAC,OAAO;QAC3B,QAAQ,EAAE,UAAU,CAAC,QAAQ;QAC7B,MAAM,EAAE,UAAU,CAAC,MAAM;QACzB,OAAO,EAAE,UAAU,CAAC,OAAO;QAC3B,WAAW,EAAE,UAAU,CAAC,WAAW,CAAC,WAAW;KAChD,EACD,UAAU,CACX,CAAC;AACJ,CAAC;AAED,MAAM,YAAY,GAAG,CAAC,CAAyC,EAAyB,EAAE;IACxF,OAAQ,CAAsB,CAAC,MAAM,KAAK,SAAS,CAAC;AACtD,CAAC,CAAC;AAEF,MAAM,UAAU,eAAe,CAAC,KAA6C;IAC3E,OAAO,KAAK,CAAC,OAAO,IAAI,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC;AAC1E,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,KAA6C;IAC5E,OAAO,KAAK,IAAI,CAAC,CAAC,YAAY,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;AAC1F,CAAC","sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport React from 'react';\n\n// This is a part of our public types API. We cannot change this in the current major version\n// eslint-disable-next-line @typescript-eslint/ban-types\nexport type NonCancelableEventHandler<Detail = {}> = (event: NonCancelableCustomEvent<Detail>) => void;\n// eslint-disable-next-line @typescript-eslint/ban-types\nexport type CancelableEventHandler<Detail = {}> = (event: CustomEvent<Detail>) => void;\n\nexport type NonCancelableCustomEvent<DetailType> = Omit<CustomEvent<DetailType>, 'preventDefault'>;\n\nclass CustomEventStub<T> {\n defaultPrevented = false;\n cancelBubble = false;\n constructor(\n public cancelable: boolean = false,\n public detail: T | null = null\n ) {}\n\n preventDefault() {\n this.defaultPrevented = true;\n }\n\n stopPropagation() {\n this.cancelBubble = true;\n }\n}\n\nexport interface BaseKeyDetail {\n keyCode: number;\n key: string;\n ctrlKey: boolean;\n shiftKey: boolean;\n altKey: boolean;\n metaKey: boolean;\n isComposing: boolean;\n}\n\nexport interface ClickDetail {\n button: number;\n ctrlKey: boolean;\n shiftKey: boolean;\n altKey: boolean;\n metaKey: boolean;\n}\n\nexport interface BaseNavigationDetail {\n href: string | undefined;\n external?: boolean;\n target?: string;\n}\n\nexport function createCustomEvent<T>({ cancelable, detail }: CustomEventInit<T>): CustomEvent<T> {\n return new CustomEventStub(cancelable, detail) as CustomEvent;\n}\n\nexport function fireNonCancelableEvent<T = null>(handler: NonCancelableEventHandler<T> | undefined, detail?: T) {\n if (!handler) {\n return;\n }\n const event = createCustomEvent({ cancelable: false, detail });\n handler(event);\n}\n\nexport function fireCancelableEvent<T>(\n handler: CancelableEventHandler<T> | undefined,\n detail: T,\n sourceEvent?: React.SyntheticEvent | Event\n) {\n if (!handler) {\n return false;\n }\n const event = createCustomEvent({ cancelable: true, detail });\n handler(event);\n if (event.defaultPrevented && sourceEvent) {\n sourceEvent.preventDefault();\n }\n if (event.cancelBubble && sourceEvent) {\n sourceEvent.stopPropagation();\n }\n return event.defaultPrevented;\n}\n\nexport function fireKeyboardEvent(\n handler: CancelableEventHandler<BaseKeyDetail> | undefined,\n reactEvent: React.KeyboardEvent\n) {\n return fireCancelableEvent(\n handler,\n {\n keyCode: reactEvent.keyCode,\n key: reactEvent.key,\n ctrlKey: reactEvent.ctrlKey,\n shiftKey: reactEvent.shiftKey,\n altKey: reactEvent.altKey,\n metaKey: reactEvent.metaKey,\n isComposing: reactEvent.nativeEvent.isComposing,\n },\n reactEvent\n );\n}\n\nconst isMouseEvent = (e: React.MouseEvent | React.KeyboardEvent): e is React.MouseEvent => {\n return (e as React.MouseEvent).button !== undefined;\n};\n\nexport function hasModifierKeys(event: React.MouseEvent | React.KeyboardEvent) {\n return event.ctrlKey || event.altKey || event.shiftKey || event.metaKey;\n}\n\nexport function isPlainLeftClick(event: React.MouseEvent | React.KeyboardEvent) {\n return event && (!isMouseEvent(event) || event.button === 0) && !hasModifierKeys(event);\n}\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/internal/events/index.ts"],"names":[],"mappings":"AAYA,MAAM,eAAe;IAGnB,YACS,aAAsB,KAAK,EAC3B,SAAmB,IAAI;QADvB,eAAU,GAAV,UAAU,CAAiB;QAC3B,WAAM,GAAN,MAAM,CAAiB;QAJhC,qBAAgB,GAAG,KAAK,CAAC;QACzB,iBAAY,GAAG,KAAK,CAAC;IAIlB,CAAC;IAEJ,cAAc;QACZ,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC;IAC/B,CAAC;IAED,eAAe;QACb,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;IAC3B,CAAC;CACF;AA0BD,MAAM,UAAU,iBAAiB,CAAI,EAAE,UAAU,EAAE,MAAM,EAAsB;IAC7E,OAAO,IAAI,eAAe,CAAC,UAAU,EAAE,MAAM,CAAgB,CAAC;AAChE,CAAC;AAED,MAAM,UAAU,sBAAsB,CAAW,OAAiD,EAAE,MAAU;IAC5G,IAAI,CAAC,OAAO,EAAE;QACZ,OAAO;KACR;IACD,MAAM,KAAK,GAAG,iBAAiB,CAAC,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;IAC/D,OAAO,CAAC,KAAK,CAAC,CAAC;AACjB,CAAC;AAED,MAAM,UAAU,mBAAmB,CACjC,OAA8C,EAC9C,MAAS,EACT,WAA0C;IAE1C,IAAI,CAAC,OAAO,EAAE;QACZ,OAAO,KAAK,CAAC;KACd;IACD,MAAM,KAAK,GAAG,iBAAiB,CAAC,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;IAC9D,OAAO,CAAC,KAAK,CAAC,CAAC;IACf,IAAI,KAAK,CAAC,gBAAgB,IAAI,WAAW,EAAE;QACzC,WAAW,CAAC,cAAc,EAAE,CAAC;KAC9B;IACD,IAAI,KAAK,CAAC,YAAY,IAAI,WAAW,EAAE;QACrC,WAAW,CAAC,eAAe,EAAE,CAAC;KAC/B;IACD,OAAO,KAAK,CAAC,gBAAgB,CAAC;AAChC,CAAC;AAED,MAAM,UAAU,iBAAiB,CAC/B,OAA0D,EAC1D,UAA+B;IAE/B,OAAO,mBAAmB,CACxB,OAAO,EACP;QACE,OAAO,EAAE,UAAU,CAAC,OAAO;QAC3B,GAAG,EAAE,UAAU,CAAC,GAAG;QACnB,OAAO,EAAE,UAAU,CAAC,OAAO;QAC3B,QAAQ,EAAE,UAAU,CAAC,QAAQ;QAC7B,MAAM,EAAE,UAAU,CAAC,MAAM;QACzB,OAAO,EAAE,UAAU,CAAC,OAAO;QAC3B,WAAW,EAAE,UAAU,CAAC,WAAW,CAAC,WAAW;KAChD,EACD,UAAU,CACX,CAAC;AACJ,CAAC;AAED,MAAM,YAAY,GAAG,CAAC,CAAyC,EAAyB,EAAE;IACxF,OAAQ,CAAsB,CAAC,MAAM,KAAK,SAAS,CAAC;AACtD,CAAC,CAAC;AAEF,MAAM,UAAU,eAAe,CAAC,KAA6C;IAC3E,OAAO,KAAK,CAAC,OAAO,IAAI,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC;AAC1E,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,KAA6C;IAC5E,OAAO,KAAK,IAAI,CAAC,CAAC,YAAY,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;AAC1F,CAAC","sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport React from 'react';\n\n// This is a part of our public types API. We cannot change this in the current major version\n// eslint-disable-next-line @typescript-eslint/no-empty-object-type\nexport type NonCancelableEventHandler<Detail = {}> = (event: NonCancelableCustomEvent<Detail>) => void;\n// eslint-disable-next-line @typescript-eslint/no-empty-object-type\nexport type CancelableEventHandler<Detail = {}> = (event: CustomEvent<Detail>) => void;\n\nexport type NonCancelableCustomEvent<DetailType> = Omit<CustomEvent<DetailType>, 'preventDefault'>;\n\nclass CustomEventStub<T> {\n defaultPrevented = false;\n cancelBubble = false;\n constructor(\n public cancelable: boolean = false,\n public detail: T | null = null\n ) {}\n\n preventDefault() {\n this.defaultPrevented = true;\n }\n\n stopPropagation() {\n this.cancelBubble = true;\n }\n}\n\nexport interface BaseKeyDetail {\n keyCode: number;\n key: string;\n ctrlKey: boolean;\n shiftKey: boolean;\n altKey: boolean;\n metaKey: boolean;\n isComposing: boolean;\n}\n\nexport interface ClickDetail {\n button: number;\n ctrlKey: boolean;\n shiftKey: boolean;\n altKey: boolean;\n metaKey: boolean;\n}\n\nexport interface BaseNavigationDetail {\n href: string | undefined;\n external?: boolean;\n target?: string;\n}\n\nexport function createCustomEvent<T>({ cancelable, detail }: CustomEventInit<T>): CustomEvent<T> {\n return new CustomEventStub(cancelable, detail) as CustomEvent;\n}\n\nexport function fireNonCancelableEvent<T = null>(handler: NonCancelableEventHandler<T> | undefined, detail?: T) {\n if (!handler) {\n return;\n }\n const event = createCustomEvent({ cancelable: false, detail });\n handler(event);\n}\n\nexport function fireCancelableEvent<T>(\n handler: CancelableEventHandler<T> | undefined,\n detail: T,\n sourceEvent?: React.SyntheticEvent | Event\n) {\n if (!handler) {\n return false;\n }\n const event = createCustomEvent({ cancelable: true, detail });\n handler(event);\n if (event.defaultPrevented && sourceEvent) {\n sourceEvent.preventDefault();\n }\n if (event.cancelBubble && sourceEvent) {\n sourceEvent.stopPropagation();\n }\n return event.defaultPrevented;\n}\n\nexport function fireKeyboardEvent(\n handler: CancelableEventHandler<BaseKeyDetail> | undefined,\n reactEvent: React.KeyboardEvent\n) {\n return fireCancelableEvent(\n handler,\n {\n keyCode: reactEvent.keyCode,\n key: reactEvent.key,\n ctrlKey: reactEvent.ctrlKey,\n shiftKey: reactEvent.shiftKey,\n altKey: reactEvent.altKey,\n metaKey: reactEvent.metaKey,\n isComposing: reactEvent.nativeEvent.isComposing,\n },\n reactEvent\n );\n}\n\nconst isMouseEvent = (e: React.MouseEvent | React.KeyboardEvent): e is React.MouseEvent => {\n return (e as React.MouseEvent).button !== undefined;\n};\n\nexport function hasModifierKeys(event: React.MouseEvent | React.KeyboardEvent) {\n return event.ctrlKey || event.altKey || event.shiftKey || event.metaKey;\n}\n\nexport function isPlainLeftClick(event: React.MouseEvent | React.KeyboardEvent) {\n return event && (!isMouseEvent(event) || event.button === 0) && !hasModifierKeys(event);\n}\n"]}
@@ -658,6 +658,7 @@ export const spaceFilteringTokenOperationSelectFocusOutlineGutter: string;
658
658
  export const spaceFlashbarActionLeft: string;
659
659
  export const spaceFlashbarDismissRight: string;
660
660
  export const spaceFlashbarHorizontal: string;
661
+ export const spaceFlashbarVertical: string;
661
662
  export const spaceGridGutter: string;
662
663
  export const spaceKeyValueGap: string;
663
664
  export const spaceLayoutContentBottom: string;
@@ -658,6 +658,7 @@ export var spaceFilteringTokenOperationSelectFocusOutlineGutter = "var(--space-f
658
658
  export var spaceFlashbarActionLeft = "var(--space-flashbar-action-left-qkhz5m, 12px)";
659
659
  export var spaceFlashbarDismissRight = "var(--space-flashbar-dismiss-right-tcpfax, 0px)";
660
660
  export var spaceFlashbarHorizontal = "var(--space-flashbar-horizontal-xmjla3, 16px)";
661
+ export var spaceFlashbarVertical = "var(--space-flashbar-vertical-cgkvxy, 8px)";
661
662
  export var spaceGridGutter = "var(--space-grid-gutter-ieqn7e, 20px)";
662
663
  export var spaceKeyValueGap = "var(--space-key-value-gap-0517k5, 0px)";
663
664
  export var spaceLayoutContentBottom = "var(--space-layout-content-bottom-noqzmw, 40px)";
@@ -2143,8 +2143,8 @@ module.exports.preset = {
2143
2143
  "compact": "{spaceXxs}"
2144
2144
  },
2145
2145
  "spaceAlertVertical": {
2146
- "comfortable": "{spaceScaledXs}",
2147
- "compact": "{spaceScaledXs}"
2146
+ "comfortable": "{spaceFlashbarVertical}",
2147
+ "compact": "{spaceFlashbarVertical}"
2148
2148
  },
2149
2149
  "spaceButtonFocusOutlineGutter": {
2150
2150
  "comfortable": "4px",
@@ -2250,6 +2250,10 @@ module.exports.preset = {
2250
2250
  "comfortable": "{spaceM}",
2251
2251
  "compact": "{spaceM}"
2252
2252
  },
2253
+ "spaceFlashbarVertical": {
2254
+ "comfortable": "{spaceScaledXs}",
2255
+ "compact": "{spaceScaledXs}"
2256
+ },
2253
2257
  "spaceGridGutter": {
2254
2258
  "comfortable": "{spaceL}",
2255
2259
  "compact": "{spaceM}"
@@ -2613,8 +2617,8 @@ module.exports.preset = {
2613
2617
  "compact": "{spaceXxs}"
2614
2618
  },
2615
2619
  "spaceAlertVertical": {
2616
- "comfortable": "{spaceScaledXs}",
2617
- "compact": "{spaceScaledXs}"
2620
+ "comfortable": "{spaceFlashbarVertical}",
2621
+ "compact": "{spaceFlashbarVertical}"
2618
2622
  },
2619
2623
  "spaceButtonFocusOutlineGutter": {
2620
2624
  "comfortable": "4px",
@@ -2720,6 +2724,10 @@ module.exports.preset = {
2720
2724
  "comfortable": "{spaceM}",
2721
2725
  "compact": "{spaceM}"
2722
2726
  },
2727
+ "spaceFlashbarVertical": {
2728
+ "comfortable": "{spaceScaledXs}",
2729
+ "compact": "{spaceScaledXs}"
2730
+ },
2723
2731
  "spaceGridGutter": {
2724
2732
  "comfortable": "{spaceL}",
2725
2733
  "compact": "{spaceM}"
@@ -10059,6 +10067,7 @@ module.exports.preset = {
10059
10067
  "spaceFlashbarActionLeft": "density",
10060
10068
  "spaceFlashbarDismissRight": "density",
10061
10069
  "spaceFlashbarHorizontal": "density",
10070
+ "spaceFlashbarVertical": "density",
10062
10071
  "spaceGridGutter": "density",
10063
10072
  "spaceKeyValueGap": "density",
10064
10073
  "spaceLayoutContentBottom": "density",
@@ -11437,6 +11446,7 @@ module.exports.preset = {
11437
11446
  "spaceFlashbarActionLeft": "space-flashbar-action-left",
11438
11447
  "spaceFlashbarDismissRight": "space-flashbar-dismiss-right",
11439
11448
  "spaceFlashbarHorizontal": "space-flashbar-horizontal",
11449
+ "spaceFlashbarVertical": "space-flashbar-vertical",
11440
11450
  "spaceGridGutter": "space-grid-gutter",
11441
11451
  "spaceKeyValueGap": "space-key-value-gap",
11442
11452
  "spaceLayoutContentBottom": "space-layout-content-bottom",
@@ -12185,6 +12195,7 @@ module.exports.preset = {
12185
12195
  "spaceFlashbarActionLeft": "--space-flashbar-action-left-qkhz5m",
12186
12196
  "spaceFlashbarDismissRight": "--space-flashbar-dismiss-right-tcpfax",
12187
12197
  "spaceFlashbarHorizontal": "--space-flashbar-horizontal-xmjla3",
12198
+ "spaceFlashbarVertical": "--space-flashbar-vertical-cgkvxy",
12188
12199
  "spaceGridGutter": "--space-grid-gutter-ieqn7e",
12189
12200
  "spaceKeyValueGap": "--space-key-value-gap-0517k5",
12190
12201
  "spaceLayoutContentBottom": "--space-layout-content-bottom-noqzmw",