@cloudscape-design/components 3.0.203 → 3.0.205

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.
@@ -1,10 +1,10 @@
1
1
  import React from 'react';
2
- export declare const useVisualContext: (elementRef: React.RefObject<HTMLElement>) => string;
3
2
  interface VisualContextProps {
4
3
  contextName: string;
5
4
  className?: string;
6
5
  children: React.ReactNode;
7
6
  }
7
+ export declare function useVisualContext(elementRef: React.RefObject<HTMLElement>): string;
8
8
  /**
9
9
  * This function returns only the className string needed to apply a
10
10
  * visual context to the DOM. It is used by the default export but
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/internal/components/visual-context/index.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAmB,MAAM,OAAO,CAAC;AAIxC,eAAO,MAAM,gBAAgB,eAAgB,MAAM,SAAS,CAAC,WAAW,CAAC,WAQxE,CAAC;AAEF,UAAU,kBAAkB;IAC1B,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;CAC3B;AAED;;;;;GAKG;AACH,wBAAgB,yBAAyB,CAAC,WAAW,EAAE,MAAM,UAE5D;AAED,MAAM,CAAC,OAAO,UAAU,aAAa,CAAC,EAAE,WAAW,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE,kBAAkB,eAE7F"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/internal/components/visual-context/index.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAoC,MAAM,OAAO,CAAC;AAGzD,UAAU,kBAAkB;IAC1B,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;CAC3B;AAID,wBAAgB,gBAAgB,CAAC,UAAU,EAAE,KAAK,CAAC,SAAS,CAAC,WAAW,CAAC,UAWxE;AAED;;;;;GAKG;AACH,wBAAgB,yBAAyB,CAAC,WAAW,EAAE,MAAM,UAE5D;AAED,MAAM,CAAC,OAAO,UAAU,aAAa,CAAC,EAAE,WAAW,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE,kBAAkB,eAE7F"}
@@ -1,18 +1,20 @@
1
1
  // Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
2
2
  // SPDX-License-Identifier: Apache-2.0
3
3
  import clsx from 'clsx';
4
- import React, { useState } from 'react';
5
- import { useMutationObserver } from '../../hooks/use-mutation-observer';
4
+ import React, { useLayoutEffect, useState } from 'react';
6
5
  import { findUpUntil } from '../../utils/dom';
7
- export var useVisualContext = function (elementRef) {
8
- var contextMatch = /awsui-context-([\w-]+)/;
6
+ var contextMatch = /awsui-context-([\w-]+)/;
7
+ export function useVisualContext(elementRef) {
9
8
  var _a = useState(''), value = _a[0], setValue = _a[1];
10
- useMutationObserver(elementRef, function (node) {
11
- var contextParent = findUpUntil(node, function (node) { return !!node.className.match(contextMatch); });
12
- setValue(contextParent ? contextParent.className.match(contextMatch)[1] : '');
13
- });
9
+ useLayoutEffect(function () {
10
+ var _a;
11
+ if (elementRef.current) {
12
+ var contextParent = findUpUntil(elementRef.current, function (node) { return !!node.className.match(contextMatch); });
13
+ setValue((_a = contextParent === null || contextParent === void 0 ? void 0 : contextParent.className.match(contextMatch)[1]) !== null && _a !== void 0 ? _a : '');
14
+ }
15
+ }, [elementRef]);
14
16
  return value;
15
- };
17
+ }
16
18
  /**
17
19
  * This function returns only the className string needed to apply a
18
20
  * visual context to the DOM. It is used by the default export but
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/internal/components/visual-context/index.tsx"],"names":[],"mappings":"AAAA,qEAAqE;AACrE,sCAAsC;AACtC,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,KAAK,EAAE,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AACxC,OAAO,EAAE,mBAAmB,EAAE,MAAM,mCAAmC,CAAC;AACxE,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAE9C,MAAM,CAAC,IAAM,gBAAgB,GAAG,UAAC,UAAwC;IACvE,IAAM,YAAY,GAAG,wBAAwB,CAAC;IACxC,IAAA,KAAoB,QAAQ,CAAC,EAAE,CAAC,EAA/B,KAAK,QAAA,EAAE,QAAQ,QAAgB,CAAC;IACvC,mBAAmB,CAAC,UAAU,EAAE,UAAA,IAAI;QAClC,IAAM,aAAa,GAAG,WAAW,CAAC,IAAI,EAAE,UAAA,IAAI,IAAI,OAAA,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,YAAY,CAAC,EAApC,CAAoC,CAAC,CAAC;QACtF,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC,aAAa,CAAC,SAAS,CAAC,KAAK,CAAC,YAAY,CAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IACjF,CAAC,CAAC,CAAC;IACH,OAAO,KAAK,CAAC;AACf,CAAC,CAAC;AAQF;;;;;GAKG;AACH,MAAM,UAAU,yBAAyB,CAAC,WAAmB;IAC3D,OAAO,wBAAiB,WAAW,CAAE,CAAC;AACxC,CAAC;AAED,MAAM,CAAC,OAAO,UAAU,aAAa,CAAC,EAAwD;QAAtD,WAAW,iBAAA,EAAE,SAAS,eAAA,EAAE,QAAQ,cAAA;IACtE,OAAO,6BAAK,SAAS,EAAE,IAAI,CAAC,yBAAyB,CAAC,WAAW,CAAC,EAAE,SAAS,CAAC,IAAG,QAAQ,CAAO,CAAC;AACnG,CAAC","sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport clsx from 'clsx';\nimport React, { useState } from 'react';\nimport { useMutationObserver } from '../../hooks/use-mutation-observer';\nimport { findUpUntil } from '../../utils/dom';\n\nexport const useVisualContext = (elementRef: React.RefObject<HTMLElement>) => {\n const contextMatch = /awsui-context-([\\w-]+)/;\n const [value, setValue] = useState('');\n useMutationObserver(elementRef, node => {\n const contextParent = findUpUntil(node, node => !!node.className.match(contextMatch));\n setValue(contextParent ? contextParent.className.match(contextMatch)![1] : '');\n });\n return value;\n};\n\ninterface VisualContextProps {\n contextName: string;\n className?: string;\n children: React.ReactNode;\n}\n\n/**\n * This function returns only the className string needed to apply a\n * visual context to the DOM. It is used by the default export but\n * can also be imported directly for situations where the insertion\n * of a <div> node creates style problems.\n */\nexport function getVisualContextClassname(contextName: string) {\n return `awsui-context-${contextName}`;\n}\n\nexport default function VisualContext({ contextName, className, children }: VisualContextProps) {\n return <div className={clsx(getVisualContextClassname(contextName), className)}>{children}</div>;\n}\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/internal/components/visual-context/index.tsx"],"names":[],"mappings":"AAAA,qEAAqE;AACrE,sCAAsC;AACtC,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,KAAK,EAAE,EAAE,eAAe,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AACzD,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAQ9C,IAAM,YAAY,GAAG,wBAAwB,CAAC;AAE9C,MAAM,UAAU,gBAAgB,CAAC,UAAwC;IACjE,IAAA,KAAoB,QAAQ,CAAC,EAAE,CAAC,EAA/B,KAAK,QAAA,EAAE,QAAQ,QAAgB,CAAC;IAEvC,eAAe,CAAC;;QACd,IAAI,UAAU,CAAC,OAAO,EAAE;YACtB,IAAM,aAAa,GAAG,WAAW,CAAC,UAAU,CAAC,OAAO,EAAE,UAAA,IAAI,IAAI,OAAA,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,YAAY,CAAC,EAApC,CAAoC,CAAC,CAAC;YACpG,QAAQ,CAAC,MAAA,aAAa,aAAb,aAAa,uBAAb,aAAa,CAAE,SAAS,CAAC,KAAK,CAAC,YAAY,EAAG,CAAC,CAAC,mCAAI,EAAE,CAAC,CAAC;SAClE;IACH,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC;IAEjB,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,yBAAyB,CAAC,WAAmB;IAC3D,OAAO,wBAAiB,WAAW,CAAE,CAAC;AACxC,CAAC;AAED,MAAM,CAAC,OAAO,UAAU,aAAa,CAAC,EAAwD;QAAtD,WAAW,iBAAA,EAAE,SAAS,eAAA,EAAE,QAAQ,cAAA;IACtE,OAAO,6BAAK,SAAS,EAAE,IAAI,CAAC,yBAAyB,CAAC,WAAW,CAAC,EAAE,SAAS,CAAC,IAAG,QAAQ,CAAO,CAAC;AACnG,CAAC","sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport clsx from 'clsx';\nimport React, { useLayoutEffect, useState } from 'react';\nimport { findUpUntil } from '../../utils/dom';\n\ninterface VisualContextProps {\n contextName: string;\n className?: string;\n children: React.ReactNode;\n}\n\nconst contextMatch = /awsui-context-([\\w-]+)/;\n\nexport function useVisualContext(elementRef: React.RefObject<HTMLElement>) {\n const [value, setValue] = useState('');\n\n useLayoutEffect(() => {\n if (elementRef.current) {\n const contextParent = findUpUntil(elementRef.current, node => !!node.className.match(contextMatch));\n setValue(contextParent?.className.match(contextMatch)![1] ?? '');\n }\n }, [elementRef]);\n\n return value;\n}\n\n/**\n * This function returns only the className string needed to apply a\n * visual context to the DOM. It is used by the default export but\n * can also be imported directly for situations where the insertion\n * of a <div> node creates style problems.\n */\nexport function getVisualContextClassname(contextName: string) {\n return `awsui-context-${contextName}`;\n}\n\nexport default function VisualContext({ contextName, className, children }: VisualContextProps) {\n return <div className={clsx(getVisualContextClassname(contextName), className)}>{children}</div>;\n}\n"]}
@@ -1,6 +1,6 @@
1
1
 
2
2
  export var PACKAGE_SOURCE = 'components';
3
- export var PACKAGE_VERSION = '3.0.0 (747e321)';
3
+ export var PACKAGE_VERSION = '3.0.0 (fc49ae8)';
4
4
  export var THEME = 'open-source-visual-refresh';
5
5
  export var ALWAYS_VISUAL_REFRESH = true;
6
6
 
@@ -1,3 +1,3 @@
1
1
  {
2
- "commit": "747e321bc2aa12d4bdbb1eae635caaa17957b444"
2
+ "commit": "fc49ae884ccfbb8632240c6b82cbd323ce29fddf"
3
3
  }
package/package.json CHANGED
@@ -81,7 +81,7 @@
81
81
  "./internal/base-component/index.js",
82
82
  "./internal/base-component/styles.css.js"
83
83
  ],
84
- "version": "3.0.203",
84
+ "version": "3.0.205",
85
85
  "repository": {
86
86
  "type": "git",
87
87
  "url": "https://github.com/cloudscape-design/components.git"
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/wizard/index.tsx"],"names":[],"mappings":"AAWA,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAS3C,OAAO,EAAE,WAAW,EAAE,CAAC;AAEvB,MAAM,CAAC,OAAO,UAAU,MAAM,CAAC,EAC7B,KAAK,EACL,eAAe,EAAE,yBAAyB,EAC1C,WAAW,EACX,iBAAyB,EACzB,WAAmB,EACnB,gBAAgB,EAChB,QAAQ,EACR,QAAQ,EACR,UAAU,EACV,GAAG,IAAI,EACR,EAAE,WAAW,eAyGb"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/wizard/index.tsx"],"names":[],"mappings":"AAWA,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAgB3C,OAAO,EAAE,WAAW,EAAE,CAAC;AAEvB,MAAM,CAAC,OAAO,UAAU,MAAM,CAAC,EAC7B,KAAK,EACL,eAAe,EAAE,yBAAyB,EAC1C,WAAW,EACX,iBAAyB,EACzB,WAAmB,EACnB,gBAAgB,EAChB,QAAQ,EACR,QAAQ,EACR,UAAU,EACV,GAAG,IAAI,EACR,EAAE,WAAW,eAiHb"}
package/wizard/index.js CHANGED
@@ -15,7 +15,7 @@ import { applyDisplayName } from '../internal/utils/apply-display-name';
15
15
  import useBaseComponent from '../internal/hooks/use-base-component';
16
16
  import { useMergeRefs } from '../internal/hooks/use-merge-refs';
17
17
  import { useVisualRefresh } from '../internal/hooks/use-visual-mode';
18
- import { trackStartStep, trackNavigate, trackSubmit, trackStartWizard } from './internal/analytics';
18
+ import { trackStartStep, trackNavigate, trackSubmit, trackStartWizard, trackEndWizard, trackCancel, } from './internal/analytics';
19
19
  export default function Wizard(_a) {
20
20
  var steps = _a.steps, controlledActiveStepIndex = _a.activeStepIndex, i18nStrings = _a.i18nStrings, _b = _a.isLoadingNextStep, isLoadingNextStep = _b === void 0 ? false : _b, _c = _a.allowSkipTo, allowSkipTo = _c === void 0 ? false : _c, secondaryActions = _a.secondaryActions, onCancel = _a.onCancel, onSubmit = _a.onSubmit, onNavigate = _a.onNavigate, rest = __rest(_a, ["steps", "activeStepIndex", "i18nStrings", "isLoadingNextStep", "allowSkipTo", "secondaryActions", "onCancel", "onSubmit", "onNavigate"]);
21
21
  var __internalRootRef = useBaseComponent('Wizard').__internalRootRef;
@@ -41,7 +41,10 @@ export default function Wizard(_a) {
41
41
  };
42
42
  var onStepClick = function (stepIndex) { return navigationEvent(stepIndex, 'step'); };
43
43
  var onSkipToClick = function (stepIndex) { return navigationEvent(stepIndex, 'skip'); };
44
- var onCancelClick = function () { return fireNonCancelableEvent(onCancel); };
44
+ var onCancelClick = function () {
45
+ trackCancel(actualActiveStepIndex, funnelId);
46
+ fireNonCancelableEvent(onCancel);
47
+ };
45
48
  var onPreviousClick = function () { return navigationEvent(actualActiveStepIndex - 1, 'previous'); };
46
49
  var onPrimaryClick = function () {
47
50
  if (isLastStep) {
@@ -60,6 +63,10 @@ export default function Wizard(_a) {
60
63
  }
61
64
  useEffect(function () {
62
65
  trackStartWizard();
66
+ return function () {
67
+ trackEndWizard(funnelId);
68
+ };
69
+ // eslint-disable-next-line react-hooks/exhaustive-deps -- this is intentional
63
70
  }, []);
64
71
  useEffect(function () {
65
72
  trackStartStep(actualActiveStepIndex, funnelId);
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/wizard/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, useRef } from 'react';\nimport clsx from 'clsx';\nimport { getBaseProps } from '../internal/base-component';\nimport { fireNonCancelableEvent } from '../internal/events';\nimport { warnOnce } from '../internal/logging';\nimport { useContainerBreakpoints } from '../internal/hooks/container-queries';\nimport { useControllable } from '../internal/hooks/use-controllable';\nimport WizardForm from './wizard-form';\nimport WizardNavigation from './wizard-navigation';\nimport { WizardProps } from './interfaces';\nimport styles from './styles.css.js';\nimport { applyDisplayName } from '../internal/utils/apply-display-name';\nimport useBaseComponent from '../internal/hooks/use-base-component';\nimport { useMergeRefs } from '../internal/hooks/use-merge-refs';\nimport { useVisualRefresh } from '../internal/hooks/use-visual-mode';\n\nimport { trackStartStep, trackNavigate, trackSubmit, trackStartWizard } from './internal/analytics';\n\nexport { WizardProps };\n\nexport default function Wizard({\n steps,\n activeStepIndex: controlledActiveStepIndex,\n i18nStrings,\n isLoadingNextStep = false,\n allowSkipTo = false,\n secondaryActions,\n onCancel,\n onSubmit,\n onNavigate,\n ...rest\n}: WizardProps) {\n const { __internalRootRef } = useBaseComponent('Wizard');\n const baseProps = getBaseProps(rest);\n const funnelId = baseProps.id;\n\n const [breakpoint, breakpointsRef] = useContainerBreakpoints(['xs']);\n const ref = useMergeRefs(breakpointsRef, __internalRootRef);\n\n const smallContainer = breakpoint === 'default';\n\n const [activeStepIndex, setActiveStepIndex] = useControllable(controlledActiveStepIndex, onNavigate, 0, {\n componentName: 'Wizard',\n controlledProp: 'activeStepIndex',\n changeHandler: 'onNavigate',\n });\n const actualActiveStepIndex = activeStepIndex ? Math.min(activeStepIndex, steps.length - 1) : 0;\n\n const farthestStepIndex = useRef<number>(actualActiveStepIndex);\n farthestStepIndex.current = Math.max(farthestStepIndex.current, actualActiveStepIndex);\n\n const isVisualRefresh = useVisualRefresh();\n const isLastStep = actualActiveStepIndex >= steps.length - 1;\n\n const navigationEvent = (requestedStepIndex: number, reason: WizardProps.NavigationReason) => {\n trackNavigate(actualActiveStepIndex, requestedStepIndex, reason, funnelId);\n setActiveStepIndex(requestedStepIndex);\n fireNonCancelableEvent(onNavigate, { requestedStepIndex, reason });\n };\n const onStepClick = (stepIndex: number) => navigationEvent(stepIndex, 'step');\n const onSkipToClick = (stepIndex: number) => navigationEvent(stepIndex, 'skip');\n const onCancelClick = () => fireNonCancelableEvent(onCancel);\n const onPreviousClick = () => navigationEvent(actualActiveStepIndex - 1, 'previous');\n const onPrimaryClick = () => {\n if (isLastStep) {\n trackSubmit(actualActiveStepIndex, funnelId);\n fireNonCancelableEvent(onSubmit);\n } else {\n navigationEvent(actualActiveStepIndex + 1, 'next');\n }\n };\n\n if (activeStepIndex && activeStepIndex >= steps.length) {\n warnOnce(\n 'Wizard',\n `You have set \\`activeStepIndex\\` to ${activeStepIndex} but you have provided only ${\n steps.length\n } steps. Its value is ignored and the component uses ${steps.length - 1} instead.`\n );\n }\n\n if (allowSkipTo && !i18nStrings.skipToButtonLabel) {\n warnOnce(\n 'Wizard',\n `You have set \\`allowSkipTo\\` but you have not provided \\`i18nStrings.skipToButtonLabel\\`. The skip-to button will not be rendered.`\n );\n }\n\n useEffect(() => {\n trackStartWizard();\n }, []);\n\n useEffect(() => {\n trackStartStep(actualActiveStepIndex, funnelId);\n }, [actualActiveStepIndex, funnelId]);\n\n return (\n <div {...baseProps} className={clsx(styles.root, baseProps.className)} ref={ref}>\n <div\n className={clsx(styles.wizard, isVisualRefresh && styles.refresh, smallContainer && styles['small-container'])}\n >\n <WizardNavigation\n activeStepIndex={actualActiveStepIndex}\n farthestStepIndex={farthestStepIndex.current}\n allowSkipTo={allowSkipTo}\n hidden={smallContainer}\n i18nStrings={i18nStrings}\n isVisualRefresh={isVisualRefresh}\n isLoadingNextStep={isLoadingNextStep}\n onStepClick={onStepClick}\n onSkipToClick={onSkipToClick}\n steps={steps}\n />\n <div\n className={clsx(styles.form, isVisualRefresh && styles.refresh, smallContainer && styles['small-container'])}\n >\n {isVisualRefresh && <div className={clsx(styles.background, 'awsui-context-content-header')} />}\n\n <WizardForm\n steps={steps}\n isVisualRefresh={isVisualRefresh}\n showCollapsedSteps={smallContainer}\n i18nStrings={i18nStrings}\n activeStepIndex={actualActiveStepIndex}\n isPrimaryLoading={isLoadingNextStep}\n allowSkipTo={allowSkipTo}\n secondaryActions={secondaryActions}\n onCancelClick={onCancelClick}\n onPreviousClick={onPreviousClick}\n onSkipToClick={onSkipToClick}\n onPrimaryClick={onPrimaryClick}\n />\n </div>\n </div>\n </div>\n );\n}\n\napplyDisplayName(Wizard, 'Wizard');\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/wizard/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, useRef } from 'react';\nimport clsx from 'clsx';\nimport { getBaseProps } from '../internal/base-component';\nimport { fireNonCancelableEvent } from '../internal/events';\nimport { warnOnce } from '../internal/logging';\nimport { useContainerBreakpoints } from '../internal/hooks/container-queries';\nimport { useControllable } from '../internal/hooks/use-controllable';\nimport WizardForm from './wizard-form';\nimport WizardNavigation from './wizard-navigation';\nimport { WizardProps } from './interfaces';\nimport styles from './styles.css.js';\nimport { applyDisplayName } from '../internal/utils/apply-display-name';\nimport useBaseComponent from '../internal/hooks/use-base-component';\nimport { useMergeRefs } from '../internal/hooks/use-merge-refs';\nimport { useVisualRefresh } from '../internal/hooks/use-visual-mode';\n\nimport {\n trackStartStep,\n trackNavigate,\n trackSubmit,\n trackStartWizard,\n trackEndWizard,\n trackCancel,\n} from './internal/analytics';\n\nexport { WizardProps };\n\nexport default function Wizard({\n steps,\n activeStepIndex: controlledActiveStepIndex,\n i18nStrings,\n isLoadingNextStep = false,\n allowSkipTo = false,\n secondaryActions,\n onCancel,\n onSubmit,\n onNavigate,\n ...rest\n}: WizardProps) {\n const { __internalRootRef } = useBaseComponent('Wizard');\n const baseProps = getBaseProps(rest);\n const funnelId = baseProps.id;\n\n const [breakpoint, breakpointsRef] = useContainerBreakpoints(['xs']);\n const ref = useMergeRefs(breakpointsRef, __internalRootRef);\n\n const smallContainer = breakpoint === 'default';\n\n const [activeStepIndex, setActiveStepIndex] = useControllable(controlledActiveStepIndex, onNavigate, 0, {\n componentName: 'Wizard',\n controlledProp: 'activeStepIndex',\n changeHandler: 'onNavigate',\n });\n const actualActiveStepIndex = activeStepIndex ? Math.min(activeStepIndex, steps.length - 1) : 0;\n\n const farthestStepIndex = useRef<number>(actualActiveStepIndex);\n farthestStepIndex.current = Math.max(farthestStepIndex.current, actualActiveStepIndex);\n\n const isVisualRefresh = useVisualRefresh();\n const isLastStep = actualActiveStepIndex >= steps.length - 1;\n\n const navigationEvent = (requestedStepIndex: number, reason: WizardProps.NavigationReason) => {\n trackNavigate(actualActiveStepIndex, requestedStepIndex, reason, funnelId);\n setActiveStepIndex(requestedStepIndex);\n fireNonCancelableEvent(onNavigate, { requestedStepIndex, reason });\n };\n const onStepClick = (stepIndex: number) => navigationEvent(stepIndex, 'step');\n const onSkipToClick = (stepIndex: number) => navigationEvent(stepIndex, 'skip');\n const onCancelClick = () => {\n trackCancel(actualActiveStepIndex, funnelId);\n fireNonCancelableEvent(onCancel);\n };\n const onPreviousClick = () => navigationEvent(actualActiveStepIndex - 1, 'previous');\n const onPrimaryClick = () => {\n if (isLastStep) {\n trackSubmit(actualActiveStepIndex, funnelId);\n fireNonCancelableEvent(onSubmit);\n } else {\n navigationEvent(actualActiveStepIndex + 1, 'next');\n }\n };\n\n if (activeStepIndex && activeStepIndex >= steps.length) {\n warnOnce(\n 'Wizard',\n `You have set \\`activeStepIndex\\` to ${activeStepIndex} but you have provided only ${\n steps.length\n } steps. Its value is ignored and the component uses ${steps.length - 1} instead.`\n );\n }\n\n if (allowSkipTo && !i18nStrings.skipToButtonLabel) {\n warnOnce(\n 'Wizard',\n `You have set \\`allowSkipTo\\` but you have not provided \\`i18nStrings.skipToButtonLabel\\`. The skip-to button will not be rendered.`\n );\n }\n\n useEffect(() => {\n trackStartWizard();\n\n return () => {\n trackEndWizard(funnelId);\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps -- this is intentional\n }, []);\n\n useEffect(() => {\n trackStartStep(actualActiveStepIndex, funnelId);\n }, [actualActiveStepIndex, funnelId]);\n\n return (\n <div {...baseProps} className={clsx(styles.root, baseProps.className)} ref={ref}>\n <div\n className={clsx(styles.wizard, isVisualRefresh && styles.refresh, smallContainer && styles['small-container'])}\n >\n <WizardNavigation\n activeStepIndex={actualActiveStepIndex}\n farthestStepIndex={farthestStepIndex.current}\n allowSkipTo={allowSkipTo}\n hidden={smallContainer}\n i18nStrings={i18nStrings}\n isVisualRefresh={isVisualRefresh}\n isLoadingNextStep={isLoadingNextStep}\n onStepClick={onStepClick}\n onSkipToClick={onSkipToClick}\n steps={steps}\n />\n <div\n className={clsx(styles.form, isVisualRefresh && styles.refresh, smallContainer && styles['small-container'])}\n >\n {isVisualRefresh && <div className={clsx(styles.background, 'awsui-context-content-header')} />}\n\n <WizardForm\n steps={steps}\n isVisualRefresh={isVisualRefresh}\n showCollapsedSteps={smallContainer}\n i18nStrings={i18nStrings}\n activeStepIndex={actualActiveStepIndex}\n isPrimaryLoading={isLoadingNextStep}\n allowSkipTo={allowSkipTo}\n secondaryActions={secondaryActions}\n onCancelClick={onCancelClick}\n onPreviousClick={onPreviousClick}\n onSkipToClick={onSkipToClick}\n onPrimaryClick={onPrimaryClick}\n />\n </div>\n </div>\n </div>\n );\n}\n\napplyDisplayName(Wizard, 'Wizard');\n"]}
@@ -1,6 +1,8 @@
1
1
  import { WizardProps } from '../interfaces';
2
2
  export declare const trackStartWizard: () => void;
3
- export declare const trackStartStep: (stepIndex?: number, funnelId?: string) => void;
3
+ export declare const trackEndWizard: (funnelId: string | undefined) => void;
4
+ export declare const trackStartStep: (stepIndex: number, funnelId?: string) => void;
4
5
  export declare const trackNavigate: (activeStepIndex: number, requestedStepIndex: number, reason: WizardProps.NavigationReason, funnelId?: string) => void;
5
6
  export declare const trackSubmit: (stepIndex: number, funnelId?: string) => void;
7
+ export declare const trackCancel: (stepIndex: number, funnelId?: string) => void;
6
8
  //# sourceMappingURL=analytics.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"analytics.d.ts","sourceRoot":"","sources":["../../../../src/wizard/internal/analytics.tsx"],"names":[],"mappings":"AAKA,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAgC5C,eAAO,MAAM,gBAAgB,YAE5B,CAAC;AAEF,eAAO,MAAM,cAAc,eAAgB,MAAM,aAAa,MAAM,SAgBnE,CAAC;AAEF,eAAO,MAAM,aAAa,oBACP,MAAM,sBACH,MAAM,UAClB,YAAY,gBAAgB,aACzB,MAAM,SAYlB,CAAC;AAEF,eAAO,MAAM,WAAW,cAAe,MAAM,aAAa,MAAM,SAY/D,CAAC"}
1
+ {"version":3,"file":"analytics.d.ts","sourceRoot":"","sources":["../../../../src/wizard/internal/analytics.tsx"],"names":[],"mappings":"AAKA,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAmC5C,eAAO,MAAM,gBAAgB,YAM5B,CAAC;AAEF,eAAO,MAAM,cAAc,aAAc,MAAM,GAAG,SAAS,SAY1D,CAAC;AAEF,eAAO,MAAM,cAAc,cAAe,MAAM,aAAa,MAAM,SAiBlE,CAAC;AAEF,eAAO,MAAM,aAAa,oBACP,MAAM,sBACH,MAAM,UAClB,YAAY,gBAAgB,aACzB,MAAM,SAYlB,CAAC;AAEF,eAAO,MAAM,WAAW,cAAe,MAAM,aAAa,MAAM,SAY/D,CAAC;AAEF,eAAO,MAAM,WAAW,cAAe,MAAM,aAAa,MAAM,SAY/D,CAAC"}
@@ -17,7 +17,9 @@ var createEventDetail = function (stepIndex) {
17
17
  // A custom time cache is used to not clear the timer between navigation attempts
18
18
  // This allows us the ability to track time to attempt each step as well as the time to complete
19
19
  // each step
20
- var timeCache = {};
20
+ var timeCache;
21
+ var currentStepIndex;
22
+ var success;
21
23
  var timeStart = function (key) {
22
24
  if (key === void 0) { key = 'current'; }
23
25
  timeCache[key] = Date.now();
@@ -36,9 +38,19 @@ var timeEnd = function (key, clear) {
36
38
  return (Date.now() - start) / 1000; // Convert to seconds
37
39
  };
38
40
  export var trackStartWizard = function () {
41
+ timeCache = {};
42
+ currentStepIndex = 0;
43
+ success = false;
39
44
  timeStart(prefix);
40
45
  };
46
+ export var trackEndWizard = function (funnelId) {
47
+ // End the timer of the wizard
48
+ var time = timeEnd(prefix, true);
49
+ var eventContext = createEventContext(currentStepIndex);
50
+ metrics.sendPanoramaMetric(__assign(__assign({ eventContext: eventContext, eventDetail: "".concat(success), eventType: createEventType('end') }, (time !== undefined && { eventValue: time.toString() })), (funnelId && { funnel: funnelId })));
51
+ };
41
52
  export var trackStartStep = function (stepIndex, funnelId) {
53
+ currentStepIndex = stepIndex;
42
54
  var eventContext = createEventContext(stepIndex);
43
55
  // End the timer of the previous step
44
56
  var time = timeEnd();
@@ -52,9 +64,15 @@ export var trackNavigate = function (activeStepIndex, requestedStepIndex, reason
52
64
  metrics.sendPanoramaMetric(__assign({ eventContext: eventContext, eventDetail: createEventDetail(requestedStepIndex), eventType: createEventType('navigate'), eventValue: __assign({ reason: reason }, (time !== undefined && { time: time })) }, (funnelId && { funnel: funnelId })));
53
65
  };
54
66
  export var trackSubmit = function (stepIndex, funnelId) {
55
- var eventContext = createEventContext(stepIndex);
56
- // End the timer of the wizard
67
+ success = true;
57
68
  var time = timeEnd(prefix);
69
+ var eventContext = createEventContext(stepIndex);
58
70
  metrics.sendPanoramaMetric(__assign(__assign({ eventContext: eventContext, eventDetail: createEventDetail(stepIndex), eventType: createEventType('submit') }, (time !== undefined && { eventValue: time.toString() })), (funnelId && { funnel: funnelId })));
59
71
  };
72
+ export var trackCancel = function (stepIndex, funnelId) {
73
+ success = false;
74
+ var time = timeEnd(prefix);
75
+ var eventContext = createEventContext(stepIndex);
76
+ metrics.sendPanoramaMetric(__assign(__assign({ eventContext: eventContext, eventDetail: createEventDetail(stepIndex), eventType: createEventType('cancel') }, (time !== undefined && { eventValue: time.toString() })), (funnelId && { funnel: funnelId })));
77
+ };
60
78
  //# sourceMappingURL=analytics.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"analytics.js","sourceRoot":"","sources":["../../../../src/wizard/internal/analytics.tsx"],"names":[],"mappings":"AAAA,qEAAqE;AACrE,sCAAsC;;AAEtC,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAC7E,OAAO,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AAGjD,IAAM,OAAO,GAAG,IAAI,OAAO,CAAC,cAAc,EAAE,eAAe,CAAC,CAAC;AAE7D,IAAM,MAAM,GAAG,YAAY,CAAC;AAE5B,IAAM,eAAe,GAAG,UAAC,SAAiB,IAAK,OAAA,UAAG,MAAM,cAAI,SAAS,CAAE,EAAxB,CAAwB,CAAC;AACxE,IAAM,kBAAkB,GAAG,UAAC,SAAa;IAAb,0BAAA,EAAA,aAAa;IAAK,OAAA,UAAG,MAAM,kBAAQ,SAAS,GAAG,CAAC,CAAE;AAAhC,CAAgC,CAAC;AAC/E,IAAM,iBAAiB,GAAG,UAAC,SAAa;IAAb,0BAAA,EAAA,aAAa;IAAK,OAAA,cAAO,SAAS,GAAG,CAAC,CAAE;AAAtB,CAAsB,CAAC;AAEpE,iFAAiF;AACjF,gGAAgG;AAChG,YAAY;AACZ,IAAM,SAAS,GAA2B,EAAE,CAAC;AAC7C,IAAM,SAAS,GAAG,UAAC,GAAe;IAAf,oBAAA,EAAA,eAAe;IAChC,SAAS,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAC9B,CAAC,CAAC;AAEF,IAAM,OAAO,GAAG,UAAC,GAAe,EAAE,KAAa;IAA9B,oBAAA,EAAA,eAAe;IAAE,sBAAA,EAAA,aAAa;IAC7C,IAAM,KAAK,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC;IAC7B,0DAA0D;IAC1D,IAAI,CAAC,KAAK,EAAE;QACV,OAAO,SAAS,CAAC;KAClB;IAED,IAAI,KAAK,EAAE;QACT,OAAO,SAAS,CAAC,GAAG,CAAC,CAAC;KACvB;IAED,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC,GAAG,IAAI,CAAC,CAAC,qBAAqB;AAC3D,CAAC,CAAC;AAEF,MAAM,CAAC,IAAM,gBAAgB,GAAG;IAC9B,SAAS,CAAC,MAAM,CAAC,CAAC;AACpB,CAAC,CAAC;AAEF,MAAM,CAAC,IAAM,cAAc,GAAG,UAAC,SAAkB,EAAE,QAAiB;IAClE,IAAM,YAAY,GAAG,kBAAkB,CAAC,SAAS,CAAC,CAAC;IAEnD,qCAAqC;IACrC,IAAM,IAAI,GAAG,OAAO,EAAE,CAAC;IAEvB,wCAAwC;IACxC,SAAS,EAAE,CAAC;IAEZ,OAAO,CAAC,kBAAkB,qBACxB,YAAY,cAAA,EACZ,WAAW,EAAE,iBAAiB,CAAC,SAAS,CAAC,EACzC,SAAS,EAAE,eAAe,CAAC,MAAM,CAAC,IAC/B,CAAC,QAAQ,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,GAClC,CAAC,IAAI,KAAK,SAAS,IAAI,EAAE,UAAU,EAAE,IAAI,CAAC,QAAQ,EAAE,EAAE,CAAC,EAC1D,CAAC;AACL,CAAC,CAAC;AAEF,MAAM,CAAC,IAAM,aAAa,GAAG,UAC3B,eAAuB,EACvB,kBAA0B,EAC1B,MAAoC,EACpC,QAAiB;IAEjB,IAAM,YAAY,GAAG,kBAAkB,CAAC,eAAe,CAAC,CAAC;IACzD,IAAM,IAAI,GAAG,OAAO,EAAE,CAAC;IAEvB,OAAO,CAAC,kBAAkB,YACxB,YAAY,cAAA,EACZ,WAAW,EAAE,iBAAiB,CAAC,kBAAkB,CAAC,EAClD,SAAS,EAAE,eAAe,CAAC,UAAU,CAAC,EACtC,UAAU,aAAI,MAAM,QAAA,IAAK,CAAC,IAAI,KAAK,SAAS,IAAI,EAAE,IAAI,MAAA,EAAE,CAAC,KACtD,CAAC,QAAQ,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,EACrC,CAAC;AACL,CAAC,CAAC;AAEF,MAAM,CAAC,IAAM,WAAW,GAAG,UAAC,SAAiB,EAAE,QAAiB;IAC9D,IAAM,YAAY,GAAG,kBAAkB,CAAC,SAAS,CAAC,CAAC;IACnD,8BAA8B;IAC9B,IAAM,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAE7B,OAAO,CAAC,kBAAkB,qBACxB,YAAY,cAAA,EACZ,WAAW,EAAE,iBAAiB,CAAC,SAAS,CAAC,EACzC,SAAS,EAAE,eAAe,CAAC,QAAQ,CAAC,IACjC,CAAC,IAAI,KAAK,SAAS,IAAI,EAAE,UAAU,EAAE,IAAI,CAAC,QAAQ,EAAE,EAAE,CAAC,GACvD,CAAC,QAAQ,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,EACrC,CAAC;AACL,CAAC,CAAC","sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport { PACKAGE_SOURCE, PACKAGE_VERSION } from '../../internal/environment';\nimport { Metrics } from '../../internal/metrics';\nimport { WizardProps } from '../interfaces';\n\nconst metrics = new Metrics(PACKAGE_SOURCE, PACKAGE_VERSION);\n\nconst prefix = 'csa_wizard';\n\nconst createEventType = (eventType: string) => `${prefix}_${eventType}`;\nconst createEventContext = (stepIndex = 0) => `${prefix}_step${stepIndex + 1}`;\nconst createEventDetail = (stepIndex = 0) => `step${stepIndex + 1}`;\n\n// A custom time cache is used to not clear the timer between navigation attempts\n// This allows us the ability to track time to attempt each step as well as the time to complete\n// each step\nconst timeCache: Record<string, number> = {};\nconst timeStart = (key = 'current') => {\n timeCache[key] = Date.now();\n};\n\nconst timeEnd = (key = 'current', clear = false) => {\n const start = timeCache[key];\n // No start time is available when starting the first step\n if (!start) {\n return undefined;\n }\n\n if (clear) {\n delete timeCache[key];\n }\n\n return (Date.now() - start) / 1000; // Convert to seconds\n};\n\nexport const trackStartWizard = () => {\n timeStart(prefix);\n};\n\nexport const trackStartStep = (stepIndex?: number, funnelId?: string) => {\n const eventContext = createEventContext(stepIndex);\n\n // End the timer of the previous step\n const time = timeEnd();\n\n // Start a new timer of the current step\n timeStart();\n\n metrics.sendPanoramaMetric({\n eventContext,\n eventDetail: createEventDetail(stepIndex),\n eventType: createEventType('step'),\n ...(funnelId && { funnel: funnelId }),\n ...(time !== undefined && { eventValue: time.toString() }),\n });\n};\n\nexport const trackNavigate = (\n activeStepIndex: number,\n requestedStepIndex: number,\n reason: WizardProps.NavigationReason,\n funnelId?: string\n) => {\n const eventContext = createEventContext(activeStepIndex);\n const time = timeEnd();\n\n metrics.sendPanoramaMetric({\n eventContext,\n eventDetail: createEventDetail(requestedStepIndex),\n eventType: createEventType('navigate'),\n eventValue: { reason, ...(time !== undefined && { time }) },\n ...(funnelId && { funnel: funnelId }),\n });\n};\n\nexport const trackSubmit = (stepIndex: number, funnelId?: string) => {\n const eventContext = createEventContext(stepIndex);\n // End the timer of the wizard\n const time = timeEnd(prefix);\n\n metrics.sendPanoramaMetric({\n eventContext,\n eventDetail: createEventDetail(stepIndex),\n eventType: createEventType('submit'),\n ...(time !== undefined && { eventValue: time.toString() }),\n ...(funnelId && { funnel: funnelId }),\n });\n};\n"]}
1
+ {"version":3,"file":"analytics.js","sourceRoot":"","sources":["../../../../src/wizard/internal/analytics.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\n\nimport { PACKAGE_SOURCE, PACKAGE_VERSION } from '../../internal/environment';\nimport { Metrics } from '../../internal/metrics';\nimport { WizardProps } from '../interfaces';\n\nconst metrics = new Metrics(PACKAGE_SOURCE, PACKAGE_VERSION);\n\nconst prefix = 'csa_wizard';\n\nconst createEventType = (eventType: string) => `${prefix}_${eventType}`;\nconst createEventContext = (stepIndex = 0) => `${prefix}_step${stepIndex + 1}`;\nconst createEventDetail = (stepIndex = 0) => `step${stepIndex + 1}`;\n\n// A custom time cache is used to not clear the timer between navigation attempts\n// This allows us the ability to track time to attempt each step as well as the time to complete\n// each step\nlet timeCache: Record<string, number>;\nlet currentStepIndex: number;\nlet success: boolean;\n\nconst timeStart = (key = 'current') => {\n timeCache[key] = Date.now();\n};\n\nconst timeEnd = (key = 'current', clear = false) => {\n const start = timeCache[key];\n // No start time is available when starting the first step\n if (!start) {\n return undefined;\n }\n\n if (clear) {\n delete timeCache[key];\n }\n\n return (Date.now() - start) / 1000; // Convert to seconds\n};\n\nexport const trackStartWizard = () => {\n timeCache = {};\n currentStepIndex = 0;\n success = false;\n\n timeStart(prefix);\n};\n\nexport const trackEndWizard = (funnelId: string | undefined) => {\n // End the timer of the wizard\n const time = timeEnd(prefix, true);\n\n const eventContext = createEventContext(currentStepIndex);\n metrics.sendPanoramaMetric({\n eventContext,\n eventDetail: `${success}`,\n eventType: createEventType('end'),\n ...(time !== undefined && { eventValue: time.toString() }),\n ...(funnelId && { funnel: funnelId }),\n });\n};\n\nexport const trackStartStep = (stepIndex: number, funnelId?: string) => {\n currentStepIndex = stepIndex;\n const eventContext = createEventContext(stepIndex);\n\n // End the timer of the previous step\n const time = timeEnd();\n\n // Start a new timer of the current step\n timeStart();\n\n metrics.sendPanoramaMetric({\n eventContext,\n eventDetail: createEventDetail(stepIndex),\n eventType: createEventType('step'),\n ...(funnelId && { funnel: funnelId }),\n ...(time !== undefined && { eventValue: time.toString() }),\n });\n};\n\nexport const trackNavigate = (\n activeStepIndex: number,\n requestedStepIndex: number,\n reason: WizardProps.NavigationReason,\n funnelId?: string\n) => {\n const eventContext = createEventContext(activeStepIndex);\n const time = timeEnd();\n\n metrics.sendPanoramaMetric({\n eventContext,\n eventDetail: createEventDetail(requestedStepIndex),\n eventType: createEventType('navigate'),\n eventValue: { reason, ...(time !== undefined && { time }) },\n ...(funnelId && { funnel: funnelId }),\n });\n};\n\nexport const trackSubmit = (stepIndex: number, funnelId?: string) => {\n success = true;\n const time = timeEnd(prefix);\n const eventContext = createEventContext(stepIndex);\n\n metrics.sendPanoramaMetric({\n eventContext,\n eventDetail: createEventDetail(stepIndex),\n eventType: createEventType('submit'),\n ...(time !== undefined && { eventValue: time.toString() }),\n ...(funnelId && { funnel: funnelId }),\n });\n};\n\nexport const trackCancel = (stepIndex: number, funnelId?: string) => {\n success = false;\n const time = timeEnd(prefix);\n const eventContext = createEventContext(stepIndex);\n\n metrics.sendPanoramaMetric({\n eventContext,\n eventDetail: createEventDetail(stepIndex),\n eventType: createEventType('cancel'),\n ...(time !== undefined && { eventValue: time.toString() }),\n ...(funnelId && { funnel: funnelId }),\n });\n};\n"]}