@drodil/backstage-plugin-qeta 2.14.0 → 3.0.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.
- package/dist/components/ArticlePage/ArticlePage.esm.js +45 -0
- package/dist/components/ArticlePage/ArticlePage.esm.js.map +1 -0
- package/dist/components/ArticlesPage/ArticlesPage.esm.js +34 -0
- package/dist/components/ArticlesPage/ArticlesPage.esm.js.map +1 -0
- package/dist/components/AskPage/AskPage.esm.js +4 -4
- package/dist/components/AskPage/AskPage.esm.js.map +1 -1
- package/dist/components/CollectionCreatePage/CollectionCreatePage.esm.js +20 -0
- package/dist/components/CollectionCreatePage/CollectionCreatePage.esm.js.map +1 -0
- package/dist/components/CollectionPage/CollectionPage.esm.js +34 -0
- package/dist/components/CollectionPage/CollectionPage.esm.js.map +1 -0
- package/dist/components/CollectionsPage/CollectionsPage.esm.js +11 -0
- package/dist/components/CollectionsPage/CollectionsPage.esm.js.map +1 -0
- package/dist/components/EntityPage/EntityPage.esm.js +75 -0
- package/dist/components/EntityPage/EntityPage.esm.js.map +1 -0
- package/dist/components/FavoritePage/FavoritePage.esm.js +14 -22
- package/dist/components/FavoritePage/FavoritePage.esm.js.map +1 -1
- package/dist/components/HomePage/HomePage.esm.js +7 -10
- package/dist/components/HomePage/HomePage.esm.js.map +1 -1
- package/dist/components/LeftMenu/LeftMenu.esm.js +47 -16
- package/dist/components/LeftMenu/LeftMenu.esm.js.map +1 -1
- package/dist/components/LeftMenu/LeftMenuButton.esm.js +75 -0
- package/dist/components/LeftMenu/LeftMenuButton.esm.js.map +1 -0
- package/dist/components/QetaPage/QetaPage.esm.js +51 -9
- package/dist/components/QetaPage/QetaPage.esm.js.map +1 -1
- package/dist/components/QuestionPage/QuestionPage.esm.js +7 -13
- package/dist/components/QuestionPage/QuestionPage.esm.js.map +1 -1
- package/dist/components/QuestionTableCard/Content.esm.js +1 -1
- package/dist/components/QuestionTableCard/Content.esm.js.map +1 -1
- package/dist/components/QuestionTableCard/index.esm.js +0 -1
- package/dist/components/QuestionTableCard/index.esm.js.map +1 -1
- package/dist/components/QuestionsPage/QuestionsPage.esm.js +13 -15
- package/dist/components/QuestionsPage/QuestionsPage.esm.js.map +1 -1
- package/dist/components/Statistics/GlobalStatsContent.esm.js +1 -3
- package/dist/components/Statistics/GlobalStatsContent.esm.js.map +1 -1
- package/dist/components/Statistics/StatisticsPage.esm.js +2 -3
- package/dist/components/Statistics/StatisticsPage.esm.js.map +1 -1
- package/dist/components/TagPage/TagPage.esm.js +32 -25
- package/dist/components/TagPage/TagPage.esm.js.map +1 -1
- package/dist/components/UserPage/UserPage.esm.js +7 -15
- package/dist/components/UserPage/UserPage.esm.js.map +1 -1
- package/dist/components/UserPage/UserStatsContent.esm.js +1 -3
- package/dist/components/UserPage/UserStatsContent.esm.js.map +1 -1
- package/dist/components/UsersPage/UsersPage.esm.js +11 -0
- package/dist/components/UsersPage/UsersPage.esm.js.map +1 -0
- package/dist/components/WritePage/WritePage.esm.js +40 -0
- package/dist/components/WritePage/WritePage.esm.js.map +1 -0
- package/dist/index.d.ts +8 -422
- package/dist/index.esm.js +0 -10
- package/dist/index.esm.js.map +1 -1
- package/dist/plugin.esm.js +2 -2
- package/dist/plugin.esm.js.map +1 -1
- package/package.json +4 -24
- package/dist/api/QetaClient.esm.js +0 -513
- package/dist/api/QetaClient.esm.js.map +0 -1
- package/dist/components/AnswersContainer/AnswerList.esm.js +0 -100
- package/dist/components/AnswersContainer/AnswerList.esm.js.map +0 -1
- package/dist/components/AnswersContainer/AnswerListItem.esm.js +0 -87
- package/dist/components/AnswersContainer/AnswerListItem.esm.js.map +0 -1
- package/dist/components/AnswersContainer/AnswersContainer.esm.js +0 -210
- package/dist/components/AnswersContainer/AnswersContainer.esm.js.map +0 -1
- package/dist/components/AskAnonymouslyCheckbox/AskAnonymouslyCheckbox.esm.js +0 -34
- package/dist/components/AskAnonymouslyCheckbox/AskAnonymouslyCheckbox.esm.js.map +0 -1
- package/dist/components/AskForm/AskForm.esm.js +0 -245
- package/dist/components/AskForm/AskForm.esm.js.map +0 -1
- package/dist/components/AskForm/EntitiesInput.esm.js +0 -100
- package/dist/components/AskForm/EntitiesInput.esm.js.map +0 -1
- package/dist/components/AskForm/TagInput.esm.js +0 -81
- package/dist/components/AskForm/TagInput.esm.js.map +0 -1
- package/dist/components/Buttons/AskQuestionButton.esm.js +0 -45
- package/dist/components/Buttons/AskQuestionButton.esm.js.map +0 -1
- package/dist/components/Buttons/BackToQuestionsButton.esm.js +0 -39
- package/dist/components/Buttons/BackToQuestionsButton.esm.js.map +0 -1
- package/dist/components/Buttons/EntityFollowButton.esm.js +0 -34
- package/dist/components/Buttons/EntityFollowButton.esm.js.map +0 -1
- package/dist/components/Buttons/TagFollowButton.esm.js +0 -33
- package/dist/components/Buttons/TagFollowButton.esm.js.map +0 -1
- package/dist/components/CommentSection/CommentList.esm.js +0 -47
- package/dist/components/CommentSection/CommentList.esm.js.map +0 -1
- package/dist/components/CommentSection/CommentSection.esm.js +0 -126
- package/dist/components/CommentSection/CommentSection.esm.js.map +0 -1
- package/dist/components/DeleteModal/DeleteModal.esm.js +0 -78
- package/dist/components/DeleteModal/DeleteModal.esm.js.map +0 -1
- package/dist/components/HomePageCards/ImpactCard.esm.js +0 -20
- package/dist/components/HomePageCards/ImpactCard.esm.js.map +0 -1
- package/dist/components/HomePageCards/QuestionsCard.esm.js +0 -21
- package/dist/components/HomePageCards/QuestionsCard.esm.js.map +0 -1
- package/dist/components/Links/Links.esm.js +0 -33
- package/dist/components/Links/Links.esm.js.map +0 -1
- package/dist/components/MarkdownEditor/MarkdownEditor.esm.js +0 -78
- package/dist/components/MarkdownEditor/MarkdownEditor.esm.js.map +0 -1
- package/dist/components/MarkdownRenderer/MarkdownRenderer.esm.js +0 -37
- package/dist/components/MarkdownRenderer/MarkdownRenderer.esm.js.map +0 -1
- package/dist/components/QetaPage/FollowedEntitiesList.esm.js +0 -43
- package/dist/components/QetaPage/FollowedEntitiesList.esm.js.map +0 -1
- package/dist/components/QetaPage/FollowedTagsList.esm.js +0 -56
- package/dist/components/QetaPage/FollowedTagsList.esm.js.map +0 -1
- package/dist/components/QuestionHighlightList/QuestionHighlightList.esm.js +0 -64
- package/dist/components/QuestionHighlightList/QuestionHighlightList.esm.js.map +0 -1
- package/dist/components/QuestionPage/AnswerCard.esm.js +0 -113
- package/dist/components/QuestionPage/AnswerCard.esm.js.map +0 -1
- package/dist/components/QuestionPage/AnswerForm.esm.js +0 -153
- package/dist/components/QuestionPage/AnswerForm.esm.js.map +0 -1
- package/dist/components/QuestionPage/AuthorBox.esm.js +0 -25
- package/dist/components/QuestionPage/AuthorBox.esm.js.map +0 -1
- package/dist/components/QuestionPage/EntityChip.esm.js +0 -27
- package/dist/components/QuestionPage/EntityChip.esm.js.map +0 -1
- package/dist/components/QuestionPage/FavoriteButton.esm.js +0 -45
- package/dist/components/QuestionPage/FavoriteButton.esm.js.map +0 -1
- package/dist/components/QuestionPage/LinkButton.esm.js +0 -28
- package/dist/components/QuestionPage/LinkButton.esm.js.map +0 -1
- package/dist/components/QuestionPage/QuestionCard.esm.js +0 -107
- package/dist/components/QuestionPage/QuestionCard.esm.js.map +0 -1
- package/dist/components/QuestionPage/TagsAndEntities.esm.js +0 -44
- package/dist/components/QuestionPage/TagsAndEntities.esm.js.map +0 -1
- package/dist/components/QuestionPage/VoteButtons.esm.js +0 -153
- package/dist/components/QuestionPage/VoteButtons.esm.js.map +0 -1
- package/dist/components/QuestionTableCard/QuestionTableRow.esm.js +0 -21
- package/dist/components/QuestionTableCard/QuestionTableRow.esm.js.map +0 -1
- package/dist/components/QuestionTableCard/QuestionsTable.esm.js +0 -130
- package/dist/components/QuestionTableCard/QuestionsTable.esm.js.map +0 -1
- package/dist/components/QuestionsContainer/DateRangeFilter.esm.js +0 -110
- package/dist/components/QuestionsContainer/DateRangeFilter.esm.js.map +0 -1
- package/dist/components/QuestionsContainer/FilterPanel.esm.js +0 -237
- package/dist/components/QuestionsContainer/FilterPanel.esm.js.map +0 -1
- package/dist/components/QuestionsContainer/NoQuestionsCard.esm.js +0 -47
- package/dist/components/QuestionsContainer/NoQuestionsCard.esm.js.map +0 -1
- package/dist/components/QuestionsContainer/QuestionList.esm.js +0 -103
- package/dist/components/QuestionsContainer/QuestionList.esm.js.map +0 -1
- package/dist/components/QuestionsContainer/QuestionListItem.esm.js +0 -123
- package/dist/components/QuestionsContainer/QuestionListItem.esm.js.map +0 -1
- package/dist/components/QuestionsContainer/QuestionsContainer.esm.js +0 -243
- package/dist/components/QuestionsContainer/QuestionsContainer.esm.js.map +0 -1
- package/dist/components/RelativeTimeWithTooltip/RelativeTimeWithTooltip.esm.js +0 -22
- package/dist/components/RelativeTimeWithTooltip/RelativeTimeWithTooltip.esm.js.map +0 -1
- package/dist/components/Statistics/StatsChart.esm.js +0 -60
- package/dist/components/Statistics/StatsChart.esm.js.map +0 -1
- package/dist/components/Statistics/SummaryStatsGrid.esm.js +0 -47
- package/dist/components/Statistics/SummaryStatsGrid.esm.js.map +0 -1
- package/dist/components/Statistics/TopRankingUsersCard.esm.js +0 -161
- package/dist/components/Statistics/TopRankingUsersCard.esm.js.map +0 -1
- package/dist/components/Statistics/TrophyIcon.esm.js +0 -19
- package/dist/components/Statistics/TrophyIcon.esm.js.map +0 -1
- package/dist/components/Statistics/styles.esm.js +0 -23
- package/dist/components/Statistics/styles.esm.js.map +0 -1
- package/dist/components/TagPage/TagsContainer.esm.js +0 -57
- package/dist/components/TagPage/TagsContainer.esm.js.map +0 -1
- package/dist/locale/fi.esm.js +0 -195
- package/dist/locale/fi.esm.js.map +0 -1
- package/dist/translation.esm.js +0 -359
- package/dist/translation.esm.js.map +0 -1
- package/dist/utils/hooks.esm.js +0 -430
- package/dist/utils/hooks.esm.js.map +0 -1
- package/dist/utils/utils.esm.js +0 -72
- package/dist/utils/utils.esm.js.map +0 -1
|
@@ -1,100 +0,0 @@
|
|
|
1
|
-
import { useStyles, useTranslation } from '../../utils/hooks.esm.js';
|
|
2
|
-
import { Progress, WarningPanel } from '@backstage/core-components';
|
|
3
|
-
import { Card, CardContent, Grid, Typography, Box, Divider, Tooltip, FormControl, Select, MenuItem } from '@material-ui/core';
|
|
4
|
-
import React, { useRef, useState, useEffect } from 'react';
|
|
5
|
-
import { Pagination } from '@material-ui/lab';
|
|
6
|
-
import { AnswerListItem } from './AnswerListItem.esm.js';
|
|
7
|
-
|
|
8
|
-
const AnswerList = (props) => {
|
|
9
|
-
const {
|
|
10
|
-
loading,
|
|
11
|
-
error,
|
|
12
|
-
response,
|
|
13
|
-
onPageChange,
|
|
14
|
-
entity,
|
|
15
|
-
page,
|
|
16
|
-
onPageSizeChange
|
|
17
|
-
} = props;
|
|
18
|
-
const styles = useStyles();
|
|
19
|
-
const listRef = useRef(null);
|
|
20
|
-
const [initialLoad, setInitialLoad] = useState(true);
|
|
21
|
-
const { t } = useTranslation();
|
|
22
|
-
useEffect(() => {
|
|
23
|
-
if (!initialLoad) {
|
|
24
|
-
setInitialLoad(false);
|
|
25
|
-
}
|
|
26
|
-
}, [initialLoad, loading]);
|
|
27
|
-
const handlePageChange = (_event, value) => {
|
|
28
|
-
if (listRef.current) {
|
|
29
|
-
listRef.current.scrollIntoView();
|
|
30
|
-
}
|
|
31
|
-
onPageChange(value);
|
|
32
|
-
};
|
|
33
|
-
const handlePageSizeChange = (event) => {
|
|
34
|
-
if (listRef.current) {
|
|
35
|
-
listRef.current.scrollIntoView();
|
|
36
|
-
}
|
|
37
|
-
onPageSizeChange(Number.parseInt(event.target.value, 10));
|
|
38
|
-
};
|
|
39
|
-
if (loading && initialLoad) {
|
|
40
|
-
return /* @__PURE__ */ React.createElement(Progress, null);
|
|
41
|
-
}
|
|
42
|
-
if (error || response === void 0) {
|
|
43
|
-
return /* @__PURE__ */ React.createElement(WarningPanel, { severity: "error", title: t("answerList.errorLoading") }, error?.message);
|
|
44
|
-
}
|
|
45
|
-
if (initialLoad && (!response.answers || response.answers.length === 0)) {
|
|
46
|
-
return /* @__PURE__ */ React.createElement(Card, { style: { marginTop: "2rem" } }, /* @__PURE__ */ React.createElement(CardContent, null, /* @__PURE__ */ React.createElement(
|
|
47
|
-
Grid,
|
|
48
|
-
{
|
|
49
|
-
container: true,
|
|
50
|
-
justifyContent: "center",
|
|
51
|
-
alignItems: "center",
|
|
52
|
-
direction: "column"
|
|
53
|
-
},
|
|
54
|
-
/* @__PURE__ */ React.createElement(Grid, { item: true }, /* @__PURE__ */ React.createElement(Typography, { variant: "h6" }, t("answerList.noAnswers")))
|
|
55
|
-
)));
|
|
56
|
-
}
|
|
57
|
-
const pageCount = response.total < props.pageSize ? 1 : Math.ceil(response.total / props.pageSize);
|
|
58
|
-
return /* @__PURE__ */ React.createElement("div", { ref: listRef }, /* @__PURE__ */ React.createElement(Box, { sx: { mt: 2 }, className: "qetaAnswerList" }, /* @__PURE__ */ React.createElement(Grid, { container: true, spacing: 2, className: "qetaAnswerListGrid" }, response.answers.map((answer) => {
|
|
59
|
-
return /* @__PURE__ */ React.createElement(Grid, { item: true, xs: 12, key: answer.id }, /* @__PURE__ */ React.createElement(AnswerListItem, { answer, entity }), /* @__PURE__ */ React.createElement(Divider, null));
|
|
60
|
-
})), /* @__PURE__ */ React.createElement(
|
|
61
|
-
Grid,
|
|
62
|
-
{
|
|
63
|
-
container: true,
|
|
64
|
-
spacing: 0,
|
|
65
|
-
className: `qetaAnswerListPaginationGrid ${styles.questionListPagination}`,
|
|
66
|
-
alignItems: "center",
|
|
67
|
-
justifyContent: "space-between"
|
|
68
|
-
},
|
|
69
|
-
/* @__PURE__ */ React.createElement(Tooltip, { title: t("answerList.limitSelect"), arrow: true }, /* @__PURE__ */ React.createElement(FormControl, { variant: "filled" }, /* @__PURE__ */ React.createElement(
|
|
70
|
-
Select,
|
|
71
|
-
{
|
|
72
|
-
value: props.pageSize,
|
|
73
|
-
onChange: handlePageSizeChange,
|
|
74
|
-
className: `qetaAnswerListPaginationSizeSelect ${styles.questionsPerPage}`,
|
|
75
|
-
inputProps: { className: styles.questionsPerPageInput }
|
|
76
|
-
},
|
|
77
|
-
/* @__PURE__ */ React.createElement(MenuItem, { value: 5 }, "5"),
|
|
78
|
-
/* @__PURE__ */ React.createElement(MenuItem, { value: 10 }, "10"),
|
|
79
|
-
/* @__PURE__ */ React.createElement(MenuItem, { value: 25 }, "25"),
|
|
80
|
-
/* @__PURE__ */ React.createElement(MenuItem, { value: 50 }, "50"),
|
|
81
|
-
/* @__PURE__ */ React.createElement(MenuItem, { value: 100 }, "100")
|
|
82
|
-
))),
|
|
83
|
-
/* @__PURE__ */ React.createElement(
|
|
84
|
-
Pagination,
|
|
85
|
-
{
|
|
86
|
-
page,
|
|
87
|
-
onChange: handlePageChange,
|
|
88
|
-
count: pageCount,
|
|
89
|
-
size: "large",
|
|
90
|
-
variant: "outlined",
|
|
91
|
-
className: "qetaAnswerListPagination",
|
|
92
|
-
showFirstButton: true,
|
|
93
|
-
showLastButton: true
|
|
94
|
-
}
|
|
95
|
-
)
|
|
96
|
-
)));
|
|
97
|
-
};
|
|
98
|
-
|
|
99
|
-
export { AnswerList };
|
|
100
|
-
//# sourceMappingURL=AnswerList.esm.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"AnswerList.esm.js","sources":["../../../src/components/AnswersContainer/AnswerList.tsx"],"sourcesContent":["import { useStyles, useTranslation } from '../../utils/hooks';\nimport { Progress, WarningPanel } from '@backstage/core-components';\nimport {\n Box,\n Card,\n CardContent,\n Divider,\n FormControl,\n Grid,\n MenuItem,\n Select,\n Tooltip,\n Typography,\n} from '@material-ui/core';\nimport React, { useEffect, useRef, useState } from 'react';\nimport { Pagination } from '@material-ui/lab';\nimport { AnswersResponse } from '@drodil/backstage-plugin-qeta-common';\nimport { AnswerListItem } from './AnswerListItem';\n\nexport const AnswerList = (props: {\n loading: boolean;\n error: any;\n response?: AnswersResponse;\n onPageChange: (page: number) => void;\n onPageSizeChange: (size: number) => void;\n page: number;\n pageSize: number;\n entity?: string;\n tags?: string[];\n entityPage?: boolean;\n}) => {\n const {\n loading,\n error,\n response,\n onPageChange,\n entity,\n page,\n onPageSizeChange,\n } = props;\n const styles = useStyles();\n const listRef = useRef<HTMLDivElement | null>(null);\n const [initialLoad, setInitialLoad] = useState(true);\n const { t } = useTranslation();\n\n useEffect(() => {\n if (!initialLoad) {\n setInitialLoad(false);\n }\n }, [initialLoad, loading]);\n\n const handlePageChange = (\n _event: React.ChangeEvent<unknown>,\n value: number,\n ) => {\n if (listRef.current) {\n listRef.current.scrollIntoView();\n }\n onPageChange(value);\n };\n\n const handlePageSizeChange = (\n event: React.ChangeEvent<{ value: unknown }>,\n ) => {\n if (listRef.current) {\n listRef.current.scrollIntoView();\n }\n onPageSizeChange(Number.parseInt(event.target.value as string, 10));\n };\n\n if (loading && initialLoad) {\n return <Progress />;\n }\n\n if (error || response === undefined) {\n return (\n <WarningPanel severity=\"error\" title={t('answerList.errorLoading')}>\n {error?.message}\n </WarningPanel>\n );\n }\n\n if (initialLoad && (!response.answers || response.answers.length === 0)) {\n return (\n <Card style={{ marginTop: '2rem' }}>\n <CardContent>\n <Grid\n container\n justifyContent=\"center\"\n alignItems=\"center\"\n direction=\"column\"\n >\n <Grid item>\n <Typography variant=\"h6\">{t('answerList.noAnswers')}</Typography>\n </Grid>\n </Grid>\n </CardContent>\n </Card>\n );\n }\n\n const pageCount =\n response.total < props.pageSize\n ? 1\n : Math.ceil(response.total / props.pageSize);\n\n return (\n <div ref={listRef}>\n <Box sx={{ mt: 2 }} className=\"qetaAnswerList\">\n <Grid container spacing={2} className=\"qetaAnswerListGrid\">\n {response.answers.map(answer => {\n return (\n <Grid item xs={12} key={answer.id}>\n <AnswerListItem answer={answer} entity={entity} />\n <Divider />\n </Grid>\n );\n })}\n </Grid>\n <Grid\n container\n spacing={0}\n className={`qetaAnswerListPaginationGrid ${styles.questionListPagination}`}\n alignItems=\"center\"\n justifyContent=\"space-between\"\n >\n <Tooltip title={t('answerList.limitSelect')} arrow>\n <FormControl variant=\"filled\">\n <Select\n value={props.pageSize}\n onChange={handlePageSizeChange}\n className={`qetaAnswerListPaginationSizeSelect ${styles.questionsPerPage}`}\n inputProps={{ className: styles.questionsPerPageInput }}\n >\n <MenuItem value={5}>5</MenuItem>\n <MenuItem value={10}>10</MenuItem>\n <MenuItem value={25}>25</MenuItem>\n <MenuItem value={50}>50</MenuItem>\n <MenuItem value={100}>100</MenuItem>\n </Select>\n </FormControl>\n </Tooltip>\n <Pagination\n page={page}\n onChange={handlePageChange}\n count={pageCount}\n size=\"large\"\n variant=\"outlined\"\n className=\"qetaAnswerListPagination\"\n showFirstButton\n showLastButton\n />\n </Grid>\n </Box>\n </div>\n );\n};\n"],"names":[],"mappings":"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"}
|
|
@@ -1,87 +0,0 @@
|
|
|
1
|
-
import { Card, CardContent, Box, Typography, Avatar } from '@material-ui/core';
|
|
2
|
-
import { Link } from '@backstage/core-components';
|
|
3
|
-
import React from 'react';
|
|
4
|
-
import DOMPurify from 'dompurify';
|
|
5
|
-
import { truncate, removeMarkdownFormatting } from '@drodil/backstage-plugin-qeta-common';
|
|
6
|
-
import { useRouteRef } from '@backstage/core-plugin-api';
|
|
7
|
-
import { questionRouteRef, userRouteRef } from '@drodil/backstage-plugin-qeta-react';
|
|
8
|
-
import { RelativeTimeWithTooltip } from '../RelativeTimeWithTooltip/RelativeTimeWithTooltip.esm.js';
|
|
9
|
-
import { useStyles, useEntityAuthor, useTranslation } from '../../utils/hooks.esm.js';
|
|
10
|
-
import { TagsAndEntities } from '../QuestionPage/TagsAndEntities.esm.js';
|
|
11
|
-
|
|
12
|
-
const AnswerListItem = (props) => {
|
|
13
|
-
const { answer, entity } = props;
|
|
14
|
-
const questionRoute = useRouteRef(questionRouteRef);
|
|
15
|
-
const userRoute = useRouteRef(userRouteRef);
|
|
16
|
-
const styles = useStyles();
|
|
17
|
-
const { name, initials, user } = useEntityAuthor(answer);
|
|
18
|
-
const { t } = useTranslation();
|
|
19
|
-
const getAnswerLink = () => {
|
|
20
|
-
return entity ? `${questionRoute({
|
|
21
|
-
id: answer.questionId.toString(10)
|
|
22
|
-
})}?entity=${entity}#answer_${answer.id}` : `${questionRoute({
|
|
23
|
-
id: answer.questionId.toString(10)
|
|
24
|
-
})}/#answer_${answer.id}`;
|
|
25
|
-
};
|
|
26
|
-
return /* @__PURE__ */ React.createElement(Card, { className: "qetaQuestionListItem" }, /* @__PURE__ */ React.createElement(CardContent, null, /* @__PURE__ */ React.createElement(Box, { className: styles.questionListItemStats }, /* @__PURE__ */ React.createElement(
|
|
27
|
-
Typography,
|
|
28
|
-
{
|
|
29
|
-
display: "block",
|
|
30
|
-
variant: "caption",
|
|
31
|
-
className: "qetaQuestionListItemScore"
|
|
32
|
-
},
|
|
33
|
-
t("common.score", { score: answer.score.toString(10) })
|
|
34
|
-
)), /* @__PURE__ */ React.createElement(Box, { className: styles.questionListItemContent }, /* @__PURE__ */ React.createElement(Typography, { variant: "h5", component: "div" }, /* @__PURE__ */ React.createElement(
|
|
35
|
-
Link,
|
|
36
|
-
{
|
|
37
|
-
to: getAnswerLink(),
|
|
38
|
-
className: "qetaAnswerListItemQuestionBtn"
|
|
39
|
-
},
|
|
40
|
-
t("answer.questionTitle", {
|
|
41
|
-
question: answer.question?.title ?? ""
|
|
42
|
-
})
|
|
43
|
-
)), /* @__PURE__ */ React.createElement(
|
|
44
|
-
Typography,
|
|
45
|
-
{
|
|
46
|
-
variant: "caption",
|
|
47
|
-
noWrap: true,
|
|
48
|
-
component: "div",
|
|
49
|
-
className: "qetaQuestionListItemContent",
|
|
50
|
-
style: { marginBottom: "5px" }
|
|
51
|
-
},
|
|
52
|
-
DOMPurify.sanitize(
|
|
53
|
-
truncate(removeMarkdownFormatting(answer.content), 150)
|
|
54
|
-
)
|
|
55
|
-
), answer.question && /* @__PURE__ */ React.createElement(TagsAndEntities, { question: answer.question }), /* @__PURE__ */ React.createElement(
|
|
56
|
-
Typography,
|
|
57
|
-
{
|
|
58
|
-
variant: "caption",
|
|
59
|
-
display: "inline",
|
|
60
|
-
className: `${styles.questionListItemAuthor} qetaAnswerListItemAuthor`
|
|
61
|
-
},
|
|
62
|
-
/* @__PURE__ */ React.createElement(
|
|
63
|
-
Avatar,
|
|
64
|
-
{
|
|
65
|
-
src: user?.spec?.profile?.picture,
|
|
66
|
-
className: styles.questionListItemAvatar,
|
|
67
|
-
alt: name,
|
|
68
|
-
variant: "rounded"
|
|
69
|
-
},
|
|
70
|
-
initials
|
|
71
|
-
),
|
|
72
|
-
answer.author === "anonymous" ? t("common.anonymousAuthor") : /* @__PURE__ */ React.createElement(Link, { to: `${userRoute()}/${answer.author}` }, name),
|
|
73
|
-
" ",
|
|
74
|
-
/* @__PURE__ */ React.createElement(
|
|
75
|
-
Link,
|
|
76
|
-
{
|
|
77
|
-
to: getAnswerLink(),
|
|
78
|
-
className: "qetaQuestionListItemQuestionBtn"
|
|
79
|
-
},
|
|
80
|
-
`${t("answer.answeredTime")} `,
|
|
81
|
-
/* @__PURE__ */ React.createElement(RelativeTimeWithTooltip, { value: answer.created })
|
|
82
|
-
)
|
|
83
|
-
))));
|
|
84
|
-
};
|
|
85
|
-
|
|
86
|
-
export { AnswerListItem };
|
|
87
|
-
//# sourceMappingURL=AnswerListItem.esm.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"AnswerListItem.esm.js","sources":["../../../src/components/AnswersContainer/AnswerListItem.tsx"],"sourcesContent":["import { Avatar, Box, Card, CardContent, Typography } from '@material-ui/core';\nimport { Link } from '@backstage/core-components';\nimport React from 'react';\nimport DOMPurify from 'dompurify';\nimport {\n AnswerResponse,\n removeMarkdownFormatting,\n truncate,\n} from '@drodil/backstage-plugin-qeta-common';\nimport { useRouteRef } from '@backstage/core-plugin-api';\nimport {\n questionRouteRef,\n userRouteRef,\n} from '@drodil/backstage-plugin-qeta-react';\nimport { RelativeTimeWithTooltip } from '../RelativeTimeWithTooltip/RelativeTimeWithTooltip';\nimport { useEntityAuthor, useStyles, useTranslation } from '../../utils/hooks';\nimport { TagsAndEntities } from '../QuestionPage/TagsAndEntities';\n\nexport interface AnswerListItemProps {\n answer: AnswerResponse;\n entity?: string;\n}\n\nexport const AnswerListItem = (props: AnswerListItemProps) => {\n const { answer, entity } = props;\n\n const questionRoute = useRouteRef(questionRouteRef);\n const userRoute = useRouteRef(userRouteRef);\n const styles = useStyles();\n const { name, initials, user } = useEntityAuthor(answer);\n const { t } = useTranslation();\n\n const getAnswerLink = () => {\n return entity\n ? `${questionRoute({\n id: answer.questionId.toString(10),\n })}?entity=${entity}#answer_${answer.id}`\n : `${questionRoute({\n id: answer.questionId.toString(10),\n })}/#answer_${answer.id}`;\n };\n\n return (\n <Card className=\"qetaQuestionListItem\">\n <CardContent>\n <Box className={styles.questionListItemStats}>\n <Typography\n display=\"block\"\n variant=\"caption\"\n className=\"qetaQuestionListItemScore\"\n >\n {t('common.score', { score: answer.score.toString(10) })}\n </Typography>\n </Box>\n <Box className={styles.questionListItemContent}>\n <Typography variant=\"h5\" component=\"div\">\n <Link\n to={getAnswerLink()}\n className=\"qetaAnswerListItemQuestionBtn\"\n >\n {t('answer.questionTitle', {\n question: answer.question?.title ?? '',\n })}\n </Link>\n </Typography>\n <Typography\n variant=\"caption\"\n noWrap\n component=\"div\"\n className=\"qetaQuestionListItemContent\"\n style={{ marginBottom: '5px' }}\n >\n {DOMPurify.sanitize(\n truncate(removeMarkdownFormatting(answer.content), 150),\n )}\n </Typography>\n {answer.question && <TagsAndEntities question={answer.question} />}\n <Typography\n variant=\"caption\"\n display=\"inline\"\n className={`${styles.questionListItemAuthor} qetaAnswerListItemAuthor`}\n >\n <Avatar\n src={user?.spec?.profile?.picture}\n className={styles.questionListItemAvatar}\n alt={name}\n variant=\"rounded\"\n >\n {initials}\n </Avatar>\n {answer.author === 'anonymous' ? (\n t('common.anonymousAuthor')\n ) : (\n <Link to={`${userRoute()}/${answer.author}`}>{name}</Link>\n )}{' '}\n <Link\n to={getAnswerLink()}\n className=\"qetaQuestionListItemQuestionBtn\"\n >\n {`${t('answer.answeredTime')} `}\n <RelativeTimeWithTooltip value={answer.created} />\n </Link>\n </Typography>\n </Box>\n </CardContent>\n </Card>\n );\n};\n"],"names":[],"mappings":";;;;;;;;;;;AAuBa,MAAA,cAAA,GAAiB,CAAC,KAA+B,KAAA;AAC5D,EAAM,MAAA,EAAE,MAAQ,EAAA,MAAA,EAAW,GAAA,KAAA,CAAA;AAE3B,EAAM,MAAA,aAAA,GAAgB,YAAY,gBAAgB,CAAA,CAAA;AAClD,EAAM,MAAA,SAAA,GAAY,YAAY,YAAY,CAAA,CAAA;AAC1C,EAAA,MAAM,SAAS,SAAU,EAAA,CAAA;AACzB,EAAA,MAAM,EAAE,IAAM,EAAA,QAAA,EAAU,IAAK,EAAA,GAAI,gBAAgB,MAAM,CAAA,CAAA;AACvD,EAAM,MAAA,EAAE,CAAE,EAAA,GAAI,cAAe,EAAA,CAAA;AAE7B,EAAA,MAAM,gBAAgB,MAAM;AAC1B,IAAO,OAAA,MAAA,GACH,GAAG,aAAc,CAAA;AAAA,MACf,EAAI,EAAA,MAAA,CAAO,UAAW,CAAA,QAAA,CAAS,EAAE,CAAA;AAAA,KAClC,CAAC,CAAW,QAAA,EAAA,MAAM,WAAW,MAAO,CAAA,EAAE,CACvC,CAAA,GAAA,CAAA,EAAG,aAAc,CAAA;AAAA,MACf,EAAI,EAAA,MAAA,CAAO,UAAW,CAAA,QAAA,CAAS,EAAE,CAAA;AAAA,KAClC,CAAC,CAAY,SAAA,EAAA,MAAA,CAAO,EAAE,CAAA,CAAA,CAAA;AAAA,GAC7B,CAAA;AAEA,EACE,uBAAA,KAAA,CAAA,aAAA,CAAC,IAAK,EAAA,EAAA,SAAA,EAAU,sBACd,EAAA,kBAAA,KAAA,CAAA,aAAA,CAAC,mCACE,KAAA,CAAA,aAAA,CAAA,GAAA,EAAA,EAAI,SAAW,EAAA,MAAA,CAAO,qBACrB,EAAA,kBAAA,KAAA,CAAA,aAAA;AAAA,IAAC,UAAA;AAAA,IAAA;AAAA,MACC,OAAQ,EAAA,OAAA;AAAA,MACR,OAAQ,EAAA,SAAA;AAAA,MACR,SAAU,EAAA,2BAAA;AAAA,KAAA;AAAA,IAET,CAAA,CAAE,gBAAgB,EAAE,KAAA,EAAO,OAAO,KAAM,CAAA,QAAA,CAAS,EAAE,CAAA,EAAG,CAAA;AAAA,GAE3D,CAAA,kBACC,KAAA,CAAA,aAAA,CAAA,GAAA,EAAA,EAAI,SAAW,EAAA,MAAA,CAAO,uBACrB,EAAA,kBAAA,KAAA,CAAA,aAAA,CAAC,UAAW,EAAA,EAAA,OAAA,EAAQ,IAAK,EAAA,SAAA,EAAU,KACjC,EAAA,kBAAA,KAAA,CAAA,aAAA;AAAA,IAAC,IAAA;AAAA,IAAA;AAAA,MACC,IAAI,aAAc,EAAA;AAAA,MAClB,SAAU,EAAA,+BAAA;AAAA,KAAA;AAAA,IAET,EAAE,sBAAwB,EAAA;AAAA,MACzB,QAAA,EAAU,MAAO,CAAA,QAAA,EAAU,KAAS,IAAA,EAAA;AAAA,KACrC,CAAA;AAAA,GAEL,CACA,kBAAA,KAAA,CAAA,aAAA;AAAA,IAAC,UAAA;AAAA,IAAA;AAAA,MACC,OAAQ,EAAA,SAAA;AAAA,MACR,MAAM,EAAA,IAAA;AAAA,MACN,SAAU,EAAA,KAAA;AAAA,MACV,SAAU,EAAA,6BAAA;AAAA,MACV,KAAA,EAAO,EAAE,YAAA,EAAc,KAAM,EAAA;AAAA,KAAA;AAAA,IAE5B,SAAU,CAAA,QAAA;AAAA,MACT,QAAS,CAAA,wBAAA,CAAyB,MAAO,CAAA,OAAO,GAAG,GAAG,CAAA;AAAA,KACxD;AAAA,GACF,EACC,OAAO,QAAY,oBAAA,KAAA,CAAA,aAAA,CAAC,mBAAgB,QAAU,EAAA,MAAA,CAAO,UAAU,CAChE,kBAAA,KAAA,CAAA,aAAA;AAAA,IAAC,UAAA;AAAA,IAAA;AAAA,MACC,OAAQ,EAAA,SAAA;AAAA,MACR,OAAQ,EAAA,QAAA;AAAA,MACR,SAAA,EAAW,CAAG,EAAA,MAAA,CAAO,sBAAsB,CAAA,yBAAA,CAAA;AAAA,KAAA;AAAA,oBAE3C,KAAA,CAAA,aAAA;AAAA,MAAC,MAAA;AAAA,MAAA;AAAA,QACC,GAAA,EAAK,IAAM,EAAA,IAAA,EAAM,OAAS,EAAA,OAAA;AAAA,QAC1B,WAAW,MAAO,CAAA,sBAAA;AAAA,QAClB,GAAK,EAAA,IAAA;AAAA,QACL,OAAQ,EAAA,SAAA;AAAA,OAAA;AAAA,MAEP,QAAA;AAAA,KACH;AAAA,IACC,OAAO,MAAW,KAAA,WAAA,GACjB,CAAE,CAAA,wBAAwB,oBAEzB,KAAA,CAAA,aAAA,CAAA,IAAA,EAAA,EAAK,EAAI,EAAA,CAAA,EAAG,WAAW,CAAA,CAAA,EAAI,MAAO,CAAA,MAAM,MAAK,IAAK,CAAA;AAAA,IAClD,GAAA;AAAA,oBACH,KAAA,CAAA,aAAA;AAAA,MAAC,IAAA;AAAA,MAAA;AAAA,QACC,IAAI,aAAc,EAAA;AAAA,QAClB,SAAU,EAAA,iCAAA;AAAA,OAAA;AAAA,MAET,CAAA,EAAG,CAAE,CAAA,qBAAqB,CAAC,CAAA,CAAA,CAAA;AAAA,sBAC3B,KAAA,CAAA,aAAA,CAAA,uBAAA,EAAA,EAAwB,KAAO,EAAA,MAAA,CAAO,OAAS,EAAA,CAAA;AAAA,KAClD;AAAA,GAEJ,CACF,CACF,CAAA,CAAA;AAEJ;;;;"}
|
|
@@ -1,210 +0,0 @@
|
|
|
1
|
-
import { useTranslation, useQetaApi } from '../../utils/hooks.esm.js';
|
|
2
|
-
import { Box, Typography, Grid, TextField, Button, Collapse } from '@material-ui/core';
|
|
3
|
-
import React, { useEffect } from 'react';
|
|
4
|
-
import useDebounce from 'react-use/lib/useDebounce';
|
|
5
|
-
import FilterList from '@material-ui/icons/FilterList';
|
|
6
|
-
import { useSearchParams } from 'react-router-dom';
|
|
7
|
-
import { EntityRefLink } from '@backstage/plugin-catalog-react';
|
|
8
|
-
import { useAnalytics } from '@backstage/core-plugin-api';
|
|
9
|
-
import { filterTags } from '@drodil/backstage-plugin-qeta-common';
|
|
10
|
-
import { getFiltersWithDateRange } from '../../utils/utils.esm.js';
|
|
11
|
-
import { filterKeys, FilterPanel } from '../QuestionsContainer/FilterPanel.esm.js';
|
|
12
|
-
import { AnswerList } from './AnswerList.esm.js';
|
|
13
|
-
|
|
14
|
-
const AnswersContainer = (props) => {
|
|
15
|
-
const { tags, author, entity, showFilters, showTitle, title } = props;
|
|
16
|
-
const analytics = useAnalytics();
|
|
17
|
-
const [page, setPage] = React.useState(1);
|
|
18
|
-
const [answersPerPage, setAnswersPerPage] = React.useState(10);
|
|
19
|
-
const [showFilterPanel, setShowFilterPanel] = React.useState(false);
|
|
20
|
-
const [searchParams, setSearchParams] = useSearchParams();
|
|
21
|
-
const [searchQuery, setSearchQuery] = React.useState("");
|
|
22
|
-
const [filters, setFilters] = React.useState({
|
|
23
|
-
order: "desc",
|
|
24
|
-
orderBy: "created",
|
|
25
|
-
searchQuery: "",
|
|
26
|
-
dateRange: "",
|
|
27
|
-
noCorrectAnswer: "false",
|
|
28
|
-
entity: entity ?? "",
|
|
29
|
-
tags: tags ?? [],
|
|
30
|
-
noVotes: "false"
|
|
31
|
-
});
|
|
32
|
-
const { t } = useTranslation();
|
|
33
|
-
const onPageChange = (value) => {
|
|
34
|
-
setPage(value);
|
|
35
|
-
setSearchParams((prev) => {
|
|
36
|
-
const newValue = prev;
|
|
37
|
-
newValue.set("page", String(value));
|
|
38
|
-
return newValue;
|
|
39
|
-
});
|
|
40
|
-
};
|
|
41
|
-
const onFilterChange = (key, value) => {
|
|
42
|
-
if (filters[key] === value) {
|
|
43
|
-
return;
|
|
44
|
-
}
|
|
45
|
-
setPage(1);
|
|
46
|
-
setFilters({ ...filters, ...{ [key]: value } });
|
|
47
|
-
setSearchParams((prev) => {
|
|
48
|
-
const newValue = prev;
|
|
49
|
-
if (!value || value === "false") {
|
|
50
|
-
newValue.delete(key);
|
|
51
|
-
} else if (Array.isArray(value)) {
|
|
52
|
-
if (value.length === 0) {
|
|
53
|
-
newValue.delete(key);
|
|
54
|
-
} else {
|
|
55
|
-
newValue.set(key, value.join(","));
|
|
56
|
-
}
|
|
57
|
-
} else if (value.length > 0) {
|
|
58
|
-
newValue.set(key, value);
|
|
59
|
-
} else {
|
|
60
|
-
newValue.delete(key);
|
|
61
|
-
}
|
|
62
|
-
return newValue;
|
|
63
|
-
});
|
|
64
|
-
};
|
|
65
|
-
const onSearchQueryChange = (event) => {
|
|
66
|
-
onPageChange(1);
|
|
67
|
-
if (event.target.value) {
|
|
68
|
-
analytics.captureEvent("qeta_search", event.target.value);
|
|
69
|
-
}
|
|
70
|
-
setSearchQuery(event.target.value);
|
|
71
|
-
};
|
|
72
|
-
useDebounce(
|
|
73
|
-
() => {
|
|
74
|
-
if (filters.searchQuery !== searchQuery) {
|
|
75
|
-
setFilters({ ...filters, searchQuery });
|
|
76
|
-
}
|
|
77
|
-
},
|
|
78
|
-
400,
|
|
79
|
-
[searchQuery]
|
|
80
|
-
);
|
|
81
|
-
useEffect(() => {
|
|
82
|
-
let filtersApplied = false;
|
|
83
|
-
searchParams.forEach((value, key) => {
|
|
84
|
-
try {
|
|
85
|
-
if (key === "page") {
|
|
86
|
-
const pv = Number.parseInt(value, 10);
|
|
87
|
-
if (pv > 0) {
|
|
88
|
-
setPage(pv);
|
|
89
|
-
} else {
|
|
90
|
-
setPage(1);
|
|
91
|
-
}
|
|
92
|
-
} else if (key === "answersPerPage") {
|
|
93
|
-
const qpp = Number.parseInt(value, 10);
|
|
94
|
-
if (qpp > 0) setAnswersPerPage(qpp);
|
|
95
|
-
} else if (filterKeys.includes(key)) {
|
|
96
|
-
filtersApplied = true;
|
|
97
|
-
if (key === "tags") {
|
|
98
|
-
filters.tags = filterTags(value) ?? [];
|
|
99
|
-
} else {
|
|
100
|
-
filters[key] = value;
|
|
101
|
-
}
|
|
102
|
-
}
|
|
103
|
-
} catch (_e) {
|
|
104
|
-
}
|
|
105
|
-
});
|
|
106
|
-
setFilters(filters);
|
|
107
|
-
if (filtersApplied) {
|
|
108
|
-
setShowFilterPanel(true);
|
|
109
|
-
}
|
|
110
|
-
}, [searchParams, filters]);
|
|
111
|
-
const {
|
|
112
|
-
value: response,
|
|
113
|
-
loading,
|
|
114
|
-
error
|
|
115
|
-
} = useQetaApi(
|
|
116
|
-
(api) => {
|
|
117
|
-
return api.getAnswers({
|
|
118
|
-
limit: answersPerPage,
|
|
119
|
-
offset: (page - 1) * answersPerPage,
|
|
120
|
-
author,
|
|
121
|
-
...getFiltersWithDateRange(filters)
|
|
122
|
-
});
|
|
123
|
-
},
|
|
124
|
-
[page, filters, answersPerPage]
|
|
125
|
-
);
|
|
126
|
-
const onPageSizeChange = (value) => {
|
|
127
|
-
if (response) {
|
|
128
|
-
let newPage = page;
|
|
129
|
-
while (newPage * value > response.total) {
|
|
130
|
-
newPage -= 1;
|
|
131
|
-
}
|
|
132
|
-
onPageChange(Math.max(1, newPage));
|
|
133
|
-
}
|
|
134
|
-
setAnswersPerPage(value);
|
|
135
|
-
setSearchParams((prev) => {
|
|
136
|
-
const newValue = prev;
|
|
137
|
-
newValue.set("answersPerPage", String(value));
|
|
138
|
-
return newValue;
|
|
139
|
-
});
|
|
140
|
-
};
|
|
141
|
-
let shownTitle = title;
|
|
142
|
-
let link = void 0;
|
|
143
|
-
if (author) {
|
|
144
|
-
shownTitle = `${t("answerContainer.title.answersBy")} `;
|
|
145
|
-
link = /* @__PURE__ */ React.createElement(EntityRefLink, { entityRef: author, hideIcon: true, defaultKind: "user" });
|
|
146
|
-
} else if (entity) {
|
|
147
|
-
shownTitle = `${t("answerContainer.title.answersAbout")} `;
|
|
148
|
-
link = /* @__PURE__ */ React.createElement(EntityRefLink, { entityRef: entity });
|
|
149
|
-
} else if (tags) {
|
|
150
|
-
shownTitle = t("answerContainer.title.answersTagged", {
|
|
151
|
-
tags: tags.join(", ")
|
|
152
|
-
});
|
|
153
|
-
}
|
|
154
|
-
return /* @__PURE__ */ React.createElement(Box, { className: "qetaAnswersContainer" }, showTitle && /* @__PURE__ */ React.createElement(
|
|
155
|
-
Typography,
|
|
156
|
-
{
|
|
157
|
-
variant: "h5",
|
|
158
|
-
className: "qetaAnswersContainerTitle",
|
|
159
|
-
style: { marginBottom: "1.5rem" }
|
|
160
|
-
},
|
|
161
|
-
shownTitle,
|
|
162
|
-
" ",
|
|
163
|
-
link
|
|
164
|
-
), /* @__PURE__ */ React.createElement(Grid, { container: true, justifyContent: "space-between" }, /* @__PURE__ */ React.createElement(Grid, { item: true, xs: 12, md: 4 }, /* @__PURE__ */ React.createElement(
|
|
165
|
-
TextField,
|
|
166
|
-
{
|
|
167
|
-
id: "search-bar",
|
|
168
|
-
fullWidth: true,
|
|
169
|
-
onChange: onSearchQueryChange,
|
|
170
|
-
label: t("answerContainer.search.label"),
|
|
171
|
-
className: "qetaAnswersContainerSearchInput",
|
|
172
|
-
variant: "outlined",
|
|
173
|
-
placeholder: t("answerContainer.search.placeholder"),
|
|
174
|
-
size: "small",
|
|
175
|
-
style: { marginBottom: "5px" }
|
|
176
|
-
}
|
|
177
|
-
))), /* @__PURE__ */ React.createElement(Grid, { container: true, justifyContent: "space-between" }, /* @__PURE__ */ React.createElement(Grid, { item: true }, /* @__PURE__ */ React.createElement(Typography, { variant: "h6", className: "qetaAnswersContainerAnswerCount" }, t("common.answers", { count: response?.total ?? 0 }))), (showFilters ?? true) && /* @__PURE__ */ React.createElement(Grid, { item: true }, /* @__PURE__ */ React.createElement(
|
|
178
|
-
Button,
|
|
179
|
-
{
|
|
180
|
-
onClick: () => setShowFilterPanel(!showFilterPanel),
|
|
181
|
-
className: "qetaAnswerContainerFilterPanelBtn",
|
|
182
|
-
startIcon: /* @__PURE__ */ React.createElement(FilterList, null)
|
|
183
|
-
},
|
|
184
|
-
t("filterPanel.filterButton")
|
|
185
|
-
))), (showFilters ?? true) && /* @__PURE__ */ React.createElement(Collapse, { in: showFilterPanel }, /* @__PURE__ */ React.createElement(
|
|
186
|
-
FilterPanel,
|
|
187
|
-
{
|
|
188
|
-
onChange: onFilterChange,
|
|
189
|
-
filters,
|
|
190
|
-
answerFilters: true
|
|
191
|
-
}
|
|
192
|
-
)), /* @__PURE__ */ React.createElement(
|
|
193
|
-
AnswerList,
|
|
194
|
-
{
|
|
195
|
-
loading,
|
|
196
|
-
error,
|
|
197
|
-
response,
|
|
198
|
-
onPageChange,
|
|
199
|
-
onPageSizeChange,
|
|
200
|
-
entity,
|
|
201
|
-
page,
|
|
202
|
-
pageSize: answersPerPage,
|
|
203
|
-
entityPage: entity !== void 0,
|
|
204
|
-
tags
|
|
205
|
-
}
|
|
206
|
-
));
|
|
207
|
-
};
|
|
208
|
-
|
|
209
|
-
export { AnswersContainer };
|
|
210
|
-
//# sourceMappingURL=AnswersContainer.esm.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"AnswersContainer.esm.js","sources":["../../../src/components/AnswersContainer/AnswersContainer.tsx"],"sourcesContent":["import { useQetaApi, useTranslation } from '../../utils/hooks';\nimport {\n Box,\n Button,\n Collapse,\n Grid,\n TextField,\n Typography,\n} from '@material-ui/core';\n\nimport React, { useEffect } from 'react';\nimport useDebounce from 'react-use/lib/useDebounce';\nimport FilterList from '@material-ui/icons/FilterList';\nimport { useSearchParams } from 'react-router-dom';\nimport { EntityRefLink } from '@backstage/plugin-catalog-react';\nimport { useAnalytics } from '@backstage/core-plugin-api';\nimport { filterTags } from '@drodil/backstage-plugin-qeta-common';\nimport { getFiltersWithDateRange } from '../../utils/utils';\nimport {\n FilterKey,\n filterKeys,\n FilterPanel,\n Filters,\n} from '../QuestionsContainer/FilterPanel';\nimport { AnswerList } from './AnswerList';\n\nexport interface AnswersContainerProps {\n tags?: string[];\n author?: string;\n entity?: string;\n showFilters?: boolean;\n showTitle?: boolean;\n title?: string;\n}\n\nexport const AnswersContainer = (props: AnswersContainerProps) => {\n const { tags, author, entity, showFilters, showTitle, title } = props;\n const analytics = useAnalytics();\n const [page, setPage] = React.useState(1);\n const [answersPerPage, setAnswersPerPage] = React.useState(10);\n const [showFilterPanel, setShowFilterPanel] = React.useState(false);\n const [searchParams, setSearchParams] = useSearchParams();\n const [searchQuery, setSearchQuery] = React.useState('');\n const [filters, setFilters] = React.useState<Filters>({\n order: 'desc',\n orderBy: 'created',\n searchQuery: '',\n dateRange: '',\n noCorrectAnswer: 'false',\n entity: entity ?? '',\n tags: tags ?? [],\n noVotes: 'false',\n });\n const { t } = useTranslation();\n\n const onPageChange = (value: number) => {\n setPage(value);\n setSearchParams(prev => {\n const newValue = prev;\n newValue.set('page', String(value));\n return newValue;\n });\n };\n\n const onFilterChange = (key: FilterKey, value: string | string[]) => {\n if (filters[key] === value) {\n return;\n }\n\n setPage(1);\n setFilters({ ...filters, ...{ [key]: value } });\n setSearchParams(prev => {\n const newValue = prev;\n if (!value || value === 'false') {\n newValue.delete(key);\n } else if (Array.isArray(value)) {\n if (value.length === 0) {\n newValue.delete(key);\n } else {\n newValue.set(key, value.join(','));\n }\n } else if (value.length > 0) {\n newValue.set(key, value);\n } else {\n newValue.delete(key);\n }\n return newValue;\n });\n };\n\n const onSearchQueryChange = (event: React.ChangeEvent<HTMLInputElement>) => {\n onPageChange(1);\n if (event.target.value) {\n analytics.captureEvent('qeta_search', event.target.value);\n }\n setSearchQuery(event.target.value);\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 let filtersApplied = false;\n searchParams.forEach((value, key) => {\n try {\n if (key === 'page') {\n const pv = Number.parseInt(value, 10);\n if (pv > 0) {\n setPage(pv);\n } else {\n setPage(1);\n }\n } else if (key === 'answersPerPage') {\n const qpp = Number.parseInt(value, 10);\n if (qpp > 0) setAnswersPerPage(qpp);\n } else if (filterKeys.includes(key as FilterKey)) {\n filtersApplied = true;\n if (key === 'tags') {\n filters.tags = filterTags(value) ?? [];\n } else {\n (filters as any)[key] = value;\n }\n }\n } catch (_e) {\n // NOOP\n }\n });\n setFilters(filters);\n if (filtersApplied) {\n setShowFilterPanel(true);\n }\n }, [searchParams, filters]);\n\n const {\n value: response,\n loading,\n error,\n } = useQetaApi(\n api => {\n return api.getAnswers({\n limit: answersPerPage,\n offset: (page - 1) * answersPerPage,\n author,\n ...getFiltersWithDateRange(filters),\n });\n },\n [page, filters, answersPerPage],\n );\n\n const onPageSizeChange = (value: number) => {\n if (response) {\n let newPage = page;\n while (newPage * value > response.total) {\n newPage -= 1;\n }\n onPageChange(Math.max(1, newPage));\n }\n setAnswersPerPage(value);\n setSearchParams(prev => {\n const newValue = prev;\n newValue.set('answersPerPage', String(value));\n return newValue;\n });\n };\n\n let shownTitle = title;\n let link = undefined;\n if (author) {\n shownTitle = `${t('answerContainer.title.answersBy')} `;\n link = <EntityRefLink entityRef={author} hideIcon defaultKind=\"user\" />;\n } else if (entity) {\n shownTitle = `${t('answerContainer.title.answersAbout')} `;\n link = <EntityRefLink entityRef={entity} />;\n } else if (tags) {\n shownTitle = t('answerContainer.title.answersTagged', {\n tags: tags.join(', '),\n });\n }\n\n return (\n <Box className=\"qetaAnswersContainer\">\n {showTitle && (\n <Typography\n variant=\"h5\"\n className=\"qetaAnswersContainerTitle\"\n style={{ marginBottom: '1.5rem' }}\n >\n {shownTitle} {link}\n </Typography>\n )}\n <Grid container justifyContent=\"space-between\">\n <Grid item xs={12} md={4}>\n <TextField\n id=\"search-bar\"\n fullWidth\n onChange={onSearchQueryChange}\n label={t('answerContainer.search.label')}\n className=\"qetaAnswersContainerSearchInput\"\n variant=\"outlined\"\n placeholder={t('answerContainer.search.placeholder')}\n size=\"small\"\n style={{ marginBottom: '5px' }}\n />\n </Grid>\n </Grid>\n <Grid container justifyContent=\"space-between\">\n <Grid item>\n <Typography variant=\"h6\" className=\"qetaAnswersContainerAnswerCount\">\n {t('common.answers', { count: response?.total ?? 0 })}\n </Typography>\n </Grid>\n {(showFilters ?? true) && (\n <Grid item>\n <Button\n onClick={() => setShowFilterPanel(!showFilterPanel)}\n className=\"qetaAnswerContainerFilterPanelBtn\"\n startIcon={<FilterList />}\n >\n {t('filterPanel.filterButton')}\n </Button>\n </Grid>\n )}\n </Grid>\n {(showFilters ?? true) && (\n <Collapse in={showFilterPanel}>\n <FilterPanel\n onChange={onFilterChange}\n filters={filters}\n answerFilters\n />\n </Collapse>\n )}\n\n <AnswerList\n loading={loading}\n error={error}\n response={response}\n onPageChange={onPageChange}\n onPageSizeChange={onPageSizeChange}\n entity={entity}\n page={page}\n pageSize={answersPerPage}\n entityPage={entity !== undefined}\n tags={tags}\n />\n </Box>\n );\n};\n"],"names":[],"mappings":"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"}
|
|
@@ -1,34 +0,0 @@
|
|
|
1
|
-
import { Controller } from 'react-hook-form';
|
|
2
|
-
import { Box, FormControlLabel, Tooltip, Checkbox } from '@material-ui/core';
|
|
3
|
-
import React from 'react';
|
|
4
|
-
import { useTranslation } from '../../utils/hooks.esm.js';
|
|
5
|
-
|
|
6
|
-
const AskAnonymouslyCheckbox = (props) => {
|
|
7
|
-
const { control, label } = props;
|
|
8
|
-
const { t } = useTranslation();
|
|
9
|
-
return /* @__PURE__ */ React.createElement(Box, { style: { marginLeft: "0.2rem" } }, /* @__PURE__ */ React.createElement(
|
|
10
|
-
Controller,
|
|
11
|
-
{
|
|
12
|
-
control,
|
|
13
|
-
render: ({ field: { onChange, value } }) => /* @__PURE__ */ React.createElement(
|
|
14
|
-
FormControlLabel,
|
|
15
|
-
{
|
|
16
|
-
control: /* @__PURE__ */ React.createElement(Tooltip, { title: t("anonymousCheckbox.tooltip") }, /* @__PURE__ */ React.createElement(
|
|
17
|
-
Checkbox,
|
|
18
|
-
{
|
|
19
|
-
onChange,
|
|
20
|
-
value,
|
|
21
|
-
size: "small",
|
|
22
|
-
name: "anonymous"
|
|
23
|
-
}
|
|
24
|
-
)),
|
|
25
|
-
label
|
|
26
|
-
}
|
|
27
|
-
),
|
|
28
|
-
name: "anonymous"
|
|
29
|
-
}
|
|
30
|
-
));
|
|
31
|
-
};
|
|
32
|
-
|
|
33
|
-
export { AskAnonymouslyCheckbox };
|
|
34
|
-
//# sourceMappingURL=AskAnonymouslyCheckbox.esm.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"AskAnonymouslyCheckbox.esm.js","sources":["../../../src/components/AskAnonymouslyCheckbox/AskAnonymouslyCheckbox.tsx"],"sourcesContent":["import { Control, Controller } from 'react-hook-form';\nimport { Box, Checkbox, FormControlLabel, Tooltip } from '@material-ui/core';\nimport React from 'react';\nimport { useTranslation } from '../../utils/hooks';\n\nexport const AskAnonymouslyCheckbox = (props: {\n control: Control<any>;\n label: string;\n}) => {\n const { control, label } = props;\n const { t } = useTranslation();\n return (\n <Box style={{ marginLeft: '0.2rem' }}>\n <Controller\n control={control}\n render={({ field: { onChange, value } }) => (\n <FormControlLabel\n control={\n <Tooltip title={t('anonymousCheckbox.tooltip')}>\n <Checkbox\n onChange={onChange}\n value={value}\n size=\"small\"\n name=\"anonymous\"\n />\n </Tooltip>\n }\n label={label}\n />\n )}\n name=\"anonymous\"\n />\n </Box>\n );\n};\n"],"names":[],"mappings":";;;;;AAKa,MAAA,sBAAA,GAAyB,CAAC,KAGjC,KAAA;AACJ,EAAM,MAAA,EAAE,OAAS,EAAA,KAAA,EAAU,GAAA,KAAA,CAAA;AAC3B,EAAM,MAAA,EAAE,CAAE,EAAA,GAAI,cAAe,EAAA,CAAA;AAC7B,EAAA,2CACG,GAAI,EAAA,EAAA,KAAA,EAAO,EAAE,UAAA,EAAY,UACxB,EAAA,kBAAA,KAAA,CAAA,aAAA;AAAA,IAAC,UAAA;AAAA,IAAA;AAAA,MACC,OAAA;AAAA,MACA,MAAA,EAAQ,CAAC,EAAE,KAAA,EAAO,EAAE,QAAU,EAAA,KAAA,IAC5B,qBAAA,KAAA,CAAA,aAAA;AAAA,QAAC,gBAAA;AAAA,QAAA;AAAA,UACC,yBACG,KAAA,CAAA,aAAA,CAAA,OAAA,EAAA,EAAQ,KAAO,EAAA,CAAA,CAAE,2BAA2B,CAC3C,EAAA,kBAAA,KAAA,CAAA,aAAA;AAAA,YAAC,QAAA;AAAA,YAAA;AAAA,cACC,QAAA;AAAA,cACA,KAAA;AAAA,cACA,IAAK,EAAA,OAAA;AAAA,cACL,IAAK,EAAA,WAAA;AAAA,aAAA;AAAA,WAET,CAAA;AAAA,UAEF,KAAA;AAAA,SAAA;AAAA,OACF;AAAA,MAEF,IAAK,EAAA,WAAA;AAAA,KAAA;AAAA,GAET,CAAA,CAAA;AAEJ;;;;"}
|