@cloudscape-design/components 3.0.147 → 3.0.148
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/internal/environment.js +1 -1
- package/internal/manifest.json +1 -1
- package/internal/metrics.d.ts +11 -0
- package/internal/metrics.d.ts.map +1 -1
- package/internal/metrics.js +41 -0
- package/internal/metrics.js.map +1 -1
- package/package.json +1 -1
- package/wizard/index.d.ts.map +1 -1
- package/wizard/index.js +19 -10
- package/wizard/index.js.map +1 -1
- package/wizard/internal/analytics.d.ts +7 -0
- package/wizard/internal/analytics.d.ts.map +1 -0
- package/wizard/internal/analytics.js +67 -0
- package/wizard/internal/analytics.js.map +1 -0
- package/wizard/wizard-form.d.ts.map +1 -1
- package/wizard/wizard-form.js +2 -7
- package/wizard/wizard-form.js.map +1 -1
- package/internal/hooks/use-analytics/index.d.ts +0 -2
- package/internal/hooks/use-analytics/index.d.ts.map +0 -1
- package/internal/hooks/use-analytics/index.js +0 -16
- package/internal/hooks/use-analytics/index.js.map +0 -1
package/internal/environment.js
CHANGED
package/internal/manifest.json
CHANGED
package/internal/metrics.d.ts
CHANGED
|
@@ -3,6 +3,12 @@ export interface MetricsLogItem {
|
|
|
3
3
|
action: string;
|
|
4
4
|
version: string;
|
|
5
5
|
}
|
|
6
|
+
export interface MetricsV2EventItem {
|
|
7
|
+
eventType?: string;
|
|
8
|
+
eventContext?: string;
|
|
9
|
+
eventDetail?: string | Record<string, string | number | boolean>;
|
|
10
|
+
eventValue?: string | Record<string, string | number | boolean>;
|
|
11
|
+
}
|
|
6
12
|
export declare const Metrics: {
|
|
7
13
|
initMetrics(fwk: string): void;
|
|
8
14
|
/**
|
|
@@ -10,6 +16,11 @@ export declare const Metrics: {
|
|
|
10
16
|
* Does nothing if Console Platform client logging JS is not present in page.
|
|
11
17
|
*/
|
|
12
18
|
sendMetric(metricName: string, value: number, detail?: string): void;
|
|
19
|
+
/**
|
|
20
|
+
* Calls Console Platform's client v2 logging JS API with provided metric name and detail.
|
|
21
|
+
* Does nothing if Console Platform client logging JS is not present in page.
|
|
22
|
+
*/
|
|
23
|
+
sendPanoramaMetric(metricName: string, metric: MetricsV2EventItem): void;
|
|
13
24
|
sendMetricObject(metric: MetricsLogItem, value: number): void;
|
|
14
25
|
sendMetricObjectOnce(metric: MetricsLogItem, value: number): void;
|
|
15
26
|
sendMetricOnce(metricName: string, value: number, detail?: string): void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"metrics.d.ts","sourceRoot":"","sources":["../../../src/internal/metrics.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;CACjB;
|
|
1
|
+
{"version":3,"file":"metrics.d.ts","sourceRoot":"","sources":["../../../src/internal/metrics.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,kBAAkB;IACjC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,CAAC;IACjE,UAAU,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,CAAC;CACjE;AA2FD,eAAO,MAAM,OAAO;qBACD,MAAM;IAIvB;;;OAGG;2BACoB,MAAM,SAAS,MAAM,WAAW,MAAM,GAAG,IAAI;IAepE;;;OAGG;mCAC4B,MAAM,UAAU,kBAAkB,GAAG,IAAI;6BAwB/C,cAAc,SAAS,MAAM,GAAG,IAAI;iCAIhC,cAAc,SAAS,MAAM,GAAG,IAAI;+BAYtC,MAAM,SAAS,MAAM,WAAW,MAAM,GAAG,IAAI;;oCA4BxC,MAAM;CAUvC,CAAC;AAEF,eAAO,MAAM,iBAAiB;;iDA/KsB,MAAM;wCAIf,MAAM,WAAW,MAAM;CAmLjE,CAAC"}
|
package/internal/metrics.js
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { __assign } from "tslib";
|
|
1
2
|
// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
|
2
3
|
// SPDX-License-Identifier: Apache-2.0
|
|
3
4
|
import { THEME, PACKAGE_VERSION } from './environment';
|
|
@@ -33,6 +34,22 @@ var buildMetricName = function (_a) {
|
|
|
33
34
|
var source = _a.source, version = _a.version;
|
|
34
35
|
return ['awsui', source, "".concat(formatVersionForMetricName(THEME, version))].join('_');
|
|
35
36
|
};
|
|
37
|
+
var findPanorama = function (currentWindow) {
|
|
38
|
+
try {
|
|
39
|
+
if (typeof (currentWindow === null || currentWindow === void 0 ? void 0 : currentWindow.panorama) === 'function') {
|
|
40
|
+
return currentWindow === null || currentWindow === void 0 ? void 0 : currentWindow.panorama;
|
|
41
|
+
}
|
|
42
|
+
if (!currentWindow || currentWindow.parent === currentWindow) {
|
|
43
|
+
// When the window has no more parents, it references itself
|
|
44
|
+
return undefined;
|
|
45
|
+
}
|
|
46
|
+
return findPanorama(currentWindow.parent);
|
|
47
|
+
}
|
|
48
|
+
catch (ex) {
|
|
49
|
+
// Most likely a cross-origin access error
|
|
50
|
+
return undefined;
|
|
51
|
+
}
|
|
52
|
+
};
|
|
36
53
|
var findAWSC = function (currentWindow) {
|
|
37
54
|
try {
|
|
38
55
|
if (typeof (currentWindow === null || currentWindow === void 0 ? void 0 : currentWindow.AWSC) === 'object') {
|
|
@@ -76,6 +93,30 @@ export var Metrics = {
|
|
|
76
93
|
AWSC.Clog.log(metricName, value, detail);
|
|
77
94
|
}
|
|
78
95
|
},
|
|
96
|
+
/**
|
|
97
|
+
* Calls Console Platform's client v2 logging JS API with provided metric name and detail.
|
|
98
|
+
* Does nothing if Console Platform client logging JS is not present in page.
|
|
99
|
+
*/
|
|
100
|
+
sendPanoramaMetric: function (metricName, metric) {
|
|
101
|
+
if (!metricName || !/^[a-zA-Z0-9_-]{1,32}$/.test(metricName)) {
|
|
102
|
+
console.error("Invalid metric name: ".concat(metricName));
|
|
103
|
+
return;
|
|
104
|
+
}
|
|
105
|
+
if (typeof metric.eventDetail === 'object') {
|
|
106
|
+
metric.eventDetail = JSON.stringify(metric.eventDetail);
|
|
107
|
+
}
|
|
108
|
+
if (metric.eventDetail && metric.eventDetail.length > 200) {
|
|
109
|
+
console.error("Detail for metric ".concat(metricName, " is too long: ").concat(metric.eventDetail));
|
|
110
|
+
return;
|
|
111
|
+
}
|
|
112
|
+
if (typeof metric.eventValue === 'object') {
|
|
113
|
+
metric.eventValue = JSON.stringify(metric.eventValue);
|
|
114
|
+
}
|
|
115
|
+
var panorama = findPanorama(window);
|
|
116
|
+
if (typeof panorama === 'function') {
|
|
117
|
+
panorama(metricName, __assign(__assign({}, metric), { timestamp: Date.now() }));
|
|
118
|
+
}
|
|
119
|
+
},
|
|
79
120
|
sendMetricObject: function (metric, value) {
|
|
80
121
|
this.sendMetric(buildMetricName(metric), value, buildMetricDetail(metric));
|
|
81
122
|
},
|
package/internal/metrics.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"metrics.js","sourceRoot":"","sources":["../../../src/internal/metrics.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\nimport { THEME, PACKAGE_VERSION } from './environment';\n\nexport interface MetricsLogItem {\n source: string;\n action: string;\n version: string;\n}\n\ninterface AWSC {\n Clog: any;\n}\n\ninterface MetricsWindow extends Window {\n AWSC?: AWSC;\n}\n\ndeclare const AWSUI_METRIC_ORIGIN: string | undefined;\n\nconst oneTimeMetrics: Record<string, boolean> = {};\n\nconst buildMetricHash = ({ source, action }: MetricsLogItem): string => {\n return [`src${source}`, `action${action}`].join('_');\n};\n\nconst getMajorVersion = (versionString: string): string => {\n const majorVersionMatch = versionString.match(/^(\\d+\\.\\d+)/);\n return majorVersionMatch ? majorVersionMatch[1] : '';\n};\n\nconst formatMajorVersionForMetricDetail = (version: string) => {\n return version.replace(/\\s/g, '');\n};\n\nconst formatVersionForMetricName = (theme: string, version: string) => {\n return `${theme.charAt(0)}${getMajorVersion(version).replace('.', '')}`;\n};\n\nconst buildMetricDetail = ({ source, action, version }: MetricsLogItem): string => {\n const metricOrigin = typeof AWSUI_METRIC_ORIGIN !== 'undefined' ? AWSUI_METRIC_ORIGIN : 'main';\n const detailObject = {\n o: metricOrigin,\n s: source,\n t: THEME,\n a: action,\n f: framework,\n v: formatMajorVersionForMetricDetail(version),\n };\n return JSON.stringify(detailObject);\n};\n\nconst buildMetricName = ({ source, version }: MetricsLogItem): string => {\n return ['awsui', source, `${formatVersionForMetricName(THEME, version)}`].join('_');\n};\n\nconst findAWSC = (currentWindow?: MetricsWindow): AWSC | undefined => {\n try {\n if (typeof currentWindow?.AWSC === 'object') {\n return currentWindow?.AWSC;\n }\n\n if (!currentWindow || currentWindow.parent === currentWindow) {\n // When the window has no more parents, it references itself\n return undefined;\n }\n\n return findAWSC(currentWindow.parent);\n } catch (ex) {\n // Most likely a cross-origin access error\n return undefined;\n }\n};\n\n// react is the default framework we're logging, for angular we need to set it explicitly\nlet framework = 'react';\nfunction setFramework(fwk: string) {\n framework = fwk;\n}\n\nexport const Metrics = {\n initMetrics(fwk: string) {\n setFramework(fwk);\n },\n\n /**\n * Calls Console Platform's client logging JS API with provided metric name, value, and detail.\n * Does nothing if Console Platform client logging JS is not present in page.\n */\n sendMetric(metricName: string, value: number, detail?: string): void {\n if (!metricName || !/^[a-zA-Z0-9_-]{1,32}$/.test(metricName)) {\n console.error(`Invalid metric name: ${metricName}`);\n return;\n }\n if (detail && detail.length > 200) {\n console.error(`Detail for metric ${metricName} is too long: ${detail}`);\n return;\n }\n const AWSC = findAWSC(window);\n if (typeof AWSC === 'object' && typeof AWSC.Clog === 'object' && typeof AWSC.Clog.log === 'function') {\n AWSC.Clog.log(metricName, value, detail);\n }\n },\n\n sendMetricObject(metric: MetricsLogItem, value: number): void {\n this.sendMetric(buildMetricName(metric), value, buildMetricDetail(metric));\n },\n\n sendMetricObjectOnce(metric: MetricsLogItem, value: number): void {\n const metricHash = buildMetricHash(metric);\n if (!oneTimeMetrics[metricHash]) {\n this.sendMetricObject(metric, value);\n oneTimeMetrics[metricHash] = true;\n }\n },\n\n /*\n * Calls Console Platform's client logging only the first time the provided metricName is used.\n * Subsequent calls with the same metricName are ignored.\n */\n sendMetricOnce(metricName: string, value: number, detail?: string): void {\n if (!oneTimeMetrics[metricName]) {\n this.sendMetric(metricName, value, detail);\n oneTimeMetrics[metricName] = true;\n }\n },\n\n /*\n * Reports a metric value 1 to Console Platform's client logging service to indicate that the\n * component was loaded. The component load event will only be reported as used to client logging\n * service once per page view.\n */\n logComponentLoaded() {\n this.sendMetricObjectOnce(\n {\n source: 'components',\n action: 'loaded',\n version: PACKAGE_VERSION,\n },\n 1\n );\n },\n\n /*\n * Reports a metric value 1 to Console Platform's client logging service to indicate that the\n * component was used in the page. A component will only be reported as used to client logging\n * service once per page view.\n */\n logComponentUsed(componentName: string) {\n this.sendMetricObjectOnce(\n {\n source: componentName,\n action: 'used',\n version: PACKAGE_VERSION,\n },\n 1\n );\n },\n};\n\nexport const MetricsTestHelper = {\n resetOneTimeMetricsCache: () => {\n for (const prop in oneTimeMetrics) {\n delete oneTimeMetrics[prop];\n }\n },\n formatMajorVersionForMetricDetail,\n formatVersionForMetricName,\n};\n"]}
|
|
1
|
+
{"version":3,"file":"metrics.js","sourceRoot":"","sources":["../../../src/internal/metrics.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\nimport { THEME, PACKAGE_VERSION } from './environment';\n\nexport interface MetricsLogItem {\n source: string;\n action: string;\n version: string;\n}\n\nexport interface MetricsV2EventItem {\n eventType?: string;\n eventContext?: string;\n eventDetail?: string | Record<string, string | number | boolean>;\n eventValue?: string | Record<string, string | number | boolean>;\n}\n\ninterface AWSC {\n Clog: any;\n}\n\ninterface MetricsWindow extends Window {\n AWSC?: AWSC;\n panorama?: any;\n}\n\ndeclare const AWSUI_METRIC_ORIGIN: string | undefined;\n\nconst oneTimeMetrics: Record<string, boolean> = {};\n\nconst buildMetricHash = ({ source, action }: MetricsLogItem): string => {\n return [`src${source}`, `action${action}`].join('_');\n};\n\nconst getMajorVersion = (versionString: string): string => {\n const majorVersionMatch = versionString.match(/^(\\d+\\.\\d+)/);\n return majorVersionMatch ? majorVersionMatch[1] : '';\n};\n\nconst formatMajorVersionForMetricDetail = (version: string) => {\n return version.replace(/\\s/g, '');\n};\n\nconst formatVersionForMetricName = (theme: string, version: string) => {\n return `${theme.charAt(0)}${getMajorVersion(version).replace('.', '')}`;\n};\n\nconst buildMetricDetail = ({ source, action, version }: MetricsLogItem): string => {\n const metricOrigin = typeof AWSUI_METRIC_ORIGIN !== 'undefined' ? AWSUI_METRIC_ORIGIN : 'main';\n const detailObject = {\n o: metricOrigin,\n s: source,\n t: THEME,\n a: action,\n f: framework,\n v: formatMajorVersionForMetricDetail(version),\n };\n return JSON.stringify(detailObject);\n};\n\nconst buildMetricName = ({ source, version }: MetricsLogItem): string => {\n return ['awsui', source, `${formatVersionForMetricName(THEME, version)}`].join('_');\n};\n\nconst findPanorama = (currentWindow?: MetricsWindow): any | undefined => {\n try {\n if (typeof currentWindow?.panorama === 'function') {\n return currentWindow?.panorama;\n }\n\n if (!currentWindow || currentWindow.parent === currentWindow) {\n // When the window has no more parents, it references itself\n return undefined;\n }\n\n return findPanorama(currentWindow.parent);\n } catch (ex) {\n // Most likely a cross-origin access error\n return undefined;\n }\n};\n\nconst findAWSC = (currentWindow?: MetricsWindow): AWSC | undefined => {\n try {\n if (typeof currentWindow?.AWSC === 'object') {\n return currentWindow?.AWSC;\n }\n\n if (!currentWindow || currentWindow.parent === currentWindow) {\n // When the window has no more parents, it references itself\n return undefined;\n }\n\n return findAWSC(currentWindow.parent);\n } catch (ex) {\n // Most likely a cross-origin access error\n return undefined;\n }\n};\n\n// react is the default framework we're logging, for angular we need to set it explicitly\nlet framework = 'react';\nfunction setFramework(fwk: string) {\n framework = fwk;\n}\n\nexport const Metrics = {\n initMetrics(fwk: string) {\n setFramework(fwk);\n },\n\n /**\n * Calls Console Platform's client logging JS API with provided metric name, value, and detail.\n * Does nothing if Console Platform client logging JS is not present in page.\n */\n sendMetric(metricName: string, value: number, detail?: string): void {\n if (!metricName || !/^[a-zA-Z0-9_-]{1,32}$/.test(metricName)) {\n console.error(`Invalid metric name: ${metricName}`);\n return;\n }\n if (detail && detail.length > 200) {\n console.error(`Detail for metric ${metricName} is too long: ${detail}`);\n return;\n }\n const AWSC = findAWSC(window);\n if (typeof AWSC === 'object' && typeof AWSC.Clog === 'object' && typeof AWSC.Clog.log === 'function') {\n AWSC.Clog.log(metricName, value, detail);\n }\n },\n\n /**\n * Calls Console Platform's client v2 logging JS API with provided metric name and detail.\n * Does nothing if Console Platform client logging JS is not present in page.\n */\n sendPanoramaMetric(metricName: string, metric: MetricsV2EventItem): void {\n if (!metricName || !/^[a-zA-Z0-9_-]{1,32}$/.test(metricName)) {\n console.error(`Invalid metric name: ${metricName}`);\n return;\n }\n if (typeof metric.eventDetail === 'object') {\n metric.eventDetail = JSON.stringify(metric.eventDetail);\n }\n if (metric.eventDetail && metric.eventDetail.length > 200) {\n console.error(`Detail for metric ${metricName} is too long: ${metric.eventDetail}`);\n return;\n }\n if (typeof metric.eventValue === 'object') {\n metric.eventValue = JSON.stringify(metric.eventValue);\n }\n const panorama = findPanorama(window);\n if (typeof panorama === 'function') {\n panorama(metricName, {\n ...metric,\n timestamp: Date.now(),\n });\n }\n },\n\n sendMetricObject(metric: MetricsLogItem, value: number): void {\n this.sendMetric(buildMetricName(metric), value, buildMetricDetail(metric));\n },\n\n sendMetricObjectOnce(metric: MetricsLogItem, value: number): void {\n const metricHash = buildMetricHash(metric);\n if (!oneTimeMetrics[metricHash]) {\n this.sendMetricObject(metric, value);\n oneTimeMetrics[metricHash] = true;\n }\n },\n\n /*\n * Calls Console Platform's client logging only the first time the provided metricName is used.\n * Subsequent calls with the same metricName are ignored.\n */\n sendMetricOnce(metricName: string, value: number, detail?: string): void {\n if (!oneTimeMetrics[metricName]) {\n this.sendMetric(metricName, value, detail);\n oneTimeMetrics[metricName] = true;\n }\n },\n\n /*\n * Reports a metric value 1 to Console Platform's client logging service to indicate that the\n * component was loaded. The component load event will only be reported as used to client logging\n * service once per page view.\n */\n logComponentLoaded() {\n this.sendMetricObjectOnce(\n {\n source: 'components',\n action: 'loaded',\n version: PACKAGE_VERSION,\n },\n 1\n );\n },\n\n /*\n * Reports a metric value 1 to Console Platform's client logging service to indicate that the\n * component was used in the page. A component will only be reported as used to client logging\n * service once per page view.\n */\n logComponentUsed(componentName: string) {\n this.sendMetricObjectOnce(\n {\n source: componentName,\n action: 'used',\n version: PACKAGE_VERSION,\n },\n 1\n );\n },\n};\n\nexport const MetricsTestHelper = {\n resetOneTimeMetricsCache: () => {\n for (const prop in oneTimeMetrics) {\n delete oneTimeMetrics[prop];\n }\n },\n formatMajorVersionForMetricDetail,\n formatVersionForMetricName,\n};\n"]}
|
package/package.json
CHANGED
package/wizard/index.d.ts.map
CHANGED
|
@@ -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;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/wizard/index.tsx"],"names":[],"mappings":"AAWA,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAU3C,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,eAqGb"}
|
package/wizard/index.js
CHANGED
|
@@ -15,14 +15,15 @@ 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 {
|
|
18
|
+
import { useEffectOnUpdate } from '../internal/hooks/use-effect-on-update';
|
|
19
|
+
import { useWizardAnalytics } from './internal/analytics';
|
|
19
20
|
export default function Wizard(_a) {
|
|
20
|
-
var _b;
|
|
21
|
-
var steps = _a.steps, controlledActiveStepIndex = _a.activeStepIndex, i18nStrings = _a.i18nStrings, _c = _a.isLoadingNextStep, isLoadingNextStep = _c === void 0 ? false : _c, _d = _a.allowSkipTo, allowSkipTo = _d === void 0 ? false : _d, 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
|
+
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"]);
|
|
22
22
|
var __internalRootRef = useBaseComponent('Wizard').__internalRootRef;
|
|
23
23
|
var baseProps = getBaseProps(rest);
|
|
24
|
-
var
|
|
24
|
+
var _d = useContainerBreakpoints(['xs']), breakpoint = _d[0], breakpointsRef = _d[1];
|
|
25
25
|
var ref = useMergeRefs(breakpointsRef, __internalRootRef);
|
|
26
|
+
var _e = useWizardAnalytics(), trackStartStep = _e.trackStartStep, trackNavigate = _e.trackNavigate, trackSubmit = _e.trackSubmit;
|
|
26
27
|
var smallContainer = breakpoint === 'default';
|
|
27
28
|
var _f = useControllable(controlledActiveStepIndex, onNavigate, 0, {
|
|
28
29
|
componentName: 'Wizard',
|
|
@@ -35,6 +36,7 @@ export default function Wizard(_a) {
|
|
|
35
36
|
var isVisualRefresh = useVisualRefresh();
|
|
36
37
|
var isLastStep = actualActiveStepIndex >= steps.length - 1;
|
|
37
38
|
var navigationEvent = function (requestedStepIndex, reason) {
|
|
39
|
+
trackNavigate(actualActiveStepIndex, requestedStepIndex, reason);
|
|
38
40
|
setActiveStepIndex(requestedStepIndex);
|
|
39
41
|
fireNonCancelableEvent(onNavigate, { requestedStepIndex: requestedStepIndex, reason: reason });
|
|
40
42
|
};
|
|
@@ -42,18 +44,25 @@ export default function Wizard(_a) {
|
|
|
42
44
|
var onSkipToClick = function (stepIndex) { return navigationEvent(stepIndex, 'skip'); };
|
|
43
45
|
var onCancelClick = function () { return fireNonCancelableEvent(onCancel); };
|
|
44
46
|
var onPreviousClick = function () { return navigationEvent(actualActiveStepIndex - 1, 'previous'); };
|
|
45
|
-
var onPrimaryClick =
|
|
46
|
-
|
|
47
|
-
|
|
47
|
+
var onPrimaryClick = function () {
|
|
48
|
+
if (isLastStep) {
|
|
49
|
+
trackSubmit(actualActiveStepIndex);
|
|
50
|
+
fireNonCancelableEvent(onSubmit);
|
|
51
|
+
}
|
|
52
|
+
else {
|
|
53
|
+
navigationEvent(actualActiveStepIndex + 1, 'next');
|
|
54
|
+
}
|
|
55
|
+
};
|
|
48
56
|
if (activeStepIndex && activeStepIndex >= steps.length) {
|
|
49
57
|
warnOnce('Wizard', "You have set `activeStepIndex` to ".concat(activeStepIndex, " but you have provided only ").concat(steps.length, " steps. Its value is ignored and the component uses ").concat(steps.length - 1, " instead."));
|
|
50
58
|
}
|
|
51
59
|
if (allowSkipTo && !i18nStrings.skipToButtonLabel) {
|
|
52
60
|
warnOnce('Wizard', "You have set `allowSkipTo` but you have not provided `i18nStrings.skipToButtonLabel`. The skip-to button will not be rendered.");
|
|
53
61
|
}
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
62
|
+
useEffectOnUpdate(function () {
|
|
63
|
+
trackStartStep(actualActiveStepIndex);
|
|
64
|
+
}, [actualActiveStepIndex, trackStartStep]);
|
|
65
|
+
return (React.createElement("div", __assign({}, baseProps, { className: clsx(styles.root, baseProps.className), ref: ref }),
|
|
57
66
|
React.createElement("div", { className: clsx(styles.wizard, isVisualRefresh && styles.refresh, smallContainer && styles['small-container']) },
|
|
58
67
|
React.createElement(WizardNavigation, { activeStepIndex: actualActiveStepIndex, farthestStepIndex: farthestStepIndex.current, allowSkipTo: allowSkipTo, hidden: smallContainer, i18nStrings: i18nStrings, isVisualRefresh: isVisualRefresh, isLoadingNextStep: isLoadingNextStep, onStepClick: onStepClick, onSkipToClick: onSkipToClick, steps: steps }),
|
|
59
68
|
React.createElement("div", { className: clsx(styles.form, isVisualRefresh && styles.refresh, smallContainer && styles['small-container']) },
|
package/wizard/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/wizard/index.tsx"],"names":[],"mappings":";AAAA,qEAAqE;AACrE,sCAAsC;AACtC,OAAO,KAAK,EAAE,EAAE,MAAM,EAAE,MAAM,OAAO,CAAC;AACtC,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC1D,OAAO,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAC;AAC5D,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAC/C,OAAO,EAAE,uBAAuB,EAAE,MAAM,qCAAqC,CAAC;AAC9E,OAAO,EAAE,eAAe,EAAE,MAAM,oCAAoC,CAAC;AACrE,OAAO,UAAU,MAAM,eAAe,CAAC;AACvC,OAAO,gBAAgB,MAAM,qBAAqB,CAAC;AAEnD,OAAO,MAAM,MAAM,iBAAiB,CAAC;AACrC,OAAO,EAAE,gBAAgB,EAAE,MAAM,sCAAsC,CAAC;AACxE,OAAO,gBAAgB,MAAM,sCAAsC,CAAC;AACpE,OAAO,EAAE,YAAY,EAAE,MAAM,kCAAkC,CAAC;AAChE,OAAO,EAAE,gBAAgB,EAAE,MAAM,mCAAmC,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/wizard/index.tsx"],"names":[],"mappings":";AAAA,qEAAqE;AACrE,sCAAsC;AACtC,OAAO,KAAK,EAAE,EAAE,MAAM,EAAE,MAAM,OAAO,CAAC;AACtC,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC1D,OAAO,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAC;AAC5D,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAC/C,OAAO,EAAE,uBAAuB,EAAE,MAAM,qCAAqC,CAAC;AAC9E,OAAO,EAAE,eAAe,EAAE,MAAM,oCAAoC,CAAC;AACrE,OAAO,UAAU,MAAM,eAAe,CAAC;AACvC,OAAO,gBAAgB,MAAM,qBAAqB,CAAC;AAEnD,OAAO,MAAM,MAAM,iBAAiB,CAAC;AACrC,OAAO,EAAE,gBAAgB,EAAE,MAAM,sCAAsC,CAAC;AACxE,OAAO,gBAAgB,MAAM,sCAAsC,CAAC;AACpE,OAAO,EAAE,YAAY,EAAE,MAAM,kCAAkC,CAAC;AAChE,OAAO,EAAE,gBAAgB,EAAE,MAAM,mCAAmC,CAAC;AACrE,OAAO,EAAE,iBAAiB,EAAE,MAAM,wCAAwC,CAAC;AAE3E,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAI1D,MAAM,CAAC,OAAO,UAAU,MAAM,CAAC,EAWjB;IAVZ,IAAA,KAAK,WAAA,EACY,yBAAyB,qBAAA,EAC1C,WAAW,iBAAA,EACX,yBAAyB,EAAzB,iBAAiB,mBAAG,KAAK,KAAA,EACzB,mBAAmB,EAAnB,WAAW,mBAAG,KAAK,KAAA,EACnB,gBAAgB,sBAAA,EAChB,QAAQ,cAAA,EACR,QAAQ,cAAA,EACR,UAAU,gBAAA,EACP,IAAI,cAVsB,yIAW9B,CADQ;IAEC,IAAA,iBAAiB,GAAK,gBAAgB,CAAC,QAAQ,CAAC,kBAA/B,CAAgC;IACzD,IAAM,SAAS,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC;IAE/B,IAAA,KAA+B,uBAAuB,CAAC,CAAC,IAAI,CAAC,CAAC,EAA7D,UAAU,QAAA,EAAE,cAAc,QAAmC,CAAC;IACrE,IAAM,GAAG,GAAG,YAAY,CAAC,cAAc,EAAE,iBAAiB,CAAC,CAAC;IACtD,IAAA,KAAiD,kBAAkB,EAAE,EAAnE,cAAc,oBAAA,EAAE,aAAa,mBAAA,EAAE,WAAW,iBAAyB,CAAC;IAE5E,IAAM,cAAc,GAAG,UAAU,KAAK,SAAS,CAAC;IAE1C,IAAA,KAAwC,eAAe,CAAC,yBAAyB,EAAE,UAAU,EAAE,CAAC,EAAE;QACtG,aAAa,EAAE,QAAQ;QACvB,cAAc,EAAE,iBAAiB;QACjC,aAAa,EAAE,YAAY;KAC5B,CAAC,EAJK,eAAe,QAAA,EAAE,kBAAkB,QAIxC,CAAC;IACH,IAAM,qBAAqB,GAAG,eAAe,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,eAAe,EAAE,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAEhG,IAAM,iBAAiB,GAAG,MAAM,CAAS,qBAAqB,CAAC,CAAC;IAChE,iBAAiB,CAAC,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,iBAAiB,CAAC,OAAO,EAAE,qBAAqB,CAAC,CAAC;IAEvF,IAAM,eAAe,GAAG,gBAAgB,EAAE,CAAC;IAC3C,IAAM,UAAU,GAAG,qBAAqB,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;IAE7D,IAAM,eAAe,GAAG,UAAC,kBAA0B,EAAE,MAAoC;QACvF,aAAa,CAAC,qBAAqB,EAAE,kBAAkB,EAAE,MAAM,CAAC,CAAC;QACjE,kBAAkB,CAAC,kBAAkB,CAAC,CAAC;QACvC,sBAAsB,CAAC,UAAU,EAAE,EAAE,kBAAkB,oBAAA,EAAE,MAAM,QAAA,EAAE,CAAC,CAAC;IACrE,CAAC,CAAC;IACF,IAAM,WAAW,GAAG,UAAC,SAAiB,IAAK,OAAA,eAAe,CAAC,SAAS,EAAE,MAAM,CAAC,EAAlC,CAAkC,CAAC;IAC9E,IAAM,aAAa,GAAG,UAAC,SAAiB,IAAK,OAAA,eAAe,CAAC,SAAS,EAAE,MAAM,CAAC,EAAlC,CAAkC,CAAC;IAChF,IAAM,aAAa,GAAG,cAAM,OAAA,sBAAsB,CAAC,QAAQ,CAAC,EAAhC,CAAgC,CAAC;IAC7D,IAAM,eAAe,GAAG,cAAM,OAAA,eAAe,CAAC,qBAAqB,GAAG,CAAC,EAAE,UAAU,CAAC,EAAtD,CAAsD,CAAC;IACrF,IAAM,cAAc,GAAG;QACrB,IAAI,UAAU,EAAE;YACd,WAAW,CAAC,qBAAqB,CAAC,CAAC;YACnC,sBAAsB,CAAC,QAAQ,CAAC,CAAC;SAClC;aAAM;YACL,eAAe,CAAC,qBAAqB,GAAG,CAAC,EAAE,MAAM,CAAC,CAAC;SACpD;IACH,CAAC,CAAC;IAEF,IAAI,eAAe,IAAI,eAAe,IAAI,KAAK,CAAC,MAAM,EAAE;QACtD,QAAQ,CACN,QAAQ,EACR,4CAAuC,eAAe,yCACpD,KAAK,CAAC,MAAM,iEACyC,KAAK,CAAC,MAAM,GAAG,CAAC,cAAW,CACnF,CAAC;KACH;IAED,IAAI,WAAW,IAAI,CAAC,WAAW,CAAC,iBAAiB,EAAE;QACjD,QAAQ,CACN,QAAQ,EACR,gIAAoI,CACrI,CAAC;KACH;IAED,iBAAiB,CAAC;QAChB,cAAc,CAAC,qBAAqB,CAAC,CAAC;IACxC,CAAC,EAAE,CAAC,qBAAqB,EAAE,cAAc,CAAC,CAAC,CAAC;IAE5C,OAAO,CACL,wCAAS,SAAS,IAAE,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,SAAS,CAAC,SAAS,CAAC,EAAE,GAAG,EAAE,GAAG;QAC7E,6BACE,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,eAAe,IAAI,MAAM,CAAC,OAAO,EAAE,cAAc,IAAI,MAAM,CAAC,iBAAiB,CAAC,CAAC;YAE9G,oBAAC,gBAAgB,IACf,eAAe,EAAE,qBAAqB,EACtC,iBAAiB,EAAE,iBAAiB,CAAC,OAAO,EAC5C,WAAW,EAAE,WAAW,EACxB,MAAM,EAAE,cAAc,EACtB,WAAW,EAAE,WAAW,EACxB,eAAe,EAAE,eAAe,EAChC,iBAAiB,EAAE,iBAAiB,EACpC,WAAW,EAAE,WAAW,EACxB,aAAa,EAAE,aAAa,EAC5B,KAAK,EAAE,KAAK,GACZ;YACF,6BACE,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,eAAe,IAAI,MAAM,CAAC,OAAO,EAAE,cAAc,IAAI,MAAM,CAAC,iBAAiB,CAAC,CAAC;gBAE3G,eAAe,IAAI,6BAAK,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,8BAA8B,CAAC,GAAI;gBAE/F,oBAAC,UAAU,IACT,KAAK,EAAE,KAAK,EACZ,eAAe,EAAE,eAAe,EAChC,kBAAkB,EAAE,cAAc,EAClC,WAAW,EAAE,WAAW,EACxB,eAAe,EAAE,qBAAqB,EACtC,gBAAgB,EAAE,iBAAiB,EACnC,WAAW,EAAE,WAAW,EACxB,gBAAgB,EAAE,gBAAgB,EAClC,aAAa,EAAE,aAAa,EAC5B,eAAe,EAAE,eAAe,EAChC,aAAa,EAAE,aAAa,EAC5B,cAAc,EAAE,cAAc,GAC9B,CACE,CACF,CACF,CACP,CAAC;AACJ,CAAC;AAED,gBAAgB,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC","sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport React, { 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';\nimport { useEffectOnUpdate } from '../internal/hooks/use-effect-on-update';\n\nimport { useWizardAnalytics } 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\n const [breakpoint, breakpointsRef] = useContainerBreakpoints(['xs']);\n const ref = useMergeRefs(breakpointsRef, __internalRootRef);\n const { trackStartStep, trackNavigate, trackSubmit } = useWizardAnalytics();\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);\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);\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 useEffectOnUpdate(() => {\n trackStartStep(actualActiveStepIndex);\n }, [actualActiveStepIndex, trackStartStep]);\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"]}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { WizardProps } from '../interfaces';
|
|
2
|
+
export declare const useWizardAnalytics: () => {
|
|
3
|
+
trackStartStep: (stepIndex?: number) => void;
|
|
4
|
+
trackNavigate: (activeStepIndex: number, requestedStepIndex: number, reason: WizardProps.NavigationReason) => void;
|
|
5
|
+
trackSubmit: (stepIndex: number) => void;
|
|
6
|
+
};
|
|
7
|
+
//# sourceMappingURL=analytics.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"analytics.d.ts","sourceRoot":"","sources":["../../../../src/wizard/internal/analytics.tsx"],"names":[],"mappings":"AAIA,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AA8B5C,eAAO,MAAM,kBAAkB;iCACO,MAAM;qCAsBF,MAAM,sBAAsB,MAAM,UAAU,YAAY,gBAAgB;6BAYhF,MAAM;CAcvC,CAAC"}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
|
2
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
3
|
+
import { __assign } from "tslib";
|
|
4
|
+
import { Metrics } from '../../internal/metrics';
|
|
5
|
+
var prefix = 'csa_wizard';
|
|
6
|
+
var createEventType = function (eventType) { return "".concat(prefix, "_").concat(eventType); };
|
|
7
|
+
var createEventContext = function (stepIndex) {
|
|
8
|
+
if (stepIndex === void 0) { stepIndex = 0; }
|
|
9
|
+
return "".concat(prefix, "_step").concat(stepIndex + 1);
|
|
10
|
+
};
|
|
11
|
+
var createEventDetail = function (stepIndex) {
|
|
12
|
+
if (stepIndex === void 0) { stepIndex = 0; }
|
|
13
|
+
return "step".concat(stepIndex + 1);
|
|
14
|
+
};
|
|
15
|
+
// A custom time cache is used to not clear the timer between navigation attempts
|
|
16
|
+
// This allows us the ability to track time to attempt each step as well as the time to complete
|
|
17
|
+
// each step
|
|
18
|
+
var timeCache = {};
|
|
19
|
+
var timeStart = function (key) {
|
|
20
|
+
if (key === void 0) { key = 'current'; }
|
|
21
|
+
timeCache[key] = Date.now();
|
|
22
|
+
};
|
|
23
|
+
var timeEnd = function (key, clear) {
|
|
24
|
+
if (key === void 0) { key = 'current'; }
|
|
25
|
+
if (clear === void 0) { clear = false; }
|
|
26
|
+
var start = timeCache[key];
|
|
27
|
+
// No start time is available when starting the first step
|
|
28
|
+
if (!start) {
|
|
29
|
+
return undefined;
|
|
30
|
+
}
|
|
31
|
+
if (clear) {
|
|
32
|
+
delete timeCache[key];
|
|
33
|
+
}
|
|
34
|
+
return (Date.now() - start) / 1000; // Convert to seconds
|
|
35
|
+
};
|
|
36
|
+
export var useWizardAnalytics = function () {
|
|
37
|
+
var trackStartStep = function (stepIndex) {
|
|
38
|
+
var eventContext = createEventContext(stepIndex);
|
|
39
|
+
// Track the starting time of the wizard
|
|
40
|
+
if (stepIndex === undefined) {
|
|
41
|
+
timeStart(prefix);
|
|
42
|
+
}
|
|
43
|
+
// End the timer of the previous step
|
|
44
|
+
var time = timeEnd();
|
|
45
|
+
// Start a new timer of the current step
|
|
46
|
+
timeStart();
|
|
47
|
+
Metrics.sendPanoramaMetric('trackStartStep', __assign({ eventContext: eventContext, eventDetail: createEventDetail(stepIndex), eventType: createEventType('step') }, (time !== undefined && { eventValue: time.toString() })));
|
|
48
|
+
};
|
|
49
|
+
var trackNavigate = function (activeStepIndex, requestedStepIndex, reason) {
|
|
50
|
+
var eventContext = createEventContext(activeStepIndex);
|
|
51
|
+
var time = timeEnd();
|
|
52
|
+
Metrics.sendPanoramaMetric('trackNavigate', {
|
|
53
|
+
eventContext: eventContext,
|
|
54
|
+
eventDetail: createEventDetail(requestedStepIndex),
|
|
55
|
+
eventType: createEventType('navigate'),
|
|
56
|
+
eventValue: __assign({ reason: reason }, (time !== undefined && { time: time }))
|
|
57
|
+
});
|
|
58
|
+
};
|
|
59
|
+
var trackSubmit = function (stepIndex) {
|
|
60
|
+
var eventContext = createEventContext(stepIndex);
|
|
61
|
+
// End the timer of the wizard
|
|
62
|
+
var time = timeEnd(prefix);
|
|
63
|
+
Metrics.sendPanoramaMetric('trackSubmit', __assign({ eventContext: eventContext, eventDetail: createEventDetail(stepIndex), eventType: createEventType('submit') }, (time !== undefined && { eventValue: time.toString() })));
|
|
64
|
+
};
|
|
65
|
+
return { trackStartStep: trackStartStep, trackNavigate: trackNavigate, trackSubmit: trackSubmit };
|
|
66
|
+
};
|
|
67
|
+
//# sourceMappingURL=analytics.js.map
|
|
@@ -0,0 +1 @@
|
|
|
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 { Metrics } from '../../internal/metrics';\nimport { WizardProps } from '../interfaces';\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 useWizardAnalytics = () => {\n const trackStartStep = (stepIndex?: number) => {\n const eventContext = createEventContext(stepIndex);\n\n // Track the starting time of the wizard\n if (stepIndex === undefined) {\n timeStart(prefix);\n }\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('trackStartStep', {\n eventContext,\n eventDetail: createEventDetail(stepIndex),\n eventType: createEventType('step'),\n ...(time !== undefined && { eventValue: time.toString() }),\n });\n };\n\n const trackNavigate = (activeStepIndex: number, requestedStepIndex: number, reason: WizardProps.NavigationReason) => {\n const eventContext = createEventContext(activeStepIndex);\n const time = timeEnd();\n\n Metrics.sendPanoramaMetric('trackNavigate', {\n eventContext,\n eventDetail: createEventDetail(requestedStepIndex),\n eventType: createEventType('navigate'),\n eventValue: { reason, ...(time !== undefined && { time }) },\n });\n };\n\n const trackSubmit = (stepIndex: number) => {\n const eventContext = createEventContext(stepIndex);\n // End the timer of the wizard\n const time = timeEnd(prefix);\n\n Metrics.sendPanoramaMetric('trackSubmit', {\n eventContext,\n eventDetail: createEventDetail(stepIndex),\n eventType: createEventType('submit'),\n ...(time !== undefined && { eventValue: time.toString() }),\n });\n };\n\n return { trackStartStep, trackNavigate, trackSubmit };\n};\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wizard-form.d.ts","sourceRoot":"","sources":["../../../src/wizard/wizard-form.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAiB,MAAM,OAAO,CAAC;AAMtC,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"wizard-form.d.ts","sourceRoot":"","sources":["../../../src/wizard/wizard-form.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAiB,MAAM,OAAO,CAAC;AAMtC,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAM3C,UAAU,eAAe;IACvB,KAAK,EAAE,aAAa,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;IACvC,eAAe,EAAE,MAAM,CAAC;IACxB,eAAe,EAAE,OAAO,CAAC;IACzB,kBAAkB,EAAE,OAAO,CAAC;IAC5B,WAAW,EAAE,WAAW,CAAC,WAAW,CAAC;IACrC,gBAAgB,EAAE,OAAO,CAAC;IAC1B,WAAW,EAAE,OAAO,CAAC;IACrB,gBAAgB,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACnC,aAAa,EAAE,MAAM,IAAI,CAAC;IAC1B,eAAe,EAAE,MAAM,IAAI,CAAC;IAC5B,cAAc,EAAE,MAAM,IAAI,CAAC;IAC3B,aAAa,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,IAAI,CAAC;CAC5C;AAED,MAAM,CAAC,OAAO,UAAU,UAAU,CAAC,EACjC,KAAK,EACL,eAAe,EACf,eAAe,EACf,kBAAkB,EAClB,WAAW,EACX,gBAAgB,EAChB,WAAW,EACX,gBAAgB,EAChB,aAAa,EACb,eAAe,EACf,cAAc,EACd,aAAa,GACd,EAAE,eAAe,eAiEjB"}
|
package/wizard/wizard-form.js
CHANGED
|
@@ -11,11 +11,9 @@ import WizardFormHeader from './wizard-form-header';
|
|
|
11
11
|
import styles from './styles.css.js';
|
|
12
12
|
import useFocusVisible from '../internal/hooks/focus-visible';
|
|
13
13
|
import { useEffectOnUpdate } from '../internal/hooks/use-effect-on-update';
|
|
14
|
-
import { useAnalytics } from '../internal/hooks/use-analytics';
|
|
15
14
|
export default function WizardForm(_a) {
|
|
16
|
-
var _b;
|
|
17
15
|
var steps = _a.steps, activeStepIndex = _a.activeStepIndex, isVisualRefresh = _a.isVisualRefresh, showCollapsedSteps = _a.showCollapsedSteps, i18nStrings = _a.i18nStrings, isPrimaryLoading = _a.isPrimaryLoading, allowSkipTo = _a.allowSkipTo, secondaryActions = _a.secondaryActions, onCancelClick = _a.onCancelClick, onPreviousClick = _a.onPreviousClick, onPrimaryClick = _a.onPrimaryClick, onSkipToClick = _a.onSkipToClick;
|
|
18
|
-
var
|
|
16
|
+
var _b = steps[activeStepIndex] || {}, title = _b.title, info = _b.info, description = _b.description, content = _b.content, errorText = _b.errorText, isOptional = _b.isOptional;
|
|
19
17
|
var isLastStep = activeStepIndex >= steps.length - 1;
|
|
20
18
|
var skipToTargetIndex = findSkipToTargetIndex(steps, activeStepIndex);
|
|
21
19
|
var isMobile = useMobile();
|
|
@@ -31,8 +29,6 @@ export default function WizardForm(_a) {
|
|
|
31
29
|
var skipToButtonText = skipToTargetIndex !== -1 && i18nStrings.skipToButtonLabel
|
|
32
30
|
? i18nStrings.skipToButtonLabel(steps[skipToTargetIndex], skipToTargetIndex + 1)
|
|
33
31
|
: undefined;
|
|
34
|
-
var analyticsEnabled = useAnalytics();
|
|
35
|
-
var analyticsProps = analyticsEnabled ? (_b = {}, _b['data-analytics'] = title, _b['data-analytics-type'] = 'eventContext', _b) : {};
|
|
36
32
|
return (React.createElement(React.Fragment, null,
|
|
37
33
|
React.createElement(WizardFormHeader, { isMobile: isMobile || showCollapsedSteps, isVisualRefresh: isVisualRefresh },
|
|
38
34
|
React.createElement("div", { className: clsx(styles['collapsed-steps'], !showCollapsedSteps && styles['collapsed-steps-hidden'], isVisualRefresh && isMobile && styles['collapsed-steps-extra-padding']) }, i18nStrings.collapsedStepsLabel(activeStepIndex + 1, steps.length)),
|
|
@@ -40,8 +36,7 @@ export default function WizardForm(_a) {
|
|
|
40
36
|
React.createElement("span", __assign({ className: styles['form-header-component-wrapper'], tabIndex: -1, ref: stepHeaderRef }, focusVisible),
|
|
41
37
|
title,
|
|
42
38
|
isOptional && React.createElement("i", null, " - ".concat(i18nStrings.optional))))),
|
|
43
|
-
React.createElement(InternalForm, { className: clsx(styles['form-component']), actions: React.createElement(WizardActions, { cancelButtonText: i18nStrings.cancelButton, primaryButtonText: isLastStep ? i18nStrings.submitButton : i18nStrings.nextButton, previousButtonText: i18nStrings.previousButton, onCancelClick: onCancelClick, onPreviousClick: onPreviousClick, onPrimaryClick: onPrimaryClick, onSkipToClick: function () { return onSkipToClick(skipToTargetIndex); }, showPrevious: activeStepIndex !== 0, isPrimaryLoading: isPrimaryLoading, showSkipTo: showSkipTo, skipToButtonText: skipToButtonText }), secondaryActions: secondaryActions, errorText: errorText, errorIconAriaLabel: i18nStrings.errorIconAriaLabel },
|
|
44
|
-
React.createElement("div", __assign({}, analyticsProps), content))));
|
|
39
|
+
React.createElement(InternalForm, { className: clsx(styles['form-component']), actions: React.createElement(WizardActions, { cancelButtonText: i18nStrings.cancelButton, primaryButtonText: isLastStep ? i18nStrings.submitButton : i18nStrings.nextButton, previousButtonText: i18nStrings.previousButton, onCancelClick: onCancelClick, onPreviousClick: onPreviousClick, onPrimaryClick: onPrimaryClick, onSkipToClick: function () { return onSkipToClick(skipToTargetIndex); }, showPrevious: activeStepIndex !== 0, isPrimaryLoading: isPrimaryLoading, showSkipTo: showSkipTo, skipToButtonText: skipToButtonText }), secondaryActions: secondaryActions, errorText: errorText, errorIconAriaLabel: i18nStrings.errorIconAriaLabel }, content)));
|
|
45
40
|
}
|
|
46
41
|
function findSkipToTargetIndex(steps, activeStepIndex) {
|
|
47
42
|
var nextRequiredStepIndex = activeStepIndex;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wizard-form.js","sourceRoot":"","sources":["../../../src/wizard/wizard-form.tsx"],"names":[],"mappings":";AAAA,qEAAqE;AACrE,sCAAsC;AACtC,OAAO,KAAK,EAAE,EAAE,MAAM,EAAE,MAAM,OAAO,CAAC;AACtC,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,YAAY,MAAM,kBAAkB,CAAC;AAC5C,OAAO,cAAc,MAAM,oBAAoB,CAAC;AAChD,OAAO,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAC;AACzD,OAAO,aAAa,MAAM,kBAAkB,CAAC;AAE7C,OAAO,gBAAgB,MAAM,sBAAsB,CAAC;AACpD,OAAO,MAAM,MAAM,iBAAiB,CAAC;AACrC,OAAO,eAAe,MAAM,iCAAiC,CAAC;AAC9D,OAAO,EAAE,iBAAiB,EAAE,MAAM,wCAAwC,CAAC;
|
|
1
|
+
{"version":3,"file":"wizard-form.js","sourceRoot":"","sources":["../../../src/wizard/wizard-form.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, { useRef } from 'react';\nimport clsx from 'clsx';\nimport InternalForm from '../form/internal';\nimport InternalHeader from '../header/internal';\nimport { useMobile } from '../internal/hooks/use-mobile';\nimport WizardActions from './wizard-actions';\nimport { WizardProps } from './interfaces';\nimport WizardFormHeader from './wizard-form-header';\nimport styles from './styles.css.js';\nimport useFocusVisible from '../internal/hooks/focus-visible';\nimport { useEffectOnUpdate } from '../internal/hooks/use-effect-on-update';\n\ninterface WizardFormProps {\n steps: ReadonlyArray<WizardProps.Step>;\n activeStepIndex: number;\n isVisualRefresh: boolean;\n showCollapsedSteps: boolean;\n i18nStrings: WizardProps.I18nStrings;\n isPrimaryLoading: boolean;\n allowSkipTo: boolean;\n secondaryActions?: React.ReactNode;\n onCancelClick: () => void;\n onPreviousClick: () => void;\n onPrimaryClick: () => void;\n onSkipToClick: (stepIndex: number) => void;\n}\n\nexport default function WizardForm({\n steps,\n activeStepIndex,\n isVisualRefresh,\n showCollapsedSteps,\n i18nStrings,\n isPrimaryLoading,\n allowSkipTo,\n secondaryActions,\n onCancelClick,\n onPreviousClick,\n onPrimaryClick,\n onSkipToClick,\n}: WizardFormProps) {\n const { title, info, description, content, errorText, isOptional } = steps[activeStepIndex] || {};\n const isLastStep = activeStepIndex >= steps.length - 1;\n const skipToTargetIndex = findSkipToTargetIndex(steps, activeStepIndex);\n const isMobile = useMobile();\n const stepHeaderRef = useRef<HTMLDivElement | null>(null);\n\n useEffectOnUpdate(() => {\n if (stepHeaderRef && stepHeaderRef.current) {\n stepHeaderRef.current?.focus();\n }\n }, [activeStepIndex]);\n\n const focusVisible = useFocusVisible();\n\n const showSkipTo = allowSkipTo && skipToTargetIndex !== -1;\n const skipToButtonText =\n skipToTargetIndex !== -1 && i18nStrings.skipToButtonLabel\n ? i18nStrings.skipToButtonLabel(steps[skipToTargetIndex], skipToTargetIndex + 1)\n : undefined;\n\n return (\n <>\n <WizardFormHeader isMobile={isMobile || showCollapsedSteps} isVisualRefresh={isVisualRefresh}>\n <div\n className={clsx(\n styles['collapsed-steps'],\n !showCollapsedSteps && styles['collapsed-steps-hidden'],\n isVisualRefresh && isMobile && styles['collapsed-steps-extra-padding']\n )}\n >\n {i18nStrings.collapsedStepsLabel(activeStepIndex + 1, steps.length)}\n </div>\n <InternalHeader className={styles['form-header-component']} variant=\"h1\" description={description} info={info}>\n <span className={styles['form-header-component-wrapper']} tabIndex={-1} ref={stepHeaderRef} {...focusVisible}>\n {title}\n {isOptional && <i>{` - ${i18nStrings.optional}`}</i>}\n </span>\n </InternalHeader>\n </WizardFormHeader>\n <InternalForm\n className={clsx(styles['form-component'])}\n actions={\n <WizardActions\n cancelButtonText={i18nStrings.cancelButton}\n primaryButtonText={isLastStep ? i18nStrings.submitButton : i18nStrings.nextButton}\n previousButtonText={i18nStrings.previousButton}\n onCancelClick={onCancelClick}\n onPreviousClick={onPreviousClick}\n onPrimaryClick={onPrimaryClick}\n onSkipToClick={() => onSkipToClick(skipToTargetIndex)}\n showPrevious={activeStepIndex !== 0}\n isPrimaryLoading={isPrimaryLoading}\n showSkipTo={showSkipTo}\n skipToButtonText={skipToButtonText}\n />\n }\n secondaryActions={secondaryActions}\n errorText={errorText}\n errorIconAriaLabel={i18nStrings.errorIconAriaLabel}\n >\n {content}\n </InternalForm>\n </>\n );\n}\n\nfunction findSkipToTargetIndex(steps: ReadonlyArray<WizardProps.Step>, activeStepIndex: number): number {\n let nextRequiredStepIndex = activeStepIndex;\n do {\n nextRequiredStepIndex++;\n } while (nextRequiredStepIndex < steps.length - 1 && steps[nextRequiredStepIndex].isOptional);\n\n return nextRequiredStepIndex > activeStepIndex + 1 ? nextRequiredStepIndex : -1;\n}\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/internal/hooks/use-analytics/index.ts"],"names":[],"mappings":"AAMA,wBAAgB,YAAY,YAU3B"}
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
|
2
|
-
// SPDX-License-Identifier: Apache-2.0
|
|
3
|
-
// We expect analytics to be set only once and before the application is rendered.
|
|
4
|
-
var analyticsEnabled = undefined;
|
|
5
|
-
export function useAnalytics() {
|
|
6
|
-
if (analyticsEnabled === undefined) {
|
|
7
|
-
if (typeof window === 'undefined' || typeof document === 'undefined') {
|
|
8
|
-
analyticsEnabled = false;
|
|
9
|
-
}
|
|
10
|
-
else {
|
|
11
|
-
analyticsEnabled = !!document.querySelector('.awsui-analytics-enabled');
|
|
12
|
-
}
|
|
13
|
-
}
|
|
14
|
-
return analyticsEnabled;
|
|
15
|
-
}
|
|
16
|
-
//# sourceMappingURL=index.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/internal/hooks/use-analytics/index.ts"],"names":[],"mappings":"AAAA,qEAAqE;AACrE,sCAAsC;AAEtC,kFAAkF;AAClF,IAAI,gBAAgB,GAAwB,SAAS,CAAC;AAEtD,MAAM,UAAU,YAAY;IAC1B,IAAI,gBAAgB,KAAK,SAAS,EAAE;QAClC,IAAI,OAAO,MAAM,KAAK,WAAW,IAAI,OAAO,QAAQ,KAAK,WAAW,EAAE;YACpE,gBAAgB,GAAG,KAAK,CAAC;SAC1B;aAAM;YACL,gBAAgB,GAAG,CAAC,CAAC,QAAQ,CAAC,aAAa,CAAC,0BAA0B,CAAC,CAAC;SACzE;KACF;IAED,OAAO,gBAAgB,CAAC;AAC1B,CAAC","sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\n// We expect analytics to be set only once and before the application is rendered.\nlet analyticsEnabled: boolean | undefined = undefined;\n\nexport function useAnalytics() {\n if (analyticsEnabled === undefined) {\n if (typeof window === 'undefined' || typeof document === 'undefined') {\n analyticsEnabled = false;\n } else {\n analyticsEnabled = !!document.querySelector('.awsui-analytics-enabled');\n }\n }\n\n return analyticsEnabled;\n}\n"]}
|