@edifice.io/react 2.6.2-develop-integration.20260824151812 → 2.6.2-develop-integration-crna.20260825121901
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/dist/components/Alert/Alert.js +1 -1
- package/dist/components/DatePicker/DatePicker.d.ts +5 -0
- package/dist/components/DatePicker/DatePicker.js +2 -0
- package/dist/components/Layout/Layout.js +5 -3
- package/dist/hooks/index.d.ts +0 -1
- package/dist/icons-apps.js +112 -100
- package/dist/icons.js +340 -338
- package/dist/index.js +146 -152
- package/dist/modules/homepage/components/Communities/Communities.d.ts +10 -0
- package/dist/modules/homepage/components/Communities/CommunitiesContainer.d.ts +9 -0
- package/dist/modules/homepage/components/Communities/CommunitiesSkeleton.d.ts +5 -0
- package/dist/modules/homepage/components/Communities/CommunityItem.d.ts +11 -0
- package/dist/modules/homepage/components/Communities/index.d.ts +8 -0
- package/dist/modules/homepage/components/Communities/useCommunities.d.ts +13 -0
- package/dist/modules/homepage/components/Favorites/Favorites.js +7 -4
- package/dist/modules/homepage/components/Header/Header.js +20 -2
- package/dist/modules/homepage/components/HomeCard/HomeCard.d.ts +5 -1
- package/dist/modules/homepage/components/HomeCard/HomeCard.js +10 -2
- package/dist/modules/homepage/components/LastInfos/LastInfosList.js +2 -2
- package/dist/modules/homepage/components/Notifications/NotificationItem.js +5 -4
- package/dist/modules/homepage/components/Notifications/NotificationList.d.ts +7 -1
- package/dist/modules/homepage/components/Notifications/NotificationList.js +10 -3
- package/dist/modules/homepage/components/Notifications/NotificationListContainer.js +4 -1
- package/dist/modules/homepage/components/Notifications/components/CommonNotificationItem.d.ts +2 -1
- package/dist/modules/homepage/components/Notifications/components/CommonNotificationItem.js +14 -10
- package/dist/modules/homepage/components/Notifications/components/NotificationFilterMenu.d.ts +16 -0
- package/dist/modules/homepage/components/Notifications/components/NotificationFilterMenu.js +29 -0
- package/dist/modules/homepage/components/Notifications/components/NotificationFilterModal.d.ts +18 -0
- package/dist/modules/homepage/components/Notifications/components/NotificationFilterModal.js +67 -0
- package/dist/modules/homepage/components/Notifications/components/NotificationItemResource.d.ts +2 -1
- package/dist/modules/homepage/components/Notifications/components/NotificationItemResource.js +3 -2
- package/dist/modules/homepage/components/Notifications/components/NotificationOptionsMenu.d.ts +12 -0
- package/dist/modules/homepage/components/Notifications/components/NotificationOptionsMenu.js +42 -0
- package/dist/modules/homepage/components/Notifications/components/ReportNotificationModal.d.ts +13 -0
- package/dist/modules/homepage/components/Notifications/components/ReportNotificationModal.js +31 -0
- package/dist/modules/homepage/components/Notifications/components/SystemNotificationItem.d.ts +3 -1
- package/dist/modules/homepage/components/Notifications/components/SystemNotificationItem.js +3 -2
- package/dist/modules/homepage/components/Notifications/components/UserNotificationItem.d.ts +3 -1
- package/dist/modules/homepage/components/Notifications/components/UserNotificationItem.js +3 -2
- package/dist/modules/homepage/components/Notifications/components/notificationAdapter.d.ts +22 -7
- package/dist/modules/homepage/components/Notifications/components/notificationAdapter.js +31 -13
- package/dist/modules/homepage/components/Notifications/hooks/useNotificationList.d.ts +11 -1
- package/dist/modules/homepage/components/Notifications/hooks/useNotificationList.js +34 -2
- package/dist/modules/homepage/components/Notifications/services/api/index.d.ts +2 -0
- package/dist/modules/homepage/components/Notifications/services/api/notificationService.d.ts +8 -0
- package/dist/modules/homepage/components/Notifications/services/api/notificationService.js +12 -0
- package/dist/modules/homepage/components/Notifications/services/queries/notification.d.ts +13 -1
- package/dist/modules/homepage/components/Notifications/services/queries/notification.js +41 -4
- package/dist/modules/homepage/components/SchoolSpace/SchoolSpace.js +20 -11
- package/dist/modules/homepage/components/UserSpace/UserSpace.js +5 -2
- package/dist/modules/homepage/components/UserSpace/hooks/useChildren.d.ts +14 -0
- package/dist/modules/homepage/components/UserSpace/hooks/useChildren.js +23 -0
- package/dist/modules/homepage/components/UserSpace/hooks/useProfileLinks.d.ts +8 -0
- package/dist/modules/homepage/components/UserSpace/hooks/useProfileLinks.js +65 -0
- package/dist/modules/icons/components/IconClass.d.ts +7 -0
- package/dist/modules/icons/components/IconClass.js +13 -0
- package/dist/modules/icons/components/apps/IconNextcloudDeck.d.ts +7 -0
- package/dist/modules/icons/components/apps/IconNextcloudDeck.js +14 -0
- package/dist/modules/icons/components/apps/IconNextcloudFiles.d.ts +7 -0
- package/dist/modules/icons/components/apps/IconNextcloudFiles.js +14 -0
- package/dist/modules/icons/components/apps/IconNextcloudForms.d.ts +7 -0
- package/dist/modules/icons/components/apps/IconNextcloudForms.js +14 -0
- package/dist/modules/icons/components/apps/IconNextcloudNotes.d.ts +7 -0
- package/dist/modules/icons/components/apps/IconNextcloudNotes.js +14 -0
- package/dist/modules/icons/components/apps/IconNextcloudTalk.d.ts +7 -0
- package/dist/modules/icons/components/apps/IconNextcloudTalk.js +14 -0
- package/dist/modules/icons/components/apps/IconPeertube.d.ts +7 -0
- package/dist/modules/icons/components/apps/IconPeertube.js +21 -0
- package/dist/modules/icons/components/apps/index.d.ts +6 -0
- package/dist/modules/icons/components/index.d.ts +1 -0
- package/dist/modules/multimedia/FileCard/index.d.ts +0 -2
- package/dist/modules/multimedia/MediaLibrary/MediaLibrary.d.ts +2 -2
- package/dist/modules/multimedia/MediaLibrary/MediaLibrary.js +7 -20
- package/dist/modules/multimedia/MediaLibrary/innertabs/index.d.ts +0 -1
- package/dist/modules/multimedia/MediaLibrary/innertabs/index.js +0 -2
- package/dist/modules/multimedia/index.d.ts +0 -1
- package/dist/multimedia.js +12 -16
- package/package.json +6 -6
- package/dist/hooks/useNextcloudSearch/index.d.ts +0 -1
- package/dist/hooks/useNextcloudSearch/useNextcloudSearch.d.ts +0 -12
- package/dist/hooks/useNextcloudSearch/useNextcloudSearch.js +0 -56
- package/dist/modules/multimedia/FileCard/NextcloudFileCard.d.ts +0 -25
- package/dist/modules/multimedia/FileCard/NextcloudFileCard.js +0 -105
- package/dist/modules/multimedia/MediaLibrary/innertabs/Nextcloud.d.ts +0 -1
- package/dist/modules/multimedia/MediaLibrary/innertabs/Nextcloud.js +0 -35
- package/dist/modules/multimedia/Nextcloud/Nextcloud.d.ts +0 -24
- package/dist/modules/multimedia/Nextcloud/Nextcloud.js +0 -109
- package/dist/modules/multimedia/Nextcloud/index.d.ts +0 -2
|
@@ -1,4 +1,6 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { useState, useEffect } from "react";
|
|
2
|
+
import { useNotificationTypes, useNotifications, useTimelinePreference, useSaveTimelinePreference } from "../services/queries/notification.js";
|
|
3
|
+
import useDate from "../../../../../hooks/useDate/useDate.js";
|
|
2
4
|
const useNotificationListContainer = () => {
|
|
3
5
|
const {
|
|
4
6
|
data: notificationTypes,
|
|
@@ -6,21 +8,51 @@ const useNotificationListContainer = () => {
|
|
|
6
8
|
isFetched: isFetchedTypes,
|
|
7
9
|
error: errorTypes
|
|
8
10
|
} = useNotificationTypes(), {
|
|
11
|
+
data: preference,
|
|
12
|
+
isFetched: isFetchedPreference
|
|
13
|
+
} = useTimelinePreference(), {
|
|
14
|
+
mutate: saveTimelinePreference
|
|
15
|
+
} = useSaveTimelinePreference(), [selectedTypes, setSelectedTypesState] = useState();
|
|
16
|
+
useEffect(() => {
|
|
17
|
+
if (selectedTypes === void 0 && isFetchedTypes && isFetchedPreference) {
|
|
18
|
+
const preferredTypes = preference == null ? void 0 : preference.type;
|
|
19
|
+
setSelectedTypesState(preferredTypes && preferredTypes.length > 0 ? preferredTypes : notificationTypes ?? []);
|
|
20
|
+
}
|
|
21
|
+
}, [selectedTypes, isFetchedTypes, isFetchedPreference, preference, notificationTypes]);
|
|
22
|
+
const setSelectedTypes = (types) => {
|
|
23
|
+
setSelectedTypesState(types), saveTimelinePreference({
|
|
24
|
+
...preference,
|
|
25
|
+
type: types
|
|
26
|
+
});
|
|
27
|
+
}, {
|
|
9
28
|
data: notifications,
|
|
10
29
|
hasNextPage,
|
|
11
30
|
isLoading: isLoadingNotifications,
|
|
12
31
|
error: errorNotifications,
|
|
13
32
|
fetchNextPage
|
|
14
|
-
} = useNotifications(
|
|
33
|
+
} = useNotifications(selectedTypes ?? [], isFetchedTypes && !!selectedTypes);
|
|
15
34
|
return {
|
|
16
35
|
notifications,
|
|
17
36
|
notificationTypes,
|
|
37
|
+
selectedTypes,
|
|
38
|
+
setSelectedTypes,
|
|
18
39
|
hasNextPage,
|
|
19
40
|
loadNextPage: () => fetchNextPage(),
|
|
20
41
|
isLoading: isLoadingTypes || isLoadingNotifications,
|
|
21
42
|
error: errorTypes || errorNotifications
|
|
22
43
|
};
|
|
44
|
+
}, useHasNotificationToday = () => {
|
|
45
|
+
const {
|
|
46
|
+
dateIsToday
|
|
47
|
+
} = useDate(), {
|
|
48
|
+
data: notificationTypes,
|
|
49
|
+
isFetched: isFetchedTypes
|
|
50
|
+
} = useNotificationTypes(), {
|
|
51
|
+
data: notifications
|
|
52
|
+
} = useNotifications(notificationTypes ?? [], isFetchedTypes);
|
|
53
|
+
return (notifications == null ? void 0 : notifications.some((notification) => dateIsToday(notification.date))) ?? !1;
|
|
23
54
|
};
|
|
24
55
|
export {
|
|
56
|
+
useHasNotificationToday,
|
|
25
57
|
useNotificationListContainer
|
|
26
58
|
};
|
|
@@ -1,4 +1,6 @@
|
|
|
1
1
|
export declare const notificationService: {
|
|
2
2
|
getNotifications(types: string[], page: number): Promise<import('@edifice.io/client').NotificationModel[]>;
|
|
3
3
|
getNotificationTypes(): Promise<string[]>;
|
|
4
|
+
reportNotification(id: string): Promise<any>;
|
|
5
|
+
deleteNotification(id: string): Promise<any>;
|
|
4
6
|
};
|
package/dist/modules/homepage/components/Notifications/services/api/notificationService.d.ts
CHANGED
|
@@ -12,4 +12,12 @@ export declare const createNotificationService: (baseURL: string) => {
|
|
|
12
12
|
*/
|
|
13
13
|
getNotifications(types: string[], page: number): Promise<NotificationModel[]>;
|
|
14
14
|
getNotificationTypes(): Promise<string[]>;
|
|
15
|
+
/**
|
|
16
|
+
* Report a notification as inappropriate.
|
|
17
|
+
*/
|
|
18
|
+
reportNotification(id: string): Promise<any>;
|
|
19
|
+
/**
|
|
20
|
+
* Delete a notification.
|
|
21
|
+
*/
|
|
22
|
+
deleteNotification(id: string): Promise<any>;
|
|
15
23
|
};
|
|
@@ -14,6 +14,18 @@ const createNotificationService = (baseURL) => ({
|
|
|
14
14
|
},
|
|
15
15
|
getNotificationTypes() {
|
|
16
16
|
return odeServices.http().get(`${baseURL}/timeline/types`);
|
|
17
|
+
},
|
|
18
|
+
/**
|
|
19
|
+
* Report a notification as inappropriate.
|
|
20
|
+
*/
|
|
21
|
+
reportNotification(id) {
|
|
22
|
+
return odeServices.http().put(`${baseURL}/timeline/${id}/report`);
|
|
23
|
+
},
|
|
24
|
+
/**
|
|
25
|
+
* Delete a notification.
|
|
26
|
+
*/
|
|
27
|
+
deleteNotification(id) {
|
|
28
|
+
return odeServices.http().put(`${baseURL}/timeline/${id}`);
|
|
17
29
|
}
|
|
18
30
|
});
|
|
19
31
|
export {
|
|
@@ -1,14 +1,22 @@
|
|
|
1
1
|
import { NotificationModel } from '@edifice.io/client';
|
|
2
|
+
import { InfiniteData } from '@tanstack/react-query';
|
|
3
|
+
/** Shape of the `timeline` userbook preference (only `type` is read/written here). */
|
|
4
|
+
export interface TimelinePreference {
|
|
5
|
+
page?: number;
|
|
6
|
+
type: string[];
|
|
7
|
+
config?: Record<string, unknown>;
|
|
8
|
+
}
|
|
2
9
|
export declare const notificationQueryKeys: {
|
|
3
10
|
all: () => readonly ["notifications"];
|
|
4
11
|
notifications: (types?: string[]) => readonly ["notifications", "list", string[]];
|
|
5
12
|
types: () => readonly ["notifications", "types"];
|
|
13
|
+
preference: () => readonly ["notifications", "preference"];
|
|
6
14
|
};
|
|
7
15
|
export declare const notificationQueryOptions: {
|
|
8
16
|
getNotifications(types: string[], enabled: boolean): import('@tanstack/react-query').OmitKeyof<import('@tanstack/react-query').UseInfiniteQueryOptions<NotificationModel[], Error, NotificationModel[], NotificationModel[], readonly ["notifications", "list", string[]], number>, "queryFn"> & {
|
|
9
17
|
queryFn?: import('@tanstack/react-query').QueryFunction<NotificationModel[], readonly ["notifications", "list", string[]], number> | undefined;
|
|
10
18
|
} & {
|
|
11
|
-
queryKey: import('@tanstack/react-query').DataTag<readonly ["notifications", "list", string[]],
|
|
19
|
+
queryKey: import('@tanstack/react-query').DataTag<readonly ["notifications", "list", string[]], InfiniteData<NotificationModel[], unknown>>;
|
|
12
20
|
};
|
|
13
21
|
getNotificationTypes(): import('@tanstack/react-query').OmitKeyof<import('@tanstack/react-query').UseQueryOptions<string[], Error, string[], import('@tanstack/react-query').QueryKey>, "queryFn"> & {
|
|
14
22
|
queryFn?: import('@tanstack/react-query').QueryFunction<string[], import('@tanstack/react-query').QueryKey, never> | undefined;
|
|
@@ -18,3 +26,7 @@ export declare const notificationQueryOptions: {
|
|
|
18
26
|
};
|
|
19
27
|
export declare const useNotifications: (types?: string[], enabled?: boolean) => import('@tanstack/react-query').UseInfiniteQueryResult<NotificationModel[], Error>;
|
|
20
28
|
export declare const useNotificationTypes: () => import('@tanstack/react-query').UseQueryResult<string[], Error>;
|
|
29
|
+
export declare const useTimelinePreference: () => import('@tanstack/react-query').UseQueryResult<TimelinePreference, Error>;
|
|
30
|
+
export declare const useSaveTimelinePreference: () => import('@tanstack/react-query').UseMutationResult<void, Error, TimelinePreference, unknown>;
|
|
31
|
+
export declare const useReportNotification: () => import('@tanstack/react-query').UseMutationResult<any, Error, string, unknown>;
|
|
32
|
+
export declare const useDeleteNotification: () => import('@tanstack/react-query').UseMutationResult<any, Error, string, unknown>;
|
|
@@ -1,9 +1,11 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { odeServices } from "@edifice.io/client";
|
|
2
|
+
import { useQuery, useInfiniteQuery, useMutation, useQueryClient, queryOptions, infiniteQueryOptions } from "@tanstack/react-query";
|
|
2
3
|
import { notificationService } from "../api/index.js";
|
|
3
4
|
const notificationQueryKeys = {
|
|
4
5
|
all: () => ["notifications"],
|
|
5
6
|
notifications: (types = []) => [...notificationQueryKeys.all(), "list", types],
|
|
6
|
-
types: () => [...notificationQueryKeys.all(), "types"]
|
|
7
|
+
types: () => [...notificationQueryKeys.all(), "types"],
|
|
8
|
+
preference: () => [...notificationQueryKeys.all(), "preference"]
|
|
7
9
|
}, notificationQueryOptions = {
|
|
8
10
|
getNotifications(types, enabled) {
|
|
9
11
|
return infiniteQueryOptions({
|
|
@@ -31,10 +33,45 @@ const notificationQueryKeys = {
|
|
|
31
33
|
queryFn: async () => notificationService.getNotificationTypes()
|
|
32
34
|
});
|
|
33
35
|
}
|
|
34
|
-
}, useNotifications = (types = [], enabled = !0) => useInfiniteQuery(notificationQueryOptions.getNotifications(types, enabled)), useNotificationTypes = () => useQuery(notificationQueryOptions.getNotificationTypes())
|
|
36
|
+
}, useNotifications = (types = [], enabled = !0) => useInfiniteQuery(notificationQueryOptions.getNotifications(types, enabled)), useNotificationTypes = () => useQuery(notificationQueryOptions.getNotificationTypes()), useTimelinePreference = () => useQuery({
|
|
37
|
+
queryKey: notificationQueryKeys.preference(),
|
|
38
|
+
queryFn: () => odeServices.conf().getPreference("timeline")
|
|
39
|
+
}), useSaveTimelinePreference = () => {
|
|
40
|
+
const queryClient = useQueryClient();
|
|
41
|
+
return useMutation({
|
|
42
|
+
mutationFn: (preference) => odeServices.conf().savePreference("timeline", preference),
|
|
43
|
+
onSuccess: (_data, preference) => {
|
|
44
|
+
queryClient.setQueryData(notificationQueryKeys.preference(), preference);
|
|
45
|
+
},
|
|
46
|
+
onError: () => {
|
|
47
|
+
queryClient.invalidateQueries({
|
|
48
|
+
queryKey: notificationQueryKeys.preference()
|
|
49
|
+
});
|
|
50
|
+
}
|
|
51
|
+
});
|
|
52
|
+
}, useReportNotification = () => useMutation({
|
|
53
|
+
mutationFn: (id) => notificationService.reportNotification(id)
|
|
54
|
+
}), useDeleteNotification = () => {
|
|
55
|
+
const queryClient = useQueryClient();
|
|
56
|
+
return useMutation({
|
|
57
|
+
mutationFn: (id) => notificationService.deleteNotification(id),
|
|
58
|
+
onSuccess: (_data, id) => {
|
|
59
|
+
queryClient.setQueriesData({
|
|
60
|
+
queryKey: [...notificationQueryKeys.all(), "list"]
|
|
61
|
+
}, (data) => data && {
|
|
62
|
+
...data,
|
|
63
|
+
pages: data.pages.map((page) => page.filter((notification) => notification._id !== id))
|
|
64
|
+
});
|
|
65
|
+
}
|
|
66
|
+
});
|
|
67
|
+
};
|
|
35
68
|
export {
|
|
36
69
|
notificationQueryKeys,
|
|
37
70
|
notificationQueryOptions,
|
|
71
|
+
useDeleteNotification,
|
|
38
72
|
useNotificationTypes,
|
|
39
|
-
useNotifications
|
|
73
|
+
useNotifications,
|
|
74
|
+
useReportNotification,
|
|
75
|
+
useSaveTimelinePreference,
|
|
76
|
+
useTimelinePreference
|
|
40
77
|
};
|
|
@@ -1,10 +1,12 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { jsxs, jsx, Fragment } from "react/jsx-runtime";
|
|
2
2
|
import { useTranslation } from "react-i18next";
|
|
3
3
|
import SvgIconRafterUp from "../../../icons/components/IconRafterUp.js";
|
|
4
|
+
import SvgIconUserSearch from "../../../icons/components/IconUserSearch.js";
|
|
4
5
|
import useToggle from "../../../../hooks/useToggle/useToggle.js";
|
|
5
6
|
import Flex from "../../../../components/Flex/Flex.js";
|
|
6
7
|
import Dropdown from "../../../../components/Dropdown/Dropdown.js";
|
|
7
8
|
import IconButton from "../../../../components/Button/IconButton.js";
|
|
9
|
+
import ButtonBeta from "../../../../components/ButtonBeta/ButtonBeta.js";
|
|
8
10
|
import { getRotateTransitionStyle } from "../../../../utilities/rotate-transition-style/get-rotate-transition-style.js";
|
|
9
11
|
const SchoolSpace = ({
|
|
10
12
|
schools,
|
|
@@ -13,16 +15,23 @@ const SchoolSpace = ({
|
|
|
13
15
|
}) => {
|
|
14
16
|
const [isExpanded, toggleExpanded] = useToggle(!1), {
|
|
15
17
|
t
|
|
16
|
-
} = useTranslation()
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
/* @__PURE__ */ jsx(
|
|
24
|
-
|
|
25
|
-
|
|
18
|
+
} = useTranslation();
|
|
19
|
+
if (!selectedSchool) return null;
|
|
20
|
+
const hasManySchools = schools && schools.length > 1, directoryUrl = `/userbook/annuaire#/search?${new URLSearchParams({
|
|
21
|
+
structure: selectedSchool.id
|
|
22
|
+
}).toString()}`;
|
|
23
|
+
return /* @__PURE__ */ jsxs(Flex, { gap: "4", direction: "column", className: "school-space", children: [
|
|
24
|
+
/* @__PURE__ */ jsxs(Flex, { className: "school-space-container", justify: "center", gap: "4", align: "center", children: [
|
|
25
|
+
/* @__PURE__ */ jsx("b", { children: selectedSchool.name }),
|
|
26
|
+
hasManySchools && /* @__PURE__ */ jsx(Dropdown, { placement: "bottom-end", onToggle: toggleExpanded, children: (triggerProps) => /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
27
|
+
/* @__PURE__ */ jsx(IconButton, { ...triggerProps, "aria-label": t("show"), color: "tertiary", variant: "ghost", icon: /* @__PURE__ */ jsx(SvgIconRafterUp, { className: "w-16 min-w-0", style: getRotateTransitionStyle(isExpanded, {
|
|
28
|
+
degrees: 180
|
|
29
|
+
}) }) }),
|
|
30
|
+
/* @__PURE__ */ jsx(Dropdown.Menu, { children: schools.map((school) => /* @__PURE__ */ jsx(Dropdown.Item, { onClick: () => onSelectedSchoolChange == null ? void 0 : onSelectedSchoolChange(school), children: /* @__PURE__ */ jsx(Flex, { direction: "column", children: /* @__PURE__ */ jsx("p", { children: school.name }) }) }, school.id)) })
|
|
31
|
+
] }) })
|
|
32
|
+
] }),
|
|
33
|
+
/* @__PURE__ */ jsx(ButtonBeta, { variant: "outline", className: "school-space-directory-button", leftIcon: /* @__PURE__ */ jsx(SvgIconUserSearch, {}), onClick: () => window.location.href = directoryUrl, children: t("homepage.school-space.directory") })
|
|
34
|
+
] });
|
|
26
35
|
};
|
|
27
36
|
export {
|
|
28
37
|
SchoolSpace as default
|
|
@@ -1,8 +1,11 @@
|
|
|
1
1
|
import { jsxs, jsx } from "react/jsx-runtime";
|
|
2
2
|
import { useTranslation } from "react-i18next";
|
|
3
|
+
import SvgIconClass from "../../../icons/components/IconClass.js";
|
|
4
|
+
import { useProfileLinks } from "./hooks/useProfileLinks.js";
|
|
3
5
|
import HomeCard from "../HomeCard/HomeCard.js";
|
|
4
6
|
import Flex from "../../../../components/Flex/Flex.js";
|
|
5
7
|
import Avatar from "../../../../components/Avatar/Avatar.js";
|
|
8
|
+
import ButtonBeta from "../../../../components/ButtonBeta/ButtonBeta.js";
|
|
6
9
|
function UserSpace({
|
|
7
10
|
name,
|
|
8
11
|
avatar,
|
|
@@ -11,8 +14,8 @@ function UserSpace({
|
|
|
11
14
|
}) {
|
|
12
15
|
const {
|
|
13
16
|
t
|
|
14
|
-
} = useTranslation();
|
|
15
|
-
return /* @__PURE__ */ jsxs(HomeCard, { variant: "user", children: [
|
|
17
|
+
} = useTranslation(), links = useProfileLinks(profile);
|
|
18
|
+
return /* @__PURE__ */ jsxs(HomeCard, { variant: "user", footer: !!links && /* @__PURE__ */ jsx(Flex, { children: links.map((link, index) => /* @__PURE__ */ jsx(ButtonBeta, { size: "sm", variant: "ghost", leftIcon: /* @__PURE__ */ jsx(SvgIconClass, {}), onClick: () => window.location.href = link.url, children: link.text }, `${link.url}-${index}`)) }), children: [
|
|
16
19
|
/* @__PURE__ */ jsxs(Flex, { className: "user-space", direction: "row", gap: "8", children: [
|
|
17
20
|
/* @__PURE__ */ jsx(Avatar, { className: "user-space--avatar", size: "auto", alt: name, src: avatar, variant: "circle" }),
|
|
18
21
|
/* @__PURE__ */ jsxs(Flex, { direction: "column", children: [
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { Child, StructureChildren } from '@edifice.io/client';
|
|
2
|
+
export declare const childrenQueryKeys: {
|
|
3
|
+
all: (userId: string) => readonly ["children", string];
|
|
4
|
+
};
|
|
5
|
+
export declare const childrenQueryOptions: (userId: string | undefined, enabled: boolean) => import('@tanstack/react-query').OmitKeyof<import('@tanstack/react-query').UseQueryOptions<StructureChildren[], Error, Child[], import('@tanstack/react-query').QueryKey>, "queryFn"> & {
|
|
6
|
+
queryFn?: import('@tanstack/react-query').QueryFunction<StructureChildren[], import('@tanstack/react-query').QueryKey, never> | undefined;
|
|
7
|
+
} & {
|
|
8
|
+
queryKey: import('@tanstack/react-query').DataTag<import('@tanstack/react-query').QueryKey, StructureChildren[]>;
|
|
9
|
+
};
|
|
10
|
+
/**
|
|
11
|
+
* Fetches the children of a "Relative" user across all their structures,
|
|
12
|
+
* merged into a single list.
|
|
13
|
+
*/
|
|
14
|
+
export declare function useChildren(userId: string | undefined, enabled: boolean): import('@tanstack/react-query').UseQueryResult<Child[], Error>;
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { odeServices } from "@edifice.io/client";
|
|
2
|
+
import { useQuery, queryOptions } from "@tanstack/react-query";
|
|
3
|
+
const childrenQueryKeys = {
|
|
4
|
+
all: (userId) => ["children", userId]
|
|
5
|
+
};
|
|
6
|
+
function flattenChildrenByStructure(structures) {
|
|
7
|
+
const seenIds = /* @__PURE__ */ new Set();
|
|
8
|
+
return structures.flatMap((structure) => structure.children).filter((child) => seenIds.has(child.id) ? !1 : (seenIds.add(child.id), !0));
|
|
9
|
+
}
|
|
10
|
+
const childrenQueryOptions = (userId, enabled) => queryOptions({
|
|
11
|
+
queryKey: childrenQueryKeys.all(userId ?? ""),
|
|
12
|
+
queryFn: () => odeServices.directory().getChildren(userId),
|
|
13
|
+
enabled: enabled && !!userId,
|
|
14
|
+
select: flattenChildrenByStructure
|
|
15
|
+
});
|
|
16
|
+
function useChildren(userId, enabled) {
|
|
17
|
+
return useQuery(childrenQueryOptions(userId, enabled));
|
|
18
|
+
}
|
|
19
|
+
export {
|
|
20
|
+
childrenQueryKeys,
|
|
21
|
+
childrenQueryOptions,
|
|
22
|
+
useChildren
|
|
23
|
+
};
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { UserProfile } from '@edifice.io/client';
|
|
2
|
+
type ProfileLink = {
|
|
3
|
+
url: string;
|
|
4
|
+
text: string;
|
|
5
|
+
};
|
|
6
|
+
/** Generates user's links to show in the UserSpace home component. */
|
|
7
|
+
export declare function useProfileLinks(profile: UserProfile[number]): Array<ProfileLink> | undefined;
|
|
8
|
+
export {};
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
import { useTranslation } from "react-i18next";
|
|
2
|
+
import { useEdificeClient } from "../../../../../providers/EdificeClientProvider/EdificeClientProvider.hook.js";
|
|
3
|
+
import { useChildren } from "./useChildren.js";
|
|
4
|
+
function useProfileLinks(profile) {
|
|
5
|
+
var _a;
|
|
6
|
+
const {
|
|
7
|
+
user
|
|
8
|
+
} = useEdificeClient(), {
|
|
9
|
+
t
|
|
10
|
+
} = useTranslation(), isRelative = profile === "Relative", {
|
|
11
|
+
data: children
|
|
12
|
+
} = useChildren(user == null ? void 0 : user.userId, isRelative), structureId = (_a = user == null ? void 0 : user.structures) == null ? void 0 : _a[0];
|
|
13
|
+
if (structureId && profile) {
|
|
14
|
+
const baseUrl = "/userbook/annuaire#/search", buildStructureGroupsUrl = () => {
|
|
15
|
+
const params = new URLSearchParams({
|
|
16
|
+
filters: "groups",
|
|
17
|
+
structure: structureId
|
|
18
|
+
});
|
|
19
|
+
return `${baseUrl}?${params.toString()}`;
|
|
20
|
+
}, buildClassesUrl = (classIds = []) => {
|
|
21
|
+
const params = new URLSearchParams({
|
|
22
|
+
filters: "groups",
|
|
23
|
+
structure: structureId
|
|
24
|
+
});
|
|
25
|
+
return classIds.forEach((c) => params.append("class", String(c))), `${baseUrl}?${params.toString()}`;
|
|
26
|
+
};
|
|
27
|
+
switch (profile) {
|
|
28
|
+
case "Teacher":
|
|
29
|
+
return [{
|
|
30
|
+
text: t("homepage.userspace.teacher.link.classes"),
|
|
31
|
+
url: buildClassesUrl(user.classes)
|
|
32
|
+
}];
|
|
33
|
+
case "Student":
|
|
34
|
+
return [{
|
|
35
|
+
text: t("homepage.userspace.student.link.teachers"),
|
|
36
|
+
url: "/userbook/annuaire#/search?filters=groups&profile=Teacher"
|
|
37
|
+
}, {
|
|
38
|
+
text: t("homepage.userspace.student.link.classes"),
|
|
39
|
+
url: buildClassesUrl(user.classes)
|
|
40
|
+
}];
|
|
41
|
+
case "Relative":
|
|
42
|
+
return children != null && children.length ? children.map((child) => {
|
|
43
|
+
var _a2;
|
|
44
|
+
return {
|
|
45
|
+
text: t("homepage.userspace.relative.link.classes", {
|
|
46
|
+
childName: child.firstName
|
|
47
|
+
}),
|
|
48
|
+
url: buildClassesUrl((_a2 = child.classes) == null ? void 0 : _a2.map(({
|
|
49
|
+
id
|
|
50
|
+
}) => id))
|
|
51
|
+
};
|
|
52
|
+
}) : void 0;
|
|
53
|
+
case "Personnel":
|
|
54
|
+
return [{
|
|
55
|
+
text: t("homepage.userspace.personnel.link.classesAndGroups"),
|
|
56
|
+
url: buildStructureGroupsUrl()
|
|
57
|
+
}];
|
|
58
|
+
case "Guest":
|
|
59
|
+
return;
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
export {
|
|
64
|
+
useProfileLinks
|
|
65
|
+
};
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { SVGProps } from 'react';
|
|
2
|
+
interface SVGRProps {
|
|
3
|
+
title?: string;
|
|
4
|
+
titleId?: string;
|
|
5
|
+
}
|
|
6
|
+
declare const SvgIconClass: ({ title, titleId, ...props }: SVGProps<SVGSVGElement> & SVGRProps) => import("react/jsx-runtime").JSX.Element;
|
|
7
|
+
export default SvgIconClass;
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { jsxs, jsx } from "react/jsx-runtime";
|
|
2
|
+
const SvgIconClass = ({
|
|
3
|
+
title,
|
|
4
|
+
titleId,
|
|
5
|
+
...props
|
|
6
|
+
}) => /* @__PURE__ */ jsxs("svg", { xmlns: "http://www.w3.org/2000/svg", width: "24", height: "24", fill: "none", viewBox: "0 0 24 24", "aria-hidden": "true", "aria-labelledby": titleId, ...props, children: [
|
|
7
|
+
title ? /* @__PURE__ */ jsx("title", { id: titleId, children: title }) : null,
|
|
8
|
+
/* @__PURE__ */ jsx("path", { fill: "currentColor", fillRule: "evenodd", d: "M2.074 17.258c.707-.837 1.705-1.349 2.79-1.349h5.727c1.085 0 2.083.512 2.79 1.35.701.831 1.073 1.928 1.073 3.044V22a1 1 0 1 1-2 0v-1.697c0-.684-.23-1.314-.603-1.755-.367-.436-.826-.639-1.26-.639H4.864c-.434 0-.893.203-1.261.64-.372.44-.603 1.07-.603 1.754V22a1 1 0 1 1-2 0v-1.697c0-1.116.372-2.213 1.074-3.045M7.728 8.5a2.182 2.182 0 1 0 0 4.364 2.182 2.182 0 0 0 0-4.364m-4.182 2.182a4.182 4.182 0 1 1 8.364 0 4.182 4.182 0 0 1-8.364 0", clipRule: "evenodd" }),
|
|
9
|
+
/* @__PURE__ */ jsx("path", { fill: "currentColor", fillRule: "evenodd", d: "M0 5a3 3 0 0 1 3-3h18a3 3 0 0 1 3 3v11a3 3 0 0 1-3 3h-5a1 1 0 1 1 0-2h5a1 1 0 0 0 1-1V5a1 1 0 0 0-1-1H3a1 1 0 0 0-1 1v10a1 1 0 1 1-2 0z", clipRule: "evenodd" })
|
|
10
|
+
] });
|
|
11
|
+
export {
|
|
12
|
+
SvgIconClass as default
|
|
13
|
+
};
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { SVGProps } from 'react';
|
|
2
|
+
interface SVGRProps {
|
|
3
|
+
title?: string;
|
|
4
|
+
titleId?: string;
|
|
5
|
+
}
|
|
6
|
+
declare const SvgIconNextcloudDeck: ({ title, titleId, ...props }: SVGProps<SVGSVGElement> & SVGRProps) => import("react/jsx-runtime").JSX.Element;
|
|
7
|
+
export default SvgIconNextcloudDeck;
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { jsxs, jsx } from "react/jsx-runtime";
|
|
2
|
+
const SvgIconNextcloudDeck = ({
|
|
3
|
+
title,
|
|
4
|
+
titleId,
|
|
5
|
+
...props
|
|
6
|
+
}) => /* @__PURE__ */ jsxs("svg", { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 32 32", width: "24", height: "24", "aria-hidden": "true", "aria-labelledby": titleId, ...props, children: [
|
|
7
|
+
title ? /* @__PURE__ */ jsx("title", { id: titleId, children: title }) : null,
|
|
8
|
+
/* @__PURE__ */ jsx("path", { d: "M5.1 14.2h21.7c1 0 1.8.8 1.8 1.8v10.9c0 1-.8 1.8-1.8 1.8H5.1c-1 0-1.8-.8-1.8-1.8V16c0-1 .8-1.8 1.8-1.8m.9-3.6h20c.5 0 .9.4.9.9s-.4.9-.9.9H6c-.5 0-.9-.4-.9-.9s.4-.9.9-.9M7.9 7h16.3c.4 0 .8.4.8.9s-.4.9-.9.9H7.9c-.5 0-.9-.4-.9-.9s.4-.9.9-.9m1.8-3.7h12.7c.5 0 .9.4.9.9s-.4.9-.9.9H9.7c-.5 0-.9-.4-.9-.9s.4-.9.9-.9", style: {
|
|
9
|
+
fill: "#4a4a4a"
|
|
10
|
+
} })
|
|
11
|
+
] });
|
|
12
|
+
export {
|
|
13
|
+
SvgIconNextcloudDeck as default
|
|
14
|
+
};
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { SVGProps } from 'react';
|
|
2
|
+
interface SVGRProps {
|
|
3
|
+
title?: string;
|
|
4
|
+
titleId?: string;
|
|
5
|
+
}
|
|
6
|
+
declare const SvgIconNextcloudFiles: ({ title, titleId, ...props }: SVGProps<SVGSVGElement> & SVGRProps) => import("react/jsx-runtime").JSX.Element;
|
|
7
|
+
export default SvgIconNextcloudFiles;
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { jsxs, jsx } from "react/jsx-runtime";
|
|
2
|
+
const SvgIconNextcloudFiles = ({
|
|
3
|
+
title,
|
|
4
|
+
titleId,
|
|
5
|
+
...props
|
|
6
|
+
}) => /* @__PURE__ */ jsxs("svg", { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 32 32", width: "24", height: "24", "aria-hidden": "true", "aria-labelledby": titleId, ...props, children: [
|
|
7
|
+
title ? /* @__PURE__ */ jsx("title", { id: titleId, children: title }) : null,
|
|
8
|
+
/* @__PURE__ */ jsx("path", { d: "M13.5 6.1H6.1c-1.4 0-2.5 1.1-2.5 2.5v14.9c0 1.4 1.1 2.5 2.5 2.5H26c1.4 0 2.5-1.1 2.5-2.5V11c0-1.4-1.1-2.5-2.5-2.5H16z", style: {
|
|
9
|
+
fill: "#4a4a4a"
|
|
10
|
+
} })
|
|
11
|
+
] });
|
|
12
|
+
export {
|
|
13
|
+
SvgIconNextcloudFiles as default
|
|
14
|
+
};
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { SVGProps } from 'react';
|
|
2
|
+
interface SVGRProps {
|
|
3
|
+
title?: string;
|
|
4
|
+
titleId?: string;
|
|
5
|
+
}
|
|
6
|
+
declare const SvgIconNextcloudForms: ({ title, titleId, ...props }: SVGProps<SVGSVGElement> & SVGRProps) => import("react/jsx-runtime").JSX.Element;
|
|
7
|
+
export default SvgIconNextcloudForms;
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { jsxs, jsx } from "react/jsx-runtime";
|
|
2
|
+
const SvgIconNextcloudForms = ({
|
|
3
|
+
title,
|
|
4
|
+
titleId,
|
|
5
|
+
...props
|
|
6
|
+
}) => /* @__PURE__ */ jsxs("svg", { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 512 512", width: "24", height: "24", "aria-hidden": "true", "aria-labelledby": titleId, ...props, children: [
|
|
7
|
+
title ? /* @__PURE__ */ jsx("title", { id: titleId, children: title }) : null,
|
|
8
|
+
/* @__PURE__ */ jsx("path", { d: "M209.3 365.1V334h186.9v31.1zm0-93.5v-31.1h186.9v31.1zm0-93.5V147h186.9v31.1zm-62.4 202.5c-8.6 0-15.9-3-21.9-9.2-5.9-5.8-9.3-13.7-9.2-22 0-8.6 3-15.9 9.2-21.9 5.8-5.9 13.6-9.3 21.9-9.2 8.6 0 15.9 3 22 9.2 6 6 9.2 13.4 9.2 21.9.1 8.3-3.2 16.3-9.2 22-5.7 6-13.7 9.3-22 9.2m0-93.5c-8.6 0-15.9-3-21.9-9.2-5.9-5.8-9.3-13.7-9.2-22 0-8.6 3-15.9 9.2-22 5.8-5.9 13.6-9.3 21.9-9.2 8.6 0 15.9 3 22 9.2 6 6.1 9.2 13.4 9.2 22 .1 8.3-3.2 16.3-9.2 22-5.7 6.1-13.7 9.4-22 9.2m0-93.4c-8.6 0-15.9-3-21.9-9.2-5.9-5.8-9.3-13.6-9.2-21.9 0-8.6 3-15.9 9.2-22 5.8-5.9 13.6-9.3 21.9-9.2 8.6 0 15.9 3 22 9.2 6 6.1 9.2 13.4 9.2 22s-3 15.9-9.2 21.9c-5.7 6-13.7 9.4-22 9.2", style: {
|
|
9
|
+
fill: "#4a4a4a"
|
|
10
|
+
} })
|
|
11
|
+
] });
|
|
12
|
+
export {
|
|
13
|
+
SvgIconNextcloudForms as default
|
|
14
|
+
};
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { SVGProps } from 'react';
|
|
2
|
+
interface SVGRProps {
|
|
3
|
+
title?: string;
|
|
4
|
+
titleId?: string;
|
|
5
|
+
}
|
|
6
|
+
declare const SvgIconNextcloudNotes: ({ title, titleId, ...props }: SVGProps<SVGSVGElement> & SVGRProps) => import("react/jsx-runtime").JSX.Element;
|
|
7
|
+
export default SvgIconNextcloudNotes;
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { jsxs, jsx } from "react/jsx-runtime";
|
|
2
|
+
const SvgIconNextcloudNotes = ({
|
|
3
|
+
title,
|
|
4
|
+
titleId,
|
|
5
|
+
...props
|
|
6
|
+
}) => /* @__PURE__ */ jsxs("svg", { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 128 128", width: "24", height: "24", "aria-hidden": "true", "aria-labelledby": titleId, ...props, children: [
|
|
7
|
+
title ? /* @__PURE__ */ jsx("title", { id: titleId, children: title }) : null,
|
|
8
|
+
/* @__PURE__ */ jsx("path", { d: "M15 94.2V115h20.8l61.4-61.4-20.8-20.9zm98.4-56.7c2.2-2.2 2.2-5.7 0-7.8l-13-13c-2.2-2.2-5.7-2.2-7.8 0L82.4 26.8l20.8 20.8z", style: {
|
|
9
|
+
fill: "#4a4a4a"
|
|
10
|
+
} })
|
|
11
|
+
] });
|
|
12
|
+
export {
|
|
13
|
+
SvgIconNextcloudNotes as default
|
|
14
|
+
};
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { SVGProps } from 'react';
|
|
2
|
+
interface SVGRProps {
|
|
3
|
+
title?: string;
|
|
4
|
+
titleId?: string;
|
|
5
|
+
}
|
|
6
|
+
declare const SvgIconNextcloudTalk: ({ title, titleId, ...props }: SVGProps<SVGSVGElement> & SVGRProps) => import("react/jsx-runtime").JSX.Element;
|
|
7
|
+
export default SvgIconNextcloudTalk;
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { jsxs, jsx } from "react/jsx-runtime";
|
|
2
|
+
const SvgIconNextcloudTalk = ({
|
|
3
|
+
title,
|
|
4
|
+
titleId,
|
|
5
|
+
...props
|
|
6
|
+
}) => /* @__PURE__ */ jsxs("svg", { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 16 16", width: "24", height: "24", "aria-hidden": "true", "aria-labelledby": titleId, ...props, children: [
|
|
7
|
+
title ? /* @__PURE__ */ jsx("title", { id: titleId, children: title }) : null,
|
|
8
|
+
/* @__PURE__ */ jsx("path", { d: "M8 1C4.1 1 1 4.1 1 8s3.1 7 7 7c1.3 0 2.5-.4 3.6-1 .9.3 2.8 1.4 3.2.9.5-.5-.6-2.6-.8-3.4.6-1.1.9-2.3.9-3.5 0-3.9-3.1-7-7-7Zm0 2.7c2.4 0 4.3 1.9 4.3 4.3s-1.9 4.3-4.3 4.3S3.7 10.4 3.7 8 5.6 3.7 8 3.7", style: {
|
|
9
|
+
fill: "#4a4a4a"
|
|
10
|
+
} })
|
|
11
|
+
] });
|
|
12
|
+
export {
|
|
13
|
+
SvgIconNextcloudTalk as default
|
|
14
|
+
};
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { SVGProps } from 'react';
|
|
2
|
+
interface SVGRProps {
|
|
3
|
+
title?: string;
|
|
4
|
+
titleId?: string;
|
|
5
|
+
}
|
|
6
|
+
declare const SvgIconPeertube: ({ title, titleId, ...props }: SVGProps<SVGSVGElement> & SVGRProps) => import("react/jsx-runtime").JSX.Element;
|
|
7
|
+
export default SvgIconPeertube;
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { jsxs, jsx } from "react/jsx-runtime";
|
|
2
|
+
const SvgIconPeertube = ({
|
|
3
|
+
title,
|
|
4
|
+
titleId,
|
|
5
|
+
...props
|
|
6
|
+
}) => /* @__PURE__ */ jsxs("svg", { xmlns: "http://www.w3.org/2000/svg", xmlSpace: "preserve", viewBox: "69.8 0 372.4 512", width: "24", height: "24", "aria-hidden": "true", "aria-labelledby": titleId, ...props, children: [
|
|
7
|
+
title ? /* @__PURE__ */ jsx("title", { id: titleId, children: title }) : null,
|
|
8
|
+
/* @__PURE__ */ jsx("path", { d: "M69.8 0v256L256 139.6", style: {
|
|
9
|
+
fill: "#211f20"
|
|
10
|
+
} }),
|
|
11
|
+
/* @__PURE__ */ jsx("path", { d: "M69.8 256v256L256 372.4", style: {
|
|
12
|
+
fill: "#737373"
|
|
13
|
+
} }),
|
|
14
|
+
/* @__PURE__ */ jsx("path", { d: "M256 139.6v232.7L442.2 256", style: {
|
|
15
|
+
fill: "#f1680d"
|
|
16
|
+
} }),
|
|
17
|
+
/* @__PURE__ */ jsx("path", { d: "M256 372.4V139.6L69.8 256z" })
|
|
18
|
+
] });
|
|
19
|
+
export {
|
|
20
|
+
SvgIconPeertube as default
|
|
21
|
+
};
|
|
@@ -75,6 +75,11 @@ export { default as IconMuseefrancaisphoto } from './IconMuseefrancaisphoto';
|
|
|
75
75
|
export { default as IconMyNetwork } from './IconMyNetwork';
|
|
76
76
|
export { default as IconNabook } from './IconNabook';
|
|
77
77
|
export { default as IconNetvibes } from './IconNetvibes';
|
|
78
|
+
export { default as IconNextcloudDeck } from './IconNextcloudDeck';
|
|
79
|
+
export { default as IconNextcloudFiles } from './IconNextcloudFiles';
|
|
80
|
+
export { default as IconNextcloudForms } from './IconNextcloudForms';
|
|
81
|
+
export { default as IconNextcloudNotes } from './IconNextcloudNotes';
|
|
82
|
+
export { default as IconNextcloudTalk } from './IconNextcloudTalk';
|
|
78
83
|
export { default as IconNote } from './IconNote';
|
|
79
84
|
export { default as IconNotebook } from './IconNotebook';
|
|
80
85
|
export { default as IconNotes } from './IconNotes';
|
|
@@ -87,6 +92,7 @@ export { default as IconParametrages } from './IconParametrages';
|
|
|
87
92
|
export { default as IconParaschool } from './IconParaschool';
|
|
88
93
|
export { default as IconParcours } from './IconParcours';
|
|
89
94
|
export { default as IconPearltrees } from './IconPearltrees';
|
|
95
|
+
export { default as IconPeertube } from './IconPeertube';
|
|
90
96
|
export { default as IconPicardieCursus } from './IconPicardieCursus';
|
|
91
97
|
export { default as IconPlaceholder } from './IconPlaceholder';
|
|
92
98
|
export { default as IconPoll } from './IconPoll';
|
|
@@ -30,6 +30,7 @@ export { default as IconCantoo } from './IconCantoo';
|
|
|
30
30
|
export { default as IconCenter } from './IconCenter';
|
|
31
31
|
export { default as IconCheck } from './IconCheck';
|
|
32
32
|
export { default as IconChecklist } from './IconChecklist';
|
|
33
|
+
export { default as IconClass } from './IconClass';
|
|
33
34
|
export { default as IconClockAlert } from './IconClockAlert';
|
|
34
35
|
export { default as IconClock } from './IconClock';
|
|
35
36
|
export { default as IconCloseFullScreen } from './IconCloseFullScreen';
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { WorkspaceElement, WorkspaceVisibility } from '@edifice.io/client';
|
|
2
2
|
import { TabsItemProps } from '../../../components';
|
|
3
3
|
import { ExternalLinkTabProps } from './innertabs/ExternalLink';
|
|
4
4
|
import { InternalLinkTabProps, InternalLinkTabResult } from './innertabs/InternalLink';
|
|
@@ -54,7 +54,7 @@ export interface MediaLibraryRef {
|
|
|
54
54
|
/**
|
|
55
55
|
* The resulting type depends on the actual selected Tab when modal is closed.
|
|
56
56
|
*/
|
|
57
|
-
export type MediaLibraryResult = WorkspaceElement[] | WorkspaceElement |
|
|
57
|
+
export type MediaLibraryResult = WorkspaceElement[] | WorkspaceElement | InternalLinkTabResult | string | /*TODO type des autres résultats ?*/ any;
|
|
58
58
|
/**
|
|
59
59
|
* MediaLibrary component properties
|
|
60
60
|
*/
|