@edifice.io/react 2.6.2-develop-integration.20260820103059 → 2.6.2-develop-integration-crna.20260820104716

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (50) hide show
  1. package/dist/components/Alert/Alert.js +1 -1
  2. package/dist/components/DatePicker/DatePicker.d.ts +5 -0
  3. package/dist/components/DatePicker/DatePicker.js +2 -0
  4. package/dist/components/Layout/Layout.js +5 -3
  5. package/dist/hooks/index.d.ts +0 -1
  6. package/dist/icons.js +340 -338
  7. package/dist/index.js +146 -152
  8. package/dist/modules/homepage/components/Communities/Communities.d.ts +10 -0
  9. package/dist/modules/homepage/components/Communities/CommunitiesContainer.d.ts +9 -0
  10. package/dist/modules/homepage/components/Communities/CommunitiesSkeleton.d.ts +5 -0
  11. package/dist/modules/homepage/components/Communities/CommunityItem.d.ts +11 -0
  12. package/dist/modules/homepage/components/Communities/index.d.ts +8 -0
  13. package/dist/modules/homepage/components/Communities/useCommunities.d.ts +13 -0
  14. package/dist/modules/homepage/components/Favorites/Favorites.js +1 -1
  15. package/dist/modules/homepage/components/HomeCard/HomeCard.d.ts +5 -1
  16. package/dist/modules/homepage/components/HomeCard/HomeCard.js +10 -2
  17. package/dist/modules/homepage/components/LastInfos/LastInfosList.js +2 -2
  18. package/dist/modules/homepage/components/Notifications/NotificationList.js +2 -2
  19. package/dist/modules/homepage/components/Notifications/components/NotificationItemResource.d.ts +2 -1
  20. package/dist/modules/homepage/components/Notifications/components/NotificationItemResource.js +3 -2
  21. package/dist/modules/homepage/components/Notifications/components/UserNotificationItem.js +1 -1
  22. package/dist/modules/homepage/components/Notifications/components/notificationAdapter.d.ts +21 -7
  23. package/dist/modules/homepage/components/Notifications/components/notificationAdapter.js +26 -13
  24. package/dist/modules/homepage/components/SchoolSpace/SchoolSpace.js +20 -11
  25. package/dist/modules/homepage/components/UserSpace/UserSpace.js +5 -2
  26. package/dist/modules/homepage/components/UserSpace/hooks/useChildren.d.ts +14 -0
  27. package/dist/modules/homepage/components/UserSpace/hooks/useChildren.js +23 -0
  28. package/dist/modules/homepage/components/UserSpace/hooks/useProfileLinks.d.ts +8 -0
  29. package/dist/modules/homepage/components/UserSpace/hooks/useProfileLinks.js +65 -0
  30. package/dist/modules/icons/components/IconClass.d.ts +7 -0
  31. package/dist/modules/icons/components/IconClass.js +13 -0
  32. package/dist/modules/icons/components/index.d.ts +1 -0
  33. package/dist/modules/multimedia/FileCard/index.d.ts +0 -2
  34. package/dist/modules/multimedia/MediaLibrary/MediaLibrary.d.ts +2 -2
  35. package/dist/modules/multimedia/MediaLibrary/MediaLibrary.js +7 -20
  36. package/dist/modules/multimedia/MediaLibrary/innertabs/index.d.ts +0 -1
  37. package/dist/modules/multimedia/MediaLibrary/innertabs/index.js +0 -2
  38. package/dist/modules/multimedia/index.d.ts +0 -1
  39. package/dist/multimedia.js +12 -16
  40. package/package.json +6 -6
  41. package/dist/hooks/useNextcloudSearch/index.d.ts +0 -1
  42. package/dist/hooks/useNextcloudSearch/useNextcloudSearch.d.ts +0 -12
  43. package/dist/hooks/useNextcloudSearch/useNextcloudSearch.js +0 -56
  44. package/dist/modules/multimedia/FileCard/NextcloudFileCard.d.ts +0 -25
  45. package/dist/modules/multimedia/FileCard/NextcloudFileCard.js +0 -105
  46. package/dist/modules/multimedia/MediaLibrary/innertabs/Nextcloud.d.ts +0 -1
  47. package/dist/modules/multimedia/MediaLibrary/innertabs/Nextcloud.js +0 -35
  48. package/dist/modules/multimedia/Nextcloud/Nextcloud.d.ts +0 -24
  49. package/dist/modules/multimedia/Nextcloud/Nextcloud.js +0 -109
  50. package/dist/modules/multimedia/Nextcloud/index.d.ts +0 -2
@@ -1,105 +0,0 @@
1
- import { jsx, jsxs } from "react/jsx-runtime";
2
- import { useRef } from "react";
3
- import { DocumentHelper, odeServices } from "@edifice.io/client";
4
- import clsx from "clsx";
5
- import SvgIconLandscape from "../../icons/components/IconLandscape.js";
6
- import SvgIconMic from "../../icons/components/IconMic.js";
7
- import SvgIconTextPage from "../../icons/components/IconTextPage.js";
8
- import SvgIconVideo from "../../icons/components/IconVideo.js";
9
- import FileIcon from "./FileIcon.js";
10
- import useThumbnail from "../../../hooks/useThumbnail/useThumbnail.js";
11
- import Card from "../../../components/Card/Card.js";
12
- const NextcloudFileCard = ({
13
- doc,
14
- userId,
15
- isClickable = !0,
16
- isSelectable = !1,
17
- isSelected = !1,
18
- onClick,
19
- className,
20
- onSelect,
21
- isFocused,
22
- app,
23
- customIcon,
24
- customColor
25
- }) => {
26
- const ref = useRef(null), type = DocumentHelper.role(doc.contentType, !1);
27
- function getRoleMap(type2) {
28
- if (customIcon !== void 0 || customColor !== void 0)
29
- return {
30
- icon: customIcon || /* @__PURE__ */ jsx(SvgIconTextPage, { width: 22, height: 22 }),
31
- color: customColor || "bg-gray-300",
32
- hasShadow: !1
33
- };
34
- const roleMappings = {
35
- csv: {
36
- icon: ".CSV",
37
- color: "bg-orange-200"
38
- },
39
- xls: {
40
- icon: ".XLS",
41
- color: "bg-green-200"
42
- },
43
- doc: {
44
- icon: ".DOC",
45
- color: "bg-blue-200"
46
- },
47
- txt: {
48
- icon: ".TXT",
49
- color: "bg-blue-200"
50
- },
51
- pdf: {
52
- icon: ".PDF",
53
- color: "bg-red-200"
54
- },
55
- audio: {
56
- icon: /* @__PURE__ */ jsx(SvgIconMic, { width: 22, height: 22 }),
57
- color: "bg-red-200"
58
- },
59
- ppt: {
60
- icon: ".PPT",
61
- color: "bg-red-200"
62
- },
63
- img: {
64
- icon: /* @__PURE__ */ jsx(SvgIconLandscape, { width: 22, height: 22 }),
65
- color: "bg-green-200"
66
- },
67
- video: {
68
- icon: /* @__PURE__ */ jsx(SvgIconVideo, { width: 22, height: 22 }),
69
- color: "bg-purple-200"
70
- },
71
- zip: {
72
- icon: ".ZIP",
73
- color: "bg-gray-300"
74
- },
75
- md: {
76
- icon: ".MD",
77
- color: "bg-blue-200"
78
- },
79
- unknown: {
80
- icon: /* @__PURE__ */ jsx(SvgIconTextPage, { width: 22, height: 22 }),
81
- color: "bg-gray-300"
82
- }
83
- };
84
- return roleMappings[type2] || roleMappings.unknown;
85
- }
86
- const roleMap = getRoleMap(type ?? "unknown"), file = clsx("file position-relative rounded", (roleMap == null ? void 0 : roleMap.color) ?? "bg-yellow-200"), mediaSrc = type === "img" ? odeServices.nextcloud().getFileUrl(userId, doc) : null, hasThumbnail = useThumbnail(mediaSrc, {
87
- ref
88
- }), imageStyles = hasThumbnail && {
89
- backgroundImage: `url(${mediaSrc})`,
90
- backgroundSize: "cover"
91
- };
92
- return /* @__PURE__ */ jsx(Card, { className: clsx("card-file", className), isClickable, isSelectable, isSelected, onClick, app, isFocused, onSelect, children: /* @__PURE__ */ jsxs(Card.Body, { space: "8", children: [
93
- /* @__PURE__ */ jsx("div", { ref, className: file, style: {
94
- aspectRatio: "16/10",
95
- ...imageStyles
96
- }, children: type !== "img" || type === "img" && !hasThumbnail ? /* @__PURE__ */ jsx(FileIcon, { type, roleMap }) : null }),
97
- /* @__PURE__ */ jsxs("div", { className: "mt-4", children: [
98
- /* @__PURE__ */ jsx(Card.Text, { children: doc.name }),
99
- /* @__PURE__ */ jsx(Card.Text, { className: "text-black-50", children: doc == null ? void 0 : doc.ownerDisplayName })
100
- ] })
101
- ] }) });
102
- };
103
- export {
104
- NextcloudFileCard as default
105
- };
@@ -1 +0,0 @@
1
- export declare const Nextcloud: () => import("react/jsx-runtime").JSX.Element;
@@ -1,35 +0,0 @@
1
- import { jsx } from "react/jsx-runtime";
2
- import { odeServices } from "@edifice.io/client";
3
- import { useMediaLibraryContext } from "../MediaLibraryContext.js";
4
- import useUser from "../../../../hooks/useUser/useUser.js";
5
- import Nextcloud$1 from "../../Nextcloud/Nextcloud.js";
6
- const Nextcloud = () => {
7
- const {
8
- type,
9
- setResultCounter,
10
- setResult,
11
- setPreSuccess,
12
- multiple
13
- } = useMediaLibraryContext(), {
14
- user
15
- } = useUser();
16
- function getDocumentRoleFilter() {
17
- switch (type) {
18
- case "image":
19
- return "img";
20
- case "audio":
21
- return "audio";
22
- case "video":
23
- return "video";
24
- default:
25
- return null;
26
- }
27
- }
28
- function handleSelect(result) {
29
- setResultCounter(result.length), result.length ? (setResult(result), setPreSuccess(() => () => user != null && user.userId ? odeServices.nextcloud().copyDocumentToWorkspace(user.userId, result.map((doc) => doc.path)) : Promise.resolve([]))) : (setResult(), setPreSuccess(void 0));
30
- }
31
- return /* @__PURE__ */ jsx(Nextcloud$1, { roles: getDocumentRoleFilter(), onSelect: handleSelect, multiple, className: "border rounded overflow-y-auto" });
32
- };
33
- export {
34
- Nextcloud
35
- };
@@ -1,24 +0,0 @@
1
- import { NextcloudDocument, Role } from '@edifice.io/client';
2
- /**
3
- * Nextcloud component properties
4
- */
5
- export interface NextcloudProps {
6
- /**
7
- * Notify parent when media elements are successfully selected.
8
- */
9
- onSelect: (result: NextcloudDocument[]) => void;
10
- /**
11
- * Boolean to know if we can select 1 or many files.
12
- */
13
- multiple?: boolean | undefined;
14
- /**
15
- * Document roles to filter files by; null (default) shows all roles.
16
- */
17
- roles?: Role | Role[] | null;
18
- /**
19
- * Optional class for styling purpose
20
- */
21
- className?: string;
22
- }
23
- declare const Nextcloud: ({ onSelect, multiple, roles, className, }: NextcloudProps) => import("react/jsx-runtime").JSX.Element;
24
- export default Nextcloud;
@@ -1,109 +0,0 @@
1
- import { jsx, jsxs } from "react/jsx-runtime";
2
- import { useRef, useState, useCallback, useEffect, useMemo } from "react";
3
- import { DocumentHelper } from "@edifice.io/client";
4
- import clsx from "clsx";
5
- import { useTranslation } from "react-i18next";
6
- import { findNodeById } from "../../../components/Tree/utilities/tree.js";
7
- import SvgIconSortAscendingLetters from "../../icons/components/IconSortAscendingLetters.js";
8
- import SvgIconSortDescendingLetters from "../../icons/components/IconSortDescendingLetters.js";
9
- import SvgIconSortTime from "../../icons/components/IconSortTime.js";
10
- import illuNoContentInFolder from "@edifice.io/bootstrap/dist/images/emptyscreen/illu-no-content-in-folder.svg";
11
- import useUser from "../../../hooks/useUser/useUser.js";
12
- import useNextcloudSearch from "../../../hooks/useNextcloudSearch/useNextcloudSearch.js";
13
- import LoadingScreen from "../../../components/LoadingScreen/LoadingScreen.js";
14
- import Flex from "../../../components/Flex/Flex.js";
15
- import EmptyScreen from "../../../components/EmptyScreen/EmptyScreen.js";
16
- import Button from "../../../components/Button/Button.js";
17
- import { Grid } from "../../../components/Grid/Grid.js";
18
- import Tree from "../../../components/Tree/components/Tree.js";
19
- import SearchBar from "../../../components/SearchBar/SearchBar.js";
20
- import Dropdown from "../../../components/Dropdown/Dropdown.js";
21
- import NextcloudFileCard from "../FileCard/NextcloudFileCard.js";
22
- const ROOT_ID = "root";
23
- function compare(a, b) {
24
- return a ? b ? a.localeCompare(b) : 1 : -1;
25
- }
26
- const Nextcloud = ({
27
- onSelect,
28
- multiple = !0,
29
- roles,
30
- className
31
- }) => {
32
- const {
33
- t
34
- } = useTranslation(), {
35
- user
36
- } = useUser(), {
37
- root,
38
- needsAuth,
39
- isCheckingAuth,
40
- refetchAuthStatus,
41
- loadContent
42
- } = useNextcloudSearch(ROOT_ID, t("nextcloud"), user == null ? void 0 : user.userId), popupRef = useRef(null), [currentNodeId, setCurrentNodeId] = useState(ROOT_ID), treeRoot = root, currentNode = findNodeById(treeRoot, currentNodeId) ?? root, [searchTerm, setSearchTerm] = useState(null), [sortOrder, setSortOrder] = useState(["modified", "desc"]), [selectedDocuments, setSelectedDocuments] = useState([]), handleTreeItemChange = useCallback((nodeId) => {
43
- setCurrentNodeId(nodeId), loadContent(nodeId);
44
- }, [loadContent]);
45
- useEffect(() => {
46
- loadContent(ROOT_ID);
47
- }, [loadContent]);
48
- const documents = useMemo(() => {
49
- if (!currentNode.files) return;
50
- let list = [].concat(currentNode.files);
51
- searchTerm && (list = list.filter((f) => f.name.indexOf(searchTerm) >= 0)), roles && (list = list.filter((f) => {
52
- const role = DocumentHelper.role(f.contentType, !1);
53
- return typeof roles == "string" ? roles === role : Array.isArray(roles) ? roles.includes(role) : !1;
54
- }));
55
- const sortFunction = sortOrder[0] === "name" ? sortOrder[1] === "asc" ? (a, b) => compare(a.name, b.name) : (a, b) => compare(b.name, a.name) : (a, b) => compare(b.lastModified, a.lastModified);
56
- return list.sort(sortFunction);
57
- }, [root, currentNode, searchTerm, sortOrder, roles]), selectedPaths = useMemo(() => new Set(selectedDocuments.map((d) => d.path)), [selectedDocuments]), handleSearchChange = useCallback((e) => {
58
- setSearchTerm(e.target.value);
59
- }, [setSearchTerm]);
60
- function getSortOrderLabel() {
61
- return sortOrder[0] === "name" ? sortOrder[1] === "asc" ? t("sort.order.alpha.asc") : t("sort.order.alpha.desc") : t("sort.order.modify.desc");
62
- }
63
- function handleSelectDoc(doc) {
64
- let currentDocuments = [...selectedDocuments];
65
- multiple ? currentDocuments.includes(doc) ? currentDocuments = currentDocuments.filter((selectedDocument) => selectedDocument.path !== doc.path) : currentDocuments = [...currentDocuments, doc] : currentDocuments = [doc], setSelectedDocuments(currentDocuments), onSelect(currentDocuments);
66
- }
67
- const nextcloud = clsx("workspace flex-grow-1 gap-0", className), openLoginPopup = () => {
68
- popupRef.current = window.open(`${window.location.origin}/nextcloud/user/oauth2/init`, "", "popup, height=600, width=400");
69
- };
70
- return useEffect(() => {
71
- function handleMessage(event) {
72
- var _a;
73
- event.origin !== window.location.origin || ((_a = event.data) == null ? void 0 : _a.type) !== "nextcloud-connected" || (popupRef.current && !popupRef.current.closed && popupRef.current.close(), refetchAuthStatus());
74
- }
75
- return window.addEventListener("message", handleMessage), () => window.removeEventListener("message", handleMessage);
76
- }, [refetchAuthStatus]), isCheckingAuth ? /* @__PURE__ */ jsx(LoadingScreen, {}) : needsAuth ? /* @__PURE__ */ jsxs(Flex, { direction: "column", gap: "8", className: "h-full w-100", justify: "center", align: "center", children: [
77
- /* @__PURE__ */ jsx(EmptyScreen, { imageSrc: illuNoContentInFolder }),
78
- /* @__PURE__ */ jsx(Button, { onClick: openLoginPopup, children: "Login to nextcloud" })
79
- ] }) : /* @__PURE__ */ jsxs(Grid, { className: nextcloud, children: [
80
- /* @__PURE__ */ jsx(Grid.Col, { sm: "12", md: "3", xl: "4", className: "workspace-folders p-12 pt-0 gap-12", children: /* @__PURE__ */ jsx("div", { style: {
81
- position: "sticky",
82
- top: 0,
83
- paddingTop: "1.2rem"
84
- }, children: /* @__PURE__ */ jsx(Tree, { nodes: treeRoot, selectedNodeId: currentNodeId, showIcon: !0, onTreeItemClick: handleTreeItemChange, onTreeItemUnfold: handleTreeItemChange }) }) }),
85
- /* @__PURE__ */ jsx(Grid.Col, { sm: "12", md: "5", xl: "8", children: /* @__PURE__ */ jsxs(Grid, { className: "flex-grow-1 gap-0", children: [
86
- /* @__PURE__ */ jsxs(Grid.Col, { sm: "4", md: "8", xl: "12", children: [
87
- /* @__PURE__ */ jsx("div", { className: "workspace-search px-16 py-8 ", children: /* @__PURE__ */ jsx(SearchBar, { isVariant: !0, className: "gap-16", onChange: handleSearchChange }) }),
88
- /* @__PURE__ */ jsxs("div", { className: "d-flex align-items-center justify-content-end px-8 py-4", children: [
89
- /* @__PURE__ */ jsx("small", { className: "text-muted", children: t("workspace.search.order") }),
90
- /* @__PURE__ */ jsxs(Dropdown, { children: [
91
- /* @__PURE__ */ jsx(Dropdown.Trigger, { size: "sm", label: getSortOrderLabel(), variant: "ghost" }),
92
- /* @__PURE__ */ jsxs(Dropdown.Menu, { children: [
93
- /* @__PURE__ */ jsx(Dropdown.Item, { icon: /* @__PURE__ */ jsx(SvgIconSortTime, {}), onClick: () => setSortOrder(["modified", "desc"]), children: t("sort.order.modify.desc") }),
94
- /* @__PURE__ */ jsx(Dropdown.Item, { icon: /* @__PURE__ */ jsx(SvgIconSortAscendingLetters, {}), onClick: () => setSortOrder(["name", "asc"]), children: t("sort.order.alpha.asc") }),
95
- /* @__PURE__ */ jsx(Dropdown.Item, { icon: /* @__PURE__ */ jsx(SvgIconSortDescendingLetters, {}), onClick: () => setSortOrder(["name", "desc"]), children: t("sort.order.alpha.desc") })
96
- ] })
97
- ] })
98
- ] })
99
- ] }),
100
- /* @__PURE__ */ jsx(Grid.Col, { sm: "4", md: "8", xl: "12", className: "p-8 gap-8", children: documents ? documents.length !== 0 ? /* @__PURE__ */ jsx("div", { className: "grid grid-workspace", children: documents.map((doc) => {
101
- const isSelected = selectedPaths.has(doc.path);
102
- return /* @__PURE__ */ jsx(NextcloudFileCard, { doc, userId: user.userId, isSelected, onClick: () => handleSelectDoc(doc) }, doc.path);
103
- }) }) : /* @__PURE__ */ jsx(EmptyScreen, { imageSrc: illuNoContentInFolder, size: 64, text: t("nextcloud.empty.docSpace") }) : /* @__PURE__ */ jsx(LoadingScreen, {}) })
104
- ] }) })
105
- ] });
106
- };
107
- export {
108
- Nextcloud as default
109
- };
@@ -1,2 +0,0 @@
1
- export { default as Nextcloud } from './Nextcloud';
2
- export * from './Nextcloud';