@aws-amplify/ui-react-core 2.1.22 → 2.1.24

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 (28) hide show
  1. package/dist/esm/Authenticator/hooks/useAuthenticatorRoute/constants.mjs +3 -0
  2. package/dist/esm/index.mjs +1 -5
  3. package/dist/index.js +4 -162
  4. package/dist/types/Authenticator/hooks/types.d.ts +7 -6
  5. package/dist/types/index.d.ts +1 -1
  6. package/package.json +2 -2
  7. package/dist/esm/InAppMessaging/context/InAppMessagingContext/InAppMessagingContext.mjs +0 -5
  8. package/dist/esm/InAppMessaging/context/InAppMessagingProvider/InAppMessagingProvider.mjs +0 -25
  9. package/dist/esm/InAppMessaging/hooks/useInAppMessaging/useInAppMessaging.mjs +0 -18
  10. package/dist/esm/InAppMessaging/hooks/useMessage/useMessage.mjs +0 -78
  11. package/dist/esm/InAppMessaging/hooks/useMessage/utils.mjs +0 -43
  12. package/dist/esm/InAppMessaging/utils/handleMessageAction.mjs +0 -16
  13. package/dist/types/InAppMessaging/context/InAppMessagingContext/InAppMessagingContext.d.ts +0 -9
  14. package/dist/types/InAppMessaging/context/InAppMessagingContext/index.d.ts +0 -1
  15. package/dist/types/InAppMessaging/context/InAppMessagingProvider/InAppMessagingProvider.d.ts +0 -5
  16. package/dist/types/InAppMessaging/context/InAppMessagingProvider/index.d.ts +0 -1
  17. package/dist/types/InAppMessaging/context/index.d.ts +0 -2
  18. package/dist/types/InAppMessaging/hooks/index.d.ts +0 -2
  19. package/dist/types/InAppMessaging/hooks/useInAppMessaging/index.d.ts +0 -1
  20. package/dist/types/InAppMessaging/hooks/useInAppMessaging/useInAppMessaging.d.ts +0 -7
  21. package/dist/types/InAppMessaging/hooks/useMessage/index.d.ts +0 -1
  22. package/dist/types/InAppMessaging/hooks/useMessage/types.d.ts +0 -18
  23. package/dist/types/InAppMessaging/hooks/useMessage/useMessage.d.ts +0 -9
  24. package/dist/types/InAppMessaging/hooks/useMessage/utils.d.ts +0 -9
  25. package/dist/types/InAppMessaging/index.d.ts +0 -4
  26. package/dist/types/InAppMessaging/types.d.ts +0 -52
  27. package/dist/types/InAppMessaging/utils/handleMessageAction.d.ts +0 -9
  28. package/dist/types/InAppMessaging/utils/index.d.ts +0 -1
@@ -12,6 +12,7 @@ const COMMON_ROUTE_MACHINE_KEYS = [
12
12
  ];
13
13
  const CONFIRM_RESET_PASSWORD_MACHINE_KEYS = [
14
14
  ...COMMON_ROUTE_MACHINE_KEYS,
15
+ 'hasValidationErrors',
15
16
  'resendCode',
16
17
  'validationErrors',
17
18
  ];
@@ -31,6 +32,7 @@ const CONFIRM_VERIFY_USER_MACHINE_KEYS = [
31
32
  ];
32
33
  const FORCE_NEW_PASSWORD_MACHINE_KEYS = [
33
34
  ...COMMON_ROUTE_MACHINE_KEYS,
35
+ 'hasValidationErrors',
34
36
  'toSignIn',
35
37
  'validationErrors',
36
38
  ];
@@ -46,6 +48,7 @@ const SIGN_IN_MACHINE_KEYS = [
46
48
  ];
47
49
  const SIGN_UP_MACHINE_KEYS = [
48
50
  ...COMMON_ROUTE_MACHINE_KEYS,
51
+ 'hasValidationErrors',
49
52
  'toSignIn',
50
53
  'validationErrors',
51
54
  ];
@@ -4,11 +4,7 @@ export { default as useAuthenticator } from './Authenticator/hooks/useAuthentica
4
4
  export { default as useAuthenticatorRoute } from './Authenticator/hooks/useAuthenticatorRoute/useAuthenticatorRoute.mjs';
5
5
  export { default as useAuthenticatorInitMachine } from './Authenticator/hooks/useAuthenticatorInitMachine/useAuthenticatorInitMachine.mjs';
6
6
  export { isComponentRouteKey as isAuthenticatorComponentRouteKey, resolveAuthenticatorComponents } from './Authenticator/hooks/utils.mjs';
7
- export { default as useInAppMessaging } from './InAppMessaging/hooks/useInAppMessaging/useInAppMessaging.mjs';
8
- export { default as useMessage } from './InAppMessaging/hooks/useMessage/useMessage.mjs';
9
- import './InAppMessaging/context/InAppMessagingContext/InAppMessagingContext.mjs';
10
- export { default as InAppMessagingProvider } from './InAppMessaging/context/InAppMessagingProvider/InAppMessagingProvider.mjs';
11
- export { default as handleMessageAction } from './InAppMessaging/utils/handleMessageAction.mjs';
7
+ export { default as RenderNothing } from './components/RenderNothing/RenderNothing.mjs';
12
8
  export { default as usePreviousValue } from './hooks/usePreviousValue.mjs';
13
9
  export { default as useHasValueUpdated } from './hooks/useHasValueUpdated.mjs';
14
10
  export { templateJoin } from './utils/index.mjs';
package/dist/index.js CHANGED
@@ -6,8 +6,6 @@ var React = require('react');
6
6
  var react = require('@xstate/react');
7
7
  var awsAmplify = require('aws-amplify');
8
8
  var ui = require('@aws-amplify/ui');
9
- var notifications = require('@aws-amplify/notifications');
10
- var core = require('@aws-amplify/core');
11
9
 
12
10
  function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
13
11
 
@@ -259,6 +257,7 @@ const COMMON_ROUTE_MACHINE_KEYS = [
259
257
  ];
260
258
  const CONFIRM_RESET_PASSWORD_MACHINE_KEYS = [
261
259
  ...COMMON_ROUTE_MACHINE_KEYS,
260
+ 'hasValidationErrors',
262
261
  'resendCode',
263
262
  'validationErrors',
264
263
  ];
@@ -278,6 +277,7 @@ const CONFIRM_VERIFY_USER_MACHINE_KEYS = [
278
277
  ];
279
278
  const FORCE_NEW_PASSWORD_MACHINE_KEYS = [
280
279
  ...COMMON_ROUTE_MACHINE_KEYS,
280
+ 'hasValidationErrors',
281
281
  'toSignIn',
282
282
  'validationErrors',
283
283
  ];
@@ -293,6 +293,7 @@ const SIGN_IN_MACHINE_KEYS = [
293
293
  ];
294
294
  const SIGN_UP_MACHINE_KEYS = [
295
295
  ...COMMON_ROUTE_MACHINE_KEYS,
296
+ 'hasValidationErrors',
296
297
  'toSignIn',
297
298
  'validationErrors',
298
299
  ];
@@ -460,162 +461,6 @@ function useAuthenticatorInitMachine(data) {
460
461
  }, [initializeMachine, route, data]);
461
462
  }
462
463
 
463
- const InAppMessagingContext = React.createContext(null);
464
-
465
- const { InAppMessaging: InAppMessaging$1 } = notifications.Notifications;
466
- function InAppMessagingProvider({ children, }) {
467
- const [message, setMessage] = React.useState(null);
468
- React.useEffect(() => {
469
- const listener = InAppMessaging$1.onMessageReceived((message) => {
470
- setMessage(message);
471
- });
472
- return listener.remove;
473
- }, []);
474
- const clearMessage = React.useCallback(() => {
475
- setMessage(null);
476
- }, []);
477
- const value = React.useMemo(() => ({
478
- clearMessage,
479
- displayMessage: setMessage,
480
- message,
481
- }), [clearMessage, message]);
482
- return (React__default["default"].createElement(InAppMessagingContext.Provider, { value: value }, children));
483
- }
484
-
485
- /**
486
- * Utility hook used to access the InAppMessagingContext values
487
- *
488
- * @returns {InAppMessagingContextType} InAppMessaging context values
489
- */
490
- function useInAppMessaging() {
491
- const inAppMessagingContext = React.useContext(InAppMessagingContext);
492
- if (!inAppMessagingContext) {
493
- throw new Error('InAppMessagingContext is empty, did you forget the InAppMessagingProvider?');
494
- }
495
- return inAppMessagingContext;
496
- }
497
-
498
- const logger$2 = new core.ConsoleLogger('Notifications.InAppMessaging');
499
- const positions = {
500
- BOTTOM_BANNER: 'bottom',
501
- MIDDLE_BANNER: 'middle',
502
- TOP_BANNER: 'top',
503
- };
504
- const getPositionProp = (layout) => positions[layout];
505
- const getActionHandler = (actionParams, onMessageAction, onActionCallback) => ({
506
- onAction() {
507
- try {
508
- onMessageAction(actionParams);
509
- }
510
- catch (e) {
511
- logger$2.error(`Message action failure: ${e}`);
512
- }
513
- finally {
514
- onActionCallback();
515
- }
516
- },
517
- });
518
- const getButtonProps = (_a, onMessageAction, onActionCallback) => {
519
- var { action, url } = _a, baseButtonProps = __rest(_a, ["action", "url"]);
520
- return (Object.assign(Object.assign({}, baseButtonProps), getActionHandler({ action, url }, onMessageAction, onActionCallback)));
521
- };
522
- const getContentProps = (content, onMessageAction, onActionCallback) => {
523
- const props = {};
524
- if (!content) {
525
- return props;
526
- }
527
- const { primaryButton, secondaryButton } = content, restContent = __rest(content, ["primaryButton", "secondaryButton"]);
528
- if (primaryButton) {
529
- props.primaryButton = getButtonProps(primaryButton, onMessageAction, onActionCallback);
530
- }
531
- if (secondaryButton) {
532
- props.secondaryButton = getButtonProps(secondaryButton, onMessageAction, onActionCallback);
533
- }
534
- return Object.assign(Object.assign({}, props), restContent);
535
- };
536
-
537
- const EMPTY_PROPS = Object.freeze({});
538
- const logger$1 = new core.ConsoleLogger('Notifications.InAppMessaging');
539
- const { InAppMessaging } = notifications.Notifications;
540
- /**
541
- * Utility hook for parsing a message and retrieving its corresponding UI component and props
542
- *
543
- * @param {UseMessageParams} props - platform specific UI components, action handler, and styles
544
- * @returns {UseMessage} message UI component and props
545
- */
546
- function useMessage({ components, onMessageAction, }) {
547
- const { clearMessage, message } = useInAppMessaging();
548
- const { BannerMessage, CarouselMessage, FullScreenMessage, ModalMessage } = components;
549
- if (ui.isNil(message)) {
550
- return {
551
- Component: RenderNothing,
552
- props: EMPTY_PROPS,
553
- };
554
- }
555
- const { content, layout } = message;
556
- const onActionCallback = () => {
557
- InAppMessaging.notifyMessageInteraction(message, notifications.InAppMessageInteractionEvent.MESSAGE_ACTION_TAKEN);
558
- clearMessage();
559
- };
560
- const onClose = () => {
561
- InAppMessaging.notifyMessageInteraction(message, notifications.InAppMessageInteractionEvent.MESSAGE_DISMISSED);
562
- clearMessage();
563
- };
564
- const onDisplay = () => {
565
- InAppMessaging.notifyMessageInteraction(message, notifications.InAppMessageInteractionEvent.MESSAGE_DISPLAYED);
566
- };
567
- switch (layout) {
568
- case 'BOTTOM_BANNER':
569
- case 'MIDDLE_BANNER':
570
- case 'TOP_BANNER': {
571
- const props = Object.assign(Object.assign({}, getContentProps(content === null || content === void 0 ? void 0 : content[0], onMessageAction, onActionCallback)), { layout,
572
- onClose,
573
- onDisplay, position: getPositionProp(layout) });
574
- return { Component: BannerMessage, props };
575
- }
576
- case 'CAROUSEL': {
577
- const props = {
578
- data: content === null || content === void 0 ? void 0 : content.map((item) => getContentProps(item, onMessageAction, onActionCallback)),
579
- layout,
580
- onClose,
581
- onDisplay,
582
- };
583
- return { Component: CarouselMessage, props };
584
- }
585
- case 'FULL_SCREEN': {
586
- const props = Object.assign(Object.assign({}, getContentProps(content === null || content === void 0 ? void 0 : content[0], onMessageAction, onActionCallback)), { layout,
587
- onClose,
588
- onDisplay });
589
- return { Component: FullScreenMessage, props };
590
- }
591
- case 'MODAL': {
592
- const props = Object.assign(Object.assign({}, getContentProps(content === null || content === void 0 ? void 0 : content[0], onMessageAction, onActionCallback)), { layout,
593
- onClose,
594
- onDisplay });
595
- return { Component: ModalMessage, props };
596
- }
597
- default: {
598
- logger$1.info(`Received unknown InAppMessage layout: ${layout}`);
599
- return {
600
- Component: RenderNothing,
601
- props: EMPTY_PROPS,
602
- };
603
- }
604
- }
605
- }
606
-
607
- const logger = new core.ConsoleLogger('Notifications.InAppMessaging');
608
- const handleMessageAction = ({ action, handleMessageLinkAction, url, }) => {
609
- logger.info(`Handle action: ${action}`);
610
- if (action === 'LINK' || action === 'DEEP_LINK') {
611
- if (!ui.isString(url)) {
612
- logger.warn(`url must be of type string. Received: ${url}`);
613
- return;
614
- }
615
- handleMessageLinkAction(url);
616
- }
617
- };
618
-
619
464
  function usePreviousValue(value) {
620
465
  const previous = React.useRef();
621
466
  // update ref post render
@@ -640,8 +485,7 @@ function templateJoin(values, template) {
640
485
  }
641
486
 
642
487
  exports.AuthenticatorProvider = AuthenticatorProvider;
643
- exports.InAppMessagingProvider = InAppMessagingProvider;
644
- exports.handleMessageAction = handleMessageAction;
488
+ exports.RenderNothing = RenderNothing;
645
489
  exports.isAuthenticatorComponentRouteKey = isComponentRouteKey;
646
490
  exports.resolveAuthenticatorComponents = resolveAuthenticatorComponents;
647
491
  exports.templateJoin = templateJoin;
@@ -649,6 +493,4 @@ exports.useAuthenticator = useAuthenticator;
649
493
  exports.useAuthenticatorInitMachine = useAuthenticatorInitMachine;
650
494
  exports.useAuthenticatorRoute = useAuthenticatorRoute;
651
495
  exports.useHasValueUpdated = useHasValueUpdated;
652
- exports.useInAppMessaging = useInAppMessaging;
653
- exports.useMessage = useMessage;
654
496
  exports.usePreviousValue = usePreviousValue;
@@ -41,13 +41,16 @@ export type CommonRouteProps = {
41
41
  handleChange: UseAuthenticator['updateForm'];
42
42
  handleSubmit: UseAuthenticator['submitForm'];
43
43
  };
44
+ export interface ValidationProps {
45
+ hasValidationErrors: UseAuthenticator['hasValidationErrors'];
46
+ validationErrors?: UseAuthenticator['validationErrors'];
47
+ }
44
48
  /**
45
49
  * Base Route component props
46
50
  */
47
51
  export type ConfirmResetPasswordBaseProps<FieldType = {}> = {
48
52
  resendCode: UseAuthenticator['resendCode'];
49
- validationErrors?: UseAuthenticator['validationErrors'];
50
- } & CommonRouteProps & ComponentSlots<FieldType>;
53
+ } & CommonRouteProps & ComponentSlots<FieldType> & ValidationProps;
51
54
  export type ConfirmSignInBaseProps<FieldType = {}> = {
52
55
  challengeName: AuthChallengeName;
53
56
  toSignIn: UseAuthenticator['toSignIn'];
@@ -61,8 +64,7 @@ export type ConfirmVerifyUserProps<FieldType = {}> = {
61
64
  } & CommonRouteProps & ComponentSlots<FieldType>;
62
65
  export type ForceResetPasswordBaseProps<FieldType = {}> = {
63
66
  toSignIn: UseAuthenticator['toSignIn'];
64
- validationErrors?: UseAuthenticator['validationErrors'];
65
- } & CommonRouteProps & ComponentSlots<FieldType>;
67
+ } & CommonRouteProps & ComponentSlots<FieldType> & ValidationProps;
66
68
  export type ResetPasswordBaseProps<FieldType = {}> = {
67
69
  toSignIn: UseAuthenticator['toSignIn'];
68
70
  } & CommonRouteProps & ComponentSlots<FieldType>;
@@ -80,8 +82,7 @@ export type SignUpBaseProps<FieldType = {}> = {
80
82
  hideSignIn?: boolean;
81
83
  toFederatedSignIn: UseAuthenticator['toFederatedSignIn'];
82
84
  toSignIn: UseAuthenticator['toSignIn'];
83
- validationErrors?: UseAuthenticator['validationErrors'];
84
- } & CommonRouteProps & ComponentSlots<FieldType>;
85
+ } & CommonRouteProps & ComponentSlots<FieldType> & ValidationProps;
85
86
  export type VerifyUserProps<FieldType = {}> = {
86
87
  skipVerification: UseAuthenticator['skipVerification'];
87
88
  } & CommonRouteProps & ComponentSlots<FieldType>;
@@ -1,4 +1,4 @@
1
1
  export { AuthenticatorComponentDefaults, AuthenticatorComponentDefaultProps, AuthenticatorComponentOverrides, AuthenticatorFooterComponent, AuthenticatorFormFieldsComponent, AuthenticatorHeaderComponent, AuthenticatorLegacyField, AuthenticatorMachineContext, AuthenticatorProvider, AuthenticatorRouteComponentKey, AuthenticatorRouteComponentName, isAuthenticatorComponentRouteKey, resolveAuthenticatorComponents, useAuthenticator, useAuthenticatorRoute, UseAuthenticator, useAuthenticatorInitMachine, UseAuthenticatorRoute, } from './Authenticator';
2
- export { BannerMessageCommonProps, BannerMessageComponent, CarouselMessageCommonProps, CarouselMessageComponent, FullScreenMessageCommonProps, FullScreenMessageComponent, handleMessageAction, HandleMessageLinkAction, InAppMessagingProvider, MessageButtonProps, MessageCommonProps, MessageComponentBaseProps, MessageContentProps, MessageImage, MessageLayout, MessagePayloadStyle, MessageTextAlign, ModalMessageCommonProps, ModalMessageComponent, OnMessageAction, useInAppMessaging, useMessage, } from './InAppMessaging';
2
+ export { RenderNothing } from './components';
3
3
  export { useHasValueUpdated, usePreviousValue } from './hooks';
4
4
  export { templateJoin } from './utils';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@aws-amplify/ui-react-core",
3
- "version": "2.1.22",
3
+ "version": "2.1.24",
4
4
  "main": "dist/index.js",
5
5
  "module": "dist/esm/index.mjs",
6
6
  "react-native": "dist/index.js",
@@ -31,7 +31,7 @@
31
31
  "typecheck": "tsc --noEmit"
32
32
  },
33
33
  "dependencies": {
34
- "@aws-amplify/ui": "5.6.3",
34
+ "@aws-amplify/ui": "5.6.5",
35
35
  "@xstate/react": "3.0.1",
36
36
  "lodash": "4.17.21",
37
37
  "xstate": "^4.33.6"
@@ -1,5 +0,0 @@
1
- import { createContext } from 'react';
2
-
3
- const InAppMessagingContext = createContext(null);
4
-
5
- export { InAppMessagingContext as default };
@@ -1,25 +0,0 @@
1
- import React, { useState, useEffect, useCallback, useMemo } from 'react';
2
- import { Notifications } from '@aws-amplify/notifications';
3
- import InAppMessagingContext from '../InAppMessagingContext/InAppMessagingContext.mjs';
4
-
5
- const { InAppMessaging } = Notifications;
6
- function InAppMessagingProvider({ children, }) {
7
- const [message, setMessage] = useState(null);
8
- useEffect(() => {
9
- const listener = InAppMessaging.onMessageReceived((message) => {
10
- setMessage(message);
11
- });
12
- return listener.remove;
13
- }, []);
14
- const clearMessage = useCallback(() => {
15
- setMessage(null);
16
- }, []);
17
- const value = useMemo(() => ({
18
- clearMessage,
19
- displayMessage: setMessage,
20
- message,
21
- }), [clearMessage, message]);
22
- return (React.createElement(InAppMessagingContext.Provider, { value: value }, children));
23
- }
24
-
25
- export { InAppMessagingProvider as default };
@@ -1,18 +0,0 @@
1
- import { useContext } from 'react';
2
- import InAppMessagingContext from '../../context/InAppMessagingContext/InAppMessagingContext.mjs';
3
- import '@aws-amplify/notifications';
4
-
5
- /**
6
- * Utility hook used to access the InAppMessagingContext values
7
- *
8
- * @returns {InAppMessagingContextType} InAppMessaging context values
9
- */
10
- function useInAppMessaging() {
11
- const inAppMessagingContext = useContext(InAppMessagingContext);
12
- if (!inAppMessagingContext) {
13
- throw new Error('InAppMessagingContext is empty, did you forget the InAppMessagingProvider?');
14
- }
15
- return inAppMessagingContext;
16
- }
17
-
18
- export { useInAppMessaging as default };
@@ -1,78 +0,0 @@
1
- import { ConsoleLogger } from '@aws-amplify/core';
2
- import { InAppMessageInteractionEvent, Notifications } from '@aws-amplify/notifications';
3
- import { isNil } from '@aws-amplify/ui';
4
- import RenderNothing from '../../../components/RenderNothing/RenderNothing.mjs';
5
- import useInAppMessaging from '../useInAppMessaging/useInAppMessaging.mjs';
6
- import { getContentProps, getPositionProp } from './utils.mjs';
7
-
8
- const EMPTY_PROPS = Object.freeze({});
9
- const logger = new ConsoleLogger('Notifications.InAppMessaging');
10
- const { InAppMessaging } = Notifications;
11
- /**
12
- * Utility hook for parsing a message and retrieving its corresponding UI component and props
13
- *
14
- * @param {UseMessageParams} props - platform specific UI components, action handler, and styles
15
- * @returns {UseMessage} message UI component and props
16
- */
17
- function useMessage({ components, onMessageAction, }) {
18
- const { clearMessage, message } = useInAppMessaging();
19
- const { BannerMessage, CarouselMessage, FullScreenMessage, ModalMessage } = components;
20
- if (isNil(message)) {
21
- return {
22
- Component: RenderNothing,
23
- props: EMPTY_PROPS,
24
- };
25
- }
26
- const { content, layout } = message;
27
- const onActionCallback = () => {
28
- InAppMessaging.notifyMessageInteraction(message, InAppMessageInteractionEvent.MESSAGE_ACTION_TAKEN);
29
- clearMessage();
30
- };
31
- const onClose = () => {
32
- InAppMessaging.notifyMessageInteraction(message, InAppMessageInteractionEvent.MESSAGE_DISMISSED);
33
- clearMessage();
34
- };
35
- const onDisplay = () => {
36
- InAppMessaging.notifyMessageInteraction(message, InAppMessageInteractionEvent.MESSAGE_DISPLAYED);
37
- };
38
- switch (layout) {
39
- case 'BOTTOM_BANNER':
40
- case 'MIDDLE_BANNER':
41
- case 'TOP_BANNER': {
42
- const props = Object.assign(Object.assign({}, getContentProps(content === null || content === void 0 ? void 0 : content[0], onMessageAction, onActionCallback)), { layout,
43
- onClose,
44
- onDisplay, position: getPositionProp(layout) });
45
- return { Component: BannerMessage, props };
46
- }
47
- case 'CAROUSEL': {
48
- const props = {
49
- data: content === null || content === void 0 ? void 0 : content.map((item) => getContentProps(item, onMessageAction, onActionCallback)),
50
- layout,
51
- onClose,
52
- onDisplay,
53
- };
54
- return { Component: CarouselMessage, props };
55
- }
56
- case 'FULL_SCREEN': {
57
- const props = Object.assign(Object.assign({}, getContentProps(content === null || content === void 0 ? void 0 : content[0], onMessageAction, onActionCallback)), { layout,
58
- onClose,
59
- onDisplay });
60
- return { Component: FullScreenMessage, props };
61
- }
62
- case 'MODAL': {
63
- const props = Object.assign(Object.assign({}, getContentProps(content === null || content === void 0 ? void 0 : content[0], onMessageAction, onActionCallback)), { layout,
64
- onClose,
65
- onDisplay });
66
- return { Component: ModalMessage, props };
67
- }
68
- default: {
69
- logger.info(`Received unknown InAppMessage layout: ${layout}`);
70
- return {
71
- Component: RenderNothing,
72
- props: EMPTY_PROPS,
73
- };
74
- }
75
- }
76
- }
77
-
78
- export { EMPTY_PROPS, useMessage as default };
@@ -1,43 +0,0 @@
1
- import { __rest } from '../../../node_modules/tslib/tslib.es6.mjs';
2
- import { ConsoleLogger } from '@aws-amplify/core';
3
-
4
- const logger = new ConsoleLogger('Notifications.InAppMessaging');
5
- const positions = {
6
- BOTTOM_BANNER: 'bottom',
7
- MIDDLE_BANNER: 'middle',
8
- TOP_BANNER: 'top',
9
- };
10
- const getPositionProp = (layout) => positions[layout];
11
- const getActionHandler = (actionParams, onMessageAction, onActionCallback) => ({
12
- onAction() {
13
- try {
14
- onMessageAction(actionParams);
15
- }
16
- catch (e) {
17
- logger.error(`Message action failure: ${e}`);
18
- }
19
- finally {
20
- onActionCallback();
21
- }
22
- },
23
- });
24
- const getButtonProps = (_a, onMessageAction, onActionCallback) => {
25
- var { action, url } = _a, baseButtonProps = __rest(_a, ["action", "url"]);
26
- return (Object.assign(Object.assign({}, baseButtonProps), getActionHandler({ action, url }, onMessageAction, onActionCallback)));
27
- };
28
- const getContentProps = (content, onMessageAction, onActionCallback) => {
29
- const props = {};
30
- if (!content) {
31
- return props;
32
- }
33
- const { primaryButton, secondaryButton } = content, restContent = __rest(content, ["primaryButton", "secondaryButton"]);
34
- if (primaryButton) {
35
- props.primaryButton = getButtonProps(primaryButton, onMessageAction, onActionCallback);
36
- }
37
- if (secondaryButton) {
38
- props.secondaryButton = getButtonProps(secondaryButton, onMessageAction, onActionCallback);
39
- }
40
- return Object.assign(Object.assign({}, props), restContent);
41
- };
42
-
43
- export { getActionHandler, getContentProps, getPositionProp };
@@ -1,16 +0,0 @@
1
- import { ConsoleLogger } from '@aws-amplify/core';
2
- import { isString } from '@aws-amplify/ui';
3
-
4
- const logger = new ConsoleLogger('Notifications.InAppMessaging');
5
- const handleMessageAction = ({ action, handleMessageLinkAction, url, }) => {
6
- logger.info(`Handle action: ${action}`);
7
- if (action === 'LINK' || action === 'DEEP_LINK') {
8
- if (!isString(url)) {
9
- logger.warn(`url must be of type string. Received: ${url}`);
10
- return;
11
- }
12
- handleMessageLinkAction(url);
13
- }
14
- };
15
-
16
- export { handleMessageAction as default };
@@ -1,9 +0,0 @@
1
- /// <reference types="react" />
2
- import { Message } from '../../types';
3
- export interface InAppMessagingContextType {
4
- clearMessage: () => void;
5
- displayMessage: (message: Message) => void;
6
- message: Message | null;
7
- }
8
- declare const InAppMessagingContext: import("react").Context<InAppMessagingContextType | null>;
9
- export default InAppMessagingContext;
@@ -1 +0,0 @@
1
- export { default as InAppMessagingContext, InAppMessagingContextType, } from './InAppMessagingContext';
@@ -1,5 +0,0 @@
1
- import { ReactNode } from 'react';
2
- export interface InAppMessagingProviderProps {
3
- children: ReactNode;
4
- }
5
- export default function InAppMessagingProvider({ children, }: InAppMessagingProviderProps): JSX.Element;
@@ -1 +0,0 @@
1
- export { default as InAppMessagingProvider } from './InAppMessagingProvider';
@@ -1,2 +0,0 @@
1
- export * from './InAppMessagingContext';
2
- export * from './InAppMessagingProvider';
@@ -1,2 +0,0 @@
1
- export * from './useInAppMessaging';
2
- export * from './useMessage';
@@ -1 +0,0 @@
1
- export { default as useInAppMessaging } from './useInAppMessaging';
@@ -1,7 +0,0 @@
1
- import { InAppMessagingContextType } from '../../context';
2
- /**
3
- * Utility hook used to access the InAppMessagingContext values
4
- *
5
- * @returns {InAppMessagingContextType} InAppMessaging context values
6
- */
7
- export default function useInAppMessaging(): InAppMessagingContextType;
@@ -1 +0,0 @@
1
- export { default as useMessage } from './useMessage';
@@ -1,18 +0,0 @@
1
- import { BannerMessageCommonProps, BannerMessageComponent, CarouselMessageCommonProps, CarouselMessageComponent, FullScreenMessageCommonProps, FullScreenMessageComponent, ModalMessageCommonProps, ModalMessageComponent, OnMessageAction } from '../../types';
2
- interface Components<PlatformStyleProps> {
3
- BannerMessage: BannerMessageComponent<PlatformStyleProps>;
4
- CarouselMessage: CarouselMessageComponent<PlatformStyleProps>;
5
- FullScreenMessage: FullScreenMessageComponent<PlatformStyleProps>;
6
- ModalMessage: ModalMessageComponent<PlatformStyleProps>;
7
- }
8
- export interface UseMessageParams<PlatformStyleProps> {
9
- components: Components<PlatformStyleProps>;
10
- onMessageAction: OnMessageAction;
11
- }
12
- type MessageComponent<PlatformStyleProps> = BannerMessageComponent<PlatformStyleProps> | CarouselMessageComponent<PlatformStyleProps> | FullScreenMessageComponent<PlatformStyleProps> | ModalMessageComponent<PlatformStyleProps>;
13
- type MessageProps<PlatformStyleProps> = BannerMessageCommonProps<PlatformStyleProps> | CarouselMessageCommonProps<PlatformStyleProps> | FullScreenMessageCommonProps<PlatformStyleProps> | ModalMessageCommonProps<PlatformStyleProps>;
14
- export interface UseMessage<PlatformStyleProps> {
15
- Component: MessageComponent<PlatformStyleProps>;
16
- props: MessageProps<PlatformStyleProps>;
17
- }
18
- export {};
@@ -1,9 +0,0 @@
1
- import { UseMessage, UseMessageParams } from './types';
2
- export declare const EMPTY_PROPS: Readonly<{}>;
3
- /**
4
- * Utility hook for parsing a message and retrieving its corresponding UI component and props
5
- *
6
- * @param {UseMessageParams} props - platform specific UI components, action handler, and styles
7
- * @returns {UseMessage} message UI component and props
8
- */
9
- export default function useMessage<PlatformStyleProps>({ components, onMessageAction, }: UseMessageParams<PlatformStyleProps>): UseMessage<PlatformStyleProps>;
@@ -1,9 +0,0 @@
1
- import { BannerMessageLayouts, MessageAction, MessageComponentPosition, MessageContent, MessageContentProps, OnMessageAction } from '../../types';
2
- export declare const getPositionProp: (layout: BannerMessageLayouts) => MessageComponentPosition;
3
- export declare const getActionHandler: (actionParams: {
4
- action: MessageAction;
5
- url?: string;
6
- }, onMessageAction: OnMessageAction, onActionCallback: () => void) => {
7
- onAction: () => void;
8
- };
9
- export declare const getContentProps: (content: MessageContent, onMessageAction: OnMessageAction, onActionCallback: () => void) => MessageContentProps;
@@ -1,4 +0,0 @@
1
- export * from './hooks';
2
- export * from './context';
3
- export * from './types';
4
- export * from './utils';
@@ -1,52 +0,0 @@
1
- import React from 'react';
2
- import { InAppMessage, InAppMessageAction, InAppMessageButton, InAppMessageContent, InAppMessageImage, InAppMessageLayout, InAppMessageStyle, InAppMessageTextAlign } from '@aws-amplify/notifications';
3
- export type Message = InAppMessage;
4
- export type MessageAction = InAppMessageAction;
5
- export type MessageButton = InAppMessageButton;
6
- export type MessageContent = InAppMessageContent;
7
- export type MessageImage = InAppMessageImage;
8
- export type MessageLayout = InAppMessageLayout;
9
- export type MessageStyle = InAppMessageStyle;
10
- export type MessageTextAlign = InAppMessageTextAlign;
11
- export type OnMessageAction = (params: {
12
- action: MessageAction;
13
- url?: string | undefined;
14
- }) => void;
15
- export interface MessageButtonProps extends Omit<MessageButton, 'action' | 'url'> {
16
- onAction: () => void;
17
- }
18
- export interface MessageContentProps extends Omit<MessageContent, 'primaryButton' | 'secondaryButton'> {
19
- primaryButton?: MessageButtonProps;
20
- secondaryButton?: MessageButtonProps;
21
- }
22
- export interface MessageComponentBaseProps<Style = unknown> extends MessageCommonProps<Style>, MessageContentProps {
23
- }
24
- export interface MessageCommonProps<PlatformStyleProps> {
25
- layout: MessageLayout;
26
- onClose?: () => void;
27
- onDisplay?: () => void;
28
- style?: PlatformStyleProps;
29
- }
30
- export type BannerMessageLayouts = 'BOTTOM_BANNER' | 'MIDDLE_BANNER' | 'TOP_BANNER';
31
- export type MessageComponentPosition = 'bottom' | 'middle' | 'top';
32
- export interface BannerMessageCommonProps<PlatformStyleProps> extends MessageCommonProps<PlatformStyleProps>, MessageContentProps {
33
- position?: MessageComponentPosition;
34
- }
35
- export interface CarouselMessageCommonProps<PlatformStyleProps> extends MessageCommonProps<PlatformStyleProps> {
36
- data?: MessageContentProps[];
37
- }
38
- export interface FullScreenMessageCommonProps<PlatformStyleProps> extends MessageCommonProps<PlatformStyleProps>, MessageContentProps {
39
- }
40
- export interface ModalMessageCommonProps<PlatformStyleProps> extends MessageCommonProps<PlatformStyleProps>, MessageContentProps {
41
- }
42
- export interface MessagePayloadStyle {
43
- body?: MessageStyle;
44
- container?: MessageStyle;
45
- header?: MessageStyle;
46
- primaryButton?: MessageStyle;
47
- secondaryButton?: MessageStyle;
48
- }
49
- export type BannerMessageComponent<PlatformStyleProps> = React.ComponentType<BannerMessageCommonProps<PlatformStyleProps>>;
50
- export type CarouselMessageComponent<PlatformStyleProps> = React.ComponentType<CarouselMessageCommonProps<PlatformStyleProps>>;
51
- export type FullScreenMessageComponent<PlatformStyleProps> = React.ComponentType<FullScreenMessageCommonProps<PlatformStyleProps>>;
52
- export type ModalMessageComponent<PlatformStyleProps> = React.ComponentType<ModalMessageCommonProps<PlatformStyleProps>>;
@@ -1,9 +0,0 @@
1
- import { MessageAction } from '../types';
2
- export type HandleMessageLinkAction = (url: string) => void | Promise<void>;
3
- interface HandleMessageActionParams {
4
- action: MessageAction;
5
- handleMessageLinkAction: HandleMessageLinkAction;
6
- url: string | undefined;
7
- }
8
- declare const handleMessageAction: ({ action, handleMessageLinkAction, url, }: HandleMessageActionParams) => void;
9
- export default handleMessageAction;
@@ -1 +0,0 @@
1
- export { default as handleMessageAction, HandleMessageLinkAction, } from './handleMessageAction';