@selfcommunity/react-ui 0.7.50-events.71 → 0.7.50-events.77

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 (123) hide show
  1. package/lib/cjs/assets/onBoarding/Android.d.ts +1 -0
  2. package/lib/cjs/assets/onBoarding/Android.js +7 -0
  3. package/lib/cjs/assets/onBoarding/CategoryA.d.ts +1 -0
  4. package/lib/cjs/assets/onBoarding/CategoryA.js +7 -0
  5. package/lib/cjs/assets/onBoarding/CategoryB.d.ts +1 -0
  6. package/lib/cjs/assets/onBoarding/CategoryB.js +7 -0
  7. package/lib/cjs/assets/onBoarding/Header.d.ts +1 -0
  8. package/lib/cjs/assets/onBoarding/Header.js +7 -0
  9. package/lib/cjs/assets/onBoarding/Ios.d.ts +1 -0
  10. package/lib/cjs/assets/onBoarding/Ios.js +7 -0
  11. package/lib/cjs/components/EventInviteButton/EventInviteButton.d.ts +1 -1
  12. package/lib/cjs/components/EventInviteButton/EventInviteButton.js +17 -28
  13. package/lib/cjs/components/EventMembersWidget/EventMembersWidget.js +11 -4
  14. package/lib/cjs/components/EventMembersWidget/TabContentComponent.d.ts +1 -0
  15. package/lib/cjs/components/EventMembersWidget/TabContentComponent.js +15 -2
  16. package/lib/cjs/components/Feed/Feed.d.ts +1 -0
  17. package/lib/cjs/components/Feed/Feed.js +3 -0
  18. package/lib/cjs/components/OnBoardingWidget/OnBoardingWidget.d.ts +19 -0
  19. package/lib/cjs/components/OnBoardingWidget/OnBoardingWidget.js +209 -0
  20. package/lib/cjs/components/OnBoardingWidget/Skeleton.d.ts +1 -0
  21. package/lib/cjs/components/OnBoardingWidget/Skeleton.js +24 -0
  22. package/lib/cjs/components/OnBoardingWidget/Steps/App/App.d.ts +18 -0
  23. package/lib/cjs/components/OnBoardingWidget/Steps/App/App.js +74 -0
  24. package/lib/cjs/components/OnBoardingWidget/Steps/App/index.d.ts +3 -0
  25. package/lib/cjs/components/OnBoardingWidget/Steps/App/index.js +5 -0
  26. package/lib/cjs/components/OnBoardingWidget/Steps/Appearance/Appearance.d.ts +13 -0
  27. package/lib/cjs/components/OnBoardingWidget/Steps/Appearance/Appearance.js +226 -0
  28. package/lib/cjs/components/OnBoardingWidget/Steps/Appearance/index.d.ts +3 -0
  29. package/lib/cjs/components/OnBoardingWidget/Steps/Appearance/index.js +5 -0
  30. package/lib/cjs/components/OnBoardingWidget/Steps/Appearance/reducer.d.ts +15 -0
  31. package/lib/cjs/components/OnBoardingWidget/Steps/Appearance/reducer.js +42 -0
  32. package/lib/cjs/components/OnBoardingWidget/Steps/Category/Category.d.ts +18 -0
  33. package/lib/cjs/components/OnBoardingWidget/Steps/Category/Category.js +81 -0
  34. package/lib/cjs/components/OnBoardingWidget/Steps/Category/index.d.ts +3 -0
  35. package/lib/cjs/components/OnBoardingWidget/Steps/Category/index.js +5 -0
  36. package/lib/cjs/components/OnBoardingWidget/Steps/Content/Content.d.ts +18 -0
  37. package/lib/cjs/components/OnBoardingWidget/Steps/Content/Content.js +51 -0
  38. package/lib/cjs/components/OnBoardingWidget/Steps/Content/index.d.ts +3 -0
  39. package/lib/cjs/components/OnBoardingWidget/Steps/Content/index.js +5 -0
  40. package/lib/cjs/components/OnBoardingWidget/Steps/Invite/Invite.d.ts +13 -0
  41. package/lib/cjs/components/OnBoardingWidget/Steps/Invite/Invite.js +54 -0
  42. package/lib/cjs/components/OnBoardingWidget/Steps/Invite/index.d.ts +3 -0
  43. package/lib/cjs/components/OnBoardingWidget/Steps/Invite/index.js +5 -0
  44. package/lib/cjs/components/OnBoardingWidget/Steps/Profile/Profile.d.ts +25 -0
  45. package/lib/cjs/components/OnBoardingWidget/Steps/Profile/Profile.js +94 -0
  46. package/lib/cjs/components/OnBoardingWidget/Steps/Profile/index.d.ts +3 -0
  47. package/lib/cjs/components/OnBoardingWidget/Steps/Profile/index.js +5 -0
  48. package/lib/cjs/components/OnBoardingWidget/constants.d.ts +1 -0
  49. package/lib/cjs/components/OnBoardingWidget/constants.js +4 -0
  50. package/lib/cjs/components/OnBoardingWidget/index.d.ts +4 -0
  51. package/lib/cjs/components/OnBoardingWidget/index.js +8 -0
  52. package/lib/cjs/components/PlatformWidget/constants.d.ts +4 -0
  53. package/lib/cjs/components/PlatformWidget/constants.js +5 -1
  54. package/lib/cjs/index.d.ts +3 -1
  55. package/lib/cjs/index.js +8 -3
  56. package/lib/cjs/shared/ProgressBar/index.d.ts +23 -0
  57. package/lib/cjs/shared/ProgressBar/index.js +25 -0
  58. package/lib/cjs/utils/onBoarding.d.ts +2 -0
  59. package/lib/cjs/utils/onBoarding.js +20 -0
  60. package/lib/esm/assets/onBoarding/Android.d.ts +1 -0
  61. package/lib/esm/assets/onBoarding/Android.js +4 -0
  62. package/lib/esm/assets/onBoarding/CategoryA.d.ts +1 -0
  63. package/lib/esm/assets/onBoarding/CategoryA.js +4 -0
  64. package/lib/esm/assets/onBoarding/CategoryB.d.ts +1 -0
  65. package/lib/esm/assets/onBoarding/CategoryB.js +4 -0
  66. package/lib/esm/assets/onBoarding/Header.d.ts +1 -0
  67. package/lib/esm/assets/onBoarding/Header.js +4 -0
  68. package/lib/esm/assets/onBoarding/Ios.d.ts +1 -0
  69. package/lib/esm/assets/onBoarding/Ios.js +4 -0
  70. package/lib/esm/components/EventInviteButton/EventInviteButton.d.ts +1 -1
  71. package/lib/esm/components/EventInviteButton/EventInviteButton.js +17 -28
  72. package/lib/esm/components/EventMembersWidget/EventMembersWidget.js +11 -4
  73. package/lib/esm/components/EventMembersWidget/TabContentComponent.d.ts +1 -0
  74. package/lib/esm/components/EventMembersWidget/TabContentComponent.js +15 -2
  75. package/lib/esm/components/Feed/Feed.d.ts +1 -0
  76. package/lib/esm/components/Feed/Feed.js +3 -0
  77. package/lib/esm/components/OnBoardingWidget/OnBoardingWidget.d.ts +19 -0
  78. package/lib/esm/components/OnBoardingWidget/OnBoardingWidget.js +207 -0
  79. package/lib/esm/components/OnBoardingWidget/Skeleton.d.ts +1 -0
  80. package/lib/esm/components/OnBoardingWidget/Skeleton.js +20 -0
  81. package/lib/esm/components/OnBoardingWidget/Steps/App/App.d.ts +18 -0
  82. package/lib/esm/components/OnBoardingWidget/Steps/App/App.js +70 -0
  83. package/lib/esm/components/OnBoardingWidget/Steps/App/index.d.ts +3 -0
  84. package/lib/esm/components/OnBoardingWidget/Steps/App/index.js +2 -0
  85. package/lib/esm/components/OnBoardingWidget/Steps/Appearance/Appearance.d.ts +13 -0
  86. package/lib/esm/components/OnBoardingWidget/Steps/Appearance/Appearance.js +223 -0
  87. package/lib/esm/components/OnBoardingWidget/Steps/Appearance/index.d.ts +3 -0
  88. package/lib/esm/components/OnBoardingWidget/Steps/Appearance/index.js +2 -0
  89. package/lib/esm/components/OnBoardingWidget/Steps/Appearance/reducer.d.ts +15 -0
  90. package/lib/esm/components/OnBoardingWidget/Steps/Appearance/reducer.js +37 -0
  91. package/lib/esm/components/OnBoardingWidget/Steps/Category/Category.d.ts +18 -0
  92. package/lib/esm/components/OnBoardingWidget/Steps/Category/Category.js +77 -0
  93. package/lib/esm/components/OnBoardingWidget/Steps/Category/index.d.ts +3 -0
  94. package/lib/esm/components/OnBoardingWidget/Steps/Category/index.js +2 -0
  95. package/lib/esm/components/OnBoardingWidget/Steps/Content/Content.d.ts +18 -0
  96. package/lib/esm/components/OnBoardingWidget/Steps/Content/Content.js +47 -0
  97. package/lib/esm/components/OnBoardingWidget/Steps/Content/index.d.ts +3 -0
  98. package/lib/esm/components/OnBoardingWidget/Steps/Content/index.js +2 -0
  99. package/lib/esm/components/OnBoardingWidget/Steps/Invite/Invite.d.ts +13 -0
  100. package/lib/esm/components/OnBoardingWidget/Steps/Invite/Invite.js +50 -0
  101. package/lib/esm/components/OnBoardingWidget/Steps/Invite/index.d.ts +3 -0
  102. package/lib/esm/components/OnBoardingWidget/Steps/Invite/index.js +2 -0
  103. package/lib/esm/components/OnBoardingWidget/Steps/Profile/Profile.d.ts +25 -0
  104. package/lib/esm/components/OnBoardingWidget/Steps/Profile/Profile.js +91 -0
  105. package/lib/esm/components/OnBoardingWidget/Steps/Profile/index.d.ts +3 -0
  106. package/lib/esm/components/OnBoardingWidget/Steps/Profile/index.js +2 -0
  107. package/lib/esm/components/OnBoardingWidget/constants.d.ts +1 -0
  108. package/lib/esm/components/OnBoardingWidget/constants.js +1 -0
  109. package/lib/esm/components/OnBoardingWidget/index.d.ts +4 -0
  110. package/lib/esm/components/OnBoardingWidget/index.js +4 -0
  111. package/lib/esm/components/PlatformWidget/constants.d.ts +4 -0
  112. package/lib/esm/components/PlatformWidget/constants.js +4 -0
  113. package/lib/esm/index.d.ts +3 -1
  114. package/lib/esm/index.js +5 -3
  115. package/lib/esm/shared/ProgressBar/index.d.ts +23 -0
  116. package/lib/esm/shared/ProgressBar/index.js +22 -0
  117. package/lib/esm/utils/onBoarding.d.ts +2 -0
  118. package/lib/esm/utils/onBoarding.js +15 -0
  119. package/lib/umd/920.js +2 -0
  120. package/lib/umd/react-ui.js +1 -1
  121. package/package.json +181 -180
  122. package/lib/umd/224.js +0 -2
  123. /package/lib/umd/{224.js.LICENSE.txt → 920.js.LICENSE.txt} +0 -0
@@ -20,7 +20,7 @@ export interface EventInviteButtonProps extends ButtonProps {
20
20
  * Functions to handle invitations sending in event creation mode
21
21
  * @default null
22
22
  */
23
- handleInvitations?: (data: any) => any;
23
+ handleInvitations?: ((invited: boolean) => void) | null;
24
24
  /**
25
25
  * Any other properties
26
26
  */
@@ -101,13 +101,6 @@ export default function EventInviteButton(inProps) {
101
101
  PubSub.publish(`${SCTopicType.EVENT}.${SCGroupEventType.INVITE_MEMBER}`, usersInvited);
102
102
  }
103
103
  }
104
- function convertToInvitedUsersObject(data) {
105
- const invite_users = {};
106
- data.forEach((user, index) => {
107
- invite_users[`invite_users[${index}]`] = user.id;
108
- });
109
- return invite_users;
110
- }
111
104
  /**
112
105
  * Memoized users invited ids
113
106
  */
@@ -183,26 +176,22 @@ export default function EventInviteButton(inProps) {
183
176
  * Handles invitation sending
184
177
  */
185
178
  const handleSendInvitations = () => {
186
- if (handleInvitations) {
187
- handleInvitations(convertToInvitedUsersObject(invited));
179
+ const data = { users: ids };
180
+ setIsSending(true);
181
+ EventService.inviteOrAcceptEventRequest(scEvent.id, data)
182
+ .then(() => {
183
+ setIsSending(false);
188
184
  setOpen(false);
189
- }
190
- else {
191
- const data = { users: ids };
192
- setIsSending(true);
193
- EventService.inviteOrAcceptEventRequest(scEvent.id, data)
194
- .then(() => {
195
- setIsSending(false);
196
- setOpen(false);
197
- setInvited([]);
198
- notifyChanges(scEvent, invited);
199
- })
200
- .catch((error) => {
201
- setOpen(false);
202
- setLoading(false);
203
- Logger.error(SCOPE_SC_UI, error);
204
- });
205
- }
185
+ setInvited([]);
186
+ notifyChanges(scEvent, invited);
187
+ handleInvitations === null || handleInvitations === void 0 ? void 0 : handleInvitations(true);
188
+ })
189
+ .catch((error) => {
190
+ setOpen(false);
191
+ setLoading(false);
192
+ handleInvitations === null || handleInvitations === void 0 ? void 0 : handleInvitations(false);
193
+ Logger.error(SCOPE_SC_UI, error);
194
+ });
206
195
  };
207
196
  // Autocomplete Handlers
208
197
  const handleInputChange = (event, value, reason) => {
@@ -247,8 +236,8 @@ export default function EventInviteButton(inProps) {
247
236
  });
248
237
  };
249
238
  /**
250
- * If in event edit mode and logged-in user is not also the event manager, the component is hidden.
251
- // */
239
+ * If in event edit mode and logged-in user is not also the event manager, the component is hidden.
240
+ // */
252
241
  if (event && !isEventAdmin) {
253
242
  return null;
254
243
  }
@@ -54,6 +54,7 @@ export default function EventMembersWidget(inProps) {
54
54
  }, stateWidgetInitializer);
55
55
  const [invitedNumber, setInvitedNumber] = useState(0);
56
56
  const [tabValue, setTabValue] = useState('1');
57
+ const [refresh, setRefresh] = useState(false);
57
58
  // CONTEXT
58
59
  const scUserContext = useSCUser();
59
60
  // HOOKS
@@ -91,14 +92,20 @@ export default function EventMembersWidget(inProps) {
91
92
  let _t;
92
93
  if (scUserContext.user && scEvent) {
93
94
  _t = setTimeout(() => {
94
- _initParticipants();
95
- _initInvited();
95
+ if (refresh) {
96
+ _initInvited();
97
+ setRefresh(false);
98
+ }
99
+ else {
100
+ _initParticipants();
101
+ _initInvited();
102
+ }
96
103
  });
97
104
  return () => {
98
105
  clearTimeout(_t);
99
106
  };
100
107
  }
101
- }, [scUserContext.user, scEvent]);
108
+ }, [scUserContext.user, scEvent, refresh]);
102
109
  // HANDLERS
103
110
  const handleTabChange = useCallback((_evt, newTabValue) => {
104
111
  setTabValue(newTabValue);
@@ -113,5 +120,5 @@ export default function EventMembersWidget(inProps) {
113
120
  return (_jsx(Root, Object.assign({ className: classes.root }, rest, { children: _jsxs(CardContent, Object.assign({ className: classes.content }, { children: [_jsx(Typography, Object.assign({ variant: "h5", className: classes.title }, { children: _jsx(FormattedMessage, { id: "ui.eventMembersWidget.invited", defaultMessage: "ui.eventMembersWidget.invited" }) })), _jsxs(TabContext, Object.assign({ value: tabValue }, { children: [_jsxs(TabList, Object.assign({ className: classes.tabsWrapper, onChange: handleTabChange, textColor: "primary", indicatorColor: "primary", variant: "fullWidth" }, { children: [_jsx(Tab, { label: _jsxs(Stack, Object.assign({ className: classes.tabLabelWrapper }, { children: [_jsx(Typography, Object.assign({ variant: "h3" }, { children: participants.count })), _jsx(Typography, Object.assign({ variant: "subtitle2" }, { children: _jsx(FormattedMessage, { id: "ui.eventMembersWidget.participants", defaultMessage: "ui.eventMembersWidget.participants" }) }))] })), value: "1" }), invited && (_jsx(Tab, { label: _jsxs(Stack, Object.assign({ className: classes.tabLabelWrapper }, { children: [_jsx(Typography, Object.assign({ variant: "h3" }, { children: invitedNumber })), _jsx(Typography, Object.assign({ variant: "subtitle2" }, { children: _jsx(FormattedMessage, { id: "ui.eventMembersWidget.invited", defaultMessage: "ui.eventMembersWidget.invited" }) }))] })), value: "2" }))] })), _jsx(TabPanel, Object.assign({ value: "1", className: classes.tabPanel }, { children: _jsx(TabContentComponent, { state: participants, dispatch: dispatchParticipants, userProps: userProps, dialogProps: dialogProps }) })), invited && (_jsx(TabPanel, Object.assign({ value: "2", className: classes.tabPanel }, { children: _jsx(TabContentComponent, { state: invited, dispatch: dispatchInvited, userProps: userProps, dialogProps: dialogProps, actionProps: {
114
121
  scEvent,
115
122
  setInvitedNumber
116
- } }) })))] }))] })) })));
123
+ }, setRefresh: setRefresh }) })))] }))] })) })));
117
124
  }
@@ -19,6 +19,7 @@ interface TabComponentProps {
19
19
  scEvent?: SCEventType;
20
20
  setInvitedNumber: Dispatch<SetStateAction<number>>;
21
21
  };
22
+ setRefresh?: Dispatch<SetStateAction<boolean>>;
22
23
  }
23
24
  export default function TabContentComponent(props: TabComponentProps): JSX.Element;
24
25
  export {};
@@ -1,16 +1,20 @@
1
1
  import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import { Button, List, ListItem, styled, Typography } from '@mui/material';
3
3
  import { Endpoints, http } from '@selfcommunity/api-services';
4
+ import { Logger } from '@selfcommunity/utils';
4
5
  import { useCallback, useState } from 'react';
5
6
  import { FormattedMessage } from 'react-intl';
7
+ import { SCOPE_SC_UI } from '../../constants/Errors';
6
8
  import BaseDialog from '../../shared/BaseDialog';
7
9
  import InfiniteScroll from '../../shared/InfiniteScroll';
8
10
  import { actionWidgetTypes } from '../../utils/widget';
11
+ import EventInviteButton from '../EventInviteButton';
9
12
  import InviteUserEventButton from '../InviteUserEventButton';
10
13
  import User, { UserSkeleton } from '../User';
11
14
  import { PREFIX } from './constants';
12
15
  const classes = {
13
16
  actionButton: `${PREFIX}-action-button`,
17
+ eventButton: `${PREFIX}-event-button`,
14
18
  dialogRoot: `${PREFIX}-dialog-root`,
15
19
  infiniteScroll: `${PREFIX}-infinite-scroll`,
16
20
  endMessage: `${PREFIX}-end-message`
@@ -22,7 +26,7 @@ const DialogRoot = styled(BaseDialog, {
22
26
  })(() => ({}));
23
27
  export default function TabContentComponent(props) {
24
28
  // PROPS
25
- const { state, dispatch, userProps, dialogProps, actionProps } = props;
29
+ const { state, dispatch, userProps, dialogProps, actionProps, setRefresh } = props;
26
30
  // STATE
27
31
  const [openDialog, setOpenDialog] = useState(false);
28
32
  // HANDLERS
@@ -38,11 +42,20 @@ export default function TabContentComponent(props) {
38
42
  })
39
43
  .then((res) => {
40
44
  dispatch({ type: actionWidgetTypes.LOAD_NEXT_SUCCESS, payload: res.data });
45
+ })
46
+ .catch((error) => {
47
+ Logger.error(SCOPE_SC_UI, error);
41
48
  });
42
49
  }, [dispatch, state.next, state.isLoadingNext, state.initialized]);
43
50
  const handleToggleDialogOpen = useCallback(() => {
44
51
  setOpenDialog((prev) => !prev);
45
52
  }, []);
46
53
  const getActionsComponent = useCallback((userId) => actionProps ? _jsx(InviteUserEventButton, { event: actionProps.scEvent, userId: userId, setInvitedNumber: actionProps.setInvitedNumber }) : undefined, [actionProps]);
47
- return (_jsxs(_Fragment, { children: [_jsx(List, { children: state.results.map((user) => (_jsx(ListItem, { children: _jsx(User, Object.assign({ elevation: 0, user: user }, userProps, { actions: getActionsComponent(user.id) })) }, user.id))) }), state.count > state.visibleItems && (_jsx(Button, Object.assign({ onClick: handleToggleDialogOpen, className: classes.actionButton }, { children: _jsx(Typography, Object.assign({ variant: "caption" }, { children: _jsx(FormattedMessage, { id: "ui.eventMembersWidget.showAll", defaultMessage: "ui.eventMembersWidget.showAll" }) })) }))), openDialog && (_jsx(DialogRoot, Object.assign({ className: classes.dialogRoot, title: _jsx(FormattedMessage, { defaultMessage: "ui.eventMembersWidget.title", id: "ui.eventMembersWidget.title" }), onClose: handleToggleDialogOpen, open: openDialog }, dialogProps, { children: _jsx(InfiniteScroll, Object.assign({ dataLength: state.results.length, next: handleNext, hasMoreNext: Boolean(state.next), loaderNext: _jsx(UserSkeleton, Object.assign({ elevation: 0 }, userProps)), className: classes.infiniteScroll, endMessage: _jsx(Typography, Object.assign({ className: classes.endMessage }, { children: _jsx(FormattedMessage, { id: "ui.eventMembersWidget.noMoreResults", defaultMessage: "ui.eventMembersWidget.noMoreResults" }) })) }, { children: _jsx(List, { children: state.results.map((user) => (_jsx(ListItem, { children: _jsx(User, Object.assign({ elevation: 0, user: user }, userProps)) }, user.id))) }) })) })))] }));
54
+ const handleInvitations = useCallback((invited) => {
55
+ if (invited) {
56
+ dispatch({ type: actionWidgetTypes.RESET });
57
+ setRefresh(true);
58
+ }
59
+ }, [dispatch, setRefresh]);
60
+ return (_jsxs(_Fragment, { children: [_jsx(List, { children: state.results.map((user) => (_jsx(ListItem, { children: _jsx(User, Object.assign({ elevation: 0, user: user }, userProps, { actions: getActionsComponent(user.id) })) }, user.id))) }), state.count === 0 && actionProps && (_jsx(EventInviteButton, { event: actionProps.scEvent, className: classes.eventButton, handleInvitations: handleInvitations })), state.count > state.visibleItems && (_jsx(Button, Object.assign({ onClick: handleToggleDialogOpen, className: classes.actionButton }, { children: _jsx(Typography, Object.assign({ variant: "caption" }, { children: _jsx(FormattedMessage, { id: "ui.eventMembersWidget.showAll", defaultMessage: "ui.eventMembersWidget.showAll" }) })) }))), openDialog && (_jsx(DialogRoot, Object.assign({ className: classes.dialogRoot, title: _jsx(FormattedMessage, { defaultMessage: "ui.eventMembersWidget.title", id: "ui.eventMembersWidget.title" }), onClose: handleToggleDialogOpen, open: openDialog }, dialogProps, { children: _jsx(InfiniteScroll, Object.assign({ dataLength: state.results.length, next: handleNext, hasMoreNext: Boolean(state.next), loaderNext: _jsx(UserSkeleton, Object.assign({ elevation: 0 }, userProps)), className: classes.infiniteScroll, endMessage: _jsx(Typography, Object.assign({ className: classes.endMessage }, { children: _jsx(FormattedMessage, { id: "ui.eventMembersWidget.noMoreResults", defaultMessage: "ui.eventMembersWidget.noMoreResults" }) })) }, { children: _jsx(List, { children: state.results.map((user) => (_jsx(ListItem, { children: _jsx(User, Object.assign({ elevation: 0, user: user }, userProps)) }, user.id))) }) })) })))] }));
48
61
  }
@@ -16,6 +16,7 @@ export declare type FeedSidebarProps = StickyBoxProps;
16
16
  export declare type FeedRef = {
17
17
  addFeedData: (obj: any, syncPagination?: boolean) => void;
18
18
  refresh: () => void;
19
+ getCurrentFeedObjectIds: () => number[];
19
20
  };
20
21
  export interface FeedProps {
21
22
  /**
@@ -389,6 +389,9 @@ const Feed = (inProps, ref) => {
389
389
  },
390
390
  refresh: () => {
391
391
  refresh();
392
+ },
393
+ getCurrentFeedObjectIds: () => {
394
+ return feedDataObject.results.map((o) => o[o.type].id);
392
395
  }
393
396
  }));
394
397
  const InnerItem = useMemo(() => ({ state: savedState, onHeightChange, onStateChange, children: item }) => {
@@ -0,0 +1,19 @@
1
+ import { CategoryProps } from './Steps/Category';
2
+ import { AppearanceProps } from './Steps/Appearance';
3
+ import { ProfileProps } from './Steps/Profile';
4
+ import { InviteProps } from './Steps/Invite';
5
+ import { AppProps } from './Steps/App';
6
+ import { ContentProps } from './Steps/Content';
7
+ import { StartStepParams } from '@selfcommunity/api-services';
8
+ export interface OnBoardingWidgetProps {
9
+ className?: string;
10
+ CategoryProps?: CategoryProps;
11
+ ContentProps?: ContentProps;
12
+ AppearanceProps?: AppearanceProps;
13
+ ProfileProps?: ProfileProps;
14
+ InviteProps?: InviteProps;
15
+ AppProps: AppProps;
16
+ generateContentsParams?: StartStepParams;
17
+ }
18
+ declare const OnBoardingWidget: (inProps: OnBoardingWidgetProps) => JSX.Element;
19
+ export default OnBoardingWidget;
@@ -0,0 +1,207 @@
1
+ import { __awaiter, __rest } from "tslib";
2
+ import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
3
+ import { useEffect, useMemo, useState } from 'react';
4
+ import { Accordion, AccordionDetails, AccordionSummary, Box, Button, CardContent, CardMedia, Checkbox, Chip, Fade, Icon, IconButton, List, ListItem, ListItemButton, ListItemIcon, ListItemText, Typography, useMediaQuery, useTheme } from '@mui/material';
5
+ import { FormattedMessage } from 'react-intl';
6
+ import { styled } from '@mui/material/styles';
7
+ import classNames from 'classnames';
8
+ import { useThemeProps } from '@mui/system';
9
+ import Category from './Steps/Category';
10
+ import { PREFIX } from './constants';
11
+ import { usePreviousValue, useSCContext, useSCUser } from '@selfcommunity/react-core';
12
+ import Appearance from './Steps/Appearance';
13
+ import Profile from './Steps/Profile';
14
+ import Invite from './Steps/Invite';
15
+ import App from './Steps/App';
16
+ import HiddenPlaceholder from '../../shared/HiddenPlaceholder';
17
+ import Widget from '../Widget';
18
+ import Content from './Steps/Content';
19
+ import Header from '../../assets/onBoarding/Header';
20
+ import { SCOPE_SC_UI } from '../../constants/Errors';
21
+ import { OnBoardingService } from '@selfcommunity/api-services';
22
+ import { Logger } from '@selfcommunity/utils';
23
+ import { SCOnBoardingStepStatusType, SCOnBoardingStepType } from '@selfcommunity/types';
24
+ import OnBoardingWidgetSkeleton from './Skeleton';
25
+ import { closeSnackbar, useSnackbar } from 'notistack';
26
+ import { CONSOLE_PROD, CONSOLE_STAGE } from '../PlatformWidget/constants';
27
+ const classes = {
28
+ root: `${PREFIX}-root`,
29
+ accordionRoot: `${PREFIX}-accordion-root`,
30
+ logo: `${PREFIX}-logo`,
31
+ intro: `${PREFIX}-intro`,
32
+ steps: `${PREFIX}-steps`,
33
+ stepsMobile: `${PREFIX}-steps-mobile`,
34
+ stepContent: `${PREFIX}-step-content`
35
+ };
36
+ const Root = styled(Widget, {
37
+ name: PREFIX,
38
+ slot: 'Root',
39
+ overridesResolver: (props, styles) => styles.root
40
+ })(() => ({}));
41
+ const AccordionRoot = styled(Accordion, {
42
+ name: PREFIX,
43
+ slot: 'AccordionRoot',
44
+ overridesResolver: (props, styles) => styles.accordionRoot
45
+ })(() => ({}));
46
+ const OnBoardingWidget = (inProps) => {
47
+ // PROPS
48
+ const props = useThemeProps({
49
+ props: inProps,
50
+ name: PREFIX
51
+ });
52
+ const { className, AppearanceProps = {}, ProfileProps = {}, CategoryProps = {}, InviteProps = {}, AppProps = {}, ContentProps = {}, generateContentsParams = {} } = props, rest = __rest(props, ["className", "AppearanceProps", "ProfileProps", "CategoryProps", "InviteProps", "AppProps", "ContentProps", "generateContentsParams"]);
53
+ // STATE
54
+ const [isLoading, setIsLoading] = useState(true);
55
+ const [steps, setSteps] = useState([]);
56
+ const currentStep = useMemo(() => {
57
+ const step = steps === null || steps === void 0 ? void 0 : steps.find((step) => step.status === 'in_progress' || step.status === 'not_started');
58
+ return step || (steps === null || steps === void 0 ? void 0 : steps[0]);
59
+ }, [steps]);
60
+ const allStepsDone = useMemo(() => {
61
+ return steps === null || steps === void 0 ? void 0 : steps.every((step) => step.status === SCOnBoardingStepStatusType.COMPLETED);
62
+ }, [steps]);
63
+ const [expanded, setExpanded] = useState(!allStepsDone);
64
+ const [_step, setStep] = useState(currentStep);
65
+ const prevStep = usePreviousValue(_step);
66
+ // CONTEXT
67
+ const scUserContext = useSCUser();
68
+ const scContext = useSCContext();
69
+ const { enqueueSnackbar } = useSnackbar();
70
+ const isStage = scContext.settings.portal.includes('stage');
71
+ const [isGenerating, setIsGenerating] = useState(false);
72
+ // HOOKS
73
+ const theme = useTheme();
74
+ const isMobile = useMediaQuery(theme.breakpoints.down('md'));
75
+ // HANDLERS
76
+ const completeStep = (s) => __awaiter(void 0, void 0, void 0, function* () {
77
+ if (s.status !== SCOnBoardingStepStatusType.COMPLETED) {
78
+ yield OnBoardingService.completeAStep(s.id)
79
+ .then(() => {
80
+ setSteps((prev) => prev.map((item) => {
81
+ if (item.id === s.id) {
82
+ return Object.assign(Object.assign({}, item), { status: SCOnBoardingStepStatusType.COMPLETED, completion_percentage: 100 });
83
+ }
84
+ return item;
85
+ }));
86
+ })
87
+ .catch((error) => {
88
+ Logger.error(SCOPE_SC_UI, error);
89
+ });
90
+ }
91
+ });
92
+ const showSuccessAlert = (step) => {
93
+ setIsGenerating(false);
94
+ enqueueSnackbar(_jsx(FormattedMessage, { id: `ui.onBoardingWidget.step.${step.step}.success`, defaultMessage: `ui.onBoardingWidget.step.${step.step}.success` }), {
95
+ action: (snackbarId) => (_jsxs(_Fragment, { children: [step.step === SCOnBoardingStepType.CATEGORIES && (_jsx(Button, Object.assign({ sx: { textTransform: 'uppercase', color: 'white' }, size: "small", variant: "text", href: isStage ? CONSOLE_STAGE : CONSOLE_PROD, target: "_blank" }, { children: _jsx(FormattedMessage, { id: "ui.onBoardingWidget.step.categories.success.link", defaultMessage: "ui.onBoardingWidget.step.categories.success.link" }) }))), _jsx(IconButton, Object.assign({ sx: { color: 'white' }, onClick: () => closeSnackbar(snackbarId) }, { children: _jsx(Icon, { children: "close" }) }))] })),
96
+ variant: 'success',
97
+ autoHideDuration: 7000
98
+ });
99
+ };
100
+ const getSteps = () => __awaiter(void 0, void 0, void 0, function* () {
101
+ yield OnBoardingService.getAllSteps()
102
+ .then((res) => {
103
+ setIsGenerating(res.results.some((step) => step.status === 'in_progress'));
104
+ setSteps(res.results);
105
+ setIsLoading(false);
106
+ })
107
+ .catch((error) => {
108
+ Logger.error(SCOPE_SC_UI, error);
109
+ setIsLoading(false);
110
+ });
111
+ });
112
+ const handleChange = (newStep) => {
113
+ setStep(newStep);
114
+ };
115
+ const handleExpand = () => {
116
+ setExpanded(!expanded);
117
+ };
118
+ const generateContent = (stepId) => __awaiter(void 0, void 0, void 0, function* () {
119
+ yield OnBoardingService.startAStep(stepId, generateContentsParams)
120
+ .then(() => {
121
+ setIsGenerating(true);
122
+ })
123
+ .catch((error) => {
124
+ Logger.error(SCOPE_SC_UI, error);
125
+ enqueueSnackbar(_jsx(FormattedMessage, { id: "ui.common.error.action", defaultMessage: "ui.common.error.action" }), {
126
+ variant: 'error',
127
+ autoHideDuration: 3000
128
+ });
129
+ });
130
+ });
131
+ // EFFECTS
132
+ useEffect(() => {
133
+ // eslint-disable-next-line @typescript-eslint/ban-ts-ignore
134
+ // @ts-ignore
135
+ if ((prevStep === null || prevStep === void 0 ? void 0 : prevStep.status) === SCOnBoardingStepStatusType.IN_PROGRESS && (_step === null || _step === void 0 ? void 0 : _step.status) === SCOnBoardingStepStatusType.NOT_STARTED) {
136
+ showSuccessAlert(prevStep);
137
+ }
138
+ }, [_step, prevStep]);
139
+ useEffect(() => {
140
+ setStep(currentStep);
141
+ }, [currentStep, steps]);
142
+ useEffect(() => {
143
+ setExpanded(!allStepsDone);
144
+ }, [allStepsDone]);
145
+ useEffect(() => {
146
+ getSteps();
147
+ // eslint-disable-next-line @typescript-eslint/no-misused-promises
148
+ const intervalId = setInterval(getSteps, isGenerating ? 3000 : 3 * 60 * 1000);
149
+ return () => clearInterval(intervalId);
150
+ }, [scUserContext === null || scUserContext === void 0 ? void 0 : scUserContext.user, isGenerating]);
151
+ /**
152
+ * Render _step content section
153
+ */
154
+ const getStepContent = () => {
155
+ const stepObj = _step;
156
+ let content;
157
+ switch (stepObj === null || stepObj === void 0 ? void 0 : stepObj.step) {
158
+ case SCOnBoardingStepType.CONTENTS:
159
+ content = _jsx(Content, Object.assign({ step: stepObj, handleContentCreation: () => generateContent(stepObj.id) }, ContentProps));
160
+ break;
161
+ case SCOnBoardingStepType.CATEGORIES:
162
+ content = _jsx(Category, Object.assign({ step: stepObj, handleCategoriesCreation: () => generateContent(stepObj.id) }, CategoryProps));
163
+ break;
164
+ case SCOnBoardingStepType.APPEARANCE:
165
+ content = _jsx(Appearance, Object.assign({ onCompleteAction: () => completeStep(stepObj) }, AppearanceProps));
166
+ break;
167
+ case SCOnBoardingStepType.PROFILE:
168
+ content = _jsx(Profile, Object.assign({ onCompleteAction: () => completeStep(stepObj) }, ProfileProps));
169
+ break;
170
+ case SCOnBoardingStepType.INVITE:
171
+ content = _jsx(Invite, Object.assign({ onCompleteAction: () => completeStep(stepObj) }, InviteProps));
172
+ break;
173
+ case SCOnBoardingStepType.APP:
174
+ content = _jsx(App, Object.assign({ step: stepObj, onCompleteAction: () => completeStep(stepObj) }, AppProps));
175
+ break;
176
+ default:
177
+ break;
178
+ }
179
+ return content;
180
+ };
181
+ if (!(scUserContext === null || scUserContext === void 0 ? void 0 : scUserContext.user)) {
182
+ return _jsx(HiddenPlaceholder, {});
183
+ }
184
+ return (_jsxs(AccordionRoot, Object.assign({ defaultExpanded: true, onChange: handleExpand, className: classes.accordionRoot, expanded: expanded }, { children: [_jsx(AccordionSummary, Object.assign({ expandIcon: _jsx(Icon, Object.assign({ fontSize: "medium" }, { children: "expand_more" })), "aria-controls": "accordion", id: "onBoarding-accordion" }, { children: _jsx(_Fragment, { children: expanded ? (_jsxs(_Fragment, { children: [!isMobile ? (_jsx(CardMedia, Object.assign({ className: classes.logo, component: "div" }, { children: _jsx(Header, {}) }))) : (_jsx(Typography, Object.assign({ variant: "h4", textAlign: "center" }, { children: _jsx(FormattedMessage, { id: "ui.onBoardingWidget.accordion.expanded.title.mobile", defaultMessage: "ui.onBoardingWidget.accordion.expanded.title.mobile", values: {
185
+ // eslint-disable-next-line @typescript-eslint/ban-ts-ignore
186
+ // @ts-ignore
187
+ b: (chunks) => _jsx("strong", { children: chunks }),
188
+ // eslint-disable-next-line @typescript-eslint/ban-ts-ignore
189
+ // @ts-ignore
190
+ icon: (...chunks) => (_jsx(Icon, Object.assign({ color: "secondary", fontSize: "medium" }, { children: chunks })))
191
+ } }) }))), _jsxs(Box, Object.assign({ className: classes.intro }, { children: [!isMobile && (_jsx(Typography, Object.assign({ variant: "h4" }, { children: _jsx(FormattedMessage, { id: "ui.onBoardingWidget.accordion.expanded.title", defaultMessage: "ui.onBoardingWidget.accordion.expanded.title" }) }))), _jsx(Typography, Object.assign({ variant: !isMobile ? 'h5' : 'subtitle1' }, { children: _jsx(FormattedMessage, { id: "ui.onBoardingWidget.accordion.expanded.subtitle", defaultMessage: "ui.onBoardingWidget.accordion.expanded.subtitle" }) })), _jsx(Typography, { children: _jsx(FormattedMessage, { id: "ui.onBoardingWidget.accordion.expanded.summary", defaultMessage: "ui.onBoardingWidget.accordion.expanded.summary", values: {
192
+ // eslint-disable-next-line @typescript-eslint/ban-ts-ignore
193
+ // @ts-ignore
194
+ b: (chunks) => _jsx("strong", { children: chunks }),
195
+ // eslint-disable-next-line @typescript-eslint/ban-ts-ignore
196
+ // @ts-ignore
197
+ icon: (...chunks) => _jsx(Icon, { children: chunks })
198
+ } }) })] }))] })) : (_jsx(Typography, Object.assign({ variant: "body1" }, { children: _jsx(FormattedMessage, { id: "ui.onBoardingWidget.accordion.collapsed", defaultMessage: "ui.onBoardingWidget.accordion.collapsed", values: {
199
+ // eslint-disable-next-line @typescript-eslint/ban-ts-ignore
200
+ // @ts-ignore
201
+ b: (chunks) => _jsx("strong", { children: chunks }),
202
+ // eslint-disable-next-line @typescript-eslint/ban-ts-ignore
203
+ // @ts-ignore
204
+ icon: (...chunks) => (_jsx(Icon, Object.assign({ color: "secondary", fontSize: "medium" }, { children: chunks })))
205
+ } }) }))) }) })), _jsx(AccordionDetails, { children: _jsx(Root, Object.assign({ className: classNames(classes.root, className) }, rest, { elevation: 0 }, { children: isLoading ? (_jsx(OnBoardingWidgetSkeleton, {})) : (_jsxs(CardContent, { children: [_jsx(List, Object.assign({ className: isMobile ? classes.stepsMobile : classes.steps }, { children: steps === null || steps === void 0 ? void 0 : steps.map((step) => (_jsx(ListItem, { children: isMobile ? (_jsx(Chip, { size: "small", disabled: isGenerating && ((_step === null || _step === void 0 ? void 0 : _step.step) === SCOnBoardingStepType.CATEGORIES || (_step === null || _step === void 0 ? void 0 : _step.step) === SCOnBoardingStepType.CONTENTS), label: _jsxs(_Fragment, { children: [_jsx(FormattedMessage, { id: `ui.onBoardingWidget.${step.step}`, defaultMessage: `ui.onBoardingWidget.${step.step}` }), ' ', step.status === SCOnBoardingStepStatusType.COMPLETED && (_jsx(Icon, Object.assign({ color: step.status === SCOnBoardingStepStatusType.COMPLETED && step.step !== _step.step ? 'success' : 'inherit' }, { children: "check" })))] }), onClick: () => handleChange(step), variant: step.step === _step.step ? 'filled' : 'outlined', color: step.status === SCOnBoardingStepStatusType.COMPLETED ? 'success' : 'default' })) : (_jsxs(ListItemButton, Object.assign({ onClick: () => handleChange(step), selected: (step === null || step === void 0 ? void 0 : step.step) === (_step === null || _step === void 0 ? void 0 : _step.step), disabled: isGenerating && ((_step === null || _step === void 0 ? void 0 : _step.step) === SCOnBoardingStepType.CATEGORIES || (_step === null || _step === void 0 ? void 0 : _step.step) === SCOnBoardingStepType.CONTENTS) }, { children: [_jsx(ListItemIcon, { children: _jsx(Checkbox, { edge: "start", checked: step.status === SCOnBoardingStepStatusType.COMPLETED, tabIndex: -1, disableRipple: true, inputProps: { 'aria-labelledby': step.step }, size: 'small' }) }), _jsx(ListItemText, { primary: _jsx(FormattedMessage, { id: `ui.onBoardingWidget.${step.step}`, defaultMessage: `ui.onBoardingWidget.${step.step}` }) })] }))) }, step.id))) })), _jsx(Box, Object.assign({ className: classes.stepContent }, { children: _jsx(Fade, Object.assign({ in: true, timeout: 2400 }, { children: _jsx(Box, { children: getStepContent() }) })) }))] })) })) })] })));
206
+ };
207
+ export default OnBoardingWidget;
@@ -0,0 +1 @@
1
+ export default function OnBoardingWidgetSkeleton(): JSX.Element;
@@ -0,0 +1,20 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { Box, Chip, List, ListItem, ListItemButton, ListItemIcon, ListItemText, useMediaQuery, useTheme } from '@mui/material';
3
+ import { styled } from '@mui/material/styles';
4
+ import Skeleton from '@mui/material/Skeleton';
5
+ import { PREFIX } from './constants';
6
+ const classes = {
7
+ root: `${PREFIX}-skeleton-root`,
8
+ menu: `${PREFIX}-skeleton-menu`,
9
+ content: `${PREFIX}-skeleton-content`
10
+ };
11
+ const Root = styled(Box, {
12
+ name: PREFIX,
13
+ slot: 'SkeletonRoot'
14
+ })(() => ({}));
15
+ export default function OnBoardingWidgetSkeleton() {
16
+ const theme = useTheme();
17
+ const isMobile = useMediaQuery(theme.breakpoints.down('md'));
18
+ const steps = Array(isMobile ? 3 : 5).fill(null);
19
+ return (_jsxs(Root, Object.assign({ className: classes.root }, { children: [_jsx(Box, Object.assign({ className: classes.menu }, { children: isMobile ? (_jsx(Box, Object.assign({ sx: { display: 'flex', justifyContent: 'space-evenly' } }, { children: steps.map((_, index) => (_jsx(Chip, { label: _jsx(Skeleton, { variant: "text", width: 80 }), variant: "outlined" }, index))) }))) : (_jsx(List, { children: steps.map((_, index) => (_jsx(ListItem, { children: _jsxs(ListItemButton, { children: [_jsx(ListItemIcon, { children: _jsx(Skeleton, { variant: "rectangular", width: 20, height: 20 }) }), _jsx(ListItemText, { primary: _jsx(Skeleton, { variant: "text", width: 100 }) })] }) }, index))) })) })), _jsxs(Box, Object.assign({ className: classes.content }, { children: [_jsx(Skeleton, { variant: "text", width: '20%', height: 40 }), _jsx(Skeleton, { variant: "text", width: '80%', height: 20 }), _jsx(Skeleton, { variant: "text", width: '70%', height: 20 }), _jsx(Skeleton, { variant: "text", width: '60%', height: 20 }), _jsx(Skeleton, { variant: "rectangular", width: 100, height: 36, style: { borderRadius: '20px', alignSelf: 'center', marginTop: 24 } })] }))] })));
20
+ }
@@ -0,0 +1,18 @@
1
+ import { SCStepType } from '@selfcommunity/types';
2
+ export interface AppProps {
3
+ /**
4
+ * The content step
5
+ */
6
+ step: SCStepType;
7
+ /**
8
+ * Overrides or extends the styles applied to the component.
9
+ * @default null
10
+ */
11
+ className?: string;
12
+ /**
13
+ * Callback triggered on complete action click
14
+ * @default null
15
+ */
16
+ onCompleteAction: () => void;
17
+ }
18
+ export default function App(inProps: AppProps): JSX.Element;
@@ -0,0 +1,70 @@
1
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
+ import { useState } from 'react';
3
+ import { styled } from '@mui/material/styles';
4
+ import Box from '@mui/material/Box';
5
+ import { useThemeProps } from '@mui/system';
6
+ import classNames from 'classnames';
7
+ import { PREFIX } from '../../constants';
8
+ import { Button, CardMedia, Icon, Tab, Tabs, Typography } from '@mui/material';
9
+ import { FormattedMessage } from 'react-intl';
10
+ import Ios from '../../../../assets/onBoarding/Ios';
11
+ import Android from '../../../../assets/onBoarding/Android';
12
+ import { SCOnBoardingStepStatusType } from '@selfcommunity/types';
13
+ const classes = {
14
+ root: `${PREFIX}-app-root`,
15
+ title: `${PREFIX}-app-title`,
16
+ tabs: `${PREFIX}-app-tabs`,
17
+ tabContent: `${PREFIX}-app-tab-content`,
18
+ summary: `${PREFIX}-app-summary`,
19
+ image: `${PREFIX}-app-image`,
20
+ action: `${PREFIX}-app-action`,
21
+ button: `${PREFIX}-app-button`
22
+ };
23
+ const Root = styled(Box, {
24
+ name: PREFIX,
25
+ slot: 'AppRoot'
26
+ })(() => ({}));
27
+ export default function App(inProps) {
28
+ // PROPS
29
+ const props = useThemeProps({
30
+ props: inProps,
31
+ name: PREFIX
32
+ });
33
+ //PROPS
34
+ const { className, step, onCompleteAction } = props;
35
+ // STATE
36
+ const [tab, setTab] = useState(0);
37
+ // HANDLERS
38
+ const handleChange = (event, newValue) => {
39
+ setTab(newValue);
40
+ };
41
+ return (_jsxs(Root, Object.assign({ className: classNames(classes.root, className) }, { children: [_jsx(Typography, Object.assign({ variant: "h4", className: classes.title }, { children: _jsx(FormattedMessage, { id: "ui.onBoardingWidget.step.app.title", defaultMessage: "ui.onBoardingWidget.step.app.title" }) })), _jsx(Typography, Object.assign({ variant: "subtitle1", className: classes.summary }, { children: _jsx(FormattedMessage, { id: "ui.onBoardingWidget.step.app.summary", defaultMessage: "ui.onBoardingWidget.step.app.summary" }) })), _jsxs(Tabs, Object.assign({ className: classes.tabs, value: tab, onChange: handleChange, centered: true, variant: "fullWidth", indicatorColor: "primary" }, { children: [_jsx(Tab, { label: _jsx(FormattedMessage, { id: "ui.onBoardingWidget.step.app.tab.ios", defaultMessage: "ui.onBoardingWidget.step.app.tab.ios" }) }), _jsx(Tab, { label: _jsx(FormattedMessage, { id: "ui.onBoardingWidget.step.app.tab.android", defaultMessage: "ui.onBoardingWidget.step.app.tab.android" }) })] })), _jsxs(Box, Object.assign({ className: classes.tabContent }, { children: [tab === 0 && (_jsxs(_Fragment, { children: [_jsx(Typography, Object.assign({ variant: "subtitle1", className: classes.summary }, { children: _jsx(FormattedMessage, { id: "ui.onBoardingWidget.step.app.ios", defaultMessage: "ui.onBoardingWidget.step.app.ios" }) })), _jsx(Typography, Object.assign({ variant: "subtitle1", className: classes.summary }, { children: _jsx(FormattedMessage, { id: "ui.onBoardingWidget.step.app.ios.a", defaultMessage: "ui.onBoardingWidget.step.app.ios.a", values: {
42
+ // eslint-disable-next-line @typescript-eslint/ban-ts-ignore
43
+ // @ts-ignore
44
+ icon: (...chunks) => _jsx(Icon, Object.assign({ fontSize: "medium" }, { children: chunks })),
45
+ // eslint-disable-next-line @typescript-eslint/ban-ts-ignore
46
+ // @ts-ignore
47
+ b: (...chunks) => _jsx("strong", { children: chunks })
48
+ } }) })), _jsx(Typography, Object.assign({ variant: "subtitle1", className: classes.summary }, { children: _jsx(FormattedMessage, { id: "ui.onBoardingWidget.step.app.ios.b", defaultMessage: "ui.onBoardingWidget.step.app.ios.b", values: {
49
+ // eslint-disable-next-line @typescript-eslint/ban-ts-ignore
50
+ // @ts-ignore
51
+ icon: (...chunks) => _jsx(Icon, Object.assign({ fontSize: "medium" }, { children: chunks })),
52
+ // eslint-disable-next-line @typescript-eslint/ban-ts-ignore
53
+ // @ts-ignore
54
+ b: (...chunks) => _jsx("strong", { children: chunks })
55
+ } }) })), _jsx(CardMedia, Object.assign({ className: classes.image, component: "div" }, { children: _jsx(Ios, {}) }))] })), tab === 1 && (_jsxs(_Fragment, { children: [_jsx(Typography, Object.assign({ variant: "subtitle1", className: classes.summary }, { children: _jsx(FormattedMessage, { id: "ui.onBoardingWidget.step.app.android", defaultMessage: "ui.onBoardingWidget.step.app.android" }) })), _jsx(Typography, Object.assign({ variant: "subtitle1", className: classes.summary }, { children: _jsx(FormattedMessage, { id: "ui.onBoardingWidget.step.app.android.a", defaultMessage: "ui.onBoardingWidget.step.app.android.a", values: {
56
+ // eslint-disable-next-line @typescript-eslint/ban-ts-ignore
57
+ // @ts-ignore
58
+ icon: (...chunks) => _jsx(Icon, Object.assign({ fontSize: "medium" }, { children: chunks })),
59
+ // eslint-disable-next-line @typescript-eslint/ban-ts-ignore
60
+ // @ts-ignore
61
+ b: (...chunks) => _jsx("strong", { children: chunks })
62
+ } }) })), _jsx(Typography, Object.assign({ variant: "subtitle1", className: classes.summary }, { children: _jsx(FormattedMessage, { id: "ui.onBoardingWidget.step.app.android.b", defaultMessage: "ui.onBoardingWidget.step.app.android.b", values: {
63
+ // eslint-disable-next-line @typescript-eslint/ban-ts-ignore
64
+ // @ts-ignore
65
+ icon: (...chunks) => _jsx(Icon, Object.assign({ fontSize: "medium" }, { children: chunks })),
66
+ // eslint-disable-next-line @typescript-eslint/ban-ts-ignore
67
+ // @ts-ignore
68
+ b: (...chunks) => _jsx("strong", { children: chunks })
69
+ } }) })), _jsx(CardMedia, Object.assign({ className: classes.image, component: "div" }, { children: _jsx(Android, {}) }))] })), _jsx(Button, Object.assign({ className: classes.button, size: "small", variant: "outlined", color: "secondary", onClick: onCompleteAction, disabled: (step === null || step === void 0 ? void 0 : step.status) === SCOnBoardingStepStatusType.COMPLETED || (step === null || step === void 0 ? void 0 : step.status) === SCOnBoardingStepStatusType.IN_PROGRESS }, { children: "Ok!" }))] }))] })));
70
+ }
@@ -0,0 +1,3 @@
1
+ import App, { AppProps } from './App';
2
+ export default App;
3
+ export { AppProps };
@@ -0,0 +1,2 @@
1
+ import App from './App';
2
+ export default App;
@@ -0,0 +1,13 @@
1
+ export interface AppearanceProps {
2
+ /**
3
+ * Overrides or extends the styles applied to the component.
4
+ * @default null
5
+ */
6
+ className?: string;
7
+ /**
8
+ * Callback triggered on complete action click
9
+ * @default null
10
+ */
11
+ onCompleteAction: () => void;
12
+ }
13
+ export default function Appearance(inProps: AppearanceProps): JSX.Element;