@drodil/backstage-plugin-qeta-react 3.24.5 → 3.25.1

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,5 @@
1
- import React__default, { useEffect } from 'react';
1
+ import { jsxs, jsx } from 'react/jsx-runtime';
2
+ import { useState, useEffect, useCallback } from 'react';
2
3
  import { stringifyEntityRef } from '@backstage/catalog-model';
3
4
  import { DateRangeFilter } from './DateRangeFilter.esm.js';
4
5
  import { useApi, identityApiRef } from '@backstage/core-plugin-api';
@@ -8,6 +9,9 @@ import { useTranslation } from '../../hooks/useTranslation.esm.js';
8
9
  import 'dataloader';
9
10
  import { useStarredEntities, catalogApiRef } from '@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 { EntitiesInput } from '../PostForm/EntitiesInput.esm.js';
12
16
  import { TagInput } from '../PostForm/TagInput.esm.js';
13
17
  import { makeStyles, Box, Grid, FormGroup, FormLabel, FormControlLabel, Checkbox, FormControl, RadioGroup, Divider, Tooltip, IconButton, Radio } from '@material-ui/core';
@@ -16,11 +20,11 @@ import FiberManualRecordIcon from '@material-ui/icons/FiberManualRecord';
16
20
  import { compact } from 'lodash';
17
21
 
18
22
  const radioSelect = (value, label) => {
19
- return /* @__PURE__ */ React__default.createElement(
23
+ return /* @__PURE__ */ jsx(
20
24
  FormControlLabel,
21
25
  {
22
26
  value,
23
- control: /* @__PURE__ */ React__default.createElement(Radio, { size: "small" }),
27
+ control: /* @__PURE__ */ jsx(Radio, { size: "small" }),
24
28
  label
25
29
  }
26
30
  );
@@ -66,15 +70,27 @@ const FilterPanel = (props) => {
66
70
  type
67
71
  } = props;
68
72
  const { t } = useTranslation();
69
- const [entities, setEntities] = React__default.useState(
70
- void 0
71
- );
72
- const [starredEntities, setStarredEntities] = React__default.useState(false);
73
- const [ownedEntities, setOwnedEntities] = React__default.useState(false);
73
+ const [entities, setEntities] = useState(void 0);
74
+ const [starredEntities, setStarredEntities] = useState(false);
75
+ const [ownedEntities, setOwnedEntities] = useState(false);
76
+ const [ownedEntityRefs, setOwnedEntityRefs] = useState([]);
74
77
  const starredEntitiesApi = useStarredEntities();
75
78
  const catalogApi = useApi(catalogApiRef);
76
79
  const identityApi = useApi(identityApiRef);
77
80
  const styles = useStyles();
81
+ useEffect(() => {
82
+ identityApi.getBackstageIdentity().then((identity) => {
83
+ catalogApi.getEntities({
84
+ filter: {
85
+ "spec.owner": identity.ownershipEntityRefs
86
+ },
87
+ fields: ["kind", "metadata.name", "metadata.namespace"]
88
+ }).then((data) => {
89
+ const entityRefs = data.items.map((e) => stringifyEntityRef(e));
90
+ setOwnedEntityRefs(entityRefs);
91
+ });
92
+ });
93
+ }, [catalogApi, identityApi]);
78
94
  const handleChange = (event) => {
79
95
  let value = event.target.value;
80
96
  if (event.target.type === "checkbox") {
@@ -82,43 +98,39 @@ const FilterPanel = (props) => {
82
98
  }
83
99
  onChange({ key: event.target.name, value });
84
100
  };
85
- const handleStarredEntities = (checked) => {
86
- setStarredEntities(checked);
87
- setEntities([]);
88
- if (checked) {
89
- onChange({
90
- key: "entities",
91
- value: [...starredEntitiesApi.starredEntities]
92
- });
93
- } else {
94
- onChange({ key: "entities", value: [] });
95
- }
96
- };
97
- const handleOwnedEntities = (checked) => {
98
- setOwnedEntities(checked);
99
- setEntities([]);
100
- if (checked) {
101
- identityApi.getBackstageIdentity().then((identity) => {
102
- catalogApi.getEntities({
103
- filter: {
104
- "spec.owner": identity.ownershipEntityRefs
105
- },
106
- fields: ["kind", "metadata.name", "metadata.namespace"]
107
- }).then((data) => {
108
- const entityRefs = data.items.map((e) => stringifyEntityRef(e));
109
- onChange([
110
- { key: "entities", value: entityRefs },
111
- { key: "entitiesRelation", value: "or" }
112
- ]);
101
+ const handleStarredEntities = useCallback(
102
+ (checked) => {
103
+ setStarredEntities(checked);
104
+ setEntities([]);
105
+ if (checked) {
106
+ onChange({
107
+ key: "entities",
108
+ value: [...starredEntitiesApi.starredEntities]
113
109
  });
114
- });
115
- } else {
116
- onChange([
117
- { key: "entities", value: [] },
118
- { key: "entitiesRelation", value: "and" }
119
- ]);
120
- }
121
- };
110
+ } else {
111
+ onChange({ key: "entities", value: [] });
112
+ }
113
+ },
114
+ [onChange, starredEntitiesApi.starredEntities]
115
+ );
116
+ const handleOwnedEntities = useCallback(
117
+ (checked) => {
118
+ setOwnedEntities(checked);
119
+ setEntities([]);
120
+ if (checked) {
121
+ onChange([
122
+ { key: "entities", value: ownedEntityRefs },
123
+ { key: "entitiesRelation", value: "or" }
124
+ ]);
125
+ } else {
126
+ onChange([
127
+ { key: "entities", value: [] },
128
+ { key: "entitiesRelation", value: "and" }
129
+ ]);
130
+ }
131
+ },
132
+ [onChange, ownedEntityRefs]
133
+ );
122
134
  useEffect(() => {
123
135
  if (filters.entities) {
124
136
  catalogApi.getEntitiesByRefs({
@@ -132,189 +144,222 @@ const FilterPanel = (props) => {
132
144
  const postFilters = isPostFilters(filters);
133
145
  const answerFilters = isAnswerFilters(filters);
134
146
  const collectionFilters = isCollectionFilters(filters);
135
- return /* @__PURE__ */ React__default.createElement(Box, { className: styles.root }, /* @__PURE__ */ React__default.createElement(
136
- Grid,
137
- {
138
- container: true,
139
- spacing: 4,
140
- alignItems: "stretch",
141
- justifyContent: "space-evenly"
142
- },
143
- (postFilters || answerFilters) && /* @__PURE__ */ React__default.createElement(Grid, { item: true }, /* @__PURE__ */ React__default.createElement(FormGroup, null, /* @__PURE__ */ React__default.createElement(FormLabel, { id: "qeta-filter-quick" }, t("filterPanel.quickFilters.label")), postFilters && type !== "article" && /* @__PURE__ */ React__default.createElement(
144
- FormControlLabel,
147
+ return /* @__PURE__ */ jsxs(Box, { className: styles.root, children: [
148
+ /* @__PURE__ */ jsxs(
149
+ Grid,
145
150
  {
146
- control: /* @__PURE__ */ React__default.createElement(
147
- Checkbox,
148
- {
149
- size: "small",
150
- name: "noAnswers",
151
- onChange: handleChange,
152
- checked: filters.noAnswers === "true"
153
- }
154
- ),
155
- label: t("filterPanel.noAnswers.label")
151
+ container: true,
152
+ spacing: 4,
153
+ alignItems: "stretch",
154
+ justifyContent: "space-evenly",
155
+ children: [
156
+ (postFilters || answerFilters) && /* @__PURE__ */ jsx(Grid, { item: true, children: /* @__PURE__ */ jsxs(FormGroup, { children: [
157
+ /* @__PURE__ */ jsx(FormLabel, { id: "qeta-filter-quick", children: t("filterPanel.quickFilters.label") }),
158
+ postFilters && type !== "article" && /* @__PURE__ */ jsx(
159
+ FormControlLabel,
160
+ {
161
+ control: /* @__PURE__ */ jsx(
162
+ Checkbox,
163
+ {
164
+ size: "small",
165
+ name: "noAnswers",
166
+ onChange: handleChange,
167
+ checked: filters.noAnswers === "true"
168
+ }
169
+ ),
170
+ label: t("filterPanel.noAnswers.label")
171
+ }
172
+ ),
173
+ (postFilters || answerFilters) && type !== "article" && /* @__PURE__ */ jsx(
174
+ FormControlLabel,
175
+ {
176
+ control: /* @__PURE__ */ jsx(
177
+ Checkbox,
178
+ {
179
+ size: "small",
180
+ name: "noCorrectAnswer",
181
+ checked: filters.noCorrectAnswer === "true",
182
+ onChange: handleChange
183
+ }
184
+ ),
185
+ label: t("filterPanel.noCorrectAnswers.label")
186
+ }
187
+ ),
188
+ (postFilters || answerFilters) && /* @__PURE__ */ jsx(
189
+ FormControlLabel,
190
+ {
191
+ control: /* @__PURE__ */ jsx(
192
+ Checkbox,
193
+ {
194
+ size: "small",
195
+ name: "noVotes",
196
+ checked: filters.noVotes === "true",
197
+ onChange: handleChange
198
+ }
199
+ ),
200
+ label: t("filterPanel.noVotes.label")
201
+ }
202
+ ),
203
+ starredEntitiesApi.starredEntities.size > 0 && /* @__PURE__ */ jsx(
204
+ FormControlLabel,
205
+ {
206
+ control: /* @__PURE__ */ jsx(
207
+ Checkbox,
208
+ {
209
+ size: "small",
210
+ name: "starredEntities",
211
+ onChange: (e) => handleStarredEntities(e.target.checked),
212
+ checked: starredEntities
213
+ }
214
+ ),
215
+ label: t("filterPanel.starredEntities.label")
216
+ }
217
+ ),
218
+ /* @__PURE__ */ jsx(
219
+ FormControlLabel,
220
+ {
221
+ control: /* @__PURE__ */ jsx(
222
+ Checkbox,
223
+ {
224
+ size: "small",
225
+ name: "ownedEntities",
226
+ onChange: (e) => handleOwnedEntities(e.target.checked),
227
+ checked: ownedEntities
228
+ }
229
+ ),
230
+ label: t("filterPanel.ownedEntities.label")
231
+ }
232
+ )
233
+ ] }) }),
234
+ /* @__PURE__ */ jsx(Grid, { item: true, children: /* @__PURE__ */ jsxs(FormControl, { children: [
235
+ /* @__PURE__ */ jsx(FormLabel, { id: "qeta-filter-order-by", children: t("filterPanel.orderBy.label") }),
236
+ /* @__PURE__ */ jsxs(
237
+ RadioGroup,
238
+ {
239
+ "aria-labelledby": "qeta-filter-order-by",
240
+ name: "orderBy",
241
+ value: filters.orderBy,
242
+ onChange: handleChange,
243
+ style: {
244
+ display: "grid",
245
+ gridTemplateColumns: "1fr 1fr",
246
+ gap: "0 1em"
247
+ },
248
+ children: [
249
+ postFilters && filters.collectionId !== void 0 && radioSelect("rank", t("filterPanel.orderBy.rank")),
250
+ radioSelect("created", t("filterPanel.orderBy.created")),
251
+ (postFilters || collectionFilters) && radioSelect("title", t("filterPanel.orderBy.title")),
252
+ postFilters && radioSelect("views", t("filterPanel.orderBy.views")),
253
+ (postFilters || answerFilters) && radioSelect("score", t("filterPanel.orderBy.score")),
254
+ postFilters && radioSelect("trend", t("filterPanel.orderBy.trend")),
255
+ postFilters && type !== "article" && radioSelect("answersCount", t("filterPanel.orderBy.answers")),
256
+ (postFilters || answerFilters) && radioSelect("updated", t("filterPanel.orderBy.updated"))
257
+ ]
258
+ }
259
+ )
260
+ ] }) }),
261
+ /* @__PURE__ */ jsx(Grid, { item: true, children: /* @__PURE__ */ jsxs(FormControl, { children: [
262
+ /* @__PURE__ */ jsx(FormLabel, { id: "qeta-filter-order", children: t("filterPanel.order.label") }),
263
+ /* @__PURE__ */ jsxs(
264
+ RadioGroup,
265
+ {
266
+ "aria-labelledby": "qeta-filter-order",
267
+ name: "order",
268
+ value: filters.order,
269
+ onChange: handleChange,
270
+ children: [
271
+ radioSelect("desc", t("filterPanel.order.desc")),
272
+ radioSelect("asc", t("filterPanel.order.asc"))
273
+ ]
274
+ }
275
+ )
276
+ ] }) })
277
+ ]
156
278
  }
157
- ), (postFilters || answerFilters) && type !== "article" && /* @__PURE__ */ React__default.createElement(
158
- FormControlLabel,
159
- {
160
- control: /* @__PURE__ */ React__default.createElement(
161
- Checkbox,
279
+ ),
280
+ /* @__PURE__ */ jsx(Box, { marginY: "24px", children: /* @__PURE__ */ jsx(Divider, {}) }),
281
+ /* @__PURE__ */ jsxs(Grid, { container: true, alignItems: "stretch", justifyContent: "space-evenly", children: [
282
+ /* @__PURE__ */ jsx(Grid, { item: true, children: /* @__PURE__ */ jsx(
283
+ DateRangeFilter,
284
+ {
285
+ value: filters.dateRange,
286
+ onChange: (val) => onChange({ key: "dateRange", value: val })
287
+ }
288
+ ) }),
289
+ showEntityFilter && /* @__PURE__ */ jsx(Grid, { item: true, children: /* @__PURE__ */ jsxs(Grid, { container: true, alignItems: "center", children: [
290
+ /* @__PURE__ */ jsx(Grid, { item: true, children: /* @__PURE__ */ jsx(
291
+ EntitiesInput,
162
292
  {
163
- size: "small",
164
- name: "noCorrectAnswer",
165
- checked: filters.noCorrectAnswer === "true",
166
- onChange: handleChange
293
+ disabled: starredEntities || ownedEntities,
294
+ style: { width: "230px" },
295
+ onChange: (newEntities) => {
296
+ const entityRefs = (newEntities ?? []).map(
297
+ (e) => stringifyEntityRef(e)
298
+ );
299
+ handleChange({
300
+ target: { name: "entities", value: entityRefs }
301
+ });
302
+ setEntities(newEntities);
303
+ },
304
+ value: entities,
305
+ useOnlyUsedEntities: true,
306
+ hideHelpText: true
167
307
  }
168
- ),
169
- label: t("filterPanel.noCorrectAnswers.label")
170
- }
171
- ), (postFilters || answerFilters) && /* @__PURE__ */ React__default.createElement(
172
- FormControlLabel,
173
- {
174
- control: /* @__PURE__ */ React__default.createElement(
175
- Checkbox,
308
+ ) }),
309
+ filters.entities && filters.entities?.length > 1 && /* @__PURE__ */ jsx(Grid, { item: true, children: /* @__PURE__ */ jsx(
310
+ Tooltip,
176
311
  {
177
- size: "small",
178
- name: "noVotes",
179
- checked: filters.noVotes === "true",
180
- onChange: handleChange
312
+ title: filters.entitiesRelation === "or" ? t("filterPanel.toggleEntityRelation.and") : t("filterPanel.toggleEntityRelation.or"),
313
+ children: /* @__PURE__ */ jsx(
314
+ IconButton,
315
+ {
316
+ disabled: starredEntities || ownedEntities,
317
+ onClick: () => {
318
+ if (filters.entitiesRelation === "or") {
319
+ onChange({ key: "entitiesRelation", value: "and" });
320
+ } else {
321
+ onChange({ key: "entitiesRelation", value: "or" });
322
+ }
323
+ },
324
+ children: filters.entitiesRelation === "or" ? /* @__PURE__ */ jsx(AdjustIcon, {}) : /* @__PURE__ */ jsx(FiberManualRecordIcon, {})
325
+ }
326
+ )
181
327
  }
182
- ),
183
- label: t("filterPanel.noVotes.label")
184
- }
185
- ), starredEntitiesApi.starredEntities.size > 0 && /* @__PURE__ */ React__default.createElement(
186
- FormControlLabel,
187
- {
188
- control: /* @__PURE__ */ React__default.createElement(
189
- Checkbox,
328
+ ) })
329
+ ] }) }),
330
+ showTagFilter && /* @__PURE__ */ jsx(Grid, { item: true, children: /* @__PURE__ */ jsxs(Grid, { container: true, alignItems: "center", children: [
331
+ /* @__PURE__ */ jsx(Grid, { item: true, children: /* @__PURE__ */ jsx(
332
+ TagInput,
190
333
  {
191
- size: "small",
192
- name: "starredEntities",
193
- onChange: (e) => handleStarredEntities(e.target.checked),
194
- checked: starredEntities
334
+ style: { width: "230px" },
335
+ onChange: (newTags) => onChange({ key: "tags", value: newTags }),
336
+ value: filters.tags,
337
+ hideHelpText: true,
338
+ allowCreate: false
195
339
  }
196
- ),
197
- label: t("filterPanel.starredEntities.label")
198
- }
199
- ), /* @__PURE__ */ React__default.createElement(
200
- FormControlLabel,
201
- {
202
- control: /* @__PURE__ */ React__default.createElement(
203
- Checkbox,
340
+ ) }),
341
+ filters.tags && filters.tags?.length > 1 && /* @__PURE__ */ jsx(Grid, { item: true, children: /* @__PURE__ */ jsx(
342
+ Tooltip,
204
343
  {
205
- size: "small",
206
- name: "ownedEntities",
207
- onChange: (e) => handleOwnedEntities(e.target.checked),
208
- checked: ownedEntities
344
+ title: filters.tagsRelation === "or" ? t("filterPanel.toggleTagRelation.and") : t("filterPanel.toggleTagRelation.or"),
345
+ children: /* @__PURE__ */ jsx(
346
+ IconButton,
347
+ {
348
+ onClick: () => {
349
+ if (filters.tagsRelation === "or") {
350
+ onChange({ key: "tagsRelation", value: "and" });
351
+ } else {
352
+ onChange({ key: "tagsRelation", value: "or" });
353
+ }
354
+ },
355
+ children: filters.tagsRelation === "or" ? /* @__PURE__ */ jsx(AdjustIcon, {}) : /* @__PURE__ */ jsx(FiberManualRecordIcon, {})
356
+ }
357
+ )
209
358
  }
210
- ),
211
- label: t("filterPanel.ownedEntities.label")
212
- }
213
- ))),
214
- /* @__PURE__ */ React__default.createElement(Grid, { item: true }, /* @__PURE__ */ React__default.createElement(FormControl, null, /* @__PURE__ */ React__default.createElement(FormLabel, { id: "qeta-filter-order-by" }, t("filterPanel.orderBy.label")), /* @__PURE__ */ React__default.createElement(
215
- RadioGroup,
216
- {
217
- "aria-labelledby": "qeta-filter-order-by",
218
- name: "orderBy",
219
- value: filters.orderBy,
220
- onChange: handleChange,
221
- style: {
222
- display: "grid",
223
- gridTemplateColumns: "1fr 1fr",
224
- gap: "0 1em"
225
- }
226
- },
227
- postFilters && filters.collectionId !== void 0 && radioSelect("rank", t("filterPanel.orderBy.rank")),
228
- radioSelect("created", t("filterPanel.orderBy.created")),
229
- (postFilters || collectionFilters) && radioSelect("title", t("filterPanel.orderBy.title")),
230
- postFilters && radioSelect("views", t("filterPanel.orderBy.views")),
231
- (postFilters || answerFilters) && radioSelect("score", t("filterPanel.orderBy.score")),
232
- postFilters && radioSelect("trend", t("filterPanel.orderBy.trend")),
233
- postFilters && type !== "article" && radioSelect("answersCount", t("filterPanel.orderBy.answers")),
234
- (postFilters || answerFilters) && radioSelect("updated", t("filterPanel.orderBy.updated"))
235
- ))),
236
- /* @__PURE__ */ React__default.createElement(Grid, { item: true }, /* @__PURE__ */ React__default.createElement(FormControl, null, /* @__PURE__ */ React__default.createElement(FormLabel, { id: "qeta-filter-order" }, t("filterPanel.order.label")), /* @__PURE__ */ React__default.createElement(
237
- RadioGroup,
238
- {
239
- "aria-labelledby": "qeta-filter-order",
240
- name: "order",
241
- value: filters.order,
242
- onChange: handleChange
243
- },
244
- radioSelect("desc", t("filterPanel.order.desc")),
245
- radioSelect("asc", t("filterPanel.order.asc"))
246
- )))
247
- ), /* @__PURE__ */ React__default.createElement(Box, { marginY: "24px" }, /* @__PURE__ */ React__default.createElement(Divider, null)), /* @__PURE__ */ React__default.createElement(Grid, { container: true, alignItems: "stretch", justifyContent: "space-evenly" }, /* @__PURE__ */ React__default.createElement(Grid, { item: true }, /* @__PURE__ */ React__default.createElement(
248
- DateRangeFilter,
249
- {
250
- value: filters.dateRange,
251
- onChange: (val) => onChange({ key: "dateRange", value: val })
252
- }
253
- )), showEntityFilter && /* @__PURE__ */ React__default.createElement(Grid, { item: true }, /* @__PURE__ */ React__default.createElement(Grid, { container: true, alignItems: "center" }, /* @__PURE__ */ React__default.createElement(Grid, { item: true }, /* @__PURE__ */ React__default.createElement(
254
- EntitiesInput,
255
- {
256
- disabled: starredEntities || ownedEntities,
257
- style: { width: "230px" },
258
- onChange: (newEntities) => {
259
- const entityRefs = (newEntities ?? []).map(
260
- (e) => stringifyEntityRef(e)
261
- );
262
- handleChange({
263
- target: { name: "entities", value: entityRefs }
264
- });
265
- setEntities(newEntities);
266
- },
267
- value: entities,
268
- useOnlyUsedEntities: true,
269
- hideHelpText: true
270
- }
271
- )), filters.entities && filters.entities?.length > 1 && /* @__PURE__ */ React__default.createElement(Grid, { item: true }, /* @__PURE__ */ React__default.createElement(
272
- Tooltip,
273
- {
274
- title: filters.entitiesRelation === "or" ? t("filterPanel.toggleEntityRelation.and") : t("filterPanel.toggleEntityRelation.or")
275
- },
276
- /* @__PURE__ */ React__default.createElement(
277
- IconButton,
278
- {
279
- disabled: starredEntities || ownedEntities,
280
- onClick: () => {
281
- if (filters.entitiesRelation === "or") {
282
- onChange({ key: "entitiesRelation", value: "and" });
283
- } else {
284
- onChange({ key: "entitiesRelation", value: "or" });
285
- }
286
- }
287
- },
288
- filters.entitiesRelation === "or" ? /* @__PURE__ */ React__default.createElement(AdjustIcon, null) : /* @__PURE__ */ React__default.createElement(FiberManualRecordIcon, null)
289
- )
290
- )))), showTagFilter && /* @__PURE__ */ React__default.createElement(Grid, { item: true }, /* @__PURE__ */ React__default.createElement(Grid, { container: true, alignItems: "center" }, /* @__PURE__ */ React__default.createElement(Grid, { item: true }, /* @__PURE__ */ React__default.createElement(
291
- TagInput,
292
- {
293
- style: { width: "230px" },
294
- onChange: (newTags) => onChange({ key: "tags", value: newTags }),
295
- value: filters.tags,
296
- hideHelpText: true,
297
- allowCreate: false
298
- }
299
- )), filters.tags && filters.tags?.length > 1 && /* @__PURE__ */ React__default.createElement(Grid, { item: true }, /* @__PURE__ */ React__default.createElement(
300
- Tooltip,
301
- {
302
- title: filters.tagsRelation === "or" ? t("filterPanel.toggleTagRelation.and") : t("filterPanel.toggleTagRelation.or")
303
- },
304
- /* @__PURE__ */ React__default.createElement(
305
- IconButton,
306
- {
307
- onClick: () => {
308
- if (filters.tagsRelation === "or") {
309
- onChange({ key: "tagsRelation", value: "and" });
310
- } else {
311
- onChange({ key: "tagsRelation", value: "or" });
312
- }
313
- }
314
- },
315
- filters.tagsRelation === "or" ? /* @__PURE__ */ React__default.createElement(AdjustIcon, null) : /* @__PURE__ */ React__default.createElement(FiberManualRecordIcon, null)
316
- )
317
- ))))));
359
+ ) })
360
+ ] }) })
361
+ ] })
362
+ ] });
318
363
  };
319
364
 
320
365
  export { FilterPanel, filterKeys };