@drodil/backstage-plugin-qeta 3.14.0 → 3.15.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.
- package/dist/components/EntityPage/EntityPage.esm.js +7 -1
- package/dist/components/EntityPage/EntityPage.esm.js.map +1 -1
- package/dist/components/QetaPage/QetaPage.esm.js +2 -3
- package/dist/components/QetaPage/QetaPage.esm.js.map +1 -1
- package/dist/components/TagPage/TagPage.esm.js +7 -1
- package/dist/components/TagPage/TagPage.esm.js.map +1 -1
- package/dist/components/UserPage/UserPage.esm.js +10 -3
- package/dist/components/UserPage/UserPage.esm.js.map +1 -1
- package/package.json +3 -3
|
@@ -38,7 +38,13 @@ const EntityPage = () => {
|
|
|
38
38
|
), resp && /* @__PURE__ */ React.createElement(Card, { variant: "outlined", style: { marginBottom: "1em" } }, /* @__PURE__ */ React.createElement(CardContent, null, /* @__PURE__ */ React.createElement(Typography, { variant: "caption" }, t("common.posts", {
|
|
39
39
|
count: resp.postsCount,
|
|
40
40
|
itemType: "post"
|
|
41
|
-
}), " \xB7 ", t("common.followers", { count: resp.followerCount })))), entityRef ? /* @__PURE__ */ React.createElement(
|
|
41
|
+
}), " \xB7 ", t("common.followers", { count: resp.followerCount })))), entityRef ? /* @__PURE__ */ React.createElement(
|
|
42
|
+
PostsContainer,
|
|
43
|
+
{
|
|
44
|
+
entity: entityRef,
|
|
45
|
+
filterPanelProps: { showEntityFilter: false }
|
|
46
|
+
}
|
|
47
|
+
) : /* @__PURE__ */ React.createElement(EntitiesGrid, null)), /* @__PURE__ */ React.createElement(Grid, { item: true, lg: 4, xl: 3 }, /* @__PURE__ */ React.createElement(FollowedEntitiesList, null), resp && /* @__PURE__ */ React.createElement(React.Fragment, null, /* @__PURE__ */ React.createElement(
|
|
42
48
|
PostHighlightList,
|
|
43
49
|
{
|
|
44
50
|
type: "hot",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EntityPage.esm.js","sources":["../../../src/components/EntityPage/EntityPage.tsx"],"sourcesContent":["import React, { useEffect } from 'react';\nimport { ContentHeader } from '@backstage/core-components';\nimport { useParams } from 'react-router-dom';\nimport {\n AskQuestionButton,\n ButtonContainer,\n EntitiesGrid,\n EntityFollowButton,\n FollowedEntitiesList,\n PostHighlightList,\n PostsContainer,\n qetaApiRef,\n useTranslation,\n WriteArticleButton,\n} from '@drodil/backstage-plugin-qeta-react';\nimport Whatshot from '@material-ui/icons/Whatshot';\nimport { useApi } from '@backstage/core-plugin-api';\nimport { EntityResponse } from '@drodil/backstage-plugin-qeta-common';\nimport { EntityRefLink } from '@backstage/plugin-catalog-react';\nimport { Card, CardContent, Grid, Typography } from '@material-ui/core';\n\nexport const EntityPage = () => {\n const { entityRef } = useParams();\n const { t } = useTranslation();\n const [resp, setResp] = React.useState<undefined | EntityResponse>();\n\n const qetaApi = useApi(qetaApiRef);\n\n useEffect(() => {\n if (!entityRef) {\n setResp(undefined);\n return;\n }\n\n qetaApi.getEntity(entityRef).then(res => {\n if (res) {\n setResp(res);\n }\n });\n }, [qetaApi, entityRef]);\n\n let shownTitle: string = t('entitiesPage.defaultTitle');\n let link = undefined;\n if (entityRef) {\n shownTitle = t(`postsContainer.title.about`, { itemType: 'Post' });\n link = <EntityRefLink entityRef={entityRef} />;\n }\n\n return (\n <Grid container spacing={4}>\n <Grid item md={12} lg={8} xl={9}>\n <ContentHeader\n titleComponent={\n <Typography variant=\"h5\" component=\"h2\">\n {shownTitle} {link}\n </Typography>\n }\n >\n <ButtonContainer>\n {entityRef && <EntityFollowButton entityRef={entityRef} />}\n <AskQuestionButton entity={entityRef} />\n <WriteArticleButton entity={entityRef} />\n </ButtonContainer>\n </ContentHeader>\n {resp && (\n <Card variant=\"outlined\" style={{ marginBottom: '1em' }}>\n <CardContent>\n <Typography variant=\"caption\">\n {t('common.posts', {\n count: resp.postsCount,\n itemType: 'post',\n })}\n {' · '}\n {t('common.followers', { count: resp.followerCount })}\n </Typography>\n </CardContent>\n </Card>\n )}\n {entityRef ? <PostsContainer
|
|
1
|
+
{"version":3,"file":"EntityPage.esm.js","sources":["../../../src/components/EntityPage/EntityPage.tsx"],"sourcesContent":["import React, { useEffect } from 'react';\nimport { ContentHeader } from '@backstage/core-components';\nimport { useParams } from 'react-router-dom';\nimport {\n AskQuestionButton,\n ButtonContainer,\n EntitiesGrid,\n EntityFollowButton,\n FollowedEntitiesList,\n PostHighlightList,\n PostsContainer,\n qetaApiRef,\n useTranslation,\n WriteArticleButton,\n} from '@drodil/backstage-plugin-qeta-react';\nimport Whatshot from '@material-ui/icons/Whatshot';\nimport { useApi } from '@backstage/core-plugin-api';\nimport { EntityResponse } from '@drodil/backstage-plugin-qeta-common';\nimport { EntityRefLink } from '@backstage/plugin-catalog-react';\nimport { Card, CardContent, Grid, Typography } from '@material-ui/core';\n\nexport const EntityPage = () => {\n const { entityRef } = useParams();\n const { t } = useTranslation();\n const [resp, setResp] = React.useState<undefined | EntityResponse>();\n\n const qetaApi = useApi(qetaApiRef);\n\n useEffect(() => {\n if (!entityRef) {\n setResp(undefined);\n return;\n }\n\n qetaApi.getEntity(entityRef).then(res => {\n if (res) {\n setResp(res);\n }\n });\n }, [qetaApi, entityRef]);\n\n let shownTitle: string = t('entitiesPage.defaultTitle');\n let link = undefined;\n if (entityRef) {\n shownTitle = t(`postsContainer.title.about`, { itemType: 'Post' });\n link = <EntityRefLink entityRef={entityRef} />;\n }\n\n return (\n <Grid container spacing={4}>\n <Grid item md={12} lg={8} xl={9}>\n <ContentHeader\n titleComponent={\n <Typography variant=\"h5\" component=\"h2\">\n {shownTitle} {link}\n </Typography>\n }\n >\n <ButtonContainer>\n {entityRef && <EntityFollowButton entityRef={entityRef} />}\n <AskQuestionButton entity={entityRef} />\n <WriteArticleButton entity={entityRef} />\n </ButtonContainer>\n </ContentHeader>\n {resp && (\n <Card variant=\"outlined\" style={{ marginBottom: '1em' }}>\n <CardContent>\n <Typography variant=\"caption\">\n {t('common.posts', {\n count: resp.postsCount,\n itemType: 'post',\n })}\n {' · '}\n {t('common.followers', { count: resp.followerCount })}\n </Typography>\n </CardContent>\n </Card>\n )}\n {entityRef ? (\n <PostsContainer\n entity={entityRef}\n filterPanelProps={{ showEntityFilter: false }}\n />\n ) : (\n <EntitiesGrid />\n )}\n </Grid>\n <Grid item lg={4} xl={3}>\n <FollowedEntitiesList />\n {resp && (\n <>\n <PostHighlightList\n type=\"hot\"\n title={t('highlights.hotQuestions.title')}\n noQuestionsLabel={t('highlights.hotQuestions.noQuestionsLabel')}\n icon={<Whatshot fontSize=\"small\" />}\n options={{ entities: [resp.entityRef] }}\n postType=\"question\"\n />\n <PostHighlightList\n type=\"unanswered\"\n title={t('highlights.unanswered.title')}\n noQuestionsLabel={t('highlights.unanswered.noQuestionsLabel')}\n options={{ entities: [resp.entityRef] }}\n postType=\"question\"\n />\n <PostHighlightList\n type=\"incorrect\"\n title={t('highlights.incorrect.title')}\n noQuestionsLabel={t('highlights.incorrect.noQuestionsLabel')}\n options={{ entities: [resp.entityRef] }}\n postType=\"question\"\n />\n </>\n )}\n {!resp && (\n <>\n <PostHighlightList\n type=\"hot\"\n title={t('highlights.hotQuestions.title')}\n noQuestionsLabel={t('highlights.hotQuestions.noQuestionsLabel')}\n icon={<Whatshot fontSize=\"small\" />}\n postType=\"question\"\n />\n <PostHighlightList\n type=\"hot\"\n title={t('highlights.hotArticles.title')}\n noQuestionsLabel={t('highlights.hotArticles.noArticlesLabel')}\n icon={<Whatshot fontSize=\"small\" />}\n postType=\"article\"\n />\n </>\n )}\n </Grid>\n </Grid>\n );\n};\n"],"names":[],"mappings":"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"}
|
|
@@ -7,7 +7,7 @@ import { TagPage } from '../TagPage/TagPage.esm.js';
|
|
|
7
7
|
import { UserPage } from '../UserPage/UserPage.esm.js';
|
|
8
8
|
import { FavoritePage } from '../FavoritePage/FavoritePage.esm.js';
|
|
9
9
|
import { StatisticsPage } from '../Statistics/StatisticsPage.esm.js';
|
|
10
|
-
import {
|
|
10
|
+
import { LeftMenuButton, LeftMenu, questionsRouteRef, askRouteRef, articlesRouteRef, writeRouteRef, favoriteQuestionsRouteRef, editQuestionRouteRef, editArticleRouteRef, questionRouteRef, articleRouteRef, tagsRouteRef, tagRouteRef, usersRouteRef, userRouteRef, statisticsRouteRef, collectionsRouteRef, collectionCreateRouteRef, collectionEditRouteRef, collectionRouteRef, entitiesRouteRef, entityRouteRef, moderatorRouteRef } from '@drodil/backstage-plugin-qeta-react';
|
|
11
11
|
import { QuestionsPage } from '../QuestionsPage/QuestionsPage.esm.js';
|
|
12
12
|
import { HomePage } from '../HomePage/HomePage.esm.js';
|
|
13
13
|
import { ArticlesPage } from '../ArticlesPage/ArticlesPage.esm.js';
|
|
@@ -42,7 +42,7 @@ const QetaPage = (props) => {
|
|
|
42
42
|
tooltip: headerTooltip
|
|
43
43
|
},
|
|
44
44
|
headerElements
|
|
45
|
-
), /* @__PURE__ */ React.createElement(Content, { className: "qetaHomePage" }, introElement, /* @__PURE__ */ React.createElement(Container, { maxWidth: "xl" }, /* @__PURE__ */ React.createElement(Grid, { container: true, spacing: 4, justifyContent: "flex-start" }, /* @__PURE__ */ React.createElement(Grid, { item: true, md: 1, lg: 2 }, /* @__PURE__ */ React.createElement(LeftMenu, null)), /* @__PURE__ */ React.createElement(
|
|
45
|
+
), /* @__PURE__ */ React.createElement(Content, { className: "qetaHomePage" }, introElement, /* @__PURE__ */ React.createElement(Container, { maxWidth: "xl" }, /* @__PURE__ */ React.createElement(Grid, { container: true, spacing: 4, justifyContent: "flex-start" }, /* @__PURE__ */ React.createElement(Grid, { item: true, md: 1, lg: 2, style: { padding: 0 } }, /* @__PURE__ */ React.createElement(Box, { display: { md: "block", lg: "none" } }, /* @__PURE__ */ React.createElement(LeftMenuButton, null)), /* @__PURE__ */ React.createElement(Box, { display: { xs: "none", md: "block" } }, /* @__PURE__ */ React.createElement(LeftMenu, null))), /* @__PURE__ */ React.createElement(
|
|
46
46
|
Grid,
|
|
47
47
|
{
|
|
48
48
|
item: true,
|
|
@@ -50,7 +50,6 @@ const QetaPage = (props) => {
|
|
|
50
50
|
lg: 10,
|
|
51
51
|
style: { paddingLeft: "0", paddingRight: "0" }
|
|
52
52
|
},
|
|
53
|
-
/* @__PURE__ */ React.createElement(Box, { display: { md: "block", lg: "none" } }, /* @__PURE__ */ React.createElement(LeftMenuButton, null)),
|
|
54
53
|
/* @__PURE__ */ React.createElement(Routes, null, /* @__PURE__ */ React.createElement(Route, { path: "/", element: /* @__PURE__ */ React.createElement(HomePage, null) }), /* @__PURE__ */ React.createElement(
|
|
55
54
|
Route,
|
|
56
55
|
{
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"QetaPage.esm.js","sources":["../../../src/components/QetaPage/QetaPage.tsx"],"sourcesContent":["import React, { ReactNode } from 'react';\nimport { Content, Header, Page } from '@backstage/core-components';\nimport { Route, Routes } from 'react-router-dom';\nimport { AskPage } from '../AskPage';\nimport { QuestionPage } from '../QuestionPage/QuestionPage';\nimport { TagPage } from '../TagPage/TagPage';\nimport { UserPage } from '../UserPage/UserPage';\nimport { FavoritePage } from '../FavoritePage/FavoritePage';\nimport { StatisticsPage } from '../Statistics';\nimport {\n articleRouteRef,\n articlesRouteRef,\n askRouteRef,\n collectionCreateRouteRef,\n collectionEditRouteRef,\n collectionRouteRef,\n collectionsRouteRef,\n editArticleRouteRef,\n editQuestionRouteRef,\n entitiesRouteRef,\n entityRouteRef,\n favoriteQuestionsRouteRef,\n LeftMenu,\n LeftMenuButton,\n moderatorRouteRef,\n questionRouteRef,\n questionsRouteRef,\n statisticsRouteRef,\n tagRouteRef,\n tagsRouteRef,\n userRouteRef,\n usersRouteRef,\n writeRouteRef,\n} from '@drodil/backstage-plugin-qeta-react';\nimport { QuestionsPage } from '../QuestionsPage/QuestionsPage';\nimport { HomePage } from '../HomePage/HomePage';\nimport { ArticlesPage } from '../ArticlesPage/ArticlesPage';\nimport { WritePage } from '../WritePage/WritePage';\nimport { ArticlePage } from '../ArticlePage/ArticlePage';\nimport { CollectionsPage } from '../CollectionsPage/CollectionsPage';\nimport { CollectionPage } from '../CollectionPage/CollectionPage';\nimport { CollectionCreatePage } from '../CollectionCreatePage/CollectionCreatePage';\nimport { EntityPage } from '../EntityPage/EntityPage';\nimport { UsersPage } from '../UsersPage/UsersPage';\nimport { ModeratorPage } from '../ModeratorPage/ModeratorPage';\nimport { Box, Container, Grid } from '@material-ui/core';\n\ntype Props = {\n title?: string;\n subtitle?: string;\n headerElements?: ReactNode[];\n themeId?: string;\n headerTooltip?: string;\n headerType?: string;\n headerTypeLink?: string;\n introElement?: ReactNode;\n};\n\nexport const QetaPage = (props?: Props) => {\n const {\n title = 'Q&A',\n subtitle,\n headerElements,\n themeId = 'tool',\n headerTooltip,\n headerType,\n headerTypeLink,\n introElement,\n } = props ?? {};\n\n return (\n <Page themeId={themeId}>\n <Header\n title={title}\n subtitle={subtitle}\n type={headerType}\n typeLink={headerTypeLink}\n tooltip={headerTooltip}\n >\n {headerElements}\n </Header>\n <Content className=\"qetaHomePage\">\n {introElement}\n <Container maxWidth=\"xl\">\n <Grid container spacing={4} justifyContent=\"flex-start\">\n <Grid item md={1} lg={2}>\n <LeftMenu />\n </Grid>\n <Grid\n item\n md={12}\n lg={10}\n style={{ paddingLeft: '0', paddingRight: '0' }}\n >\n <
|
|
1
|
+
{"version":3,"file":"QetaPage.esm.js","sources":["../../../src/components/QetaPage/QetaPage.tsx"],"sourcesContent":["import React, { ReactNode } from 'react';\nimport { Content, Header, Page } from '@backstage/core-components';\nimport { Route, Routes } from 'react-router-dom';\nimport { AskPage } from '../AskPage';\nimport { QuestionPage } from '../QuestionPage/QuestionPage';\nimport { TagPage } from '../TagPage/TagPage';\nimport { UserPage } from '../UserPage/UserPage';\nimport { FavoritePage } from '../FavoritePage/FavoritePage';\nimport { StatisticsPage } from '../Statistics';\nimport {\n articleRouteRef,\n articlesRouteRef,\n askRouteRef,\n collectionCreateRouteRef,\n collectionEditRouteRef,\n collectionRouteRef,\n collectionsRouteRef,\n editArticleRouteRef,\n editQuestionRouteRef,\n entitiesRouteRef,\n entityRouteRef,\n favoriteQuestionsRouteRef,\n LeftMenu,\n LeftMenuButton,\n moderatorRouteRef,\n questionRouteRef,\n questionsRouteRef,\n statisticsRouteRef,\n tagRouteRef,\n tagsRouteRef,\n userRouteRef,\n usersRouteRef,\n writeRouteRef,\n} from '@drodil/backstage-plugin-qeta-react';\nimport { QuestionsPage } from '../QuestionsPage/QuestionsPage';\nimport { HomePage } from '../HomePage/HomePage';\nimport { ArticlesPage } from '../ArticlesPage/ArticlesPage';\nimport { WritePage } from '../WritePage/WritePage';\nimport { ArticlePage } from '../ArticlePage/ArticlePage';\nimport { CollectionsPage } from '../CollectionsPage/CollectionsPage';\nimport { CollectionPage } from '../CollectionPage/CollectionPage';\nimport { CollectionCreatePage } from '../CollectionCreatePage/CollectionCreatePage';\nimport { EntityPage } from '../EntityPage/EntityPage';\nimport { UsersPage } from '../UsersPage/UsersPage';\nimport { ModeratorPage } from '../ModeratorPage/ModeratorPage';\nimport { Box, Container, Grid } from '@material-ui/core';\n\ntype Props = {\n title?: string;\n subtitle?: string;\n headerElements?: ReactNode[];\n themeId?: string;\n headerTooltip?: string;\n headerType?: string;\n headerTypeLink?: string;\n introElement?: ReactNode;\n};\n\nexport const QetaPage = (props?: Props) => {\n const {\n title = 'Q&A',\n subtitle,\n headerElements,\n themeId = 'tool',\n headerTooltip,\n headerType,\n headerTypeLink,\n introElement,\n } = props ?? {};\n\n return (\n <Page themeId={themeId}>\n <Header\n title={title}\n subtitle={subtitle}\n type={headerType}\n typeLink={headerTypeLink}\n tooltip={headerTooltip}\n >\n {headerElements}\n </Header>\n <Content className=\"qetaHomePage\">\n {introElement}\n <Container maxWidth=\"xl\">\n <Grid container spacing={4} justifyContent=\"flex-start\">\n <Grid item md={1} lg={2} style={{ padding: 0 }}>\n <Box display={{ md: 'block', lg: 'none' }}>\n <LeftMenuButton />\n </Box>\n <Box display={{ xs: 'none', md: 'block' }}>\n <LeftMenu />\n </Box>\n </Grid>\n <Grid\n item\n md={12}\n lg={10}\n style={{ paddingLeft: '0', paddingRight: '0' }}\n >\n <Routes>\n <Route path=\"/\" element={<HomePage />} />\n <Route\n path={questionsRouteRef.path}\n element={<QuestionsPage />}\n />\n <Route path={askRouteRef.path} element={<AskPage />} />\n <Route\n path={articlesRouteRef.path}\n element={<ArticlesPage />}\n />\n <Route path={writeRouteRef.path} element={<WritePage />} />\n <Route\n path={favoriteQuestionsRouteRef.path}\n element={<FavoritePage />}\n />\n <Route path={editQuestionRouteRef.path} element={<AskPage />} />\n <Route\n path={editArticleRouteRef.path}\n element={<WritePage />}\n />\n <Route\n path={questionRouteRef.path}\n element={<QuestionPage />}\n />\n <Route path={articleRouteRef.path} element={<ArticlePage />} />\n <Route path={tagsRouteRef.path} element={<TagPage />} />\n <Route path={tagRouteRef.path} element={<TagPage />} />\n <Route path={usersRouteRef.path} element={<UsersPage />} />\n <Route path={userRouteRef.path} element={<UserPage />} />\n <Route\n path={statisticsRouteRef.path}\n element={<StatisticsPage />}\n />\n <Route\n path={collectionsRouteRef.path}\n element={<CollectionsPage />}\n />\n <Route\n path={collectionCreateRouteRef.path}\n element={<CollectionCreatePage />}\n />\n <Route\n path={collectionEditRouteRef.path}\n element={<CollectionCreatePage />}\n />\n <Route\n path={collectionRouteRef.path}\n element={<CollectionPage />}\n />\n <Route path={entitiesRouteRef.path} element={<EntityPage />} />\n <Route path={entityRouteRef.path} element={<EntityPage />} />\n <Route\n path={moderatorRouteRef.path}\n element={<ModeratorPage />}\n />\n </Routes>\n </Grid>\n </Grid>\n </Container>\n </Content>\n </Page>\n );\n};\n"],"names":[],"mappings":"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"}
|
|
@@ -25,7 +25,13 @@ const TagPage = () => {
|
|
|
25
25
|
return /* @__PURE__ */ React.createElement(Grid, { container: true, spacing: 4 }, /* @__PURE__ */ React.createElement(Grid, { item: true, md: 12, lg: 8, xl: 9 }, /* @__PURE__ */ React.createElement(ContentHeader, { title: tag ? `#${tag}` : t("tagPage.defaultTitle") }, /* @__PURE__ */ React.createElement(ButtonContainer, null, tag && /* @__PURE__ */ React.createElement(TagFollowButton, { tag }), /* @__PURE__ */ React.createElement(AskQuestionButton, { tags: tag ? [tag] : void 0 }), /* @__PURE__ */ React.createElement(WriteArticleButton, { tags: tag ? [tag] : void 0 }))), resp && /* @__PURE__ */ React.createElement(Card, { variant: "outlined", style: { marginBottom: "1em" } }, /* @__PURE__ */ React.createElement(CardContent, null, /* @__PURE__ */ React.createElement(Typography, { variant: "caption" }, t("common.posts", {
|
|
26
26
|
count: resp.postsCount,
|
|
27
27
|
itemType: "post"
|
|
28
|
-
}), " \xB7 ", t("common.followers", { count: resp.followerCount })), resp.description && /* @__PURE__ */ React.createElement(MarkdownRenderer, { content: resp.description }))), tag ? /* @__PURE__ */ React.createElement(
|
|
28
|
+
}), " \xB7 ", t("common.followers", { count: resp.followerCount })), resp.description && /* @__PURE__ */ React.createElement(MarkdownRenderer, { content: resp.description }))), tag ? /* @__PURE__ */ React.createElement(
|
|
29
|
+
PostsContainer,
|
|
30
|
+
{
|
|
31
|
+
tags: [tag ?? ""],
|
|
32
|
+
filterPanelProps: { showTagFilter: false }
|
|
33
|
+
}
|
|
34
|
+
) : /* @__PURE__ */ React.createElement(TagsGrid, null)), /* @__PURE__ */ React.createElement(Grid, { item: true, lg: 4, xl: 3 }, /* @__PURE__ */ React.createElement(FollowedTagsList, null), resp && /* @__PURE__ */ React.createElement(React.Fragment, null, /* @__PURE__ */ React.createElement(
|
|
29
35
|
PostHighlightList,
|
|
30
36
|
{
|
|
31
37
|
type: "hot",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TagPage.esm.js","sources":["../../../src/components/TagPage/TagPage.tsx"],"sourcesContent":["import React, { useEffect } from 'react';\nimport { ContentHeader } from '@backstage/core-components';\nimport { useParams } from 'react-router-dom';\nimport {\n AskQuestionButton,\n ButtonContainer,\n FollowedTagsList,\n MarkdownRenderer,\n PostHighlightList,\n PostsContainer,\n qetaApiRef,\n TagFollowButton,\n TagsGrid,\n useTranslation,\n WriteArticleButton,\n} from '@drodil/backstage-plugin-qeta-react';\nimport Whatshot from '@material-ui/icons/Whatshot';\nimport { useApi } from '@backstage/core-plugin-api';\nimport { TagResponse } from '@drodil/backstage-plugin-qeta-common';\nimport { Card, CardContent, Grid, Typography } from '@material-ui/core';\n\nexport const TagPage = () => {\n const { tag } = useParams();\n const { t } = useTranslation();\n const [resp, setResp] = React.useState<undefined | TagResponse>();\n\n const qetaApi = useApi(qetaApiRef);\n\n useEffect(() => {\n if (!tag) {\n setResp(undefined);\n return;\n }\n\n qetaApi.getTag(tag).then(res => {\n if (res) {\n setResp(res);\n }\n });\n }, [qetaApi, tag]);\n\n return (\n <Grid container spacing={4}>\n <Grid item md={12} lg={8} xl={9}>\n <ContentHeader title={tag ? `#${tag}` : t('tagPage.defaultTitle')}>\n <ButtonContainer>\n {tag && <TagFollowButton tag={tag} />}\n <AskQuestionButton tags={tag ? [tag] : undefined} />\n <WriteArticleButton tags={tag ? [tag] : undefined} />\n </ButtonContainer>\n </ContentHeader>\n {resp && (\n <Card variant=\"outlined\" style={{ marginBottom: '1em' }}>\n <CardContent>\n <Typography variant=\"caption\">\n {t('common.posts', {\n count: resp.postsCount,\n itemType: 'post',\n })}\n {' · '}\n {t('common.followers', { count: resp.followerCount })}\n </Typography>\n {resp.description && (\n <MarkdownRenderer content={resp.description} />\n )}\n </CardContent>\n </Card>\n )}\n {tag ? <PostsContainer
|
|
1
|
+
{"version":3,"file":"TagPage.esm.js","sources":["../../../src/components/TagPage/TagPage.tsx"],"sourcesContent":["import React, { useEffect } from 'react';\nimport { ContentHeader } from '@backstage/core-components';\nimport { useParams } from 'react-router-dom';\nimport {\n AskQuestionButton,\n ButtonContainer,\n FollowedTagsList,\n MarkdownRenderer,\n PostHighlightList,\n PostsContainer,\n qetaApiRef,\n TagFollowButton,\n TagsGrid,\n useTranslation,\n WriteArticleButton,\n} from '@drodil/backstage-plugin-qeta-react';\nimport Whatshot from '@material-ui/icons/Whatshot';\nimport { useApi } from '@backstage/core-plugin-api';\nimport { TagResponse } from '@drodil/backstage-plugin-qeta-common';\nimport { Card, CardContent, Grid, Typography } from '@material-ui/core';\n\nexport const TagPage = () => {\n const { tag } = useParams();\n const { t } = useTranslation();\n const [resp, setResp] = React.useState<undefined | TagResponse>();\n\n const qetaApi = useApi(qetaApiRef);\n\n useEffect(() => {\n if (!tag) {\n setResp(undefined);\n return;\n }\n\n qetaApi.getTag(tag).then(res => {\n if (res) {\n setResp(res);\n }\n });\n }, [qetaApi, tag]);\n\n return (\n <Grid container spacing={4}>\n <Grid item md={12} lg={8} xl={9}>\n <ContentHeader title={tag ? `#${tag}` : t('tagPage.defaultTitle')}>\n <ButtonContainer>\n {tag && <TagFollowButton tag={tag} />}\n <AskQuestionButton tags={tag ? [tag] : undefined} />\n <WriteArticleButton tags={tag ? [tag] : undefined} />\n </ButtonContainer>\n </ContentHeader>\n {resp && (\n <Card variant=\"outlined\" style={{ marginBottom: '1em' }}>\n <CardContent>\n <Typography variant=\"caption\">\n {t('common.posts', {\n count: resp.postsCount,\n itemType: 'post',\n })}\n {' · '}\n {t('common.followers', { count: resp.followerCount })}\n </Typography>\n {resp.description && (\n <MarkdownRenderer content={resp.description} />\n )}\n </CardContent>\n </Card>\n )}\n {tag ? (\n <PostsContainer\n tags={[tag ?? '']}\n filterPanelProps={{ showTagFilter: false }}\n />\n ) : (\n <TagsGrid />\n )}\n </Grid>\n <Grid item lg={4} xl={3}>\n <FollowedTagsList />\n {resp && (\n <>\n <PostHighlightList\n type=\"hot\"\n title={t('highlights.hotQuestions.title')}\n noQuestionsLabel={t('highlights.hotQuestions.noQuestionsLabel')}\n icon={<Whatshot fontSize=\"small\" />}\n options={{ tags: [resp.tag] }}\n postType=\"question\"\n />\n\n <PostHighlightList\n type=\"unanswered\"\n title={t('highlights.unanswered.title')}\n noQuestionsLabel={t('highlights.unanswered.noQuestionsLabel')}\n options={{ tags: [resp.tag] }}\n postType=\"question\"\n />\n <PostHighlightList\n type=\"incorrect\"\n title={t('highlights.incorrect.title')}\n noQuestionsLabel={t('highlights.incorrect.noQuestionsLabel')}\n options={{ tags: [resp.tag] }}\n postType=\"question\"\n />\n </>\n )}\n {!resp && (\n <>\n <PostHighlightList\n type=\"hot\"\n title={t('highlights.hotQuestions.title')}\n noQuestionsLabel={t('highlights.hotQuestions.noQuestionsLabel')}\n icon={<Whatshot fontSize=\"small\" />}\n postType=\"question\"\n />\n <PostHighlightList\n type=\"hot\"\n title={t('highlights.hotArticles.title')}\n noQuestionsLabel={t('highlights.hotArticles.noArticlesLabel')}\n icon={<Whatshot fontSize=\"small\" />}\n postType=\"article\"\n />\n </>\n )}\n </Grid>\n </Grid>\n );\n};\n"],"names":[],"mappings":"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"}
|
|
@@ -4,7 +4,7 @@ import { useParams, useSearchParams } from 'react-router-dom';
|
|
|
4
4
|
import { useUserInfo, useTranslation, useIdentityApi, UserFollowButton, ButtonContainer, AskQuestionButton, WriteArticleButton, PostsContainer, PostsGrid, CollectionsGrid, AnswersContainer } from '@drodil/backstage-plugin-qeta-react';
|
|
5
5
|
import { UserStatsContent } from './UserStatsContent.esm.js';
|
|
6
6
|
import { TabContext, TabList, TabPanel } from '@material-ui/lab';
|
|
7
|
-
import {
|
|
7
|
+
import { Box, Avatar, Typography, Tab } from '@material-ui/core';
|
|
8
8
|
|
|
9
9
|
const UserPage = () => {
|
|
10
10
|
const identity = useParams()["*"] ?? "unknown";
|
|
@@ -21,7 +21,7 @@ const UserPage = () => {
|
|
|
21
21
|
setSearchParams({});
|
|
22
22
|
setTab(newValue);
|
|
23
23
|
};
|
|
24
|
-
const title = /* @__PURE__ */ React.createElement(
|
|
24
|
+
const title = /* @__PURE__ */ React.createElement(Box, { style: { display: "flex", alignItems: "center" } }, /* @__PURE__ */ React.createElement(Box, { style: { display: "inline-block", marginRight: "0.5em" } }, /* @__PURE__ */ React.createElement(Avatar, { src: user?.spec?.profile?.picture, alt: name, variant: "rounded" }, initials)), /* @__PURE__ */ React.createElement(Typography, { variant: "h5", component: "h2" }, name), !loadingUser && !userError && currentUser?.userEntityRef !== identity && /* @__PURE__ */ React.createElement(
|
|
25
25
|
UserFollowButton,
|
|
26
26
|
{
|
|
27
27
|
userRef: identity,
|
|
@@ -46,7 +46,14 @@ const UserPage = () => {
|
|
|
46
46
|
showNoQuestionsBtn: false,
|
|
47
47
|
type: "question"
|
|
48
48
|
}
|
|
49
|
-
)), /* @__PURE__ */ React.createElement(TabPanel, { value: "articles" }, /* @__PURE__ */ React.createElement(
|
|
49
|
+
)), /* @__PURE__ */ React.createElement(TabPanel, { value: "articles" }, /* @__PURE__ */ React.createElement(
|
|
50
|
+
PostsGrid,
|
|
51
|
+
{
|
|
52
|
+
author: identity ?? "",
|
|
53
|
+
type: "article",
|
|
54
|
+
showNoQuestionsBtn: false
|
|
55
|
+
}
|
|
56
|
+
)), /* @__PURE__ */ React.createElement(TabPanel, { value: "collections" }, /* @__PURE__ */ React.createElement(CollectionsGrid, { owner: identity ?? "" })), /* @__PURE__ */ React.createElement(TabPanel, { value: "answers" }, /* @__PURE__ */ React.createElement(
|
|
50
57
|
AnswersContainer,
|
|
51
58
|
{
|
|
52
59
|
author: identity ?? "",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"UserPage.esm.js","sources":["../../../src/components/UserPage/UserPage.tsx"],"sourcesContent":["import React, { useState } from 'react';\nimport { ContentHeader } from '@backstage/core-components';\nimport { useParams, useSearchParams } from 'react-router-dom';\nimport {\n AnswersContainer,\n AskQuestionButton,\n ButtonContainer,\n CollectionsGrid,\n PostsContainer,\n PostsGrid,\n useIdentityApi,\n UserFollowButton,\n useTranslation,\n useUserInfo,\n WriteArticleButton,\n} from '@drodil/backstage-plugin-qeta-react';\nimport { UserStatsContent } from './UserStatsContent';\nimport { TabContext, TabList, TabPanel } from '@material-ui/lab';\nimport { Avatar, Box, Tab, Typography } from '@material-ui/core';\n\nexport const UserPage = () => {\n const identity = useParams()['*'] ?? 'unknown';\n const { name, initials, user, secondaryTitle } = useUserInfo(identity);\n const [tab, setTab] = useState('statistics');\n const { t } = useTranslation();\n const [_searchParams, setSearchParams] = useSearchParams();\n const {\n value: currentUser,\n loading: loadingUser,\n error: userError,\n } = useIdentityApi(api => api.getBackstageIdentity(), []);\n\n const handleChange = (_event: React.ChangeEvent<{}>, newValue: string) => {\n setSearchParams({});\n setTab(newValue);\n };\n const title = (\n <
|
|
1
|
+
{"version":3,"file":"UserPage.esm.js","sources":["../../../src/components/UserPage/UserPage.tsx"],"sourcesContent":["import React, { useState } from 'react';\nimport { ContentHeader } from '@backstage/core-components';\nimport { useParams, useSearchParams } from 'react-router-dom';\nimport {\n AnswersContainer,\n AskQuestionButton,\n ButtonContainer,\n CollectionsGrid,\n PostsContainer,\n PostsGrid,\n useIdentityApi,\n UserFollowButton,\n useTranslation,\n useUserInfo,\n WriteArticleButton,\n} from '@drodil/backstage-plugin-qeta-react';\nimport { UserStatsContent } from './UserStatsContent';\nimport { TabContext, TabList, TabPanel } from '@material-ui/lab';\nimport { Avatar, Box, Tab, Typography } from '@material-ui/core';\n\nexport const UserPage = () => {\n const identity = useParams()['*'] ?? 'unknown';\n const { name, initials, user, secondaryTitle } = useUserInfo(identity);\n const [tab, setTab] = useState('statistics');\n const { t } = useTranslation();\n const [_searchParams, setSearchParams] = useSearchParams();\n const {\n value: currentUser,\n loading: loadingUser,\n error: userError,\n } = useIdentityApi(api => api.getBackstageIdentity(), []);\n\n const handleChange = (_event: React.ChangeEvent<{}>, newValue: string) => {\n setSearchParams({});\n setTab(newValue);\n };\n const title = (\n <Box style={{ display: 'flex', alignItems: 'center' }}>\n <Box style={{ display: 'inline-block', marginRight: '0.5em' }}>\n <Avatar src={user?.spec?.profile?.picture} alt={name} variant=\"rounded\">\n {initials}\n </Avatar>\n </Box>\n <Typography variant=\"h5\" component=\"h2\">\n {name}\n </Typography>\n {!loadingUser &&\n !userError &&\n currentUser?.userEntityRef !== identity && (\n <UserFollowButton\n userRef={identity}\n style={{ marginLeft: '0.5em' }}\n />\n )}\n </Box>\n );\n\n return (\n <>\n <ContentHeader titleComponent={title} description={secondaryTitle}>\n <ButtonContainer>\n <AskQuestionButton />\n <WriteArticleButton />\n </ButtonContainer>\n </ContentHeader>\n <TabContext value={tab}>\n <Box sx={{ borderBottom: 1, borderColor: 'divider' }}>\n <TabList\n onChange={handleChange}\n aria-label={t('userPage.profileTab')}\n >\n <Tab label={t('userPage.statistics')} value=\"statistics\" />\n <Tab label={t('userPage.questions')} value=\"questions\" />\n <Tab label={t('userPage.articles')} value=\"articles\" />\n <Tab label={t('userPage.collections')} value=\"collections\" />\n <Tab label={t('userPage.answers')} value=\"answers\" />\n </TabList>\n </Box>\n <TabPanel value=\"statistics\">\n <UserStatsContent userRef={identity ?? ''} />\n </TabPanel>\n <TabPanel value=\"questions\">\n <PostsContainer\n author={identity ?? ''}\n showNoQuestionsBtn={false}\n type=\"question\"\n />\n </TabPanel>\n <TabPanel value=\"articles\">\n <PostsGrid\n author={identity ?? ''}\n type=\"article\"\n showNoQuestionsBtn={false}\n />\n </TabPanel>\n <TabPanel value=\"collections\">\n <CollectionsGrid owner={identity ?? ''} />\n </TabPanel>\n <TabPanel value=\"answers\">\n <AnswersContainer\n author={identity ?? ''}\n title={t('userPage.answers')}\n />\n </TabPanel>\n </TabContext>\n </>\n );\n};\n"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
"frontend",
|
|
8
8
|
"backstage.io"
|
|
9
9
|
],
|
|
10
|
-
"version": "3.
|
|
10
|
+
"version": "3.15.1",
|
|
11
11
|
"main": "dist/index.esm.js",
|
|
12
12
|
"types": "dist/index.d.ts",
|
|
13
13
|
"prepublishOnly": "yarn tsc && yarn build",
|
|
@@ -54,8 +54,8 @@
|
|
|
54
54
|
"@backstage/plugin-catalog-react": "^1.14.2",
|
|
55
55
|
"@backstage/plugin-home-react": "^0.1.20",
|
|
56
56
|
"@backstage/plugin-signals-react": "^0.0.7",
|
|
57
|
-
"@drodil/backstage-plugin-qeta-common": "^3.
|
|
58
|
-
"@drodil/backstage-plugin-qeta-react": "^3.
|
|
57
|
+
"@drodil/backstage-plugin-qeta-common": "^3.15.1",
|
|
58
|
+
"@drodil/backstage-plugin-qeta-react": "^3.15.1",
|
|
59
59
|
"@material-ui/core": "^4.12.2",
|
|
60
60
|
"@material-ui/icons": "^4.11.3",
|
|
61
61
|
"@material-ui/lab": "4.0.0-alpha.61",
|