strapi-plugin-comments 2.0.10 → 2.1.0

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 (269) hide show
  1. package/README.md +204 -124
  2. package/admin/src/components/ActionButton/styles.d.ts +2 -0
  3. package/admin/src/components/ActionButton/styles.js +13 -8
  4. package/admin/src/components/Avatar/index.d.ts +12 -0
  5. package/admin/src/components/Avatar/index.js +26 -0
  6. package/admin/src/components/ConfirmationDialog/index.d.ts +26 -0
  7. package/admin/src/components/ConfirmationDialog/index.js +36 -55
  8. package/admin/src/components/DiscussionStatus/index.d.ts +9 -0
  9. package/admin/src/components/DiscussionStatus/index.js +22 -31
  10. package/admin/src/components/DiscussionThread/index.d.ts +16 -0
  11. package/admin/src/components/DiscussionThread/index.js +39 -56
  12. package/admin/src/components/DiscussionThreadItem/index.d.ts +9 -0
  13. package/admin/src/components/DiscussionThreadItem/index.js +28 -52
  14. package/admin/src/components/DiscussionThreadItem/styles.d.ts +4 -0
  15. package/admin/src/components/DiscussionThreadItem/styles.js +16 -11
  16. package/admin/src/components/DiscussionThreadItemActions/index.d.ts +19 -0
  17. package/admin/src/components/DiscussionThreadItemActions/index.js +121 -158
  18. package/admin/src/components/DiscussionThreadItemActions/styles.d.ts +2 -0
  19. package/admin/src/components/DiscussionThreadItemActions/styles.js +13 -7
  20. package/admin/src/components/DiscussionThreadItemApprovalFlowActions/index.d.ts +17 -0
  21. package/admin/src/components/DiscussionThreadItemApprovalFlowActions/index.js +38 -48
  22. package/admin/src/components/DiscussionThreadItemApprovalFlowActions/styles.d.ts +2 -0
  23. package/admin/src/components/DiscussionThreadItemApprovalFlowActions/styles.js +12 -6
  24. package/admin/src/components/DiscussionThreadItemFooter/index.d.ts +16 -0
  25. package/admin/src/components/DiscussionThreadItemFooter/index.js +34 -42
  26. package/admin/src/components/DiscussionThreadItemFooter/styles.d.ts +3 -0
  27. package/admin/src/components/DiscussionThreadItemFooter/styles.js +17 -12
  28. package/admin/src/components/DiscussionThreadItemReviewAction/index.d.ts +30 -0
  29. package/admin/src/components/DiscussionThreadItemReviewAction/index.js +77 -91
  30. package/admin/src/components/FormSwitch/index.d.ts +7 -0
  31. package/admin/src/components/FormSwitch/index.js +15 -18
  32. package/admin/src/components/FormSwitch/styles.d.ts +2 -0
  33. package/admin/src/components/FormSwitch/styles.js +14 -8
  34. package/admin/src/components/IconButton/styles.d.ts +2 -0
  35. package/admin/src/components/IconButton/styles.js +16 -9
  36. package/admin/src/components/Initializer/index.d.ts +5 -0
  37. package/admin/src/components/Initializer/index.js +12 -24
  38. package/admin/src/components/LoadingIndicatorOverlay/index.d.ts +3 -0
  39. package/admin/src/components/LoadingIndicatorOverlay/index.js +12 -15
  40. package/admin/src/components/LoadingIndicatorOverlay/styles.d.ts +3 -0
  41. package/admin/src/components/LoadingIndicatorOverlay/styles.js +22 -17
  42. package/admin/src/components/Nav/index.d.ts +7 -0
  43. package/admin/src/components/Nav/index.js +25 -48
  44. package/admin/src/components/PluginIcon/index.d.ts +3 -0
  45. package/admin/src/components/PluginIcon/index.js +10 -12
  46. package/admin/src/components/ReportsReviewModal/index.d.ts +21 -0
  47. package/admin/src/components/ReportsReviewModal/index.js +31 -46
  48. package/admin/src/components/ReportsReviewTable/index.d.ts +21 -0
  49. package/admin/src/components/ReportsReviewTable/index.js +120 -140
  50. package/admin/src/components/StatusBadge/index.d.ts +7 -0
  51. package/admin/src/components/StatusBadge/index.js +12 -17
  52. package/admin/src/components/StatusBadge/styles.d.ts +2 -0
  53. package/admin/src/components/StatusBadge/styles.js +19 -13
  54. package/admin/src/components/TableFilters/index.d.ts +10 -0
  55. package/admin/src/components/TableFilters/index.js +52 -49
  56. package/admin/src/components/TablePagination/index.d.ts +17 -0
  57. package/admin/src/components/TablePagination/index.js +27 -29
  58. package/admin/src/components/icons/comments.d.ts +6 -0
  59. package/admin/src/components/icons/comments.js +11 -8
  60. package/admin/src/components/icons/index.d.ts +6 -0
  61. package/admin/src/components/icons/index.js +15 -6
  62. package/admin/src/components/icons/lock.d.ts +7 -0
  63. package/admin/src/components/icons/lock.js +11 -21
  64. package/admin/src/components/icons/review.d.ts +7 -0
  65. package/admin/src/components/icons/review.js +11 -17
  66. package/admin/src/components/icons/unlock.d.ts +7 -0
  67. package/admin/src/components/icons/unlock.js +11 -19
  68. package/admin/src/hooks/useConfig.d.ts +8 -0
  69. package/admin/src/hooks/useConfig.js +40 -45
  70. package/admin/src/index.d.ts +7 -0
  71. package/admin/src/index.js +98 -92
  72. package/admin/src/pages/App/index.d.ts +4 -0
  73. package/admin/src/pages/App/index.js +43 -67
  74. package/admin/src/pages/App/reducer/actions.d.ts +8 -0
  75. package/admin/src/pages/App/reducer/actions.js +11 -7
  76. package/admin/src/pages/App/reducer/constants.d.ts +4 -0
  77. package/admin/src/pages/App/reducer/constants.js +7 -4
  78. package/admin/src/pages/App/reducer/index.d.ts +9 -0
  79. package/admin/src/pages/App/reducer/index.js +24 -22
  80. package/admin/src/pages/App/reducer/init.d.ts +3 -0
  81. package/admin/src/pages/App/reducer/init.js +6 -4
  82. package/admin/src/pages/App/reducer/selectors.d.ts +6 -0
  83. package/admin/src/pages/App/reducer/selectors.js +17 -34
  84. package/admin/src/pages/App/utils/api.d.ts +2 -0
  85. package/admin/src/pages/App/utils/api.js +14 -11
  86. package/admin/src/pages/ComingSoonPage/index.d.ts +3 -0
  87. package/admin/src/pages/ComingSoonPage/index.js +42 -24
  88. package/admin/src/pages/Details/components/DetailsEntity/index.d.ts +18 -0
  89. package/admin/src/pages/Details/components/DetailsEntity/index.js +49 -77
  90. package/admin/src/pages/Details/components/DetailsFilters/index.d.ts +12 -0
  91. package/admin/src/pages/Details/components/DetailsFilters/index.js +19 -26
  92. package/admin/src/pages/Details/components/DetailsFilters/styles.d.ts +2 -0
  93. package/admin/src/pages/Details/components/DetailsFilters/styles.js +14 -8
  94. package/admin/src/pages/Details/index.d.ts +4 -0
  95. package/admin/src/pages/Details/index.js +94 -133
  96. package/admin/src/pages/Discover/components/DiscoverTableRow/index.d.ts +20 -0
  97. package/admin/src/pages/Discover/components/DiscoverTableRow/index.js +128 -139
  98. package/admin/src/pages/Discover/components/DiscoverTableRow/styles.d.ts +2 -0
  99. package/admin/src/pages/Discover/components/DiscoverTableRow/styles.js +14 -8
  100. package/admin/src/pages/Discover/index.d.ts +4 -0
  101. package/admin/src/pages/Discover/index.js +129 -170
  102. package/admin/src/pages/Discover/utils/api.d.ts +2 -0
  103. package/admin/src/pages/Discover/utils/api.js +15 -13
  104. package/admin/src/pages/Discover/utils/filtersSchema.d.ts +11 -0
  105. package/admin/src/pages/Discover/utils/filtersSchema.js +8 -6
  106. package/admin/src/pages/Settings/components/RestartAlert/styles.d.ts +2 -0
  107. package/admin/src/pages/Settings/components/RestartAlert/styles.js +14 -8
  108. package/admin/src/pages/Settings/index.d.ts +3 -0
  109. package/admin/src/pages/Settings/index.js +225 -391
  110. package/admin/src/pages/Settings/utils/api.d.ts +7 -0
  111. package/admin/src/pages/Settings/utils/api.js +60 -55
  112. package/admin/src/pages/utils/api.d.ts +12 -0
  113. package/admin/src/pages/utils/api.js +58 -53
  114. package/admin/src/permissions.d.ts +28 -0
  115. package/admin/src/permissions.js +31 -17
  116. package/admin/src/pluginId.d.ts +2 -0
  117. package/admin/src/pluginId.js +29 -5
  118. package/admin/src/reducers.d.ts +7 -0
  119. package/admin/src/reducers.js +10 -6
  120. package/admin/src/translations/en.json +131 -131
  121. package/admin/src/translations/fr.json +132 -1
  122. package/admin/src/translations/pt-BR.json +130 -130
  123. package/admin/src/utils/axiosInstance.d.ts +3 -0
  124. package/admin/src/utils/axiosInstance.js +21 -27
  125. package/admin/src/utils/constants.d.ts +25 -0
  126. package/admin/src/utils/constants.js +23 -22
  127. package/admin/src/utils/getApiUrl.d.ts +3 -0
  128. package/admin/src/utils/getApiUrl.js +6 -5
  129. package/admin/src/utils/getMessage.d.ts +4 -0
  130. package/admin/src/utils/getMessage.js +15 -15
  131. package/admin/src/utils/getRelatedGroups.d.ts +4 -0
  132. package/admin/src/utils/getRelatedGroups.js +5 -3
  133. package/admin/src/utils/getUrl.d.ts +3 -0
  134. package/admin/src/utils/getUrl.js +6 -5
  135. package/admin/src/utils/handleAPIError.d.ts +4 -0
  136. package/admin/src/utils/handleAPIError.js +12 -11
  137. package/admin/src/utils/index.d.ts +12 -0
  138. package/admin/src/utils/index.js +29 -11
  139. package/admin/src/utils/parseRegExp.d.ts +6 -0
  140. package/admin/src/utils/parseRegExp.js +6 -5
  141. package/admin/src/utils/renderEntryTitle.d.ts +4 -0
  142. package/admin/src/utils/renderEntryTitle.js +11 -12
  143. package/admin/src/utils/renderInitials.d.ts +3 -0
  144. package/admin/src/utils/renderInitials.js +10 -5
  145. package/admin/src/utils/resolveCommentStatus.d.ts +4 -0
  146. package/admin/src/utils/resolveCommentStatus.js +17 -21
  147. package/admin/src/utils/resolveCommentStatusColor.d.ts +4 -0
  148. package/admin/src/utils/resolveCommentStatusColor.js +19 -19
  149. package/content-types/comment.d.ts +91 -0
  150. package/content-types/comment.js +87 -88
  151. package/content-types/index.d.ts +143 -0
  152. package/content-types/index.js +15 -10
  153. package/content-types/report.d.ts +48 -0
  154. package/content-types/report.js +44 -49
  155. package/package.json +24 -19
  156. package/permissions.d.ts +18 -0
  157. package/permissions.js +12 -13
  158. package/server/bootstrap.d.ts +4 -0
  159. package/server/bootstrap.js +56 -62
  160. package/server/config/index.d.ts +4 -0
  161. package/server/config/index.js +17 -15
  162. package/server/controllers/admin.d.ts +4 -0
  163. package/server/controllers/admin.js +134 -167
  164. package/server/controllers/client.d.ts +4 -0
  165. package/server/controllers/client.js +120 -112
  166. package/server/controllers/index.d.ts +6 -0
  167. package/server/controllers/index.js +12 -8
  168. package/server/controllers/utils/functions.d.ts +7 -0
  169. package/server/controllers/utils/functions.js +22 -17
  170. package/server/controllers/utils/parsers.d.ts +10 -0
  171. package/server/controllers/utils/parsers.js +47 -19
  172. package/server/destroy.d.ts +3 -0
  173. package/server/destroy.js +3 -4
  174. package/server/graphql/index.d.ts +4 -0
  175. package/server/graphql/index.js +27 -25
  176. package/server/graphql/mutations/createAbuseReport.d.ts +11 -0
  177. package/server/graphql/mutations/createAbuseReport.js +22 -24
  178. package/server/graphql/mutations/createComment.d.ts +14 -0
  179. package/server/graphql/mutations/createComment.js +22 -24
  180. package/server/graphql/mutations/index.d.ts +4 -0
  181. package/server/graphql/mutations/index.js +24 -19
  182. package/server/graphql/mutations/removeComment.d.ts +11 -0
  183. package/server/graphql/mutations/removeComment.js +22 -24
  184. package/server/graphql/mutations/updateComment.d.ts +11 -0
  185. package/server/graphql/mutations/updateComment.js +22 -24
  186. package/server/graphql/queries/findAllFlat.d.ts +19 -0
  187. package/server/graphql/queries/findAllFlat.js +36 -34
  188. package/server/graphql/queries/findAllInHierarchy.d.ts +17 -0
  189. package/server/graphql/queries/findAllInHierarchy.js +30 -30
  190. package/server/graphql/queries/index.d.ts +4 -0
  191. package/server/graphql/queries/index.js +20 -17
  192. package/server/graphql/resolvers-config.d.ts +23 -0
  193. package/server/graphql/resolvers-config.js +11 -11
  194. package/server/graphql/types/comment-author.d.ts +4 -0
  195. package/server/graphql/types/comment-author.js +10 -8
  196. package/server/graphql/types/comment-nested.d.ts +4 -0
  197. package/server/graphql/types/comment-nested.js +17 -15
  198. package/server/graphql/types/comment.d.ts +4 -0
  199. package/server/graphql/types/comment.js +16 -14
  200. package/server/graphql/types/create-comment-author.d.ts +4 -0
  201. package/server/graphql/types/create-comment-author.js +10 -8
  202. package/server/graphql/types/create-comment.d.ts +4 -0
  203. package/server/graphql/types/create-comment.js +10 -8
  204. package/server/graphql/types/create-report.d.ts +4 -0
  205. package/server/graphql/types/create-report.js +10 -8
  206. package/server/graphql/types/id.d.ts +4 -0
  207. package/server/graphql/types/id.js +24 -23
  208. package/server/graphql/types/identify-comment-author.d.ts +4 -0
  209. package/server/graphql/types/identify-comment-author.js +7 -5
  210. package/server/graphql/types/index.d.ts +4 -0
  211. package/server/graphql/types/index.js +36 -17
  212. package/server/graphql/types/remove-comment.d.ts +4 -0
  213. package/server/graphql/types/remove-comment.js +9 -7
  214. package/server/graphql/types/report-reason.d.ts +4 -0
  215. package/server/graphql/types/report-reason.js +10 -8
  216. package/server/graphql/types/report.d.ts +4 -0
  217. package/server/graphql/types/report.js +12 -10
  218. package/server/graphql/types/response-find-all.d.ts +4 -0
  219. package/server/graphql/types/response-find-all.js +8 -6
  220. package/server/graphql/types/response-meta.d.ts +4 -0
  221. package/server/graphql/types/response-meta.js +7 -5
  222. package/server/graphql/types/response-pagination.d.ts +4 -0
  223. package/server/graphql/types/response-pagination.js +12 -10
  224. package/server/graphql/types/update-comment.d.ts +4 -0
  225. package/server/graphql/types/update-comment.js +10 -8
  226. package/server/index.d.ts +26 -0
  227. package/server/index.js +24 -21
  228. package/server/register.d.ts +3 -0
  229. package/server/register.js +3 -4
  230. package/server/routes/admin.d.ts +4 -0
  231. package/server/routes/admin.js +103 -109
  232. package/server/routes/client.d.ts +4 -0
  233. package/server/routes/client.js +84 -46
  234. package/server/routes/index.d.ts +11 -0
  235. package/server/routes/index.js +18 -14
  236. package/server/services/admin.d.ts +5 -0
  237. package/server/services/admin.js +134 -161
  238. package/server/services/client.d.ts +5 -0
  239. package/server/services/client.js +164 -168
  240. package/server/services/common.d.ts +5 -0
  241. package/server/services/common.js +192 -202
  242. package/server/services/graphql.d.ts +5 -0
  243. package/server/services/graphql.js +117 -182
  244. package/server/services/index.d.ts +8 -0
  245. package/server/services/index.js +15 -12
  246. package/server/services/utils/functions.d.ts +13 -0
  247. package/server/services/utils/functions.js +105 -109
  248. package/server/utils/constants.d.ts +9 -0
  249. package/server/utils/constants.js +19 -23
  250. package/server/utils/error.d.ts +19 -0
  251. package/server/utils/error.js +23 -18
  252. package/server/utils/functions.d.ts +6 -0
  253. package/server/utils/functions.js +35 -18
  254. package/strapi-admin.d.ts +3 -0
  255. package/strapi-admin.js +8 -3
  256. package/strapi-server.d.ts +177 -0
  257. package/strapi-server.js +43 -46
  258. package/tsconfig.tsbuildinfo +1 -0
  259. package/types/contentTypes.d.ts +48 -0
  260. package/types/contentTypes.js +3 -0
  261. package/.husky/pre-commit +0 -4
  262. package/LICENSE.md +0 -7
  263. package/__mocks__/initSetup.js +0 -108
  264. package/jest.config.js +0 -7
  265. package/server/controllers/utils/__tests__/functions.test.js +0 -43
  266. package/server/controllers/utils/__tests__/parsers.test.js +0 -94
  267. package/server/services/__tests__/common.test.js +0 -399
  268. package/server/services/utils/__tests__/functions.test.js +0 -53
  269. package/server/utils/__tests__/functions.test.js +0 -17
@@ -1,392 +1,226 @@
1
- import React, { useRef, useMemo, useState } from 'react';
2
- import { useQuery } from 'react-query';
3
- import { Formik } from 'formik';
4
- import { capitalize, first, orderBy, isEmpty, isEqual, isNil } from 'lodash';
5
- import {
6
- CheckPermissions,
7
- LoadingIndicatorPage,
8
- Form,
9
- useTracking,
10
- useNotification,
11
- useRBAC,
12
- useFocusWhenNavigate,
13
- useOverlayBlocker,
14
- } from '@strapi/helper-plugin';
15
- import { Accordion, AccordionToggle, AccordionContent, AccordionGroup } from '@strapi/design-system/Accordion';
16
- import { Main } from '@strapi/design-system/Main';
17
- import { ContentLayout, HeaderLayout } from '@strapi/design-system/Layout';
18
- import { Button } from '@strapi/design-system/Button';
19
- import { Box } from '@strapi/design-system/Box';
20
- import { Stack } from '@strapi/design-system/Stack';
21
- import { Switch } from '@strapi/design-system/Switch';
22
- import { Typography } from '@strapi/design-system/Typography';
23
- import { Grid, GridItem } from '@strapi/design-system/Grid';
24
- import { ToggleInput } from '@strapi/design-system/ToggleInput';
25
- import { Select, Option } from '@strapi/design-system/Select';
26
- import { useNotifyAT } from '@strapi/design-system/LiveRegions';
27
- import { Tooltip } from '@strapi/design-system/Tooltip';
28
- import { Check, Refresh, Play, Information } from '@strapi/icons';
29
-
30
- import pluginPermissions from '../../permissions';
31
- import useConfig from '../../hooks/useConfig';
32
- import { fetchAllContentTypes, fetchRoles } from './utils/api';
33
- import { getMessage, parseRegExp } from '../../utils';
34
- import ConfirmationDialog from '../../components/ConfirmationDialog';
35
- import { RestartAlert } from './components/RestartAlert/styles';
36
- import FormSwitch from '../../components/FormSwitch';
37
-
38
-
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ var __importDefault = (this && this.__importDefault) || function (mod) {
26
+ return (mod && mod.__esModule) ? mod : { "default": mod };
27
+ };
28
+ Object.defineProperty(exports, "__esModule", { value: true });
29
+ const react_1 = __importStar(require("react"));
30
+ const react_query_1 = require("react-query");
31
+ const formik_1 = require("formik");
32
+ const lodash_1 = require("lodash");
33
+ const helper_plugin_1 = require("@strapi/helper-plugin");
34
+ const Accordion_1 = require("@strapi/design-system/Accordion");
35
+ const Main_1 = require("@strapi/design-system/Main");
36
+ const Layout_1 = require("@strapi/design-system/Layout");
37
+ const Button_1 = require("@strapi/design-system/Button");
38
+ const Box_1 = require("@strapi/design-system/Box");
39
+ const Stack_1 = require("@strapi/design-system/Stack");
40
+ const Typography_1 = require("@strapi/design-system/Typography");
41
+ const Grid_1 = require("@strapi/design-system/Grid");
42
+ const ToggleInput_1 = require("@strapi/design-system/ToggleInput");
43
+ const Select_1 = require("@strapi/design-system/Select");
44
+ const LiveRegions_1 = require("@strapi/design-system/LiveRegions");
45
+ const Tooltip_1 = require("@strapi/design-system/Tooltip");
46
+ const icons_1 = require("@strapi/icons");
47
+ const permissions_1 = __importDefault(require("../../permissions"));
48
+ const useConfig_1 = __importDefault(require("../../hooks/useConfig"));
49
+ const api_1 = require("./utils/api");
50
+ const utils_1 = require("../../utils");
51
+ const ConfirmationDialog_1 = __importDefault(require("../../components/ConfirmationDialog"));
52
+ const styles_1 = require("./components/RestartAlert/styles");
53
+ const FormSwitch_1 = __importDefault(require("../../components/FormSwitch"));
39
54
  const Settings = () => {
40
- useFocusWhenNavigate();
41
-
42
- const { notifyStatus } = useNotifyAT();
43
- const { trackUsage } = useTracking();
44
- const trackUsageRef = useRef(trackUsage);
45
- const toggleNotification = useNotification();
46
- const { lockApp, unlockApp } = useOverlayBlocker();
47
-
48
- const viewPermissions = useMemo(() => ({
49
- access: pluginPermissions.settings.read,
50
- change: pluginPermissions.settings.change,
51
- }), []);
52
-
53
- const {
54
- isLoading: isLoadingForPermissions,
55
- allowedActions: { canAccess, canChange },
56
- } = useRBAC(viewPermissions);
57
-
58
- const [restoreConfigmationVisible, setRestoreConfigmationVisible] = useState(false);
59
- const [restartRequired, setRestartRequired] = useState(false);
60
- const [contentTypeExpanded, setContentTypeExpanded] = useState(undefined);
61
-
62
- const { fetch, restartMutation, submitMutation, restoreMutation } = useConfig(toggleNotification);
63
- const { data: configData, isLoading: isConfigLoading, err: configErr } = fetch;
64
-
65
- const { data: allCollectionsData, isLoading: areCollectionsLoading, err: collectionsErr } = useQuery(
66
- ['get-all-content-types', canAccess],
67
- () => fetchAllContentTypes(toggleNotification)
68
- );
69
-
70
- const { data: allRolesData, isLoading: areRolesLoading, err: rolesErr } = useQuery(
71
- ['get-all-roles', canAccess],
72
- () => fetchRoles(toggleNotification)
73
- );
74
-
75
- const isLoading = isLoadingForPermissions || isConfigLoading || areCollectionsLoading || areRolesLoading;
76
- const isError = configErr || collectionsErr || rolesErr;
77
-
78
- const preparePayload = ({ enabledCollections, gqlAuthEnabled, approvalFlow, entryLabel, ...rest }) => ({
79
- ...rest,
80
- enabledCollections,
81
- approvalFlow: approvalFlow.filter(_ => enabledCollections.includes(_)),
82
- entryLabel: {
83
- ...Object.keys(entryLabel).reduce((prev, curr) => ({
84
- ...prev,
85
- [curr]: enabledCollections.includes(curr) ? entryLabel[curr] : undefined,
86
- }), {}),
87
- '*': entryLabel['*'],
88
- },
89
- reportReasons: configData?.reportReasons,
90
- gql: gqlAuthEnabled ? { auth: true } : undefined,
91
- });
92
-
93
- if (isLoading || isError) {
94
- return (<LoadingIndicatorPage>
95
- { getMessage('page.settings.loading')}
96
- </LoadingIndicatorPage>);
97
- }
98
-
99
- const regexUID = !isLoading ? new RegExp(
100
- parseRegExp(fetch.data.regex?.uid).value,
101
- parseRegExp(fetch.data.regex?.uid).flags
102
- ) : null;
103
-
104
- const allRoles = allRolesData?.data || [];
105
- const allCollections = !isLoading && allCollectionsData
106
- .filter(({ uid }) => first(uid.split(regexUID).filter(s => s && s.length > 0)) === 'api');
107
- const enabledCollections = configData?.enabledCollections
108
- ?.map(uid => allCollections.find(_ => _.uid === uid) ? uid : undefined)
109
- .filter(_ => _) || [];
110
- const entryLabel = configData?.entryLabel || {};
111
- const approvalFlow = configData?.approvalFlow || [];
112
- const badWords = isNil(configData?.badWords) ? true : configData?.badWords;
113
- const isGQLPluginEnabled = configData?.isGQLPluginEnabled;
114
- const gqlAuthEnabled = configData?.gql?.auth || undefined;
115
- const moderatorRoles = configData?.moderatorRoles
116
- ?.filter(code => allRoles.find(_ => _.code === code)) || [];
117
-
118
- const changeApprovalFlowFor = (uid, current, value) => {
119
- const currentSet = new Set(current);
120
- if (value) {
121
- currentSet.add(uid);
122
- } else {
123
- currentSet.delete(uid);
124
- }
125
- return Array.from(currentSet);
126
- };
127
-
128
- const changeEntryLabelFor = (uid, current, value) => ({
129
- ...current,
130
- [uid]: value && !isEmpty(value) ? [...value] : undefined,
131
- });
132
-
133
- const handleUpdateConfiguration = async (form) => {
134
- if (canChange) {
135
- lockApp();
136
- const payload = preparePayload(form);
137
- await submitMutation.mutateAsync(payload);
138
- const enabledCollectionsChanged = !isEqual(payload.enabledCollections, configData?.enabledCollections);
139
- const gqlAuthChanged = !isEqual(payload.gql?.auth, configData?.gql?.auth);
140
- if (enabledCollectionsChanged || gqlAuthChanged) {
141
- setRestartRequired(true);
142
- }
143
- unlockApp();
144
- }
145
- };
146
-
147
- const handleRestoreConfirmation = () => setRestoreConfigmationVisible(true);
148
- const handleRestoreConfiguration = async () => {
149
- if (canChange) {
150
- lockApp();
151
- await restoreMutation.mutateAsync();
152
- unlockApp();
153
- setRestartRequired(true);
154
- setRestoreConfigmationVisible(false);
155
- }
156
- };
157
- const handleRestoreCancel = () => setRestoreConfigmationVisible(false);
158
-
159
- const handleRestart = async () => {
160
- if (canChange) {
161
- lockApp();
162
- await restartMutation.mutateAsync();
163
- setRestartRequired(false);
164
- unlockApp();
165
- }
166
- };
167
- const handleRestartDiscard = () => setRestartRequired(false);
168
-
169
- const handleSetContentTypeExpanded = key => setContentTypeExpanded(key === contentTypeExpanded ? undefined : key);
170
-
171
- const boxDefaultProps = {
172
- background: "neutral0",
173
- hasRadius: true,
174
- shadow: "filterShadow",
175
- padding: 6,
176
- };
177
-
178
- return (
179
- <Main>
180
- <Formik
181
- initialValues={{
182
- enabledCollections,
183
- moderatorRoles,
184
- badWords,
185
- approvalFlow,
186
- entryLabel,
187
- gqlAuthEnabled,
188
- }}
189
- enableReinitialize={true}
190
- onSubmit={handleUpdateConfiguration}
191
- >
192
- {({ handleSubmit, setFieldValue, values }) => (
193
- <Form noValidate onSubmit={handleSubmit}>
194
- <HeaderLayout
195
- title={getMessage('page.settings.header.title')}
196
- subtitle={getMessage('page.settings.header.description')}
197
- primaryAction={
198
- <CheckPermissions permissions={pluginPermissions.settingsChange}>
199
- <Button type="submit" startIcon={<Check />} disabled={restartRequired} >
200
- {getMessage('page.settings.actions.submit')}
201
- </Button>
202
- </CheckPermissions>
203
- }
204
- />
205
- <ContentLayout>
206
- <Stack size={4}>
207
- { restartRequired && (
208
- <RestartAlert
209
- closeLabel={getMessage('page.settings.actions.restart.alert.cancel')}
210
- title={getMessage('page.settings.actions.restart.alert.title')}
211
- action={<Box><Button onClick={handleRestart} startIcon={<Play />}>{getMessage('page.settings.actions.restart')}</Button></Box>}
212
- onClose={handleRestartDiscard}>
213
- { getMessage('page.settings.actions.restart.alert.description')}
214
- </RestartAlert>)}
215
-
216
- <Box {...boxDefaultProps}>
217
- <Stack size={4}>
218
- <Typography variant="delta" as="h2">
219
- {getMessage('page.settings.section.general')}
220
- </Typography>
221
- <Grid gap={4}>
222
- <GridItem col={12}>
223
- <Select
224
- name="enabledCollections"
225
- label={getMessage('page.settings.form.enabledCollections.label')}
226
- placeholder={getMessage('page.settings.form.enabledCollections.placeholder')}
227
- hint={getMessage('page.settings.form.enabledCollections.hint')}
228
- onClear={() => setFieldValue('enabledCollections', [], false)}
229
- value={values.enabledCollections}
230
- onChange={(value) => setFieldValue('enabledCollections', value, false)}
231
- disabled={restartRequired}
232
- multi
233
- withTags
234
- >
235
- { allCollections.map(({ uid, schema: { displayName } }) =>
236
- (<Option key={uid} value={uid}>{displayName}</Option>))}
237
- </Select>
238
- </GridItem>
239
- { !isEmpty(values.enabledCollections) && (
240
- <GridItem col={12}>
241
- <AccordionGroup
242
- label={getMessage('page.settings.form.contentTypesSettings.label')}
243
- labelAction={<Tooltip description={getMessage('page.settings.form.contentTypesSettings.tooltip')}>
244
- <Information aria-hidden={true} />
245
- </Tooltip>}>
246
- { orderBy(values.enabledCollections).map(uid => {
247
- const { schema: { displayName, attributes = {} } } = allCollections.find(_ => _.uid === uid);
248
- const stringAttributes = Object.keys(attributes).filter(_ => attributes[_].type === 'string');
249
- const key = `collectionSettings-${uid}`;
250
- return (<Accordion
251
- expanded={contentTypeExpanded === key}
252
- toggle={() => handleSetContentTypeExpanded(key)}
253
- key={key}
254
- id={key}
255
- size="S">
256
- <AccordionToggle title={displayName} togglePosition="left" />
257
- <AccordionContent>
258
- <Box padding={6}>
259
- <Stack size={4}>
260
- <FormSwitch
261
- name={`collectionSettings-${uid}-approvalFlow`}
262
- label={getMessage('page.settings.form.approvalFlow.label')}
263
- hint={getMessage({
264
- id: 'page.settings.form.approvalFlow.hint',
265
- props: { name: displayName },
266
- })}
267
- selected={values.approvalFlow.includes(uid)}
268
- onChange={() => setFieldValue('approvalFlow', changeApprovalFlowFor(uid, values.approvalFlow, !values.approvalFlow.includes(uid)), [])}
269
- onLabel={getMessage('compontents.toogle.enabled')}
270
- offLabel={getMessage('compontents.toogle.disabled')}
271
- disabled={restartRequired}
272
- visibleLabels />
273
- { !isEmpty(stringAttributes) && (<Select
274
- name={`collectionSettings-${uid}-entryLabel`}
275
- label={getMessage('page.settings.form.entryLabel.label')}
276
- placeholder={getMessage('page.settings.form.entryLabel.placeholder')}
277
- hint={getMessage('page.settings.form.entryLabel.hint')}
278
- onClear={() => setFieldValue('entryLabel', changeEntryLabelFor(uid, values.entryLabel))}
279
- value={values.entryLabel[uid] || []}
280
- onChange={(value) => setFieldValue('entryLabel', changeEntryLabelFor(uid, values.entryLabel, value))}
281
- multi
282
- withTags
283
- disabled={restartRequired}
284
- >
285
- { stringAttributes.map(key =>
286
- (<Option key={`collectionSettings-${uid}-entryLabel-${key}`} value={key}>{ capitalize(key.split('_').join(' ')) }</Option>))}
287
- </Select>) }
288
- </Stack>
289
- </Box>
290
- </AccordionContent>
291
- </Accordion>);
292
- })}
293
- </AccordionGroup>
294
- </GridItem>)}
295
- </Grid>
296
- </Stack>
297
- </Box>
298
-
299
- <Box {...boxDefaultProps}>
300
- <Stack size={4}>
301
- <Typography variant="delta" as="h2">
302
- {getMessage('page.settings.section.additional')}
303
- </Typography>
304
- <Grid gap={4}>
305
- <GridItem col={6} xs={12}>
306
- <Select
307
- name="moderatorRoles"
308
- label={getMessage('page.settings.form.moderatorRoles.label')}
309
- placeholder={getMessage('page.settings.form.moderatorRoles.placeholder')}
310
- hint={getMessage('page.settings.form.moderatorRoles.hint')}
311
- onClear={() => setFieldValue('moderatorRoles', [], false)}
312
- value={values.moderatorRoles}
313
- onChange={(value) => setFieldValue('moderatorRoles', value, false)}
314
- disabled={restartRequired}
315
- multi
316
- withTags
317
- >
318
- { allRoles.map(({ code, name }) =>
319
- (<Option key={code} value={code}>{name}</Option>))}
320
- </Select>
321
- </GridItem>
322
- <GridItem col={6} xs={12}>
323
- <ToggleInput
324
- name="badWords"
325
- label={getMessage('page.settings.form.badWords.label')}
326
- hint={getMessage('page.settings.form.badWords.hint')}
327
- checked={values.badWords}
328
- onChange={({ target: { checked } }) => setFieldValue('badWords', checked, false)}
329
- onLabel={getMessage('compontents.toogle.enabled')}
330
- offLabel={getMessage('compontents.toogle.disabled')}
331
- disabled={restartRequired}
332
- />
333
- </GridItem>
334
- { isGQLPluginEnabled && (<GridItem col={6} xs={12}>
335
- <ToggleInput
336
- name="badWords"
337
- label={getMessage('page.settings.form.gqlAuth.label')}
338
- hint={getMessage('page.settings.form.gqlAuth.hint')}
339
- checked={values.gqlAuthEnabled}
340
- onChange={({ target: { checked } }) => setFieldValue('gqlAuthEnabled', checked, false)}
341
- onLabel={getMessage('compontents.toogle.enabled')}
342
- offLabel={getMessage('compontents.toogle.disabled')}
343
- disabled={restartRequired}
344
- />
345
- </GridItem>) }
346
- </Grid>
347
- </Stack>
348
- </Box>
349
-
350
- <CheckPermissions permissions={pluginPermissions.settingsChange}>
351
- <Box {...boxDefaultProps}>
352
- <Stack size={4}>
353
- <Stack size={2}>
354
- <Typography variant="delta" as="h2">
355
- {getMessage('page.settings.section.restore')}
356
- </Typography>
357
- <Typography variant="pi"as="h4">
358
- {getMessage('page.settings.section.restore.subtitle')}
359
- </Typography>
360
- </Stack>
361
- <Grid gap={4}>
362
- <GridItem col={6}>
363
- <Button variant="danger-light" startIcon={<Refresh />} onClick={handleRestoreConfirmation}>
364
- {getMessage('page.settings.actions.restore')}
365
- </Button>
366
-
367
- <ConfirmationDialog
368
- isVisible={restoreConfigmationVisible}
369
- isActionAsync={restoreMutation.isLoading}
370
- header={getMessage('page.settings.actions.restore.confirmation.header')}
371
- labelConfirm={getMessage('page.settings.actions.restore.confirmation.button.confirm')}
372
- iconConfirm={<Refresh />}
373
- onConfirm={handleRestoreConfiguration}
374
- onCancel={handleRestoreCancel}>
375
- { getMessage('page.settings.actions.restore.confirmation.description') }
376
- </ConfirmationDialog>
377
- </GridItem>
378
- </Grid>
379
- </Stack>
380
- </Box>
381
- </CheckPermissions>
382
- </Stack>
383
- </ContentLayout>
384
- </Form>
385
- )}
386
- </Formik>
387
- </Main>
388
- );
389
- }
390
-
391
-
392
- export default Settings;
55
+ (0, helper_plugin_1.useFocusWhenNavigate)();
56
+ const { notifyStatus } = (0, LiveRegions_1.useNotifyAT)();
57
+ const { trackUsage } = (0, helper_plugin_1.useTracking)();
58
+ const trackUsageRef = (0, react_1.useRef)(trackUsage);
59
+ const toggleNotification = (0, helper_plugin_1.useNotification)();
60
+ const { lockApp, unlockApp } = (0, helper_plugin_1.useOverlayBlocker)();
61
+ const viewPermissions = (0, react_1.useMemo)(() => ({
62
+ access: permissions_1.default.settings.read,
63
+ change: permissions_1.default.settings.change,
64
+ }), []);
65
+ const { isLoading: isLoadingForPermissions, allowedActions: { canAccess, canChange }, } = (0, helper_plugin_1.useRBAC)(viewPermissions);
66
+ const [restoreConfigmationVisible, setRestoreConfigmationVisible] = (0, react_1.useState)(false);
67
+ const [restartRequired, setRestartRequired] = (0, react_1.useState)(false);
68
+ const [contentTypeExpanded, setContentTypeExpanded] = (0, react_1.useState)(undefined);
69
+ const { fetch, restartMutation, submitMutation, restoreMutation } = (0, useConfig_1.default)(toggleNotification);
70
+ const { data: configData, isLoading: isConfigLoading, err: configErr, } = fetch;
71
+ const { data: allCollectionsData, isLoading: areCollectionsLoading, err: collectionsErr, } = (0, react_query_1.useQuery)(["get-all-content-types", canAccess], () => (0, api_1.fetchAllContentTypes)(toggleNotification));
72
+ const { data: allRolesData, isLoading: areRolesLoading, err: rolesErr, } = (0, react_query_1.useQuery)(["get-all-roles", canAccess], () => (0, api_1.fetchRoles)(toggleNotification));
73
+ const isLoading = isLoadingForPermissions ||
74
+ isConfigLoading ||
75
+ areCollectionsLoading ||
76
+ areRolesLoading;
77
+ const isError = configErr || collectionsErr || rolesErr;
78
+ const preparePayload = ({ enabledCollections, gqlAuthEnabled, approvalFlow, entryLabel, ...rest }) => ({
79
+ ...rest,
80
+ enabledCollections,
81
+ approvalFlow: approvalFlow.filter((_) => enabledCollections.includes(_)),
82
+ entryLabel: {
83
+ ...Object.keys(entryLabel).reduce((prev, curr) => ({
84
+ ...prev,
85
+ [curr]: enabledCollections.includes(curr)
86
+ ? entryLabel[curr]
87
+ : undefined,
88
+ }), {}),
89
+ "*": entryLabel["*"],
90
+ },
91
+ reportReasons: configData?.reportReasons,
92
+ gql: gqlAuthEnabled ? { auth: true } : undefined,
93
+ });
94
+ if (isLoading || isError) {
95
+ return (react_1.default.createElement(helper_plugin_1.LoadingIndicatorPage, null, (0, utils_1.getMessage)("page.settings.loading")));
96
+ }
97
+ const regexUID = !isLoading
98
+ ? new RegExp((0, utils_1.parseRegExp)(fetch.data.regex?.uid).value, (0, utils_1.parseRegExp)(fetch.data.regex?.uid).flags)
99
+ : null;
100
+ const allRoles = allRolesData?.data || [];
101
+ const allCollections = !isLoading &&
102
+ allCollectionsData.filter(({ uid }) => (0, lodash_1.first)(uid.split(regexUID).filter((s) => s && s.length > 0)) === "api");
103
+ const enabledCollections = configData?.enabledCollections
104
+ ?.map((uid) => allCollections.find((_) => _.uid === uid) ? uid : undefined)
105
+ .filter((_) => _) || [];
106
+ const entryLabel = configData?.entryLabel || {};
107
+ const approvalFlow = configData?.approvalFlow || [];
108
+ const badWords = (0, lodash_1.isNil)(configData?.badWords) ? true : configData?.badWords;
109
+ const isGQLPluginEnabled = configData?.isGQLPluginEnabled;
110
+ const gqlAuthEnabled = configData?.gql?.auth || undefined;
111
+ const moderatorRoles = configData?.moderatorRoles?.filter((code) => allRoles.find((_) => _.code === code)) || [];
112
+ const changeApprovalFlowFor = (uid, current, value) => {
113
+ const currentSet = new Set(current);
114
+ if (value) {
115
+ currentSet.add(uid);
116
+ }
117
+ else {
118
+ currentSet.delete(uid);
119
+ }
120
+ return Array.from(currentSet);
121
+ };
122
+ const changeEntryLabelFor = (uid, current, value) => ({
123
+ ...current,
124
+ [uid]: value && !(0, lodash_1.isEmpty)(value) ? [...value] : undefined,
125
+ });
126
+ const handleUpdateConfiguration = async (form) => {
127
+ if (canChange) {
128
+ lockApp();
129
+ const payload = preparePayload(form);
130
+ await submitMutation.mutateAsync(payload);
131
+ const enabledCollectionsChanged = !(0, lodash_1.isEqual)(payload.enabledCollections, configData?.enabledCollections);
132
+ const gqlAuthChanged = !(0, lodash_1.isEqual)(payload.gql?.auth, configData?.gql?.auth);
133
+ if (enabledCollectionsChanged || gqlAuthChanged) {
134
+ setRestartRequired(true);
135
+ }
136
+ unlockApp();
137
+ }
138
+ };
139
+ const handleRestoreConfirmation = () => setRestoreConfigmationVisible(true);
140
+ const handleRestoreConfiguration = async () => {
141
+ if (canChange) {
142
+ lockApp();
143
+ await restoreMutation.mutateAsync();
144
+ unlockApp();
145
+ setRestartRequired(true);
146
+ setRestoreConfigmationVisible(false);
147
+ }
148
+ };
149
+ const handleRestoreCancel = () => setRestoreConfigmationVisible(false);
150
+ const handleRestart = async () => {
151
+ if (canChange) {
152
+ lockApp();
153
+ await restartMutation.mutateAsync();
154
+ setRestartRequired(false);
155
+ unlockApp();
156
+ }
157
+ };
158
+ const handleRestartDiscard = () => setRestartRequired(false);
159
+ const handleSetContentTypeExpanded = (key) => setContentTypeExpanded(key === contentTypeExpanded ? undefined : key);
160
+ const boxDefaultProps = {
161
+ background: "neutral0",
162
+ hasRadius: true,
163
+ shadow: "filterShadow",
164
+ padding: 6,
165
+ };
166
+ return (react_1.default.createElement(Main_1.Main, null,
167
+ react_1.default.createElement(formik_1.Formik, { initialValues: {
168
+ enabledCollections,
169
+ moderatorRoles,
170
+ badWords,
171
+ approvalFlow,
172
+ entryLabel,
173
+ gqlAuthEnabled,
174
+ }, enableReinitialize: true, onSubmit: handleUpdateConfiguration }, ({ handleSubmit, setFieldValue, values }) => (react_1.default.createElement(helper_plugin_1.Form, { noValidate: true, onSubmit: handleSubmit },
175
+ react_1.default.createElement(Layout_1.HeaderLayout, { title: (0, utils_1.getMessage)("page.settings.header.title"), subtitle: (0, utils_1.getMessage)("page.settings.header.description"), primaryAction: react_1.default.createElement(helper_plugin_1.CheckPermissions, { permissions: permissions_1.default.settingsChange },
176
+ react_1.default.createElement(Button_1.Button, { type: "submit", startIcon: react_1.default.createElement(icons_1.Check, null), disabled: restartRequired }, (0, utils_1.getMessage)("page.settings.actions.submit"))) }),
177
+ react_1.default.createElement(Layout_1.ContentLayout, null,
178
+ react_1.default.createElement(Stack_1.Stack, { size: 4 },
179
+ restartRequired && (react_1.default.createElement(styles_1.RestartAlert, { closeLabel: (0, utils_1.getMessage)("page.settings.actions.restart.alert.cancel"), title: (0, utils_1.getMessage)("page.settings.actions.restart.alert.title"), action: react_1.default.createElement(Box_1.Box, null,
180
+ react_1.default.createElement(Button_1.Button, { onClick: handleRestart, startIcon: react_1.default.createElement(icons_1.Play, null) }, (0, utils_1.getMessage)("page.settings.actions.restart"))), onClose: handleRestartDiscard }, (0, utils_1.getMessage)("page.settings.actions.restart.alert.description"))),
181
+ react_1.default.createElement(Box_1.Box, { ...boxDefaultProps },
182
+ react_1.default.createElement(Stack_1.Stack, { size: 4 },
183
+ react_1.default.createElement(Typography_1.Typography, { variant: "delta", as: "h2" }, (0, utils_1.getMessage)("page.settings.section.general")),
184
+ react_1.default.createElement(Grid_1.Grid, { gap: 4 },
185
+ react_1.default.createElement(Grid_1.GridItem, { col: 12 },
186
+ react_1.default.createElement(Select_1.Select, { name: "enabledCollections", label: (0, utils_1.getMessage)("page.settings.form.enabledCollections.label"), placeholder: (0, utils_1.getMessage)("page.settings.form.enabledCollections.placeholder"), hint: (0, utils_1.getMessage)("page.settings.form.enabledCollections.hint"), onClear: () => setFieldValue("enabledCollections", [], false), value: values.enabledCollections, onChange: (value) => setFieldValue("enabledCollections", value, false), disabled: restartRequired, multi: true, withTags: true }, allCollections.map(({ uid, schema: { displayName } }) => (react_1.default.createElement(Select_1.Option, { key: uid, value: uid }, displayName))))),
187
+ !(0, lodash_1.isEmpty)(values.enabledCollections) && (react_1.default.createElement(Grid_1.GridItem, { col: 12 },
188
+ react_1.default.createElement(Accordion_1.AccordionGroup, { label: (0, utils_1.getMessage)("page.settings.form.contentTypesSettings.label"), labelAction: react_1.default.createElement(Tooltip_1.Tooltip, { description: (0, utils_1.getMessage)("page.settings.form.contentTypesSettings.tooltip") },
189
+ react_1.default.createElement(icons_1.Information, { "aria-hidden": true })) }, (0, lodash_1.orderBy)(values.enabledCollections).map((uid) => {
190
+ const { schema: { displayName, attributes = {} }, } = allCollections.find((_) => _.uid === uid);
191
+ const stringAttributes = Object.keys(attributes).filter((_) => attributes[_].type === "string");
192
+ const key = `collectionSettings-${uid}`;
193
+ return (react_1.default.createElement(Accordion_1.Accordion, { expanded: contentTypeExpanded === key, toggle: () => handleSetContentTypeExpanded(key), key: key, id: key, size: "S" },
194
+ react_1.default.createElement(Accordion_1.AccordionToggle, { title: displayName, togglePosition: "left" }),
195
+ react_1.default.createElement(Accordion_1.AccordionContent, null,
196
+ react_1.default.createElement(Box_1.Box, { padding: 6 },
197
+ react_1.default.createElement(Stack_1.Stack, { size: 4 },
198
+ react_1.default.createElement(FormSwitch_1.default, { name: `collectionSettings-${uid}-approvalFlow`, label: (0, utils_1.getMessage)("page.settings.form.approvalFlow.label"), hint: (0, utils_1.getMessage)({
199
+ id: "page.settings.form.approvalFlow.hint",
200
+ props: { name: displayName },
201
+ }), selected: values.approvalFlow.includes(uid), onChange: () => setFieldValue("approvalFlow", changeApprovalFlowFor(uid, values.approvalFlow, !values.approvalFlow.includes(uid)), []), onLabel: (0, utils_1.getMessage)("compontents.toogle.enabled"), offLabel: (0, utils_1.getMessage)("compontents.toogle.disabled"), disabled: restartRequired, visibleLabels: true }),
202
+ !(0, lodash_1.isEmpty)(stringAttributes) && (react_1.default.createElement(Select_1.Select, { name: `collectionSettings-${uid}-entryLabel`, label: (0, utils_1.getMessage)("page.settings.form.entryLabel.label"), placeholder: (0, utils_1.getMessage)("page.settings.form.entryLabel.placeholder"), hint: (0, utils_1.getMessage)("page.settings.form.entryLabel.hint"), onClear: () => setFieldValue("entryLabel", changeEntryLabelFor(uid, values.entryLabel)), value: values.entryLabel[uid] || [], onChange: (value) => setFieldValue("entryLabel", changeEntryLabelFor(uid, values.entryLabel, value)), multi: true, withTags: true, disabled: restartRequired }, stringAttributes.map((key) => (react_1.default.createElement(Select_1.Option, { key: `collectionSettings-${uid}-entryLabel-${key}`, value: key }, (0, lodash_1.capitalize)(key.split("_").join(" "))))))))))));
203
+ }))))))),
204
+ react_1.default.createElement(Box_1.Box, { ...boxDefaultProps },
205
+ react_1.default.createElement(Stack_1.Stack, { size: 4 },
206
+ react_1.default.createElement(Typography_1.Typography, { variant: "delta", as: "h2" }, (0, utils_1.getMessage)("page.settings.section.additional")),
207
+ react_1.default.createElement(Grid_1.Grid, { gap: 4 },
208
+ react_1.default.createElement(Grid_1.GridItem, { col: 6, xs: 12 },
209
+ react_1.default.createElement(Select_1.Select, { name: "moderatorRoles", label: (0, utils_1.getMessage)("page.settings.form.moderatorRoles.label"), placeholder: (0, utils_1.getMessage)("page.settings.form.moderatorRoles.placeholder"), hint: (0, utils_1.getMessage)("page.settings.form.moderatorRoles.hint"), onClear: () => setFieldValue("moderatorRoles", [], false), value: values.moderatorRoles, onChange: (value) => setFieldValue("moderatorRoles", value, false), disabled: restartRequired, multi: true, withTags: true }, allRoles.map(({ code, name }) => (react_1.default.createElement(Select_1.Option, { key: code, value: code }, name))))),
210
+ react_1.default.createElement(Grid_1.GridItem, { col: 6, xs: 12 },
211
+ react_1.default.createElement(ToggleInput_1.ToggleInput, { name: "badWords", label: (0, utils_1.getMessage)("page.settings.form.badWords.label"), hint: (0, utils_1.getMessage)("page.settings.form.badWords.hint"), checked: values.badWords, onChange: ({ target: { checked } }) => setFieldValue("badWords", checked, false), onLabel: (0, utils_1.getMessage)("compontents.toogle.enabled"), offLabel: (0, utils_1.getMessage)("compontents.toogle.disabled"), disabled: restartRequired })),
212
+ isGQLPluginEnabled && (react_1.default.createElement(Grid_1.GridItem, { col: 6, xs: 12 },
213
+ react_1.default.createElement(ToggleInput_1.ToggleInput, { name: "badWords", label: (0, utils_1.getMessage)("page.settings.form.gqlAuth.label"), hint: (0, utils_1.getMessage)("page.settings.form.gqlAuth.hint"), checked: values.gqlAuthEnabled, onChange: ({ target: { checked } }) => setFieldValue("gqlAuthEnabled", checked, false), onLabel: (0, utils_1.getMessage)("compontents.toogle.enabled"), offLabel: (0, utils_1.getMessage)("compontents.toogle.disabled"), disabled: restartRequired })))))),
214
+ react_1.default.createElement(helper_plugin_1.CheckPermissions, { permissions: permissions_1.default.settingsChange },
215
+ react_1.default.createElement(Box_1.Box, { ...boxDefaultProps },
216
+ react_1.default.createElement(Stack_1.Stack, { size: 4 },
217
+ react_1.default.createElement(Stack_1.Stack, { size: 2 },
218
+ react_1.default.createElement(Typography_1.Typography, { variant: "delta", as: "h2" }, (0, utils_1.getMessage)("page.settings.section.restore")),
219
+ react_1.default.createElement(Typography_1.Typography, { variant: "pi", as: "h4" }, (0, utils_1.getMessage)("page.settings.section.restore.subtitle"))),
220
+ react_1.default.createElement(Grid_1.Grid, { gap: 4 },
221
+ react_1.default.createElement(Grid_1.GridItem, { col: 6 },
222
+ react_1.default.createElement(Button_1.Button, { variant: "danger-light", startIcon: react_1.default.createElement(icons_1.Refresh, null), onClick: handleRestoreConfirmation }, (0, utils_1.getMessage)("page.settings.actions.restore")),
223
+ react_1.default.createElement(ConfirmationDialog_1.default, { isVisible: restoreConfigmationVisible, isActionAsync: restoreMutation.isLoading, header: (0, utils_1.getMessage)("page.settings.actions.restore.confirmation.header"), labelConfirm: (0, utils_1.getMessage)("page.settings.actions.restore.confirmation.button.confirm"), iconConfirm: react_1.default.createElement(icons_1.Refresh, null), onConfirm: handleRestoreConfiguration, onCancel: handleRestoreCancel }, (0, utils_1.getMessage)("page.settings.actions.restore.confirmation.description"))))))))))))));
224
+ };
225
+ exports.default = Settings;
226
+ //# sourceMappingURL=index.js.map