@drodil/backstage-plugin-qeta-react 3.24.5 → 3.25.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 (222) hide show
  1. package/dist/components/AIAnswerCard/AIAnswerCard.esm.js +54 -41
  2. package/dist/components/AIAnswerCard/AIAnswerCard.esm.js.map +1 -1
  3. package/dist/components/AnswerCard/AnswerCard.esm.js +96 -73
  4. package/dist/components/AnswerCard/AnswerCard.esm.js.map +1 -1
  5. package/dist/components/AnswerForm/AnswerForm.esm.js +52 -47
  6. package/dist/components/AnswerForm/AnswerForm.esm.js.map +1 -1
  7. package/dist/components/AnswersContainer/AnswerList.esm.js +31 -21
  8. package/dist/components/AnswersContainer/AnswerList.esm.js.map +1 -1
  9. package/dist/components/AnswersContainer/AnswerListItem.esm.js +74 -57
  10. package/dist/components/AnswersContainer/AnswerListItem.esm.js.map +1 -1
  11. package/dist/components/AnswersContainer/AnswersContainer.esm.js +70 -56
  12. package/dist/components/AnswersContainer/AnswersContainer.esm.js.map +1 -1
  13. package/dist/components/ArticleContent/ArticleButtons.esm.js +73 -52
  14. package/dist/components/ArticleContent/ArticleButtons.esm.js.map +1 -1
  15. package/dist/components/ArticleContent/ArticleContent.esm.js +60 -34
  16. package/dist/components/ArticleContent/ArticleContent.esm.js.map +1 -1
  17. package/dist/components/AuthorBox/AuthorBox.esm.js +49 -31
  18. package/dist/components/AuthorBox/AuthorBox.esm.js.map +1 -1
  19. package/dist/components/Buttons/AddToCollectionButton.esm.js +35 -24
  20. package/dist/components/Buttons/AddToCollectionButton.esm.js.map +1 -1
  21. package/dist/components/Buttons/AskQuestionButton.esm.js +18 -15
  22. package/dist/components/Buttons/AskQuestionButton.esm.js.map +1 -1
  23. package/dist/components/Buttons/ButtonContainer.esm.js +2 -2
  24. package/dist/components/Buttons/ButtonContainer.esm.js.map +1 -1
  25. package/dist/components/Buttons/CollectionFollowButton.esm.js +10 -6
  26. package/dist/components/Buttons/CollectionFollowButton.esm.js.map +1 -1
  27. package/dist/components/Buttons/CreateCollectionButton.esm.js +18 -15
  28. package/dist/components/Buttons/CreateCollectionButton.esm.js.map +1 -1
  29. package/dist/components/Buttons/EntityFollowButton.esm.js +10 -6
  30. package/dist/components/Buttons/EntityFollowButton.esm.js.map +1 -1
  31. package/dist/components/Buttons/FavoriteButton.esm.js +15 -11
  32. package/dist/components/Buttons/FavoriteButton.esm.js.map +1 -1
  33. package/dist/components/Buttons/LinkButton.esm.js +10 -6
  34. package/dist/components/Buttons/LinkButton.esm.js.map +1 -1
  35. package/dist/components/Buttons/TagFollowButton.esm.js +10 -6
  36. package/dist/components/Buttons/TagFollowButton.esm.js.map +1 -1
  37. package/dist/components/Buttons/UserFollowButton.esm.js +10 -6
  38. package/dist/components/Buttons/UserFollowButton.esm.js.map +1 -1
  39. package/dist/components/Buttons/VoteButtons.esm.js +41 -35
  40. package/dist/components/Buttons/VoteButtons.esm.js.map +1 -1
  41. package/dist/components/Buttons/WriteArticleButton.esm.js +18 -15
  42. package/dist/components/Buttons/WriteArticleButton.esm.js.map +1 -1
  43. package/dist/components/CollectionCard/CollectionCard.esm.js +59 -42
  44. package/dist/components/CollectionCard/CollectionCard.esm.js.map +1 -1
  45. package/dist/components/CollectionForm/CollectionForm.esm.js +73 -67
  46. package/dist/components/CollectionForm/CollectionForm.esm.js.map +1 -1
  47. package/dist/components/CollectionsGrid/CollectionsGrid.esm.js +61 -49
  48. package/dist/components/CollectionsGrid/CollectionsGrid.esm.js.map +1 -1
  49. package/dist/components/CollectionsGrid/CollectionsGridContent.esm.js +18 -14
  50. package/dist/components/CollectionsGrid/CollectionsGridContent.esm.js.map +1 -1
  51. package/dist/components/CollectionsGrid/CollectionsGridItem.esm.js +52 -32
  52. package/dist/components/CollectionsGrid/CollectionsGridItem.esm.js.map +1 -1
  53. package/dist/components/CollectionsGrid/NoCollectionsCard.esm.js +10 -6
  54. package/dist/components/CollectionsGrid/NoCollectionsCard.esm.js.map +1 -1
  55. package/dist/components/CommentSection/CommentForm.esm.js +42 -38
  56. package/dist/components/CommentSection/CommentForm.esm.js.map +1 -1
  57. package/dist/components/CommentSection/CommentList.esm.js +15 -12
  58. package/dist/components/CommentSection/CommentList.esm.js.map +1 -1
  59. package/dist/components/CommentSection/CommentListItem.esm.js +49 -28
  60. package/dist/components/CommentSection/CommentListItem.esm.js.map +1 -1
  61. package/dist/components/CommentSection/CommentSection.esm.js +46 -38
  62. package/dist/components/CommentSection/CommentSection.esm.js.map +1 -1
  63. package/dist/components/DeleteModal/DeleteModal.esm.js +32 -23
  64. package/dist/components/DeleteModal/DeleteModal.esm.js.map +1 -1
  65. package/dist/components/EntitiesGrid/EntitiesGrid.esm.js +39 -30
  66. package/dist/components/EntitiesGrid/EntitiesGrid.esm.js.map +1 -1
  67. package/dist/components/EntitiesGrid/EntitiesGridContent.esm.js +9 -5
  68. package/dist/components/EntitiesGrid/EntitiesGridContent.esm.js.map +1 -1
  69. package/dist/components/EntitiesGrid/EntitiesGridItem.esm.js +50 -38
  70. package/dist/components/EntitiesGrid/EntitiesGridItem.esm.js.map +1 -1
  71. package/dist/components/EntitiesGrid/NoEntitiesCard.esm.js +10 -6
  72. package/dist/components/EntitiesGrid/NoEntitiesCard.esm.js.map +1 -1
  73. package/dist/components/FilterPanel/DateRangeFilter.esm.js +71 -58
  74. package/dist/components/FilterPanel/DateRangeFilter.esm.js.map +1 -1
  75. package/dist/components/FilterPanel/FilterPanel.esm.js +262 -217
  76. package/dist/components/FilterPanel/FilterPanel.esm.js.map +1 -1
  77. package/dist/components/FollowedLists/FollowedCollectionsList.esm.js +6 -2
  78. package/dist/components/FollowedLists/FollowedCollectionsList.esm.js.map +1 -1
  79. package/dist/components/FollowedLists/FollowedEntitiesList.esm.js +6 -2
  80. package/dist/components/FollowedLists/FollowedEntitiesList.esm.js.map +1 -1
  81. package/dist/components/FollowedLists/FollowedTagsList.esm.js +6 -2
  82. package/dist/components/FollowedLists/FollowedTagsList.esm.js.map +1 -1
  83. package/dist/components/FollowedLists/FollowedUsersList.esm.js +6 -2
  84. package/dist/components/FollowedLists/FollowedUsersList.esm.js.map +1 -1
  85. package/dist/components/HeaderImageInput/HeaderImageInput.esm.js +51 -37
  86. package/dist/components/HeaderImageInput/HeaderImageInput.esm.js.map +1 -1
  87. package/dist/components/HomePageCards/ImpactCard.esm.js +15 -4
  88. package/dist/components/HomePageCards/ImpactCard.esm.js.map +1 -1
  89. package/dist/components/HomePageCards/PostsCard.esm.js +14 -7
  90. package/dist/components/HomePageCards/PostsCard.esm.js.map +1 -1
  91. package/dist/components/LeftMenu/LeftMenu.esm.js +68 -28
  92. package/dist/components/LeftMenu/LeftMenu.esm.js.map +1 -1
  93. package/dist/components/LeftMenu/LeftMenuButton.esm.js +52 -45
  94. package/dist/components/LeftMenu/LeftMenuButton.esm.js.map +1 -1
  95. package/dist/components/Links/Links.esm.js +12 -8
  96. package/dist/components/Links/Links.esm.js.map +1 -1
  97. package/dist/components/LoadingGrid/LoadingGrid.esm.js +5 -5
  98. package/dist/components/LoadingGrid/LoadingGrid.esm.js.map +1 -1
  99. package/dist/components/MarkdownEditor/MarkdownEditor.esm.js +5 -6
  100. package/dist/components/MarkdownEditor/MarkdownEditor.esm.js.map +1 -1
  101. package/dist/components/MarkdownRenderer/MarkdownRenderer.esm.js +42 -33
  102. package/dist/components/MarkdownRenderer/MarkdownRenderer.esm.js.map +1 -1
  103. package/dist/components/PostAnonymouslyCheckbox/PostAnonymouslyCheckbox.esm.js +10 -6
  104. package/dist/components/PostAnonymouslyCheckbox/PostAnonymouslyCheckbox.esm.js.map +1 -1
  105. package/dist/components/PostForm/AutocompleteListComponent.esm.js +18 -17
  106. package/dist/components/PostForm/AutocompleteListComponent.esm.js.map +1 -1
  107. package/dist/components/PostForm/EntitiesInput.esm.js +19 -9
  108. package/dist/components/PostForm/EntitiesInput.esm.js.map +1 -1
  109. package/dist/components/PostForm/PostForm.esm.js +109 -103
  110. package/dist/components/PostForm/PostForm.esm.js.map +1 -1
  111. package/dist/components/PostForm/TagInput.esm.js +13 -12
  112. package/dist/components/PostForm/TagInput.esm.js.map +1 -1
  113. package/dist/components/PostHighlightList/PostHighlightList.esm.js +26 -14
  114. package/dist/components/PostHighlightList/PostHighlightList.esm.js.map +1 -1
  115. package/dist/components/PostsContainer/NoPostsCard.esm.js +24 -18
  116. package/dist/components/PostsContainer/NoPostsCard.esm.js.map +1 -1
  117. package/dist/components/PostsContainer/PostList.esm.js +30 -20
  118. package/dist/components/PostsContainer/PostList.esm.js.map +1 -1
  119. package/dist/components/PostsContainer/PostListItem.esm.js +108 -86
  120. package/dist/components/PostsContainer/PostListItem.esm.js.map +1 -1
  121. package/dist/components/PostsContainer/PostsContainer.esm.js +100 -84
  122. package/dist/components/PostsContainer/PostsContainer.esm.js.map +1 -1
  123. package/dist/components/PostsGrid/PostsGrid.esm.js +100 -84
  124. package/dist/components/PostsGrid/PostsGrid.esm.js.map +1 -1
  125. package/dist/components/PostsGrid/PostsGridContent.esm.js +46 -39
  126. package/dist/components/PostsGrid/PostsGridContent.esm.js.map +1 -1
  127. package/dist/components/PostsGrid/PostsGridItem.esm.js +59 -34
  128. package/dist/components/PostsGrid/PostsGridItem.esm.js.map +1 -1
  129. package/dist/components/PostsTable/PostsTable.esm.js +96 -67
  130. package/dist/components/PostsTable/PostsTable.esm.js.map +1 -1
  131. package/dist/components/PostsTable/PostsTableRow.esm.js +21 -15
  132. package/dist/components/PostsTable/PostsTableRow.esm.js.map +1 -1
  133. package/dist/components/QetaPagination/QetaPagination.esm.js +39 -31
  134. package/dist/components/QetaPagination/QetaPagination.esm.js.map +1 -1
  135. package/dist/components/QuestionCard/QuestionCard.esm.js +90 -64
  136. package/dist/components/QuestionCard/QuestionCard.esm.js.map +1 -1
  137. package/dist/components/RelativeTimeWithTooltip/RelativeTimeWithTooltip.esm.js +4 -3
  138. package/dist/components/RelativeTimeWithTooltip/RelativeTimeWithTooltip.esm.js.map +1 -1
  139. package/dist/components/SearchBar/SearchBar.esm.js +44 -41
  140. package/dist/components/SearchBar/SearchBar.esm.js.map +1 -1
  141. package/dist/components/SelectTemplateList/SelectTemplateList.esm.js +46 -30
  142. package/dist/components/SelectTemplateList/SelectTemplateList.esm.js.map +1 -1
  143. package/dist/components/StatsChart/StatsChart.esm.js +149 -135
  144. package/dist/components/StatsChart/StatsChart.esm.js.map +1 -1
  145. package/dist/components/SuggestionsCard/SuggestionsCard.esm.js +42 -32
  146. package/dist/components/SuggestionsCard/SuggestionsCard.esm.js.map +1 -1
  147. package/dist/components/SummaryStatsGrid/SummaryStatsGrid.esm.js +75 -58
  148. package/dist/components/SummaryStatsGrid/SummaryStatsGrid.esm.js.map +1 -1
  149. package/dist/components/TagsAndEntities/CollectionChip.esm.js +50 -37
  150. package/dist/components/TagsAndEntities/CollectionChip.esm.js.map +1 -1
  151. package/dist/components/TagsAndEntities/EntityChip.esm.js +58 -40
  152. package/dist/components/TagsAndEntities/EntityChip.esm.js.map +1 -1
  153. package/dist/components/TagsAndEntities/TagChip.esm.js +52 -39
  154. package/dist/components/TagsAndEntities/TagChip.esm.js.map +1 -1
  155. package/dist/components/TagsAndEntities/TagsAndEntities.esm.js +5 -2
  156. package/dist/components/TagsAndEntities/TagsAndEntities.esm.js.map +1 -1
  157. package/dist/components/TagsAndEntities/UserChip.esm.js +55 -44
  158. package/dist/components/TagsAndEntities/UserChip.esm.js.map +1 -1
  159. package/dist/components/TagsGrid/CreateTagModal.esm.js +59 -46
  160. package/dist/components/TagsGrid/CreateTagModal.esm.js.map +1 -1
  161. package/dist/components/TagsGrid/EditTagModal.esm.js +45 -35
  162. package/dist/components/TagsGrid/EditTagModal.esm.js.map +1 -1
  163. package/dist/components/TagsGrid/NoTagsCard.esm.js +10 -6
  164. package/dist/components/TagsGrid/NoTagsCard.esm.js.map +1 -1
  165. package/dist/components/TagsGrid/TagGridItem.esm.js +87 -59
  166. package/dist/components/TagsGrid/TagGridItem.esm.js.map +1 -1
  167. package/dist/components/TagsGrid/TagsGrid.esm.js +68 -54
  168. package/dist/components/TagsGrid/TagsGrid.esm.js.map +1 -1
  169. package/dist/components/TagsGrid/TagsGridContent.esm.js +9 -5
  170. package/dist/components/TagsGrid/TagsGridContent.esm.js.map +1 -1
  171. package/dist/components/TemplateList/TemplateForm.esm.js +104 -94
  172. package/dist/components/TemplateList/TemplateForm.esm.js.map +1 -1
  173. package/dist/components/TemplateList/TemplateList.esm.js +50 -37
  174. package/dist/components/TemplateList/TemplateList.esm.js.map +1 -1
  175. package/dist/components/TopRankingUsersCard/TopRankingUsersCard.esm.js +75 -51
  176. package/dist/components/TopRankingUsersCard/TopRankingUsersCard.esm.js.map +1 -1
  177. package/dist/components/TopRankingUsersCard/TrophyIcon.esm.js +17 -14
  178. package/dist/components/TopRankingUsersCard/TrophyIcon.esm.js.map +1 -1
  179. package/dist/components/UsersGrid/NoUsersCard.esm.js +10 -6
  180. package/dist/components/UsersGrid/NoUsersCard.esm.js.map +1 -1
  181. package/dist/components/UsersGrid/UsersGrid.esm.js +34 -23
  182. package/dist/components/UsersGrid/UsersGrid.esm.js.map +1 -1
  183. package/dist/components/UsersGrid/UsersGridContent.esm.js +9 -5
  184. package/dist/components/UsersGrid/UsersGridContent.esm.js.map +1 -1
  185. package/dist/components/UsersGrid/UsersGridItem.esm.js +78 -58
  186. package/dist/components/UsersGrid/UsersGridItem.esm.js.map +1 -1
  187. package/dist/components/Utility/ModalContent.esm.js +4 -3
  188. package/dist/components/Utility/ModalContent.esm.js.map +1 -1
  189. package/dist/components/Utility/OptionalRequirePermission.esm.js +4 -4
  190. package/dist/components/Utility/OptionalRequirePermission.esm.js.map +1 -1
  191. package/dist/components/Utility/RightList.esm.js +13 -11
  192. package/dist/components/Utility/RightList.esm.js.map +1 -1
  193. package/dist/components/Utility/SmallAvatar.esm.js +2 -2
  194. package/dist/components/Utility/SmallAvatar.esm.js.map +1 -1
  195. package/dist/components/Utility/VoteButtonContainer.esm.js +2 -2
  196. package/dist/components/Utility/VoteButtonContainer.esm.js.map +1 -1
  197. package/dist/hooks/useAI.esm.js +7 -5
  198. package/dist/hooks/useAI.esm.js.map +1 -1
  199. package/dist/hooks/useCollectionsFollow.esm.js +3 -5
  200. package/dist/hooks/useCollectionsFollow.esm.js.map +1 -1
  201. package/dist/hooks/useEntityAuthor.esm.js +5 -5
  202. package/dist/hooks/useEntityAuthor.esm.js.map +1 -1
  203. package/dist/hooks/useEntityFollow.esm.js +3 -5
  204. package/dist/hooks/useEntityFollow.esm.js.map +1 -1
  205. package/dist/hooks/useEntityQueryParameter.esm.js +2 -2
  206. package/dist/hooks/useEntityQueryParameter.esm.js.map +1 -1
  207. package/dist/hooks/useIsModerator.esm.js +19 -4
  208. package/dist/hooks/useIsModerator.esm.js.map +1 -1
  209. package/dist/hooks/usePaginatedPosts.esm.js +7 -7
  210. package/dist/hooks/usePaginatedPosts.esm.js.map +1 -1
  211. package/dist/hooks/useTagsFollow.esm.js +3 -3
  212. package/dist/hooks/useTagsFollow.esm.js.map +1 -1
  213. package/dist/hooks/useUserFollow.esm.js +3 -3
  214. package/dist/hooks/useUserFollow.esm.js.map +1 -1
  215. package/dist/hooks/useVoting.esm.js +4 -3
  216. package/dist/hooks/useVoting.esm.js.map +1 -1
  217. package/dist/index.d.ts +64 -63
  218. package/dist/routes.esm.js +3 -3
  219. package/dist/routes.esm.js.map +1 -1
  220. package/dist/utils/utils.esm.js +3 -0
  221. package/dist/utils/utils.esm.js.map +1 -1
  222. package/package.json +16 -9
@@ -1,4 +1,4 @@
1
- import React__default from 'react';
1
+ import { jsx, jsxs } from 'react/jsx-runtime';
2
2
  import { Box, Divider } from '@material-ui/core';
3
3
  import { CommentListItem } from './CommentListItem.esm.js';
4
4
 
@@ -8,17 +8,20 @@ const CommentList = (props) => {
8
8
  if (!entity.comments || entity.comments.length === 0) {
9
9
  return null;
10
10
  }
11
- return /* @__PURE__ */ React__default.createElement(Box, null, entity.comments?.map((c, i) => {
12
- return /* @__PURE__ */ React__default.createElement("div", { key: c.id }, i > 0 && /* @__PURE__ */ React__default.createElement(Divider, null), /* @__PURE__ */ React__default.createElement(
13
- CommentListItem,
14
- {
15
- comment: c,
16
- onCommentAction,
17
- post,
18
- answer
19
- }
20
- ));
21
- }));
11
+ return /* @__PURE__ */ jsx(Box, { children: entity.comments?.map((c, i) => {
12
+ return /* @__PURE__ */ jsxs("div", { children: [
13
+ i > 0 && /* @__PURE__ */ jsx(Divider, {}),
14
+ /* @__PURE__ */ jsx(
15
+ CommentListItem,
16
+ {
17
+ comment: c,
18
+ onCommentAction,
19
+ post,
20
+ answer
21
+ }
22
+ )
23
+ ] }, c.id);
24
+ }) });
22
25
  };
23
26
 
24
27
  export { CommentList };
@@ -1 +1 @@
1
- {"version":3,"file":"CommentList.esm.js","sources":["../../../src/components/CommentSection/CommentList.tsx"],"sourcesContent":["import {\n AnswerResponse,\n PostResponse,\n} from '@drodil/backstage-plugin-qeta-common';\nimport React from 'react';\nimport { Box, Divider } from '@material-ui/core';\nimport { CommentListItem } from './CommentListItem.tsx';\n\nexport type QetaCommentListClassKey = 'content' | 'root' | 'box';\n\nexport const CommentList = (props: {\n onCommentAction: (question: PostResponse, answer?: AnswerResponse) => void;\n post: PostResponse;\n answer?: AnswerResponse;\n}) => {\n const { post, answer, onCommentAction } = props;\n const entity = answer ?? post;\n\n if (!entity.comments || entity.comments.length === 0) {\n return null;\n }\n\n return (\n <Box>\n {entity.comments?.map((c, i) => {\n return (\n <div key={c.id}>\n {i > 0 && <Divider />}\n <CommentListItem\n comment={c}\n onCommentAction={onCommentAction}\n post={post}\n answer={answer}\n />\n </div>\n );\n })}\n </Box>\n );\n};\n"],"names":["React"],"mappings":";;;;AAUa,MAAA,WAAA,GAAc,CAAC,KAItB,KAAA;AACJ,EAAA,MAAM,EAAE,IAAA,EAAM,MAAQ,EAAA,eAAA,EAAoB,GAAA,KAAA;AAC1C,EAAA,MAAM,SAAS,MAAU,IAAA,IAAA;AAEzB,EAAA,IAAI,CAAC,MAAO,CAAA,QAAA,IAAY,MAAO,CAAA,QAAA,CAAS,WAAW,CAAG,EAAA;AACpD,IAAO,OAAA,IAAA;AAAA;AAGT,EAAA,oDACG,GACE,EAAA,IAAA,EAAA,MAAA,CAAO,UAAU,GAAI,CAAA,CAAC,GAAG,CAAM,KAAA;AAC9B,IACE,uBAAAA,cAAA,CAAA,aAAA,CAAC,SAAI,GAAK,EAAA,CAAA,CAAE,MACT,CAAI,GAAA,CAAA,oBAAMA,cAAA,CAAA,aAAA,CAAA,OAAA,EAAA,IAAQ,CACnB,kBAAAA,cAAA,CAAA,aAAA;AAAA,MAAC,eAAA;AAAA,MAAA;AAAA,QACC,OAAS,EAAA,CAAA;AAAA,QACT,eAAA;AAAA,QACA,IAAA;AAAA,QACA;AAAA;AAAA,KAEJ,CAAA;AAAA,GAEH,CACH,CAAA;AAEJ;;;;"}
1
+ {"version":3,"file":"CommentList.esm.js","sources":["../../../src/components/CommentSection/CommentList.tsx"],"sourcesContent":["import {\n AnswerResponse,\n PostResponse,\n} from '@drodil/backstage-plugin-qeta-common';\nimport { Box, Divider } from '@material-ui/core';\nimport { CommentListItem } from './CommentListItem.tsx';\n\nexport type QetaCommentListClassKey = 'content' | 'root' | 'box';\n\nexport const CommentList = (props: {\n onCommentAction: (question: PostResponse, answer?: AnswerResponse) => void;\n post: PostResponse;\n answer?: AnswerResponse;\n}) => {\n const { post, answer, onCommentAction } = props;\n const entity = answer ?? post;\n\n if (!entity.comments || entity.comments.length === 0) {\n return null;\n }\n\n return (\n <Box>\n {entity.comments?.map((c, i) => {\n return (\n <div key={c.id}>\n {i > 0 && <Divider />}\n <CommentListItem\n comment={c}\n onCommentAction={onCommentAction}\n post={post}\n answer={answer}\n />\n </div>\n );\n })}\n </Box>\n );\n};\n"],"names":[],"mappings":";;;;AASa,MAAA,WAAA,GAAc,CAAC,KAItB,KAAA;AACJ,EAAA,MAAM,EAAE,IAAA,EAAM,MAAQ,EAAA,eAAA,EAAoB,GAAA,KAAA;AAC1C,EAAA,MAAM,SAAS,MAAU,IAAA,IAAA;AAEzB,EAAA,IAAI,CAAC,MAAO,CAAA,QAAA,IAAY,MAAO,CAAA,QAAA,CAAS,WAAW,CAAG,EAAA;AACpD,IAAO,OAAA,IAAA;AAAA;AAGT,EAAA,2BACG,GACE,EAAA,EAAA,QAAA,EAAA,MAAA,CAAO,UAAU,GAAI,CAAA,CAAC,GAAG,CAAM,KAAA;AAC9B,IAAA,4BACG,KACE,EAAA,EAAA,QAAA,EAAA;AAAA,MAAI,CAAA,GAAA,CAAA,wBAAM,OAAQ,EAAA,EAAA,CAAA;AAAA,sBACnB,GAAA;AAAA,QAAC,eAAA;AAAA,QAAA;AAAA,UACC,OAAS,EAAA,CAAA;AAAA,UACT,eAAA;AAAA,UACA,IAAA;AAAA,UACA;AAAA;AAAA;AACF,KAAA,EAAA,EAPQ,EAAE,EAQZ,CAAA;AAAA,GAEH,CACH,EAAA,CAAA;AAEJ;;;;"}
@@ -1,9 +1,11 @@
1
+ import { jsx, Fragment, jsxs } from 'react/jsx-runtime';
1
2
  import { makeStyles, Box, Typography } from '@material-ui/core';
2
3
  import { MarkdownRenderer } from '../MarkdownRenderer/MarkdownRenderer.esm.js';
3
4
  import { AuthorLink } from '../Links/Links.esm.js';
4
5
  import { RelativeTimeWithTooltip } from '../RelativeTimeWithTooltip/RelativeTimeWithTooltip.esm.js';
5
6
  import { Link } from '@backstage/core-components';
6
- import React__default, { useState } from 'react';
7
+ import * as React from 'react';
8
+ import { useState } from 'react';
7
9
  import { useApi } from '@backstage/core-plugin-api';
8
10
  import { qetaApiRef } from '../../api.esm.js';
9
11
  import 'react-use';
@@ -12,6 +14,9 @@ import '@backstage/catalog-model';
12
14
  import 'dataloader';
13
15
  import '@backstage/plugin-catalog-react';
14
16
  import 'react-use/lib/useAsync';
17
+ import '@backstage/plugin-permission-react';
18
+ import '@drodil/backstage-plugin-qeta-common';
19
+ import '@backstage/plugin-permission-common';
15
20
  import { CommentForm } from './CommentForm.esm.js';
16
21
 
17
22
  const useStyles = makeStyles(
@@ -33,7 +38,7 @@ const CommentListItem = (props) => {
33
38
  const { t } = useTranslation();
34
39
  const { comment, onCommentAction, post, answer } = props;
35
40
  const qetaApi = useApi(qetaApiRef);
36
- const [posting, setPosting] = React__default.useState(false);
41
+ const [posting, setPosting] = React.useState(false);
37
42
  const styles = useStyles();
38
43
  const [editing, setEditing] = useState(false);
39
44
  const deleteComment = (id) => {
@@ -61,7 +66,7 @@ const CommentListItem = (props) => {
61
66
  onCommentAction(q);
62
67
  });
63
68
  };
64
- return /* @__PURE__ */ React__default.createElement(Box, { className: styles.box }, editing ? /* @__PURE__ */ React__default.createElement(React__default.Fragment, null, /* @__PURE__ */ React__default.createElement(
69
+ return /* @__PURE__ */ jsx(Box, { className: styles.box, children: editing ? /* @__PURE__ */ jsx(Fragment, { children: /* @__PURE__ */ jsx(
65
70
  CommentForm,
66
71
  {
67
72
  submit: saveComment,
@@ -69,31 +74,47 @@ const CommentListItem = (props) => {
69
74
  defaultValues: { content: comment.content },
70
75
  disabled: posting
71
76
  }
72
- )) : /* @__PURE__ */ React__default.createElement(React__default.Fragment, null, /* @__PURE__ */ React__default.createElement(
73
- MarkdownRenderer,
74
- {
75
- content: comment.content,
76
- className: styles.content
77
- }
78
- ), /* @__PURE__ */ React__default.createElement(Typography, { variant: "caption", className: "qetaCommentMetadata" }, " \u2013 ", /* @__PURE__ */ React__default.createElement(AuthorLink, { entity: comment }), " ", /* @__PURE__ */ React__default.createElement(RelativeTimeWithTooltip, { value: comment.created }), comment.canEdit && /* @__PURE__ */ React__default.createElement(React__default.Fragment, null, " / ", /* @__PURE__ */ React__default.createElement(
79
- Link,
80
- {
81
- underline: "none",
82
- to: "#",
83
- className: "qetaCommentEditBtn",
84
- onClick: () => setEditing(true)
85
- },
86
- t("commentList.editLink")
87
- )), comment.canDelete && /* @__PURE__ */ React__default.createElement(React__default.Fragment, null, " / ", /* @__PURE__ */ React__default.createElement(
88
- Link,
89
- {
90
- underline: "none",
91
- to: "#",
92
- className: "qetaCommentDeleteBtn",
93
- onClick: () => deleteComment(comment.id)
94
- },
95
- t("commentList.deleteLink")
96
- )))));
77
+ ) }) : /* @__PURE__ */ jsxs(Fragment, { children: [
78
+ /* @__PURE__ */ jsx(
79
+ MarkdownRenderer,
80
+ {
81
+ content: comment.content,
82
+ className: styles.content
83
+ }
84
+ ),
85
+ /* @__PURE__ */ jsxs(Typography, { variant: "caption", className: "qetaCommentMetadata", children: [
86
+ " \u2013 ",
87
+ /* @__PURE__ */ jsx(AuthorLink, { entity: comment }),
88
+ " ",
89
+ /* @__PURE__ */ jsx(RelativeTimeWithTooltip, { value: comment.created }),
90
+ comment.canEdit && /* @__PURE__ */ jsxs(Fragment, { children: [
91
+ " / ",
92
+ /* @__PURE__ */ jsx(
93
+ Link,
94
+ {
95
+ underline: "none",
96
+ to: "#",
97
+ className: "qetaCommentEditBtn",
98
+ onClick: () => setEditing(true),
99
+ children: t("commentList.editLink")
100
+ }
101
+ )
102
+ ] }),
103
+ comment.canDelete && /* @__PURE__ */ jsxs(Fragment, { children: [
104
+ " / ",
105
+ /* @__PURE__ */ jsx(
106
+ Link,
107
+ {
108
+ underline: "none",
109
+ to: "#",
110
+ className: "qetaCommentDeleteBtn",
111
+ onClick: () => deleteComment(comment.id),
112
+ children: t("commentList.deleteLink")
113
+ }
114
+ )
115
+ ] })
116
+ ] })
117
+ ] }) });
97
118
  };
98
119
 
99
120
  export { CommentListItem };
@@ -1 +1 @@
1
- {"version":3,"file":"CommentListItem.esm.js","sources":["../../../src/components/CommentSection/CommentListItem.tsx"],"sourcesContent":["import { Box, makeStyles, Typography } from '@material-ui/core';\nimport { MarkdownRenderer } from '../MarkdownRenderer';\nimport { AuthorLink } from '../Links';\nimport { RelativeTimeWithTooltip } from '../RelativeTimeWithTooltip';\nimport { Link } from '@backstage/core-components';\nimport React, { useState } from 'react';\nimport { useTranslation } from '../../hooks';\nimport {\n AnswerResponse,\n Comment,\n PostResponse,\n} from '@drodil/backstage-plugin-qeta-common';\nimport { useApi } from '@backstage/core-plugin-api';\nimport { qetaApiRef } from '../../api.ts';\nimport { CommentForm } from './CommentForm.tsx';\n\nconst useStyles = makeStyles(\n () => ({\n root: {},\n box: {\n padding: '0.5em',\n },\n content: {\n display: 'inline',\n '& *:last-child': {\n display: 'inline',\n },\n },\n }),\n { name: 'QetaCommentList' },\n);\n\nexport const CommentListItem = (props: {\n comment: Comment;\n onCommentAction: (question: PostResponse, answer?: AnswerResponse) => void;\n post: PostResponse;\n answer?: AnswerResponse;\n}) => {\n const { t } = useTranslation();\n const { comment, onCommentAction, post, answer } = props;\n const qetaApi = useApi(qetaApiRef);\n const [posting, setPosting] = React.useState(false);\n const styles = useStyles();\n const [editing, setEditing] = useState(false);\n\n const deleteComment = (id: number) => {\n if (answer) {\n qetaApi.deleteAnswerComment(post.id, answer.id, id).then(a => {\n onCommentAction(post, a);\n });\n return;\n }\n qetaApi.deletePostComment(post.id, id).then(q => onCommentAction(q));\n };\n\n const saveComment = (data: { content: string }) => {\n setPosting(true);\n if (answer) {\n qetaApi\n .updateAnswerComment(post.id, answer.id, comment.id, data.content)\n .then(a => {\n setEditing(false);\n setPosting(false);\n onCommentAction(post, a);\n });\n return;\n }\n qetaApi.updatePostComment(post.id, comment.id, data.content).then(q => {\n setEditing(false);\n setPosting(false);\n onCommentAction(q);\n });\n };\n\n return (\n <Box className={styles.box}>\n {editing ? (\n <>\n <CommentForm\n submit={saveComment}\n saveButtonTitle={t('commentList.save')}\n defaultValues={{ content: comment.content }}\n disabled={posting}\n />\n </>\n ) : (\n <>\n <MarkdownRenderer\n content={comment.content}\n className={styles.content}\n />\n <Typography variant=\"caption\" className=\"qetaCommentMetadata\">\n {' – '}\n <AuthorLink entity={comment} />{' '}\n <RelativeTimeWithTooltip value={comment.created} />\n {comment.canEdit && (\n <>\n {' / '}\n <Link\n underline=\"none\"\n to=\"#\"\n className=\"qetaCommentEditBtn\"\n onClick={() => setEditing(true)}\n >\n {t('commentList.editLink')}\n </Link>\n </>\n )}\n {comment.canDelete && (\n <>\n {' / '}\n <Link\n underline=\"none\"\n to=\"#\"\n className=\"qetaCommentDeleteBtn\"\n onClick={() => deleteComment(comment.id)}\n >\n {t('commentList.deleteLink')}\n </Link>\n </>\n )}\n </Typography>\n </>\n )}\n </Box>\n );\n};\n"],"names":["React"],"mappings":"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"}
1
+ {"version":3,"file":"CommentListItem.esm.js","sources":["../../../src/components/CommentSection/CommentListItem.tsx"],"sourcesContent":["import { Box, makeStyles, Typography } from '@material-ui/core';\nimport { MarkdownRenderer } from '../MarkdownRenderer';\nimport { AuthorLink } from '../Links';\nimport { RelativeTimeWithTooltip } from '../RelativeTimeWithTooltip';\nimport { Link } from '@backstage/core-components';\nimport { useState } from 'react';\nimport * as React from 'react';\nimport { useTranslation } from '../../hooks';\nimport {\n AnswerResponse,\n Comment,\n PostResponse,\n} from '@drodil/backstage-plugin-qeta-common';\nimport { useApi } from '@backstage/core-plugin-api';\nimport { qetaApiRef } from '../../api.ts';\nimport { CommentForm } from './CommentForm.tsx';\n\nconst useStyles = makeStyles(\n () => ({\n root: {},\n box: {\n padding: '0.5em',\n },\n content: {\n display: 'inline',\n '& *:last-child': {\n display: 'inline',\n },\n },\n }),\n { name: 'QetaCommentList' },\n);\n\nexport const CommentListItem = (props: {\n comment: Comment;\n onCommentAction: (question: PostResponse, answer?: AnswerResponse) => void;\n post: PostResponse;\n answer?: AnswerResponse;\n}) => {\n const { t } = useTranslation();\n const { comment, onCommentAction, post, answer } = props;\n const qetaApi = useApi(qetaApiRef);\n const [posting, setPosting] = React.useState(false);\n const styles = useStyles();\n const [editing, setEditing] = useState(false);\n\n const deleteComment = (id: number) => {\n if (answer) {\n qetaApi.deleteAnswerComment(post.id, answer.id, id).then(a => {\n onCommentAction(post, a);\n });\n return;\n }\n qetaApi.deletePostComment(post.id, id).then(q => onCommentAction(q));\n };\n\n const saveComment = (data: { content: string }) => {\n setPosting(true);\n if (answer) {\n qetaApi\n .updateAnswerComment(post.id, answer.id, comment.id, data.content)\n .then(a => {\n setEditing(false);\n setPosting(false);\n onCommentAction(post, a);\n });\n return;\n }\n qetaApi.updatePostComment(post.id, comment.id, data.content).then(q => {\n setEditing(false);\n setPosting(false);\n onCommentAction(q);\n });\n };\n\n return (\n <Box className={styles.box}>\n {editing ? (\n <>\n <CommentForm\n submit={saveComment}\n saveButtonTitle={t('commentList.save')}\n defaultValues={{ content: comment.content }}\n disabled={posting}\n />\n </>\n ) : (\n <>\n <MarkdownRenderer\n content={comment.content}\n className={styles.content}\n />\n <Typography variant=\"caption\" className=\"qetaCommentMetadata\">\n {' – '}\n <AuthorLink entity={comment} />{' '}\n <RelativeTimeWithTooltip value={comment.created} />\n {comment.canEdit && (\n <>\n {' / '}\n <Link\n underline=\"none\"\n to=\"#\"\n className=\"qetaCommentEditBtn\"\n onClick={() => setEditing(true)}\n >\n {t('commentList.editLink')}\n </Link>\n </>\n )}\n {comment.canDelete && (\n <>\n {' / '}\n <Link\n underline=\"none\"\n to=\"#\"\n className=\"qetaCommentDeleteBtn\"\n onClick={() => deleteComment(comment.id)}\n >\n {t('commentList.deleteLink')}\n </Link>\n </>\n )}\n </Typography>\n </>\n )}\n </Box>\n );\n};\n"],"names":[],"mappings":"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"}
@@ -1,4 +1,6 @@
1
- import React__default, { useState } from 'react';
1
+ import { jsxs, jsx, Fragment } from 'react/jsx-runtime';
2
+ import * as React from 'react';
3
+ import { useState } from 'react';
2
4
  import { makeStyles, Box, Grid, Button } from '@material-ui/core';
3
5
  import { qetaCreateCommentPermission } from '@drodil/backstage-plugin-qeta-common';
4
6
  import { useAnalytics, useApi } from '@backstage/core-plugin-api';
@@ -10,6 +12,8 @@ import '@backstage/catalog-model';
10
12
  import 'dataloader';
11
13
  import '@backstage/plugin-catalog-react';
12
14
  import 'react-use/lib/useAsync';
15
+ import '@backstage/plugin-permission-react';
16
+ import '@backstage/plugin-permission-common';
13
17
  import AddCommentIcon from '@material-ui/icons/AddComment';
14
18
  import { OptionalRequirePermission } from '../Utility/OptionalRequirePermission.esm.js';
15
19
  import { CommentForm } from './CommentForm.esm.js';
@@ -28,9 +32,9 @@ const CommentSection = (props) => {
28
32
  const { answer, post, onCommentAction } = props;
29
33
  const analytics = useAnalytics();
30
34
  const qetaApi = useApi(qetaApiRef);
31
- const [posting, setPosting] = React__default.useState(false);
35
+ const [posting, setPosting] = React.useState(false);
32
36
  const [formVisible, setFormVisible] = useState(false);
33
- const [edited, setEdited] = React__default.useState(false);
37
+ const [edited, setEdited] = React.useState(false);
34
38
  const { t } = useTranslation();
35
39
  const styles = useStyles();
36
40
  const postComment = (data) => {
@@ -54,44 +58,48 @@ const CommentSection = (props) => {
54
58
  });
55
59
  };
56
60
  useConfirmNavigationIfEdited(edited);
57
- return /* @__PURE__ */ React__default.createElement(
61
+ return /* @__PURE__ */ jsxs(
58
62
  Box,
59
63
  {
60
64
  marginLeft: 9,
61
- className: `${styles.root} ${props.className} qetaCommentSection`
62
- },
63
- /* @__PURE__ */ React__default.createElement(
64
- CommentList,
65
- {
66
- post,
67
- answer,
68
- onCommentAction
69
- }
70
- ),
71
- /* @__PURE__ */ React__default.createElement(
72
- OptionalRequirePermission,
73
- {
74
- permission: qetaCreateCommentPermission,
75
- errorPage: /* @__PURE__ */ React__default.createElement(React__default.Fragment, null)
76
- },
77
- !formVisible && /* @__PURE__ */ React__default.createElement(Grid, { container: true, justifyContent: "flex-end" }, /* @__PURE__ */ React__default.createElement(Grid, { item: true }, /* @__PURE__ */ React__default.createElement(
78
- Button,
79
- {
80
- size: "small",
81
- startIcon: /* @__PURE__ */ React__default.createElement(AddCommentIcon, null),
82
- onClick: () => setFormVisible(true)
83
- },
84
- t("commentSection.addComment")
85
- ))),
86
- formVisible && /* @__PURE__ */ React__default.createElement(
87
- CommentForm,
88
- {
89
- submit: postComment,
90
- saveButtonTitle: t("commentSection.post"),
91
- disabled: posting
92
- }
93
- )
94
- )
65
+ className: `${styles.root} ${props.className} qetaCommentSection`,
66
+ children: [
67
+ /* @__PURE__ */ jsx(
68
+ CommentList,
69
+ {
70
+ post,
71
+ answer,
72
+ onCommentAction
73
+ }
74
+ ),
75
+ /* @__PURE__ */ jsxs(
76
+ OptionalRequirePermission,
77
+ {
78
+ permission: qetaCreateCommentPermission,
79
+ errorPage: /* @__PURE__ */ jsx(Fragment, {}),
80
+ children: [
81
+ !formVisible && /* @__PURE__ */ jsx(Grid, { container: true, justifyContent: "flex-end", children: /* @__PURE__ */ jsx(Grid, { item: true, children: /* @__PURE__ */ jsx(
82
+ Button,
83
+ {
84
+ size: "small",
85
+ startIcon: /* @__PURE__ */ jsx(AddCommentIcon, {}),
86
+ onClick: () => setFormVisible(true),
87
+ children: t("commentSection.addComment")
88
+ }
89
+ ) }) }),
90
+ formVisible && /* @__PURE__ */ jsx(
91
+ CommentForm,
92
+ {
93
+ submit: postComment,
94
+ saveButtonTitle: t("commentSection.post"),
95
+ disabled: posting
96
+ }
97
+ )
98
+ ]
99
+ }
100
+ )
101
+ ]
102
+ }
95
103
  );
96
104
  };
97
105
 
@@ -1 +1 @@
1
- {"version":3,"file":"CommentSection.esm.js","sources":["../../../src/components/CommentSection/CommentSection.tsx"],"sourcesContent":["/* eslint-disable jsx-a11y/no-autofocus */\nimport React, { useState } from 'react';\nimport { Box, Button, Grid, makeStyles } from '@material-ui/core';\nimport {\n AnswerResponse,\n PostResponse,\n qetaCreateCommentPermission,\n} from '@drodil/backstage-plugin-qeta-common';\nimport { useAnalytics, useApi } from '@backstage/core-plugin-api';\nimport { CommentList } from './CommentList';\nimport { qetaApiRef } from '../../api';\nimport { useTranslation } from '../../hooks';\nimport AddCommentIcon from '@material-ui/icons/AddComment';\nimport { OptionalRequirePermission } from '../Utility/OptionalRequirePermission';\nimport { CommentForm } from './CommentForm.tsx';\nimport { useConfirmNavigationIfEdited } from '../../utils';\n\nexport type QetaCommentSectionClassKey = 'root' | 'addCommentButton';\n\nconst useStyles = makeStyles(\n () => ({\n root: {\n marginTop: '1em',\n },\n addCommentButton: {},\n }),\n { name: 'QetaCommentSection' },\n);\n\nexport const CommentSection = (props: {\n onCommentAction: (post: PostResponse, answer?: AnswerResponse) => void;\n post: PostResponse;\n answer?: AnswerResponse;\n className?: string;\n}) => {\n const { answer, post, onCommentAction } = props;\n const analytics = useAnalytics();\n const qetaApi = useApi(qetaApiRef);\n const [posting, setPosting] = React.useState(false);\n const [formVisible, setFormVisible] = useState(false);\n const [edited, setEdited] = React.useState(false);\n const { t } = useTranslation();\n const styles = useStyles();\n\n const postComment = (data: { content: string }) => {\n setPosting(true);\n if (answer) {\n qetaApi.commentAnswer(post.id, answer.id, data.content).then(a => {\n setFormVisible(false);\n analytics.captureEvent('comment', 'answer');\n setPosting(false);\n setEdited(false);\n onCommentAction(post, a);\n });\n return;\n }\n\n qetaApi.commentPost(post.id, data.content).then(q => {\n setFormVisible(false);\n analytics.captureEvent('comment', post.type);\n setPosting(false);\n setEdited(false);\n onCommentAction(q);\n });\n };\n\n useConfirmNavigationIfEdited(edited);\n\n return (\n <Box\n marginLeft={9}\n className={`${styles.root} ${props.className} qetaCommentSection`}\n >\n <CommentList\n post={post}\n answer={answer}\n onCommentAction={onCommentAction}\n />\n <OptionalRequirePermission\n permission={qetaCreateCommentPermission}\n errorPage={<></>}\n >\n {!formVisible && (\n <Grid container justifyContent=\"flex-end\">\n <Grid item>\n <Button\n size=\"small\"\n startIcon={<AddCommentIcon />}\n onClick={() => setFormVisible(true)}\n >\n {t('commentSection.addComment')}\n </Button>\n </Grid>\n </Grid>\n )}\n {formVisible && (\n <CommentForm\n submit={postComment}\n saveButtonTitle={t('commentSection.post')}\n disabled={posting}\n />\n )}\n </OptionalRequirePermission>\n </Box>\n );\n};\n"],"names":["React"],"mappings":"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"}
1
+ {"version":3,"file":"CommentSection.esm.js","sources":["../../../src/components/CommentSection/CommentSection.tsx"],"sourcesContent":["/* eslint-disable jsx-a11y/no-autofocus */\nimport { useState } from 'react';\n\nimport * as React from 'react';\nimport { Box, Button, Grid, makeStyles } from '@material-ui/core';\nimport {\n AnswerResponse,\n PostResponse,\n qetaCreateCommentPermission,\n} from '@drodil/backstage-plugin-qeta-common';\nimport { useAnalytics, useApi } from '@backstage/core-plugin-api';\nimport { CommentList } from './CommentList';\nimport { qetaApiRef } from '../../api';\nimport { useTranslation } from '../../hooks';\nimport AddCommentIcon from '@material-ui/icons/AddComment';\nimport { OptionalRequirePermission } from '../Utility/OptionalRequirePermission';\nimport { CommentForm } from './CommentForm.tsx';\nimport { useConfirmNavigationIfEdited } from '../../utils';\n\nexport type QetaCommentSectionClassKey = 'root' | 'addCommentButton';\n\nconst useStyles = makeStyles(\n () => ({\n root: {\n marginTop: '1em',\n },\n addCommentButton: {},\n }),\n { name: 'QetaCommentSection' },\n);\n\nexport const CommentSection = (props: {\n onCommentAction: (post: PostResponse, answer?: AnswerResponse) => void;\n post: PostResponse;\n answer?: AnswerResponse;\n className?: string;\n}) => {\n const { answer, post, onCommentAction } = props;\n const analytics = useAnalytics();\n const qetaApi = useApi(qetaApiRef);\n const [posting, setPosting] = React.useState(false);\n const [formVisible, setFormVisible] = useState(false);\n const [edited, setEdited] = React.useState(false);\n const { t } = useTranslation();\n const styles = useStyles();\n\n const postComment = (data: { content: string }) => {\n setPosting(true);\n if (answer) {\n qetaApi.commentAnswer(post.id, answer.id, data.content).then(a => {\n setFormVisible(false);\n analytics.captureEvent('comment', 'answer');\n setPosting(false);\n setEdited(false);\n onCommentAction(post, a);\n });\n return;\n }\n\n qetaApi.commentPost(post.id, data.content).then(q => {\n setFormVisible(false);\n analytics.captureEvent('comment', post.type);\n setPosting(false);\n setEdited(false);\n onCommentAction(q);\n });\n };\n\n useConfirmNavigationIfEdited(edited);\n\n return (\n <Box\n marginLeft={9}\n className={`${styles.root} ${props.className} qetaCommentSection`}\n >\n <CommentList\n post={post}\n answer={answer}\n onCommentAction={onCommentAction}\n />\n <OptionalRequirePermission\n permission={qetaCreateCommentPermission}\n errorPage={<></>}\n >\n {!formVisible && (\n <Grid container justifyContent=\"flex-end\">\n <Grid item>\n <Button\n size=\"small\"\n startIcon={<AddCommentIcon />}\n onClick={() => setFormVisible(true)}\n >\n {t('commentSection.addComment')}\n </Button>\n </Grid>\n </Grid>\n )}\n {formVisible && (\n <CommentForm\n submit={postComment}\n saveButtonTitle={t('commentSection.post')}\n disabled={posting}\n />\n )}\n </OptionalRequirePermission>\n </Box>\n );\n};\n"],"names":[],"mappings":"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"}
@@ -1,7 +1,8 @@
1
+ import { jsx, jsxs } from 'react/jsx-runtime';
1
2
  import { Modal, Backdrop, Typography, Button } from '@material-ui/core';
2
3
  import { Alert } from '@material-ui/lab';
3
4
  import DeleteIcon from '@material-ui/icons/Delete';
4
- import React__default from 'react';
5
+ import { useState } from 'react';
5
6
  import { useApi } from '@backstage/core-plugin-api';
6
7
  import { useNavigate } from 'react-router-dom';
7
8
  import { qetaApiRef } from '../../api.esm.js';
@@ -11,13 +12,16 @@ import '@backstage/catalog-model';
11
12
  import 'dataloader';
12
13
  import '@backstage/plugin-catalog-react';
13
14
  import 'react-use/lib/useAsync';
15
+ import '@backstage/plugin-permission-react';
16
+ import '@drodil/backstage-plugin-qeta-common';
17
+ import '@backstage/plugin-permission-common';
14
18
  import { ModalContent } from '../Utility/ModalContent.esm.js';
15
19
 
16
20
  const DeleteModal = (props) => {
17
21
  const qetaApi = useApi(qetaApiRef);
18
22
  const navigate = useNavigate();
19
23
  const { entity, open, question, onClose } = props;
20
- const [error, setError] = React__default.useState(false);
24
+ const [error, setError] = useState(false);
21
25
  const { t } = useTranslation();
22
26
  const isQuestion = "title" in entity;
23
27
  const isCollection = "owner" in entity;
@@ -73,7 +77,7 @@ const DeleteModal = (props) => {
73
77
  });
74
78
  }
75
79
  };
76
- return /* @__PURE__ */ React__default.createElement(
80
+ return /* @__PURE__ */ jsx(
77
81
  Modal,
78
82
  {
79
83
  open,
@@ -85,27 +89,32 @@ const DeleteModal = (props) => {
85
89
  BackdropComponent: Backdrop,
86
90
  BackdropProps: {
87
91
  timeout: 500
88
- }
89
- },
90
- /* @__PURE__ */ React__default.createElement(ModalContent, null, error && /* @__PURE__ */ React__default.createElement(Alert, { severity: "error" }, t("deleteModal.errorDeleting")), /* @__PURE__ */ React__default.createElement(
91
- Typography,
92
- {
93
- id: "modal-modal-title",
94
- className: "qetaDeleteModalTitle",
95
- variant: "h6",
96
- component: "h2"
97
92
  },
98
- title
99
- ), /* @__PURE__ */ React__default.createElement(
100
- Button,
101
- {
102
- onClick: handleDelete,
103
- className: "qetaDeleteModalDeleteBtn",
104
- startIcon: /* @__PURE__ */ React__default.createElement(DeleteIcon, null),
105
- color: "secondary"
106
- },
107
- t("deleteModal.deleteButton")
108
- ), /* @__PURE__ */ React__default.createElement(Button, { onClick: onClose, className: "qetaDeleteModalCancelBtn" }, t("deleteModal.cancelButton")))
93
+ children: /* @__PURE__ */ jsxs(ModalContent, { children: [
94
+ error && /* @__PURE__ */ jsx(Alert, { severity: "error", children: t("deleteModal.errorDeleting") }),
95
+ /* @__PURE__ */ jsx(
96
+ Typography,
97
+ {
98
+ id: "modal-modal-title",
99
+ className: "qetaDeleteModalTitle",
100
+ variant: "h6",
101
+ component: "h2",
102
+ children: title
103
+ }
104
+ ),
105
+ /* @__PURE__ */ jsx(
106
+ Button,
107
+ {
108
+ onClick: handleDelete,
109
+ className: "qetaDeleteModalDeleteBtn",
110
+ startIcon: /* @__PURE__ */ jsx(DeleteIcon, {}),
111
+ color: "secondary",
112
+ children: t("deleteModal.deleteButton")
113
+ }
114
+ ),
115
+ /* @__PURE__ */ jsx(Button, { onClick: onClose, className: "qetaDeleteModalCancelBtn", children: t("deleteModal.cancelButton") })
116
+ ] })
117
+ }
109
118
  );
110
119
  };
111
120
 
@@ -1 +1 @@
1
- {"version":3,"file":"DeleteModal.esm.js","sources":["../../../src/components/DeleteModal/DeleteModal.tsx"],"sourcesContent":["import {\n AnswerResponse,\n CollectionResponse,\n PostResponse,\n TagResponse,\n} from '@drodil/backstage-plugin-qeta-common';\nimport { Backdrop, Button, Modal, Typography } from '@material-ui/core';\nimport { Alert } from '@material-ui/lab';\nimport Delete from '@material-ui/icons/Delete';\nimport React from 'react';\nimport { useApi } from '@backstage/core-plugin-api';\nimport { useNavigate } from 'react-router-dom';\nimport { qetaApiRef } from '../../api';\nimport { useTranslation } from '../../hooks';\nimport { ModalContent } from '../Utility/ModalContent';\n\nexport const DeleteModal = (props: {\n entity: PostResponse | AnswerResponse | CollectionResponse | TagResponse;\n open: boolean;\n onClose: () => void;\n question?: PostResponse;\n}) => {\n const qetaApi = useApi(qetaApiRef);\n const navigate = useNavigate();\n const { entity, open, question, onClose } = props;\n const [error, setError] = React.useState(false);\n const { t } = useTranslation();\n const isQuestion = 'title' in entity;\n const isCollection = 'owner' in entity;\n const isTag = 'tag' in entity;\n\n const getTitle = () => {\n if (isCollection) {\n return t('deleteModal.title.collection');\n }\n if (isTag) {\n return t('deleteModal.title.tag');\n }\n if (isQuestion) {\n return t('deleteModal.title.question');\n }\n return t('deleteModal.title.answer');\n };\n\n // eslint-disable-next-line no-nested-ternary\n const title = getTitle();\n\n const handleDelete = () => {\n if (isCollection) {\n qetaApi\n .deleteCollection(entity.id)\n .catch(_ => setError(true))\n .then(ret => {\n if (ret) {\n onClose();\n navigate(-1);\n } else {\n setError(true);\n }\n });\n } else if (isTag) {\n qetaApi\n .deleteTag(entity.id)\n .catch(_ => setError(true))\n .then(ret => {\n if (ret) {\n onClose();\n } else {\n setError(true);\n }\n });\n } else if (isQuestion) {\n qetaApi\n .deletePost(entity.id)\n .catch(_ => setError(true))\n .then(ret => {\n if (ret) {\n onClose();\n navigate(-1);\n } else {\n setError(true);\n }\n });\n } else if (question) {\n qetaApi\n .deleteAnswer(question.id, entity.id)\n .catch(_ => setError(true))\n .then(ret => {\n if (ret) {\n onClose();\n window.location.reload();\n } else {\n setError(true);\n }\n });\n }\n };\n\n return (\n <Modal\n open={open}\n onClose={onClose}\n className=\"qetaDeleteModal\"\n aria-labelledby=\"modal-modal-title\"\n aria-describedby=\"modal-modal-description\"\n closeAfterTransition\n BackdropComponent={Backdrop}\n BackdropProps={{\n timeout: 500,\n }}\n >\n <ModalContent>\n {error && (\n <Alert severity=\"error\">{t('deleteModal.errorDeleting')}</Alert>\n )}\n <Typography\n id=\"modal-modal-title\"\n className=\"qetaDeleteModalTitle\"\n variant=\"h6\"\n component=\"h2\"\n >\n {title}\n </Typography>\n <Button\n onClick={handleDelete}\n className=\"qetaDeleteModalDeleteBtn\"\n startIcon={<Delete />}\n color=\"secondary\"\n >\n {t('deleteModal.deleteButton')}\n </Button>\n <Button onClick={onClose} className=\"qetaDeleteModalCancelBtn\">\n {t('deleteModal.cancelButton')}\n </Button>\n </ModalContent>\n </Modal>\n );\n};\n"],"names":["React","Delete"],"mappings":"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"}
1
+ {"version":3,"file":"DeleteModal.esm.js","sources":["../../../src/components/DeleteModal/DeleteModal.tsx"],"sourcesContent":["import {\n AnswerResponse,\n CollectionResponse,\n PostResponse,\n TagResponse,\n} from '@drodil/backstage-plugin-qeta-common';\nimport { Backdrop, Button, Modal, Typography } from '@material-ui/core';\nimport { Alert } from '@material-ui/lab';\nimport Delete from '@material-ui/icons/Delete';\nimport { useState } from 'react';\nimport { useApi } from '@backstage/core-plugin-api';\nimport { useNavigate } from 'react-router-dom';\nimport { qetaApiRef } from '../../api';\nimport { useTranslation } from '../../hooks';\nimport { ModalContent } from '../Utility/ModalContent';\n\nexport const DeleteModal = (props: {\n entity: PostResponse | AnswerResponse | CollectionResponse | TagResponse;\n open: boolean;\n onClose: () => void;\n question?: PostResponse;\n}) => {\n const qetaApi = useApi(qetaApiRef);\n const navigate = useNavigate();\n const { entity, open, question, onClose } = props;\n const [error, setError] = useState(false);\n const { t } = useTranslation();\n const isQuestion = 'title' in entity;\n const isCollection = 'owner' in entity;\n const isTag = 'tag' in entity;\n\n const getTitle = () => {\n if (isCollection) {\n return t('deleteModal.title.collection');\n }\n if (isTag) {\n return t('deleteModal.title.tag');\n }\n if (isQuestion) {\n return t('deleteModal.title.question');\n }\n return t('deleteModal.title.answer');\n };\n\n // eslint-disable-next-line no-nested-ternary\n const title = getTitle();\n\n const handleDelete = () => {\n if (isCollection) {\n qetaApi\n .deleteCollection(entity.id)\n .catch(_ => setError(true))\n .then(ret => {\n if (ret) {\n onClose();\n navigate(-1);\n } else {\n setError(true);\n }\n });\n } else if (isTag) {\n qetaApi\n .deleteTag(entity.id)\n .catch(_ => setError(true))\n .then(ret => {\n if (ret) {\n onClose();\n } else {\n setError(true);\n }\n });\n } else if (isQuestion) {\n qetaApi\n .deletePost(entity.id)\n .catch(_ => setError(true))\n .then(ret => {\n if (ret) {\n onClose();\n navigate(-1);\n } else {\n setError(true);\n }\n });\n } else if (question) {\n qetaApi\n .deleteAnswer(question.id, entity.id)\n .catch(_ => setError(true))\n .then(ret => {\n if (ret) {\n onClose();\n window.location.reload();\n } else {\n setError(true);\n }\n });\n }\n };\n\n return (\n <Modal\n open={open}\n onClose={onClose}\n className=\"qetaDeleteModal\"\n aria-labelledby=\"modal-modal-title\"\n aria-describedby=\"modal-modal-description\"\n closeAfterTransition\n BackdropComponent={Backdrop}\n BackdropProps={{\n timeout: 500,\n }}\n >\n <ModalContent>\n {error && (\n <Alert severity=\"error\">{t('deleteModal.errorDeleting')}</Alert>\n )}\n <Typography\n id=\"modal-modal-title\"\n className=\"qetaDeleteModalTitle\"\n variant=\"h6\"\n component=\"h2\"\n >\n {title}\n </Typography>\n <Button\n onClick={handleDelete}\n className=\"qetaDeleteModalDeleteBtn\"\n startIcon={<Delete />}\n color=\"secondary\"\n >\n {t('deleteModal.deleteButton')}\n </Button>\n <Button onClick={onClose} className=\"qetaDeleteModalCancelBtn\">\n {t('deleteModal.cancelButton')}\n </Button>\n </ModalContent>\n </Modal>\n );\n};\n"],"names":["Delete"],"mappings":"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"}
@@ -1,5 +1,6 @@
1
+ import { jsxs, jsx } from 'react/jsx-runtime';
1
2
  import { Box, Grid, Typography } from '@material-ui/core';
2
- import React__default, { useEffect } from 'react';
3
+ import { useState, useEffect } from 'react';
3
4
  import { useQetaApi } from '../../hooks/useQetaApi.esm.js';
4
5
  import '@backstage/core-plugin-api';
5
6
  import '../../api.esm.js';
@@ -8,17 +9,20 @@ import '@backstage/catalog-model';
8
9
  import 'dataloader';
9
10
  import '@backstage/plugin-catalog-react';
10
11
  import 'react-use/lib/useAsync';
12
+ import '@backstage/plugin-permission-react';
13
+ import '@drodil/backstage-plugin-qeta-common';
14
+ import '@backstage/plugin-permission-common';
11
15
  import useDebounce from 'react-use/lib/useDebounce';
12
16
  import { QetaPagination } from '../QetaPagination/QetaPagination.esm.js';
13
17
  import { EntitiesGridContent } from './EntitiesGridContent.esm.js';
14
18
  import { SearchBar } from '../SearchBar/SearchBar.esm.js';
15
19
 
16
20
  const EntitiesGrid = () => {
17
- const [page, setPage] = React__default.useState(1);
18
- const [pageCount, setPageCount] = React__default.useState(1);
19
- const [entitiesPerPage, setEntitiesPerPage] = React__default.useState(25);
20
- const [searchQuery, setSearchQuery] = React__default.useState("");
21
- const [filters, setFilters] = React__default.useState({
21
+ const [page, setPage] = useState(1);
22
+ const [pageCount, setPageCount] = useState(1);
23
+ const [entitiesPerPage, setEntitiesPerPage] = useState(25);
24
+ const [searchQuery, setSearchQuery] = useState("");
25
+ const [filters, setFilters] = useState({
22
26
  order: "desc",
23
27
  searchQuery: ""
24
28
  });
@@ -53,30 +57,35 @@ const EntitiesGrid = () => {
53
57
  setPageCount(Math.ceil(response.total / entitiesPerPage));
54
58
  }
55
59
  }, [response, entitiesPerPage]);
56
- return /* @__PURE__ */ React__default.createElement(Box, null, /* @__PURE__ */ React__default.createElement(Grid, { container: true, justifyContent: "space-between" }, /* @__PURE__ */ React__default.createElement(Grid, { item: true, xs: 12, md: 4 }, /* @__PURE__ */ React__default.createElement(
57
- SearchBar,
58
- {
59
- onSearch: onSearchQueryChange,
60
- label: t("entitiesPage.search.label"),
61
- loading
62
- }
63
- ))), /* @__PURE__ */ React__default.createElement(Grid, { container: true, justifyContent: "space-between" }, response && /* @__PURE__ */ React__default.createElement(Grid, { item: true }, /* @__PURE__ */ React__default.createElement(Typography, { variant: "h6", className: "qetaCollectionsContainerdCount" }, t("common.entities", { count: response?.total ?? 0 })))), /* @__PURE__ */ React__default.createElement(
64
- EntitiesGridContent,
65
- {
66
- response,
67
- loading,
68
- error
69
- }
70
- ), response && response?.total > 0 && /* @__PURE__ */ React__default.createElement(
71
- QetaPagination,
72
- {
73
- pageSize: entitiesPerPage,
74
- handlePageChange: (_e, p) => setPage(p),
75
- handlePageSizeChange: (e) => setEntitiesPerPage(Number(e.target.value)),
76
- page,
77
- pageCount
78
- }
79
- ));
60
+ return /* @__PURE__ */ jsxs(Box, { children: [
61
+ /* @__PURE__ */ jsx(Grid, { container: true, justifyContent: "space-between", children: /* @__PURE__ */ jsx(Grid, { item: true, xs: 12, md: 4, children: /* @__PURE__ */ jsx(
62
+ SearchBar,
63
+ {
64
+ onSearch: onSearchQueryChange,
65
+ label: t("entitiesPage.search.label"),
66
+ loading
67
+ }
68
+ ) }) }),
69
+ /* @__PURE__ */ jsx(Grid, { container: true, justifyContent: "space-between", children: response && /* @__PURE__ */ jsx(Grid, { item: true, children: /* @__PURE__ */ jsx(Typography, { variant: "h6", className: "qetaCollectionsContainerdCount", children: t("common.entities", { count: response?.total ?? 0 }) }) }) }),
70
+ /* @__PURE__ */ jsx(
71
+ EntitiesGridContent,
72
+ {
73
+ response,
74
+ loading,
75
+ error
76
+ }
77
+ ),
78
+ response && response?.total > 0 && /* @__PURE__ */ jsx(
79
+ QetaPagination,
80
+ {
81
+ pageSize: entitiesPerPage,
82
+ handlePageChange: (_e, p) => setPage(p),
83
+ handlePageSizeChange: (e) => setEntitiesPerPage(Number(e.target.value)),
84
+ page,
85
+ pageCount
86
+ }
87
+ )
88
+ ] });
80
89
  };
81
90
 
82
91
  export { EntitiesGrid };
@@ -1 +1 @@
1
- {"version":3,"file":"EntitiesGrid.esm.js","sources":["../../../src/components/EntitiesGrid/EntitiesGrid.tsx"],"sourcesContent":["import { Box, Grid, Typography } from '@material-ui/core';\nimport React, { useEffect } from 'react';\nimport { useQetaApi, useTranslation } from '../../hooks';\nimport useDebounce from 'react-use/lib/useDebounce';\nimport { QetaPagination } from '../QetaPagination/QetaPagination';\nimport { EntitiesGridContent } from './EntitiesGridContent';\nimport { SearchBar } from '../SearchBar/SearchBar';\n\ntype EntityFilters = {\n order: 'asc' | 'desc';\n orderBy?: 'entityRef';\n searchQuery: string;\n};\n\nexport const EntitiesGrid = () => {\n const [page, setPage] = React.useState(1);\n const [pageCount, setPageCount] = React.useState(1);\n const [entitiesPerPage, setEntitiesPerPage] = React.useState(25);\n const [searchQuery, setSearchQuery] = React.useState('');\n const [filters, setFilters] = React.useState<EntityFilters>({\n order: 'desc',\n searchQuery: '',\n });\n const { t } = useTranslation();\n\n const {\n value: response,\n loading,\n error,\n } = useQetaApi(\n api =>\n api.getEntities({\n limit: entitiesPerPage,\n offset: (page - 1) * entitiesPerPage,\n ...filters,\n }),\n [entitiesPerPage, page, filters],\n );\n\n const onSearchQueryChange = (val: string) => {\n setPage(1);\n setSearchQuery(val);\n };\n\n useDebounce(\n () => {\n if (filters.searchQuery !== searchQuery) {\n setFilters({ ...filters, searchQuery: searchQuery });\n }\n },\n 400,\n [searchQuery],\n );\n\n useEffect(() => {\n if (response) {\n setPageCount(Math.ceil(response.total / entitiesPerPage));\n }\n }, [response, entitiesPerPage]);\n\n return (\n <Box>\n <Grid container justifyContent=\"space-between\">\n <Grid item xs={12} md={4}>\n <SearchBar\n onSearch={onSearchQueryChange}\n label={t('entitiesPage.search.label')}\n loading={loading}\n />\n </Grid>\n </Grid>\n <Grid container justifyContent=\"space-between\">\n {response && (\n <Grid item>\n <Typography variant=\"h6\" className=\"qetaCollectionsContainerdCount\">\n {t('common.entities', { count: response?.total ?? 0 })}\n </Typography>\n </Grid>\n )}\n </Grid>\n <EntitiesGridContent\n response={response}\n loading={loading}\n error={error}\n />\n {response && response?.total > 0 && (\n <QetaPagination\n pageSize={entitiesPerPage}\n handlePageChange={(_e, p) => setPage(p)}\n handlePageSizeChange={e => setEntitiesPerPage(Number(e.target.value))}\n page={page}\n pageCount={pageCount}\n />\n )}\n </Box>\n );\n};\n"],"names":["React"],"mappings":"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"}
1
+ {"version":3,"file":"EntitiesGrid.esm.js","sources":["../../../src/components/EntitiesGrid/EntitiesGrid.tsx"],"sourcesContent":["import { Box, Grid, Typography } from '@material-ui/core';\nimport { useState, useEffect } from 'react';\nimport { useQetaApi, useTranslation } from '../../hooks';\nimport useDebounce from 'react-use/lib/useDebounce';\nimport { QetaPagination } from '../QetaPagination/QetaPagination';\nimport { EntitiesGridContent } from './EntitiesGridContent';\nimport { SearchBar } from '../SearchBar/SearchBar';\n\ntype EntityFilters = {\n order: 'asc' | 'desc';\n orderBy?: 'entityRef';\n searchQuery: string;\n};\n\nexport const EntitiesGrid = () => {\n const [page, setPage] = useState(1);\n const [pageCount, setPageCount] = useState(1);\n const [entitiesPerPage, setEntitiesPerPage] = useState(25);\n const [searchQuery, setSearchQuery] = useState('');\n const [filters, setFilters] = useState<EntityFilters>({\n order: 'desc',\n searchQuery: '',\n });\n const { t } = useTranslation();\n\n const {\n value: response,\n loading,\n error,\n } = useQetaApi(\n api =>\n api.getEntities({\n limit: entitiesPerPage,\n offset: (page - 1) * entitiesPerPage,\n ...filters,\n }),\n [entitiesPerPage, page, filters],\n );\n\n const onSearchQueryChange = (val: string) => {\n setPage(1);\n setSearchQuery(val);\n };\n\n useDebounce(\n () => {\n if (filters.searchQuery !== searchQuery) {\n setFilters({ ...filters, searchQuery: searchQuery });\n }\n },\n 400,\n [searchQuery],\n );\n\n useEffect(() => {\n if (response) {\n setPageCount(Math.ceil(response.total / entitiesPerPage));\n }\n }, [response, entitiesPerPage]);\n\n return (\n <Box>\n <Grid container justifyContent=\"space-between\">\n <Grid item xs={12} md={4}>\n <SearchBar\n onSearch={onSearchQueryChange}\n label={t('entitiesPage.search.label')}\n loading={loading}\n />\n </Grid>\n </Grid>\n <Grid container justifyContent=\"space-between\">\n {response && (\n <Grid item>\n <Typography variant=\"h6\" className=\"qetaCollectionsContainerdCount\">\n {t('common.entities', { count: response?.total ?? 0 })}\n </Typography>\n </Grid>\n )}\n </Grid>\n <EntitiesGridContent\n response={response}\n loading={loading}\n error={error}\n />\n {response && response?.total > 0 && (\n <QetaPagination\n pageSize={entitiesPerPage}\n handlePageChange={(_e, p) => setPage(p)}\n handlePageSizeChange={e => setEntitiesPerPage(Number(e.target.value))}\n page={page}\n pageCount={pageCount}\n />\n )}\n </Box>\n );\n};\n"],"names":[],"mappings":"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"}