@edifice.io/react 2.5.2-develop-integration.20251203171920 → 2.5.2-develop-b2school-actualites.20251204091630

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 (62) hide show
  1. package/dist/components/AppIcon/index.d.ts +1 -0
  2. package/dist/components/Divider/Divider.d.ts +5 -0
  3. package/dist/components/Divider/Divider.js +21 -0
  4. package/dist/components/Divider/index.d.ts +1 -0
  5. package/dist/components/Flex/Flex.js +1 -1
  6. package/dist/components/Menu/components/MenuButton.d.ts +2 -0
  7. package/dist/components/Menu/components/MenuButton.js +13 -4
  8. package/dist/components/Select/Select.d.ts +6 -2
  9. package/dist/components/Select/Select.js +10 -4
  10. package/dist/components/SeparatedInfo/SeparatedInfo.d.ts +6 -0
  11. package/dist/components/SeparatedInfo/SeparatedInfo.js +13 -0
  12. package/dist/components/SeparatedInfo/index.d.ts +1 -0
  13. package/dist/components/index.d.ts +2 -0
  14. package/dist/editor.js +40 -36
  15. package/dist/hooks/index.d.ts +1 -0
  16. package/dist/hooks/useInfiniteScroll/index.d.ts +1 -0
  17. package/dist/hooks/useInfiniteScroll/useInfiniteScroll.d.ts +33 -0
  18. package/dist/hooks/useInfiniteScroll/useInfiniteScroll.js +20 -0
  19. package/dist/icons-apps.js +232 -234
  20. package/dist/icons.js +262 -262
  21. package/dist/index.js +84 -74
  22. package/dist/modals.js +8 -6
  23. package/dist/modules/comments/components/Comment.js +5 -3
  24. package/dist/modules/comments/components/CommentList.js +1 -1
  25. package/dist/modules/comments/components/DeleteModal.js +14 -8
  26. package/dist/modules/comments/constants.d.ts +4 -1
  27. package/dist/modules/comments/constants.js +2 -2
  28. package/dist/modules/comments/provider/CommentProvider.js +2 -2
  29. package/dist/modules/comments/types.d.ts +2 -2
  30. package/dist/modules/editor/components/Editor/EditorPreview.d.ts +14 -0
  31. package/dist/modules/editor/components/Editor/EditorPreview.js +56 -0
  32. package/dist/modules/editor/components/Editor/EditorPreviewSkeleton.d.ts +8 -0
  33. package/dist/modules/editor/components/Editor/EditorPreviewSkeleton.js +24 -0
  34. package/dist/modules/editor/components/Editor/index.d.ts +2 -0
  35. package/dist/modules/icons/components/IconClockAlert.d.ts +7 -0
  36. package/dist/modules/icons/components/IconClockAlert.js +17 -0
  37. package/dist/modules/icons/components/apps/index.d.ts +0 -1
  38. package/dist/modules/icons/components/index.d.ts +1 -1
  39. package/dist/modules/modals/ResourceModal/ResourceModal.d.ts +0 -1
  40. package/dist/modules/modals/ResourceModal/ResourceModal.js +3 -10
  41. package/dist/modules/modals/ShareModal/ShareBookmark.d.ts +1 -1
  42. package/dist/modules/modals/ShareModal/ShareBookmark.js +5 -2
  43. package/dist/modules/modals/ShareModal/ShareModal.d.ts +1 -11
  44. package/dist/modules/modals/ShareModal/ShareModal.js +13 -105
  45. package/dist/modules/modals/ShareModal/ShareResources.d.ts +173 -0
  46. package/dist/modules/modals/ShareModal/ShareResources.js +137 -0
  47. package/dist/modules/modals/ShareModal/hooks/useSearch.d.ts +2 -1
  48. package/dist/modules/modals/ShareModal/hooks/useSearch.js +3 -2
  49. package/dist/modules/modals/ShareModal/hooks/useShare.d.ts +12 -5
  50. package/dist/modules/modals/ShareModal/hooks/useShare.js +20 -13
  51. package/dist/modules/modals/ShareModal/hooks/useShareBookmark.d.ts +1 -1
  52. package/dist/modules/modals/ShareModal/hooks/useShareBookmark.js +1 -1
  53. package/dist/modules/modals/ShareModal/index.d.ts +3 -1
  54. package/dist/utilities/index.d.ts +1 -0
  55. package/dist/utilities/react-query/index.d.ts +1 -0
  56. package/dist/utilities/react-query/react-query-utils.d.ts +21 -0
  57. package/dist/utilities/react-query/react-query-utils.js +13 -0
  58. package/package.json +6 -6
  59. package/dist/modules/icons/components/IconUndoSlashed.d.ts +0 -7
  60. package/dist/modules/icons/components/IconUndoSlashed.js +0 -12
  61. package/dist/modules/icons/components/apps/IconAssistancetic.d.ts +0 -7
  62. package/dist/modules/icons/components/apps/IconAssistancetic.js +0 -14
package/dist/index.js CHANGED
@@ -63,52 +63,56 @@ import { default as default62 } from "./hooks/useHasWorkflow/useHasWorkflow.js";
63
63
  import { default as default63 } from "./hooks/useHover/useHover.js";
64
64
  import { useHttpErrorToast } from "./hooks/useHttpErrorToast/useHttpErrorToast.js";
65
65
  import { default as default64 } from "./hooks/useImage/useImage.js";
66
- import { default as default65 } from "./hooks/useIsAdml/useIsAdml.js";
67
- import { default as default66 } from "./hooks/useIsAdmc/useIsAdmc.js";
68
- import { default as default67 } from "./hooks/useIsAdmlcOrAdmc/useIsAdmlcOrAdmc.js";
69
- import { default as default68 } from "./hooks/useKeyPress/useKeyPress.js";
70
- import { default as default69 } from "./hooks/useLibraryUrl/useLibraryUrl.js";
71
- import { default as default70 } from "./hooks/useMediaLibrary/useMediaLibrary.js";
72
- import { default as default71 } from "./hooks/useScrollToTop/useScrollToTop.js";
73
- import { default as default72 } from "./hooks/useTitle/useTitle.js";
74
- import { default as default73 } from "./hooks/useToast/useToast.js";
75
- import { default as default74 } from "./hooks/useToggle/useToggle.js";
76
- import { default as default75 } from "./hooks/useTrapFocus/useTrapFocus.js";
77
- import { default as default76 } from "./hooks/useTrashedResource/useTrashedResource.js";
78
- import { default as default77 } from "./hooks/useUpload/useUpload.js";
79
- import { default as default78 } from "./hooks/useUploadFiles/useUploadFiles.js";
80
- import { default as default79 } from "./hooks/useUser/useUser.js";
81
- import { default as default80 } from "./hooks/useWorkspaceFile/useWorkspaceFile.js";
82
- import { default as default81 } from "./hooks/useWorkspaceFolders/useWorkspaceFolders.js";
83
- import { WORKSPACE_SHARED_FOLDER_ID, WORKSPACE_USER_FOLDER_ID, default as default82 } from "./hooks/useWorkspaceFolders/useWorkspaceFoldersTree.js";
84
- import { default as default83 } from "./hooks/useWorkspaceSearch/useWorkspaceSearch.js";
85
- import { default as default84 } from "./hooks/useXitiTrackPageLoad/useXitiTrackPageLoad.js";
86
- import { default as default85 } from "./hooks/useZendeskGuide/useZendeskGuide.js";
87
- import { default as default86 } from "./modules/modals/ConfirmModal/ConfirmModal.js";
88
- import { default as default87 } from "./modules/modals/OnboardingModal/OnboardingModal.js";
89
- import { default as default88 } from "./modules/modals/PublishModal/PublishModal.js";
90
- import { default as default89 } from "./modules/modals/ResourceModal/apps/BlogPublic.js";
91
- import { default as default90 } from "./modules/modals/ResourceModal/hooks/useUpdateMutation.js";
92
- import { default as default91 } from "./modules/modals/ShareModal/ShareModal.js";
66
+ import { default as default65 } from "./hooks/useInfiniteScroll/useInfiniteScroll.js";
67
+ import { default as default66 } from "./hooks/useIsAdml/useIsAdml.js";
68
+ import { default as default67 } from "./hooks/useIsAdmc/useIsAdmc.js";
69
+ import { default as default68 } from "./hooks/useIsAdmlcOrAdmc/useIsAdmlcOrAdmc.js";
70
+ import { default as default69 } from "./hooks/useKeyPress/useKeyPress.js";
71
+ import { default as default70 } from "./hooks/useLibraryUrl/useLibraryUrl.js";
72
+ import { default as default71 } from "./hooks/useMediaLibrary/useMediaLibrary.js";
73
+ import { default as default72 } from "./hooks/useScrollToTop/useScrollToTop.js";
74
+ import { default as default73 } from "./hooks/useTitle/useTitle.js";
75
+ import { default as default74 } from "./hooks/useToast/useToast.js";
76
+ import { default as default75 } from "./hooks/useToggle/useToggle.js";
77
+ import { default as default76 } from "./hooks/useTrapFocus/useTrapFocus.js";
78
+ import { default as default77 } from "./hooks/useTrashedResource/useTrashedResource.js";
79
+ import { default as default78 } from "./hooks/useUpload/useUpload.js";
80
+ import { default as default79 } from "./hooks/useUploadFiles/useUploadFiles.js";
81
+ import { default as default80 } from "./hooks/useUser/useUser.js";
82
+ import { default as default81 } from "./hooks/useWorkspaceFile/useWorkspaceFile.js";
83
+ import { default as default82 } from "./hooks/useWorkspaceFolders/useWorkspaceFolders.js";
84
+ import { WORKSPACE_SHARED_FOLDER_ID, WORKSPACE_USER_FOLDER_ID, default as default83 } from "./hooks/useWorkspaceFolders/useWorkspaceFoldersTree.js";
85
+ import { default as default84 } from "./hooks/useWorkspaceSearch/useWorkspaceSearch.js";
86
+ import { default as default85 } from "./hooks/useXitiTrackPageLoad/useXitiTrackPageLoad.js";
87
+ import { default as default86 } from "./hooks/useZendeskGuide/useZendeskGuide.js";
88
+ import { default as default87 } from "./modules/modals/ConfirmModal/ConfirmModal.js";
89
+ import { default as default88 } from "./modules/modals/OnboardingModal/OnboardingModal.js";
90
+ import { default as default89 } from "./modules/modals/PublishModal/PublishModal.js";
91
+ import { default as default90 } from "./modules/modals/ResourceModal/apps/BlogPublic.js";
92
+ import { default as default91 } from "./modules/modals/ResourceModal/hooks/useUpdateMutation.js";
93
93
  import { default as default92 } from "./modules/modals/ShareModal/apps/ShareBlog.js";
94
94
  import { default as default93 } from "./modules/modals/ShareModal/hooks/useShareMutation.js";
95
- import { default as default94 } from "./modules/multimedia/AudioRecorder/AudioRecorder.js";
96
- import { default as default95 } from "./modules/multimedia/Embed/Embed.js";
97
- import { default as default96 } from "./modules/multimedia/ImageEditor/components/ImageEditor.js";
98
- import { default as default97 } from "./modules/multimedia/ImagePicker/ImagePicker.js";
99
- import { default as default98 } from "./modules/multimedia/FileCard/FileCard.js";
100
- import { default as default99 } from "./modules/multimedia/MediaLibrary/MediaLibrary.js";
101
- import { default as default100 } from "./modules/multimedia/VideoEmbed/VideoEmbed.js";
102
- import { default as default101 } from "./modules/multimedia/VideoRecorder/VideoRecorder.js";
103
- import { default as default102 } from "./modules/multimedia/Workspace/Workspace.js";
104
- import { default as default103 } from "./modules/multimedia/WorkspaceFolders/WorkspaceFolders.js";
95
+ import { default as default94 } from "./modules/modals/ShareModal/ShareModal.js";
96
+ import { default as default95 } from "./modules/modals/ShareModal/ShareResources.js";
97
+ import { default as default96 } from "./modules/multimedia/AudioRecorder/AudioRecorder.js";
98
+ import { default as default97 } from "./modules/multimedia/Embed/Embed.js";
99
+ import { default as default98 } from "./modules/multimedia/ImageEditor/components/ImageEditor.js";
100
+ import { default as default99 } from "./modules/multimedia/ImagePicker/ImagePicker.js";
101
+ import { default as default100 } from "./modules/multimedia/FileCard/FileCard.js";
102
+ import { default as default101 } from "./modules/multimedia/MediaLibrary/MediaLibrary.js";
103
+ import { default as default102 } from "./modules/multimedia/VideoEmbed/VideoEmbed.js";
104
+ import { default as default103 } from "./modules/multimedia/VideoRecorder/VideoRecorder.js";
105
+ import { default as default104 } from "./modules/multimedia/Workspace/Workspace.js";
106
+ import { default as default105 } from "./modules/multimedia/WorkspaceFolders/WorkspaceFolders.js";
105
107
  import { AccessiblePalette, DefaultPalette } from "./components/ColorPicker/ColorPalette.js";
108
+ import { Divider } from "./components/Divider/Divider.js";
106
109
  import { DropzoneContext, useDropzoneContext } from "./components/Dropzone/DropzoneContext.js";
107
110
  import { Column, Grid } from "./components/Grid/Grid.js";
108
111
  import { Layout } from "./components/Layout/Layout.js";
109
112
  import { List } from "./components/List/List.js";
110
113
  import { Menu } from "./components/Menu/components/Menu.js";
111
114
  import { Popover, PopoverBody, PopoverFooter, PopoverHeader } from "./components/Popover/Popover.js";
115
+ import { SeparatedInfo } from "./components/SeparatedInfo/SeparatedInfo.js";
112
116
  import { Tabs } from "./components/Tabs/components/Tabs.js";
113
117
  import { Toolbar } from "./components/Toolbar/Toolbar.js";
114
118
  import { useTreeSortable } from "./components/Tree/hooks/useTreeSortable.js";
@@ -130,6 +134,7 @@ import { useEdificeTheme } from "./providers/EdificeThemeProvider/EdificeThemePr
130
134
  import { MockedProvider } from "./providers/MockedProvider/MockedProvider.js";
131
135
  import { checkUserRight } from "./utilities/check-user-rights/check-user-rights.js";
132
136
  import { emptyScreenMapping } from "./utilities/emptyscreen-mapping/emptyscreen-mapping.js";
137
+ import { invalidateQueriesWithFirstPage } from "./utilities/react-query/react-query-utils.js";
133
138
  import { mergeRefs, setRef } from "./utilities/refs/ref.js";
134
139
  export {
135
140
  AccessiblePalette,
@@ -139,11 +144,11 @@ export {
139
144
  default4 as AppHeader,
140
145
  default5 as AppIcon,
141
146
  default6 as Attachment,
142
- default94 as AudioRecorder,
147
+ default96 as AudioRecorder,
143
148
  default7 as Avatar,
144
149
  default8 as AvatarGroup,
145
150
  default9 as Badge,
146
- default89 as BlogPublic,
151
+ default90 as BlogPublic,
147
152
  default10 as Breadcrumb,
148
153
  default11 as Button,
149
154
  default38 as ButtonSkeleton,
@@ -153,8 +158,9 @@ export {
153
158
  default17 as ColorPickerItem,
154
159
  Column,
155
160
  default18 as Combobox,
156
- default86 as ConfirmModal,
161
+ default87 as ConfirmModal,
157
162
  DefaultPalette,
163
+ Divider,
158
164
  DndTree,
159
165
  default19 as Dropdown,
160
166
  default20 as Dropzone,
@@ -163,10 +169,10 @@ export {
163
169
  EdificeClientProvider,
164
170
  EdificeThemeContext,
165
171
  EdificeThemeProvider,
166
- default95 as Embed,
172
+ default97 as Embed,
167
173
  default21 as EmptyScreen,
168
174
  ExternalLinker,
169
- default98 as FileCard,
175
+ default100 as FileCard,
170
176
  default22 as Flex,
171
177
  default24 as FormControl,
172
178
  default23 as FormText,
@@ -174,8 +180,8 @@ export {
174
180
  default25 as Heading,
175
181
  default12 as IconButton,
176
182
  default26 as Image,
177
- default96 as ImageEditor,
178
- default97 as ImagePicker,
183
+ default98 as ImageEditor,
184
+ default99 as ImagePicker,
179
185
  default27 as Input,
180
186
  InternalLinker,
181
187
  default28 as Label,
@@ -184,25 +190,27 @@ export {
184
190
  default29 as Loading,
185
191
  default30 as LoadingScreen,
186
192
  default31 as Logo,
187
- default99 as MediaLibrary,
193
+ default101 as MediaLibrary,
188
194
  Menu,
189
195
  MockedProvider,
190
196
  default32 as Modal,
191
- default87 as OnboardingModal,
197
+ default88 as OnboardingModal,
192
198
  Popover,
193
199
  PopoverBody,
194
200
  PopoverFooter,
195
201
  PopoverHeader,
196
202
  default33 as PreventPropagation,
197
- default88 as PublishModal,
203
+ default89 as PublishModal,
198
204
  default34 as Radio,
199
205
  default35 as RadioCard,
200
206
  ResourceModal,
201
207
  default36 as SearchBar,
202
208
  default13 as SearchButton,
203
209
  default37 as Select,
210
+ SeparatedInfo,
204
211
  default92 as ShareBlog,
205
- default91 as ShareModal,
212
+ default94 as ShareModal,
213
+ default95 as ShareResources,
206
214
  default46 as SortableTree,
207
215
  default40 as StackedGroup,
208
216
  default41 as Stepper,
@@ -217,13 +225,13 @@ export {
217
225
  TreeNode,
218
226
  TreeNodeFolderWrapper,
219
227
  default48 as TreeView,
220
- default100 as VideoEmbed,
221
- default101 as VideoRecorder,
228
+ default102 as VideoEmbed,
229
+ default103 as VideoRecorder,
222
230
  default49 as VisuallyHidden,
223
231
  WORKSPACE_SHARED_FOLDER_ID,
224
232
  WORKSPACE_USER_FOLDER_ID,
225
- default102 as Workspace,
226
- default103 as WorkspaceFolders,
233
+ default104 as Workspace,
234
+ default105 as WorkspaceFolders,
227
235
  addNode,
228
236
  arrayUnique,
229
237
  buildTree,
@@ -245,6 +253,7 @@ export {
245
253
  getIndicesToUpdate,
246
254
  getProjection,
247
255
  hasChildren,
256
+ invalidateQueriesWithFirstPage,
248
257
  mergeRefs,
249
258
  modifyNode,
250
259
  moveNode,
@@ -271,30 +280,31 @@ export {
271
280
  default63 as useHover,
272
281
  useHttpErrorToast,
273
282
  default64 as useImage,
274
- default66 as useIsAdmc,
275
- default65 as useIsAdml,
276
- default67 as useIsAdmlcOrAdmc,
277
- default68 as useKeyPress,
278
- default69 as useLibraryUrl,
279
- default70 as useMediaLibrary,
280
- default71 as useScrollToTop,
283
+ default65 as useInfiniteScroll,
284
+ default67 as useIsAdmc,
285
+ default66 as useIsAdml,
286
+ default68 as useIsAdmlcOrAdmc,
287
+ default69 as useKeyPress,
288
+ default70 as useLibraryUrl,
289
+ default71 as useMediaLibrary,
290
+ default72 as useScrollToTop,
281
291
  default93 as useShareMutation,
282
- default72 as useTitle,
283
- default73 as useToast,
284
- default74 as useToggle,
285
- default75 as useTrapFocus,
286
- default76 as useTrashedResource,
292
+ default73 as useTitle,
293
+ default74 as useToast,
294
+ default75 as useToggle,
295
+ default76 as useTrapFocus,
296
+ default77 as useTrashedResource,
287
297
  useTreeSortable,
288
298
  useTreeView,
289
- default90 as useUpdateMutation,
290
- default77 as useUpload,
291
- default78 as useUploadFiles,
292
- default79 as useUser,
293
- default80 as useWorkspaceFile,
294
- default81 as useWorkspaceFolders,
295
- default82 as useWorkspaceFoldersTree,
296
- default83 as useWorkspaceSearch,
297
- default84 as useXitiTrackPageLoad,
298
- default85 as useZendeskGuide,
299
+ default91 as useUpdateMutation,
300
+ default78 as useUpload,
301
+ default79 as useUploadFiles,
302
+ default80 as useUser,
303
+ default81 as useWorkspaceFile,
304
+ default82 as useWorkspaceFolders,
305
+ default83 as useWorkspaceFoldersTree,
306
+ default84 as useWorkspaceSearch,
307
+ default85 as useXitiTrackPageLoad,
308
+ default86 as useZendeskGuide,
299
309
  wrapTreeNode
300
310
  };
package/dist/modals.js CHANGED
@@ -3,9 +3,10 @@ import { default as default3 } from "./modules/modals/OnboardingModal/Onboarding
3
3
  import { default as default4 } from "./modules/modals/PublishModal/PublishModal.js";
4
4
  import { default as default5 } from "./modules/modals/ResourceModal/apps/BlogPublic.js";
5
5
  import { default as default6 } from "./modules/modals/ResourceModal/hooks/useUpdateMutation.js";
6
- import { default as default7 } from "./modules/modals/ShareModal/ShareModal.js";
7
- import { default as default8 } from "./modules/modals/ShareModal/apps/ShareBlog.js";
8
- import { default as default9 } from "./modules/modals/ShareModal/hooks/useShareMutation.js";
6
+ import { default as default7 } from "./modules/modals/ShareModal/apps/ShareBlog.js";
7
+ import { default as default8 } from "./modules/modals/ShareModal/hooks/useShareMutation.js";
8
+ import { default as default9 } from "./modules/modals/ShareModal/ShareModal.js";
9
+ import { default as default10 } from "./modules/modals/ShareModal/ShareResources.js";
9
10
  import { ResourceModal } from "./modules/modals/ResourceModal/ResourceModal.js";
10
11
  export {
11
12
  default5 as BlogPublic,
@@ -13,8 +14,9 @@ export {
13
14
  default3 as OnboardingModal,
14
15
  default4 as PublishModal,
15
16
  ResourceModal,
16
- default8 as ShareBlog,
17
- default7 as ShareModal,
18
- default9 as useShareMutation,
17
+ default7 as ShareBlog,
18
+ default9 as ShareModal,
19
+ default10 as ShareResources,
20
+ default8 as useShareMutation,
19
21
  default6 as useUpdateMutation
20
22
  };
@@ -8,9 +8,9 @@ import { BadgeProfile } from "./BadgeProfile.js";
8
8
  import { CommentAvatar } from "./CommentAvatar.js";
9
9
  import { CommentDate } from "./CommentDate.js";
10
10
  import { CommentTitle } from "./CommentTitle.js";
11
- import { TextCounter } from "./TextCounter.js";
12
11
  import { CommentDeleted } from "./CommentDeleted.js";
13
12
  import { CommentReplies } from "./CommentReplies.js";
13
+ import { TextCounter } from "./TextCounter.js";
14
14
  import Button from "../../../components/Button/Button.js";
15
15
  import LoadingScreen from "../../../components/LoadingScreen/LoadingScreen.js";
16
16
  const DeleteModal = /* @__PURE__ */ lazy(() => import("./DeleteModal.js")), Comment = ({
@@ -41,6 +41,8 @@ const DeleteModal = /* @__PURE__ */ lazy(() => import("./DeleteModal.js")), Comm
41
41
  handleReplyToComment
42
42
  } = useCommentsContext(), replies = (defaultComments == null ? void 0 : defaultComments.filter((comm) => comm.replyTo === comment.id)) ?? [], hasReplies = replies.length > 0, hasAllDeletedReplies = replies.every((reply) => reply.deleted), isEditing = editCommentId === comment.id, handleChangeContent = (event) => {
43
43
  resizeTextarea(), setValue(event.target.value);
44
+ }, handleDeleteComment = (id2) => {
45
+ onDeleteComment(id2), setIsDeleteModalOpen(!1);
44
46
  };
45
47
  return /* @__PURE__ */ jsxs(Fragment, { children: [
46
48
  comment.deleted && hasReplies && !hasAllDeletedReplies && /* @__PURE__ */ jsxs(Fragment, { children: [
@@ -73,7 +75,7 @@ const DeleteModal = /* @__PURE__ */ lazy(() => import("./DeleteModal.js")), Comm
73
75
  whiteSpace: "pre-line"
74
76
  }, children: content }),
75
77
  type === "edit" && /* @__PURE__ */ jsxs("div", { className: "ms-n8", children: [
76
- !replyTo && options.allowReplies && /* @__PURE__ */ jsx(Button, { variant: "ghost", color: "tertiary", size: "sm", onClick: () => handleReplyToComment(comment.id), children: t("comment.reply") }),
78
+ !(replyTo || options.disableReply) && /* @__PURE__ */ jsx(Button, { variant: "ghost", color: "tertiary", size: "sm", onClick: () => handleReplyToComment(comment.id), children: t("comment.reply") }),
77
79
  userId === authorId && /* @__PURE__ */ jsx(Button, { variant: "ghost", color: "tertiary", size: "sm", onClick: () => {
78
80
  handleModifyComment(comment.id), setValue(content);
79
81
  }, children: t("comment.edit") }),
@@ -83,7 +85,7 @@ const DeleteModal = /* @__PURE__ */ lazy(() => import("./DeleteModal.js")), Comm
83
85
  ] })
84
86
  ] }, id),
85
87
  /* @__PURE__ */ jsx(CommentReplies, { parentComment: comment }),
86
- /* @__PURE__ */ jsx(Suspense, { fallback: /* @__PURE__ */ jsx(LoadingScreen, { position: !1 }), children: isDeleteModalOpen && /* @__PURE__ */ jsx(DeleteModal, { isOpen: isDeleteModalOpen, onCancel: () => setIsDeleteModalOpen(!1), onSuccess: () => onDeleteComment(id) }) })
88
+ /* @__PURE__ */ jsx(Suspense, { fallback: /* @__PURE__ */ jsx(LoadingScreen, { position: !1 }), children: isDeleteModalOpen && /* @__PURE__ */ jsx(DeleteModal, { isOpen: isDeleteModalOpen, onCancel: () => setIsDeleteModalOpen(!1), onSuccess: () => handleDeleteComment(id) }) })
87
89
  ] })
88
90
  ] });
89
91
  };
@@ -14,7 +14,7 @@ function CommentList() {
14
14
  const {
15
15
  authorId
16
16
  } = comment, profile = ((_a = profiles == null ? void 0 : profiles.find((user2) => (user2 == null ? void 0 : user2.userId) === authorId)) == null ? void 0 : _a.profile) ?? "Guest";
17
- return /* @__PURE__ */ jsx("div", { children: /* @__PURE__ */ jsx(Comment, { comment, profile, userId: user == null ? void 0 : user.userId }) }, comment.id);
17
+ return /* @__PURE__ */ jsx("div", { id: `comment-${comment.id}`, children: /* @__PURE__ */ jsx(Comment, { comment, profile, userId: user == null ? void 0 : user.userId }) }, comment.id);
18
18
  });
19
19
  }
20
20
  export {
@@ -1,18 +1,24 @@
1
1
  import { jsxs, jsx } from "react/jsx-runtime";
2
+ import { useTranslation } from "react-i18next";
2
3
  import Modal from "../../../components/Modal/Modal.js";
3
4
  import Button from "../../../components/Button/Button.js";
4
5
  const DeleteModal = ({
5
6
  isOpen,
6
7
  onCancel,
7
8
  onSuccess
8
- }) => /* @__PURE__ */ jsxs(Modal, { isOpen, onModalClose: onCancel, id: "delete-comment-modal", children: [
9
- /* @__PURE__ */ jsx(Modal.Header, { onModalClose: onCancel, children: "Suppression de commentaire" }),
10
- /* @__PURE__ */ jsx(Modal.Body, { children: /* @__PURE__ */ jsx("p", { children: "Voulez-vous vraiment supprimer ce commentaire ?" }) }),
11
- /* @__PURE__ */ jsxs(Modal.Footer, { children: [
12
- /* @__PURE__ */ jsx(Button, { color: "tertiary", onClick: onCancel, type: "button", variant: "ghost", children: "Annuler" }),
13
- /* @__PURE__ */ jsx(Button, { color: "danger", onClick: onSuccess, type: "button", variant: "filled", children: "Supprimer le commentaire" })
14
- ] })
15
- ] });
9
+ }) => {
10
+ const {
11
+ t
12
+ } = useTranslation();
13
+ return /* @__PURE__ */ jsxs(Modal, { size: "sm", isOpen, onModalClose: onCancel, id: "delete-comment-modal", children: [
14
+ /* @__PURE__ */ jsx(Modal.Header, { onModalClose: onCancel, children: t("comment.delete.modal.title") }),
15
+ /* @__PURE__ */ jsx(Modal.Body, { children: /* @__PURE__ */ jsx("p", { children: t("comment.delete.modal.body") }) }),
16
+ /* @__PURE__ */ jsxs(Modal.Footer, { children: [
17
+ /* @__PURE__ */ jsx(Button, { color: "tertiary", onClick: onCancel, type: "button", variant: "ghost", children: t("cancel") }),
18
+ /* @__PURE__ */ jsx(Button, { color: "danger", onClick: onSuccess, type: "button", variant: "filled", children: t("comment.delete.modal.delete") })
19
+ ] })
20
+ ] });
21
+ };
16
22
  export {
17
23
  DeleteModal,
18
24
  DeleteModal as default
@@ -22,4 +22,7 @@ export declare const DEFAULT_MAX_REPLIES = 5;
22
22
  * Number of comments to add when adding more comment in the limited list
23
23
  */
24
24
  export declare const DEFAULT_ADD_REPLIES = 5;
25
- export declare const DEFAULT_ALLOW_REPLIES = true;
25
+ /**
26
+ * Forbid replying to a comment. Defaults to false.
27
+ */
28
+ export declare const DEFAULT_DISABLE_REPLY = false;
@@ -1,8 +1,8 @@
1
- const DEFAULT_MAX_COMMENT_LENGTH = 200, DEFAULT_MAX_REPLY_LENGTH = 200, DEFAULT_MAX_COMMENTS = 4, DEFAULT_ADD_COMMENTS = 5, DEFAULT_MAX_REPLIES = 5, DEFAULT_ADD_REPLIES = 5, DEFAULT_ALLOW_REPLIES = !0;
1
+ const DEFAULT_MAX_COMMENT_LENGTH = 200, DEFAULT_MAX_REPLY_LENGTH = 200, DEFAULT_MAX_COMMENTS = 4, DEFAULT_ADD_COMMENTS = 5, DEFAULT_MAX_REPLIES = 5, DEFAULT_ADD_REPLIES = 5, DEFAULT_DISABLE_REPLY = !1;
2
2
  export {
3
3
  DEFAULT_ADD_COMMENTS,
4
4
  DEFAULT_ADD_REPLIES,
5
- DEFAULT_ALLOW_REPLIES,
5
+ DEFAULT_DISABLE_REPLY,
6
6
  DEFAULT_MAX_COMMENTS,
7
7
  DEFAULT_MAX_COMMENT_LENGTH,
8
8
  DEFAULT_MAX_REPLIES,
@@ -3,7 +3,7 @@ import { useMemo } from "react";
3
3
  import { CommentForm } from "../components/CommentForm.js";
4
4
  import { CommentHeader } from "../components/CommentHeader.js";
5
5
  import { CommentList } from "../components/CommentList.js";
6
- import { DEFAULT_ALLOW_REPLIES, DEFAULT_ADD_REPLIES, DEFAULT_MAX_REPLIES, DEFAULT_ADD_COMMENTS, DEFAULT_MAX_COMMENTS, DEFAULT_MAX_REPLY_LENGTH, DEFAULT_MAX_COMMENT_LENGTH } from "../constants.js";
6
+ import { DEFAULT_DISABLE_REPLY, DEFAULT_ADD_REPLIES, DEFAULT_MAX_REPLIES, DEFAULT_ADD_COMMENTS, DEFAULT_MAX_COMMENTS, DEFAULT_MAX_REPLY_LENGTH, DEFAULT_MAX_COMMENT_LENGTH } from "../constants.js";
7
7
  import { CommentContext } from "../context/Context.js";
8
8
  import { useComments } from "../hooks/useComments.js";
9
9
  import Button from "../../../components/Button/Button.js";
@@ -20,7 +20,7 @@ const CommentProvider = ({
20
20
  additionalComments: DEFAULT_ADD_COMMENTS,
21
21
  maxReplies: DEFAULT_MAX_REPLIES,
22
22
  additionalReplies: DEFAULT_ADD_REPLIES,
23
- allowReplies: DEFAULT_ALLOW_REPLIES,
23
+ disableReply: DEFAULT_DISABLE_REPLY,
24
24
  ...commentOptions
25
25
  }, {
26
26
  type
@@ -105,9 +105,9 @@ export type CommentOptions = {
105
105
  */
106
106
  additionalReplies: number;
107
107
  /**
108
- * Allow replying to comments
108
+ * Forbid replying to a comment. Defaults to false.
109
109
  */
110
- allowReplies: boolean;
110
+ disableReply: boolean;
111
111
  };
112
112
  export interface UserProfileResult {
113
113
  /**
@@ -0,0 +1,14 @@
1
+ /**
2
+ * Editor component properties
3
+ */
4
+ export interface EditorPreviewProps {
5
+ /** Rich content to render. */
6
+ content: string;
7
+ /** Display with or without a border */
8
+ variant?: 'outline' | 'ghost';
9
+ onDetailClick?: () => void;
10
+ onMediaClick?: () => void;
11
+ maxMediaDisplayed?: number;
12
+ }
13
+ declare const EditorPreview: ({ content, variant, onDetailClick, onMediaClick, maxMediaDisplayed, }: EditorPreviewProps) => import("react/jsx-runtime").JSX.Element;
14
+ export default EditorPreview;
@@ -0,0 +1,56 @@
1
+ import { jsxs, jsx } from "react/jsx-runtime";
2
+ import { useState, useEffect } from "react";
3
+ import clsx from "clsx";
4
+ import { getThumbnail } from "@edifice.io/utilities";
5
+ import { useTranslation } from "react-i18next";
6
+ import Image from "../../../../components/Image/Image.js";
7
+ const EditorPreview = ({
8
+ content,
9
+ variant = "outline",
10
+ onDetailClick,
11
+ onMediaClick,
12
+ maxMediaDisplayed = 3
13
+ }) => {
14
+ const {
15
+ t
16
+ } = useTranslation(), [summaryContent, setSummaryContent] = useState(""), [medias, setMedias] = useState([]), borderClass = clsx(variant === "outline" && "border rounded-3 py-12 px-16"), hasMediaCallback = onDetailClick || onMediaClick, handleMediaClick = (e) => {
17
+ onMediaClick && (e.stopPropagation(), onMediaClick());
18
+ };
19
+ return useEffect(() => {
20
+ const contentHTML = content;
21
+ if (contentHTML) {
22
+ const doc = new DOMParser().parseFromString(contentHTML, "text/html"), mediaElements = Array.from(doc.querySelectorAll("img, video, iframe, audio, embed"));
23
+ setMedias(mediaElements.filter((el) => el.tagName.toLowerCase() === "img").map((el) => {
24
+ const image = el;
25
+ return image.src ? {
26
+ url: getThumbnail(image.src, 0, 300),
27
+ alt: image.alt
28
+ } : {
29
+ url: "",
30
+ alt: ""
31
+ };
32
+ })), mediaElements.forEach((el) => {
33
+ var _a;
34
+ return (_a = el.parentNode) == null ? void 0 : _a.removeChild(el);
35
+ }), setSummaryContent(doc.body.textContent || "");
36
+ }
37
+ }, [content]), /* @__PURE__ */ jsxs("div", { className: borderClass, "data-testid": "editor-preview", onClick: onDetailClick, tabIndex: onDetailClick ? -1 : void 0, role: onDetailClick ? "button" : void 0, children: [
38
+ /* @__PURE__ */ jsx("div", { className: "flex-fill text-truncate text-truncate-2 post-preview-content overflow-hidden", style: {
39
+ overflowWrap: "anywhere"
40
+ }, children: summaryContent }),
41
+ /* @__PURE__ */ jsx("div", { onClick: handleMediaClick, tabIndex: hasMediaCallback ? -1 : void 0, role: hasMediaCallback ? "button" : void 0, className: "d-flex align-items-center justify-content-center gap-24 px-32 pt-16", children: medias.slice(0, maxMediaDisplayed).map((media, index) => /* @__PURE__ */ jsxs("div", { className: clsx("position-relative col-12 col-md-4 ", {
42
+ "d-none d-md-block": index >= 1
43
+ }), children: [
44
+ /* @__PURE__ */ jsx(Image, { alt: media.alt, objectFit: "cover", ratio: "16", className: "rounded", loading: "lazy", src: media.url, sizes: "" }),
45
+ (index === 0 || index === 2) && medias.length - (index + 1) > 0 && /* @__PURE__ */ jsx("div", { className: clsx("position-absolute top-0 bottom-0 start-0 end-0 d-flex justify-content-center align-items-center rounded text-light bg-dark bg-opacity-50", {
46
+ "d-flex d-md-none": index === 0,
47
+ "d-none d-md-flex": index === 2
48
+ }), children: t("editor.preview.moreMedia", {
49
+ mediaCount: medias.length - (index + 1)
50
+ }) })
51
+ ] }, media.url)) })
52
+ ] });
53
+ };
54
+ export {
55
+ EditorPreview as default
56
+ };
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Editor component properties
3
+ */
4
+ export interface EditorPreviewSkeletonProps {
5
+ variant?: 'outline' | 'ghost';
6
+ }
7
+ declare const EditorPreview: ({ variant }: EditorPreviewSkeletonProps) => import("react/jsx-runtime").JSX.Element;
8
+ export default EditorPreview;
@@ -0,0 +1,24 @@
1
+ import { jsx, jsxs } from "react/jsx-runtime";
2
+ import clsx from "clsx";
3
+ import TextSkeleton from "../../../../components/Skeleton/TextSkeleton.js";
4
+ import Image from "../../../../components/Image/Image.js";
5
+ const EditorPreview = ({
6
+ variant = "outline"
7
+ }) => {
8
+ const borderClass = clsx(variant === "outline" && "border rounded-3"), contentClass = clsx("mt-16", variant === "outline" && "my-12 mx-16");
9
+ return /* @__PURE__ */ jsx("div", { className: borderClass, "data-testid": "editor-preview", children: /* @__PURE__ */ jsxs("div", { className: contentClass, children: [
10
+ /* @__PURE__ */ jsx(TextSkeleton, { className: "col-12" }),
11
+ /* @__PURE__ */ jsx(TextSkeleton, { className: "col-12" }),
12
+ /* @__PURE__ */ jsxs("div", { className: "d-flex justify-content-center gap-24 px-32 pt-16", children: [
13
+ /* @__PURE__ */ jsx("div", { style: {
14
+ maxWidth: "150px"
15
+ }, className: "col-12 col-md-4", children: /* @__PURE__ */ jsx(Image, { alt: "", objectFit: "cover", ratio: "16", className: "rounded placeholder", src: "", sizes: "" }) }),
16
+ /* @__PURE__ */ jsx("div", { style: {
17
+ maxWidth: "150px"
18
+ }, className: "col-12 col-md-4", children: /* @__PURE__ */ jsx(Image, { alt: "", objectFit: "cover", ratio: "16", className: "rounded placeholder", src: "", sizes: "" }) })
19
+ ] })
20
+ ] }) });
21
+ };
22
+ export {
23
+ EditorPreview as default
24
+ };
@@ -1,3 +1,5 @@
1
1
  export * from './Editor';
2
2
  export { default as Editor } from './Editor';
3
+ export { default as EditorPreview } from './EditorPreview';
4
+ export { default as EditorPreviewSkeleton } from './EditorPreviewSkeleton';
3
5
  export { default as EditorSkeleton } from './EditorSkeleton';
@@ -0,0 +1,7 @@
1
+ import { SVGProps } from 'react';
2
+ interface SVGRProps {
3
+ title?: string;
4
+ titleId?: string;
5
+ }
6
+ declare const SvgIconClockAlert: ({ title, titleId, ...props }: SVGProps<SVGSVGElement> & SVGRProps) => import("react/jsx-runtime").JSX.Element;
7
+ export default SvgIconClockAlert;
@@ -0,0 +1,17 @@
1
+ import { jsxs, jsx } from "react/jsx-runtime";
2
+ const SvgIconClockAlert = ({
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__ */ jsxs("g", { fill: "currentColor", clipPath: "url(#icon-clock-alert_svg__a)", children: [
9
+ /* @__PURE__ */ jsx("path", { d: "M0 10.075C0 4.51 4.51 0 10.075 0c4.573 0 8.431 3.046 9.663 7.217a1 1 0 0 1-1.918.566A8.075 8.075 0 1 0 7.783 17.82a1 1 0 0 1-.566 1.918C3.046 18.506 0 14.648 0 10.075" }),
10
+ /* @__PURE__ */ jsx("path", { d: "M10.075 4.108a1 1 0 0 1 1 1v5.43a1 1 0 0 1-.357.767L7.83 13.728a1 1 0 1 1-1.286-1.532l2.53-2.123V5.108a1 1 0 0 1 1-1M17 13.3a1 1 0 0 1 1 1v2.2a1 1 0 1 1-2 0v-2.2a1 1 0 0 1 1-1M17 18.4a1 1 0 1 0 0 2h.006a1 1 0 1 0 0-2z" }),
11
+ /* @__PURE__ */ jsx("path", { fillRule: "evenodd", d: "M17 10a7 7 0 1 0 0 14 7 7 0 0 0 0-14m-5 7a5 5 0 1 1 10 0 5 5 0 0 1-10 0", clipRule: "evenodd" })
12
+ ] }),
13
+ /* @__PURE__ */ jsx("defs", { children: /* @__PURE__ */ jsx("clipPath", { id: "icon-clock-alert_svg__a", children: /* @__PURE__ */ jsx("path", { fill: "#fff", d: "M0 0h24v24H0z" }) }) })
14
+ ] });
15
+ export {
16
+ SvgIconClockAlert as default
17
+ };
@@ -7,7 +7,6 @@ export { default as IconAgenda } from './IconAgenda';
7
7
  export { default as IconAppointments } from './IconAppointments';
8
8
  export { default as IconArchive } from './IconArchive';
9
9
  export { default as IconAssistance } from './IconAssistance';
10
- export { default as IconAssistancetic } from './IconAssistancetic';
11
10
  export { default as IconAssr } from './IconAssr';
12
11
  export { default as IconAward } from './IconAward';
13
12
  export { default as IconBanquesavoir } from './IconBanquesavoir';
@@ -24,6 +24,7 @@ export { default as IconCantoo } from './IconCantoo';
24
24
  export { default as IconCenter } from './IconCenter';
25
25
  export { default as IconCheck } from './IconCheck';
26
26
  export { default as IconChecklist } from './IconChecklist';
27
+ export { default as IconClockAlert } from './IconClockAlert';
27
28
  export { default as IconClock } from './IconClock';
28
29
  export { default as IconCloseFullScreen } from './IconCloseFullScreen';
29
30
  export { default as IconClose } from './IconClose';
@@ -154,7 +155,6 @@ export { default as IconToolCenter } from './IconToolCenter';
154
155
  export { default as IconTool } from './IconTool';
155
156
  export { default as IconTrendingUp } from './IconTrendingUp';
156
157
  export { default as IconUndoAll } from './IconUndoAll';
157
- export { default as IconUndoSlashed } from './IconUndoSlashed';
158
158
  export { default as IconUndo } from './IconUndo';
159
159
  export { default as IconUnion } from './IconUnion';
160
160
  export { default as IconUnlink } from './IconUnlink';
@@ -6,7 +6,6 @@ export interface FormInputs {
6
6
  description: string;
7
7
  enablePublic: boolean;
8
8
  formSlug: string;
9
- allowReplies: boolean;
10
9
  }
11
10
  /**
12
11
  * Custom translations interface for overriding default translations