@edifice.io/react 2.6.2-develop-integration-crna.20260825143220 → 2.6.2-develop-b2school.20260826092722
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/Layout/Layout.js +3 -5
- package/dist/icons-apps.js +100 -112
- package/dist/modules/homepage/components/Favorites/Favorites.js +3 -6
- package/dist/modules/homepage/components/Header/Header.js +13 -24
- package/dist/modules/homepage/components/Notifications/NotificationItem.js +4 -5
- package/dist/modules/homepage/components/Notifications/NotificationList.d.ts +1 -7
- package/dist/modules/homepage/components/Notifications/NotificationList.js +1 -8
- package/dist/modules/homepage/components/Notifications/NotificationListContainer.js +1 -4
- package/dist/modules/homepage/components/Notifications/components/CommonNotificationItem.d.ts +1 -2
- package/dist/modules/homepage/components/Notifications/components/CommonNotificationItem.js +10 -14
- package/dist/modules/homepage/components/Notifications/components/SystemNotificationItem.d.ts +1 -3
- package/dist/modules/homepage/components/Notifications/components/SystemNotificationItem.js +2 -3
- package/dist/modules/homepage/components/Notifications/components/UserNotificationItem.d.ts +1 -3
- package/dist/modules/homepage/components/Notifications/components/UserNotificationItem.js +2 -3
- package/dist/modules/homepage/components/Notifications/components/notificationAdapter.d.ts +0 -1
- package/dist/modules/homepage/components/Notifications/components/notificationAdapter.js +2 -7
- package/dist/modules/homepage/components/Notifications/hooks/useNotificationList.d.ts +1 -11
- package/dist/modules/homepage/components/Notifications/hooks/useNotificationList.js +2 -34
- package/dist/modules/homepage/components/Notifications/services/api/index.d.ts +0 -2
- package/dist/modules/homepage/components/Notifications/services/api/notificationService.d.ts +0 -8
- package/dist/modules/homepage/components/Notifications/services/api/notificationService.js +0 -12
- package/dist/modules/homepage/components/Notifications/services/queries/notification.d.ts +1 -13
- package/dist/modules/homepage/components/Notifications/services/queries/notification.js +4 -41
- package/dist/modules/homepage/components/UserSpace/hooks/useProfileLinks.js +18 -8
- package/dist/modules/icons/components/apps/index.d.ts +0 -6
- package/package.json +6 -6
- package/dist/modules/homepage/components/Notifications/components/NotificationFilterMenu.d.ts +0 -16
- package/dist/modules/homepage/components/Notifications/components/NotificationFilterMenu.js +0 -29
- package/dist/modules/homepage/components/Notifications/components/NotificationFilterModal.d.ts +0 -18
- package/dist/modules/homepage/components/Notifications/components/NotificationFilterModal.js +0 -67
- package/dist/modules/homepage/components/Notifications/components/NotificationOptionsMenu.d.ts +0 -12
- package/dist/modules/homepage/components/Notifications/components/NotificationOptionsMenu.js +0 -42
- package/dist/modules/homepage/components/Notifications/components/ReportNotificationModal.d.ts +0 -13
- package/dist/modules/homepage/components/Notifications/components/ReportNotificationModal.js +0 -31
- package/dist/modules/icons/components/apps/IconNextcloudDeck.d.ts +0 -7
- package/dist/modules/icons/components/apps/IconNextcloudDeck.js +0 -12
- package/dist/modules/icons/components/apps/IconNextcloudFiles.d.ts +0 -7
- package/dist/modules/icons/components/apps/IconNextcloudFiles.js +0 -12
- package/dist/modules/icons/components/apps/IconNextcloudForms.d.ts +0 -7
- package/dist/modules/icons/components/apps/IconNextcloudForms.js +0 -12
- package/dist/modules/icons/components/apps/IconNextcloudNotes.d.ts +0 -7
- package/dist/modules/icons/components/apps/IconNextcloudNotes.js +0 -12
- package/dist/modules/icons/components/apps/IconNextcloudTalk.d.ts +0 -7
- package/dist/modules/icons/components/apps/IconNextcloudTalk.js +0 -12
- package/dist/modules/icons/components/apps/IconPeertube.d.ts +0 -7
- package/dist/modules/icons/components/apps/IconPeertube.js +0 -21
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { jsx, jsxs } from "react/jsx-runtime";
|
|
1
|
+
import { jsx, jsxs, Fragment } from "react/jsx-runtime";
|
|
2
2
|
import { Suspense, lazy } from "react";
|
|
3
3
|
import clsx from "clsx";
|
|
4
4
|
import { Toaster } from "react-hot-toast";
|
|
@@ -22,7 +22,7 @@ const HeaderV2 = /* @__PURE__ */ lazy(() => import("../../modules/homepage/compo
|
|
|
22
22
|
}) => {
|
|
23
23
|
const {
|
|
24
24
|
theme
|
|
25
|
-
} = useEdificeTheme(), override = useUiOverride("layout.header"), isHeaderV2 = (override == null ? void 0 : override.variant) === "v2",
|
|
25
|
+
} = useEdificeTheme(), override = useUiOverride("layout.header"), isHeaderV2 = (override == null ? void 0 : override.variant) === "v2", {
|
|
26
26
|
toggleOverlay
|
|
27
27
|
} = useOverlay(), {
|
|
28
28
|
t
|
|
@@ -40,9 +40,7 @@ const HeaderV2 = /* @__PURE__ */ lazy(() => import("../../modules/homepage/compo
|
|
|
40
40
|
}, className), renderHeader = headless ? null : isHeaderV2 ? /* @__PURE__ */ jsx(Suspense, { fallback: null, children: /* @__PURE__ */ jsx(HeaderV2, { src: theme == null ? void 0 : theme.basePath, dataProduct: override == null ? void 0 : override.theme, onNotificationsClick: toggleOverlay }) }) : /* @__PURE__ */ jsx(Header, { is1d: theme == null ? void 0 : theme.is1d, src: theme == null ? void 0 : theme.basePath }), renderNotificationsOverlay = !headless && isHeaderV2 && /* @__PURE__ */ jsx(HeaderNotificationsOverlay, {}), renderCookies = showCookiesConsent && /* @__PURE__ */ jsx(Alert, { type: "info", className: "m-12 rgpd", isConfirm: !0, position: "bottom-right", button: /* @__PURE__ */ jsx(Button, { color: "tertiary", variant: "ghost", onClick: handleConsultCookies, children: t("rgpd.cookies.banner.button.consult") }), onClose: handleCloseCookiesConsent, children: t("rgpd.cookies.banner.text1") }), renderToaster = /* @__PURE__ */ jsx(Toaster, { containerClassName: "toaster-container", toastOptions: {
|
|
41
41
|
position: "top-right"
|
|
42
42
|
} });
|
|
43
|
-
return /* @__PURE__ */ jsxs(
|
|
44
|
-
"layout-has-background-image": hasBackgroundImage
|
|
45
|
-
}), "data-product": hasBackgroundImage ? backgroundOverride == null ? void 0 : backgroundOverride.theme : void 0, children: [
|
|
43
|
+
return /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
46
44
|
renderHeader,
|
|
47
45
|
renderNotificationsOverlay,
|
|
48
46
|
/* @__PURE__ */ jsx("main", { className: classes, ...restProps, children }),
|
package/dist/icons-apps.js
CHANGED
|
@@ -75,62 +75,56 @@ import { default as default75 } from "./modules/icons/components/apps/IconMuseef
|
|
|
75
75
|
import { default as default76 } from "./modules/icons/components/apps/IconMyNetwork.js";
|
|
76
76
|
import { default as default77 } from "./modules/icons/components/apps/IconNabook.js";
|
|
77
77
|
import { default as default78 } from "./modules/icons/components/apps/IconNetvibes.js";
|
|
78
|
-
import { default as default79 } from "./modules/icons/components/apps/
|
|
79
|
-
import { default as default80 } from "./modules/icons/components/apps/
|
|
80
|
-
import { default as default81 } from "./modules/icons/components/apps/
|
|
81
|
-
import { default as default82 } from "./modules/icons/components/apps/
|
|
82
|
-
import { default as default83 } from "./modules/icons/components/apps/
|
|
83
|
-
import { default as default84 } from "./modules/icons/components/apps/
|
|
84
|
-
import { default as default85 } from "./modules/icons/components/apps/
|
|
85
|
-
import { default as default86 } from "./modules/icons/components/apps/
|
|
86
|
-
import { default as default87 } from "./modules/icons/components/apps/
|
|
87
|
-
import { default as default88 } from "./modules/icons/components/apps/
|
|
88
|
-
import { default as default89 } from "./modules/icons/components/apps/
|
|
89
|
-
import { default as default90 } from "./modules/icons/components/apps/
|
|
90
|
-
import { default as default91 } from "./modules/icons/components/apps/
|
|
91
|
-
import { default as default92 } from "./modules/icons/components/apps/
|
|
92
|
-
import { default as default93 } from "./modules/icons/components/apps/
|
|
93
|
-
import { default as default94 } from "./modules/icons/components/apps/
|
|
94
|
-
import { default as default95 } from "./modules/icons/components/apps/
|
|
95
|
-
import { default as default96 } from "./modules/icons/components/apps/
|
|
96
|
-
import { default as default97 } from "./modules/icons/components/apps/
|
|
97
|
-
import { default as default98 } from "./modules/icons/components/apps/
|
|
98
|
-
import { default as default99 } from "./modules/icons/components/apps/
|
|
99
|
-
import { default as default100 } from "./modules/icons/components/apps/
|
|
100
|
-
import { default as default101 } from "./modules/icons/components/apps/
|
|
101
|
-
import { default as default102 } from "./modules/icons/components/apps/
|
|
102
|
-
import { default as default103 } from "./modules/icons/components/apps/
|
|
103
|
-
import { default as default104 } from "./modules/icons/components/apps/
|
|
104
|
-
import { default as default105 } from "./modules/icons/components/apps/
|
|
105
|
-
import { default as default106 } from "./modules/icons/components/apps/
|
|
106
|
-
import { default as default107 } from "./modules/icons/components/apps/
|
|
107
|
-
import { default as default108 } from "./modules/icons/components/apps/
|
|
108
|
-
import { default as default109 } from "./modules/icons/components/apps/
|
|
109
|
-
import { default as default110 } from "./modules/icons/components/apps/
|
|
110
|
-
import { default as default111 } from "./modules/icons/components/apps/
|
|
111
|
-
import { default as default112 } from "./modules/icons/components/apps/
|
|
112
|
-
import { default as default113 } from "./modules/icons/components/apps/
|
|
113
|
-
import { default as default114 } from "./modules/icons/components/apps/
|
|
114
|
-
import { default as default115 } from "./modules/icons/components/apps/
|
|
115
|
-
import { default as default116 } from "./modules/icons/components/apps/
|
|
116
|
-
import { default as default117 } from "./modules/icons/components/apps/
|
|
117
|
-
import { default as default118 } from "./modules/icons/components/apps/
|
|
118
|
-
import { default as default119 } from "./modules/icons/components/apps/
|
|
119
|
-
import { default as default120 } from "./modules/icons/components/apps/
|
|
120
|
-
import { default as default121 } from "./modules/icons/components/apps/
|
|
121
|
-
import { default as default122 } from "./modules/icons/components/apps/
|
|
122
|
-
import { default as default123 } from "./modules/icons/components/apps/
|
|
123
|
-
import { default as default124 } from "./modules/icons/components/apps/
|
|
124
|
-
import { default as default125 } from "./modules/icons/components/apps/
|
|
125
|
-
import { default as default126 } from "./modules/icons/components/apps/
|
|
126
|
-
import { default as default127 } from "./modules/icons/components/apps/
|
|
127
|
-
import { default as default128 } from "./modules/icons/components/apps/
|
|
128
|
-
import { default as default129 } from "./modules/icons/components/apps/IconVisioconf.js";
|
|
129
|
-
import { default as default130 } from "./modules/icons/components/apps/IconVotil.js";
|
|
130
|
-
import { default as default131 } from "./modules/icons/components/apps/IconWebclasseur.js";
|
|
131
|
-
import { default as default132 } from "./modules/icons/components/apps/IconWebsite.js";
|
|
132
|
-
import { default as default133 } from "./modules/icons/components/apps/IconWiki.js";
|
|
133
|
-
import { default as default134 } from "./modules/icons/components/apps/IconWorkspace.js";
|
|
78
|
+
import { default as default79 } from "./modules/icons/components/apps/IconNote.js";
|
|
79
|
+
import { default as default80 } from "./modules/icons/components/apps/IconNotebook.js";
|
|
80
|
+
import { default as default81 } from "./modules/icons/components/apps/IconNotes.js";
|
|
81
|
+
import { default as default82 } from "./modules/icons/components/apps/IconOnisep.js";
|
|
82
|
+
import { default as default83 } from "./modules/icons/components/apps/IconOnisep2.js";
|
|
83
|
+
import { default as default84 } from "./modules/icons/components/apps/IconPad.js";
|
|
84
|
+
import { default as default85 } from "./modules/icons/components/apps/IconPages.js";
|
|
85
|
+
import { default as default86 } from "./modules/icons/components/apps/IconParametrage.js";
|
|
86
|
+
import { default as default87 } from "./modules/icons/components/apps/IconParametrages.js";
|
|
87
|
+
import { default as default88 } from "./modules/icons/components/apps/IconParaschool.js";
|
|
88
|
+
import { default as default89 } from "./modules/icons/components/apps/IconParcours.js";
|
|
89
|
+
import { default as default90 } from "./modules/icons/components/apps/IconPearltrees.js";
|
|
90
|
+
import { default as default91 } from "./modules/icons/components/apps/IconPicardieCursus.js";
|
|
91
|
+
import { default as default92 } from "./modules/icons/components/apps/IconPlaceholder.js";
|
|
92
|
+
import { default as default93 } from "./modules/icons/components/apps/IconPoll.js";
|
|
93
|
+
import { default as default94 } from "./modules/icons/components/apps/IconPresences.js";
|
|
94
|
+
import { default as default95 } from "./modules/icons/components/apps/IconProeps.js";
|
|
95
|
+
import { default as default96 } from "./modules/icons/components/apps/IconPronote.js";
|
|
96
|
+
import { default as default97 } from "./modules/icons/components/apps/IconPublic.js";
|
|
97
|
+
import { default as default98 } from "./modules/icons/components/apps/IconQwantJunior.js";
|
|
98
|
+
import { default as default99 } from "./modules/icons/components/apps/IconQwant.js";
|
|
99
|
+
import { default as default100 } from "./modules/icons/components/apps/IconRack.js";
|
|
100
|
+
import { default as default101 } from "./modules/icons/components/apps/IconRbs.js";
|
|
101
|
+
import { default as default102 } from "./modules/icons/components/apps/IconResidenceArtiste.js";
|
|
102
|
+
import { default as default103 } from "./modules/icons/components/apps/IconRessourcesdepartementale91.js";
|
|
103
|
+
import { default as default104 } from "./modules/icons/components/apps/IconSacoche.js";
|
|
104
|
+
import { default as default105 } from "./modules/icons/components/apps/IconSchoolbook.js";
|
|
105
|
+
import { default as default106 } from "./modules/icons/components/apps/IconScolinfo.js";
|
|
106
|
+
import { default as default107 } from "./modules/icons/components/apps/IconScrapbook.js";
|
|
107
|
+
import { default as default108 } from "./modules/icons/components/apps/IconSearchengine.js";
|
|
108
|
+
import { default as default109 } from "./modules/icons/components/apps/IconSettingsClass.js";
|
|
109
|
+
import { default as default110 } from "./modules/icons/components/apps/IconSharebigfiles.js";
|
|
110
|
+
import { default as default111 } from "./modules/icons/components/apps/IconStatistics.js";
|
|
111
|
+
import { default as default112 } from "./modules/icons/components/apps/IconStats.js";
|
|
112
|
+
import { default as default113 } from "./modules/icons/components/apps/IconSuitcase.js";
|
|
113
|
+
import { default as default114 } from "./modules/icons/components/apps/IconSupport.js";
|
|
114
|
+
import { default as default115 } from "./modules/icons/components/apps/IconTimeline.js";
|
|
115
|
+
import { default as default116 } from "./modules/icons/components/apps/IconTimelinegenerator.js";
|
|
116
|
+
import { default as default117 } from "./modules/icons/components/apps/IconTurboself.js";
|
|
117
|
+
import { default as default118 } from "./modules/icons/components/apps/IconUniversalis.js";
|
|
118
|
+
import { default as default119 } from "./modules/icons/components/apps/IconUnstagepourtous.js";
|
|
119
|
+
import { default as default120 } from "./modules/icons/components/apps/IconUserbook.js";
|
|
120
|
+
import { default as default121 } from "./modules/icons/components/apps/IconVideo.js";
|
|
121
|
+
import { default as default122 } from "./modules/icons/components/apps/IconVieScolaire.js";
|
|
122
|
+
import { default as default123 } from "./modules/icons/components/apps/IconVisioconf.js";
|
|
123
|
+
import { default as default124 } from "./modules/icons/components/apps/IconVotil.js";
|
|
124
|
+
import { default as default125 } from "./modules/icons/components/apps/IconWebclasseur.js";
|
|
125
|
+
import { default as default126 } from "./modules/icons/components/apps/IconWebsite.js";
|
|
126
|
+
import { default as default127 } from "./modules/icons/components/apps/IconWiki.js";
|
|
127
|
+
import { default as default128 } from "./modules/icons/components/apps/IconWorkspace.js";
|
|
134
128
|
export {
|
|
135
129
|
default2 as IconAccount,
|
|
136
130
|
default3 as IconActualites,
|
|
@@ -209,60 +203,54 @@ export {
|
|
|
209
203
|
default76 as IconMyNetwork,
|
|
210
204
|
default77 as IconNabook,
|
|
211
205
|
default78 as IconNetvibes,
|
|
212
|
-
default79 as
|
|
213
|
-
default80 as
|
|
214
|
-
default81 as
|
|
215
|
-
default82 as
|
|
216
|
-
default83 as
|
|
217
|
-
default84 as
|
|
218
|
-
default85 as
|
|
219
|
-
default86 as
|
|
220
|
-
default87 as
|
|
221
|
-
default88 as
|
|
222
|
-
default89 as
|
|
223
|
-
default90 as
|
|
224
|
-
default91 as
|
|
225
|
-
default92 as
|
|
226
|
-
default93 as
|
|
227
|
-
default94 as
|
|
228
|
-
default95 as
|
|
229
|
-
default96 as
|
|
230
|
-
default97 as
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
default100 as
|
|
234
|
-
default101 as
|
|
235
|
-
default102 as
|
|
236
|
-
default103 as
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
default106 as
|
|
240
|
-
default107 as
|
|
241
|
-
default108 as
|
|
242
|
-
default109 as
|
|
243
|
-
default110 as
|
|
244
|
-
default111 as
|
|
245
|
-
default112 as
|
|
246
|
-
default113 as
|
|
247
|
-
default114 as
|
|
248
|
-
default115 as
|
|
249
|
-
default116 as
|
|
250
|
-
default117 as
|
|
251
|
-
default118 as
|
|
252
|
-
default119 as
|
|
253
|
-
default120 as
|
|
254
|
-
default121 as
|
|
255
|
-
default122 as
|
|
256
|
-
default123 as
|
|
257
|
-
default124 as
|
|
258
|
-
default125 as
|
|
259
|
-
default126 as
|
|
260
|
-
default127 as
|
|
261
|
-
default128 as
|
|
262
|
-
default129 as IconVisioconf,
|
|
263
|
-
default130 as IconVotil,
|
|
264
|
-
default131 as IconWebclasseur,
|
|
265
|
-
default132 as IconWebsite,
|
|
266
|
-
default133 as IconWiki,
|
|
267
|
-
default134 as IconWorkspace
|
|
206
|
+
default79 as IconNote,
|
|
207
|
+
default80 as IconNotebook,
|
|
208
|
+
default81 as IconNotes,
|
|
209
|
+
default82 as IconOnisep,
|
|
210
|
+
default83 as IconOnisep2,
|
|
211
|
+
default84 as IconPad,
|
|
212
|
+
default85 as IconPages,
|
|
213
|
+
default86 as IconParametrage,
|
|
214
|
+
default87 as IconParametrages,
|
|
215
|
+
default88 as IconParaschool,
|
|
216
|
+
default89 as IconParcours,
|
|
217
|
+
default90 as IconPearltrees,
|
|
218
|
+
default91 as IconPicardieCursus,
|
|
219
|
+
default92 as IconPlaceholder,
|
|
220
|
+
default93 as IconPoll,
|
|
221
|
+
default94 as IconPresences,
|
|
222
|
+
default95 as IconProeps,
|
|
223
|
+
default96 as IconPronote,
|
|
224
|
+
default97 as IconPublic,
|
|
225
|
+
default99 as IconQwant,
|
|
226
|
+
default98 as IconQwantJunior,
|
|
227
|
+
default100 as IconRack,
|
|
228
|
+
default101 as IconRbs,
|
|
229
|
+
default102 as IconResidenceArtiste,
|
|
230
|
+
default103 as IconRessourcesdepartementale91,
|
|
231
|
+
default104 as IconSacoche,
|
|
232
|
+
default105 as IconSchoolbook,
|
|
233
|
+
default106 as IconScolinfo,
|
|
234
|
+
default107 as IconScrapbook,
|
|
235
|
+
default108 as IconSearchengine,
|
|
236
|
+
default109 as IconSettingsClass,
|
|
237
|
+
default110 as IconSharebigfiles,
|
|
238
|
+
default111 as IconStatistics,
|
|
239
|
+
default112 as IconStats,
|
|
240
|
+
default113 as IconSuitcase,
|
|
241
|
+
default114 as IconSupport,
|
|
242
|
+
default115 as IconTimeline,
|
|
243
|
+
default116 as IconTimelinegenerator,
|
|
244
|
+
default117 as IconTurboself,
|
|
245
|
+
default118 as IconUniversalis,
|
|
246
|
+
default119 as IconUnstagepourtous,
|
|
247
|
+
default120 as IconUserbook,
|
|
248
|
+
default121 as IconVideo,
|
|
249
|
+
default122 as IconVieScolaire,
|
|
250
|
+
default123 as IconVisioconf,
|
|
251
|
+
default124 as IconVotil,
|
|
252
|
+
default125 as IconWebclasseur,
|
|
253
|
+
default126 as IconWebsite,
|
|
254
|
+
default127 as IconWiki,
|
|
255
|
+
default128 as IconWorkspace
|
|
268
256
|
};
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import { jsxs, jsx } from "react/jsx-runtime";
|
|
2
|
-
import { useMemo } from "react";
|
|
3
2
|
import { useTranslation } from "react-i18next";
|
|
4
3
|
import illuEmptyFavorite from "@edifice.io/bootstrap/dist/images/homepage/illu-empty-favorite.svg";
|
|
5
4
|
import SvgIconArrowRight from "../../../icons/components/IconArrowRight.js";
|
|
@@ -12,15 +11,13 @@ function Favorites({
|
|
|
12
11
|
}) {
|
|
13
12
|
const {
|
|
14
13
|
t
|
|
15
|
-
} = useTranslation(), getAppName = (app) => app.prefix && app.prefix.length > 1 ? t(app.prefix.substring(1)) : t(app.displayName) || ""
|
|
16
|
-
sensitivity: "base"
|
|
17
|
-
})), [apps, t]);
|
|
14
|
+
} = useTranslation(), getAppName = (app) => app.prefix && app.prefix.length > 1 ? t(app.prefix.substring(1)) : t(app.displayName) || "";
|
|
18
15
|
return /* @__PURE__ */ jsxs(HomeCard, { variant: "secondary", children: [
|
|
19
16
|
/* @__PURE__ */ jsx(HomeCard.Header, { title: t("homepage.favorites.title", "Favoris"), actionLabel: t("homepage.favorites.all", "Mes applis"), onActionClick: onSeeAllClick, actionRightIcon: /* @__PURE__ */ jsx(SvgIconArrowRight, {}) }),
|
|
20
|
-
/* @__PURE__ */ jsx(HomeCard.Content, { children: /* @__PURE__ */ jsx("div", { className: "favorites-content", children:
|
|
17
|
+
/* @__PURE__ */ jsx(HomeCard.Content, { children: /* @__PURE__ */ jsx("div", { className: "favorites-content", children: apps.length === 0 ? /* @__PURE__ */ jsxs(Flex, { align: "center", gap: "12", children: [
|
|
21
18
|
/* @__PURE__ */ jsx("img", { src: illuEmptyFavorite, alt: "", width: 50, height: 50 }),
|
|
22
19
|
/* @__PURE__ */ jsx("span", { className: "favorites-empty-text", children: t("homepage.favorites.empty", "Ajouter des applications à vos favoris pour les retrouver ici et y accéder rapidement !") })
|
|
23
|
-
] }) : /* @__PURE__ */ jsx(Flex, { wrap: "wrap", gap: "8 16", children:
|
|
20
|
+
] }) : /* @__PURE__ */ jsx(Flex, { wrap: "wrap", gap: "8 16", children: apps.map((app) => {
|
|
24
21
|
const appName = getAppName(app), opensInNewTab = app.isExternal || app.target === "_blank";
|
|
25
22
|
return /* @__PURE__ */ jsx("a", { href: app.address, "aria-label": appName, title: appName, target: opensInNewTab ? "_blank" : void 0, rel: opensInNewTab ? "noopener noreferrer" : void 0, children: /* @__PURE__ */ jsx(AppIcon, { app, size: "40", variant: "square" }) }, app.name);
|
|
26
23
|
}) }) }) })
|
|
@@ -6,13 +6,13 @@ import { Navbar } from "../../../../components/Layout/components/Navbar.js";
|
|
|
6
6
|
import { NavItem } from "../../../../components/Layout/components/NavItem.js";
|
|
7
7
|
import { NavLink } from "../../../../components/Layout/components/NavLink.js";
|
|
8
8
|
import useHeader from "../../../../components/Layout/hooks/useHeader.js";
|
|
9
|
+
import SvgIconSetBackground from "../../../icons/components/IconSetBackground.js";
|
|
9
10
|
import SvgIconCommunitiesBeta from "../../../icons/components/nav/IconCommunitiesBeta.js";
|
|
10
11
|
import SvgIconDisconnect from "../../../icons/components/nav/IconDisconnect.js";
|
|
11
12
|
import SvgIconHomeBeta from "../../../icons/components/nav/IconHomeBeta.js";
|
|
12
13
|
import SvgIconMessagesBeta from "../../../icons/components/nav/IconMessagesBeta.js";
|
|
13
14
|
import SvgIconMyAppsBeta from "../../../icons/components/nav/IconMyAppsBeta.js";
|
|
14
15
|
import SvgIconNotificationBeta from "../../../icons/components/nav/IconNotificationBeta.js";
|
|
15
|
-
import { useHasNotificationToday } from "../Notifications/hooks/useNotificationList.js";
|
|
16
16
|
import useConversation from "../../../../hooks/useConversation/useConversation.js";
|
|
17
17
|
import useUser from "../../../../hooks/useUser/useUser.js";
|
|
18
18
|
import useHasWorkflow from "../../../../hooks/useHasWorkflow/useHasWorkflow.js";
|
|
@@ -46,7 +46,7 @@ const Header = ({
|
|
|
46
46
|
avatar
|
|
47
47
|
}), {
|
|
48
48
|
theme
|
|
49
|
-
} = useEdificeTheme(), hasMessages = messages > 0,
|
|
49
|
+
} = useEdificeTheme(), hasMessages = messages > 0, [userRef, isUserHovered] = useHover(), popoverUserId = useId(), handleNotificationsClick = () => {
|
|
50
50
|
onNotificationsClick == null || onNotificationsClick();
|
|
51
51
|
};
|
|
52
52
|
return /* @__PURE__ */ jsx("header", { className: classes, "data-product": dataProduct, children: /* @__PURE__ */ jsxs(Navbar, { className: "px-24", children: [
|
|
@@ -66,30 +66,19 @@ const Header = ({
|
|
|
66
66
|
/* @__PURE__ */ jsx(VisuallyHidden, { children: t("conversation") })
|
|
67
67
|
] }) }),
|
|
68
68
|
/* @__PURE__ */ jsx(NavItem, { children: /* @__PURE__ */ jsx(NavLink, { link: "/welcome", translate: t("navbar.applications"), "data-testid": "header-my-apps-button", children: /* @__PURE__ */ jsx(SvgIconMyAppsBeta, {}) }) }),
|
|
69
|
-
/* @__PURE__ */
|
|
70
|
-
/* @__PURE__ */ jsx(ButtonBeta, { leftIcon: /* @__PURE__ */ jsx(SvgIconNotificationBeta, {}), variant: "ghost", onClick: handleNotificationsClick }),
|
|
71
|
-
hasNotificationToday && /* @__PURE__ */ jsx("span", { style: {
|
|
72
|
-
position: "absolute",
|
|
73
|
-
top: 0,
|
|
74
|
-
right: 0,
|
|
75
|
-
width: 15,
|
|
76
|
-
height: 15,
|
|
77
|
-
background: "red",
|
|
78
|
-
borderRadius: "50%",
|
|
79
|
-
border: "2px solid white",
|
|
80
|
-
pointerEvents: "none",
|
|
81
|
-
zIndex: 1,
|
|
82
|
-
display: "block"
|
|
83
|
-
}, "aria-label": t("homepage.notifications.new-badge", {
|
|
84
|
-
defaultValue: "Nouvelle notification"
|
|
85
|
-
}) })
|
|
86
|
-
] }),
|
|
69
|
+
/* @__PURE__ */ jsx(NavItem, { children: /* @__PURE__ */ jsx(ButtonBeta, { leftIcon: /* @__PURE__ */ jsx(SvgIconNotificationBeta, {}), variant: "ghost", onClick: handleNotificationsClick }) }),
|
|
87
70
|
/* @__PURE__ */ jsxs(NavItem, { className: "position-relative", ref: userRef, id: popoverUserId, "aria-haspopup": "true", "aria-expanded": isUserHovered, "data-testid": "header-user-menu-button", children: [
|
|
88
71
|
/* @__PURE__ */ jsx(NavLink, { link: "/userbook/mon-compte", translate: t("navbar.myaccount"), "data-testid": "header-user-profile-button", children: /* @__PURE__ */ jsx(Avatar, { alt: userName, size: "sm", src: userAvatar, variant: "circle", className: "bg-white", width: "32", height: "32" }) }),
|
|
89
|
-
/* @__PURE__ */ jsx(Popover, { align: "end", className: "widget", id: popoverUserId, isVisible: isUserHovered, children: /* @__PURE__ */
|
|
90
|
-
/* @__PURE__ */
|
|
91
|
-
|
|
92
|
-
|
|
72
|
+
/* @__PURE__ */ jsx(Popover, { align: "end", className: "widget", id: popoverUserId, isVisible: isUserHovered, children: /* @__PURE__ */ jsxs(PopoverBody, { children: [
|
|
73
|
+
/* @__PURE__ */ jsxs("a", { href: "/timeline/customize", className: "nav-link customize d-flex align-items-center gap-8", "data-testid": "header-customize-button", children: [
|
|
74
|
+
/* @__PURE__ */ jsx(SvgIconSetBackground, { className: "icon" }),
|
|
75
|
+
/* @__PURE__ */ jsx("span", { id: "cutomize-label", className: "nav-text", children: t("navbar.customize") })
|
|
76
|
+
] }),
|
|
77
|
+
/* @__PURE__ */ jsxs("a", { href: "/auth/logout?callback=" + ((theme == null ? void 0 : theme.logoutCallback) ?? ""), className: "nav-link logout d-flex align-items-center gap-8", "data-testid": "header-logout-button", children: [
|
|
78
|
+
/* @__PURE__ */ jsx(SvgIconDisconnect, { className: "icon logout" }),
|
|
79
|
+
/* @__PURE__ */ jsx("span", { id: "logout-label", className: "nav-text", children: t("navbar.disconnect") })
|
|
80
|
+
] })
|
|
81
|
+
] }) })
|
|
93
82
|
] })
|
|
94
83
|
] })
|
|
95
84
|
] }) });
|
|
@@ -1,15 +1,14 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import NotificationOptionsMenu from "./components/NotificationOptionsMenu.js";
|
|
1
|
+
import { jsxs, Fragment, jsx } from "react/jsx-runtime";
|
|
3
2
|
import SystemNotificationItem from "./components/SystemNotificationItem.js";
|
|
4
3
|
import UserNotificationItem from "./components/UserNotificationItem.js";
|
|
5
4
|
import { notificationAdapter } from "./components/notificationAdapter.js";
|
|
6
5
|
const NotificationItem = ({
|
|
7
6
|
notification
|
|
8
7
|
}) => {
|
|
9
|
-
const notif = notificationAdapter(notification)
|
|
8
|
+
const notif = notificationAdapter(notification);
|
|
10
9
|
return /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
11
|
-
notif.type === "user" && /* @__PURE__ */ jsx(UserNotificationItem, { notification: notif
|
|
12
|
-
notif.type === "system" && /* @__PURE__ */ jsx(SystemNotificationItem, { notification: notif
|
|
10
|
+
notif.type === "user" && /* @__PURE__ */ jsx(UserNotificationItem, { notification: notif }),
|
|
11
|
+
notif.type === "system" && /* @__PURE__ */ jsx(SystemNotificationItem, { notification: notif })
|
|
13
12
|
] });
|
|
14
13
|
};
|
|
15
14
|
export {
|
|
@@ -2,12 +2,6 @@ import { NotificationModel } from '@edifice.io/client';
|
|
|
2
2
|
export type NotificationListProps = {
|
|
3
3
|
/** List of notifications to display */
|
|
4
4
|
notifications?: NotificationModel[];
|
|
5
|
-
/** All notification types available to filter on */
|
|
6
|
-
notificationTypes?: string[];
|
|
7
|
-
/** Notification types currently applied as filter */
|
|
8
|
-
selectedTypes?: string[];
|
|
9
|
-
/** Callback when the user validates a new filter selection */
|
|
10
|
-
onFilterChange?: (types: string[]) => void;
|
|
11
5
|
/** Callback when the notifications list is closed */
|
|
12
6
|
onCloseNotifications?: () => void;
|
|
13
7
|
/** Callback to load the next page of notifications, used for infinite scrolling */
|
|
@@ -18,7 +12,7 @@ export type NotificationListProps = {
|
|
|
18
12
|
isLoading?: boolean;
|
|
19
13
|
};
|
|
20
14
|
declare const NotificationList: {
|
|
21
|
-
({ notifications,
|
|
15
|
+
({ notifications, onCloseNotifications, onLoadNextPage, hasNextPage, isLoading, }: NotificationListProps): import("react/jsx-runtime").JSX.Element;
|
|
22
16
|
displayName: string;
|
|
23
17
|
};
|
|
24
18
|
export default NotificationList;
|
|
@@ -2,7 +2,6 @@ import { jsx, jsxs, Fragment } from "react/jsx-runtime";
|
|
|
2
2
|
import illuEmptyNotification from "@edifice.io/bootstrap/dist/images/homepage/illu-empty-notifications.png";
|
|
3
3
|
import { useTranslation } from "react-i18next";
|
|
4
4
|
import SvgIconClose from "../../../icons/components/IconClose.js";
|
|
5
|
-
import NotificationFilterMenu from "./components/NotificationFilterMenu.js";
|
|
6
5
|
import NotificationItem from "./NotificationItem.js";
|
|
7
6
|
import NotificationListSkeleton from "./NotificationListSkeleton.js";
|
|
8
7
|
import NotificationSkeleton from "./NotificationSkeleton.js";
|
|
@@ -13,9 +12,6 @@ import EmptyScreen from "../../../../components/EmptyScreen/EmptyScreen.js";
|
|
|
13
12
|
import Divider from "../../../../components/Divider/Divider.js";
|
|
14
13
|
const NotificationList = ({
|
|
15
14
|
notifications,
|
|
16
|
-
notificationTypes,
|
|
17
|
-
selectedTypes,
|
|
18
|
-
onFilterChange,
|
|
19
15
|
onCloseNotifications,
|
|
20
16
|
onLoadNextPage,
|
|
21
17
|
hasNextPage,
|
|
@@ -30,10 +26,7 @@ const NotificationList = ({
|
|
|
30
26
|
};
|
|
31
27
|
return /* @__PURE__ */ jsx("section", { role: "region", className: "notification-list", children: /* @__PURE__ */ jsxs(Flex, { direction: "column", children: [
|
|
32
28
|
/* @__PURE__ */ jsxs(Flex, { justify: "between", align: "center", wrap: "nowrap", className: "py-16 ps-24 pe-8", children: [
|
|
33
|
-
/* @__PURE__ */
|
|
34
|
-
/* @__PURE__ */ jsx("h4", { className: "text-truncate", children: t("homepage.notifications-list.title") }),
|
|
35
|
-
notificationTypes && notificationTypes.length > 0 && /* @__PURE__ */ jsx(NotificationFilterMenu, { notificationTypes, selectedTypes: selectedTypes ?? notificationTypes, onFilterChange: (types) => onFilterChange == null ? void 0 : onFilterChange(types) })
|
|
36
|
-
] }),
|
|
29
|
+
/* @__PURE__ */ jsx("h4", { className: "text-truncate", children: t("homepage.notifications-list.title") }),
|
|
37
30
|
onCloseNotifications && /* @__PURE__ */ jsx(ButtonBeta, { color: "tertiary", variant: "ghost", rightIcon: /* @__PURE__ */ jsx(SvgIconClose, {}), onClick: handleCloseClick, "aria-label": t("homepage.notifications-list.close"), title: t("homepage.notifications-list.close"), "data-testid": "notification-list-close-button" })
|
|
38
31
|
] }),
|
|
39
32
|
(notifications == null ? void 0 : notifications.length) === 0 ? /* @__PURE__ */ jsx("div", { className: "mx-24", children: /* @__PURE__ */ jsx(EmptyScreen, { size: 135, imageSrc: illuEmptyNotification, imageAlt: t("homepage.notifications-list.empty.description"), text: t("homepage.notifications-list.empty.description") }) }) : /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
@@ -6,14 +6,11 @@ const NotificationListContainer = ({
|
|
|
6
6
|
}) => {
|
|
7
7
|
const {
|
|
8
8
|
notifications,
|
|
9
|
-
notificationTypes,
|
|
10
|
-
selectedTypes,
|
|
11
|
-
setSelectedTypes,
|
|
12
9
|
hasNextPage,
|
|
13
10
|
loadNextPage,
|
|
14
11
|
isLoading
|
|
15
12
|
} = useNotificationListContainer();
|
|
16
|
-
return /* @__PURE__ */ jsx(NotificationList, { notifications,
|
|
13
|
+
return /* @__PURE__ */ jsx(NotificationList, { notifications, onCloseNotifications, onLoadNextPage: () => {
|
|
17
14
|
hasNextPage && !isLoading && loadNextPage();
|
|
18
15
|
}, hasNextPage, isLoading });
|
|
19
16
|
};
|
package/dist/modules/homepage/components/Notifications/components/CommonNotificationItem.d.ts
CHANGED
|
@@ -5,7 +5,6 @@ export type NotificationItemProps = {
|
|
|
5
5
|
date: Date;
|
|
6
6
|
uri?: string;
|
|
7
7
|
children?: ReactNode;
|
|
8
|
-
menu?: ReactNode;
|
|
9
8
|
};
|
|
10
9
|
/**
|
|
11
10
|
* Base layout for a single notification row.
|
|
@@ -19,7 +18,7 @@ export type NotificationItemProps = {
|
|
|
19
18
|
* `SystemNotification` instead of consuming this directly.
|
|
20
19
|
*/
|
|
21
20
|
declare const CommonNotificationItem: {
|
|
22
|
-
({ picture, message, date, uri, children,
|
|
21
|
+
({ picture, message, date, uri, children, }: NotificationItemProps): import("react/jsx-runtime").JSX.Element;
|
|
23
22
|
displayName: string;
|
|
24
23
|
};
|
|
25
24
|
export default CommonNotificationItem;
|
|
@@ -6,25 +6,21 @@ const CommonNotificationItem = ({
|
|
|
6
6
|
message,
|
|
7
7
|
date,
|
|
8
8
|
uri,
|
|
9
|
-
children
|
|
10
|
-
menu
|
|
9
|
+
children
|
|
11
10
|
}) => {
|
|
12
11
|
const {
|
|
13
12
|
formatTimeAgo,
|
|
14
13
|
formatDate
|
|
15
14
|
} = useDate();
|
|
16
|
-
return /* @__PURE__ */ jsx(Flex, { direction: "column", className: "notification-item", gap: "8", children: /* @__PURE__ */ jsxs(Flex, { direction: "row",
|
|
17
|
-
/* @__PURE__ */
|
|
18
|
-
|
|
19
|
-
/* @__PURE__ */ jsx("
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
] }) })
|
|
26
|
-
] }),
|
|
27
|
-
menu && /* @__PURE__ */ jsx("div", { className: "notification-item-menu", children: menu })
|
|
15
|
+
return /* @__PURE__ */ jsx(Flex, { direction: "column", className: "notification-item", gap: "8", children: /* @__PURE__ */ jsxs(Flex, { direction: "row", gap: "8", children: [
|
|
16
|
+
/* @__PURE__ */ jsx("div", { className: "notification-item-picture", children: picture }),
|
|
17
|
+
/* @__PURE__ */ jsx("a", { href: uri, "data-testid": "notification-item-content", children: /* @__PURE__ */ jsxs(Flex, { direction: "column", gap: "8", children: [
|
|
18
|
+
/* @__PURE__ */ jsx("div", { className: "notification-item-message", dangerouslySetInnerHTML: {
|
|
19
|
+
__html: message
|
|
20
|
+
} }),
|
|
21
|
+
children,
|
|
22
|
+
/* @__PURE__ */ jsx("p", { className: "notification-item-date", title: formatDate(date, "LLL"), children: formatTimeAgo(date) })
|
|
23
|
+
] }) })
|
|
28
24
|
] }) });
|
|
29
25
|
};
|
|
30
26
|
export {
|
package/dist/modules/homepage/components/Notifications/components/SystemNotificationItem.d.ts
CHANGED
|
@@ -1,8 +1,6 @@
|
|
|
1
|
-
import { ReactNode } from 'react';
|
|
2
1
|
import { SystemWebNotification } from './notificationAdapter';
|
|
3
2
|
export type SystemNotificationItemProps = {
|
|
4
3
|
notification: SystemWebNotification;
|
|
5
|
-
menu?: ReactNode;
|
|
6
4
|
};
|
|
7
5
|
/**
|
|
8
6
|
* Renders a system notification (no sender) using an app icon as the picture.
|
|
@@ -11,7 +9,7 @@ export type SystemNotificationItemProps = {
|
|
|
11
9
|
* rather than this component directly.
|
|
12
10
|
*/
|
|
13
11
|
declare const SystemNotificationItem: {
|
|
14
|
-
({ notification,
|
|
12
|
+
({ notification, }: SystemNotificationItemProps): import("react/jsx-runtime").JSX.Element;
|
|
15
13
|
displayName: string;
|
|
16
14
|
};
|
|
17
15
|
export default SystemNotificationItem;
|
|
@@ -3,8 +3,7 @@ import { useTranslation } from "react-i18next";
|
|
|
3
3
|
import CommonNotificationItem from "./CommonNotificationItem.js";
|
|
4
4
|
import AppIcon from "../../../../../components/AppIcon/AppIcon.js";
|
|
5
5
|
const SystemNotificationItem = ({
|
|
6
|
-
notification
|
|
7
|
-
menu
|
|
6
|
+
notification
|
|
8
7
|
}) => {
|
|
9
8
|
const {
|
|
10
9
|
params,
|
|
@@ -14,7 +13,7 @@ const SystemNotificationItem = ({
|
|
|
14
13
|
} = notification, {
|
|
15
14
|
t
|
|
16
15
|
} = useTranslation(), appName = t(params.appCode);
|
|
17
|
-
return /* @__PURE__ */ jsx(CommonNotificationItem, { uri, message, date,
|
|
16
|
+
return /* @__PURE__ */ jsx(CommonNotificationItem, { uri, message, date, picture: /* @__PURE__ */ jsx("a", { href: uri, title: appName, "data-testid": "notification-item-app-icon", "aria-label": t("homepage.notifications.app-icon.placeholder"), children: /* @__PURE__ */ jsx(AppIcon, { app: params.appCode, size: "24", variant: "square", className: "notification-item-app-icon" }) }) });
|
|
18
17
|
};
|
|
19
18
|
export {
|
|
20
19
|
SystemNotificationItem as default
|
|
@@ -1,8 +1,6 @@
|
|
|
1
|
-
import { ReactNode } from 'react';
|
|
2
1
|
import { UserWebNotification } from './notificationAdapter';
|
|
3
2
|
export type UserNotificationItemProps = {
|
|
4
3
|
notification: UserWebNotification;
|
|
5
|
-
menu?: ReactNode;
|
|
6
4
|
};
|
|
7
5
|
/**
|
|
8
6
|
* Renders a user-triggered notification using the sender's avatar as the picture.
|
|
@@ -11,7 +9,7 @@ export type UserNotificationItemProps = {
|
|
|
11
9
|
* — prefer using `Notification` at the top level rather than this component directly.
|
|
12
10
|
*/
|
|
13
11
|
declare const UserNotificationItem: {
|
|
14
|
-
({ notification
|
|
12
|
+
({ notification }: UserNotificationItemProps): import("react/jsx-runtime").JSX.Element;
|
|
15
13
|
displayName: string;
|
|
16
14
|
};
|
|
17
15
|
export default UserNotificationItem;
|
|
@@ -5,8 +5,7 @@ import NotificationItemResource from "./NotificationItemResource.js";
|
|
|
5
5
|
import useDirectory from "../../../../../hooks/useDirectory/useDirectory.js";
|
|
6
6
|
import Avatar from "../../../../../components/Avatar/Avatar.js";
|
|
7
7
|
const UserNotificationItem = ({
|
|
8
|
-
notification
|
|
9
|
-
menu
|
|
8
|
+
notification
|
|
10
9
|
}) => {
|
|
11
10
|
const {
|
|
12
11
|
getAvatarURL,
|
|
@@ -19,7 +18,7 @@ const UserNotificationItem = ({
|
|
|
19
18
|
} = notification, {
|
|
20
19
|
t
|
|
21
20
|
} = useTranslation(), userName = t(params.username);
|
|
22
|
-
return /* @__PURE__ */ jsx(CommonNotificationItem, { uri, message, date,
|
|
21
|
+
return /* @__PURE__ */ jsx(CommonNotificationItem, { uri, message, date, picture: /* @__PURE__ */ jsx("a", { href: getUserbookURL(params.userId, "user"), title: userName, "data-testid": "notification-item-avatar", children: /* @__PURE__ */ jsx(Avatar, { "aria-label": t("homepage.notifications.avatar.placeholder"), src: getAvatarURL(params.userId, "user"), alt: userName, variant: "circle", className: "notification-item-avatar" }) }), children: /* @__PURE__ */ jsx(NotificationItemResource, { appCode: params.appCode, appI18nKey: params.appI18nKey }) });
|
|
23
22
|
};
|
|
24
23
|
export {
|
|
25
24
|
UserNotificationItem as default
|
|
@@ -26,7 +26,6 @@ export type SystemWebNotification = WebNotificationBase & {
|
|
|
26
26
|
};
|
|
27
27
|
/** Discriminated union — narrow on `type` to get the specific variant. */
|
|
28
28
|
export type WebNotification = UserWebNotification | SystemWebNotification;
|
|
29
|
-
export declare const getAppCodeAndI18nKey: (appCode: string) => [string, string];
|
|
30
29
|
/**
|
|
31
30
|
* Transforms a raw `NotificationModel` (API shape) into a `WebNotification`
|
|
32
31
|
* ready for rendering.
|