@selfcommunity/react-ui 0.10.2-courses.122 → 0.10.2-courses.124
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/lib/cjs/components/EditCourse/Customize.d.ts +1 -1
- package/lib/cjs/components/EditCourse/Customize.js +0 -4
- package/lib/cjs/components/EditCourse/EditCourse.js +5 -1
- package/lib/cjs/components/EditCourse/Lessons/Skeleton.js +9 -8
- package/lib/cjs/components/EditCourse/Lessons.d.ts +1 -1
- package/lib/cjs/components/EditCourse/Lessons.js +4 -5
- package/lib/cjs/components/EditCourse/Options/Skeleton.js +2 -1
- package/lib/cjs/components/EditCourse/Options.d.ts +1 -1
- package/lib/cjs/components/EditCourse/Options.js +1 -5
- package/lib/cjs/components/EditCourse/Requests.d.ts +1 -1
- package/lib/cjs/components/EditCourse/Requests.js +3 -7
- package/lib/cjs/components/EditCourse/Skeleton.d.ts +8 -0
- package/lib/cjs/components/EditCourse/Skeleton.js +28 -0
- package/lib/cjs/components/EditCourse/Status.d.ts +1 -1
- package/lib/cjs/components/EditCourse/Status.js +2 -2
- package/lib/cjs/components/EditCourse/Users/Skeleton.js +3 -7
- package/lib/cjs/components/EditCourse/Users.d.ts +1 -1
- package/lib/cjs/components/EditCourse/Users.js +4 -8
- package/lib/cjs/components/EditCourse/index.d.ts +2 -1
- package/lib/cjs/components/EditCourse/index.js +3 -1
- package/lib/cjs/index.d.ts +2 -2
- package/lib/cjs/index.js +8 -7
- package/lib/cjs/shared/AddUsersButton/AddUsersButton.d.ts +1 -2
- package/lib/cjs/shared/AddUsersButton/AddUsersButton.js +2 -2
- package/lib/esm/components/EditCourse/Customize.d.ts +1 -1
- package/lib/esm/components/EditCourse/Customize.js +0 -4
- package/lib/esm/components/EditCourse/EditCourse.js +6 -2
- package/lib/esm/components/EditCourse/Lessons/Skeleton.js +10 -9
- package/lib/esm/components/EditCourse/Lessons.d.ts +1 -1
- package/lib/esm/components/EditCourse/Lessons.js +5 -6
- package/lib/esm/components/EditCourse/Options/Skeleton.js +3 -2
- package/lib/esm/components/EditCourse/Options.d.ts +1 -1
- package/lib/esm/components/EditCourse/Options.js +1 -5
- package/lib/esm/components/EditCourse/Requests.d.ts +1 -1
- package/lib/esm/components/EditCourse/Requests.js +3 -7
- package/lib/esm/components/EditCourse/Skeleton.d.ts +8 -0
- package/lib/esm/components/EditCourse/Skeleton.js +25 -0
- package/lib/esm/components/EditCourse/Status.d.ts +1 -1
- package/lib/esm/components/EditCourse/Status.js +3 -3
- package/lib/esm/components/EditCourse/Users/Skeleton.js +4 -8
- package/lib/esm/components/EditCourse/Users.d.ts +1 -1
- package/lib/esm/components/EditCourse/Users.js +4 -8
- package/lib/esm/components/EditCourse/index.d.ts +2 -1
- package/lib/esm/components/EditCourse/index.js +2 -1
- package/lib/esm/index.d.ts +2 -2
- package/lib/esm/index.js +2 -2
- package/lib/esm/shared/AddUsersButton/AddUsersButton.d.ts +1 -2
- package/lib/esm/shared/AddUsersButton/AddUsersButton.js +2 -2
- package/lib/umd/react-ui.js +1 -1
- package/package.json +8 -8
|
@@ -3,7 +3,6 @@ import CourseForm from '../CourseForm';
|
|
|
3
3
|
import { memo, useCallback } from 'react';
|
|
4
4
|
import { useSnackbar } from 'notistack';
|
|
5
5
|
import { FormattedMessage } from 'react-intl';
|
|
6
|
-
import Skeleton from '../CourseForm/Skeleton';
|
|
7
6
|
import { SCCourseFormStepType } from '../../constants/Course';
|
|
8
7
|
function Customize(props) {
|
|
9
8
|
// PROPS
|
|
@@ -24,9 +23,6 @@ function Customize(props) {
|
|
|
24
23
|
autoHideDuration: 3000
|
|
25
24
|
});
|
|
26
25
|
}, []);
|
|
27
|
-
if (!course) {
|
|
28
|
-
return _jsx(Skeleton, {});
|
|
29
|
-
}
|
|
30
26
|
return _jsx(CourseForm, { course: course, step: SCCourseFormStepType.CUSTOMIZATION, onSuccess: handleSuccess, onError: handleError });
|
|
31
27
|
}
|
|
32
28
|
export default memo(Customize);
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { __rest } from "tslib";
|
|
2
2
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
-
import { Box, Icon, IconButton,
|
|
3
|
+
import { Box, Icon, IconButton, Stack, styled, Tab, Typography, useMediaQuery, useTheme, useThemeProps } from '@mui/material';
|
|
4
4
|
import { PREFIX } from './constants';
|
|
5
5
|
import { useCallback, useState } from 'react';
|
|
6
6
|
import classNames from 'classnames';
|
|
@@ -14,6 +14,7 @@ import Options from './Options';
|
|
|
14
14
|
import { SCRoutes, useSCFetchCourse, useSCRouting } from '@selfcommunity/react-core';
|
|
15
15
|
import { CourseInfoViewType } from '@selfcommunity/api-services';
|
|
16
16
|
import Requests from './Requests';
|
|
17
|
+
import EditCourseSkeleton from './Skeleton';
|
|
17
18
|
const classes = {
|
|
18
19
|
root: `${PREFIX}-root`,
|
|
19
20
|
header: `${PREFIX}-header`,
|
|
@@ -92,5 +93,8 @@ export default function EditCourse(inProps) {
|
|
|
92
93
|
setTabValue(newTabValue);
|
|
93
94
|
onTabChange(TabContentEnum[newTabValue]);
|
|
94
95
|
}, [setTabValue]);
|
|
95
|
-
|
|
96
|
+
if (!scCourse) {
|
|
97
|
+
return _jsx(EditCourseSkeleton, { tab: tab });
|
|
98
|
+
}
|
|
99
|
+
return (_jsxs(Root, Object.assign({ className: classNames(classes.root, className) }, rest, { children: [_jsxs(Stack, Object.assign({ className: classes.header }, { children: [_jsx(IconButton, Object.assign({ href: scRoutingContext.url(SCRoutes.COURSE_DASHBOARD_ROUTE_NAME, scCourse), size: "small" }, { children: _jsx(Icon, { children: "arrow_back" }) })), _jsx(Typography, Object.assign({ variant: "h5" }, { children: scCourse.name }))] })), _jsxs(TabContext, Object.assign({ value: tabValue }, { children: [_jsx(TabList, Object.assign({ className: classes.tabList, onChange: handleTabChange, textColor: "primary", indicatorColor: "primary", variant: isMobile ? 'scrollable' : 'standard', scrollButtons: isMobile, centered: !isMobile }, { children: TAB_DATA.map((data, i) => (_jsx(Tab, { label: _jsx(Typography, Object.assign({ variant: "h6" }, { children: _jsx(FormattedMessage, { id: data.label, defaultMessage: data.label }) })), value: data.value, className: classes.tab }, i))) })), getPanelData(scCourse, setSCCourse).map((data, i) => (_jsx(TabPanel, Object.assign({ className: classes.tabPanel, value: data.value }, { children: data.children }), i)))] }))] })));
|
|
96
100
|
}
|
|
@@ -1,17 +1,18 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
-
import { Stack,
|
|
2
|
+
import { Stack, Skeleton, TableContainer, Table, TableHead, TableRow, TableCell, TableBody } from '@mui/material';
|
|
3
3
|
import { PREFIX } from '../constants';
|
|
4
|
+
import { Fragment } from 'react';
|
|
4
5
|
const classes = {
|
|
5
|
-
|
|
6
|
+
lessonTitle: `${PREFIX}-lesson-title`,
|
|
7
|
+
lessonInfoWrapper: `${PREFIX}-lesson-info-wrapper`,
|
|
8
|
+
lessonInfo: `${PREFIX}-lesson-info`,
|
|
6
9
|
lessonsSectionsWrapper: `${PREFIX}-lessons-sections-wrapper`,
|
|
7
10
|
lessonsSections: `${PREFIX}-lessons-sections`,
|
|
8
|
-
tableContainer: `${PREFIX}-table-container
|
|
11
|
+
tableContainer: `${PREFIX}-table-container`,
|
|
12
|
+
margin: `${PREFIX}-margin`,
|
|
13
|
+
marginLeft: `${PREFIX}-margin-left`,
|
|
14
|
+
actionsWrapper: `${PREFIX}-actions-wrapper`
|
|
9
15
|
};
|
|
10
|
-
const Root = styled(Stack, {
|
|
11
|
-
name: PREFIX,
|
|
12
|
-
slot: 'LessonsSkeletonRoot',
|
|
13
|
-
overridesResolver: (_props, styles) => styles.lessonsSkeletonRoot
|
|
14
|
-
})(() => ({}));
|
|
15
16
|
export default function LessonsSkeleton() {
|
|
16
|
-
return (_jsxs(
|
|
17
|
+
return (_jsxs(Fragment, { children: [_jsx(Skeleton, { animation: "wave", variant: "text", width: "150px", height: "21px", className: classes.lessonTitle }), _jsxs(Stack, Object.assign({ className: classes.lessonInfoWrapper }, { children: [_jsxs(Stack, Object.assign({ className: classes.lessonInfo }, { children: [_jsx(Skeleton, { animation: "wave", variant: "rectangular", width: "14px", height: "14px" }), _jsx(Skeleton, { animation: "wave", variant: "text", width: "150px", height: "21px" })] })), _jsx(Skeleton, { animation: "wave", variant: "rectangular", width: "105px", height: "32px" })] })), _jsxs(Stack, Object.assign({ className: classes.lessonsSectionsWrapper }, { children: [_jsx(Skeleton, { animation: "wave", width: "159px", height: "21px" }), _jsx(Skeleton, { animation: "wave", width: "100px", height: "32px" })] })), _jsx(TableContainer, Object.assign({ className: classes.tableContainer }, { children: _jsxs(Table, { children: [_jsx(TableHead, { children: _jsxs(TableRow, { children: [_jsx(TableCell, {}), _jsx(TableCell, { children: _jsx(Skeleton, { animation: "wave", variant: "text", width: "102px", height: "32px" }) }), _jsx(TableCell, { children: _jsx(Skeleton, { animation: "wave", variant: "text", width: "87px", height: "32px", className: classes.margin }) }), _jsx(TableCell, { children: _jsx(Skeleton, { animation: "wave", variant: "text", width: "48px", height: "32px", className: classes.marginLeft }) })] }) }), _jsx(TableBody, { children: _jsxs(TableRow, { children: [_jsx(TableCell, {}), _jsx(TableCell, { children: _jsx(Skeleton, { animation: "wave", variant: "text", width: "102px", height: "21px" }) }), _jsx(TableCell, { children: _jsx(Skeleton, { animation: "wave", variant: "rectangular", width: "250px", height: "54px", className: classes.margin }) }), _jsx(TableCell, { children: _jsxs(Stack, Object.assign({ className: classes.actionsWrapper }, { children: [_jsx(Skeleton, { animation: "wave", variant: "rounded", width: "105px", height: "37px" }), _jsx(Skeleton, { animation: "wave", variant: "circular", width: "36px", height: "36px" })] })) })] }) })] }) }))] }));
|
|
17
18
|
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/// <reference types="react" />
|
|
2
2
|
import { SCCourseType } from '@selfcommunity/types';
|
|
3
3
|
interface LessonsProps {
|
|
4
|
-
course: SCCourseType
|
|
4
|
+
course: SCCourseType;
|
|
5
5
|
setSCCourse: (course: SCCourseType) => void;
|
|
6
6
|
}
|
|
7
7
|
declare function Lessons(props: LessonsProps): JSX.Element;
|
|
@@ -7,9 +7,8 @@ import { CourseService } from '@selfcommunity/api-services';
|
|
|
7
7
|
import { Logger } from '@selfcommunity/utils';
|
|
8
8
|
import { SCOPE_SC_UI } from '../../constants/Errors';
|
|
9
9
|
import { useSnackbar } from 'notistack';
|
|
10
|
-
import { Box, Icon,
|
|
10
|
+
import { Box, Icon, Stack, Table, TableBody, TableCell, TableContainer, TableHead, TableRow, Typography } from '@mui/material';
|
|
11
11
|
import Status from './Status';
|
|
12
|
-
import LessonsSkeleton from './Lessons/Skeleton';
|
|
13
12
|
import EmptyStatus from '../../shared/EmptyStatus';
|
|
14
13
|
import AddButton from './Lessons/AddButton';
|
|
15
14
|
import SectionRow from './Lessons/SectionRow';
|
|
@@ -58,12 +57,12 @@ function Lessons(props) {
|
|
|
58
57
|
const intl = useIntl();
|
|
59
58
|
// EFFECTS
|
|
60
59
|
useEffect(() => {
|
|
61
|
-
if (course
|
|
60
|
+
if (course.sections) {
|
|
62
61
|
setSections(course.sections);
|
|
63
62
|
}
|
|
64
63
|
}, [course]);
|
|
65
64
|
// MEMOS
|
|
66
|
-
const isNewRow = useMemo(() => { var _a; return sections.length > ((_a = course
|
|
65
|
+
const isNewRow = useMemo(() => { var _a; return sections.length > ((_a = course.sections) === null || _a === void 0 ? void 0 : _a.length); }, [course, sections]);
|
|
67
66
|
// FUNCTIONS
|
|
68
67
|
const getSection = useCallback((id) => {
|
|
69
68
|
return {
|
|
@@ -136,12 +135,12 @@ function Lessons(props) {
|
|
|
136
135
|
}
|
|
137
136
|
}
|
|
138
137
|
}, [course, setSections]);
|
|
139
|
-
return (_jsxs(Box, { children: [_jsx(Typography, Object.assign({ className: classes.lessonTitle, variant: "h4" }, { children: _jsx(FormattedMessage, { id: "ui.editCourse.tab.lessons", defaultMessage: "ui.editCourse.tab.lessons" }) })), _jsxs(Stack, Object.assign({ className: classes.lessonInfoWrapper }, { children: [_jsxs(Stack, Object.assign({ className: classes.lessonInfo }, { children: [_jsx(Icon, { children: "courses" }),
|
|
138
|
+
return (_jsxs(Box, { children: [_jsx(Typography, Object.assign({ className: classes.lessonTitle, variant: "h4" }, { children: _jsx(FormattedMessage, { id: "ui.editCourse.tab.lessons", defaultMessage: "ui.editCourse.tab.lessons" }) })), _jsxs(Stack, Object.assign({ className: classes.lessonInfoWrapper }, { children: [_jsxs(Stack, Object.assign({ className: classes.lessonInfo }, { children: [_jsx(Icon, { children: "courses" }), _jsx(Typography, Object.assign({ variant: "body2" }, { children: _jsx(FormattedMessage, { id: "ui.course.type", defaultMessage: "ui.course.type", values: {
|
|
140
139
|
typeOfCourse: intl.formatMessage({
|
|
141
140
|
id: `ui.course.type.${course.type}`,
|
|
142
141
|
defaultMessage: `ui.course.type.${course.type}`
|
|
143
142
|
})
|
|
144
|
-
} }) }))
|
|
143
|
+
} }) }))] })), _jsx(Status, { course: course })] })), sections.length === 0 && (_jsx(EmptyStatus, { icon: "courses", title: "ui.editCourse.tab.lessons.table.empty.title", description: "ui.editCourse.tab.lessons.table.empty.description", actions: _jsx(AddButton, { className: classes.emptyStatusButton, label: "ui.editCourse.tab.lessons.table.section", handleAddRow: handleAddTempSection, color: "inherit", variant: "outlined" }), className: classes.lessonEmptyStatus })), sections.length > 0 && (_jsxs(Fragment, { children: [_jsxs(Stack, Object.assign({ className: classes.lessonsSectionsWrapper }, { children: [_jsxs(Stack, Object.assign({ className: classes.lessonsSections }, { children: [_jsx(Typography, Object.assign({ variant: "h5" }, { children: _jsx(FormattedMessage, { id: "ui.course.table.sections.title", defaultMessage: "ui.course.table.sections.title", values: {
|
|
145
144
|
sectionsNumber: course.num_sections
|
|
146
145
|
} }) })), _jsx(Box, { className: classes.circle }), _jsx(Typography, Object.assign({ variant: "h5" }, { children: _jsx(FormattedMessage, { id: "ui.course.table.lessons.title", defaultMessage: "ui.course.table.lessons.title", values: {
|
|
147
146
|
lessonsNumber: course.num_lessons
|
|
@@ -1,11 +1,12 @@
|
|
|
1
|
-
import { jsx as _jsx, jsxs as _jsxs
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
2
|
import { Divider, FormControl, FormControlLabel, FormLabel, Skeleton, Stack, Switch } from '@mui/material';
|
|
3
3
|
import { PREFIX } from '../constants';
|
|
4
|
+
import { Fragment } from 'react';
|
|
4
5
|
const classes = {
|
|
5
6
|
optionsWrapper: `${PREFIX}-options-wrapper`,
|
|
6
7
|
optionsDivider: `${PREFIX}-options-divider`,
|
|
7
8
|
optionsButtonWrapper: `${PREFIX}-options-button-wrapper`
|
|
8
9
|
};
|
|
9
10
|
export default function OptionsSkeleton() {
|
|
10
|
-
return (_jsxs(
|
|
11
|
+
return (_jsxs(Fragment, { children: [_jsx(Stack, Object.assign({ className: classes.optionsWrapper }, { children: Array.from(Array(3)).map((_, i) => (_jsxs(FormControl, Object.assign({ component: "fieldset", variant: "standard" }, { children: [_jsx(FormLabel, Object.assign({ component: "legend" }, { children: _jsx(Skeleton, { animation: "wave", variant: "text", width: "52px", height: "21px" }) })), _jsx(FormControlLabel, { control: _jsx(Switch, {}), label: _jsx(Skeleton, { animation: "wave", variant: "text", width: "215px", height: "38px" }) })] }), i))) })), _jsx(Divider, { className: classes.optionsDivider }), _jsx(Stack, Object.assign({ className: classes.optionsButtonWrapper }, { children: _jsx(Skeleton, { animation: "wave", variant: "rounded", width: "133px", height: "33px" }) }))] }));
|
|
11
12
|
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/// <reference types="react" />
|
|
2
2
|
import { SCCourseType } from '@selfcommunity/types';
|
|
3
3
|
interface OptionsProps {
|
|
4
|
-
course: SCCourseType
|
|
4
|
+
course: SCCourseType;
|
|
5
5
|
setSCCourse: (course: SCCourseType) => void;
|
|
6
6
|
}
|
|
7
7
|
declare function Options(props: OptionsProps): JSX.Element;
|
|
@@ -8,7 +8,6 @@ import { SCOPE_SC_UI } from '../../constants/Errors';
|
|
|
8
8
|
import { useSnackbar } from 'notistack';
|
|
9
9
|
import SwitchForm from './Options/SwitchForm';
|
|
10
10
|
import useDeepCompareEffect from 'use-deep-compare-effect';
|
|
11
|
-
import OptionsSkeleton from './Options/Skeleton';
|
|
12
11
|
import { LoadingButton } from '@mui/lab';
|
|
13
12
|
import { CourseService } from '@selfcommunity/api-services';
|
|
14
13
|
const classes = {
|
|
@@ -41,7 +40,7 @@ function Options(props) {
|
|
|
41
40
|
const { enqueueSnackbar } = useSnackbar();
|
|
42
41
|
// EFFECTS
|
|
43
42
|
useDeepCompareEffect(() => {
|
|
44
|
-
if (!
|
|
43
|
+
if (!tempOptions) {
|
|
45
44
|
return;
|
|
46
45
|
}
|
|
47
46
|
if (course.enforce_lessons_order !== tempOptions.enforce_lessons_order ||
|
|
@@ -88,9 +87,6 @@ function Options(props) {
|
|
|
88
87
|
});
|
|
89
88
|
});
|
|
90
89
|
}, [course, tempOptions, setCanSave, setLoading]);
|
|
91
|
-
if (!course) {
|
|
92
|
-
return _jsx(OptionsSkeleton, {});
|
|
93
|
-
}
|
|
94
90
|
return (_jsxs(Fragment, { children: [_jsx(Stack, Object.assign({ className: classes.optionsWrapper }, { children: Object.entries(OPTIONS).map(([key, value], i) => (_jsx(SwitchForm, { name: key, title: value.title, description: value.description, checked: course[key], handleChangeOptions: handleChange }, i))) })), _jsx(Divider, { className: classes.optionsDivider }), _jsx(Stack, Object.assign({ className: classes.optionsButtonWrapper }, { children: _jsx(LoadingButton, Object.assign({ size: "small", variant: "contained", disabled: !canSave, onClick: handleSubmit, loading: loading }, { children: _jsx(Typography, Object.assign({ variant: "body1" }, { children: _jsx(FormattedMessage, { id: "ui.editCourse.tab.options.button.save", defaultMessage: "ui.editCourse.tab.options.button.save" }) })) })) }))] }));
|
|
95
91
|
}
|
|
96
92
|
export default memo(Options);
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/// <reference types="react" />
|
|
2
2
|
import { SCCourseType } from '@selfcommunity/types';
|
|
3
3
|
interface RequestsProps {
|
|
4
|
-
course: SCCourseType
|
|
4
|
+
course: SCCourseType;
|
|
5
5
|
endpointQueryParams?: Record<string, string | number>;
|
|
6
6
|
}
|
|
7
7
|
declare function Requests(props: RequestsProps): JSX.Element;
|
|
@@ -5,7 +5,6 @@ import { memo, useCallback, useEffect, useReducer, useRef } from 'react';
|
|
|
5
5
|
import { CacheStrategies, Logger } from '@selfcommunity/utils';
|
|
6
6
|
import { SCOPE_SC_UI } from '../../constants/Errors';
|
|
7
7
|
import Status from './Status';
|
|
8
|
-
import UsersSkeleton from './Users/Skeleton';
|
|
9
8
|
import CourseUsersTable from '../../shared/CourseUsersTable';
|
|
10
9
|
import { DEFAULT_PAGINATION_OFFSET } from '../../constants/Pagination';
|
|
11
10
|
import { SCCache, useSCUser } from '@selfcommunity/react-core';
|
|
@@ -40,7 +39,7 @@ function Requests(props) {
|
|
|
40
39
|
isLoadingPrevious: false,
|
|
41
40
|
isLoadingNext: false,
|
|
42
41
|
next: null,
|
|
43
|
-
cacheKey: SCCache.getWidgetStateCacheKey(SCCache.USER_REQUESTS_COURSES_STATE_CACHE_PREFIX_KEY, course
|
|
42
|
+
cacheKey: SCCache.getWidgetStateCacheKey(SCCache.USER_REQUESTS_COURSES_STATE_CACHE_PREFIX_KEY, course.id),
|
|
44
43
|
cacheStrategy: CacheStrategies.CACHE_FIRST,
|
|
45
44
|
visibleItems: endpointQueryParams.limit
|
|
46
45
|
}, stateWidgetInitializer);
|
|
@@ -65,13 +64,13 @@ function Requests(props) {
|
|
|
65
64
|
// EFFECTS
|
|
66
65
|
useEffect(() => {
|
|
67
66
|
let _t;
|
|
68
|
-
if (scUserContext.user
|
|
67
|
+
if (scUserContext.user) {
|
|
69
68
|
_t = setTimeout(_init);
|
|
70
69
|
return () => {
|
|
71
70
|
clearTimeout(_t);
|
|
72
71
|
};
|
|
73
72
|
}
|
|
74
|
-
}, [scUserContext.user,
|
|
73
|
+
}, [scUserContext.user, _init]);
|
|
75
74
|
useEffect(() => {
|
|
76
75
|
updatedUsers.current = PubSub.subscribe(`${SCTopicType.COURSE}.${SCGroupEventType.REMOVE_MEMBER}`, handleRemoveUser);
|
|
77
76
|
return () => {
|
|
@@ -85,9 +84,6 @@ function Requests(props) {
|
|
|
85
84
|
payload: { count: state.count - 1, results: state.results.filter((result) => result.id !== user.id) }
|
|
86
85
|
});
|
|
87
86
|
}, [dispatch]);
|
|
88
|
-
if (!course) {
|
|
89
|
-
return _jsx(UsersSkeleton, {});
|
|
90
|
-
}
|
|
91
87
|
return (_jsxs(Box, { children: [_jsx(Typography, Object.assign({ variant: "h6" }, { children: _jsx(FormattedMessage, { id: "ui.editCourse.tab.requests.title", defaultMessage: "ui.editCourse.tab.requests.title", values: { requestsNumber: state.results.length } }) })), _jsx(Stack, Object.assign({ className: classes.usersStatusWrapper }, { children: _jsx(Status, { course: course }) })), _jsx(CourseUsersTable, { course: course, state: state, dispatch: dispatch, headerCells: headerCells, mode: "requests", emptyStatusTitle: "ui.courseUsersTable.empty.requests.title" })] }));
|
|
92
88
|
}
|
|
93
89
|
export default memo(Requests);
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/// <reference types="react" />
|
|
2
|
+
import { SCCourseEditTabType } from '../../types';
|
|
3
|
+
interface EditCourseSkeletonProps {
|
|
4
|
+
tab: SCCourseEditTabType;
|
|
5
|
+
}
|
|
6
|
+
declare function EditCourseSkeleton(props: EditCourseSkeletonProps): JSX.Element;
|
|
7
|
+
declare const _default: import("react").MemoExoticComponent<typeof EditCourseSkeleton>;
|
|
8
|
+
export default _default;
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { PREFIX } from './constants';
|
|
3
|
+
import { Box, Skeleton, Stack, styled } from '@mui/material';
|
|
4
|
+
import LessonsSkeleton from './Lessons/Skeleton';
|
|
5
|
+
import UsersSkeleton from './Users/Skeleton';
|
|
6
|
+
import CourseFormSkeleton from '../CourseForm/Skeleton';
|
|
7
|
+
import OptionsSkeleton from './Options/Skeleton';
|
|
8
|
+
import { SCCourseEditTabEnum } from '../../types';
|
|
9
|
+
import { memo } from 'react';
|
|
10
|
+
const classes = {
|
|
11
|
+
root: `${PREFIX}-skeleton-root`,
|
|
12
|
+
header: `${PREFIX}-header`,
|
|
13
|
+
tabList: `${PREFIX}-tab-list`
|
|
14
|
+
};
|
|
15
|
+
const Root = styled(Box, {
|
|
16
|
+
name: PREFIX,
|
|
17
|
+
slot: 'SkeletonRoot',
|
|
18
|
+
overridesResolver: (_props, styles) => styles.skeletonRoot
|
|
19
|
+
})(() => ({}));
|
|
20
|
+
function EditCourseSkeleton(props) {
|
|
21
|
+
// PROPS
|
|
22
|
+
const { tab } = props;
|
|
23
|
+
return (_jsxs(Root, Object.assign({ className: classes.root }, { children: [_jsxs(Stack, Object.assign({ className: classes.header }, { children: [_jsx(Skeleton, { animation: "wave", variant: "rectangular", width: "14px", height: "14px" }), _jsx(Skeleton, { animation: "wave", variant: "text", width: "125px", height: "21px" })] })), _jsx(Stack, Object.assign({ className: classes.tabList }, { children: Array.from(new Array(5)).map((_, i) => (_jsx(Skeleton, { animation: "wave", variant: "text", width: "80px", height: "21px" }, i))) })), tab === SCCourseEditTabEnum.LESSONS && _jsx(LessonsSkeleton, {}), tab === SCCourseEditTabEnum.CUSTOMIZE && _jsx(CourseFormSkeleton, {}), tab === SCCourseEditTabEnum.USERS && _jsx(UsersSkeleton, {}), tab === SCCourseEditTabEnum.REQUESTS && _jsx(UsersSkeleton, {}), tab === SCCourseEditTabEnum.OPTIONS && _jsx(OptionsSkeleton, {})] })));
|
|
24
|
+
}
|
|
25
|
+
export default memo(EditCourseSkeleton);
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
-
import { Chip,
|
|
2
|
+
import { Chip, Typography } from '@mui/material';
|
|
3
3
|
import { useIntl } from 'react-intl';
|
|
4
4
|
import { PREFIX } from './constants';
|
|
5
5
|
import { SCCoursePrivacyType } from '@selfcommunity/types';
|
|
@@ -11,11 +11,11 @@ export default function Status(props) {
|
|
|
11
11
|
const { course } = props;
|
|
12
12
|
// HOOKS
|
|
13
13
|
const intl = useIntl();
|
|
14
|
-
return (_jsx(Chip, { label:
|
|
14
|
+
return (_jsx(Chip, { label: _jsx(Typography, Object.assign({ variant: "body1" }, { children: intl.formatMessage({ id: 'ui.editCourse.tab.lessons.status', defaultMessage: 'ui.editCourse.tab.lessons.status' }, {
|
|
15
15
|
status: intl.formatMessage({
|
|
16
16
|
id: `ui.course.privacy.${course.privacy === '' ? SCCoursePrivacyType.DRAFT : course.privacy}`,
|
|
17
17
|
defaultMessage: `ui.course.privacy.${course.privacy === '' ? SCCoursePrivacyType.DRAFT : course.privacy}`
|
|
18
18
|
}),
|
|
19
19
|
b: (chunks) => (_jsx(Typography, Object.assign({ component: "b", fontWeight: "bold" }, { children: chunks })))
|
|
20
|
-
}) }))
|
|
20
|
+
}) })), className: classes.status }));
|
|
21
21
|
}
|
|
@@ -1,16 +1,12 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
-
import { Skeleton, Stack
|
|
2
|
+
import { Skeleton, Stack } from '@mui/material';
|
|
3
3
|
import { PREFIX } from '../constants';
|
|
4
4
|
import { CourseUsersTableSkeleton } from '../../../shared/CourseUsersTable';
|
|
5
|
+
import { Fragment } from 'react';
|
|
5
6
|
const classes = {
|
|
6
|
-
root: `${PREFIX}-
|
|
7
|
+
root: `${PREFIX}-skeleton-root`,
|
|
7
8
|
usersStatusWrapper: `${PREFIX}-users-status-wrapper`
|
|
8
9
|
};
|
|
9
|
-
const Root = styled(Stack, {
|
|
10
|
-
name: PREFIX,
|
|
11
|
-
slot: 'UsersSkeletonRoot',
|
|
12
|
-
overridesResolver: (_props, styles) => styles.usersSkeletonRoot
|
|
13
|
-
})(() => ({}));
|
|
14
10
|
export default function UsersSkeleton() {
|
|
15
|
-
return (_jsxs(
|
|
11
|
+
return (_jsxs(Fragment, { children: [_jsx(Skeleton, { animation: "wave", variant: "text", width: "136px", height: "22px" }), _jsxs(Stack, Object.assign({ className: classes.usersStatusWrapper }, { children: [_jsx(Skeleton, { animation: "wave", variant: "rectangular", width: "122px", height: "32px" }), _jsx(Skeleton, { animation: "wave", variant: "rounded", width: "154px", height: "29px" })] })), _jsx(CourseUsersTableSkeleton, {})] }));
|
|
16
12
|
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/// <reference types="react" />
|
|
2
2
|
import { SCCourseType } from '@selfcommunity/types';
|
|
3
3
|
interface UsersProps {
|
|
4
|
-
course: SCCourseType
|
|
4
|
+
course: SCCourseType;
|
|
5
5
|
endpointQueryParams?: Record<string, string | number>;
|
|
6
6
|
}
|
|
7
7
|
declare function Users(props: UsersProps): JSX.Element;
|
|
@@ -7,7 +7,6 @@ import { CacheStrategies, Logger } from '@selfcommunity/utils';
|
|
|
7
7
|
import { SCOPE_SC_UI } from '../../constants/Errors';
|
|
8
8
|
import { useSnackbar } from 'notistack';
|
|
9
9
|
import Status from './Status';
|
|
10
|
-
import UsersSkeleton from './Users/Skeleton';
|
|
11
10
|
import { PREFIX } from './constants';
|
|
12
11
|
import CourseUsersTable from '../../shared/CourseUsersTable';
|
|
13
12
|
import { DEFAULT_PAGINATION_OFFSET } from '../../constants/Pagination';
|
|
@@ -45,7 +44,7 @@ function Users(props) {
|
|
|
45
44
|
isLoadingPrevious: false,
|
|
46
45
|
isLoadingNext: false,
|
|
47
46
|
next: null,
|
|
48
|
-
cacheKey: SCCache.getWidgetStateCacheKey(SCCache.USER_PARTECIPANTS_COURSES_STATE_CACHE_PREFIX_KEY, course
|
|
47
|
+
cacheKey: SCCache.getWidgetStateCacheKey(SCCache.USER_PARTECIPANTS_COURSES_STATE_CACHE_PREFIX_KEY, course.id),
|
|
49
48
|
cacheStrategy: CacheStrategies.CACHE_FIRST,
|
|
50
49
|
visibleItems: endpointQueryParams.limit
|
|
51
50
|
}, stateWidgetInitializer);
|
|
@@ -72,13 +71,13 @@ function Users(props) {
|
|
|
72
71
|
// EFFECTS
|
|
73
72
|
useEffect(() => {
|
|
74
73
|
let _t;
|
|
75
|
-
if (scUserContext.user
|
|
74
|
+
if (scUserContext.user) {
|
|
76
75
|
_t = setTimeout(_init);
|
|
77
76
|
return () => {
|
|
78
77
|
clearTimeout(_t);
|
|
79
78
|
};
|
|
80
79
|
}
|
|
81
|
-
}, [scUserContext.user,
|
|
80
|
+
}, [scUserContext.user, _init]);
|
|
82
81
|
useEffect(() => {
|
|
83
82
|
updatedUsers.current = PubSub.subscribe(`${SCTopicType.COURSE}.${SCGroupEventType.ADD_MEMBER}`, handleAddUser);
|
|
84
83
|
return () => {
|
|
@@ -106,10 +105,7 @@ function Users(props) {
|
|
|
106
105
|
});
|
|
107
106
|
});
|
|
108
107
|
}, [course, dispatch]);
|
|
109
|
-
|
|
110
|
-
return _jsx(UsersSkeleton, {});
|
|
111
|
-
}
|
|
112
|
-
return (_jsxs(Box, { children: [_jsx(Typography, Object.assign({ variant: "h6" }, { children: _jsx(FormattedMessage, { id: "ui.editCourse.tab.users.title", defaultMessage: "ui.editCourse.tab.users.title", values: { usersNumber: state.results.length } }) })), _jsxs(Stack, Object.assign({ className: classes.usersStatusWrapper }, { children: [_jsx(Status, { course: course }), _jsx(AddUsersButton, { course: course, label: "ui.editCourse.tab.users.addUsersButton.label", endpoint: {
|
|
108
|
+
return (_jsxs(Box, { children: [_jsx(Typography, Object.assign({ variant: "h6" }, { children: _jsx(FormattedMessage, { id: "ui.editCourse.tab.users.title", defaultMessage: "ui.editCourse.tab.users.title", values: { usersNumber: state.results.length } }) })), _jsxs(Stack, Object.assign({ className: classes.usersStatusWrapper }, { children: [_jsx(Status, { course: course }), _jsx(AddUsersButton, { label: "ui.editCourse.tab.users.addUsersButton.label", endpoint: {
|
|
113
109
|
url: () => Endpoints.GetCourseSuggestedUsers.url({ id: course.id }),
|
|
114
110
|
method: Endpoints.GetCourseSuggestedUsers.method
|
|
115
111
|
}, onConfirm: handleConfirm, isUpdating: state.isLoadingPrevious })] })), _jsx(CourseUsersTable, { course: course, state: state, dispatch: dispatch, headerCells: headerCells, mode: "edit", emptyStatusTitle: "ui.courseUsersTable.empty.users.title", emptyStatusDescription: "ui.courseUsersTable.empty.users.description" })] }));
|
package/lib/esm/index.d.ts
CHANGED
|
@@ -50,7 +50,7 @@ import CustomAdv, { CustomAdvProps, CustomAdvSkeleton } from './components/Custo
|
|
|
50
50
|
import EditEventButton, { EditEventButtonProps } from './components/EditEventButton';
|
|
51
51
|
import EditGroupButton, { EditGroupButtonProps } from './components/EditGroupButton';
|
|
52
52
|
import Editor, { EditorProps, EditorSkeleton } from './components/Editor';
|
|
53
|
-
import EditCourse, { EditCourseProps } from './components/EditCourse';
|
|
53
|
+
import EditCourse, { EditCourseProps, EditCourseSkeleton } from './components/EditCourse';
|
|
54
54
|
import Event, { EventProps, EventSkeleton, EventSkeletonProps } from './components/Event';
|
|
55
55
|
import EventHeader, { EventHeaderProps, EventHeaderSkeleton } from './components/EventHeader';
|
|
56
56
|
import EventInfoWidget, { EventInfoWidgetProps } from './components/EventInfoWidget';
|
|
@@ -209,4 +209,4 @@ import DefaultCoverSelfCommunity from './assets/deafultCover';
|
|
|
209
209
|
/**
|
|
210
210
|
* List all exports
|
|
211
211
|
*/
|
|
212
|
-
export { AcceptRequestUserEventButton, AcceptRequestUserEventButtonProps, AccountChangeMailValidation, AccountChangeMailValidationProps, AccountDataPortability, AccountDataPortabilityButton, AccountDataPortabilityButtonProps, AccountDataPortabilityProps, AccountDelete, AccountDeleteButton, AccountDeleteButtonProps, AccountDeleteProps, AccountRecover, AccountRecoverProps, AccountReset, AccountResetProps, AccountVerify, AccountVerifyProps, AvatarGroupSkeleton, BaseDialog, BaseDialogProps, BaseItem, BaseItemProps, BaseLightbox, BaseLightboxProps, BottomNavigation, BottomNavigationProps, BroadcastMessages, BroadcastMessagesProps, BroadcastMessagesSkeleton, bytesToSize, generateRoomId, randomString, decodePassphrase, encodePassphrase, getCurrentSectionAndLessonIndex, Calendar, CalendarProps, Categories, CategoriesPopularWidget, CategoriesPopularWidgetSkeleton, CategoriesProps, CategoriesSkeleton, CategoriesSkeletonProps, CategoriesSuggestionWidget, CategoriesSuggestionWidgetProps, CategoriesSuggestionWidgetSkeleton, Category, CategoryAutocomplete, CategoryAutocompleteProps, CategoryFollowButton, CategoryFollowButtonProps, CategoryFollowersButton, CategoryFollowersButtonProps, CategoryHeader, CategoryHeaderProps, CategoryHeaderSkeleton, CategoryProps, CategorySkeleton, CategoryTrendingFeedWidget, CategoryTrendingFeedWidgetProps, CategoryTrendingFeedWidgetSkeleton, CategoryTrendingPeopleWidgetSkeleton, CategoryTrendingUsersWidget, CategoryTrendingUsersWidgetProps, CentralProgress, ChangeCover, ChangeCoverProps, ChangeGroupCover, ChangeGroupCoverProps, ChangeGroupPicture, ChangeGroupPictureProps, ChangePicture, ChangePictureProps, CommentObject, CommentObjectProps, CommentObjectReply, CommentObjectReplyProps, CommentObjectSkeleton, CommentsFeedObject, CommentsFeedObjectProps, CommentsFeedObjectSkeleton, CommentsObject, CommentsObjectProps, CommentsObjectSkeleton, Composer, ComposerIconButton, ComposerIconButtonProps, ComposerProps, ConfirmDialog, ConnectionUserButton, ConsentSolution, ConsentSolutionButton, ConsentSolutionButtonProps, ConsentSolutionProps, ConsentSolutionSkeleton, ContributionUtils, SCCourseEditTabEnum, SCCourseEditTabType, Course, CourseProps, CourseSkeleton, CourseSkeletonProps, CourseJoinButton, CourseJoinButtonProps, Courses, CreateCourseButton, CreateCourseButtonProps, CoursesProps, CoursesSkeleton, CoursesSkeletonProps, CourseContentMenu, CourseContentMenuProps, CourseDashboard, TeacherCourseDashboardProps, TeacherSkeleton, StudentCourseDashboardProps, StudentSkeleton, CreateEventButton, CreateEventButtonProps, CreateEventWidget, CreateEventWidgetProps, CreateEventWidgetSkeleton, CreateGroupButton, EventForm, EventFormProps, EventFormDialog, EventFormDialogProps, CreateGroupButtonProps, CustomAdv, CustomAdvProps, CustomAdvSkeleton, DEFAULT_FIELDS, DEFAULT_PAGINATION_LIMIT, DEFAULT_PAGINATION_OFFSET, DEFAULT_PAGINATION_QUERY_PARAM_NAME, DEFAULT_PRELOAD_OFFSET_VIEWPORT, DEFAULT_WIDGETS_NUMBER, DefaultDrawerContent, DefaultDrawerContentProps, DefaultHeaderContent, DefaultHeaderContentProps, DefaultDrawerSkeleton, DefaultDrawerSkeletonProps, EditEventButton, EditEventButtonProps, EditGroupButton, EditGroupButtonProps, EditMediaProps, Editor, EditorProps, EditorSkeleton, EmailTextField, EditCourse, EditCourseProps, Event, EventActionsMenu, EventActionsMenuProps, EventHeader, EventHeaderProps, EventHeaderSkeleton, EventInfoDetails, EventInfoDetailsProps, EventInfoWidget, EventInfoWidgetProps, EventInviteButton, EventInviteButtonProps, EventLocationWidget, EventLocationWidgetProps, EventLocationWidgetSkeleton, EventMediaWidget, EventMediaWidgetProps, EventMediaWidgetSkeleton, EventMembersWidget, EventMembersWidgetProps, EventMembersWidgetSkeleton, EventParticipantsButton, EventParticipantsButtonProps, EventProps, Events, EventSkeleton, EventSkeletonProps, EventsProps, EventsSkeleton, EventsSkeletonProps, FACEBOOK_SHARE, Feed, FeedObject, FeedObjectMediaPreview, FeedObjectMediaPreviewProps, FeedObjectProps, FeedObjectSkeleton, FeedProps, FeedRef, FeedSidebarProps, FeedSkeleton, FeedUpdatesWidget, FeedUpdatesWidgetProps, FeedUpdatesWidgetSkeleton, File, FollowUserButton, FollowUserButtonProps, Footer, FooterProps, FooterSkeleton, FriendshipButtonProps, FriendshipUserButton, GenericSkeleton, getRelativeTime, getUnseenNotification, getUnseenNotificationCounter, Group, GroupActionsMenu, GroupActionsMenuProps, GroupForm, GroupFormProps, GroupHeader, GroupHeaderProps, GroupHeaderSkeleton, GroupInfoWidget, GroupInfoWidgetProps, GroupInfoWidgetSkeleton, GroupInviteButton, GroupInviteButtonProps, GroupInvitedWidget, GroupInvitedWidgetProps, GroupInvitedWidgetSkeleton, GroupMembersButton, GroupMembersButtonProps, GroupMembersWidget, GroupMembersWidgetProps, GroupMembersWidgetSkeleton, GroupProps, GroupRequestsWidget, GroupRequestsWidgetProps, GroupRequestsWidgetSkeleton, Groups, GroupSettingsIconButton, GroupSettingsIconButtonProps, GroupSkeleton, GroupsProps, GroupsSkeleton, GroupSubscribeButton, GroupSubscribeButtonProps, AccordionLessons, AccordionLessonsProps, AccordionLessonsSkeleton, AddUsersButton, AddUsersButtonProps, CourseUsersTable, CourseUsersTableProps, CourseUsersTableSkeleton, EmptyStatus, EmptyStatusProps, HiddenPlaceholder, Incubator, IncubatorDetail, IncubatorDetailProps, IncubatorListWidget, IncubatorListWidgetProps, IncubatorProps, IncubatorSubscribeButton, IncubatorSubscribeButtonProps, IncubatorSuggestionWidget, IncubatorSuggestionWidgetProps, InfiniteScroll, ScrollContainer, InlineComposerWidget, InlineComposerWidgetProps, InlineComposerWidgetSkeleton, InviteUserEventButton, LessonAppbar, LessonAppbarProps, LessonDrawer, LessonDrawerProps, LessonEditForm, LessonEditFormProps, LessonObject, LessonObjectProps, InviteUserEventButtonProps, LanguageSwitcher, LEGAL_POLICIES, CourseCompletedDialog, CourseCompletedDialogProps, Lightbox, LightboxProps, Link, LINKEDIN_SHARE, LocationAutocomplete, LocationAutocompleteProps, LogoSelfCommunity, DefaultCoverSelfCommunity, LoyaltyProgramWidget, LoyaltyProgramWidgetProps, LoyaltyProgramWidgetSkeleton, MAX_PRELOAD_OFFSET_VIEWPORT, MEDIA_EMBED_SC_LINK_TYPE, MEDIA_EMBED_SC_SHARED_EVENT, MEDIA_EMBED_SC_SHARED_OBJECT, MEDIA_TYPE_DOCUMENT, MEDIA_TYPE_EMBED, MEDIA_TYPE_EVENT, MEDIA_TYPE_IMAGE, MEDIA_TYPE_LINK, MEDIA_TYPE_SHARE, MEDIA_TYPE_URL, MEDIA_TYPE_VIDEO, SCCourseFormStepType, MediaChunkUploader, MediaChunkUploaderProps, MessageUploaderUtils, MetadataField, MetadataFieldProps, MIN_PRELOAD_OFFSET_VIEWPORT, MyEventsWidget, MyEventsWidgetProps, MyEventsWidgetSkeleton, NavigationMenuContent, NavigationMenuDrawer, NavigationMenuDrawerProps, NavigationMenuHeader, NavigationMenuIconButton, NavigationMenuIconButtonProps, NavigationSettingsIconButton, NavigationSettingsIconButtonProps, NavigationSettingsItem, NavigationToolbar, NavigationToolbarMobile, NavigationToolbarMobileProps, NavigationToolbarMobileSkeleton, NavigationToolbarProps, NavigationToolbarSkeleton, Notification, NotificationProps, NotificationSkeleton, OnBoardingWidget, OnBoardingWidgetProps, OnBoardingWidgetSkeleton, PasswordTextField, PhoneTextField, PlatformWidget, PlatformWidgetActionType, PlatformWidgetProps, PlatformWidgetSkeleton, PollSuggestionWidget, PollSuggestionWidgetProps, PrivateMessageComponent, PrivateMessageComponentProps, PrivateMessageComponentSkeleton, PrivateMessageEditor, PrivateMessageEditorProps, PrivateMessageEditorSkeleton, PrivateMessageSettingsIconButton, PrivateMessageSettingsIconButtonProps, PrivateMessageSnippetItem, PrivateMessageSnippetItemProps, PrivateMessageSnippetItemSkeleton, PrivateMessageSnippets, PrivateMessageSnippetsProps, PrivateMessageSnippetsSkeleton, PrivateMessageThread, PrivateMessageThreadItem, PrivateMessageThreadItemProps, PrivateMessageThreadItemSkeleton, PrivateMessageThreadProps, PrivateMessageThreadSkeleton, ProgressBar, ProgressBarProps, RelatedEventsWidget, RelatedEventsWidgetProps, RelatedEventsWidgetSkeleton, RelatedFeedObjectsWidget, RelatedFeedObjectsWidgetSkeleton, RelatedFeedObjectWidgetProps, ReplyComment, SCBroadcastMessageTemplateType, SCCommentsOrderBy, SCEventMembersEventType, SCEventTemplateType, SCFeedObjectActivitiesType, SCFeedObjectTemplateType, SCFeedWidgetType, SCGroupMembersEventType, SCMediaChunkType, SCMediaObjectType, SCNotificationObjectTemplateType, SCUserProfileFields, SCUserProfileSettings, SCUserSocialAssociations, SearchAutocomplete, SearchAutocompleteProps, SearchDialog, SearchDialogProps, Share, SnippetNotifications, SnippetNotificationsProps, SnippetNotificationsSkeleton, StickyBox, StickyBoxComponent, StickyBoxProps, SuggestedEventsWidget, TagAutocomplete, TagAutocompleteProps, SuggestedEventsWidgetProps, SuggestedEventsWidgetSkeleton, TagChip, TagChipProps, ToastNotifications, ToastNotificationsProps, ToastNotificationsSkeleton, UrlTextField, User, UserActionIconButton, UserActionIconButtonProps, UserAvatar, UserAvatarProps, UserConnectionsRequestsSentWidget, UserConnectionsRequestsSentWidgetProps, UserConnectionsRequestsSentWidgetSkeleton, UserConnectionsRequestsWidget, UserConnectionsRequestsWidgetProps, UserConnectionsRequestsWidgetSkeleton, UserConnectionsWidget, UserConnectionsWidgetProps, UserConnectionsWidgetSkeleton, UserCounters, UserCountersProps, UserDeletedSnackBar, UserDeletedSnackBarProps, UserFollowedCategoriesWidget, UserFollowedCategoriesWidgetProps, UserFollowedCategoriesWidgetSkeleton, UserFollowedUsersWidget, UserFollowedUsersWidgetProps, UserFollowedUsersWidgetSkeleton, UserFollowersWidget, UserFollowersWidgetProps, UserFollowersWidgetSkeleton, UserInfo, UserInfoDialog, UserInfoDialogProps, UserInfoProps, UserInfoSkeleton, UsernameTextField, UserProfileBlocked, UserProfileBlockedProps, UserProfileEdit, UserProfileEditProps, UserProfileEditSectionAccount, UserProfileEditSectionAccountProps, UserProfileEditSectionPublicInfo, UserProfileEditSectionPublicInfoProps, UserProfileEditSectionSettings, UserProfileEditSectionSettingsProps, UserProfileEditSkeleton, UserProfileHeader, UserProfileHeaderProps, UserProfileHeaderSkeleton, UserProps, UserSkeleton, UserSocialAssociation, UserSocialAssociationProps, UserSubscribedGroupsWidget, UserSubscribedGroupsWidgetProps, UserSubscribedGroupsWidgetSkeleton, UserSuggestionWidget, UserSuggestionWidgetProps, UserSuggestionWidgetSkeleton, UserLiveStreamWidget, UserLiveStreamWidgetProps, UserLiveStreamWidgetSkeleton, useStickyBox, UseStickyBoxProps, LiveStream, LiveStreamProps, LiveStreamSkeletonProps, LiveStreamSkeleton, LiveStreamInfoDetails, LiveStreamInfoDetailsProps, UpScalingTierBadge, UpScalingTierProps, CreateLiveStreamDialog, CreateLiveStreamDialogProps, CreateLiveStreamButton, CreateLiveStreamButtonProps, LiveStreamForm, LiveStreamFormProps, LiveStreamRoom, LiveStreamRoomProps, LiveStreamVideoConference, LiveStreamVideoConferenceProps, VirtualScrollerItemProps, SCCourseTemplateType, SCLessonActionsType, SCLessonModeType, Widget, WidgetProps, X_SHARE, PROVIDER_ICONS_CONTAINED, PROVIDER_ICONS_OUTLINED };
|
|
212
|
+
export { AcceptRequestUserEventButton, AcceptRequestUserEventButtonProps, AccountChangeMailValidation, AccountChangeMailValidationProps, AccountDataPortability, AccountDataPortabilityButton, AccountDataPortabilityButtonProps, AccountDataPortabilityProps, AccountDelete, AccountDeleteButton, AccountDeleteButtonProps, AccountDeleteProps, AccountRecover, AccountRecoverProps, AccountReset, AccountResetProps, AccountVerify, AccountVerifyProps, AvatarGroupSkeleton, BaseDialog, BaseDialogProps, BaseItem, BaseItemProps, BaseLightbox, BaseLightboxProps, BottomNavigation, BottomNavigationProps, BroadcastMessages, BroadcastMessagesProps, BroadcastMessagesSkeleton, bytesToSize, generateRoomId, randomString, decodePassphrase, encodePassphrase, getCurrentSectionAndLessonIndex, Calendar, CalendarProps, Categories, CategoriesPopularWidget, CategoriesPopularWidgetSkeleton, CategoriesProps, CategoriesSkeleton, CategoriesSkeletonProps, CategoriesSuggestionWidget, CategoriesSuggestionWidgetProps, CategoriesSuggestionWidgetSkeleton, Category, CategoryAutocomplete, CategoryAutocompleteProps, CategoryFollowButton, CategoryFollowButtonProps, CategoryFollowersButton, CategoryFollowersButtonProps, CategoryHeader, CategoryHeaderProps, CategoryHeaderSkeleton, CategoryProps, CategorySkeleton, CategoryTrendingFeedWidget, CategoryTrendingFeedWidgetProps, CategoryTrendingFeedWidgetSkeleton, CategoryTrendingPeopleWidgetSkeleton, CategoryTrendingUsersWidget, CategoryTrendingUsersWidgetProps, CentralProgress, ChangeCover, ChangeCoverProps, ChangeGroupCover, ChangeGroupCoverProps, ChangeGroupPicture, ChangeGroupPictureProps, ChangePicture, ChangePictureProps, CommentObject, CommentObjectProps, CommentObjectReply, CommentObjectReplyProps, CommentObjectSkeleton, CommentsFeedObject, CommentsFeedObjectProps, CommentsFeedObjectSkeleton, CommentsObject, CommentsObjectProps, CommentsObjectSkeleton, Composer, ComposerIconButton, ComposerIconButtonProps, ComposerProps, ConfirmDialog, ConnectionUserButton, ConsentSolution, ConsentSolutionButton, ConsentSolutionButtonProps, ConsentSolutionProps, ConsentSolutionSkeleton, ContributionUtils, SCCourseEditTabEnum, SCCourseEditTabType, Course, CourseProps, CourseSkeleton, CourseSkeletonProps, CourseJoinButton, CourseJoinButtonProps, Courses, CreateCourseButton, CreateCourseButtonProps, CoursesProps, CoursesSkeleton, CoursesSkeletonProps, CourseContentMenu, CourseContentMenuProps, CourseDashboard, TeacherCourseDashboardProps, TeacherSkeleton, StudentCourseDashboardProps, StudentSkeleton, CreateEventButton, CreateEventButtonProps, CreateEventWidget, CreateEventWidgetProps, CreateEventWidgetSkeleton, CreateGroupButton, EventForm, EventFormProps, EventFormDialog, EventFormDialogProps, CreateGroupButtonProps, CustomAdv, CustomAdvProps, CustomAdvSkeleton, DEFAULT_FIELDS, DEFAULT_PAGINATION_LIMIT, DEFAULT_PAGINATION_OFFSET, DEFAULT_PAGINATION_QUERY_PARAM_NAME, DEFAULT_PRELOAD_OFFSET_VIEWPORT, DEFAULT_WIDGETS_NUMBER, DefaultDrawerContent, DefaultDrawerContentProps, DefaultHeaderContent, DefaultHeaderContentProps, DefaultDrawerSkeleton, DefaultDrawerSkeletonProps, EditEventButton, EditEventButtonProps, EditGroupButton, EditGroupButtonProps, EditMediaProps, Editor, EditorProps, EditorSkeleton, EmailTextField, EditCourse, EditCourseProps, EditCourseSkeleton, Event, EventActionsMenu, EventActionsMenuProps, EventHeader, EventHeaderProps, EventHeaderSkeleton, EventInfoDetails, EventInfoDetailsProps, EventInfoWidget, EventInfoWidgetProps, EventInviteButton, EventInviteButtonProps, EventLocationWidget, EventLocationWidgetProps, EventLocationWidgetSkeleton, EventMediaWidget, EventMediaWidgetProps, EventMediaWidgetSkeleton, EventMembersWidget, EventMembersWidgetProps, EventMembersWidgetSkeleton, EventParticipantsButton, EventParticipantsButtonProps, EventProps, Events, EventSkeleton, EventSkeletonProps, EventsProps, EventsSkeleton, EventsSkeletonProps, FACEBOOK_SHARE, Feed, FeedObject, FeedObjectMediaPreview, FeedObjectMediaPreviewProps, FeedObjectProps, FeedObjectSkeleton, FeedProps, FeedRef, FeedSidebarProps, FeedSkeleton, FeedUpdatesWidget, FeedUpdatesWidgetProps, FeedUpdatesWidgetSkeleton, File, FollowUserButton, FollowUserButtonProps, Footer, FooterProps, FooterSkeleton, FriendshipButtonProps, FriendshipUserButton, GenericSkeleton, getRelativeTime, getUnseenNotification, getUnseenNotificationCounter, Group, GroupActionsMenu, GroupActionsMenuProps, GroupForm, GroupFormProps, GroupHeader, GroupHeaderProps, GroupHeaderSkeleton, GroupInfoWidget, GroupInfoWidgetProps, GroupInfoWidgetSkeleton, GroupInviteButton, GroupInviteButtonProps, GroupInvitedWidget, GroupInvitedWidgetProps, GroupInvitedWidgetSkeleton, GroupMembersButton, GroupMembersButtonProps, GroupMembersWidget, GroupMembersWidgetProps, GroupMembersWidgetSkeleton, GroupProps, GroupRequestsWidget, GroupRequestsWidgetProps, GroupRequestsWidgetSkeleton, Groups, GroupSettingsIconButton, GroupSettingsIconButtonProps, GroupSkeleton, GroupsProps, GroupsSkeleton, GroupSubscribeButton, GroupSubscribeButtonProps, AccordionLessons, AccordionLessonsProps, AccordionLessonsSkeleton, AddUsersButton, AddUsersButtonProps, CourseUsersTable, CourseUsersTableProps, CourseUsersTableSkeleton, EmptyStatus, EmptyStatusProps, HiddenPlaceholder, Incubator, IncubatorDetail, IncubatorDetailProps, IncubatorListWidget, IncubatorListWidgetProps, IncubatorProps, IncubatorSubscribeButton, IncubatorSubscribeButtonProps, IncubatorSuggestionWidget, IncubatorSuggestionWidgetProps, InfiniteScroll, ScrollContainer, InlineComposerWidget, InlineComposerWidgetProps, InlineComposerWidgetSkeleton, InviteUserEventButton, LessonAppbar, LessonAppbarProps, LessonDrawer, LessonDrawerProps, LessonEditForm, LessonEditFormProps, LessonObject, LessonObjectProps, InviteUserEventButtonProps, LanguageSwitcher, LEGAL_POLICIES, CourseCompletedDialog, CourseCompletedDialogProps, Lightbox, LightboxProps, Link, LINKEDIN_SHARE, LocationAutocomplete, LocationAutocompleteProps, LogoSelfCommunity, DefaultCoverSelfCommunity, LoyaltyProgramWidget, LoyaltyProgramWidgetProps, LoyaltyProgramWidgetSkeleton, MAX_PRELOAD_OFFSET_VIEWPORT, MEDIA_EMBED_SC_LINK_TYPE, MEDIA_EMBED_SC_SHARED_EVENT, MEDIA_EMBED_SC_SHARED_OBJECT, MEDIA_TYPE_DOCUMENT, MEDIA_TYPE_EMBED, MEDIA_TYPE_EVENT, MEDIA_TYPE_IMAGE, MEDIA_TYPE_LINK, MEDIA_TYPE_SHARE, MEDIA_TYPE_URL, MEDIA_TYPE_VIDEO, SCCourseFormStepType, MediaChunkUploader, MediaChunkUploaderProps, MessageUploaderUtils, MetadataField, MetadataFieldProps, MIN_PRELOAD_OFFSET_VIEWPORT, MyEventsWidget, MyEventsWidgetProps, MyEventsWidgetSkeleton, NavigationMenuContent, NavigationMenuDrawer, NavigationMenuDrawerProps, NavigationMenuHeader, NavigationMenuIconButton, NavigationMenuIconButtonProps, NavigationSettingsIconButton, NavigationSettingsIconButtonProps, NavigationSettingsItem, NavigationToolbar, NavigationToolbarMobile, NavigationToolbarMobileProps, NavigationToolbarMobileSkeleton, NavigationToolbarProps, NavigationToolbarSkeleton, Notification, NotificationProps, NotificationSkeleton, OnBoardingWidget, OnBoardingWidgetProps, OnBoardingWidgetSkeleton, PasswordTextField, PhoneTextField, PlatformWidget, PlatformWidgetActionType, PlatformWidgetProps, PlatformWidgetSkeleton, PollSuggestionWidget, PollSuggestionWidgetProps, PrivateMessageComponent, PrivateMessageComponentProps, PrivateMessageComponentSkeleton, PrivateMessageEditor, PrivateMessageEditorProps, PrivateMessageEditorSkeleton, PrivateMessageSettingsIconButton, PrivateMessageSettingsIconButtonProps, PrivateMessageSnippetItem, PrivateMessageSnippetItemProps, PrivateMessageSnippetItemSkeleton, PrivateMessageSnippets, PrivateMessageSnippetsProps, PrivateMessageSnippetsSkeleton, PrivateMessageThread, PrivateMessageThreadItem, PrivateMessageThreadItemProps, PrivateMessageThreadItemSkeleton, PrivateMessageThreadProps, PrivateMessageThreadSkeleton, ProgressBar, ProgressBarProps, RelatedEventsWidget, RelatedEventsWidgetProps, RelatedEventsWidgetSkeleton, RelatedFeedObjectsWidget, RelatedFeedObjectsWidgetSkeleton, RelatedFeedObjectWidgetProps, ReplyComment, SCBroadcastMessageTemplateType, SCCommentsOrderBy, SCEventMembersEventType, SCEventTemplateType, SCFeedObjectActivitiesType, SCFeedObjectTemplateType, SCFeedWidgetType, SCGroupMembersEventType, SCMediaChunkType, SCMediaObjectType, SCNotificationObjectTemplateType, SCUserProfileFields, SCUserProfileSettings, SCUserSocialAssociations, SearchAutocomplete, SearchAutocompleteProps, SearchDialog, SearchDialogProps, Share, SnippetNotifications, SnippetNotificationsProps, SnippetNotificationsSkeleton, StickyBox, StickyBoxComponent, StickyBoxProps, SuggestedEventsWidget, TagAutocomplete, TagAutocompleteProps, SuggestedEventsWidgetProps, SuggestedEventsWidgetSkeleton, TagChip, TagChipProps, ToastNotifications, ToastNotificationsProps, ToastNotificationsSkeleton, UrlTextField, User, UserActionIconButton, UserActionIconButtonProps, UserAvatar, UserAvatarProps, UserConnectionsRequestsSentWidget, UserConnectionsRequestsSentWidgetProps, UserConnectionsRequestsSentWidgetSkeleton, UserConnectionsRequestsWidget, UserConnectionsRequestsWidgetProps, UserConnectionsRequestsWidgetSkeleton, UserConnectionsWidget, UserConnectionsWidgetProps, UserConnectionsWidgetSkeleton, UserCounters, UserCountersProps, UserDeletedSnackBar, UserDeletedSnackBarProps, UserFollowedCategoriesWidget, UserFollowedCategoriesWidgetProps, UserFollowedCategoriesWidgetSkeleton, UserFollowedUsersWidget, UserFollowedUsersWidgetProps, UserFollowedUsersWidgetSkeleton, UserFollowersWidget, UserFollowersWidgetProps, UserFollowersWidgetSkeleton, UserInfo, UserInfoDialog, UserInfoDialogProps, UserInfoProps, UserInfoSkeleton, UsernameTextField, UserProfileBlocked, UserProfileBlockedProps, UserProfileEdit, UserProfileEditProps, UserProfileEditSectionAccount, UserProfileEditSectionAccountProps, UserProfileEditSectionPublicInfo, UserProfileEditSectionPublicInfoProps, UserProfileEditSectionSettings, UserProfileEditSectionSettingsProps, UserProfileEditSkeleton, UserProfileHeader, UserProfileHeaderProps, UserProfileHeaderSkeleton, UserProps, UserSkeleton, UserSocialAssociation, UserSocialAssociationProps, UserSubscribedGroupsWidget, UserSubscribedGroupsWidgetProps, UserSubscribedGroupsWidgetSkeleton, UserSuggestionWidget, UserSuggestionWidgetProps, UserSuggestionWidgetSkeleton, UserLiveStreamWidget, UserLiveStreamWidgetProps, UserLiveStreamWidgetSkeleton, useStickyBox, UseStickyBoxProps, LiveStream, LiveStreamProps, LiveStreamSkeletonProps, LiveStreamSkeleton, LiveStreamInfoDetails, LiveStreamInfoDetailsProps, UpScalingTierBadge, UpScalingTierProps, CreateLiveStreamDialog, CreateLiveStreamDialogProps, CreateLiveStreamButton, CreateLiveStreamButtonProps, LiveStreamForm, LiveStreamFormProps, LiveStreamRoom, LiveStreamRoomProps, LiveStreamVideoConference, LiveStreamVideoConferenceProps, VirtualScrollerItemProps, SCCourseTemplateType, SCLessonActionsType, SCLessonModeType, Widget, WidgetProps, X_SHARE, PROVIDER_ICONS_CONTAINED, PROVIDER_ICONS_OUTLINED };
|
package/lib/esm/index.js
CHANGED
|
@@ -50,7 +50,7 @@ import CustomAdv, { CustomAdvSkeleton } from './components/CustomAdv';
|
|
|
50
50
|
import EditEventButton from './components/EditEventButton';
|
|
51
51
|
import EditGroupButton from './components/EditGroupButton';
|
|
52
52
|
import Editor, { EditorSkeleton } from './components/Editor';
|
|
53
|
-
import EditCourse from './components/EditCourse';
|
|
53
|
+
import EditCourse, { EditCourseSkeleton } from './components/EditCourse';
|
|
54
54
|
import Event, { EventSkeleton } from './components/Event';
|
|
55
55
|
import EventHeader, { EventHeaderSkeleton } from './components/EventHeader';
|
|
56
56
|
import EventInfoWidget from './components/EventInfoWidget';
|
|
@@ -212,7 +212,7 @@ export { AcceptRequestUserEventButton, AccountChangeMailValidation, AccountDataP
|
|
|
212
212
|
/* SC CONSENT SOLUTION */
|
|
213
213
|
ConsentSolution, ConsentSolutionButton, ConsentSolutionSkeleton, ContributionUtils, SCCourseEditTabEnum, Course, CourseSkeleton, CourseJoinButton, Courses, CreateCourseButton, CoursesSkeleton, CourseContentMenu, CourseDashboard, TeacherSkeleton, StudentSkeleton, CreateEventButton, CreateEventWidget, CreateEventWidgetSkeleton, CreateGroupButton, EventForm, EventFormDialog, CustomAdv, CustomAdvSkeleton, DEFAULT_FIELDS, DEFAULT_PAGINATION_LIMIT, DEFAULT_PAGINATION_OFFSET,
|
|
214
214
|
/* SC UI PAGINATION */
|
|
215
|
-
DEFAULT_PAGINATION_QUERY_PARAM_NAME, DEFAULT_PRELOAD_OFFSET_VIEWPORT, DEFAULT_WIDGETS_NUMBER, DefaultDrawerContent, DefaultHeaderContent, DefaultDrawerSkeleton, EditEventButton, EditGroupButton, Editor, EditorSkeleton, EmailTextField, EditCourse, Event, EventActionsMenu, EventHeader, EventHeaderSkeleton, EventInfoDetails, EventInfoWidget, EventInviteButton, EventLocationWidget, EventLocationWidgetSkeleton, EventMediaWidget, EventMediaWidgetSkeleton, EventMembersWidget, EventMembersWidgetSkeleton, EventParticipantsButton, Events, EventSkeleton, EventsSkeleton, FACEBOOK_SHARE, Feed, FeedObject, FeedObjectMediaPreview, FeedObjectSkeleton, FeedSkeleton, FeedUpdatesWidget, FeedUpdatesWidgetSkeleton, File, FollowUserButton, Footer, FooterSkeleton, FriendshipUserButton, GenericSkeleton, getRelativeTime, getUnseenNotification, getUnseenNotificationCounter, Group, GroupActionsMenu, GroupForm, GroupHeader, GroupHeaderSkeleton, GroupInfoWidget, GroupInfoWidgetSkeleton, GroupInviteButton, GroupInvitedWidget, GroupInvitedWidgetSkeleton, GroupMembersButton, GroupMembersWidget, GroupMembersWidgetSkeleton, GroupRequestsWidget, GroupRequestsWidgetSkeleton, Groups, GroupSettingsIconButton, GroupSkeleton, GroupsSkeleton, GroupSubscribeButton,
|
|
215
|
+
DEFAULT_PAGINATION_QUERY_PARAM_NAME, DEFAULT_PRELOAD_OFFSET_VIEWPORT, DEFAULT_WIDGETS_NUMBER, DefaultDrawerContent, DefaultHeaderContent, DefaultDrawerSkeleton, EditEventButton, EditGroupButton, Editor, EditorSkeleton, EmailTextField, EditCourse, EditCourseSkeleton, Event, EventActionsMenu, EventHeader, EventHeaderSkeleton, EventInfoDetails, EventInfoWidget, EventInviteButton, EventLocationWidget, EventLocationWidgetSkeleton, EventMediaWidget, EventMediaWidgetSkeleton, EventMembersWidget, EventMembersWidgetSkeleton, EventParticipantsButton, Events, EventSkeleton, EventsSkeleton, FACEBOOK_SHARE, Feed, FeedObject, FeedObjectMediaPreview, FeedObjectSkeleton, FeedSkeleton, FeedUpdatesWidget, FeedUpdatesWidgetSkeleton, File, FollowUserButton, Footer, FooterSkeleton, FriendshipUserButton, GenericSkeleton, getRelativeTime, getUnseenNotification, getUnseenNotificationCounter, Group, GroupActionsMenu, GroupForm, GroupHeader, GroupHeaderSkeleton, GroupInfoWidget, GroupInfoWidgetSkeleton, GroupInviteButton, GroupInvitedWidget, GroupInvitedWidgetSkeleton, GroupMembersButton, GroupMembersWidget, GroupMembersWidgetSkeleton, GroupRequestsWidget, GroupRequestsWidgetSkeleton, Groups, GroupSettingsIconButton, GroupSkeleton, GroupsSkeleton, GroupSubscribeButton,
|
|
216
216
|
/* SC UI SHARED */
|
|
217
217
|
AccordionLessons, AccordionLessonsSkeleton, AddUsersButton, CourseUsersTable, CourseUsersTableSkeleton, EmptyStatus, HiddenPlaceholder, Incubator, IncubatorDetail, IncubatorListWidget, IncubatorSubscribeButton, IncubatorSuggestionWidget, InfiniteScroll, ScrollContainer, InlineComposerWidget, InlineComposerWidgetSkeleton, InviteUserEventButton, LessonAppbar, LessonDrawer, LessonEditForm, LessonObject, LanguageSwitcher, LEGAL_POLICIES, CourseCompletedDialog, Lightbox, Link, LINKEDIN_SHARE, LocationAutocomplete,
|
|
218
218
|
/* Assets */
|
|
@@ -1,9 +1,8 @@
|
|
|
1
1
|
/// <reference types="react" />
|
|
2
2
|
import { ButtonProps } from '@mui/material';
|
|
3
|
-
import {
|
|
3
|
+
import { SCUserType } from '@selfcommunity/types';
|
|
4
4
|
import { EndpointType } from '@selfcommunity/api-services';
|
|
5
5
|
export interface AddUsersButtonProps extends ButtonProps {
|
|
6
|
-
course: SCCourseType | null;
|
|
7
6
|
label: string;
|
|
8
7
|
/**
|
|
9
8
|
* Handles component update
|
|
@@ -40,7 +40,7 @@ function AddUsersButton(inProps) {
|
|
|
40
40
|
props: inProps,
|
|
41
41
|
name: PREFIX
|
|
42
42
|
});
|
|
43
|
-
const {
|
|
43
|
+
const { label, variant = 'outlined', color = 'inherit', size = 'small', isUpdating = false, endpoint = Endpoints.GetCourseSuggestedUsers, endpointQueryParams = { limit: DEFAULT_PAGINATION_LIMIT, offset: DEFAULT_PAGINATION_OFFSET, search: '' }, onConfirm } = props, rest = __rest(props, ["label", "variant", "color", "size", "isUpdating", "endpoint", "endpointQueryParams", "onConfirm"]);
|
|
44
44
|
// STATES
|
|
45
45
|
const [openDialog, setOpenDialog] = useState(false);
|
|
46
46
|
const [invited, setInvited] = useState([]);
|
|
@@ -70,7 +70,7 @@ function AddUsersButton(inProps) {
|
|
|
70
70
|
autoHideDuration: 3000
|
|
71
71
|
});
|
|
72
72
|
});
|
|
73
|
-
}, [setLoading,
|
|
73
|
+
}, [setLoading, endpoint, endpointQueryParams, setSuggested]);
|
|
74
74
|
// EFFECTS
|
|
75
75
|
useEffect(() => {
|
|
76
76
|
if (openDialog) {
|