@edifice.io/react 2.5.3 → 2.5.4

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/icons.js CHANGED
@@ -154,22 +154,23 @@ import { default as default154 } from "./modules/icons/components/IconToolCenter
154
154
  import { default as default155 } from "./modules/icons/components/IconTool.js";
155
155
  import { default as default156 } from "./modules/icons/components/IconTrendingUp.js";
156
156
  import { default as default157 } from "./modules/icons/components/IconUndoAll.js";
157
- import { default as default158 } from "./modules/icons/components/IconUndo.js";
158
- import { default as default159 } from "./modules/icons/components/IconUnion.js";
159
- import { default as default160 } from "./modules/icons/components/IconUnlink.js";
160
- import { default as default161 } from "./modules/icons/components/IconUnlock.js";
161
- import { default as default162 } from "./modules/icons/components/IconUnreadMail.js";
162
- import { default as default163 } from "./modules/icons/components/IconUpload.js";
163
- import { default as default164 } from "./modules/icons/components/IconUserSearch.js";
164
- import { default as default165 } from "./modules/icons/components/IconUser.js";
165
- import { default as default166 } from "./modules/icons/components/IconUsers.js";
166
- import { default as default167 } from "./modules/icons/components/IconVideo.js";
167
- import { default as default168 } from "./modules/icons/components/IconViewCalendar.js";
168
- import { default as default169 } from "./modules/icons/components/IconViewList.js";
169
- import { default as default170 } from "./modules/icons/components/IconWand.js";
170
- import { default as default171 } from "./modules/icons/components/IconWrite.js";
171
- import { default as default172 } from "./modules/icons/components/IconZoomIn.js";
172
- import { default as default173 } from "./modules/icons/components/IconZoomOut.js";
157
+ import { default as default158 } from "./modules/icons/components/IconUndoSlashed.js";
158
+ import { default as default159 } from "./modules/icons/components/IconUndo.js";
159
+ import { default as default160 } from "./modules/icons/components/IconUnion.js";
160
+ import { default as default161 } from "./modules/icons/components/IconUnlink.js";
161
+ import { default as default162 } from "./modules/icons/components/IconUnlock.js";
162
+ import { default as default163 } from "./modules/icons/components/IconUnreadMail.js";
163
+ import { default as default164 } from "./modules/icons/components/IconUpload.js";
164
+ import { default as default165 } from "./modules/icons/components/IconUserSearch.js";
165
+ import { default as default166 } from "./modules/icons/components/IconUser.js";
166
+ import { default as default167 } from "./modules/icons/components/IconUsers.js";
167
+ import { default as default168 } from "./modules/icons/components/IconVideo.js";
168
+ import { default as default169 } from "./modules/icons/components/IconViewCalendar.js";
169
+ import { default as default170 } from "./modules/icons/components/IconViewList.js";
170
+ import { default as default171 } from "./modules/icons/components/IconWand.js";
171
+ import { default as default172 } from "./modules/icons/components/IconWrite.js";
172
+ import { default as default173 } from "./modules/icons/components/IconZoomIn.js";
173
+ import { default as default174 } from "./modules/icons/components/IconZoomOut.js";
173
174
  export {
174
175
  default3 as IconAdd,
175
176
  default2 as IconAddUser,
@@ -326,21 +327,22 @@ export {
326
327
  default155 as IconTool,
327
328
  default154 as IconToolCenter,
328
329
  default156 as IconTrendingUp,
329
- default158 as IconUndo,
330
+ default159 as IconUndo,
330
331
  default157 as IconUndoAll,
331
- default159 as IconUnion,
332
- default160 as IconUnlink,
333
- default161 as IconUnlock,
334
- default162 as IconUnreadMail,
335
- default163 as IconUpload,
336
- default165 as IconUser,
337
- default164 as IconUserSearch,
338
- default166 as IconUsers,
339
- default167 as IconVideo,
340
- default168 as IconViewCalendar,
341
- default169 as IconViewList,
342
- default170 as IconWand,
343
- default171 as IconWrite,
344
- default172 as IconZoomIn,
345
- default173 as IconZoomOut
332
+ default158 as IconUndoSlashed,
333
+ default160 as IconUnion,
334
+ default161 as IconUnlink,
335
+ default162 as IconUnlock,
336
+ default163 as IconUnreadMail,
337
+ default164 as IconUpload,
338
+ default166 as IconUser,
339
+ default165 as IconUserSearch,
340
+ default167 as IconUsers,
341
+ default168 as IconVideo,
342
+ default169 as IconViewCalendar,
343
+ default170 as IconViewList,
344
+ default171 as IconWand,
345
+ default172 as IconWrite,
346
+ default173 as IconZoomIn,
347
+ default174 as IconZoomOut
346
348
  };
@@ -73,7 +73,7 @@ const DeleteModal = /* @__PURE__ */ lazy(() => import("./DeleteModal.js")), Comm
73
73
  whiteSpace: "pre-line"
74
74
  }, children: content }),
75
75
  type === "edit" && /* @__PURE__ */ jsxs("div", { className: "ms-n8", children: [
76
- !replyTo && /* @__PURE__ */ jsx(Button, { variant: "ghost", color: "tertiary", size: "sm", onClick: () => handleReplyToComment(comment.id), children: t("comment.reply") }),
76
+ !replyTo && options.allowReplies && /* @__PURE__ */ jsx(Button, { variant: "ghost", color: "tertiary", size: "sm", onClick: () => handleReplyToComment(comment.id), children: t("comment.reply") }),
77
77
  userId === authorId && /* @__PURE__ */ jsx(Button, { variant: "ghost", color: "tertiary", size: "sm", onClick: () => {
78
78
  handleModifyComment(comment.id), setValue(content);
79
79
  }, children: t("comment.edit") }),
@@ -22,3 +22,4 @@ 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;
@@ -1,7 +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;
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;
2
2
  export {
3
3
  DEFAULT_ADD_COMMENTS,
4
4
  DEFAULT_ADD_REPLIES,
5
+ DEFAULT_ALLOW_REPLIES,
5
6
  DEFAULT_MAX_COMMENTS,
6
7
  DEFAULT_MAX_COMMENT_LENGTH,
7
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_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_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";
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,6 +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
24
  ...commentOptions
24
25
  }, {
25
26
  type
@@ -104,6 +104,10 @@ export type CommentOptions = {
104
104
  * Number of replies to load additionally in the limited list
105
105
  */
106
106
  additionalReplies: number;
107
+ /**
108
+ * Allow replying to comments
109
+ */
110
+ allowReplies: boolean;
107
111
  };
108
112
  export interface UserProfileResult {
109
113
  /**
@@ -0,0 +1,7 @@
1
+ import { SVGProps } from 'react';
2
+ interface SVGRProps {
3
+ title?: string;
4
+ titleId?: string;
5
+ }
6
+ declare const SvgIconUndoSlashed: ({ title, titleId, ...props }: SVGProps<SVGSVGElement> & SVGRProps) => import("react/jsx-runtime").JSX.Element;
7
+ export default SvgIconUndoSlashed;
@@ -0,0 +1,12 @@
1
+ import { jsxs, jsx } from "react/jsx-runtime";
2
+ const SvgIconUndoSlashed = ({
3
+ title,
4
+ titleId,
5
+ ...props
6
+ }) => /* @__PURE__ */ jsxs("svg", { xmlns: "http://www.w3.org/2000/svg", width: "24", height: "24", fill: "none", viewBox: "0 0 24 24", "aria-hidden": "true", "aria-labelledby": titleId, ...props, children: [
7
+ title ? /* @__PURE__ */ jsx("title", { id: titleId, children: title }) : null,
8
+ /* @__PURE__ */ jsx("path", { fill: "currentColor", d: "M19.775 8.466A5 5 0 0 1 22 12.625V21a1 1 0 0 1-2 0v-8.375c0-1.186-.69-2.208-1.689-2.695zM7.918 2.293a1 1 0 1 1 1.414 1.414L5.414 7.625h6.719l-2 2H5.414l2.36 2.36-1.415 1.414-4.066-4.067a1 1 0 0 1 0-1.414zM20.293 2.293a1 1 0 1 1 1.414 1.414l-17 17a1 1 0 1 1-1.414-1.414z" })
9
+ ] });
10
+ export {
11
+ SvgIconUndoSlashed as default
12
+ };
@@ -154,6 +154,7 @@ export { default as IconToolCenter } from './IconToolCenter';
154
154
  export { default as IconTool } from './IconTool';
155
155
  export { default as IconTrendingUp } from './IconTrendingUp';
156
156
  export { default as IconUndoAll } from './IconUndoAll';
157
+ export { default as IconUndoSlashed } from './IconUndoSlashed';
157
158
  export { default as IconUndo } from './IconUndo';
158
159
  export { default as IconUnion } from './IconUnion';
159
160
  export { default as IconUnlink } from './IconUnlink';
@@ -6,6 +6,7 @@ export interface FormInputs {
6
6
  description: string;
7
7
  enablePublic: boolean;
8
8
  formSlug: string;
9
+ allowReplies: boolean;
9
10
  }
10
11
  /**
11
12
  * Custom translations interface for overriding default translations
@@ -7,6 +7,7 @@ import { useTranslation } from "react-i18next";
7
7
  import ImagePicker from "../../multimedia/ImagePicker/ImagePicker.js";
8
8
  import { useThumb } from "./hooks/useThumb.js";
9
9
  import { useEdificeClient } from "../../../providers/EdificeClientProvider/EdificeClientProvider.hook.js";
10
+ import useHasWorkflow from "../../../hooks/useHasWorkflow/useHasWorkflow.js";
10
11
  import useToast from "../../../hooks/useToast/useToast.js";
11
12
  import useResource from "../../../hooks/useResource/useResource.js";
12
13
  import useMediaLibrary from "../../../hooks/useMediaLibrary/useMediaLibrary.js";
@@ -34,7 +35,7 @@ const DEFAULT_INPUT_MAX_LENGTH = 60, DEFAULT_TEXTAREA_MAX_LENGTH = 400, Resource
34
35
  const {
35
36
  appCode: contextAppCode,
36
37
  currentApp
37
- } = useEdificeClient(), application = customAppCode || contextAppCode, {
38
+ } = useEdificeClient(), application = customAppCode || contextAppCode, hasOptionalCommentRepliesWorkflow = useHasWorkflow("org.entcore.blog.controllers.BlogController|optionalCommentReplies"), {
38
39
  t
39
40
  } = useTranslation(), {
40
41
  mode
@@ -53,7 +54,8 @@ const DEFAULT_INPUT_MAX_LENGTH = 60, DEFAULT_TEXTAREA_MAX_LENGTH = 400, Resource
53
54
  description: isUpdating ? resource == null ? void 0 : resource.description : "",
54
55
  enablePublic: isUpdating ? resource == null ? void 0 : resource.public : !1,
55
56
  title: isUpdating ? resource == null ? void 0 : resource.name : "",
56
- formSlug: isUpdating ? resource == null ? void 0 : resource.slug : ""
57
+ formSlug: isUpdating ? resource == null ? void 0 : resource.slug : "",
58
+ allowReplies: isUpdating ? resource == null ? void 0 : resource.allowReplies : !0
57
59
  }
58
60
  }), {
59
61
  ref: mediaLibraryRef,
@@ -74,7 +76,8 @@ const DEFAULT_INPUT_MAX_LENGTH = 60, DEFAULT_TEXTAREA_MAX_LENGTH = 400, Resource
74
76
  name: formData.title,
75
77
  public: formData.enablePublic,
76
78
  slug: formData.enablePublic && formData.formSlug || "",
77
- thumbnail
79
+ thumbnail,
80
+ allowReplies: formData.allowReplies
78
81
  };
79
82
  let result, param;
80
83
  if (isCreating) {
@@ -139,6 +142,10 @@ const DEFAULT_INPUT_MAX_LENGTH = 60, DEFAULT_TEXTAREA_MAX_LENGTH = 400, Resource
139
142
  required: !1,
140
143
  maxLength: textareaMaxLength
141
144
  }), placeholder: ((_f = customT.placeholder) == null ? void 0 : _f.description) ?? t("explorer.resource.editModal.description.placeholder"), size: "md", maxLength: textareaMaxLength, showCounter: !0 })
145
+ ] }),
146
+ application === "blog" && hasOptionalCommentRepliesWorkflow === !0 && /* @__PURE__ */ jsxs(FormControl, { id: "allowReplies", className: "d-flex gap-8 mt-16 mb-8", children: [
147
+ /* @__PURE__ */ jsx(FormControl.Input, { type: "checkbox", defaultChecked: isUpdating ? resource.allowReplies : !0, ...register("allowReplies"), className: "form-check-input mt-0", size: "sm" }),
148
+ /* @__PURE__ */ jsx(FormControl.Label, { className: "form-check-label mb-0", children: t("explorer.resource.editModal.comments.allowReplies") })
142
149
  ] })
143
150
  ] })
144
151
  ] }),
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@edifice.io/react",
3
- "version": "2.5.3",
3
+ "version": "2.5.4",
4
4
  "description": "Edifice React Library",
5
5
  "keywords": [
6
6
  "react",
@@ -73,7 +73,7 @@
73
73
  "dist"
74
74
  ],
75
75
  "dependencies": {
76
- "@ant-design/icons": "^6.0.2",
76
+ "@ant-design/icons": "^5.4.0",
77
77
  "@dnd-kit/core": "^6.1.0",
78
78
  "@dnd-kit/sortable": "^8.0.0",
79
79
  "@dnd-kit/utilities": "^3.2.2",
@@ -119,7 +119,7 @@
119
119
  "@tiptap/react": "2.11.0",
120
120
  "@tiptap/starter-kit": "2.11.0",
121
121
  "@uidotdev/usehooks": "^2.4.1",
122
- "antd": "^6.0.0",
122
+ "antd": "^5.29.1",
123
123
  "clsx": "^2.1.1",
124
124
  "dayjs": "1.11.10",
125
125
  "emoji-picker-react": "4.5.2",
@@ -133,9 +133,9 @@
133
133
  "react-slugify": "^3.0.3",
134
134
  "swiper": "^10.1.0",
135
135
  "ua-parser-js": "^1.0.36",
136
- "@edifice.io/bootstrap": "2.5.3",
137
- "@edifice.io/tiptap-extensions": "2.5.3",
138
- "@edifice.io/utilities": "2.5.3"
136
+ "@edifice.io/bootstrap": "2.5.4",
137
+ "@edifice.io/tiptap-extensions": "2.5.4",
138
+ "@edifice.io/utilities": "2.5.4"
139
139
  },
140
140
  "devDependencies": {
141
141
  "@babel/plugin-transform-react-pure-annotations": "^7.23.3",
@@ -166,8 +166,8 @@
166
166
  "vite": "^5.4.11",
167
167
  "vite-plugin-dts": "^4.1.0",
168
168
  "vite-tsconfig-paths": "^5.0.1",
169
- "@edifice.io/client": "2.5.3",
170
- "@edifice.io/config": "2.5.3"
169
+ "@edifice.io/client": "2.5.4",
170
+ "@edifice.io/config": "2.5.4"
171
171
  },
172
172
  "peerDependencies": {
173
173
  "@react-spring/web": "^9.7.5",