strapi-plugin-comments 2.1.0-beta.1 → 2.1.2

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 (407) hide show
  1. package/.husky/pre-commit +4 -0
  2. package/LICENSE.md +7 -0
  3. package/README.md +41 -5
  4. package/admin/src/components/ActionButton/styles.ts +11 -0
  5. package/admin/src/components/Avatar/index.tsx +31 -0
  6. package/admin/src/components/ConfirmationDialog/index.tsx +88 -0
  7. package/admin/src/components/DiscussionStatus/index.tsx +36 -0
  8. package/admin/src/components/DiscussionThread/index.tsx +97 -0
  9. package/admin/src/components/DiscussionThreadItem/index.tsx +71 -0
  10. package/admin/src/components/DiscussionThreadItem/styles.ts +15 -0
  11. package/admin/src/components/DiscussionThreadItemActions/index.tsx +365 -0
  12. package/admin/src/components/DiscussionThreadItemActions/styles.ts +9 -0
  13. package/admin/src/components/DiscussionThreadItemApprovalFlowActions/index.tsx +99 -0
  14. package/admin/src/components/DiscussionThreadItemApprovalFlowActions/styles.ts +8 -0
  15. package/admin/src/components/DiscussionThreadItemFooter/index.tsx +62 -0
  16. package/admin/src/components/DiscussionThreadItemFooter/styles.ts +15 -0
  17. package/admin/src/components/DiscussionThreadItemReviewAction/index.tsx +180 -0
  18. package/admin/src/components/FormSwitch/index.tsx +35 -0
  19. package/admin/src/components/FormSwitch/styles.ts +10 -0
  20. package/admin/src/components/IconButton/styles.ts +19 -0
  21. package/admin/src/components/Initializer/index.tsx +28 -0
  22. package/admin/src/components/LoadingIndicatorOverlay/index.tsx +19 -0
  23. package/admin/src/components/LoadingIndicatorOverlay/styles.ts +21 -0
  24. package/admin/src/components/Nav/index.tsx +61 -0
  25. package/admin/src/components/PluginIcon/index.tsx +14 -0
  26. package/admin/src/components/ReportsReviewModal/index.tsx +71 -0
  27. package/admin/src/components/ReportsReviewTable/index.tsx +233 -0
  28. package/admin/src/components/StatusBadge/index.tsx +21 -0
  29. package/admin/src/components/StatusBadge/styles.ts +19 -0
  30. package/admin/src/components/TableFilters/index.tsx +58 -0
  31. package/admin/src/components/TablePagination/index.tsx +37 -0
  32. package/admin/src/components/icons/comments.tsx +15 -0
  33. package/admin/src/components/icons/index.ts +6 -0
  34. package/admin/src/components/icons/lock.tsx +27 -0
  35. package/admin/src/components/icons/review.tsx +25 -0
  36. package/admin/src/components/icons/unlock.tsx +25 -0
  37. package/admin/src/hooks/useConfig.ts +58 -0
  38. package/admin/src/index.ts +98 -0
  39. package/admin/src/pages/App/index.tsx +67 -0
  40. package/admin/src/pages/App/reducer/actions.ts +10 -0
  41. package/admin/src/pages/App/reducer/constants.ts +4 -0
  42. package/admin/src/pages/App/reducer/index.ts +28 -0
  43. package/admin/src/pages/App/reducer/init.ts +9 -0
  44. package/admin/src/pages/App/reducer/selectors.ts +32 -0
  45. package/admin/src/pages/App/utils/api.ts +14 -0
  46. package/admin/src/pages/ComingSoonPage/index.tsx +31 -0
  47. package/admin/src/pages/Details/components/DetailsEntity/index.tsx +106 -0
  48. package/admin/src/pages/Details/components/DetailsFilters/index.tsx +43 -0
  49. package/admin/src/pages/Details/components/DetailsFilters/styles.ts +9 -0
  50. package/admin/src/pages/Details/index.tsx +169 -0
  51. package/admin/src/pages/Discover/components/DiscoverTableRow/index.tsx +252 -0
  52. package/admin/src/pages/Discover/components/DiscoverTableRow/styles.ts +9 -0
  53. package/admin/src/pages/Discover/index.tsx +230 -0
  54. package/admin/src/pages/Discover/utils/api.ts +22 -0
  55. package/admin/src/pages/Discover/utils/filtersSchema.ts +9 -0
  56. package/admin/src/pages/Settings/components/RestartAlert/styles.ts +10 -0
  57. package/admin/src/pages/Settings/index.tsx +602 -0
  58. package/admin/src/pages/Settings/utils/api.ts +71 -0
  59. package/admin/src/pages/utils/api.ts +70 -0
  60. package/admin/src/permissions.ts +30 -0
  61. package/admin/src/pluginId.ts +3 -0
  62. package/admin/src/reducers.ts +8 -0
  63. package/admin/src/translations/fr.json +132 -1
  64. package/admin/src/translations/pt-BR.json +130 -130
  65. package/admin/src/utils/axiosInstance.ts +38 -0
  66. package/admin/src/utils/constants.ts +25 -0
  67. package/admin/src/utils/getApiUrl.ts +5 -0
  68. package/admin/src/utils/getMessage.ts +29 -0
  69. package/admin/src/utils/getRelatedGroups.ts +6 -0
  70. package/admin/src/utils/getUrl.ts +5 -0
  71. package/admin/src/utils/handleAPIError.ts +21 -0
  72. package/admin/src/utils/index.ts +11 -0
  73. package/admin/src/utils/parseRegExp.ts +9 -0
  74. package/admin/src/utils/renderEntryTitle.ts +16 -0
  75. package/admin/src/utils/renderInitials.ts +10 -0
  76. package/admin/src/utils/resolveCommentStatus.ts +37 -0
  77. package/admin/src/utils/resolveCommentStatusColor.ts +22 -0
  78. package/{admin → build/admin}/src/components/ActionButton/styles.d.ts +0 -0
  79. package/{admin → build/admin}/src/components/ActionButton/styles.js +0 -0
  80. package/build/admin/src/components/Avatar/index.d.ts +12 -0
  81. package/build/admin/src/components/Avatar/index.js +26 -0
  82. package/{admin → build/admin}/src/components/ConfirmationDialog/index.d.ts +0 -0
  83. package/{admin → build/admin}/src/components/ConfirmationDialog/index.js +0 -0
  84. package/{admin → build/admin}/src/components/DiscussionStatus/index.d.ts +0 -0
  85. package/{admin → build/admin}/src/components/DiscussionStatus/index.js +0 -0
  86. package/{admin → build/admin}/src/components/DiscussionThread/index.d.ts +0 -0
  87. package/{admin → build/admin}/src/components/DiscussionThread/index.js +0 -0
  88. package/{admin → build/admin}/src/components/DiscussionThreadItem/index.d.ts +0 -0
  89. package/{admin → build/admin}/src/components/DiscussionThreadItem/index.js +0 -0
  90. package/{admin → build/admin}/src/components/DiscussionThreadItem/styles.d.ts +0 -0
  91. package/{admin → build/admin}/src/components/DiscussionThreadItem/styles.js +0 -0
  92. package/{admin → build/admin}/src/components/DiscussionThreadItemActions/index.d.ts +0 -0
  93. package/{admin → build/admin}/src/components/DiscussionThreadItemActions/index.js +0 -0
  94. package/{admin → build/admin}/src/components/DiscussionThreadItemActions/styles.d.ts +0 -0
  95. package/{admin → build/admin}/src/components/DiscussionThreadItemActions/styles.js +0 -0
  96. package/{admin → build/admin}/src/components/DiscussionThreadItemApprovalFlowActions/index.d.ts +0 -0
  97. package/{admin → build/admin}/src/components/DiscussionThreadItemApprovalFlowActions/index.js +0 -0
  98. package/{admin → build/admin}/src/components/DiscussionThreadItemApprovalFlowActions/styles.d.ts +0 -0
  99. package/{admin → build/admin}/src/components/DiscussionThreadItemApprovalFlowActions/styles.js +0 -0
  100. package/{admin → build/admin}/src/components/DiscussionThreadItemFooter/index.d.ts +0 -0
  101. package/{admin → build/admin}/src/components/DiscussionThreadItemFooter/index.js +3 -4
  102. package/{admin → build/admin}/src/components/DiscussionThreadItemFooter/styles.d.ts +0 -0
  103. package/{admin → build/admin}/src/components/DiscussionThreadItemFooter/styles.js +0 -0
  104. package/{admin → build/admin}/src/components/DiscussionThreadItemReviewAction/index.d.ts +0 -0
  105. package/{admin → build/admin}/src/components/DiscussionThreadItemReviewAction/index.js +0 -0
  106. package/{admin → build/admin}/src/components/FormSwitch/index.d.ts +0 -0
  107. package/{admin → build/admin}/src/components/FormSwitch/index.js +0 -0
  108. package/{admin → build/admin}/src/components/FormSwitch/styles.d.ts +0 -0
  109. package/{admin → build/admin}/src/components/FormSwitch/styles.js +0 -0
  110. package/{admin → build/admin}/src/components/IconButton/styles.d.ts +0 -0
  111. package/{admin → build/admin}/src/components/IconButton/styles.js +0 -0
  112. package/{admin → build/admin}/src/components/Initializer/index.d.ts +0 -0
  113. package/{admin → build/admin}/src/components/Initializer/index.js +0 -0
  114. package/{admin → build/admin}/src/components/LoadingIndicatorOverlay/index.d.ts +0 -0
  115. package/{admin → build/admin}/src/components/LoadingIndicatorOverlay/index.js +0 -0
  116. package/{admin → build/admin}/src/components/LoadingIndicatorOverlay/styles.d.ts +0 -0
  117. package/{admin → build/admin}/src/components/LoadingIndicatorOverlay/styles.js +0 -0
  118. package/{admin → build/admin}/src/components/Nav/index.d.ts +0 -0
  119. package/{admin → build/admin}/src/components/Nav/index.js +0 -0
  120. package/{admin → build/admin}/src/components/PluginIcon/index.d.ts +0 -0
  121. package/{admin → build/admin}/src/components/PluginIcon/index.js +0 -0
  122. package/{admin → build/admin}/src/components/ReportsReviewModal/index.d.ts +0 -0
  123. package/{admin → build/admin}/src/components/ReportsReviewModal/index.js +0 -0
  124. package/{admin → build/admin}/src/components/ReportsReviewTable/index.d.ts +0 -0
  125. package/{admin → build/admin}/src/components/ReportsReviewTable/index.js +0 -0
  126. package/{admin → build/admin}/src/components/StatusBadge/index.d.ts +0 -0
  127. package/{admin → build/admin}/src/components/StatusBadge/index.js +0 -0
  128. package/{admin → build/admin}/src/components/StatusBadge/styles.d.ts +0 -0
  129. package/{admin → build/admin}/src/components/StatusBadge/styles.js +0 -0
  130. package/{admin → build/admin}/src/components/TableFilters/index.d.ts +0 -0
  131. package/{admin → build/admin}/src/components/TableFilters/index.js +0 -0
  132. package/{admin → build/admin}/src/components/TablePagination/index.d.ts +0 -0
  133. package/{admin → build/admin}/src/components/TablePagination/index.js +0 -0
  134. package/{admin → build/admin}/src/components/icons/comments.d.ts +0 -0
  135. package/{admin → build/admin}/src/components/icons/comments.js +0 -0
  136. package/{admin → build/admin}/src/components/icons/index.d.ts +0 -0
  137. package/{admin → build/admin}/src/components/icons/index.js +0 -0
  138. package/{admin → build/admin}/src/components/icons/lock.d.ts +0 -0
  139. package/{admin → build/admin}/src/components/icons/lock.js +0 -0
  140. package/{admin → build/admin}/src/components/icons/review.d.ts +0 -0
  141. package/{admin → build/admin}/src/components/icons/review.js +0 -0
  142. package/{admin → build/admin}/src/components/icons/unlock.d.ts +0 -0
  143. package/{admin → build/admin}/src/components/icons/unlock.js +0 -0
  144. package/{admin → build/admin}/src/hooks/useConfig.d.ts +0 -0
  145. package/{admin → build/admin}/src/hooks/useConfig.js +0 -0
  146. package/{admin → build/admin}/src/index.d.ts +0 -0
  147. package/{admin → build/admin}/src/index.js +0 -0
  148. package/{admin → build/admin}/src/pages/App/index.d.ts +0 -0
  149. package/{admin → build/admin}/src/pages/App/index.js +0 -0
  150. package/{admin → build/admin}/src/pages/App/reducer/actions.d.ts +0 -0
  151. package/{admin → build/admin}/src/pages/App/reducer/actions.js +0 -0
  152. package/{admin → build/admin}/src/pages/App/reducer/constants.d.ts +0 -0
  153. package/{admin → build/admin}/src/pages/App/reducer/constants.js +0 -0
  154. package/{admin → build/admin}/src/pages/App/reducer/index.d.ts +0 -0
  155. package/{admin → build/admin}/src/pages/App/reducer/index.js +0 -0
  156. package/{admin → build/admin}/src/pages/App/reducer/init.d.ts +0 -0
  157. package/{admin → build/admin}/src/pages/App/reducer/init.js +0 -0
  158. package/{admin → build/admin}/src/pages/App/reducer/selectors.d.ts +0 -0
  159. package/{admin → build/admin}/src/pages/App/reducer/selectors.js +0 -0
  160. package/{admin → build/admin}/src/pages/App/utils/api.d.ts +0 -0
  161. package/{admin → build/admin}/src/pages/App/utils/api.js +0 -0
  162. package/{admin → build/admin}/src/pages/ComingSoonPage/index.d.ts +0 -0
  163. package/{admin → build/admin}/src/pages/ComingSoonPage/index.js +0 -0
  164. package/{admin → build/admin}/src/pages/Details/components/DetailsEntity/index.d.ts +0 -0
  165. package/{admin → build/admin}/src/pages/Details/components/DetailsEntity/index.js +0 -0
  166. package/{admin → build/admin}/src/pages/Details/components/DetailsFilters/index.d.ts +0 -0
  167. package/{admin → build/admin}/src/pages/Details/components/DetailsFilters/index.js +0 -0
  168. package/{admin → build/admin}/src/pages/Details/components/DetailsFilters/styles.d.ts +0 -0
  169. package/{admin → build/admin}/src/pages/Details/components/DetailsFilters/styles.js +0 -0
  170. package/{admin → build/admin}/src/pages/Details/index.d.ts +0 -0
  171. package/{admin → build/admin}/src/pages/Details/index.js +0 -0
  172. package/{admin → build/admin}/src/pages/Discover/components/DiscoverTableRow/index.d.ts +0 -0
  173. package/{admin → build/admin}/src/pages/Discover/components/DiscoverTableRow/index.js +2 -2
  174. package/{admin → build/admin}/src/pages/Discover/components/DiscoverTableRow/styles.d.ts +0 -0
  175. package/{admin → build/admin}/src/pages/Discover/components/DiscoverTableRow/styles.js +0 -0
  176. package/{admin → build/admin}/src/pages/Discover/index.d.ts +0 -0
  177. package/{admin → build/admin}/src/pages/Discover/index.js +0 -0
  178. package/{admin → build/admin}/src/pages/Discover/utils/api.d.ts +0 -0
  179. package/{admin → build/admin}/src/pages/Discover/utils/api.js +0 -0
  180. package/{admin → build/admin}/src/pages/Discover/utils/filtersSchema.d.ts +0 -0
  181. package/{admin → build/admin}/src/pages/Discover/utils/filtersSchema.js +0 -0
  182. package/{admin → build/admin}/src/pages/Settings/components/RestartAlert/styles.d.ts +0 -0
  183. package/{admin → build/admin}/src/pages/Settings/components/RestartAlert/styles.js +0 -0
  184. package/{admin → build/admin}/src/pages/Settings/index.d.ts +0 -0
  185. package/{admin → build/admin}/src/pages/Settings/index.js +0 -0
  186. package/{admin → build/admin}/src/pages/Settings/utils/api.d.ts +0 -0
  187. package/{admin → build/admin}/src/pages/Settings/utils/api.js +0 -0
  188. package/{admin → build/admin}/src/pages/utils/api.d.ts +0 -0
  189. package/{admin → build/admin}/src/pages/utils/api.js +0 -0
  190. package/{admin → build/admin}/src/permissions.d.ts +0 -0
  191. package/{admin → build/admin}/src/permissions.js +0 -0
  192. package/{admin → build/admin}/src/pluginId.d.ts +0 -0
  193. package/{admin → build/admin}/src/pluginId.js +0 -0
  194. package/{admin → build/admin}/src/reducers.d.ts +0 -0
  195. package/{admin → build/admin}/src/reducers.js +0 -0
  196. package/build/admin/src/translations/en.json +132 -0
  197. package/build/admin/src/translations/fr.json +132 -0
  198. package/build/admin/src/translations/pt-BR.json +132 -0
  199. package/{admin → build/admin}/src/utils/axiosInstance.d.ts +0 -0
  200. package/{admin → build/admin}/src/utils/axiosInstance.js +0 -0
  201. package/{admin → build/admin}/src/utils/constants.d.ts +0 -0
  202. package/{admin → build/admin}/src/utils/constants.js +0 -0
  203. package/{admin → build/admin}/src/utils/getApiUrl.d.ts +0 -0
  204. package/{admin → build/admin}/src/utils/getApiUrl.js +0 -0
  205. package/{admin → build/admin}/src/utils/getMessage.d.ts +0 -0
  206. package/{admin → build/admin}/src/utils/getMessage.js +0 -0
  207. package/{admin → build/admin}/src/utils/getRelatedGroups.d.ts +0 -0
  208. package/{admin → build/admin}/src/utils/getRelatedGroups.js +0 -0
  209. package/{admin → build/admin}/src/utils/getUrl.d.ts +0 -0
  210. package/{admin → build/admin}/src/utils/getUrl.js +0 -0
  211. package/{admin → build/admin}/src/utils/handleAPIError.d.ts +0 -0
  212. package/{admin → build/admin}/src/utils/handleAPIError.js +0 -0
  213. package/{admin → build/admin}/src/utils/index.d.ts +0 -0
  214. package/{admin → build/admin}/src/utils/index.js +0 -0
  215. package/{admin → build/admin}/src/utils/parseRegExp.d.ts +0 -0
  216. package/{admin → build/admin}/src/utils/parseRegExp.js +0 -0
  217. package/{admin → build/admin}/src/utils/renderEntryTitle.d.ts +0 -0
  218. package/{admin → build/admin}/src/utils/renderEntryTitle.js +0 -0
  219. package/{admin → build/admin}/src/utils/renderInitials.d.ts +0 -0
  220. package/{admin → build/admin}/src/utils/renderInitials.js +0 -0
  221. package/{admin → build/admin}/src/utils/resolveCommentStatus.d.ts +0 -0
  222. package/{admin → build/admin}/src/utils/resolveCommentStatus.js +0 -0
  223. package/{admin → build/admin}/src/utils/resolveCommentStatusColor.d.ts +0 -0
  224. package/{admin → build/admin}/src/utils/resolveCommentStatusColor.js +0 -0
  225. package/{content-types → build/content-types}/comment.d.ts +0 -0
  226. package/{content-types → build/content-types}/comment.js +0 -0
  227. package/{content-types → build/content-types}/index.d.ts +0 -0
  228. package/{content-types → build/content-types}/index.js +0 -0
  229. package/{content-types → build/content-types}/report.d.ts +0 -0
  230. package/{content-types → build/content-types}/report.js +0 -0
  231. package/build/package.json +94 -0
  232. package/{permissions.d.ts → build/permissions.d.ts} +0 -0
  233. package/{permissions.js → build/permissions.js} +0 -0
  234. package/{server → build/server}/bootstrap.d.ts +0 -0
  235. package/{server → build/server}/bootstrap.js +0 -0
  236. package/{server → build/server}/config/index.d.ts +0 -0
  237. package/{server → build/server}/config/index.js +0 -0
  238. package/{server → build/server}/controllers/admin.d.ts +0 -0
  239. package/{server → build/server}/controllers/admin.js +0 -0
  240. package/build/server/controllers/client.d.ts +4 -0
  241. package/{server → build/server}/controllers/client.js +38 -22
  242. package/{server → build/server}/controllers/index.d.ts +0 -0
  243. package/{server → build/server}/controllers/index.js +0 -0
  244. package/build/server/controllers/utils/functions.d.ts +7 -0
  245. package/{server → build/server}/controllers/utils/functions.js +0 -0
  246. package/build/server/controllers/utils/parsers.d.ts +10 -0
  247. package/build/server/controllers/utils/parsers.js +51 -0
  248. package/{server → build/server}/destroy.d.ts +0 -0
  249. package/{server → build/server}/destroy.js +0 -0
  250. package/{server → build/server}/graphql/index.d.ts +0 -0
  251. package/{server → build/server}/graphql/index.js +0 -0
  252. package/{server → build/server}/graphql/mutations/createAbuseReport.d.ts +0 -0
  253. package/{server → build/server}/graphql/mutations/createAbuseReport.js +0 -0
  254. package/{server → build/server}/graphql/mutations/createComment.d.ts +1 -1
  255. package/{server → build/server}/graphql/mutations/createComment.js +0 -0
  256. package/{server → build/server}/graphql/mutations/index.d.ts +0 -0
  257. package/{server → build/server}/graphql/mutations/index.js +0 -0
  258. package/{server → build/server}/graphql/mutations/removeComment.d.ts +1 -1
  259. package/{server → build/server}/graphql/mutations/removeComment.js +0 -0
  260. package/{server → build/server}/graphql/mutations/updateComment.d.ts +1 -1
  261. package/{server → build/server}/graphql/mutations/updateComment.js +0 -0
  262. package/{server → build/server}/graphql/queries/findAllFlat.d.ts +1 -1
  263. package/{server → build/server}/graphql/queries/findAllFlat.js +11 -6
  264. package/{server → build/server}/graphql/queries/findAllInHierarchy.d.ts +1 -2
  265. package/{server → build/server}/graphql/queries/findAllInHierarchy.js +5 -1
  266. package/{server → build/server}/graphql/queries/index.d.ts +0 -0
  267. package/{server → build/server}/graphql/queries/index.js +0 -0
  268. package/{server → build/server}/graphql/resolvers-config.d.ts +0 -0
  269. package/{server → build/server}/graphql/resolvers-config.js +0 -0
  270. package/{server → build/server}/graphql/types/comment-author.d.ts +0 -0
  271. package/{server → build/server}/graphql/types/comment-author.js +0 -0
  272. package/{server → build/server}/graphql/types/comment-nested.d.ts +0 -0
  273. package/{server → build/server}/graphql/types/comment-nested.js +0 -0
  274. package/{server → build/server}/graphql/types/comment.d.ts +0 -0
  275. package/{server → build/server}/graphql/types/comment.js +0 -0
  276. package/{server → build/server}/graphql/types/create-comment-author.d.ts +0 -0
  277. package/{server → build/server}/graphql/types/create-comment-author.js +0 -0
  278. package/{server → build/server}/graphql/types/create-comment.d.ts +0 -0
  279. package/{server → build/server}/graphql/types/create-comment.js +0 -0
  280. package/{server → build/server}/graphql/types/create-report.d.ts +0 -0
  281. package/{server → build/server}/graphql/types/create-report.js +0 -0
  282. package/{server → build/server}/graphql/types/id.d.ts +0 -0
  283. package/{server → build/server}/graphql/types/id.js +0 -0
  284. package/{server → build/server}/graphql/types/identify-comment-author.d.ts +0 -0
  285. package/{server → build/server}/graphql/types/identify-comment-author.js +0 -0
  286. package/{server → build/server}/graphql/types/index.d.ts +0 -0
  287. package/{server → build/server}/graphql/types/index.js +0 -0
  288. package/{server → build/server}/graphql/types/remove-comment.d.ts +0 -0
  289. package/{server → build/server}/graphql/types/remove-comment.js +0 -0
  290. package/{server → build/server}/graphql/types/report-reason.d.ts +0 -0
  291. package/{server → build/server}/graphql/types/report-reason.js +0 -0
  292. package/{server → build/server}/graphql/types/report.d.ts +0 -0
  293. package/{server → build/server}/graphql/types/report.js +0 -0
  294. package/{server → build/server}/graphql/types/response-find-all.d.ts +0 -0
  295. package/{server → build/server}/graphql/types/response-find-all.js +0 -0
  296. package/{server → build/server}/graphql/types/response-meta.d.ts +0 -0
  297. package/{server → build/server}/graphql/types/response-meta.js +0 -0
  298. package/{server → build/server}/graphql/types/response-pagination.d.ts +0 -0
  299. package/{server → build/server}/graphql/types/response-pagination.js +0 -0
  300. package/{server → build/server}/graphql/types/update-comment.d.ts +0 -0
  301. package/{server → build/server}/graphql/types/update-comment.js +0 -0
  302. package/{server → build/server}/index.d.ts +0 -0
  303. package/{server → build/server}/index.js +0 -0
  304. package/{server → build/server}/register.d.ts +0 -0
  305. package/{server → build/server}/register.js +0 -0
  306. package/{server → build/server}/routes/admin.d.ts +0 -0
  307. package/{server → build/server}/routes/admin.js +0 -0
  308. package/{server → build/server}/routes/client.d.ts +0 -0
  309. package/build/server/routes/client.js +90 -0
  310. package/{server → build/server}/routes/index.d.ts +0 -0
  311. package/{server → build/server}/routes/index.js +0 -0
  312. package/{server → build/server}/services/admin.d.ts +0 -0
  313. package/{server → build/server}/services/admin.js +10 -5
  314. package/{server → build/server}/services/client.d.ts +0 -0
  315. package/{server → build/server}/services/client.js +57 -45
  316. package/{server → build/server}/services/common.d.ts +0 -0
  317. package/{server → build/server}/services/common.js +32 -11
  318. package/{server → build/server}/services/graphql.d.ts +0 -0
  319. package/{server → build/server}/services/graphql.js +0 -0
  320. package/{server → build/server}/services/index.d.ts +0 -0
  321. package/{server → build/server}/services/index.js +0 -0
  322. package/{server → build/server}/services/utils/functions.d.ts +1 -1
  323. package/{server → build/server}/services/utils/functions.js +9 -4
  324. package/{server → build/server}/utils/constants.d.ts +0 -0
  325. package/{server → build/server}/utils/constants.js +0 -0
  326. package/{server → build/server}/utils/error.d.ts +0 -0
  327. package/{server → build/server}/utils/error.js +0 -0
  328. package/{server → build/server}/utils/functions.d.ts +0 -0
  329. package/{server → build/server}/utils/functions.js +0 -0
  330. package/{strapi-admin.d.ts → build/strapi-admin.d.ts} +0 -0
  331. package/{strapi-admin.js → build/strapi-admin.js} +0 -0
  332. package/{strapi-server.d.ts → build/strapi-server.d.ts} +0 -0
  333. package/{strapi-server.js → build/strapi-server.js} +0 -0
  334. package/build/tsconfig.tsbuildinfo +1 -0
  335. package/{types → build/types}/contentTypes.d.ts +13 -9
  336. package/{types → build/types}/contentTypes.js +0 -0
  337. package/content-types/comment.ts +93 -0
  338. package/content-types/index.ts +11 -0
  339. package/content-types/report.ts +50 -0
  340. package/jest.config.ts +22 -0
  341. package/package.json +36 -7
  342. package/permissions.ts +17 -0
  343. package/server/bootstrap.ts +66 -0
  344. package/server/config/index.ts +19 -0
  345. package/server/controllers/admin.ts +194 -0
  346. package/server/controllers/client.ts +220 -0
  347. package/server/controllers/index.ts +13 -0
  348. package/server/controllers/utils/functions.ts +27 -0
  349. package/server/controllers/utils/parsers.ts +59 -0
  350. package/server/destroy.ts +3 -0
  351. package/server/graphql/index.ts +27 -0
  352. package/server/graphql/mutations/createAbuseReport.ts +38 -0
  353. package/server/graphql/mutations/createComment.ts +41 -0
  354. package/server/graphql/mutations/index.ts +26 -0
  355. package/server/graphql/mutations/removeComment.ts +41 -0
  356. package/server/graphql/mutations/updateComment.ts +40 -0
  357. package/server/graphql/queries/findAllFlat.ts +58 -0
  358. package/server/graphql/queries/findAllInHierarchy.ts +47 -0
  359. package/server/graphql/queries/index.ts +22 -0
  360. package/server/graphql/resolvers-config.ts +13 -0
  361. package/server/graphql/types/comment-author.ts +12 -0
  362. package/server/graphql/types/comment-nested.ts +19 -0
  363. package/server/graphql/types/comment.ts +18 -0
  364. package/server/graphql/types/create-comment-author.ts +12 -0
  365. package/server/graphql/types/create-comment.ts +12 -0
  366. package/server/graphql/types/create-report.ts +12 -0
  367. package/server/graphql/types/id.ts +28 -0
  368. package/server/graphql/types/identify-comment-author.ts +9 -0
  369. package/server/graphql/types/index.ts +38 -0
  370. package/server/graphql/types/remove-comment.ts +11 -0
  371. package/server/graphql/types/report-reason.ts +12 -0
  372. package/server/graphql/types/report.ts +14 -0
  373. package/server/graphql/types/response-find-all.ts +10 -0
  374. package/server/graphql/types/response-meta.ts +9 -0
  375. package/server/graphql/types/response-pagination.ts +14 -0
  376. package/server/graphql/types/update-comment.ts +12 -0
  377. package/server/index.ts +20 -0
  378. package/server/register.ts +3 -0
  379. package/server/routes/admin.ts +118 -0
  380. package/server/routes/client.ts +95 -0
  381. package/server/routes/index.ts +25 -0
  382. package/server/services/admin.ts +406 -0
  383. package/server/services/client.ts +394 -0
  384. package/server/services/common.ts +501 -0
  385. package/server/services/graphql.ts +219 -0
  386. package/server/services/index.ts +13 -0
  387. package/server/services/utils/functions.ts +150 -0
  388. package/server/utils/constants.ts +23 -0
  389. package/server/utils/error.ts +44 -0
  390. package/server/utils/functions.ts +55 -0
  391. package/strapi-admin.ts +5 -0
  392. package/strapi-server.ts +77 -0
  393. package/tsconfig.json +38 -0
  394. package/types/common.d.ts +1 -0
  395. package/types/config.d.ts +35 -0
  396. package/types/constants.d.ts +3 -0
  397. package/types/contentTypes.ts +56 -0
  398. package/types/controllers.d.ts +125 -0
  399. package/types/graphql.d.ts +24 -0
  400. package/types/index.d.ts +7 -0
  401. package/types/services.d.ts +166 -0
  402. package/server/controllers/client.d.ts +0 -4
  403. package/server/controllers/utils/functions.d.ts +0 -7
  404. package/server/controllers/utils/parsers.d.ts +0 -15
  405. package/server/controllers/utils/parsers.js +0 -23
  406. package/server/routes/client.js +0 -54
  407. package/tsconfig.tsbuildinfo +0 -1
@@ -0,0 +1,4 @@
1
+ #!/bin/sh
2
+ . "$(dirname "$0")/_/husky.sh"
3
+
4
+ yarn test:unit
package/LICENSE.md ADDED
@@ -0,0 +1,7 @@
1
+ Copyright (c) 2021 VirtusLab Sp. z o.o. & Strapi Solutions.
2
+
3
+ Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
4
+
5
+ The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
6
+
7
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
package/README.md CHANGED
@@ -32,6 +32,19 @@
32
32
 
33
33
  A plugin for [Strapi Headless CMS](https://github.com/strapi/strapi) that provides end to end comments feature with their moderation panel, bad words filtering, abuse reporting and much more.
34
34
 
35
+ ### Table of Contents
36
+
37
+ 1. [✨ Features](#-features)
38
+ 2. [⏳ Installation](#-installation)
39
+ 3. [🖐 Requirements](#-requirements)
40
+ 4. [🔧 Configuration](#-configuration)
41
+ - [Settings page](#in-v203-and-newer)
42
+ - [Plugin file](#in-v202-and-older--default-configuration-state-for-v203-and-newer)
43
+ 5. [🕸️ Public API - REST](#%EF%B8%8F-public-rest-api-specification)
44
+ 6. [🕸️ Public API - GraphQL](#%EF%B8%8F-public-graphql-specification)
45
+ 7. [🤝 Contributing](#-contributing)
46
+ 8. [👨‍💻 Community support](#-community-support)
47
+
35
48
  ## ✨ Features
36
49
 
37
50
  - **Comments Public REST + GraphQL API:** Elegant, entirely customizable and a fully extensible admin panel.
@@ -48,13 +61,23 @@ A plugin for [Strapi Headless CMS](https://github.com/strapi/strapi) that provid
48
61
 
49
62
  ## ⏳ Installation
50
63
 
64
+ ### Via Strapi Markerplace
65
+
66
+ As a ✅ **verified** plugin by Strapi team we're available on the [**Strapi Marketplace**](https://market.strapi.io/plugins/strapi-plugin-comments) as well as **In-App Marketplace** where you can follow the installation instructions.
67
+
68
+ <div style="margin: 20px 0" align="center">
69
+ <img style="width: 100%; height: auto;" src="public/assets/marketplace.png" alt="Strapi In-App Marketplace" />
70
+ </div>
71
+
72
+ ### Via command line
73
+
51
74
  (Use **yarn** to install this plugin within your Strapi project (recommended). [Install yarn with these docs](https://yarnpkg.com/lang/en/docs/install/).)
52
75
 
53
76
  ```bash
54
77
  yarn add strapi-plugin-comments@latest
55
78
  ```
56
79
 
57
- After successful installation you've to build a fresh package that includes plugin UI. To archive that simply use:
80
+ After successful installation you've to re-build your Strapi instance. To archive that simply use:
58
81
 
59
82
  ```bash
60
83
  yarn build
@@ -69,7 +92,9 @@ yarn develop --watch-admin
69
92
 
70
93
  The **Comments** plugin should appear in the **Plugins** section of Strapi sidebar after you run app again.
71
94
 
72
- Enjoy 🎉
95
+ As a next step you must configure your the plugin by the way you want to. See [**Configuration**](#🔧-configuration) section.
96
+
97
+ All done. Enjoy 🎉
73
98
 
74
99
  ### Working in development mode
75
100
 
@@ -107,7 +132,7 @@ In our minimum support we're following [official Node.js releases timelines](htt
107
132
 
108
133
  **Supported Strapi versions**:
109
134
 
110
- - Strapi v4.1.2 (recently tested)
135
+ - Strapi v4.1.7 (recently tested)
111
136
  - Strapi v4.x
112
137
 
113
138
  > This plugin is designed for **Strapi v4** and is not working with v3.x. To get version for **Strapi v3** install version [v1.x](https://github.com/VirtusLab-Open-Source/strapi-plugin-comments/tree/strapi-v3).
@@ -116,14 +141,22 @@ In our minimum support we're following [official Node.js releases timelines](htt
116
141
 
117
142
  ## 🔧 Configuration
118
143
 
119
- ### In `v2.0.3` and newest
144
+ To start your journey with **Comments plugin** you must first setup it using the dedicated Settings page (`v2.0.3` and newer) or for any version, put your configuration in `config/plugins.js`. Anyway we're recommending the click-through option where your configuration is going to be properly validated.
145
+
146
+ ### In `v2.0.3` and newer
120
147
 
121
148
  Version `2.0.3` introduce the intuitive **Settings** page which you can easly access via `Strapi Settings -> Section: Comments Plugin -> Configuration`. On dedicated page you will be able to setup all crucial properties which drives the plugin and customize each individual collection for which **Comments plugin** should be enabled.
122
149
 
150
+ On the dedicated page, you will be able to set up all crucial properties which drive the plugin and customize each individual collection for which **Comments plugin** should be enabled.
151
+
152
+ <div style="margin: 20px 0" align="center">
153
+ <img style="width: 100%; height: auto;" src="public/assets/configuration.png" alt="Plugin configuration" />
154
+ </div>
155
+
123
156
  > _Note_
124
157
  > Default configuration for your plugin is fetched from `config/plugins.js` or directly from the plugin itself. If you would like to customize the default state to which you might revert, please follow the next section.
125
158
 
126
- ### In `v2.0.2` and older + default configuration state for `v2.0.3` and newest
159
+ ### In `v2.0.2` and older + default configuration state for `v2.0.3` and newer
127
160
 
128
161
  To setup amend default plugin configuration we recommend to put following snippet as part of `config/plugins.js` or `config/<env>/plugins.js` file. If the file does not exist yet, you have to create it manually. If you've got already configurations for other plugins stores by this way, use just the `comments` part within exising `plugins` item.
129
162
 
@@ -154,6 +187,7 @@ module.exports = ({ env }) => ({
154
187
 
155
188
  ### Properties
156
189
 
190
+ - `enabledCollections` - list of Collection and Single Types for which plugin should be enabled in format like `'api::<collection name>.<content type name>'`. By default it's empty and none comments are not enabled for any of type in Strapi.
157
191
  - `badWords` - Enabled support for [bad words filtering](https://www.npmjs.com/package/bad-words). Can be turned off or overwritten using [options reference](https://www.npmjs.com/package/bad-words#constructor). Default value: `true`.
158
192
  - `moderatorRoles` - Optional list of names of roles. Users with those roles will be notified by email when a new abuse report is created. This feature requires a built-in [Strapi email plugin](https://docs.strapi.io/developer-docs/latest/plugins/email.html) configured.
159
193
  - `approvalFlow` - list of Content Types which are supporting approval flow. Values must be in format like `'api::<collection name>.<content type name>'`. For not included, posted comments are going to be immediately visible.
@@ -276,6 +310,7 @@ Return a hierarchical tree structure of comments for specified instance of Conte
276
310
 
277
311
  #### Strapi REST API properties support:
278
312
 
313
+ - [field selection](https://docs.strapi.io/developer-docs/latest/developer-resources/database-apis-reference/rest/populating-fields.html#field-selection)
279
314
  - [sorting](https://docs.strapi.io/developer-docs/latest/developer-resources/database-apis-reference/rest/sort-pagination.html#sorting)
280
315
 
281
316
  ### Get Comments (flat structure)
@@ -317,6 +352,7 @@ Return a flat structure of comments for specified instance of Content Type like
317
352
  #### Strapi REST API properties support:
318
353
 
319
354
  - [filtering](https://docs.strapi.io/developer-docs/latest/developer-resources/database-apis-reference/rest/filtering-locale-publication.html#filtering)
355
+ - [field selection](https://docs.strapi.io/developer-docs/latest/developer-resources/database-apis-reference/rest/populating-fields.html#field-selection)
320
356
  - [sorting](https://docs.strapi.io/developer-docs/latest/developer-resources/database-apis-reference/rest/sort-pagination.html#sorting)
321
357
  - [pagination](https://docs.strapi.io/developer-docs/latest/developer-resources/database-apis-reference/rest/sort-pagination.html#pagination)
322
358
 
@@ -0,0 +1,11 @@
1
+ // @ts-nocheck
2
+
3
+ import styled from "styled-components";
4
+ import { Button } from "@strapi/design-system/Button";
5
+
6
+ export const ActionButton = styled(Button)`
7
+ padding: 7px 16px;
8
+ margin-left: ${({ isSingle }) => (isSingle ? "0" : ".5rem")};
9
+
10
+ white-space: nowrap;
11
+ `;
@@ -0,0 +1,31 @@
1
+ /**
2
+ *
3
+ * Avatar
4
+ *
5
+ */
6
+
7
+ // @ts-nocheck
8
+
9
+ import React from "react";
10
+ import PropTypes from "prop-types";
11
+ import { isObject } from "lodash";
12
+ import { Avatar, Initials } from "@strapi/design-system/Avatar";
13
+ import { renderInitials } from "../../utils";
14
+
15
+ const UserAvatar = ({ avatar, name }) => {
16
+ if (avatar) {
17
+ let image = avatar;
18
+ if (isObject(avatar)) {
19
+ image = avatar?.formats?.thumbnail.url || avatar.url;
20
+ }
21
+ return <Avatar src={image} alt={name} />;
22
+ }
23
+ return <Initials>{renderInitials(name)}</Initials>;
24
+ };
25
+
26
+ UserAvatar.propTypes = {
27
+ avatar: PropTypes.oneOfType(PropTypes.string, PropTypes.object).isRequired,
28
+ name: PropTypes.string,
29
+ };
30
+
31
+ export default UserAvatar;
@@ -0,0 +1,88 @@
1
+ /**
2
+ *
3
+ * Entity Details
4
+ *
5
+ */
6
+
7
+ // @ts-nocheck
8
+
9
+ import React from "react";
10
+ import PropTypes from "prop-types";
11
+ import { Button } from "@strapi/design-system/Button";
12
+ import { Dialog, DialogBody, DialogFooter } from "@strapi/design-system/Dialog";
13
+ import { Flex } from "@strapi/design-system/Flex";
14
+ import { Stack } from "@strapi/design-system/Stack";
15
+ import { Typography } from "@strapi/design-system/Typography";
16
+ import { ExclamationMarkCircle, Check } from "@strapi/icons";
17
+ import { getMessage } from "../../utils";
18
+
19
+ const ConfirmationDialog = ({
20
+ isVisible = false,
21
+ isActionAsync = false,
22
+ children,
23
+ onConfirm,
24
+ onCancel,
25
+ header,
26
+ labelCancel,
27
+ labelConfirm,
28
+ iconConfirm,
29
+ }) => (
30
+ <Dialog
31
+ onClose={onCancel}
32
+ title={
33
+ header ||
34
+ getMessage("compontents.confirmation.dialog.header", "Confirmation")
35
+ }
36
+ isOpen={isVisible}
37
+ >
38
+ <DialogBody icon={<ExclamationMarkCircle />}>
39
+ <Stack size={2}>
40
+ <Flex justifyContent="center">
41
+ <Typography id="dialog-confirm-description">
42
+ {children ||
43
+ getMessage("compontents.confirmation.dialog.description")}
44
+ </Typography>
45
+ </Flex>
46
+ </Stack>
47
+ </DialogBody>
48
+ <DialogFooter
49
+ startAction={
50
+ <Button onClick={onCancel} variant="tertiary" disabled={isActionAsync}>
51
+ {labelCancel ||
52
+ getMessage(
53
+ "compontents.confirmation.dialog.button.cancel",
54
+ "Cancel"
55
+ )}
56
+ </Button>
57
+ }
58
+ endAction={
59
+ <Button
60
+ onClick={onConfirm}
61
+ variant="danger-light"
62
+ startIcon={iconConfirm || <Check />}
63
+ disabled={isActionAsync}
64
+ >
65
+ {labelConfirm ||
66
+ getMessage(
67
+ "compontents.confirmation.dialog.button.confirm",
68
+ "Confirm"
69
+ )}
70
+ </Button>
71
+ }
72
+ />
73
+ </Dialog>
74
+ );
75
+
76
+ ConfirmationDialog.propTypes = {
77
+ isVisible: PropTypes.bool,
78
+ isActionAsync: PropTypes.bool,
79
+ children: PropTypes.array.isRequired,
80
+ header: PropTypes.string,
81
+ labelCancel: PropTypes.string,
82
+ labelConfirm: PropTypes.string,
83
+ iconConfirm: PropTypes.object,
84
+ onConfirm: PropTypes.func.isRequired,
85
+ onCancel: PropTypes.func.isRequired,
86
+ };
87
+
88
+ export default ConfirmationDialog;
@@ -0,0 +1,36 @@
1
+ /**
2
+ *
3
+ * Entity Details
4
+ *
5
+ */
6
+
7
+ // @ts-nocheck
8
+
9
+ import React from "react";
10
+ import PropTypes from "prop-types";
11
+ import { isNil } from "lodash";
12
+ import { Box } from "@strapi/design-system/Box";
13
+ import { Status } from "@strapi/design-system/Status";
14
+ import { Typography } from "@strapi/design-system/Typography";
15
+ import { getMessage } from "../../utils";
16
+
17
+ const DiscussionStatus = ({ blocked, blockedThread }) => {
18
+ let variant = "success";
19
+
20
+ return (
21
+ <Box styles={{ marginBottom: 10 }}>
22
+ <Status variant={variant}>
23
+ <Typography>
24
+ {getMessage("page.details.panel.status", "Discussion is")}{" "}
25
+ <Typography fontWeight="bold">
26
+ {getMessage("page.details.panel.open", "OPEN")}{" "}
27
+ </Typography>
28
+ </Typography>
29
+ </Status>
30
+ </Box>
31
+ );
32
+ };
33
+
34
+ DiscussionStatus.propTypes = {};
35
+
36
+ export default DiscussionStatus;
@@ -0,0 +1,97 @@
1
+ /**
2
+ *
3
+ * Entity Details
4
+ *
5
+ */
6
+
7
+ // @ts-nocheck
8
+
9
+ import React from "react";
10
+ import PropTypes from "prop-types";
11
+ import { isNil } from "lodash";
12
+ import { Box } from "@strapi/design-system/Box";
13
+ import { Flex } from "@strapi/design-system/Flex";
14
+ import { Link } from "@strapi/design-system/Link";
15
+ import { Typography } from "@strapi/design-system/Typography";
16
+ import { ArrowUp } from "@strapi/icons";
17
+ import DiscussionThreadItem from "../DiscussionThreadItem";
18
+ import { getMessage, getUrl } from "../../utils";
19
+ import LoadingIndicatorOverlay from "../LoadingIndicatorOverlay";
20
+ import { LoadingIndicatorContainer } from "../LoadingIndicatorOverlay/styles";
21
+
22
+ const DiscussionThread = ({
23
+ level = [],
24
+ selected = {},
25
+ allowedActions,
26
+ isReloading,
27
+ }) => {
28
+ const rootThread = selected?.threadOf;
29
+ return (
30
+ <LoadingIndicatorContainer as={Box} padding={4}>
31
+ {isReloading && <LoadingIndicatorOverlay />}
32
+ <Flex
33
+ as={Box}
34
+ direction="row"
35
+ justifyContent="space-between"
36
+ marginBottom={2}
37
+ >
38
+ <Typography
39
+ variant="delta"
40
+ textColor="neutral800"
41
+ id="discussion-thread"
42
+ >
43
+ {getMessage("page.details.panel.discussion", "Discussion")}
44
+ </Typography>
45
+ {rootThread && (
46
+ <Link
47
+ to={getUrl(`discover/${rootThread.id}`)}
48
+ startIcon={<ArrowUp />}
49
+ >
50
+ {getMessage("page.details.panel.discussion.nav.back")}
51
+ </Link>
52
+ )}
53
+ </Flex>
54
+ <Flex as="ul" direction="column" alignItems="flex-start">
55
+ {rootThread && (
56
+ <DiscussionThreadItem
57
+ {...rootThread}
58
+ allowedActions={allowedActions}
59
+ isThreadAuthor
60
+ root
61
+ pinned
62
+ />
63
+ )}
64
+ {level.map((item) => {
65
+ const isSelected = selected.id === item.id;
66
+ const isThreadAuthor =
67
+ !isNil(selected?.threadOf?.author?.id) &&
68
+ selected?.threadOf?.author?.id === item?.author?.id;
69
+ return (
70
+ <DiscussionThreadItem
71
+ key={`comment-${item.id}`}
72
+ {...item}
73
+ allowedActions={allowedActions}
74
+ root={isNil(rootThread)}
75
+ blockedThread={rootThread?.blockedThread || item.blockedThread}
76
+ isSelected={isSelected}
77
+ isThreadAuthor={isThreadAuthor}
78
+ />
79
+ );
80
+ })}
81
+ </Flex>
82
+ </LoadingIndicatorContainer>
83
+ );
84
+ };
85
+
86
+ DiscussionThread.propTypes = {
87
+ level: PropTypes.array.isRequired,
88
+ selected: PropTypes.object.isRequired,
89
+ allowedActions: PropTypes.shape({
90
+ canModerate: PropTypes.bool,
91
+ canAccessReports: PropTypes.bool,
92
+ canReviewReports: PropTypes.bool,
93
+ }),
94
+ isReloading: PropTypes.bool,
95
+ };
96
+
97
+ export default DiscussionThread;
@@ -0,0 +1,71 @@
1
+ /**
2
+ *
3
+ * Discussion thread - Item
4
+ *
5
+ */
6
+
7
+ // @ts-nocheck
8
+
9
+ import React from "react";
10
+ import PropTypes from "prop-types";
11
+ import { Box } from "@strapi/design-system/Box";
12
+ import { Flex } from "@strapi/design-system/Flex";
13
+ import { Typography } from "@strapi/design-system/Typography";
14
+ import DiscussionThreadItemFooter from "../DiscussionThreadItemFooter";
15
+ import DiscussionThreadItemActions from "../DiscussionThreadItemActions";
16
+ import {
17
+ DiscussionThreadItemContainer,
18
+ DiscussionThreadFullsize,
19
+ DiscussionThreadItemContent,
20
+ } from "./styles";
21
+
22
+ const DiscussionThreadItem = (props) => {
23
+ const { as = "li", isSelected, content, root, preview, pinned } = props;
24
+
25
+ return (
26
+ <DiscussionThreadFullsize as={as} marginBottom={preview ? 4 : 0}>
27
+ <DiscussionThreadItemContainer
28
+ as={Flex}
29
+ direction="column"
30
+ alignItems="flex-start"
31
+ hasRadius
32
+ background={isSelected ? "neutral100" : null}
33
+ paddingLeft={2}
34
+ paddingRight={2}
35
+ paddingTop={4}
36
+ paddingBottom={4}
37
+ >
38
+ <DiscussionThreadItemContent
39
+ as={Flex}
40
+ paddingBottom={2}
41
+ direction="row"
42
+ >
43
+ <Box as={Flex} grow={1} alignItems="center" marginTop="6px">
44
+ <Typography variant="omega" textColor="neutral800">
45
+ {content}
46
+ </Typography>
47
+ </Box>
48
+ {!preview && (
49
+ <DiscussionThreadItemActions
50
+ {...props}
51
+ root={root || pinned}
52
+ preview={preview}
53
+ />
54
+ )}
55
+ </DiscussionThreadItemContent>
56
+ <DiscussionThreadItemFooter {...props} />
57
+ </DiscussionThreadItemContainer>
58
+ </DiscussionThreadFullsize>
59
+ );
60
+ };
61
+
62
+ DiscussionThreadItem.propTypes = {
63
+ content: PropTypes.string.isRequired,
64
+ allowedActions: PropTypes.shape({
65
+ canModerate: PropTypes.bool,
66
+ canAccessReports: PropTypes.bool,
67
+ canReviewReports: PropTypes.bool,
68
+ }),
69
+ };
70
+
71
+ export default DiscussionThreadItem;
@@ -0,0 +1,15 @@
1
+ // @ts-nocheck
2
+
3
+ import styled from "styled-components";
4
+ import { Box } from "@strapi/design-system/Box";
5
+
6
+ export const DiscussionThreadFullsize = styled(Box)`
7
+ width: 100%;
8
+ `;
9
+ export const DiscussionThreadItemContent = styled(DiscussionThreadFullsize)`
10
+ align-items: flex-start;
11
+ `;
12
+
13
+ export const DiscussionThreadItemContainer = styled(DiscussionThreadFullsize)`
14
+ align-items: flex-start;
15
+ `;