@drodil/backstage-plugin-qeta 3.2.1 → 3.4.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/configSchema.d.ts CHANGED
@@ -60,6 +60,14 @@ export interface Config {
60
60
  */
61
61
  max?: number;
62
62
  };
63
+ /**
64
+ * List of users/groups that can moderate questions and answers in case permission framework is not in use.
65
+ * In case permission framework is in use, this list is used to determine if user
66
+ * can access the moderator panel
67
+ *
68
+ * @visibility frontend
69
+ */
70
+ moderators?: string[];
63
71
  /**
64
72
  * If desire to disable image upload.
65
73
  * @visibility frontend
@@ -1,7 +1,7 @@
1
- import { ContentHeader, InfoCard } from '@backstage/core-components';
1
+ import { Progress, ContentHeader, InfoCard } from '@backstage/core-components';
2
2
  import { Grid } from '@material-ui/core';
3
- import React from 'react';
4
- import { useTranslation, PostForm } from '@drodil/backstage-plugin-qeta-react';
3
+ import React, { useState } from 'react';
4
+ import { useQetaApi, useTranslation, SelectTemplateList, PostForm } from '@drodil/backstage-plugin-qeta-react';
5
5
  import { useParams, useSearchParams } from 'react-router-dom';
6
6
  import { useEntityPresentation } from '@backstage/plugin-catalog-react';
7
7
  import { filterTags } from '@drodil/backstage-plugin-qeta-common';
@@ -9,6 +9,10 @@ import { filterTags } from '@drodil/backstage-plugin-qeta-common';
9
9
  const AskPage = () => {
10
10
  const { id } = useParams();
11
11
  const [searchParams] = useSearchParams();
12
+ const { value, loading } = useQetaApi((api) => api.getTemplates());
13
+ const [template, setTemplate] = useState(
14
+ void 0
15
+ );
12
16
  const entity = searchParams.get("entity") ?? void 0;
13
17
  const entityPage = searchParams.get("entityPage") === "true";
14
18
  const tags = filterTags(searchParams.get("tags"));
@@ -24,6 +28,18 @@ const AskPage = () => {
24
28
  } else {
25
29
  title = t("askPage.title.newQuestion");
26
30
  }
31
+ if (loading) {
32
+ return /* @__PURE__ */ React.createElement(Progress, null);
33
+ }
34
+ if (!id && value && value.templates && value.total > 0 && template === void 0) {
35
+ return /* @__PURE__ */ React.createElement(
36
+ SelectTemplateList,
37
+ {
38
+ templates: value,
39
+ onTemplateSelect: (temp) => setTemplate(temp)
40
+ }
41
+ );
42
+ }
27
43
  return /* @__PURE__ */ React.createElement(React.Fragment, null, /* @__PURE__ */ React.createElement(ContentHeader, { title }), /* @__PURE__ */ React.createElement(Grid, { container: true, spacing: 3, direction: "column" }, /* @__PURE__ */ React.createElement(Grid, { item: true }, /* @__PURE__ */ React.createElement(InfoCard, null, /* @__PURE__ */ React.createElement(
28
44
  PostForm,
29
45
  {
@@ -31,7 +47,8 @@ const AskPage = () => {
31
47
  entity,
32
48
  entityPage,
33
49
  tags,
34
- type: "question"
50
+ type: "question",
51
+ template
35
52
  }
36
53
  )))));
37
54
  };
@@ -1 +1 @@
1
- {"version":3,"file":"AskPage.esm.js","sources":["../../../src/components/AskPage/AskPage.tsx"],"sourcesContent":["import { ContentHeader, InfoCard } from '@backstage/core-components';\nimport { Grid } from '@material-ui/core';\nimport React from 'react';\nimport { PostForm, useTranslation } from '@drodil/backstage-plugin-qeta-react';\nimport { useParams, useSearchParams } from 'react-router-dom';\nimport { useEntityPresentation } from '@backstage/plugin-catalog-react';\nimport { filterTags } from '@drodil/backstage-plugin-qeta-common';\n\nexport const AskPage = () => {\n const { id } = useParams();\n const [searchParams] = useSearchParams();\n const entity = searchParams.get('entity') ?? undefined;\n const entityPage = searchParams.get('entityPage') === 'true';\n const tags = filterTags(searchParams.get('tags'));\n const { t } = useTranslation();\n let title;\n if (id) {\n title = t('askPage.title.existingQuestion');\n } else if (entity) {\n // eslint-disable-next-line react-hooks/rules-of-hooks\n const representation = useEntityPresentation(entity);\n title = t('askPage.title.entityQuestion', {\n entity: representation.primaryTitle,\n });\n } else {\n title = t('askPage.title.newQuestion');\n }\n\n return (\n <>\n <ContentHeader title={title} />\n <Grid container spacing={3} direction=\"column\">\n <Grid item>\n <InfoCard>\n <PostForm\n id={id}\n entity={entity}\n entityPage={entityPage}\n tags={tags}\n type=\"question\"\n />\n </InfoCard>\n </Grid>\n </Grid>\n </>\n );\n};\n"],"names":[],"mappings":";;;;;;;;AAQO,MAAM,UAAU,MAAM;AAC3B,EAAM,MAAA,EAAE,EAAG,EAAA,GAAI,SAAU,EAAA,CAAA;AACzB,EAAM,MAAA,CAAC,YAAY,CAAA,GAAI,eAAgB,EAAA,CAAA;AACvC,EAAA,MAAM,MAAS,GAAA,YAAA,CAAa,GAAI,CAAA,QAAQ,CAAK,IAAA,KAAA,CAAA,CAAA;AAC7C,EAAA,MAAM,UAAa,GAAA,YAAA,CAAa,GAAI,CAAA,YAAY,CAAM,KAAA,MAAA,CAAA;AACtD,EAAA,MAAM,IAAO,GAAA,UAAA,CAAW,YAAa,CAAA,GAAA,CAAI,MAAM,CAAC,CAAA,CAAA;AAChD,EAAM,MAAA,EAAE,CAAE,EAAA,GAAI,cAAe,EAAA,CAAA;AAC7B,EAAI,IAAA,KAAA,CAAA;AACJ,EAAA,IAAI,EAAI,EAAA;AACN,IAAA,KAAA,GAAQ,EAAE,gCAAgC,CAAA,CAAA;AAAA,aACjC,MAAQ,EAAA;AAEjB,IAAM,MAAA,cAAA,GAAiB,sBAAsB,MAAM,CAAA,CAAA;AACnD,IAAA,KAAA,GAAQ,EAAE,8BAAgC,EAAA;AAAA,MACxC,QAAQ,cAAe,CAAA,YAAA;AAAA,KACxB,CAAA,CAAA;AAAA,GACI,MAAA;AACL,IAAA,KAAA,GAAQ,EAAE,2BAA2B,CAAA,CAAA;AAAA,GACvC;AAEA,EAAA,iFAEK,KAAA,CAAA,aAAA,CAAA,aAAA,EAAA,EAAc,OAAc,CAC7B,kBAAA,KAAA,CAAA,aAAA,CAAC,QAAK,SAAS,EAAA,IAAA,EAAC,OAAS,EAAA,CAAA,EAAG,WAAU,QACpC,EAAA,kBAAA,KAAA,CAAA,aAAA,CAAC,QAAK,IAAI,EAAA,IAAA,EAAA,sCACP,QACC,EAAA,IAAA,kBAAA,KAAA,CAAA,aAAA;AAAA,IAAC,QAAA;AAAA,IAAA;AAAA,MACC,EAAA;AAAA,MACA,MAAA;AAAA,MACA,UAAA;AAAA,MACA,IAAA;AAAA,MACA,IAAK,EAAA,UAAA;AAAA,KAAA;AAAA,GAET,CACF,CACF,CACF,CAAA,CAAA;AAEJ;;;;"}
1
+ {"version":3,"file":"AskPage.esm.js","sources":["../../../src/components/AskPage/AskPage.tsx"],"sourcesContent":["import { ContentHeader, InfoCard, Progress } from '@backstage/core-components';\nimport { Grid } from '@material-ui/core';\nimport React, { useState } from 'react';\nimport {\n PostForm,\n SelectTemplateList,\n useQetaApi,\n useTranslation,\n} from '@drodil/backstage-plugin-qeta-react';\nimport { useParams, useSearchParams } from 'react-router-dom';\nimport { useEntityPresentation } from '@backstage/plugin-catalog-react';\nimport { filterTags, Template } from '@drodil/backstage-plugin-qeta-common';\n\nexport const AskPage = () => {\n const { id } = useParams();\n const [searchParams] = useSearchParams();\n const { value, loading } = useQetaApi(api => api.getTemplates());\n const [template, setTemplate] = useState<Template | null | undefined>(\n undefined,\n );\n\n const entity = searchParams.get('entity') ?? undefined;\n const entityPage = searchParams.get('entityPage') === 'true';\n const tags = filterTags(searchParams.get('tags'));\n const { t } = useTranslation();\n let title;\n if (id) {\n title = t('askPage.title.existingQuestion');\n } else if (entity) {\n // eslint-disable-next-line react-hooks/rules-of-hooks\n const representation = useEntityPresentation(entity);\n title = t('askPage.title.entityQuestion', {\n entity: representation.primaryTitle,\n });\n } else {\n title = t('askPage.title.newQuestion');\n }\n\n if (loading) {\n return <Progress />;\n }\n\n if (\n !id &&\n value &&\n value.templates &&\n value.total > 0 &&\n template === undefined\n ) {\n return (\n <SelectTemplateList\n templates={value}\n onTemplateSelect={temp => setTemplate(temp)}\n />\n );\n }\n\n return (\n <>\n <ContentHeader title={title} />\n <Grid container spacing={3} direction=\"column\">\n <Grid item>\n <InfoCard>\n <PostForm\n id={id}\n entity={entity}\n entityPage={entityPage}\n tags={tags}\n type=\"question\"\n template={template}\n />\n </InfoCard>\n </Grid>\n </Grid>\n </>\n );\n};\n"],"names":[],"mappings":";;;;;;;;AAaO,MAAM,UAAU,MAAM;AAC3B,EAAM,MAAA,EAAE,EAAG,EAAA,GAAI,SAAU,EAAA,CAAA;AACzB,EAAM,MAAA,CAAC,YAAY,CAAA,GAAI,eAAgB,EAAA,CAAA;AACvC,EAAM,MAAA,EAAE,OAAO,OAAQ,EAAA,GAAI,WAAW,CAAO,GAAA,KAAA,GAAA,CAAI,cAAc,CAAA,CAAA;AAC/D,EAAM,MAAA,CAAC,QAAU,EAAA,WAAW,CAAI,GAAA,QAAA;AAAA,IAC9B,KAAA,CAAA;AAAA,GACF,CAAA;AAEA,EAAA,MAAM,MAAS,GAAA,YAAA,CAAa,GAAI,CAAA,QAAQ,CAAK,IAAA,KAAA,CAAA,CAAA;AAC7C,EAAA,MAAM,UAAa,GAAA,YAAA,CAAa,GAAI,CAAA,YAAY,CAAM,KAAA,MAAA,CAAA;AACtD,EAAA,MAAM,IAAO,GAAA,UAAA,CAAW,YAAa,CAAA,GAAA,CAAI,MAAM,CAAC,CAAA,CAAA;AAChD,EAAM,MAAA,EAAE,CAAE,EAAA,GAAI,cAAe,EAAA,CAAA;AAC7B,EAAI,IAAA,KAAA,CAAA;AACJ,EAAA,IAAI,EAAI,EAAA;AACN,IAAA,KAAA,GAAQ,EAAE,gCAAgC,CAAA,CAAA;AAAA,aACjC,MAAQ,EAAA;AAEjB,IAAM,MAAA,cAAA,GAAiB,sBAAsB,MAAM,CAAA,CAAA;AACnD,IAAA,KAAA,GAAQ,EAAE,8BAAgC,EAAA;AAAA,MACxC,QAAQ,cAAe,CAAA,YAAA;AAAA,KACxB,CAAA,CAAA;AAAA,GACI,MAAA;AACL,IAAA,KAAA,GAAQ,EAAE,2BAA2B,CAAA,CAAA;AAAA,GACvC;AAEA,EAAA,IAAI,OAAS,EAAA;AACX,IAAA,2CAAQ,QAAS,EAAA,IAAA,CAAA,CAAA;AAAA,GACnB;AAEA,EACE,IAAA,CAAC,MACD,KACA,IAAA,KAAA,CAAM,aACN,KAAM,CAAA,KAAA,GAAQ,CACd,IAAA,QAAA,KAAa,KACb,CAAA,EAAA;AACA,IACE,uBAAA,KAAA,CAAA,aAAA;AAAA,MAAC,kBAAA;AAAA,MAAA;AAAA,QACC,SAAW,EAAA,KAAA;AAAA,QACX,gBAAA,EAAkB,CAAQ,IAAA,KAAA,WAAA,CAAY,IAAI,CAAA;AAAA,OAAA;AAAA,KAC5C,CAAA;AAAA,GAEJ;AAEA,EAAA,iFAEK,KAAA,CAAA,aAAA,CAAA,aAAA,EAAA,EAAc,OAAc,CAC7B,kBAAA,KAAA,CAAA,aAAA,CAAC,QAAK,SAAS,EAAA,IAAA,EAAC,OAAS,EAAA,CAAA,EAAG,WAAU,QACpC,EAAA,kBAAA,KAAA,CAAA,aAAA,CAAC,QAAK,IAAI,EAAA,IAAA,EAAA,sCACP,QACC,EAAA,IAAA,kBAAA,KAAA,CAAA,aAAA;AAAA,IAAC,QAAA;AAAA,IAAA;AAAA,MACC,EAAA;AAAA,MACA,MAAA;AAAA,MACA,UAAA;AAAA,MACA,IAAA;AAAA,MACA,IAAK,EAAA,UAAA;AAAA,MACL,QAAA;AAAA,KAAA;AAAA,GAEJ,CACF,CACF,CACF,CAAA,CAAA;AAEJ;;;;"}
@@ -1,9 +1,9 @@
1
1
  import React from 'react';
2
2
  import { useParams } from 'react-router-dom';
3
- import { useTranslation, useQetaApi, BackToCollectionsButton, CreateCollectionButton, CollectionCard, PostsGrid } from '@drodil/backstage-plugin-qeta-react';
3
+ import { useTranslation, useQetaApi, CollectionFollowButton, BackToCollectionsButton, CreateCollectionButton, CollectionCard, PostsGrid } from '@drodil/backstage-plugin-qeta-react';
4
4
  import { Skeleton } from '@material-ui/lab';
5
5
  import { WarningPanel, ContentHeader } from '@backstage/core-components';
6
- import { Grid } from '@material-ui/core';
6
+ import { Typography, Grid } from '@material-ui/core';
7
7
 
8
8
  const CollectionPage = () => {
9
9
  const { id } = useParams();
@@ -19,10 +19,11 @@ const CollectionPage = () => {
19
19
  if (error || collection === void 0) {
20
20
  return /* @__PURE__ */ React.createElement(WarningPanel, { severity: "error", title: t("questionPage.errorLoading") }, error?.message);
21
21
  }
22
+ const title = /* @__PURE__ */ React.createElement(Typography, { variant: "h5", component: "h2" }, collection.title, /* @__PURE__ */ React.createElement(CollectionFollowButton, { collection }));
22
23
  return /* @__PURE__ */ React.createElement(React.Fragment, null, /* @__PURE__ */ React.createElement(
23
24
  ContentHeader,
24
25
  {
25
- title: collection.title,
26
+ titleComponent: title,
26
27
  description: t("collectionPage.info")
27
28
  },
28
29
  /* @__PURE__ */ React.createElement(BackToCollectionsButton, null),
@@ -1 +1 @@
1
- {"version":3,"file":"CollectionPage.esm.js","sources":["../../../src/components/CollectionPage/CollectionPage.tsx"],"sourcesContent":["import React from 'react';\nimport { useParams } from 'react-router-dom';\nimport {\n BackToCollectionsButton,\n CollectionCard,\n CreateCollectionButton,\n PostsGrid,\n useQetaApi,\n useTranslation,\n} from '@drodil/backstage-plugin-qeta-react';\nimport { Skeleton } from '@material-ui/lab';\nimport { ContentHeader, WarningPanel } from '@backstage/core-components';\nimport { Grid } from '@material-ui/core';\n\nexport const CollectionPage = () => {\n const { id } = useParams();\n const { t } = useTranslation();\n\n const {\n value: collection,\n loading,\n error,\n } = useQetaApi(api => api.getCollection(id), [id]);\n\n if (loading) {\n return <Skeleton variant=\"rect\" height={200} />;\n }\n\n if (error || collection === undefined) {\n return (\n <WarningPanel severity=\"error\" title={t('questionPage.errorLoading')}>\n {error?.message}\n </WarningPanel>\n );\n }\n\n return (\n <>\n <ContentHeader\n title={collection.title}\n description={t('collectionPage.info')}\n >\n <BackToCollectionsButton />\n <CreateCollectionButton />\n </ContentHeader>\n <Grid container>\n <Grid item xs={12}>\n <CollectionCard collection={collection} />\n </Grid>\n <Grid item xs={12}>\n <PostsGrid collectionId={collection.id} />\n </Grid>\n </Grid>\n </>\n );\n};\n"],"names":[],"mappings":";;;;;;;AAcO,MAAM,iBAAiB,MAAM;AAClC,EAAM,MAAA,EAAE,EAAG,EAAA,GAAI,SAAU,EAAA,CAAA;AACzB,EAAM,MAAA,EAAE,CAAE,EAAA,GAAI,cAAe,EAAA,CAAA;AAE7B,EAAM,MAAA;AAAA,IACJ,KAAO,EAAA,UAAA;AAAA,IACP,OAAA;AAAA,IACA,KAAA;AAAA,GACF,GAAI,WAAW,CAAO,GAAA,KAAA,GAAA,CAAI,cAAc,EAAE,CAAA,EAAG,CAAC,EAAE,CAAC,CAAA,CAAA;AAEjD,EAAA,IAAI,OAAS,EAAA;AACX,IAAA,uBAAQ,KAAA,CAAA,aAAA,CAAA,QAAA,EAAA,EAAS,OAAQ,EAAA,MAAA,EAAO,QAAQ,GAAK,EAAA,CAAA,CAAA;AAAA,GAC/C;AAEA,EAAI,IAAA,KAAA,IAAS,eAAe,KAAW,CAAA,EAAA;AACrC,IACE,uBAAA,KAAA,CAAA,aAAA,CAAC,gBAAa,QAAS,EAAA,OAAA,EAAQ,OAAO,CAAE,CAAA,2BAA2B,CAChE,EAAA,EAAA,KAAA,EAAO,OACV,CAAA,CAAA;AAAA,GAEJ;AAEA,EAAA,uBAEI,KAAA,CAAA,aAAA,CAAA,KAAA,CAAA,QAAA,EAAA,IAAA,kBAAA,KAAA,CAAA,aAAA;AAAA,IAAC,aAAA;AAAA,IAAA;AAAA,MACC,OAAO,UAAW,CAAA,KAAA;AAAA,MAClB,WAAA,EAAa,EAAE,qBAAqB,CAAA;AAAA,KAAA;AAAA,wCAEnC,uBAAwB,EAAA,IAAA,CAAA;AAAA,wCACxB,sBAAuB,EAAA,IAAA,CAAA;AAAA,GAE1B,kBAAA,KAAA,CAAA,aAAA,CAAC,IAAK,EAAA,EAAA,SAAA,EAAS,IACb,EAAA,kBAAA,KAAA,CAAA,aAAA,CAAC,IAAK,EAAA,EAAA,IAAA,EAAI,IAAC,EAAA,EAAA,EAAI,EACb,EAAA,kBAAA,KAAA,CAAA,aAAA,CAAC,cAAe,EAAA,EAAA,UAAA,EAAwB,CAC1C,CAAA,kBACC,KAAA,CAAA,aAAA,CAAA,IAAA,EAAA,EAAK,IAAI,EAAA,IAAA,EAAC,EAAI,EAAA,EAAA,EAAA,kBACZ,KAAA,CAAA,aAAA,CAAA,SAAA,EAAA,EAAU,YAAc,EAAA,UAAA,CAAW,EAAI,EAAA,CAC1C,CACF,CACF,CAAA,CAAA;AAEJ;;;;"}
1
+ {"version":3,"file":"CollectionPage.esm.js","sources":["../../../src/components/CollectionPage/CollectionPage.tsx"],"sourcesContent":["import React from 'react';\nimport { useParams } from 'react-router-dom';\nimport {\n BackToCollectionsButton,\n CollectionCard,\n CollectionFollowButton,\n CreateCollectionButton,\n PostsGrid,\n useQetaApi,\n useTranslation,\n} from '@drodil/backstage-plugin-qeta-react';\nimport { Skeleton } from '@material-ui/lab';\nimport { ContentHeader, WarningPanel } from '@backstage/core-components';\nimport { Grid, Typography } from '@material-ui/core';\n\nexport const CollectionPage = () => {\n const { id } = useParams();\n const { t } = useTranslation();\n\n const {\n value: collection,\n loading,\n error,\n } = useQetaApi(api => api.getCollection(id), [id]);\n\n if (loading) {\n return <Skeleton variant=\"rect\" height={200} />;\n }\n\n if (error || collection === undefined) {\n return (\n <WarningPanel severity=\"error\" title={t('questionPage.errorLoading')}>\n {error?.message}\n </WarningPanel>\n );\n }\n\n const title = (\n <Typography variant=\"h5\" component=\"h2\">\n {collection.title}\n <CollectionFollowButton collection={collection} />\n </Typography>\n );\n\n return (\n <>\n <ContentHeader\n titleComponent={title}\n description={t('collectionPage.info')}\n >\n <BackToCollectionsButton />\n <CreateCollectionButton />\n </ContentHeader>\n <Grid container>\n <Grid item xs={12}>\n <CollectionCard collection={collection} />\n </Grid>\n <Grid item xs={12}>\n <PostsGrid collectionId={collection.id} />\n </Grid>\n </Grid>\n </>\n );\n};\n"],"names":[],"mappings":";;;;;;;AAeO,MAAM,iBAAiB,MAAM;AAClC,EAAM,MAAA,EAAE,EAAG,EAAA,GAAI,SAAU,EAAA,CAAA;AACzB,EAAM,MAAA,EAAE,CAAE,EAAA,GAAI,cAAe,EAAA,CAAA;AAE7B,EAAM,MAAA;AAAA,IACJ,KAAO,EAAA,UAAA;AAAA,IACP,OAAA;AAAA,IACA,KAAA;AAAA,GACF,GAAI,WAAW,CAAO,GAAA,KAAA,GAAA,CAAI,cAAc,EAAE,CAAA,EAAG,CAAC,EAAE,CAAC,CAAA,CAAA;AAEjD,EAAA,IAAI,OAAS,EAAA;AACX,IAAA,uBAAQ,KAAA,CAAA,aAAA,CAAA,QAAA,EAAA,EAAS,OAAQ,EAAA,MAAA,EAAO,QAAQ,GAAK,EAAA,CAAA,CAAA;AAAA,GAC/C;AAEA,EAAI,IAAA,KAAA,IAAS,eAAe,KAAW,CAAA,EAAA;AACrC,IACE,uBAAA,KAAA,CAAA,aAAA,CAAC,gBAAa,QAAS,EAAA,OAAA,EAAQ,OAAO,CAAE,CAAA,2BAA2B,CAChE,EAAA,EAAA,KAAA,EAAO,OACV,CAAA,CAAA;AAAA,GAEJ;AAEA,EAAA,MAAM,KACJ,mBAAA,KAAA,CAAA,aAAA,CAAC,UAAW,EAAA,EAAA,OAAA,EAAQ,IAAK,EAAA,SAAA,EAAU,IAChC,EAAA,EAAA,UAAA,CAAW,KACZ,kBAAA,KAAA,CAAA,aAAA,CAAC,sBAAuB,EAAA,EAAA,UAAA,EAAwB,CAClD,CAAA,CAAA;AAGF,EAAA,uBAEI,KAAA,CAAA,aAAA,CAAA,KAAA,CAAA,QAAA,EAAA,IAAA,kBAAA,KAAA,CAAA,aAAA;AAAA,IAAC,aAAA;AAAA,IAAA;AAAA,MACC,cAAgB,EAAA,KAAA;AAAA,MAChB,WAAA,EAAa,EAAE,qBAAqB,CAAA;AAAA,KAAA;AAAA,wCAEnC,uBAAwB,EAAA,IAAA,CAAA;AAAA,wCACxB,sBAAuB,EAAA,IAAA,CAAA;AAAA,GAE1B,kBAAA,KAAA,CAAA,aAAA,CAAC,IAAK,EAAA,EAAA,SAAA,EAAS,IACb,EAAA,kBAAA,KAAA,CAAA,aAAA,CAAC,IAAK,EAAA,EAAA,IAAA,EAAI,IAAC,EAAA,EAAA,EAAI,EACb,EAAA,kBAAA,KAAA,CAAA,aAAA,CAAC,cAAe,EAAA,EAAA,UAAA,EAAwB,CAC1C,CAAA,kBACC,KAAA,CAAA,aAAA,CAAA,IAAA,EAAA,EAAK,IAAI,EAAA,IAAA,EAAC,EAAI,EAAA,EAAA,EAAA,kBACZ,KAAA,CAAA,aAAA,CAAA,SAAA,EAAA,EAAU,YAAc,EAAA,UAAA,CAAW,EAAI,EAAA,CAC1C,CACF,CACF,CAAA,CAAA;AAEJ;;;;"}
@@ -1,10 +1,22 @@
1
1
  import React from 'react';
2
2
  import { ContentHeader } from '@backstage/core-components';
3
- import { useTranslation, CreateCollectionButton, CollectionsGrid } from '@drodil/backstage-plugin-qeta-react';
3
+ import { useTranslation, useCollectionsFollow, CreateCollectionButton, CollectionsGrid, FollowedCollectionsList } from '@drodil/backstage-plugin-qeta-react';
4
+ import { Grid } from '@material-ui/core';
4
5
 
5
6
  const CollectionsPage = () => {
6
7
  const { t } = useTranslation();
7
- return /* @__PURE__ */ React.createElement(React.Fragment, null, /* @__PURE__ */ React.createElement(ContentHeader, { title: t("collectionsPage.title") }, /* @__PURE__ */ React.createElement(CreateCollectionButton, null)), /* @__PURE__ */ React.createElement(CollectionsGrid, null));
8
+ const collections = useCollectionsFollow();
9
+ return /* @__PURE__ */ React.createElement(Grid, { container: true, spacing: 4 }, /* @__PURE__ */ React.createElement(
10
+ Grid,
11
+ {
12
+ item: true,
13
+ md: 12,
14
+ lg: collections.collections.length > 0 ? 9 : 12,
15
+ xl: collections.collections.length > 0 ? 9 : 12
16
+ },
17
+ /* @__PURE__ */ React.createElement(ContentHeader, { title: t("collectionsPage.title") }, /* @__PURE__ */ React.createElement(CreateCollectionButton, null)),
18
+ /* @__PURE__ */ React.createElement(CollectionsGrid, null)
19
+ ), /* @__PURE__ */ React.createElement(Grid, { item: true, lg: 3, xl: 2 }, /* @__PURE__ */ React.createElement(FollowedCollectionsList, null)));
8
20
  };
9
21
 
10
22
  export { CollectionsPage };
@@ -1 +1 @@
1
- {"version":3,"file":"CollectionsPage.esm.js","sources":["../../../src/components/CollectionsPage/CollectionsPage.tsx"],"sourcesContent":["import React from 'react';\nimport { ContentHeader } from '@backstage/core-components';\nimport {\n CollectionsGrid,\n CreateCollectionButton,\n useTranslation,\n} from '@drodil/backstage-plugin-qeta-react';\n\nexport const CollectionsPage = () => {\n const { t } = useTranslation();\n\n return (\n <>\n <ContentHeader title={t('collectionsPage.title')}>\n <CreateCollectionButton />\n </ContentHeader>\n <CollectionsGrid />\n </>\n );\n};\n"],"names":[],"mappings":";;;;AAQO,MAAM,kBAAkB,MAAM;AACnC,EAAM,MAAA,EAAE,CAAE,EAAA,GAAI,cAAe,EAAA,CAAA;AAE7B,EAAA,uBAEI,KAAA,CAAA,aAAA,CAAA,KAAA,CAAA,QAAA,EAAA,IAAA,kBAAA,KAAA,CAAA,aAAA,CAAC,aAAc,EAAA,EAAA,KAAA,EAAO,CAAE,CAAA,uBAAuB,CAC7C,EAAA,kBAAA,KAAA,CAAA,aAAA,CAAC,sBAAuB,EAAA,IAAA,CAC1B,CACA,kBAAA,KAAA,CAAA,aAAA,CAAC,qBAAgB,CACnB,CAAA,CAAA;AAEJ;;;;"}
1
+ {"version":3,"file":"CollectionsPage.esm.js","sources":["../../../src/components/CollectionsPage/CollectionsPage.tsx"],"sourcesContent":["import React from 'react';\nimport { ContentHeader } from '@backstage/core-components';\nimport {\n CollectionsGrid,\n CreateCollectionButton,\n FollowedCollectionsList,\n useCollectionsFollow,\n useTranslation,\n} from '@drodil/backstage-plugin-qeta-react';\nimport { Grid } from '@material-ui/core';\n\nexport const CollectionsPage = () => {\n const { t } = useTranslation();\n const collections = useCollectionsFollow();\n\n return (\n <Grid container spacing={4}>\n <Grid\n item\n md={12}\n lg={collections.collections.length > 0 ? 9 : 12}\n xl={collections.collections.length > 0 ? 9 : 12}\n >\n <ContentHeader title={t('collectionsPage.title')}>\n <CreateCollectionButton />\n </ContentHeader>\n <CollectionsGrid />\n </Grid>\n <Grid item lg={3} xl={2}>\n <FollowedCollectionsList />\n </Grid>\n </Grid>\n );\n};\n"],"names":[],"mappings":";;;;;AAWO,MAAM,kBAAkB,MAAM;AACnC,EAAM,MAAA,EAAE,CAAE,EAAA,GAAI,cAAe,EAAA,CAAA;AAC7B,EAAA,MAAM,cAAc,oBAAqB,EAAA,CAAA;AAEzC,EAAA,uBACG,KAAA,CAAA,aAAA,CAAA,IAAA,EAAA,EAAK,SAAS,EAAA,IAAA,EAAC,SAAS,CACvB,EAAA,kBAAA,KAAA,CAAA,aAAA;AAAA,IAAC,IAAA;AAAA,IAAA;AAAA,MACC,IAAI,EAAA,IAAA;AAAA,MACJ,EAAI,EAAA,EAAA;AAAA,MACJ,EAAI,EAAA,WAAA,CAAY,WAAY,CAAA,MAAA,GAAS,IAAI,CAAI,GAAA,EAAA;AAAA,MAC7C,EAAI,EAAA,WAAA,CAAY,WAAY,CAAA,MAAA,GAAS,IAAI,CAAI,GAAA,EAAA;AAAA,KAAA;AAAA,oBAE7C,KAAA,CAAA,aAAA,CAAC,iBAAc,KAAO,EAAA,CAAA,CAAE,uBAAuB,CAC7C,EAAA,kBAAA,KAAA,CAAA,aAAA,CAAC,4BAAuB,CAC1B,CAAA;AAAA,wCACC,eAAgB,EAAA,IAAA,CAAA;AAAA,GAEnB,kBAAA,KAAA,CAAA,aAAA,CAAC,IAAK,EAAA,EAAA,IAAA,EAAI,IAAC,EAAA,EAAA,EAAI,CAAG,EAAA,EAAA,EAAI,CACpB,EAAA,kBAAA,KAAA,CAAA,aAAA,CAAC,uBAAwB,EAAA,IAAA,CAC3B,CACF,CAAA,CAAA;AAEJ;;;;"}
@@ -40,14 +40,14 @@ const EntityPage = () => {
40
40
  ), resp && /* @__PURE__ */ React.createElement(Card, { variant: "outlined", style: { marginBottom: "1rem" } }, /* @__PURE__ */ React.createElement(CardContent, null, /* @__PURE__ */ React.createElement(Typography, { variant: "caption" }, t("common.posts", {
41
41
  count: resp.postsCount,
42
42
  itemType: "post"
43
- }), " \xB7 ", t("common.followers", { count: resp.followerCount })))), entityRef ? /* @__PURE__ */ React.createElement(PostsContainer, { entity: entityRef }) : /* @__PURE__ */ React.createElement(EntitiesGrid, null)), /* @__PURE__ */ React.createElement(Grid, { item: true, lg: 3, xl: 2 }, /* @__PURE__ */ React.createElement(FollowedEntitiesList, null), /* @__PURE__ */ React.createElement(
43
+ }), " \xB7 ", t("common.followers", { count: resp.followerCount })))), entityRef ? /* @__PURE__ */ React.createElement(PostsContainer, { entity: entityRef }) : /* @__PURE__ */ React.createElement(EntitiesGrid, null)), /* @__PURE__ */ React.createElement(Grid, { item: true, lg: 3, xl: 2 }, /* @__PURE__ */ React.createElement(FollowedEntitiesList, null), resp && /* @__PURE__ */ React.createElement(React.Fragment, null, /* @__PURE__ */ React.createElement(
44
44
  PostHighlightList,
45
45
  {
46
46
  type: "hot",
47
47
  title: t("highlights.hotQuestions.title"),
48
48
  noQuestionsLabel: t("highlights.hotQuestions.noQuestionsLabel"),
49
49
  icon: /* @__PURE__ */ React.createElement(Whatshot, { fontSize: "small" }),
50
- options: { entity: entityRef },
50
+ options: { entity: resp.entityRef },
51
51
  postType: "question"
52
52
  }
53
53
  ), /* @__PURE__ */ React.createElement(
@@ -56,7 +56,7 @@ const EntityPage = () => {
56
56
  type: "unanswered",
57
57
  title: t("highlights.unanswered.title"),
58
58
  noQuestionsLabel: t("highlights.unanswered.noQuestionsLabel"),
59
- options: { entity: entityRef },
59
+ options: { entity: resp.entityRef },
60
60
  postType: "question"
61
61
  }
62
62
  ), /* @__PURE__ */ React.createElement(
@@ -65,10 +65,28 @@ const EntityPage = () => {
65
65
  type: "incorrect",
66
66
  title: t("highlights.incorrect.title"),
67
67
  noQuestionsLabel: t("highlights.incorrect.noQuestionsLabel"),
68
- options: { entity: entityRef },
68
+ options: { entity: resp.entityRef },
69
69
  postType: "question"
70
70
  }
71
- )));
71
+ )), !resp && /* @__PURE__ */ React.createElement(React.Fragment, null, /* @__PURE__ */ React.createElement(
72
+ PostHighlightList,
73
+ {
74
+ type: "hot",
75
+ title: t("highlights.hotQuestions.title"),
76
+ noQuestionsLabel: t("highlights.hotQuestions.noQuestionsLabel"),
77
+ icon: /* @__PURE__ */ React.createElement(Whatshot, { fontSize: "small" }),
78
+ postType: "question"
79
+ }
80
+ ), /* @__PURE__ */ React.createElement(
81
+ PostHighlightList,
82
+ {
83
+ type: "hot",
84
+ title: t("highlights.hotArticles.title"),
85
+ noQuestionsLabel: t("highlights.hotArticles.noArticlesLabel"),
86
+ icon: /* @__PURE__ */ React.createElement(Whatshot, { fontSize: "small" }),
87
+ postType: "article"
88
+ }
89
+ ))));
72
90
  };
73
91
 
74
92
  export { EntityPage };
@@ -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 EntitiesGrid,\n EntityFollowButton,\n FollowedEntitiesList,\n PostHighlightList,\n PostsContainer,\n qetaApiRef,\n useTranslation,\n WriteArticleButton,\n} from '@drodil/backstage-plugin-qeta-react';\nimport { Card, CardContent, Grid, Typography } from '@material-ui/core';\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';\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={9} xl={10}>\n <ContentHeader\n titleComponent={\n <Typography variant=\"h5\" component=\"h2\">\n {shownTitle} {link}\n </Typography>\n }\n >\n {entityRef && <EntityFollowButton entityRef={entityRef} />}\n <AskQuestionButton entity={entityRef} />\n <WriteArticleButton entity={entityRef} />\n </ContentHeader>\n {resp && (\n <Card variant=\"outlined\" style={{ marginBottom: '1rem' }}>\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 entity={entityRef} /> : <EntitiesGrid />}\n </Grid>\n <Grid item lg={3} xl={2}>\n <FollowedEntitiesList />\n <PostHighlightList\n type=\"hot\"\n title={t('highlights.hotQuestions.title')}\n noQuestionsLabel={t('highlights.hotQuestions.noQuestionsLabel')}\n icon={<Whatshot fontSize=\"small\" />}\n options={{ entity: entityRef }}\n postType=\"question\"\n />\n <PostHighlightList\n type=\"unanswered\"\n title={t('highlights.unanswered.title')}\n noQuestionsLabel={t('highlights.unanswered.noQuestionsLabel')}\n options={{ entity: entityRef }}\n postType=\"question\"\n />\n <PostHighlightList\n type=\"incorrect\"\n title={t('highlights.incorrect.title')}\n noQuestionsLabel={t('highlights.incorrect.noQuestionsLabel')}\n options={{ entity: entityRef }}\n postType=\"question\"\n />\n </Grid>\n </Grid>\n );\n};\n"],"names":[],"mappings":"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"}
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 EntitiesGrid,\n EntityFollowButton,\n FollowedEntitiesList,\n PostHighlightList,\n PostsContainer,\n qetaApiRef,\n useTranslation,\n WriteArticleButton,\n} from '@drodil/backstage-plugin-qeta-react';\nimport { Card, CardContent, Grid, Typography } from '@material-ui/core';\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';\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={9} xl={10}>\n <ContentHeader\n titleComponent={\n <Typography variant=\"h5\" component=\"h2\">\n {shownTitle} {link}\n </Typography>\n }\n >\n {entityRef && <EntityFollowButton entityRef={entityRef} />}\n <AskQuestionButton entity={entityRef} />\n <WriteArticleButton entity={entityRef} />\n </ContentHeader>\n {resp && (\n <Card variant=\"outlined\" style={{ marginBottom: '1rem' }}>\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 entity={entityRef} /> : <EntitiesGrid />}\n </Grid>\n <Grid item lg={3} xl={2}>\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={{ entity: 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={{ entity: 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={{ entity: 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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"}
@@ -1,5 +1,5 @@
1
1
  import { ContentHeader } from '@backstage/core-components';
2
- import { useTranslation, useIdentityApi, AskQuestionButton, PostsCard, ImpactCard, FollowedTagsList, FollowedEntitiesList } from '@drodil/backstage-plugin-qeta-react';
2
+ import { useTranslation, useIdentityApi, AskQuestionButton, PostsCard, ImpactCard, FollowedTagsList, FollowedEntitiesList, FollowedCollectionsList } from '@drodil/backstage-plugin-qeta-react';
3
3
  import React from 'react';
4
4
  import { Grid } from '@material-ui/core';
5
5
 
@@ -26,7 +26,7 @@ const HomePage = () => {
26
26
  options: { noAnswers: true, random: true, type: "question" },
27
27
  postType: "question"
28
28
  }
29
- )))), /* @__PURE__ */ React.createElement(Grid, { item: true, lg: 3, xl: 2 }, /* @__PURE__ */ React.createElement(ImpactCard, null), /* @__PURE__ */ React.createElement(FollowedTagsList, null), /* @__PURE__ */ React.createElement(FollowedEntitiesList, null)));
29
+ )))), /* @__PURE__ */ React.createElement(Grid, { item: true, lg: 3, xl: 2 }, /* @__PURE__ */ React.createElement(ImpactCard, null), /* @__PURE__ */ React.createElement(FollowedTagsList, null), /* @__PURE__ */ React.createElement(FollowedEntitiesList, null), /* @__PURE__ */ React.createElement(FollowedCollectionsList, null)));
30
30
  };
31
31
 
32
32
  export { HomePage };
@@ -1 +1 @@
1
- {"version":3,"file":"HomePage.esm.js","sources":["../../../src/components/HomePage/HomePage.tsx"],"sourcesContent":["import { ContentHeader } from '@backstage/core-components';\nimport {\n AskQuestionButton,\n FollowedEntitiesList,\n FollowedTagsList,\n ImpactCard,\n PostsCard,\n useIdentityApi,\n useTranslation,\n} from '@drodil/backstage-plugin-qeta-react';\nimport React from 'react';\nimport { Grid } from '@material-ui/core';\n\nexport const HomePage = () => {\n const { t } = useTranslation();\n const {\n value: user,\n loading: loadingUser,\n error: userError,\n } = useIdentityApi(api => api.getBackstageIdentity(), []);\n\n return (\n <Grid container spacing={4}>\n <Grid item md={12} lg={9} xl={10}>\n <ContentHeader title={t('homePage.title')}>\n <AskQuestionButton />\n </ContentHeader>\n <Grid container>\n {user && !loadingUser && !userError && (\n <Grid item xs={12}>\n <PostsCard\n type=\"own\"\n title={t('highlights.own.title')}\n options={{ author: user.userEntityRef }}\n postType=\"question\"\n />\n </Grid>\n )}\n <Grid item xs={12}>\n <PostsCard\n type=\"own\"\n title={t('highlights.unanswered.title')}\n options={{ noAnswers: true, random: true, type: 'question' }}\n postType=\"question\"\n />\n </Grid>\n </Grid>\n </Grid>\n <Grid item lg={3} xl={2}>\n <ImpactCard />\n <FollowedTagsList />\n <FollowedEntitiesList />\n </Grid>\n </Grid>\n );\n};\n"],"names":[],"mappings":";;;;;AAaO,MAAM,WAAW,MAAM;AAC5B,EAAM,MAAA,EAAE,CAAE,EAAA,GAAI,cAAe,EAAA,CAAA;AAC7B,EAAM,MAAA;AAAA,IACJ,KAAO,EAAA,IAAA;AAAA,IACP,OAAS,EAAA,WAAA;AAAA,IACT,KAAO,EAAA,SAAA;AAAA,MACL,cAAe,CAAA,CAAA,GAAA,KAAO,IAAI,oBAAqB,EAAA,EAAG,EAAE,CAAA,CAAA;AAExD,EAAA,2CACG,IAAK,EAAA,EAAA,SAAA,EAAS,MAAC,OAAS,EAAA,CAAA,EAAA,sCACtB,IAAK,EAAA,EAAA,IAAA,EAAI,IAAC,EAAA,EAAA,EAAI,IAAI,EAAI,EAAA,CAAA,EAAG,IAAI,EAC5B,EAAA,kBAAA,KAAA,CAAA,aAAA,CAAC,iBAAc,KAAO,EAAA,CAAA,CAAE,gBAAgB,CAAA,EAAA,sCACrC,iBAAkB,EAAA,IAAA,CACrB,mBACC,KAAA,CAAA,aAAA,CAAA,IAAA,EAAA,EAAK,WAAS,IACZ,EAAA,EAAA,IAAA,IAAQ,CAAC,WAAA,IAAe,CAAC,SACxB,oBAAA,KAAA,CAAA,aAAA,CAAC,QAAK,IAAI,EAAA,IAAA,EAAC,IAAI,EACb,EAAA,kBAAA,KAAA,CAAA,aAAA;AAAA,IAAC,SAAA;AAAA,IAAA;AAAA,MACC,IAAK,EAAA,KAAA;AAAA,MACL,KAAA,EAAO,EAAE,sBAAsB,CAAA;AAAA,MAC/B,OAAS,EAAA,EAAE,MAAQ,EAAA,IAAA,CAAK,aAAc,EAAA;AAAA,MACtC,QAAS,EAAA,UAAA;AAAA,KAAA;AAAA,GAEb,CAEF,kBAAA,KAAA,CAAA,aAAA,CAAC,QAAK,IAAI,EAAA,IAAA,EAAC,IAAI,EACb,EAAA,kBAAA,KAAA,CAAA,aAAA;AAAA,IAAC,SAAA;AAAA,IAAA;AAAA,MACC,IAAK,EAAA,KAAA;AAAA,MACL,KAAA,EAAO,EAAE,6BAA6B,CAAA;AAAA,MACtC,SAAS,EAAE,SAAA,EAAW,MAAM,MAAQ,EAAA,IAAA,EAAM,MAAM,UAAW,EAAA;AAAA,MAC3D,QAAS,EAAA,UAAA;AAAA,KAAA;AAAA,GAEb,CACF,CACF,CAAA,sCACC,IAAK,EAAA,EAAA,IAAA,EAAI,MAAC,EAAI,EAAA,CAAA,EAAG,IAAI,CACpB,EAAA,kBAAA,KAAA,CAAA,aAAA,CAAC,gBAAW,CACZ,kBAAA,KAAA,CAAA,aAAA,CAAC,sBAAiB,CAClB,kBAAA,KAAA,CAAA,aAAA,CAAC,oBAAqB,EAAA,IAAA,CACxB,CACF,CAAA,CAAA;AAEJ;;;;"}
1
+ {"version":3,"file":"HomePage.esm.js","sources":["../../../src/components/HomePage/HomePage.tsx"],"sourcesContent":["import { ContentHeader } from '@backstage/core-components';\nimport {\n AskQuestionButton,\n FollowedCollectionsList,\n FollowedEntitiesList,\n FollowedTagsList,\n ImpactCard,\n PostsCard,\n useIdentityApi,\n useTranslation,\n} from '@drodil/backstage-plugin-qeta-react';\nimport React from 'react';\nimport { Grid } from '@material-ui/core';\n\nexport const HomePage = () => {\n const { t } = useTranslation();\n const {\n value: user,\n loading: loadingUser,\n error: userError,\n } = useIdentityApi(api => api.getBackstageIdentity(), []);\n\n return (\n <Grid container spacing={4}>\n <Grid item md={12} lg={9} xl={10}>\n <ContentHeader title={t('homePage.title')}>\n <AskQuestionButton />\n </ContentHeader>\n <Grid container>\n {user && !loadingUser && !userError && (\n <Grid item xs={12}>\n <PostsCard\n type=\"own\"\n title={t('highlights.own.title')}\n options={{ author: user.userEntityRef }}\n postType=\"question\"\n />\n </Grid>\n )}\n <Grid item xs={12}>\n <PostsCard\n type=\"own\"\n title={t('highlights.unanswered.title')}\n options={{ noAnswers: true, random: true, type: 'question' }}\n postType=\"question\"\n />\n </Grid>\n </Grid>\n </Grid>\n <Grid item lg={3} xl={2}>\n <ImpactCard />\n <FollowedTagsList />\n <FollowedEntitiesList />\n <FollowedCollectionsList />\n </Grid>\n </Grid>\n );\n};\n"],"names":[],"mappings":";;;;;AAcO,MAAM,WAAW,MAAM;AAC5B,EAAM,MAAA,EAAE,CAAE,EAAA,GAAI,cAAe,EAAA,CAAA;AAC7B,EAAM,MAAA;AAAA,IACJ,KAAO,EAAA,IAAA;AAAA,IACP,OAAS,EAAA,WAAA;AAAA,IACT,KAAO,EAAA,SAAA;AAAA,MACL,cAAe,CAAA,CAAA,GAAA,KAAO,IAAI,oBAAqB,EAAA,EAAG,EAAE,CAAA,CAAA;AAExD,EAAA,2CACG,IAAK,EAAA,EAAA,SAAA,EAAS,MAAC,OAAS,EAAA,CAAA,EAAA,sCACtB,IAAK,EAAA,EAAA,IAAA,EAAI,IAAC,EAAA,EAAA,EAAI,IAAI,EAAI,EAAA,CAAA,EAAG,IAAI,EAC5B,EAAA,kBAAA,KAAA,CAAA,aAAA,CAAC,iBAAc,KAAO,EAAA,CAAA,CAAE,gBAAgB,CAAA,EAAA,sCACrC,iBAAkB,EAAA,IAAA,CACrB,mBACC,KAAA,CAAA,aAAA,CAAA,IAAA,EAAA,EAAK,WAAS,IACZ,EAAA,EAAA,IAAA,IAAQ,CAAC,WAAA,IAAe,CAAC,SACxB,oBAAA,KAAA,CAAA,aAAA,CAAC,QAAK,IAAI,EAAA,IAAA,EAAC,IAAI,EACb,EAAA,kBAAA,KAAA,CAAA,aAAA;AAAA,IAAC,SAAA;AAAA,IAAA;AAAA,MACC,IAAK,EAAA,KAAA;AAAA,MACL,KAAA,EAAO,EAAE,sBAAsB,CAAA;AAAA,MAC/B,OAAS,EAAA,EAAE,MAAQ,EAAA,IAAA,CAAK,aAAc,EAAA;AAAA,MACtC,QAAS,EAAA,UAAA;AAAA,KAAA;AAAA,GAEb,CAEF,kBAAA,KAAA,CAAA,aAAA,CAAC,QAAK,IAAI,EAAA,IAAA,EAAC,IAAI,EACb,EAAA,kBAAA,KAAA,CAAA,aAAA;AAAA,IAAC,SAAA;AAAA,IAAA;AAAA,MACC,IAAK,EAAA,KAAA;AAAA,MACL,KAAA,EAAO,EAAE,6BAA6B,CAAA;AAAA,MACtC,SAAS,EAAE,SAAA,EAAW,MAAM,MAAQ,EAAA,IAAA,EAAM,MAAM,UAAW,EAAA;AAAA,MAC3D,QAAS,EAAA,UAAA;AAAA,KAAA;AAAA,GAEb,CACF,CACF,CACA,kBAAA,KAAA,CAAA,aAAA,CAAC,QAAK,IAAI,EAAA,IAAA,EAAC,EAAI,EAAA,CAAA,EAAG,EAAI,EAAA,CAAA,EAAA,sCACnB,UAAW,EAAA,IAAA,CAAA,kBACX,KAAA,CAAA,aAAA,CAAA,gBAAA,EAAA,IAAiB,CAClB,kBAAA,KAAA,CAAA,aAAA,CAAC,0BAAqB,CACtB,kBAAA,KAAA,CAAA,aAAA,CAAC,uBAAwB,EAAA,IAAA,CAC3B,CACF,CAAA,CAAA;AAEJ;;;;"}
@@ -0,0 +1,28 @@
1
+ import React, { useState } from 'react';
2
+ import { useIsModerator, useTranslation, TemplateList } from '@drodil/backstage-plugin-qeta-react';
3
+ import { Box, Tab } from '@material-ui/core';
4
+ import { ContentHeader } from '@backstage/core-components';
5
+ import { TabContext, TabList, TabPanel, Alert } from '@material-ui/lab';
6
+
7
+ const ModeratorPage = () => {
8
+ const { isModerator } = useIsModerator();
9
+ const [tab, setTab] = useState("templates");
10
+ const { t } = useTranslation();
11
+ if (!isModerator) {
12
+ return null;
13
+ }
14
+ const handleChange = (_event, newValue) => {
15
+ setTab(newValue);
16
+ };
17
+ return /* @__PURE__ */ React.createElement(React.Fragment, null, /* @__PURE__ */ React.createElement(ContentHeader, { title: t("moderatorPage.title") }), /* @__PURE__ */ React.createElement(TabContext, { value: tab }, /* @__PURE__ */ React.createElement(Box, { sx: { borderBottom: 1, borderColor: "divider" } }, /* @__PURE__ */ React.createElement(
18
+ TabList,
19
+ {
20
+ onChange: handleChange,
21
+ "aria-label": t("moderatorPage.tools")
22
+ },
23
+ /* @__PURE__ */ React.createElement(Tab, { label: t("moderatorPage.templates"), value: "templates" })
24
+ )), /* @__PURE__ */ React.createElement(TabPanel, { value: "templates" }, /* @__PURE__ */ React.createElement(Alert, { severity: "info" }, t("moderatorPage.templatesInfo")), /* @__PURE__ */ React.createElement(TemplateList, null))));
25
+ };
26
+
27
+ export { ModeratorPage };
28
+ //# sourceMappingURL=ModeratorPage.esm.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ModeratorPage.esm.js","sources":["../../../src/components/ModeratorPage/ModeratorPage.tsx"],"sourcesContent":["import React, { useState } from 'react';\nimport {\n TemplateList,\n useIsModerator,\n useTranslation,\n} from '@drodil/backstage-plugin-qeta-react';\nimport { Box, Tab } from '@material-ui/core';\nimport { ContentHeader } from '@backstage/core-components';\nimport { Alert, TabContext, TabList, TabPanel } from '@material-ui/lab';\n\nexport const ModeratorPage = () => {\n const { isModerator } = useIsModerator();\n const [tab, setTab] = useState('templates');\n const { t } = useTranslation();\n\n if (!isModerator) {\n return null;\n }\n\n const handleChange = (_event: React.ChangeEvent<{}>, newValue: string) => {\n setTab(newValue);\n };\n\n return (\n <>\n <ContentHeader title={t('moderatorPage.title')} />\n <TabContext value={tab}>\n <Box sx={{ borderBottom: 1, borderColor: 'divider' }}>\n <TabList\n onChange={handleChange}\n aria-label={t('moderatorPage.tools')}\n >\n <Tab label={t('moderatorPage.templates')} value=\"templates\" />\n </TabList>\n </Box>\n <TabPanel value=\"templates\">\n <Alert severity=\"info\">{t('moderatorPage.templatesInfo')}</Alert>\n <TemplateList />\n </TabPanel>\n </TabContext>\n </>\n );\n};\n"],"names":[],"mappings":";;;;;;AAUO,MAAM,gBAAgB,MAAM;AACjC,EAAM,MAAA,EAAE,WAAY,EAAA,GAAI,cAAe,EAAA,CAAA;AACvC,EAAA,MAAM,CAAC,GAAA,EAAK,MAAM,CAAA,GAAI,SAAS,WAAW,CAAA,CAAA;AAC1C,EAAM,MAAA,EAAE,CAAE,EAAA,GAAI,cAAe,EAAA,CAAA;AAE7B,EAAA,IAAI,CAAC,WAAa,EAAA;AAChB,IAAO,OAAA,IAAA,CAAA;AAAA,GACT;AAEA,EAAM,MAAA,YAAA,GAAe,CAAC,MAAA,EAA+B,QAAqB,KAAA;AACxE,IAAA,MAAA,CAAO,QAAQ,CAAA,CAAA;AAAA,GACjB,CAAA;AAEA,EACE,uBAAA,KAAA,CAAA,aAAA,CAAA,KAAA,CAAA,QAAA,EAAA,IAAA,sCACG,aAAc,EAAA,EAAA,KAAA,EAAO,EAAE,qBAAqB,CAAA,EAAG,mBAC/C,KAAA,CAAA,aAAA,CAAA,UAAA,EAAA,EAAW,OAAO,GACjB,EAAA,kBAAA,KAAA,CAAA,aAAA,CAAC,OAAI,EAAI,EAAA,EAAE,cAAc,CAAG,EAAA,WAAA,EAAa,WACvC,EAAA,kBAAA,KAAA,CAAA,aAAA;AAAA,IAAC,OAAA;AAAA,IAAA;AAAA,MACC,QAAU,EAAA,YAAA;AAAA,MACV,YAAA,EAAY,EAAE,qBAAqB,CAAA;AAAA,KAAA;AAAA,wCAElC,GAAI,EAAA,EAAA,KAAA,EAAO,EAAE,yBAAyB,CAAA,EAAG,OAAM,WAAY,EAAA,CAAA;AAAA,GAEhE,CACA,kBAAA,KAAA,CAAA,aAAA,CAAC,YAAS,KAAM,EAAA,WAAA,EAAA,sCACb,KAAM,EAAA,EAAA,QAAA,EAAS,MAAQ,EAAA,EAAA,CAAA,CAAE,6BAA6B,CAAE,CAAA,sCACxD,YAAa,EAAA,IAAA,CAChB,CACF,CACF,CAAA,CAAA;AAEJ;;;;"}
@@ -8,7 +8,7 @@ import { TagPage } from '../TagPage/TagPage.esm.js';
8
8
  import { UserPage } from '../UserPage/UserPage.esm.js';
9
9
  import { FavoritePage } from '../FavoritePage/FavoritePage.esm.js';
10
10
  import { StatisticsPage } from '../Statistics/StatisticsPage.esm.js';
11
- import { useStyles, LeftMenu, LeftMenuButton, questionsRouteRef, askRouteRef, articlesRouteRef, writeRouteRef, favoriteQuestionsRouteRef, editQuestionRouteRef, editArticleRouteRef, questionRouteRef, articleRouteRef, tagsRouteRef, tagRouteRef, usersRouteRef, userRouteRef, statisticsRouteRef, collectionsRouteRef, collectionCreateRouteRef, collectionEditRouteRef, collectionRouteRef, entitiesRouteRef, entityRouteRef } from '@drodil/backstage-plugin-qeta-react';
11
+ import { useStyles, LeftMenu, LeftMenuButton, 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';
12
12
  import { QuestionsPage } from '../QuestionsPage/QuestionsPage.esm.js';
13
13
  import { HomePage } from '../HomePage/HomePage.esm.js';
14
14
  import { ArticlesPage } from '../ArticlesPage/ArticlesPage.esm.js';
@@ -19,6 +19,7 @@ import { CollectionPage } from '../CollectionPage/CollectionPage.esm.js';
19
19
  import { CollectionCreatePage } from '../CollectionCreatePage/CollectionCreatePage.esm.js';
20
20
  import { EntityPage } from '../EntityPage/EntityPage.esm.js';
21
21
  import { UsersPage } from '../UsersPage/UsersPage.esm.js';
22
+ import { ModeratorPage } from '../ModeratorPage/ModeratorPage.esm.js';
22
23
 
23
24
  const QetaPage = (props) => {
24
25
  const {
@@ -111,7 +112,13 @@ const QetaPage = (props) => {
111
112
  path: collectionRouteRef.path,
112
113
  element: /* @__PURE__ */ React.createElement(CollectionPage, null)
113
114
  }
114
- ), /* @__PURE__ */ React.createElement(Route, { path: entitiesRouteRef.path, element: /* @__PURE__ */ React.createElement(EntityPage, null) }), /* @__PURE__ */ React.createElement(Route, { path: entityRouteRef.path, element: /* @__PURE__ */ React.createElement(EntityPage, null) }))
115
+ ), /* @__PURE__ */ React.createElement(Route, { path: entitiesRouteRef.path, element: /* @__PURE__ */ React.createElement(EntityPage, null) }), /* @__PURE__ */ React.createElement(Route, { path: entityRouteRef.path, element: /* @__PURE__ */ React.createElement(EntityPage, null) }), /* @__PURE__ */ React.createElement(
116
+ Route,
117
+ {
118
+ path: moderatorRouteRef.path,
119
+ element: /* @__PURE__ */ React.createElement(ModeratorPage, null)
120
+ }
121
+ ))
115
122
  )))));
116
123
  };
117
124
 
@@ -1 +1 @@
1
- {"version":3,"file":"QetaPage.esm.js","sources":["../../../src/components/QetaPage/QetaPage.tsx"],"sourcesContent":["import React, { ReactNode } from 'react';\nimport { Box, Container, Grid } from '@material-ui/core';\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 questionRouteRef,\n questionsRouteRef,\n statisticsRouteRef,\n tagRouteRef,\n tagsRouteRef,\n userRouteRef,\n usersRouteRef,\n useStyles,\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';\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 const styles = useStyles();\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} className={styles.noPadding}>\n <LeftMenu />\n </Grid>\n <Grid\n item\n md={12}\n lg={10}\n style={{ paddingLeft: '0', paddingRight: '0' }}\n >\n <Box display={{ md: 'block', lg: 'none' }}>\n <LeftMenuButton />\n </Box>\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 </Routes>\n </Grid>\n </Grid>\n </Container>\n </Content>\n </Page>\n );\n};\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"QetaPage.esm.js","sources":["../../../src/components/QetaPage/QetaPage.tsx"],"sourcesContent":["import React, { ReactNode } from 'react';\nimport { Box, Container, Grid } from '@material-ui/core';\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 useStyles,\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';\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 const styles = useStyles();\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} className={styles.noPadding}>\n <LeftMenu />\n </Grid>\n <Grid\n item\n md={12}\n lg={10}\n style={{ paddingLeft: '0', paddingRight: '0' }}\n >\n <Box display={{ md: 'block', lg: 'none' }}>\n <LeftMenuButton />\n </Box>\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,14 +25,14 @@ const TagPage = () => {
25
25
  return /* @__PURE__ */ React.createElement(Grid, { container: true, spacing: 4 }, /* @__PURE__ */ React.createElement(Grid, { item: true, md: 12, lg: 9, xl: 10 }, /* @__PURE__ */ React.createElement(ContentHeader, { title: tag ? `#${tag}` : t("tagPage.defaultTitle") }, 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: "1rem" } }, /* @__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(PostsContainer, { tags: [tag ?? ""] }) : /* @__PURE__ */ React.createElement(TagsGrid, null)), /* @__PURE__ */ React.createElement(Grid, { item: true, lg: 3, xl: 2 }, /* @__PURE__ */ React.createElement(FollowedTagsList, null), /* @__PURE__ */ React.createElement(
28
+ }), " \xB7 ", t("common.followers", { count: resp.followerCount })), resp.description && /* @__PURE__ */ React.createElement(MarkdownRenderer, { content: resp.description }))), tag ? /* @__PURE__ */ React.createElement(PostsContainer, { tags: [tag ?? ""] }) : /* @__PURE__ */ React.createElement(TagsGrid, null)), /* @__PURE__ */ React.createElement(Grid, { item: true, lg: 3, xl: 2 }, /* @__PURE__ */ React.createElement(FollowedTagsList, null), resp && /* @__PURE__ */ React.createElement(React.Fragment, null, /* @__PURE__ */ React.createElement(
29
29
  PostHighlightList,
30
30
  {
31
31
  type: "hot",
32
32
  title: t("highlights.hotQuestions.title"),
33
33
  noQuestionsLabel: t("highlights.hotQuestions.noQuestionsLabel"),
34
34
  icon: /* @__PURE__ */ React.createElement(Whatshot, { fontSize: "small" }),
35
- options: { tags: [tag ?? ""] },
35
+ options: { tags: [resp.tag] },
36
36
  postType: "question"
37
37
  }
38
38
  ), /* @__PURE__ */ React.createElement(
@@ -41,7 +41,7 @@ const TagPage = () => {
41
41
  type: "unanswered",
42
42
  title: t("highlights.unanswered.title"),
43
43
  noQuestionsLabel: t("highlights.unanswered.noQuestionsLabel"),
44
- options: { tags: [tag ?? ""] },
44
+ options: { tags: [resp.tag] },
45
45
  postType: "question"
46
46
  }
47
47
  ), /* @__PURE__ */ React.createElement(
@@ -50,10 +50,28 @@ const TagPage = () => {
50
50
  type: "incorrect",
51
51
  title: t("highlights.incorrect.title"),
52
52
  noQuestionsLabel: t("highlights.incorrect.noQuestionsLabel"),
53
- options: { tags: [tag ?? ""] },
53
+ options: { tags: [resp.tag] },
54
54
  postType: "question"
55
55
  }
56
- )));
56
+ )), !resp && /* @__PURE__ */ React.createElement(React.Fragment, null, /* @__PURE__ */ React.createElement(
57
+ PostHighlightList,
58
+ {
59
+ type: "hot",
60
+ title: t("highlights.hotQuestions.title"),
61
+ noQuestionsLabel: t("highlights.hotQuestions.noQuestionsLabel"),
62
+ icon: /* @__PURE__ */ React.createElement(Whatshot, { fontSize: "small" }),
63
+ postType: "question"
64
+ }
65
+ ), /* @__PURE__ */ React.createElement(
66
+ PostHighlightList,
67
+ {
68
+ type: "hot",
69
+ title: t("highlights.hotArticles.title"),
70
+ noQuestionsLabel: t("highlights.hotArticles.noArticlesLabel"),
71
+ icon: /* @__PURE__ */ React.createElement(Whatshot, { fontSize: "small" }),
72
+ postType: "article"
73
+ }
74
+ ))));
57
75
  };
58
76
 
59
77
  export { TagPage };
@@ -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 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 { Card, CardContent, Grid, Typography } from '@material-ui/core';\nimport Whatshot from '@material-ui/icons/Whatshot';\nimport { useApi } from '@backstage/core-plugin-api';\nimport { TagResponse } from '@drodil/backstage-plugin-qeta-common';\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={9} xl={10}>\n <ContentHeader title={tag ? `#${tag}` : t('tagPage.defaultTitle')}>\n {tag && <TagFollowButton tag={tag} />}\n <AskQuestionButton tags={tag ? [tag] : undefined} />\n <WriteArticleButton tags={tag ? [tag] : undefined} />\n </ContentHeader>\n {resp && (\n <Card variant=\"outlined\" style={{ marginBottom: '1rem' }}>\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 tags={[tag ?? '']} /> : <TagsGrid />}\n </Grid>\n <Grid item lg={3} xl={2}>\n <FollowedTagsList />\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: [tag ?? ''] }}\n postType=\"question\"\n />\n <PostHighlightList\n type=\"unanswered\"\n title={t('highlights.unanswered.title')}\n noQuestionsLabel={t('highlights.unanswered.noQuestionsLabel')}\n options={{ tags: [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: [tag ?? ''] }}\n postType=\"question\"\n />\n </Grid>\n </Grid>\n );\n};\n"],"names":[],"mappings":"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"}
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 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 { Card, CardContent, Grid, Typography } from '@material-ui/core';\nimport Whatshot from '@material-ui/icons/Whatshot';\nimport { useApi } from '@backstage/core-plugin-api';\nimport { TagResponse } from '@drodil/backstage-plugin-qeta-common';\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={9} xl={10}>\n <ContentHeader title={tag ? `#${tag}` : t('tagPage.defaultTitle')}>\n {tag && <TagFollowButton tag={tag} />}\n <AskQuestionButton tags={tag ? [tag] : undefined} />\n <WriteArticleButton tags={tag ? [tag] : undefined} />\n </ContentHeader>\n {resp && (\n <Card variant=\"outlined\" style={{ marginBottom: '1rem' }}>\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 tags={[tag ?? '']} /> : <TagsGrid />}\n </Grid>\n <Grid item lg={3} xl={2}>\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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"}
@@ -1,8 +1,8 @@
1
1
  import React, { useState } from 'react';
2
2
  import { ContentHeader } from '@backstage/core-components';
3
3
  import { useParams, useSearchParams } from 'react-router-dom';
4
- import { useTranslation, AskQuestionButton, WriteArticleButton, PostsContainer, PostsGrid, AnswersContainer } from '@drodil/backstage-plugin-qeta-react';
5
- import { Box, Tab } from '@material-ui/core';
4
+ import { useTranslation, useIdentityApi, UserFollowButton, AskQuestionButton, WriteArticleButton, PostsContainer, PostsGrid, CollectionsGrid, AnswersContainer } from '@drodil/backstage-plugin-qeta-react';
5
+ import { Typography, Box, Tab } from '@material-ui/core';
6
6
  import { useEntityPresentation } from '@backstage/plugin-catalog-react';
7
7
  import { TabContext, TabList, TabPanel } from '@material-ui/lab';
8
8
  import { UserStatsContent } from './UserStatsContent.esm.js';
@@ -13,11 +13,17 @@ const UserPage = () => {
13
13
  const [tab, setTab] = useState("statistics");
14
14
  const { t } = useTranslation();
15
15
  const [_searchParams, setSearchParams] = useSearchParams();
16
+ const {
17
+ value: user,
18
+ loading: loadingUser,
19
+ error: userError
20
+ } = useIdentityApi((api) => api.getBackstageIdentity(), []);
16
21
  const handleChange = (_event, newValue) => {
17
22
  setSearchParams({});
18
23
  setTab(newValue);
19
24
  };
20
- return /* @__PURE__ */ React.createElement(React.Fragment, null, /* @__PURE__ */ React.createElement(ContentHeader, { title: `${presentation.primaryTitle}` }, /* @__PURE__ */ React.createElement(AskQuestionButton, null), /* @__PURE__ */ React.createElement(WriteArticleButton, null)), /* @__PURE__ */ React.createElement(TabContext, { value: tab }, /* @__PURE__ */ React.createElement(Box, { sx: { borderBottom: 1, borderColor: "divider" } }, /* @__PURE__ */ React.createElement(
25
+ const title = /* @__PURE__ */ React.createElement(Typography, { variant: "h5", component: "h2" }, presentation.primaryTitle, !loadingUser && !userError && user?.userEntityRef !== identity && /* @__PURE__ */ React.createElement(UserFollowButton, { userRef: identity }));
26
+ return /* @__PURE__ */ React.createElement(React.Fragment, null, /* @__PURE__ */ React.createElement(ContentHeader, { titleComponent: title }, /* @__PURE__ */ React.createElement(AskQuestionButton, null), /* @__PURE__ */ React.createElement(WriteArticleButton, null)), /* @__PURE__ */ React.createElement(TabContext, { value: tab }, /* @__PURE__ */ React.createElement(Box, { sx: { borderBottom: 1, borderColor: "divider" } }, /* @__PURE__ */ React.createElement(
21
27
  TabList,
22
28
  {
23
29
  onChange: handleChange,
@@ -26,6 +32,7 @@ const UserPage = () => {
26
32
  /* @__PURE__ */ React.createElement(Tab, { label: t("userPage.statistics"), value: "statistics" }),
27
33
  /* @__PURE__ */ React.createElement(Tab, { label: t("userPage.questions"), value: "questions" }),
28
34
  /* @__PURE__ */ React.createElement(Tab, { label: t("userPage.articles"), value: "articles" }),
35
+ /* @__PURE__ */ React.createElement(Tab, { label: t("userPage.collections"), value: "collections" }),
29
36
  /* @__PURE__ */ React.createElement(Tab, { label: t("userPage.answers"), value: "answers" })
30
37
  )), /* @__PURE__ */ React.createElement(TabPanel, { value: "statistics" }, /* @__PURE__ */ React.createElement(UserStatsContent, { userRef: identity ?? "" })), /* @__PURE__ */ React.createElement(TabPanel, { value: "questions" }, /* @__PURE__ */ React.createElement(
31
38
  PostsContainer,
@@ -34,7 +41,7 @@ const UserPage = () => {
34
41
  showNoQuestionsBtn: false,
35
42
  type: "question"
36
43
  }
37
- )), /* @__PURE__ */ React.createElement(TabPanel, { value: "articles" }, /* @__PURE__ */ React.createElement(PostsGrid, { author: identity ?? "", type: "article" })), /* @__PURE__ */ React.createElement(TabPanel, { value: "answers" }, /* @__PURE__ */ React.createElement(
44
+ )), /* @__PURE__ */ React.createElement(TabPanel, { value: "articles" }, /* @__PURE__ */ React.createElement(PostsGrid, { author: identity ?? "", type: "article" })), /* @__PURE__ */ React.createElement(TabPanel, { value: "collections" }, /* @__PURE__ */ React.createElement(CollectionsGrid, { owner: identity ?? "" })), /* @__PURE__ */ React.createElement(TabPanel, { value: "answers" }, /* @__PURE__ */ React.createElement(
38
45
  AnswersContainer,
39
46
  {
40
47
  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 PostsContainer,\n PostsGrid,\n useTranslation,\n WriteArticleButton,\n} from '@drodil/backstage-plugin-qeta-react';\nimport { Box, Tab } from '@material-ui/core';\nimport { useEntityPresentation } from '@backstage/plugin-catalog-react';\nimport { TabContext, TabList, TabPanel } from '@material-ui/lab';\nimport { UserStatsContent } from './UserStatsContent';\n\nexport const UserPage = () => {\n const identity = useParams()['*'] ?? 'unknown';\n const presentation = useEntityPresentation(identity);\n const [tab, setTab] = useState('statistics');\n const { t } = useTranslation();\n const [_searchParams, setSearchParams] = useSearchParams();\n\n const handleChange = (_event: React.ChangeEvent<{}>, newValue: string) => {\n setSearchParams({});\n setTab(newValue);\n };\n return (\n <>\n <ContentHeader title={`${presentation.primaryTitle}`}>\n <AskQuestionButton />\n <WriteArticleButton />\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.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 author={identity ?? ''} type=\"article\" />\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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"}
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 CollectionsGrid,\n PostsContainer,\n PostsGrid,\n useIdentityApi,\n UserFollowButton,\n useTranslation,\n WriteArticleButton,\n} from '@drodil/backstage-plugin-qeta-react';\nimport { Box, Tab, Typography } from '@material-ui/core';\nimport { useEntityPresentation } from '@backstage/plugin-catalog-react';\nimport { TabContext, TabList, TabPanel } from '@material-ui/lab';\nimport { UserStatsContent } from './UserStatsContent';\n\nexport const UserPage = () => {\n const identity = useParams()['*'] ?? 'unknown';\n const presentation = useEntityPresentation(identity);\n const [tab, setTab] = useState('statistics');\n const { t } = useTranslation();\n const [_searchParams, setSearchParams] = useSearchParams();\n const {\n value: user,\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 <Typography variant=\"h5\" component=\"h2\">\n {presentation.primaryTitle}\n {!loadingUser && !userError && user?.userEntityRef !== identity && (\n <UserFollowButton userRef={identity} />\n )}\n </Typography>\n );\n\n return (\n <>\n <ContentHeader titleComponent={title}>\n <AskQuestionButton />\n <WriteArticleButton />\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 author={identity ?? ''} type=\"article\" />\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.2.1",
10
+ "version": "3.4.0",
11
11
  "main": "dist/index.esm.js",
12
12
  "types": "dist/index.d.ts",
13
13
  "prepublishOnly": "yarn tsc && yarn build",
@@ -53,8 +53,8 @@
53
53
  "@backstage/plugin-catalog-react": "^1.14.0",
54
54
  "@backstage/plugin-home-react": "^0.1.18",
55
55
  "@backstage/plugin-signals-react": "^0.0.6",
56
- "@drodil/backstage-plugin-qeta-common": "^3.2.1",
57
- "@drodil/backstage-plugin-qeta-react": "^3.2.1",
56
+ "@drodil/backstage-plugin-qeta-common": "^3.4.0",
57
+ "@drodil/backstage-plugin-qeta-react": "^3.4.0",
58
58
  "@material-ui/core": "^4.12.2",
59
59
  "@material-ui/icons": "^4.11.3",
60
60
  "@material-ui/lab": "4.0.0-alpha.61",
@@ -70,7 +70,7 @@
70
70
  "react-markdown": "8.0.7"
71
71
  },
72
72
  "devDependencies": {
73
- "@backstage/cli": "^0.28.0",
73
+ "@backstage/cli": "^0.28.1",
74
74
  "@backstage/dev-utils": "^1.1.2",
75
75
  "@backstage/plugin-catalog": "^1.24.0",
76
76
  "@backstage/plugin-home": "^0.8.0",