@drodil/backstage-plugin-qeta-react 3.10.5 → 3.12.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/components/FollowedLists/FollowedCollectionsList.esm.js +2 -23
- package/dist/components/FollowedLists/FollowedCollectionsList.esm.js.map +1 -1
- package/dist/components/FollowedLists/FollowedEntitiesList.esm.js +2 -23
- package/dist/components/FollowedLists/FollowedEntitiesList.esm.js.map +1 -1
- package/dist/components/FollowedLists/FollowedTagsList.esm.js +2 -23
- package/dist/components/FollowedLists/FollowedTagsList.esm.js.map +1 -1
- package/dist/components/FollowedLists/FollowedUsersList.esm.js +22 -0
- package/dist/components/FollowedLists/FollowedUsersList.esm.js.map +1 -0
- package/dist/components/HomePageCards/ImpactCard.esm.js +13 -3
- package/dist/components/HomePageCards/ImpactCard.esm.js.map +1 -1
- package/dist/components/LeftMenu/LeftMenu.esm.js +6 -3
- package/dist/components/LeftMenu/LeftMenu.esm.js.map +1 -1
- package/dist/components/LeftMenu/LeftMenuButton.esm.js +26 -9
- package/dist/components/LeftMenu/LeftMenuButton.esm.js.map +1 -1
- package/dist/components/Links/Links.esm.js +11 -1
- package/dist/components/Links/Links.esm.js.map +1 -1
- package/dist/components/PostHighlightList/PostHighlightList.esm.js +11 -51
- package/dist/components/PostHighlightList/PostHighlightList.esm.js.map +1 -1
- package/dist/components/PostsContainer/PostListItem.esm.js +5 -4
- package/dist/components/PostsContainer/PostListItem.esm.js.map +1 -1
- package/dist/components/PostsGrid/PostsGridItem.esm.js +3 -3
- package/dist/components/PostsGrid/PostsGridItem.esm.js.map +1 -1
- package/dist/components/Styled/RightList.esm.js +49 -0
- package/dist/components/Styled/RightList.esm.js.map +1 -0
- package/dist/components/SuggestionsCard/SuggestionsCard.esm.js +96 -0
- package/dist/components/SuggestionsCard/SuggestionsCard.esm.js.map +1 -0
- package/dist/components/TagsAndEntities/EntityChip.esm.js +2 -1
- package/dist/components/TagsAndEntities/EntityChip.esm.js.map +1 -1
- package/dist/components/TagsAndEntities/UserChip.esm.js +80 -0
- package/dist/components/TagsAndEntities/UserChip.esm.js.map +1 -0
- package/dist/index.d.ts +13 -3
- package/dist/index.esm.js +2 -0
- package/dist/index.esm.js.map +1 -1
- package/dist/translation.esm.js +9 -1
- package/dist/translation.esm.js.map +1 -1
- package/package.json +19 -12
|
@@ -1,8 +1,4 @@
|
|
|
1
|
-
import Divider from '@mui/material/Divider';
|
|
2
|
-
import Box from '@mui/material/Box';
|
|
3
1
|
import ListItem from '@mui/material/ListItem';
|
|
4
|
-
import List from '@mui/material/List';
|
|
5
|
-
import ListSubheader from '@mui/material/ListSubheader';
|
|
6
2
|
import React__default from 'react';
|
|
7
3
|
import '@backstage/core-plugin-api';
|
|
8
4
|
import '../../api.esm.js';
|
|
@@ -11,6 +7,7 @@ import { useTranslation } from '../../hooks/useTranslation.esm.js';
|
|
|
11
7
|
import 'react-use/lib/useAsync';
|
|
12
8
|
import { useCollectionsFollow } from '../../hooks/useCollectionsFollow.esm.js';
|
|
13
9
|
import { CollectionChip } from '../TagsAndEntities/CollectionChip.esm.js';
|
|
10
|
+
import { RightListContainer, RightList } from '../Styled/RightList.esm.js';
|
|
14
11
|
|
|
15
12
|
const FollowedCollectionsList = () => {
|
|
16
13
|
const collections = useCollectionsFollow();
|
|
@@ -18,25 +15,7 @@ const FollowedCollectionsList = () => {
|
|
|
18
15
|
if (collections.collections.length === 0 || collections.loading) {
|
|
19
16
|
return null;
|
|
20
17
|
}
|
|
21
|
-
return /* @__PURE__ */ React__default.createElement(
|
|
22
|
-
List,
|
|
23
|
-
{
|
|
24
|
-
component: "nav",
|
|
25
|
-
"aria-labelledby": "nested-list-subheader",
|
|
26
|
-
subheader: /* @__PURE__ */ React__default.createElement(
|
|
27
|
-
ListSubheader,
|
|
28
|
-
{
|
|
29
|
-
disableSticky: true,
|
|
30
|
-
component: "p",
|
|
31
|
-
id: "nested-list-subheader",
|
|
32
|
-
color: "primary"
|
|
33
|
-
},
|
|
34
|
-
t("rightMenu.followedCollections")
|
|
35
|
-
)
|
|
36
|
-
},
|
|
37
|
-
/* @__PURE__ */ React__default.createElement(Divider, null),
|
|
38
|
-
/* @__PURE__ */ React__default.createElement(ListItem, { style: { display: "block" } }, collections.collections.map((collection) => /* @__PURE__ */ React__default.createElement(CollectionChip, { key: collection.id, collection })))
|
|
39
|
-
));
|
|
18
|
+
return /* @__PURE__ */ React__default.createElement(RightListContainer, null, /* @__PURE__ */ React__default.createElement(RightList, { title: t("rightMenu.followedCollections") }, /* @__PURE__ */ React__default.createElement(ListItem, { style: { display: "block" }, dense: true }, collections.collections.map((collection) => /* @__PURE__ */ React__default.createElement(CollectionChip, { key: collection.id, collection })))));
|
|
40
19
|
};
|
|
41
20
|
|
|
42
21
|
export { FollowedCollectionsList };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FollowedCollectionsList.esm.js","sources":["../../../src/components/FollowedLists/FollowedCollectionsList.tsx"],"sourcesContent":["import
|
|
1
|
+
{"version":3,"file":"FollowedCollectionsList.esm.js","sources":["../../../src/components/FollowedLists/FollowedCollectionsList.tsx"],"sourcesContent":["import ListItem from '@mui/material/ListItem';\nimport React from 'react';\nimport { useTranslation } from '../../hooks';\nimport { useCollectionsFollow } from '../../hooks/useCollectionsFollow';\nimport { CollectionChip } from '../TagsAndEntities/CollectionChip';\nimport { RightList, RightListContainer } from '../Styled/RightList';\n\nexport const FollowedCollectionsList = () => {\n const collections = useCollectionsFollow();\n const { t } = useTranslation();\n\n if (collections.collections.length === 0 || collections.loading) {\n return null;\n }\n\n return (\n <RightListContainer>\n <RightList title={t('rightMenu.followedCollections')}>\n <ListItem style={{ display: 'block' }} dense>\n {collections.collections.map(collection => (\n <CollectionChip key={collection.id} collection={collection} />\n ))}\n </ListItem>\n </RightList>\n </RightListContainer>\n );\n};\n"],"names":["React"],"mappings":";;;;;;;;;;;AAOO,MAAM,0BAA0B,MAAM;AAC3C,EAAA,MAAM,cAAc,oBAAqB,EAAA,CAAA;AACzC,EAAM,MAAA,EAAE,CAAE,EAAA,GAAI,cAAe,EAAA,CAAA;AAE7B,EAAA,IAAI,WAAY,CAAA,WAAA,CAAY,MAAW,KAAA,CAAA,IAAK,YAAY,OAAS,EAAA;AAC/D,IAAO,OAAA,IAAA,CAAA;AAAA,GACT;AAEA,EAAA,uBACGA,cAAA,CAAA,aAAA,CAAA,kBAAA,EAAA,IAAA,kBACEA,cAAA,CAAA,aAAA,CAAA,SAAA,EAAA,EAAU,KAAO,EAAA,CAAA,CAAE,+BAA+B,CAAA,EAAA,kBAChDA,cAAA,CAAA,aAAA,CAAA,QAAA,EAAA,EAAS,KAAO,EAAA,EAAE,SAAS,OAAQ,EAAA,EAAG,KAAK,EAAA,IAAA,EAAA,EACzC,WAAY,CAAA,WAAA,CAAY,GAAI,CAAA,CAAA,UAAA,qBAC1BA,cAAA,CAAA,aAAA,CAAA,cAAA,EAAA,EAAe,GAAK,EAAA,UAAA,CAAW,EAAI,EAAA,UAAA,EAAwB,CAC7D,CACH,CACF,CACF,CAAA,CAAA;AAEJ;;;;"}
|
|
@@ -1,8 +1,4 @@
|
|
|
1
|
-
import Divider from '@mui/material/Divider';
|
|
2
|
-
import Box from '@mui/material/Box';
|
|
3
1
|
import ListItem from '@mui/material/ListItem';
|
|
4
|
-
import List from '@mui/material/List';
|
|
5
|
-
import ListSubheader from '@mui/material/ListSubheader';
|
|
6
2
|
import React__default from 'react';
|
|
7
3
|
import { EntityChip } from '../TagsAndEntities/EntityChip.esm.js';
|
|
8
4
|
import '@backstage/core-plugin-api';
|
|
@@ -11,6 +7,7 @@ import 'react-use';
|
|
|
11
7
|
import { useTranslation } from '../../hooks/useTranslation.esm.js';
|
|
12
8
|
import { useEntityFollow } from '../../hooks/useEntityFollow.esm.js';
|
|
13
9
|
import 'react-use/lib/useAsync';
|
|
10
|
+
import { RightListContainer, RightList } from '../Styled/RightList.esm.js';
|
|
14
11
|
|
|
15
12
|
const FollowedEntitiesList = () => {
|
|
16
13
|
const entities = useEntityFollow();
|
|
@@ -18,25 +15,7 @@ const FollowedEntitiesList = () => {
|
|
|
18
15
|
if (entities.entities.length === 0 || entities.loading) {
|
|
19
16
|
return null;
|
|
20
17
|
}
|
|
21
|
-
return /* @__PURE__ */ React__default.createElement(
|
|
22
|
-
List,
|
|
23
|
-
{
|
|
24
|
-
component: "nav",
|
|
25
|
-
"aria-labelledby": "nested-list-subheader",
|
|
26
|
-
subheader: /* @__PURE__ */ React__default.createElement(
|
|
27
|
-
ListSubheader,
|
|
28
|
-
{
|
|
29
|
-
disableSticky: true,
|
|
30
|
-
component: "p",
|
|
31
|
-
id: "nested-list-subheader",
|
|
32
|
-
color: "primary"
|
|
33
|
-
},
|
|
34
|
-
t("rightMenu.followedEntities")
|
|
35
|
-
)
|
|
36
|
-
},
|
|
37
|
-
/* @__PURE__ */ React__default.createElement(Divider, null),
|
|
38
|
-
/* @__PURE__ */ React__default.createElement(ListItem, { style: { display: "block" } }, entities.entities.map((entity) => /* @__PURE__ */ React__default.createElement(EntityChip, { key: entity, entity })))
|
|
39
|
-
));
|
|
18
|
+
return /* @__PURE__ */ React__default.createElement(RightListContainer, null, /* @__PURE__ */ React__default.createElement(RightList, { title: t("rightMenu.followedEntities") }, /* @__PURE__ */ React__default.createElement(ListItem, { style: { display: "block" }, dense: true }, entities.entities.map((entity) => /* @__PURE__ */ React__default.createElement(EntityChip, { key: entity, entity })))));
|
|
40
19
|
};
|
|
41
20
|
|
|
42
21
|
export { FollowedEntitiesList };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FollowedEntitiesList.esm.js","sources":["../../../src/components/FollowedLists/FollowedEntitiesList.tsx"],"sourcesContent":["import
|
|
1
|
+
{"version":3,"file":"FollowedEntitiesList.esm.js","sources":["../../../src/components/FollowedLists/FollowedEntitiesList.tsx"],"sourcesContent":["import ListItem from '@mui/material/ListItem';\nimport React from 'react';\nimport { EntityChip } from '../TagsAndEntities/EntityChip';\nimport { useEntityFollow, useTranslation } from '../../hooks';\nimport { RightList, RightListContainer } from '../Styled/RightList';\n\nexport const FollowedEntitiesList = () => {\n const entities = useEntityFollow();\n const { t } = useTranslation();\n\n if (entities.entities.length === 0 || entities.loading) {\n return null;\n }\n\n return (\n <RightListContainer>\n <RightList title={t('rightMenu.followedEntities')}>\n <ListItem style={{ display: 'block' }} dense>\n {entities.entities.map(entity => (\n <EntityChip key={entity} entity={entity} />\n ))}\n </ListItem>\n </RightList>\n </RightListContainer>\n );\n};\n"],"names":["React"],"mappings":";;;;;;;;;;;AAMO,MAAM,uBAAuB,MAAM;AACxC,EAAA,MAAM,WAAW,eAAgB,EAAA,CAAA;AACjC,EAAM,MAAA,EAAE,CAAE,EAAA,GAAI,cAAe,EAAA,CAAA;AAE7B,EAAA,IAAI,QAAS,CAAA,QAAA,CAAS,MAAW,KAAA,CAAA,IAAK,SAAS,OAAS,EAAA;AACtD,IAAO,OAAA,IAAA,CAAA;AAAA,GACT;AAEA,EAAA,uBACGA,cAAA,CAAA,aAAA,CAAA,kBAAA,EAAA,IAAA,kBACEA,cAAA,CAAA,aAAA,CAAA,SAAA,EAAA,EAAU,KAAO,EAAA,CAAA,CAAE,4BAA4B,CAAA,EAAA,kBAC7CA,cAAA,CAAA,aAAA,CAAA,QAAA,EAAA,EAAS,KAAO,EAAA,EAAE,OAAS,EAAA,OAAA,EAAW,EAAA,KAAA,EAAK,IACzC,EAAA,EAAA,QAAA,CAAS,QAAS,CAAA,GAAA,CAAI,CACrB,MAAA,qBAAAA,cAAA,CAAA,aAAA,CAAC,UAAW,EAAA,EAAA,GAAA,EAAK,MAAQ,EAAA,MAAA,EAAgB,CAC1C,CACH,CACF,CACF,CAAA,CAAA;AAEJ;;;;"}
|
|
@@ -1,8 +1,4 @@
|
|
|
1
|
-
import Divider from '@mui/material/Divider';
|
|
2
|
-
import Box from '@mui/material/Box';
|
|
3
1
|
import ListItem from '@mui/material/ListItem';
|
|
4
|
-
import List from '@mui/material/List';
|
|
5
|
-
import ListSubheader from '@mui/material/ListSubheader';
|
|
6
2
|
import React__default from 'react';
|
|
7
3
|
import { TagChip } from '../TagsAndEntities/TagChip.esm.js';
|
|
8
4
|
import '@backstage/core-plugin-api';
|
|
@@ -11,6 +7,7 @@ import 'react-use';
|
|
|
11
7
|
import { useTagsFollow } from '../../hooks/useTagsFollow.esm.js';
|
|
12
8
|
import { useTranslation } from '../../hooks/useTranslation.esm.js';
|
|
13
9
|
import 'react-use/lib/useAsync';
|
|
10
|
+
import { RightListContainer, RightList } from '../Styled/RightList.esm.js';
|
|
14
11
|
|
|
15
12
|
const FollowedTagsList = () => {
|
|
16
13
|
const tags = useTagsFollow();
|
|
@@ -18,25 +15,7 @@ const FollowedTagsList = () => {
|
|
|
18
15
|
if (tags.tags.length === 0 || tags.loading) {
|
|
19
16
|
return null;
|
|
20
17
|
}
|
|
21
|
-
return /* @__PURE__ */ React__default.createElement(
|
|
22
|
-
List,
|
|
23
|
-
{
|
|
24
|
-
component: "nav",
|
|
25
|
-
"aria-labelledby": "nested-list-subheader",
|
|
26
|
-
subheader: /* @__PURE__ */ React__default.createElement(
|
|
27
|
-
ListSubheader,
|
|
28
|
-
{
|
|
29
|
-
disableSticky: true,
|
|
30
|
-
component: "p",
|
|
31
|
-
id: "nested-list-subheader",
|
|
32
|
-
color: "primary"
|
|
33
|
-
},
|
|
34
|
-
t("rightMenu.followedTags")
|
|
35
|
-
)
|
|
36
|
-
},
|
|
37
|
-
/* @__PURE__ */ React__default.createElement(Divider, null),
|
|
38
|
-
/* @__PURE__ */ React__default.createElement(ListItem, { style: { display: "block" } }, tags.tags.map((tag) => /* @__PURE__ */ React__default.createElement(TagChip, { key: tag, tag })))
|
|
39
|
-
));
|
|
18
|
+
return /* @__PURE__ */ React__default.createElement(RightListContainer, null, /* @__PURE__ */ React__default.createElement(RightList, { title: t("rightMenu.followedTags") }, /* @__PURE__ */ React__default.createElement(ListItem, { style: { display: "block" }, dense: true }, tags.tags.map((tag) => /* @__PURE__ */ React__default.createElement(TagChip, { key: tag, tag })))));
|
|
40
19
|
};
|
|
41
20
|
|
|
42
21
|
export { FollowedTagsList };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FollowedTagsList.esm.js","sources":["../../../src/components/FollowedLists/FollowedTagsList.tsx"],"sourcesContent":["import
|
|
1
|
+
{"version":3,"file":"FollowedTagsList.esm.js","sources":["../../../src/components/FollowedLists/FollowedTagsList.tsx"],"sourcesContent":["import ListItem from '@mui/material/ListItem';\nimport React from 'react';\nimport { TagChip } from '../TagsAndEntities/TagChip';\nimport { useTagsFollow, useTranslation } from '../../hooks';\nimport { RightList, RightListContainer } from '../Styled/RightList';\n\nexport const FollowedTagsList = () => {\n const tags = useTagsFollow();\n const { t } = useTranslation();\n\n if (tags.tags.length === 0 || tags.loading) {\n return null;\n }\n\n return (\n <RightListContainer>\n <RightList title={t('rightMenu.followedTags')}>\n <ListItem style={{ display: 'block' }} dense>\n {tags.tags.map(tag => (\n <TagChip key={tag} tag={tag} />\n ))}\n </ListItem>\n </RightList>\n </RightListContainer>\n );\n};\n"],"names":["React"],"mappings":";;;;;;;;;;;AAMO,MAAM,mBAAmB,MAAM;AACpC,EAAA,MAAM,OAAO,aAAc,EAAA,CAAA;AAC3B,EAAM,MAAA,EAAE,CAAE,EAAA,GAAI,cAAe,EAAA,CAAA;AAE7B,EAAA,IAAI,IAAK,CAAA,IAAA,CAAK,MAAW,KAAA,CAAA,IAAK,KAAK,OAAS,EAAA;AAC1C,IAAO,OAAA,IAAA,CAAA;AAAA,GACT;AAEA,EAAA,uBACGA,cAAA,CAAA,aAAA,CAAA,kBAAA,EAAA,IAAA,kBACEA,cAAA,CAAA,aAAA,CAAA,SAAA,EAAA,EAAU,KAAO,EAAA,CAAA,CAAE,wBAAwB,CAAA,EAAA,kBACzCA,cAAA,CAAA,aAAA,CAAA,QAAA,EAAA,EAAS,KAAO,EAAA,EAAE,OAAS,EAAA,OAAA,EAAW,EAAA,KAAA,EAAK,IACzC,EAAA,EAAA,IAAA,CAAK,IAAK,CAAA,GAAA,CAAI,CACb,GAAA,qBAAAA,cAAA,CAAA,aAAA,CAAC,OAAQ,EAAA,EAAA,GAAA,EAAK,GAAK,EAAA,GAAA,EAAU,CAC9B,CACH,CACF,CACF,CAAA,CAAA;AAEJ;;;;"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import ListItem from '@mui/material/ListItem';
|
|
2
|
+
import React__default from 'react';
|
|
3
|
+
import '@backstage/core-plugin-api';
|
|
4
|
+
import '../../api.esm.js';
|
|
5
|
+
import 'react-use';
|
|
6
|
+
import { useTranslation } from '../../hooks/useTranslation.esm.js';
|
|
7
|
+
import { useUserFollow } from '../../hooks/useUserFollow.esm.js';
|
|
8
|
+
import 'react-use/lib/useAsync';
|
|
9
|
+
import { RightListContainer, RightList } from '../Styled/RightList.esm.js';
|
|
10
|
+
import { UserChip } from '../TagsAndEntities/UserChip.esm.js';
|
|
11
|
+
|
|
12
|
+
const FollowedUsersList = () => {
|
|
13
|
+
const users = useUserFollow();
|
|
14
|
+
const { t } = useTranslation();
|
|
15
|
+
if (users.users.length === 0 || users.loading) {
|
|
16
|
+
return null;
|
|
17
|
+
}
|
|
18
|
+
return /* @__PURE__ */ React__default.createElement(RightListContainer, null, /* @__PURE__ */ React__default.createElement(RightList, { title: t("rightMenu.followedUsers") }, /* @__PURE__ */ React__default.createElement(ListItem, { style: { display: "block" }, dense: true }, users.users.map((user) => /* @__PURE__ */ React__default.createElement(UserChip, { key: user, entityRef: user })))));
|
|
19
|
+
};
|
|
20
|
+
|
|
21
|
+
export { FollowedUsersList };
|
|
22
|
+
//# sourceMappingURL=FollowedUsersList.esm.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FollowedUsersList.esm.js","sources":["../../../src/components/FollowedLists/FollowedUsersList.tsx"],"sourcesContent":["import ListItem from '@mui/material/ListItem';\nimport React from 'react';\nimport { useTranslation, useUserFollow } from '../../hooks';\nimport { RightList, RightListContainer } from '../Styled/RightList';\nimport { UserChip } from '../TagsAndEntities/UserChip';\n\nexport const FollowedUsersList = () => {\n const users = useUserFollow();\n const { t } = useTranslation();\n\n if (users.users.length === 0 || users.loading) {\n return null;\n }\n\n return (\n <RightListContainer>\n <RightList title={t('rightMenu.followedUsers')}>\n <ListItem style={{ display: 'block' }} dense>\n {users.users.map(user => (\n <UserChip key={user} entityRef={user} />\n ))}\n </ListItem>\n </RightList>\n </RightListContainer>\n );\n};\n"],"names":["React"],"mappings":";;;;;;;;;;;AAMO,MAAM,oBAAoB,MAAM;AACrC,EAAA,MAAM,QAAQ,aAAc,EAAA,CAAA;AAC5B,EAAM,MAAA,EAAE,CAAE,EAAA,GAAI,cAAe,EAAA,CAAA;AAE7B,EAAA,IAAI,KAAM,CAAA,KAAA,CAAM,MAAW,KAAA,CAAA,IAAK,MAAM,OAAS,EAAA;AAC7C,IAAO,OAAA,IAAA,CAAA;AAAA,GACT;AAEA,EAAA,uBACGA,cAAA,CAAA,aAAA,CAAA,kBAAA,EAAA,IAAA,kBACEA,cAAA,CAAA,aAAA,CAAA,SAAA,EAAA,EAAU,KAAO,EAAA,CAAA,CAAE,yBAAyB,CAAA,EAAA,kBAC1CA,cAAA,CAAA,aAAA,CAAA,QAAA,EAAA,EAAS,KAAO,EAAA,EAAE,SAAS,OAAQ,EAAA,EAAG,KAAK,EAAA,IAAA,EAAA,EACzC,KAAM,CAAA,KAAA,CAAM,GAAI,CAAA,CAAA,IAAA,qBACdA,cAAA,CAAA,aAAA,CAAA,QAAA,EAAA,EAAS,GAAK,EAAA,IAAA,EAAM,SAAW,EAAA,IAAA,EAAM,CACvC,CACH,CACF,CACF,CAAA,CAAA;AAEJ;;;;"}
|
|
@@ -20,9 +20,19 @@ const ImpactCard = () => {
|
|
|
20
20
|
if (loading || error || !response) {
|
|
21
21
|
return null;
|
|
22
22
|
}
|
|
23
|
-
return /* @__PURE__ */ React__default.createElement(
|
|
24
|
-
|
|
25
|
-
|
|
23
|
+
return /* @__PURE__ */ React__default.createElement(
|
|
24
|
+
Box,
|
|
25
|
+
{
|
|
26
|
+
display: { md: "none", lg: "block" },
|
|
27
|
+
sx: {
|
|
28
|
+
width: "100%",
|
|
29
|
+
marginBottom: 2
|
|
30
|
+
}
|
|
31
|
+
},
|
|
32
|
+
/* @__PURE__ */ React__default.createElement(Card, null, /* @__PURE__ */ React__default.createElement(CardContent, null, /* @__PURE__ */ React__default.createElement(Typography, { variant: "h5" }, t("impactCard.title")), /* @__PURE__ */ React__default.createElement(Typography, { variant: "h5" }, response.impact >= 1e3 ? numeral(response.impact).format("0.0 a") : response.impact, /* @__PURE__ */ React__default.createElement(Typography, { variant: "caption", style: { marginLeft: "1rem" } }, t("impactCard.views"))), /* @__PURE__ */ React__default.createElement(Typography, { variant: "body2" }, t("impactCard.contributions", {
|
|
33
|
+
lastWeek: response.lastWeekImpact.toString(10)
|
|
34
|
+
}))))
|
|
35
|
+
);
|
|
26
36
|
};
|
|
27
37
|
|
|
28
38
|
export { ImpactCard };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ImpactCard.esm.js","sources":["../../../src/components/HomePageCards/ImpactCard.tsx"],"sourcesContent":["import React from 'react';\nimport Card from '@mui/material/Card';\nimport CardContent from '@mui/material/CardContent';\nimport Typography from '@mui/material/Typography';\nimport Box from '@mui/material/Box';\nimport numeral from 'numeral';\nimport { useQetaApi, useTranslation } from '../../hooks';\n\nexport const ImpactCard = () => {\n const { t } = useTranslation();\n const {\n value: response,\n loading,\n error,\n } = useQetaApi(api => api.getUserImpact(), []);\n\n if (loading || error || !response) {\n return null;\n }\n\n return (\n <Box
|
|
1
|
+
{"version":3,"file":"ImpactCard.esm.js","sources":["../../../src/components/HomePageCards/ImpactCard.tsx"],"sourcesContent":["import React from 'react';\nimport Card from '@mui/material/Card';\nimport CardContent from '@mui/material/CardContent';\nimport Typography from '@mui/material/Typography';\nimport Box from '@mui/material/Box';\nimport numeral from 'numeral';\nimport { useQetaApi, useTranslation } from '../../hooks';\n\nexport const ImpactCard = () => {\n const { t } = useTranslation();\n const {\n value: response,\n loading,\n error,\n } = useQetaApi(api => api.getUserImpact(), []);\n\n if (loading || error || !response) {\n return null;\n }\n\n return (\n <Box\n display={{ md: 'none', lg: 'block' }}\n sx={{\n width: '100%',\n marginBottom: 2,\n }}\n >\n <Card>\n <CardContent>\n <Typography variant=\"h5\">{t('impactCard.title')}</Typography>\n <Typography variant=\"h5\">\n {response.impact >= 1000\n ? numeral(response.impact).format('0.0 a')\n : response.impact}\n <Typography variant=\"caption\" style={{ marginLeft: '1rem' }}>\n {t('impactCard.views')}\n </Typography>\n </Typography>\n <Typography variant=\"body2\">\n {t('impactCard.contributions', {\n lastWeek: response.lastWeekImpact.toString(10),\n })}\n </Typography>\n </CardContent>\n </Card>\n </Box>\n );\n};\n"],"names":["React"],"mappings":";;;;;;;;;;;;AAQO,MAAM,aAAa,MAAM;AAC9B,EAAM,MAAA,EAAE,CAAE,EAAA,GAAI,cAAe,EAAA,CAAA;AAC7B,EAAM,MAAA;AAAA,IACJ,KAAO,EAAA,QAAA;AAAA,IACP,OAAA;AAAA,IACA,KAAA;AAAA,MACE,UAAW,CAAA,CAAA,GAAA,KAAO,IAAI,aAAc,EAAA,EAAG,EAAE,CAAA,CAAA;AAE7C,EAAI,IAAA,OAAA,IAAW,KAAS,IAAA,CAAC,QAAU,EAAA;AACjC,IAAO,OAAA,IAAA,CAAA;AAAA,GACT;AAEA,EACE,uBAAAA,cAAA,CAAA,aAAA;AAAA,IAAC,GAAA;AAAA,IAAA;AAAA,MACC,OAAS,EAAA,EAAE,EAAI,EAAA,MAAA,EAAQ,IAAI,OAAQ,EAAA;AAAA,MACnC,EAAI,EAAA;AAAA,QACF,KAAO,EAAA,MAAA;AAAA,QACP,YAAc,EAAA,CAAA;AAAA,OAChB;AAAA,KAAA;AAAA,oBAEAA,cAAA,CAAA,aAAA,CAAC,4BACEA,cAAA,CAAA,aAAA,CAAA,WAAA,EAAA,IAAA,+CACE,UAAW,EAAA,EAAA,OAAA,EAAQ,QAAM,CAAE,CAAA,kBAAkB,CAAE,CAChD,kBAAAA,cAAA,CAAA,aAAA,CAAC,cAAW,OAAQ,EAAA,IAAA,EAAA,EACjB,SAAS,MAAU,IAAA,GAAA,GAChB,OAAQ,CAAA,QAAA,CAAS,MAAM,CAAA,CAAE,OAAO,OAAO,CAAA,GACvC,SAAS,MACb,kBAAAA,cAAA,CAAA,aAAA,CAAC,cAAW,OAAQ,EAAA,SAAA,EAAU,KAAO,EAAA,EAAE,UAAY,EAAA,MAAA,MAChD,CAAE,CAAA,kBAAkB,CACvB,CACF,CAAA,+CACC,UAAW,EAAA,EAAA,OAAA,EAAQ,OACjB,EAAA,EAAA,CAAA,CAAE,0BAA4B,EAAA;AAAA,MAC7B,QAAU,EAAA,QAAA,CAAS,cAAe,CAAA,QAAA,CAAS,EAAE,CAAA;AAAA,KAC9C,CACH,CACF,CACF,CAAA;AAAA,GACF,CAAA;AAEJ;;;;"}
|
|
@@ -29,6 +29,10 @@ import '../../api.esm.js';
|
|
|
29
29
|
import { useTranslation } from '../../hooks/useTranslation.esm.js';
|
|
30
30
|
import { useIdentityApi } from '../../hooks/useIdentityApi.esm.js';
|
|
31
31
|
import { useIsModerator } from '../../hooks/useIsModerator.esm.js';
|
|
32
|
+
import '@mui/material/Chip';
|
|
33
|
+
import '@mui/material/Grid';
|
|
34
|
+
import '@mui/material/Button';
|
|
35
|
+
import '@mui/material/Tooltip';
|
|
32
36
|
import { styled } from '@mui/system';
|
|
33
37
|
|
|
34
38
|
const LeftMenuItem = styled(ListItemIcon)({
|
|
@@ -93,11 +97,10 @@ const LeftMenu = (props) => {
|
|
|
93
97
|
id: "left-menu",
|
|
94
98
|
sx: {
|
|
95
99
|
top: "0",
|
|
96
|
-
|
|
100
|
+
maxWidth: "165px",
|
|
97
101
|
paddingTop: "2rem",
|
|
98
102
|
...props.inPopup ? { marginRight: 0, padding: "0.5rem" } : {
|
|
99
|
-
marginRight:
|
|
100
|
-
marginLeft: 1,
|
|
103
|
+
marginRight: 4,
|
|
101
104
|
float: "right",
|
|
102
105
|
position: "sticky"
|
|
103
106
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LeftMenu.esm.js","sources":["../../../src/components/LeftMenu/LeftMenu.tsx"],"sourcesContent":["import Typography from '@mui/material/Typography';\nimport Box from '@mui/material/Box';\nimport MenuItem from '@mui/material/MenuItem';\nimport ListItem from '@mui/material/ListItem';\nimport SvgIcon from '@mui/material/SvgIcon';\nimport MenuList from '@mui/material/MenuList';\nimport ListItemIcon from '@mui/material/ListItemIcon';\nimport AccountBox from '@mui/icons-material/AccountBox';\nimport LoyaltyOutlined from '@mui/icons-material/LoyaltyOutlined';\nimport StarIcon from '@mui/icons-material/Star';\nimport React, { ReactNode } from 'react';\nimport { useApp, useRouteRef } from '@backstage/core-plugin-api';\nimport HelpOutlined from '@mui/icons-material/HelpOutlined';\nimport { useNavigate } from 'react-router-dom';\nimport Home from '@mui/icons-material/Home';\nimport { useLocation } from 'react-use';\nimport CollectionsBookmarkIcon from '@mui/icons-material/CollectionsBookmark';\nimport PlaylistPlay from '@mui/icons-material/PlaylistPlay';\nimport SettingsIcon from '@mui/icons-material/Settings';\nimport { GroupIcon } from '@backstage/core-components';\nimport {\n articlesRouteRef,\n collectionsRouteRef,\n entitiesRouteRef,\n favoriteQuestionsRouteRef,\n moderatorRouteRef,\n qetaRouteRef,\n questionsRouteRef,\n statisticsRouteRef,\n tagsRouteRef,\n userRouteRef,\n usersRouteRef,\n} from '../../routes';\nimport { TrophyIcon } from '../TopRankingUsersCard';\nimport { useIdentityApi, useIsModerator, useTranslation } from '../../hooks';\nimport { styled } from '@mui/system';\n\nconst LeftMenuItem = styled(ListItemIcon)({\n minWidth: '26px !important',\n});\n\nexport const LeftMenu = (props: {\n onKeyDown?: (event: React.KeyboardEvent) => void;\n autoFocusItem?: boolean;\n onClick?: (\n event: MouseEvent | TouchEvent | React.MouseEvent<EventTarget>,\n ) => void;\n inPopup?: boolean;\n}) => {\n const rootRoute = useRouteRef(qetaRouteRef);\n const tagsRoute = useRouteRef(tagsRouteRef);\n const favoritesRoute = useRouteRef(favoriteQuestionsRouteRef);\n const statisticsRoute = useRouteRef(statisticsRouteRef);\n const userRoute = useRouteRef(userRouteRef);\n const questionsRoute = useRouteRef(questionsRouteRef);\n const articlesRoute = useRouteRef(articlesRouteRef);\n const collectionsRoute = useRouteRef(collectionsRouteRef);\n const entitiesRoute = useRouteRef(entitiesRouteRef);\n const usersRoute = useRouteRef(usersRouteRef);\n const moderatorRoute = useRouteRef(moderatorRouteRef);\n const { t } = useTranslation();\n const location = useLocation();\n const navigate = useNavigate();\n const { isModerator } = useIsModerator();\n const app = useApp();\n const {\n value: user,\n loading: loadingUser,\n error: userError,\n } = useIdentityApi(api => api.getBackstageIdentity(), []);\n\n const CustomMenuItem = ({\n route,\n children,\n }: {\n route: string;\n children: ReactNode[];\n }) => {\n return (\n <MenuItem\n onClick={e => {\n navigate(route);\n if (props.onClick) {\n props.onClick(e);\n }\n }}\n sx={{\n ...(route === location.pathname\n ? {\n color: 'primary.contrastText',\n backgroundColor: 'primary.light',\n borderRadius: 1,\n '&:hover': {\n backgroundColor: 'primary.dark',\n },\n '& svg': {\n color: 'primary.contrastText',\n },\n }\n : { backgroundColor: 'initial', borderRadius: 1 }),\n }}\n >\n {children}\n </MenuItem>\n );\n };\n\n const EntityIcon = app.getSystemIcon('kind:system') ?? SvgIcon;\n\n return (\n <MenuList\n id=\"left-menu\"\n sx={{\n top: '0',\n width: '165px',\n paddingTop: '2rem',\n ...(props.inPopup\n ? { marginRight: 0, padding: '0.5rem' }\n : {\n marginRight: 5,\n marginLeft: 1,\n float: 'right',\n position: 'sticky',\n }),\n }}\n onKeyDown={props.onKeyDown}\n autoFocusItem={props.autoFocusItem}\n >\n <Box\n display={\n props.inPopup\n ? {}\n : { xs: 'none', sm: 'none', md: 'none', lg: 'block' }\n }\n >\n <CustomMenuItem route={rootRoute()}>\n <LeftMenuItem>\n <Home fontSize=\"small\" />\n </LeftMenuItem>\n {t('leftMenu.home')}\n </CustomMenuItem>\n <ListItem>\n <Typography variant=\"subtitle2\">{t('leftMenu.content')}</Typography>\n </ListItem>\n <CustomMenuItem route={questionsRoute()}>\n <LeftMenuItem>\n <HelpOutlined fontSize=\"small\" />\n </LeftMenuItem>\n {t('leftMenu.questions')}\n </CustomMenuItem>\n <CustomMenuItem route={articlesRoute()}>\n <LeftMenuItem>\n <CollectionsBookmarkIcon fontSize=\"small\" />\n </LeftMenuItem>\n {t('leftMenu.articles')}\n </CustomMenuItem>\n <CustomMenuItem route={favoritesRoute()}>\n <LeftMenuItem>\n <StarIcon fontSize=\"small\" />\n </LeftMenuItem>\n {t('leftMenu.favoriteQuestions')}\n </CustomMenuItem>\n <CustomMenuItem route={entitiesRoute()}>\n <LeftMenuItem>\n <EntityIcon fontSize=\"small\" />\n </LeftMenuItem>\n {t('leftMenu.entities')}\n </CustomMenuItem>\n <CustomMenuItem route={tagsRoute()}>\n <LeftMenuItem>\n <LoyaltyOutlined fontSize=\"small\" />\n </LeftMenuItem>\n {t('leftMenu.tags')}\n </CustomMenuItem>\n <ListItem>\n <Typography variant=\"subtitle2\">{t('leftMenu.community')}</Typography>\n </ListItem>\n <CustomMenuItem route={collectionsRoute()}>\n <LeftMenuItem>\n <PlaylistPlay fontSize=\"small\" />\n </LeftMenuItem>\n {t('leftMenu.collections')}\n </CustomMenuItem>\n <CustomMenuItem route={usersRoute()}>\n <LeftMenuItem>\n <GroupIcon fontSize=\"small\" />\n </LeftMenuItem>\n {t('leftMenu.users')}\n </CustomMenuItem>\n {user && !loadingUser && !userError && (\n <CustomMenuItem route={`${userRoute()}/${user.userEntityRef}`}>\n <LeftMenuItem>\n <AccountBox fontSize=\"small\" />\n </LeftMenuItem>\n {t('leftMenu.profile')}\n </CustomMenuItem>\n )}\n <CustomMenuItem route={statisticsRoute()}>\n <LeftMenuItem>\n <TrophyIcon />\n </LeftMenuItem>\n {t('leftMenu.statistics')}\n </CustomMenuItem>\n {isModerator && (\n <>\n <ListItem>\n <Typography variant=\"subtitle2\">\n {t('leftMenu.manage')}\n </Typography>\n </ListItem>\n <CustomMenuItem route={moderatorRoute()}>\n <LeftMenuItem>\n <SettingsIcon />\n </LeftMenuItem>\n {t('leftMenu.moderate')}\n </CustomMenuItem>\n </>\n )}\n </Box>\n </MenuList>\n );\n};\n"],"names":["React"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"LeftMenu.esm.js","sources":["../../../src/components/LeftMenu/LeftMenu.tsx"],"sourcesContent":["import Typography from '@mui/material/Typography';\nimport Box from '@mui/material/Box';\nimport MenuItem from '@mui/material/MenuItem';\nimport ListItem from '@mui/material/ListItem';\nimport SvgIcon from '@mui/material/SvgIcon';\nimport MenuList from '@mui/material/MenuList';\nimport ListItemIcon from '@mui/material/ListItemIcon';\nimport AccountBox from '@mui/icons-material/AccountBox';\nimport LoyaltyOutlined from '@mui/icons-material/LoyaltyOutlined';\nimport StarIcon from '@mui/icons-material/Star';\nimport React, { ReactNode } from 'react';\nimport { useApp, useRouteRef } from '@backstage/core-plugin-api';\nimport HelpOutlined from '@mui/icons-material/HelpOutlined';\nimport { useNavigate } from 'react-router-dom';\nimport Home from '@mui/icons-material/Home';\nimport { useLocation } from 'react-use';\nimport CollectionsBookmarkIcon from '@mui/icons-material/CollectionsBookmark';\nimport PlaylistPlay from '@mui/icons-material/PlaylistPlay';\nimport SettingsIcon from '@mui/icons-material/Settings';\nimport { GroupIcon } from '@backstage/core-components';\nimport {\n articlesRouteRef,\n collectionsRouteRef,\n entitiesRouteRef,\n favoriteQuestionsRouteRef,\n moderatorRouteRef,\n qetaRouteRef,\n questionsRouteRef,\n statisticsRouteRef,\n tagsRouteRef,\n userRouteRef,\n usersRouteRef,\n} from '../../routes';\nimport { TrophyIcon } from '../TopRankingUsersCard';\nimport { useIdentityApi, useIsModerator, useTranslation } from '../../hooks';\nimport { styled } from '@mui/system';\n\nconst LeftMenuItem = styled(ListItemIcon)({\n minWidth: '26px !important',\n});\n\nexport const LeftMenu = (props: {\n onKeyDown?: (event: React.KeyboardEvent) => void;\n autoFocusItem?: boolean;\n onClick?: (\n event: MouseEvent | TouchEvent | React.MouseEvent<EventTarget>,\n ) => void;\n inPopup?: boolean;\n}) => {\n const rootRoute = useRouteRef(qetaRouteRef);\n const tagsRoute = useRouteRef(tagsRouteRef);\n const favoritesRoute = useRouteRef(favoriteQuestionsRouteRef);\n const statisticsRoute = useRouteRef(statisticsRouteRef);\n const userRoute = useRouteRef(userRouteRef);\n const questionsRoute = useRouteRef(questionsRouteRef);\n const articlesRoute = useRouteRef(articlesRouteRef);\n const collectionsRoute = useRouteRef(collectionsRouteRef);\n const entitiesRoute = useRouteRef(entitiesRouteRef);\n const usersRoute = useRouteRef(usersRouteRef);\n const moderatorRoute = useRouteRef(moderatorRouteRef);\n const { t } = useTranslation();\n const location = useLocation();\n const navigate = useNavigate();\n const { isModerator } = useIsModerator();\n const app = useApp();\n const {\n value: user,\n loading: loadingUser,\n error: userError,\n } = useIdentityApi(api => api.getBackstageIdentity(), []);\n\n const CustomMenuItem = ({\n route,\n children,\n }: {\n route: string;\n children: ReactNode[];\n }) => {\n return (\n <MenuItem\n onClick={e => {\n navigate(route);\n if (props.onClick) {\n props.onClick(e);\n }\n }}\n sx={{\n ...(route === location.pathname\n ? {\n color: 'primary.contrastText',\n backgroundColor: 'primary.light',\n borderRadius: 1,\n '&:hover': {\n backgroundColor: 'primary.dark',\n },\n '& svg': {\n color: 'primary.contrastText',\n },\n }\n : { backgroundColor: 'initial', borderRadius: 1 }),\n }}\n >\n {children}\n </MenuItem>\n );\n };\n\n const EntityIcon = app.getSystemIcon('kind:system') ?? SvgIcon;\n\n return (\n <MenuList\n id=\"left-menu\"\n sx={{\n top: '0',\n maxWidth: '165px',\n paddingTop: '2rem',\n ...(props.inPopup\n ? { marginRight: 0, padding: '0.5rem' }\n : {\n marginRight: 4,\n float: 'right',\n position: 'sticky',\n }),\n }}\n onKeyDown={props.onKeyDown}\n autoFocusItem={props.autoFocusItem}\n >\n <Box\n display={\n props.inPopup\n ? {}\n : { xs: 'none', sm: 'none', md: 'none', lg: 'block' }\n }\n >\n <CustomMenuItem route={rootRoute()}>\n <LeftMenuItem>\n <Home fontSize=\"small\" />\n </LeftMenuItem>\n {t('leftMenu.home')}\n </CustomMenuItem>\n <ListItem>\n <Typography variant=\"subtitle2\">{t('leftMenu.content')}</Typography>\n </ListItem>\n <CustomMenuItem route={questionsRoute()}>\n <LeftMenuItem>\n <HelpOutlined fontSize=\"small\" />\n </LeftMenuItem>\n {t('leftMenu.questions')}\n </CustomMenuItem>\n <CustomMenuItem route={articlesRoute()}>\n <LeftMenuItem>\n <CollectionsBookmarkIcon fontSize=\"small\" />\n </LeftMenuItem>\n {t('leftMenu.articles')}\n </CustomMenuItem>\n <CustomMenuItem route={favoritesRoute()}>\n <LeftMenuItem>\n <StarIcon fontSize=\"small\" />\n </LeftMenuItem>\n {t('leftMenu.favoriteQuestions')}\n </CustomMenuItem>\n <CustomMenuItem route={entitiesRoute()}>\n <LeftMenuItem>\n <EntityIcon fontSize=\"small\" />\n </LeftMenuItem>\n {t('leftMenu.entities')}\n </CustomMenuItem>\n <CustomMenuItem route={tagsRoute()}>\n <LeftMenuItem>\n <LoyaltyOutlined fontSize=\"small\" />\n </LeftMenuItem>\n {t('leftMenu.tags')}\n </CustomMenuItem>\n <ListItem>\n <Typography variant=\"subtitle2\">{t('leftMenu.community')}</Typography>\n </ListItem>\n <CustomMenuItem route={collectionsRoute()}>\n <LeftMenuItem>\n <PlaylistPlay fontSize=\"small\" />\n </LeftMenuItem>\n {t('leftMenu.collections')}\n </CustomMenuItem>\n <CustomMenuItem route={usersRoute()}>\n <LeftMenuItem>\n <GroupIcon fontSize=\"small\" />\n </LeftMenuItem>\n {t('leftMenu.users')}\n </CustomMenuItem>\n {user && !loadingUser && !userError && (\n <CustomMenuItem route={`${userRoute()}/${user.userEntityRef}`}>\n <LeftMenuItem>\n <AccountBox fontSize=\"small\" />\n </LeftMenuItem>\n {t('leftMenu.profile')}\n </CustomMenuItem>\n )}\n <CustomMenuItem route={statisticsRoute()}>\n <LeftMenuItem>\n <TrophyIcon />\n </LeftMenuItem>\n {t('leftMenu.statistics')}\n </CustomMenuItem>\n {isModerator && (\n <>\n <ListItem>\n <Typography variant=\"subtitle2\">\n {t('leftMenu.manage')}\n </Typography>\n </ListItem>\n <CustomMenuItem route={moderatorRoute()}>\n <LeftMenuItem>\n <SettingsIcon />\n </LeftMenuItem>\n {t('leftMenu.moderate')}\n </CustomMenuItem>\n </>\n )}\n </Box>\n </MenuList>\n );\n};\n"],"names":["React"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAqCA,MAAM,YAAA,GAAe,MAAO,CAAA,YAAY,CAAE,CAAA;AAAA,EACxC,QAAU,EAAA,iBAAA;AACZ,CAAC,CAAA,CAAA;AAEY,MAAA,QAAA,GAAW,CAAC,KAOnB,KAAA;AACJ,EAAM,MAAA,SAAA,GAAY,YAAY,YAAY,CAAA,CAAA;AAC1C,EAAM,MAAA,SAAA,GAAY,YAAY,YAAY,CAAA,CAAA;AAC1C,EAAM,MAAA,cAAA,GAAiB,YAAY,yBAAyB,CAAA,CAAA;AAC5D,EAAM,MAAA,eAAA,GAAkB,YAAY,kBAAkB,CAAA,CAAA;AACtD,EAAM,MAAA,SAAA,GAAY,YAAY,YAAY,CAAA,CAAA;AAC1C,EAAM,MAAA,cAAA,GAAiB,YAAY,iBAAiB,CAAA,CAAA;AACpD,EAAM,MAAA,aAAA,GAAgB,YAAY,gBAAgB,CAAA,CAAA;AAClD,EAAM,MAAA,gBAAA,GAAmB,YAAY,mBAAmB,CAAA,CAAA;AACxD,EAAM,MAAA,aAAA,GAAgB,YAAY,gBAAgB,CAAA,CAAA;AAClD,EAAM,MAAA,UAAA,GAAa,YAAY,aAAa,CAAA,CAAA;AAC5C,EAAM,MAAA,cAAA,GAAiB,YAAY,iBAAiB,CAAA,CAAA;AACpD,EAAM,MAAA,EAAE,CAAE,EAAA,GAAI,cAAe,EAAA,CAAA;AAC7B,EAAA,MAAM,WAAW,WAAY,EAAA,CAAA;AAC7B,EAAA,MAAM,WAAW,WAAY,EAAA,CAAA;AAC7B,EAAM,MAAA,EAAE,WAAY,EAAA,GAAI,cAAe,EAAA,CAAA;AACvC,EAAA,MAAM,MAAM,MAAO,EAAA,CAAA;AACnB,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,MAAM,iBAAiB,CAAC;AAAA,IACtB,KAAA;AAAA,IACA,QAAA;AAAA,GAII,KAAA;AACJ,IACE,uBAAAA,cAAA,CAAA,aAAA;AAAA,MAAC,QAAA;AAAA,MAAA;AAAA,QACC,SAAS,CAAK,CAAA,KAAA;AACZ,UAAA,QAAA,CAAS,KAAK,CAAA,CAAA;AACd,UAAA,IAAI,MAAM,OAAS,EAAA;AACjB,YAAA,KAAA,CAAM,QAAQ,CAAC,CAAA,CAAA;AAAA,WACjB;AAAA,SACF;AAAA,QACA,EAAI,EAAA;AAAA,UACF,GAAI,KAAU,KAAA,QAAA,CAAS,QACnB,GAAA;AAAA,YACE,KAAO,EAAA,sBAAA;AAAA,YACP,eAAiB,EAAA,eAAA;AAAA,YACjB,YAAc,EAAA,CAAA;AAAA,YACd,SAAW,EAAA;AAAA,cACT,eAAiB,EAAA,cAAA;AAAA,aACnB;AAAA,YACA,OAAS,EAAA;AAAA,cACP,KAAO,EAAA,sBAAA;AAAA,aACT;AAAA,WAEF,GAAA,EAAE,eAAiB,EAAA,SAAA,EAAW,cAAc,CAAE,EAAA;AAAA,SACpD;AAAA,OAAA;AAAA,MAEC,QAAA;AAAA,KACH,CAAA;AAAA,GAEJ,CAAA;AAEA,EAAA,MAAM,UAAa,GAAA,GAAA,CAAI,aAAc,CAAA,aAAa,CAAK,IAAA,OAAA,CAAA;AAEvD,EACE,uBAAAA,cAAA,CAAA,aAAA;AAAA,IAAC,QAAA;AAAA,IAAA;AAAA,MACC,EAAG,EAAA,WAAA;AAAA,MACH,EAAI,EAAA;AAAA,QACF,GAAK,EAAA,GAAA;AAAA,QACL,QAAU,EAAA,OAAA;AAAA,QACV,UAAY,EAAA,MAAA;AAAA,QACZ,GAAI,MAAM,OACN,GAAA,EAAE,aAAa,CAAG,EAAA,OAAA,EAAS,UAC3B,GAAA;AAAA,UACE,WAAa,EAAA,CAAA;AAAA,UACb,KAAO,EAAA,OAAA;AAAA,UACP,QAAU,EAAA,QAAA;AAAA,SACZ;AAAA,OACN;AAAA,MACA,WAAW,KAAM,CAAA,SAAA;AAAA,MACjB,eAAe,KAAM,CAAA,aAAA;AAAA,KAAA;AAAA,oBAErBA,cAAA,CAAA,aAAA;AAAA,MAAC,GAAA;AAAA,MAAA;AAAA,QACC,OACE,EAAA,KAAA,CAAM,OACF,GAAA,EACA,GAAA,EAAE,EAAI,EAAA,MAAA,EAAQ,EAAI,EAAA,MAAA,EAAQ,EAAI,EAAA,MAAA,EAAQ,IAAI,OAAQ,EAAA;AAAA,OAAA;AAAA,sBAGvDA,cAAA,CAAA,aAAA,CAAA,cAAA,EAAA,EAAe,KAAO,EAAA,SAAA,sBACpBA,cAAA,CAAA,aAAA,CAAA,YAAA,EAAA,IAAA,kBACEA,cAAA,CAAA,aAAA,CAAA,IAAA,EAAA,EAAK,UAAS,OAAQ,EAAA,CACzB,CACC,EAAA,CAAA,CAAE,eAAe,CACpB,CAAA;AAAA,sBACAA,cAAA,CAAA,aAAA,CAAC,gCACEA,cAAA,CAAA,aAAA,CAAA,UAAA,EAAA,EAAW,SAAQ,WAAa,EAAA,EAAA,CAAA,CAAE,kBAAkB,CAAE,CACzD,CAAA;AAAA,sBACCA,cAAA,CAAA,aAAA,CAAA,cAAA,EAAA,EAAe,KAAO,EAAA,cAAA,sBACpBA,cAAA,CAAA,aAAA,CAAA,YAAA,EAAA,IAAA,kBACEA,cAAA,CAAA,aAAA,CAAA,YAAA,EAAA,EAAa,UAAS,OAAQ,EAAA,CACjC,CACC,EAAA,CAAA,CAAE,oBAAoB,CACzB,CAAA;AAAA,sBACCA,cAAA,CAAA,aAAA,CAAA,cAAA,EAAA,EAAe,KAAO,EAAA,aAAA,sBACpBA,cAAA,CAAA,aAAA,CAAA,YAAA,EAAA,IAAA,kBACEA,cAAA,CAAA,aAAA,CAAA,uBAAA,EAAA,EAAwB,UAAS,OAAQ,EAAA,CAC5C,CACC,EAAA,CAAA,CAAE,mBAAmB,CACxB,CAAA;AAAA,sBACCA,cAAA,CAAA,aAAA,CAAA,cAAA,EAAA,EAAe,KAAO,EAAA,cAAA,sBACpBA,cAAA,CAAA,aAAA,CAAA,YAAA,EAAA,IAAA,kBACEA,cAAA,CAAA,aAAA,CAAA,QAAA,EAAA,EAAS,UAAS,OAAQ,EAAA,CAC7B,CACC,EAAA,CAAA,CAAE,4BAA4B,CACjC,CAAA;AAAA,sBACCA,cAAA,CAAA,aAAA,CAAA,cAAA,EAAA,EAAe,KAAO,EAAA,aAAA,sBACpBA,cAAA,CAAA,aAAA,CAAA,YAAA,EAAA,IAAA,kBACEA,cAAA,CAAA,aAAA,CAAA,UAAA,EAAA,EAAW,UAAS,OAAQ,EAAA,CAC/B,CACC,EAAA,CAAA,CAAE,mBAAmB,CACxB,CAAA;AAAA,sBACCA,cAAA,CAAA,aAAA,CAAA,cAAA,EAAA,EAAe,KAAO,EAAA,SAAA,sBACpBA,cAAA,CAAA,aAAA,CAAA,YAAA,EAAA,IAAA,kBACEA,cAAA,CAAA,aAAA,CAAA,eAAA,EAAA,EAAgB,UAAS,OAAQ,EAAA,CACpC,CACC,EAAA,CAAA,CAAE,eAAe,CACpB,CAAA;AAAA,sBACAA,cAAA,CAAA,aAAA,CAAC,gCACEA,cAAA,CAAA,aAAA,CAAA,UAAA,EAAA,EAAW,SAAQ,WAAa,EAAA,EAAA,CAAA,CAAE,oBAAoB,CAAE,CAC3D,CAAA;AAAA,sBACCA,cAAA,CAAA,aAAA,CAAA,cAAA,EAAA,EAAe,KAAO,EAAA,gBAAA,sBACpBA,cAAA,CAAA,aAAA,CAAA,YAAA,EAAA,IAAA,kBACEA,cAAA,CAAA,aAAA,CAAA,YAAA,EAAA,EAAa,UAAS,OAAQ,EAAA,CACjC,CACC,EAAA,CAAA,CAAE,sBAAsB,CAC3B,CAAA;AAAA,sBACCA,cAAA,CAAA,aAAA,CAAA,cAAA,EAAA,EAAe,KAAO,EAAA,UAAA,sBACpBA,cAAA,CAAA,aAAA,CAAA,YAAA,EAAA,IAAA,kBACEA,cAAA,CAAA,aAAA,CAAA,SAAA,EAAA,EAAU,UAAS,OAAQ,EAAA,CAC9B,CACC,EAAA,CAAA,CAAE,gBAAgB,CACrB,CAAA;AAAA,MACC,IAAA,IAAQ,CAAC,WAAA,IAAe,CAAC,SAAA,iDACvB,cAAe,EAAA,EAAA,KAAA,EAAO,CAAG,EAAA,SAAA,EAAW,CAAA,CAAA,EAAI,KAAK,aAAa,CAAA,CAAA,EAAA,kBACxDA,cAAA,CAAA,aAAA,CAAA,YAAA,EAAA,IAAA,kBACEA,cAAA,CAAA,aAAA,CAAA,UAAA,EAAA,EAAW,QAAS,EAAA,OAAA,EAAQ,CAC/B,CAAA,EACC,CAAE,CAAA,kBAAkB,CACvB,CAAA;AAAA,sBAEDA,cAAA,CAAA,aAAA,CAAA,cAAA,EAAA,EAAe,KAAO,EAAA,eAAA,EACrB,EAAA,kBAAAA,cAAA,CAAA,aAAA,CAAC,YACC,EAAA,IAAA,kBAAAA,cAAA,CAAA,aAAA,CAAC,UAAW,EAAA,IAAA,CACd,CACC,EAAA,CAAA,CAAE,qBAAqB,CAC1B,CAAA;AAAA,MACC,WAAA,oBAEGA,cAAA,CAAA,aAAA,CAAAA,cAAA,CAAA,QAAA,EAAA,IAAA,kBAAAA,cAAA,CAAA,aAAA,CAAC,QACC,EAAA,IAAA,kBAAAA,cAAA,CAAA,aAAA,CAAC,UAAW,EAAA,EAAA,OAAA,EAAQ,WACjB,EAAA,EAAA,CAAA,CAAE,iBAAiB,CACtB,CACF,CAAA,kBACCA,cAAA,CAAA,aAAA,CAAA,cAAA,EAAA,EAAe,KAAO,EAAA,cAAA,EACrB,EAAA,kBAAAA,cAAA,CAAA,aAAA,CAAC,YACC,EAAA,IAAA,kBAAAA,cAAA,CAAA,aAAA,CAAC,YAAa,EAAA,IAAA,CAChB,CACC,EAAA,CAAA,CAAE,mBAAmB,CACxB,CACF,CAAA;AAAA,KAEJ;AAAA,GACF,CAAA;AAEJ;;;;"}
|
|
@@ -6,10 +6,16 @@ import ClickAwayListener from '@mui/material/ClickAwayListener';
|
|
|
6
6
|
import React__default from 'react';
|
|
7
7
|
import { LeftMenu } from './LeftMenu.esm.js';
|
|
8
8
|
import MenuIcon from '@mui/icons-material/Menu';
|
|
9
|
+
import '@backstage/core-plugin-api';
|
|
10
|
+
import '../../api.esm.js';
|
|
11
|
+
import 'react-use';
|
|
12
|
+
import { useTranslation } from '../../hooks/useTranslation.esm.js';
|
|
13
|
+
import 'react-use/lib/useAsync';
|
|
9
14
|
|
|
10
15
|
const LeftMenuButton = () => {
|
|
11
16
|
const [open, setOpen] = React__default.useState(false);
|
|
12
17
|
const anchorRef = React__default.useRef(null);
|
|
18
|
+
const { t } = useTranslation();
|
|
13
19
|
const handleToggle = () => {
|
|
14
20
|
setOpen((prevOpen2) => !prevOpen2);
|
|
15
21
|
};
|
|
@@ -44,7 +50,7 @@ const LeftMenuButton = () => {
|
|
|
44
50
|
startIcon: /* @__PURE__ */ React__default.createElement(MenuIcon, null),
|
|
45
51
|
style: { marginBottom: "0.5rem" }
|
|
46
52
|
},
|
|
47
|
-
"
|
|
53
|
+
t("leftMenu.buttonLabel")
|
|
48
54
|
), /* @__PURE__ */ React__default.createElement(
|
|
49
55
|
Popper,
|
|
50
56
|
{
|
|
@@ -62,15 +68,26 @@ const LeftMenuButton = () => {
|
|
|
62
68
|
transformOrigin: placement === "bottom" ? "left top" : "left bottom"
|
|
63
69
|
}
|
|
64
70
|
},
|
|
65
|
-
/* @__PURE__ */ React__default.createElement(ClickAwayListener, { onClickAway: handleClose }, /* @__PURE__ */ React__default.createElement(
|
|
66
|
-
|
|
71
|
+
/* @__PURE__ */ React__default.createElement(ClickAwayListener, { onClickAway: handleClose }, /* @__PURE__ */ React__default.createElement(
|
|
72
|
+
Paper,
|
|
67
73
|
{
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
+
sx: (theme) => ({
|
|
75
|
+
marginLeft: 2,
|
|
76
|
+
borderColor: theme.palette.divider,
|
|
77
|
+
borderWidth: "1px",
|
|
78
|
+
borderStyle: "solid"
|
|
79
|
+
})
|
|
80
|
+
},
|
|
81
|
+
/* @__PURE__ */ React__default.createElement(
|
|
82
|
+
LeftMenu,
|
|
83
|
+
{
|
|
84
|
+
onKeyDown: handleListKeyDown,
|
|
85
|
+
autoFocusItem: open,
|
|
86
|
+
onClick: handleClose,
|
|
87
|
+
inPopup: true
|
|
88
|
+
}
|
|
89
|
+
)
|
|
90
|
+
))
|
|
74
91
|
)
|
|
75
92
|
));
|
|
76
93
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LeftMenuButton.esm.js","sources":["../../../src/components/LeftMenu/LeftMenuButton.tsx"],"sourcesContent":["import Button from '@mui/material/Button';\nimport Popper from '@mui/material/Popper';\nimport Paper from '@mui/material/Paper';\nimport Grow from '@mui/material/Grow';\nimport ClickAwayListener from '@mui/material/ClickAwayListener';\nimport React from 'react';\nimport { LeftMenu } from './LeftMenu';\nimport MenuIcon from '@mui/icons-material/Menu';\n\nexport const LeftMenuButton = () => {\n const [open, setOpen] = React.useState(false);\n const anchorRef = React.useRef<HTMLButtonElement>(null);\n\n const handleToggle = () => {\n setOpen(prevOpen => !prevOpen);\n };\n\n const handleClose = (\n event: MouseEvent | TouchEvent | React.MouseEvent<EventTarget>,\n ) => {\n if (\n anchorRef.current &&\n anchorRef.current.contains(event.target as HTMLElement)\n ) {\n return;\n }\n\n setOpen(false);\n };\n\n function handleListKeyDown(event: React.KeyboardEvent) {\n if (event.key === 'Tab') {\n event.preventDefault();\n setOpen(false);\n }\n }\n\n // return focus to the button when we transitioned from !open -> open\n const prevOpen = React.useRef(open);\n React.useEffect(() => {\n if (prevOpen.current && !open) {\n anchorRef.current!.focus();\n }\n\n prevOpen.current = open;\n }, [open]);\n\n return (\n <div>\n <Button\n ref={anchorRef}\n aria-controls={open ? 'menu-list-grow' : undefined}\n aria-haspopup=\"true\"\n color=\"primary\"\n variant=\"contained\"\n onClick={handleToggle}\n startIcon={<MenuIcon />}\n style={{ marginBottom: '0.5rem' }}\n >\n
|
|
1
|
+
{"version":3,"file":"LeftMenuButton.esm.js","sources":["../../../src/components/LeftMenu/LeftMenuButton.tsx"],"sourcesContent":["import Button from '@mui/material/Button';\nimport Popper from '@mui/material/Popper';\nimport Paper from '@mui/material/Paper';\nimport Grow from '@mui/material/Grow';\nimport ClickAwayListener from '@mui/material/ClickAwayListener';\nimport React from 'react';\nimport { LeftMenu } from './LeftMenu';\nimport MenuIcon from '@mui/icons-material/Menu';\nimport { useTranslation } from '../../hooks';\n\nexport const LeftMenuButton = () => {\n const [open, setOpen] = React.useState(false);\n const anchorRef = React.useRef<HTMLButtonElement>(null);\n const { t } = useTranslation();\n\n const handleToggle = () => {\n setOpen(prevOpen => !prevOpen);\n };\n\n const handleClose = (\n event: MouseEvent | TouchEvent | React.MouseEvent<EventTarget>,\n ) => {\n if (\n anchorRef.current &&\n anchorRef.current.contains(event.target as HTMLElement)\n ) {\n return;\n }\n\n setOpen(false);\n };\n\n function handleListKeyDown(event: React.KeyboardEvent) {\n if (event.key === 'Tab') {\n event.preventDefault();\n setOpen(false);\n }\n }\n\n // return focus to the button when we transitioned from !open -> open\n const prevOpen = React.useRef(open);\n React.useEffect(() => {\n if (prevOpen.current && !open) {\n anchorRef.current!.focus();\n }\n\n prevOpen.current = open;\n }, [open]);\n\n return (\n <div>\n <Button\n ref={anchorRef}\n aria-controls={open ? 'menu-list-grow' : undefined}\n aria-haspopup=\"true\"\n color=\"primary\"\n variant=\"contained\"\n onClick={handleToggle}\n startIcon={<MenuIcon />}\n style={{ marginBottom: '0.5rem' }}\n >\n {t('leftMenu.buttonLabel')}\n </Button>\n <Popper\n open={open}\n anchorEl={anchorRef.current}\n role={undefined}\n disablePortal\n style={{ zIndex: 1000 }}\n >\n {({ TransitionProps, placement }) => (\n <Grow\n {...TransitionProps}\n style={{\n transformOrigin:\n placement === 'bottom' ? 'left top' : 'left bottom',\n }}\n >\n <ClickAwayListener onClickAway={handleClose}>\n <Paper\n sx={theme => ({\n marginLeft: 2,\n borderColor: theme.palette.divider,\n borderWidth: '1px',\n borderStyle: 'solid',\n })}\n >\n <LeftMenu\n onKeyDown={handleListKeyDown}\n autoFocusItem={open}\n onClick={handleClose}\n inPopup\n />\n </Paper>\n </ClickAwayListener>\n </Grow>\n )}\n </Popper>\n </div>\n );\n};\n"],"names":["React","prevOpen"],"mappings":"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"}
|
|
@@ -7,6 +7,8 @@ import '../../api.esm.js';
|
|
|
7
7
|
import 'react-use';
|
|
8
8
|
import { useTranslation } from '../../hooks/useTranslation.esm.js';
|
|
9
9
|
import 'react-use/lib/useAsync';
|
|
10
|
+
import { UserTooltip } from '../TagsAndEntities/UserChip.esm.js';
|
|
11
|
+
import Tooltip from '@mui/material/Tooltip';
|
|
10
12
|
|
|
11
13
|
const UserLink = (props) => {
|
|
12
14
|
const { entityRef, linkProps } = props;
|
|
@@ -18,7 +20,15 @@ const UserLink = (props) => {
|
|
|
18
20
|
if (entityRef === "anonymous") {
|
|
19
21
|
return /* @__PURE__ */ React__default.createElement(React__default.Fragment, null, t("userLink.anonymous"));
|
|
20
22
|
}
|
|
21
|
-
return /* @__PURE__ */ React__default.createElement(
|
|
23
|
+
return /* @__PURE__ */ React__default.createElement(
|
|
24
|
+
Tooltip,
|
|
25
|
+
{
|
|
26
|
+
arrow: true,
|
|
27
|
+
title: /* @__PURE__ */ React__default.createElement(UserTooltip, { entityRef }),
|
|
28
|
+
enterDelay: 400
|
|
29
|
+
},
|
|
30
|
+
/* @__PURE__ */ React__default.createElement(Link, { to: `${userRoute()}/${entityRef}`, ...linkProps }, userName)
|
|
31
|
+
);
|
|
22
32
|
};
|
|
23
33
|
const AuthorLink = (props) => {
|
|
24
34
|
const { entity, linkProps } = props;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Links.esm.js","sources":["../../../src/components/Links/Links.tsx"],"sourcesContent":["import React from 'react';\nimport { useRouteRef } from '@backstage/core-plugin-api';\nimport { useEntityPresentation } from '@backstage/plugin-catalog-react';\nimport { Link, LinkProps } from '@backstage/core-components';\nimport { userRouteRef } from '../../routes';\nimport { Answer, Comment, Post } from '@drodil/backstage-plugin-qeta-common';\nimport { useTranslation } from '../../hooks';\n\nexport const UserLink = (props: {\n entityRef: string;\n linkProps?: LinkProps;\n}) => {\n const { entityRef, linkProps } = props;\n const userRoute = useRouteRef(userRouteRef);\n const { t } = useTranslation();\n const { primaryTitle: userName } = useEntityPresentation(\n entityRef.startsWith('user:') ? entityRef : `user:${entityRef}`,\n );\n if (entityRef === 'anonymous') {\n return <>{t('userLink.anonymous')}</>;\n }\n return (\n <Link to={`${userRoute()}/${entityRef}`} {...linkProps}>\n
|
|
1
|
+
{"version":3,"file":"Links.esm.js","sources":["../../../src/components/Links/Links.tsx"],"sourcesContent":["import React from 'react';\nimport { useRouteRef } from '@backstage/core-plugin-api';\nimport { useEntityPresentation } from '@backstage/plugin-catalog-react';\nimport { Link, LinkProps } from '@backstage/core-components';\nimport { userRouteRef } from '../../routes';\nimport { Answer, Comment, Post } from '@drodil/backstage-plugin-qeta-common';\nimport { useTranslation } from '../../hooks';\nimport { UserTooltip } from '../TagsAndEntities/UserChip';\nimport Tooltip from '@mui/material/Tooltip';\n\nexport const UserLink = (props: {\n entityRef: string;\n linkProps?: LinkProps;\n}) => {\n const { entityRef, linkProps } = props;\n const userRoute = useRouteRef(userRouteRef);\n const { t } = useTranslation();\n const { primaryTitle: userName } = useEntityPresentation(\n entityRef.startsWith('user:') ? entityRef : `user:${entityRef}`,\n );\n if (entityRef === 'anonymous') {\n return <>{t('userLink.anonymous')}</>;\n }\n return (\n <Tooltip\n arrow\n title={<UserTooltip entityRef={entityRef} />}\n enterDelay={400}\n >\n <Link to={`${userRoute()}/${entityRef}`} {...linkProps}>\n {userName}\n </Link>\n </Tooltip>\n );\n};\n\nexport const AuthorLink = (props: {\n entity: Post | Answer | Comment;\n linkProps?: LinkProps;\n}) => {\n const { entity, linkProps } = props;\n return <UserLink entityRef={entity.author} linkProps={linkProps} />;\n};\n\nexport const UpdatedByLink = (props: {\n entity: Post | Answer | Comment;\n linkProps?: LinkProps;\n}) => {\n const { entity, linkProps } = props;\n if (!entity.updatedBy) {\n return null;\n }\n return <UserLink entityRef={entity.updatedBy} linkProps={linkProps} />;\n};\n"],"names":["React"],"mappings":";;;;;;;;;;;;AAUa,MAAA,QAAA,GAAW,CAAC,KAGnB,KAAA;AACJ,EAAM,MAAA,EAAE,SAAW,EAAA,SAAA,EAAc,GAAA,KAAA,CAAA;AACjC,EAAM,MAAA,SAAA,GAAY,YAAY,YAAY,CAAA,CAAA;AAC1C,EAAM,MAAA,EAAE,CAAE,EAAA,GAAI,cAAe,EAAA,CAAA;AAC7B,EAAM,MAAA,EAAE,YAAc,EAAA,QAAA,EAAa,GAAA,qBAAA;AAAA,IACjC,UAAU,UAAW,CAAA,OAAO,CAAI,GAAA,SAAA,GAAY,QAAQ,SAAS,CAAA,CAAA;AAAA,GAC/D,CAAA;AACA,EAAA,IAAI,cAAc,WAAa,EAAA;AAC7B,IAAO,uBAAAA,cAAA,CAAA,aAAA,CAAAA,cAAA,CAAA,QAAA,EAAA,IAAA,EAAG,CAAE,CAAA,oBAAoB,CAAE,CAAA,CAAA;AAAA,GACpC;AACA,EACE,uBAAAA,cAAA,CAAA,aAAA;AAAA,IAAC,OAAA;AAAA,IAAA;AAAA,MACC,KAAK,EAAA,IAAA;AAAA,MACL,KAAA,kBAAQA,cAAA,CAAA,aAAA,CAAA,WAAA,EAAA,EAAY,SAAsB,EAAA,CAAA;AAAA,MAC1C,UAAY,EAAA,GAAA;AAAA,KAAA;AAAA,oBAEZA,cAAA,CAAA,aAAA,CAAC,IAAK,EAAA,EAAA,EAAA,EAAI,CAAG,EAAA,SAAA,EAAW,CAAA,CAAA,EAAI,SAAS,CAAA,CAAA,EAAK,GAAG,SAAA,EAAA,EAC1C,QACH,CAAA;AAAA,GACF,CAAA;AAEJ,EAAA;AAEa,MAAA,UAAA,GAAa,CAAC,KAGrB,KAAA;AACJ,EAAM,MAAA,EAAE,MAAQ,EAAA,SAAA,EAAc,GAAA,KAAA,CAAA;AAC9B,EAAA,uBAAQA,cAAA,CAAA,aAAA,CAAA,QAAA,EAAA,EAAS,SAAW,EAAA,MAAA,CAAO,QAAQ,SAAsB,EAAA,CAAA,CAAA;AACnE,EAAA;AAEa,MAAA,aAAA,GAAgB,CAAC,KAGxB,KAAA;AACJ,EAAM,MAAA,EAAE,MAAQ,EAAA,SAAA,EAAc,GAAA,KAAA,CAAA;AAC9B,EAAI,IAAA,CAAC,OAAO,SAAW,EAAA;AACrB,IAAO,OAAA,IAAA,CAAA;AAAA,GACT;AACA,EAAA,uBAAQA,cAAA,CAAA,aAAA,CAAA,QAAA,EAAA,EAAS,SAAW,EAAA,MAAA,CAAO,WAAW,SAAsB,EAAA,CAAA,CAAA;AACtE;;;;"}
|
|
@@ -1,8 +1,5 @@
|
|
|
1
1
|
import Divider from '@mui/material/Divider';
|
|
2
|
-
import Box from '@mui/material/Box';
|
|
3
2
|
import ListItem from '@mui/material/ListItem';
|
|
4
|
-
import List from '@mui/material/List';
|
|
5
|
-
import ListSubheader from '@mui/material/ListSubheader';
|
|
6
3
|
import ListItemText from '@mui/material/ListItemText';
|
|
7
4
|
import React__default from 'react';
|
|
8
5
|
import Skeleton from '@mui/material/Skeleton';
|
|
@@ -14,6 +11,7 @@ import { useTranslation } from '../../hooks/useTranslation.esm.js';
|
|
|
14
11
|
import 'react-use/lib/useAsync';
|
|
15
12
|
import ListItemButton from '@mui/material/ListItemButton';
|
|
16
13
|
import { useNavigate } from 'react-router-dom';
|
|
14
|
+
import { RightListContainer, RightList } from '../Styled/RightList.esm.js';
|
|
17
15
|
|
|
18
16
|
const PostHighlightList = (props) => {
|
|
19
17
|
const {
|
|
@@ -33,56 +31,18 @@ const PostHighlightList = (props) => {
|
|
|
33
31
|
const questionRoute = useRouteRef(questionRouteRef);
|
|
34
32
|
const articleRoute = useRouteRef(articleRouteRef);
|
|
35
33
|
const posts = response?.posts ?? [];
|
|
36
|
-
return /* @__PURE__ */ React__default.createElement(
|
|
37
|
-
|
|
38
|
-
{
|
|
39
|
-
|
|
40
|
-
sx: {
|
|
41
|
-
width: "100%",
|
|
42
|
-
bgcolor: "background.paper",
|
|
43
|
-
marginBottom: 2,
|
|
44
|
-
borderRadius: 1
|
|
45
|
-
}
|
|
46
|
-
},
|
|
47
|
-
/* @__PURE__ */ React__default.createElement(
|
|
48
|
-
List,
|
|
34
|
+
return /* @__PURE__ */ React__default.createElement(RightListContainer, null, /* @__PURE__ */ React__default.createElement(RightList, { title: props.title, icon: props.icon }, loading && /* @__PURE__ */ React__default.createElement(ListItem, { className: "qetaPostHighlightListListItem", dense: true }, /* @__PURE__ */ React__default.createElement(Skeleton, { variant: "rectangular" })), error && /* @__PURE__ */ React__default.createElement(ListItem, { className: "qetaPostHighlightListListItem", dense: true }, /* @__PURE__ */ React__default.createElement(ListItemText, null, t("highlights.loadError"))), !error && posts.length === 0 && /* @__PURE__ */ React__default.createElement(ListItem, { className: "qetaPostHighlightListListItem", dense: true }, /* @__PURE__ */ React__default.createElement(ListItemText, null, props.noQuestionsLabel)), !error && posts.map((q) => {
|
|
35
|
+
const route = q.type === "question" ? questionRoute : articleRoute;
|
|
36
|
+
return /* @__PURE__ */ React__default.createElement(React__default.Fragment, { key: q.id }, /* @__PURE__ */ React__default.createElement(Divider, null), /* @__PURE__ */ React__default.createElement(
|
|
37
|
+
ListItemButton,
|
|
49
38
|
{
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
ListSubheader,
|
|
54
|
-
{
|
|
55
|
-
disableSticky: true,
|
|
56
|
-
component: "div",
|
|
57
|
-
id: "nested-list-subheader",
|
|
58
|
-
color: "primary",
|
|
59
|
-
style: {
|
|
60
|
-
whiteSpace: "nowrap",
|
|
61
|
-
overflow: "hidden",
|
|
62
|
-
textOverflow: "ellipsis"
|
|
63
|
-
}
|
|
64
|
-
},
|
|
65
|
-
props.title,
|
|
66
|
-
props.icon
|
|
67
|
-
)
|
|
39
|
+
dense: true,
|
|
40
|
+
component: "a",
|
|
41
|
+
onClick: () => navigate(route({ id: q.id.toString(10) }))
|
|
68
42
|
},
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
!error && posts.map((q) => {
|
|
73
|
-
const route = q.type === "question" ? questionRoute : articleRoute;
|
|
74
|
-
return /* @__PURE__ */ React__default.createElement(React__default.Fragment, { key: q.id }, /* @__PURE__ */ React__default.createElement(Divider, null), /* @__PURE__ */ React__default.createElement(
|
|
75
|
-
ListItemButton,
|
|
76
|
-
{
|
|
77
|
-
dense: true,
|
|
78
|
-
component: "a",
|
|
79
|
-
onClick: () => navigate(route({ id: q.id.toString(10) }))
|
|
80
|
-
},
|
|
81
|
-
/* @__PURE__ */ React__default.createElement(ListItemText, null, q.title)
|
|
82
|
-
));
|
|
83
|
-
})
|
|
84
|
-
)
|
|
85
|
-
);
|
|
43
|
+
/* @__PURE__ */ React__default.createElement(ListItemText, null, q.title)
|
|
44
|
+
));
|
|
45
|
+
})));
|
|
86
46
|
};
|
|
87
47
|
|
|
88
48
|
export { PostHighlightList };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PostHighlightList.esm.js","sources":["../../../src/components/PostHighlightList/PostHighlightList.tsx"],"sourcesContent":["import Divider from '@mui/material/Divider';\nimport
|
|
1
|
+
{"version":3,"file":"PostHighlightList.esm.js","sources":["../../../src/components/PostHighlightList/PostHighlightList.tsx"],"sourcesContent":["import Divider from '@mui/material/Divider';\nimport ListItem from '@mui/material/ListItem';\nimport ListItemText from '@mui/material/ListItemText';\nimport React from 'react';\nimport Skeleton from '@mui/material/Skeleton';\nimport { useRouteRef } from '@backstage/core-plugin-api';\nimport { articleRouteRef, questionRouteRef } from '../../routes';\nimport { PostsQuery, PostType } from '@drodil/backstage-plugin-qeta-common';\nimport { useQetaApi, useTranslation } from '../../hooks';\nimport ListItemButton from '@mui/material/ListItemButton';\nimport { useNavigate } from 'react-router-dom';\nimport { RightList, RightListContainer } from '../Styled/RightList';\n\nexport const PostHighlightList = (props: {\n type: string;\n title: string;\n noQuestionsLabel: string;\n icon?: React.ReactNode;\n options?: PostsQuery;\n postType?: PostType;\n}) => {\n const {\n value: response,\n loading,\n error,\n } = useQetaApi(\n api =>\n api.getPostsList(props.type, {\n limit: 5,\n type: props.postType,\n ...props.options,\n }),\n [],\n );\n const { t } = useTranslation();\n const navigate = useNavigate();\n const questionRoute = useRouteRef(questionRouteRef);\n const articleRoute = useRouteRef(articleRouteRef);\n\n const posts = response?.posts ?? [];\n\n return (\n <RightListContainer>\n <RightList title={props.title} icon={props.icon}>\n {loading && (\n <ListItem className=\"qetaPostHighlightListListItem\" dense>\n <Skeleton variant=\"rectangular\" />\n </ListItem>\n )}\n {error && (\n <ListItem className=\"qetaPostHighlightListListItem\" dense>\n <ListItemText>{t('highlights.loadError')}</ListItemText>\n </ListItem>\n )}\n {!error && posts.length === 0 && (\n <ListItem className=\"qetaPostHighlightListListItem\" dense>\n <ListItemText>{props.noQuestionsLabel}</ListItemText>\n </ListItem>\n )}\n {!error &&\n posts.map(q => {\n const route = q.type === 'question' ? questionRoute : articleRoute;\n return (\n <React.Fragment key={q.id}>\n <Divider />\n <ListItemButton\n dense\n component=\"a\"\n onClick={() => navigate(route({ id: q.id.toString(10) }))}\n >\n <ListItemText>{q.title}</ListItemText>\n </ListItemButton>\n </React.Fragment>\n );\n })}\n </RightList>\n </RightListContainer>\n );\n};\n"],"names":["React"],"mappings":";;;;;;;;;;;;;;;AAaa,MAAA,iBAAA,GAAoB,CAAC,KAO5B,KAAA;AACJ,EAAM,MAAA;AAAA,IACJ,KAAO,EAAA,QAAA;AAAA,IACP,OAAA;AAAA,IACA,KAAA;AAAA,GACE,GAAA,UAAA;AAAA,IACF,CACE,GAAA,KAAA,GAAA,CAAI,YAAa,CAAA,KAAA,CAAM,IAAM,EAAA;AAAA,MAC3B,KAAO,EAAA,CAAA;AAAA,MACP,MAAM,KAAM,CAAA,QAAA;AAAA,MACZ,GAAG,KAAM,CAAA,OAAA;AAAA,KACV,CAAA;AAAA,IACH,EAAC;AAAA,GACH,CAAA;AACA,EAAM,MAAA,EAAE,CAAE,EAAA,GAAI,cAAe,EAAA,CAAA;AAC7B,EAAA,MAAM,WAAW,WAAY,EAAA,CAAA;AAC7B,EAAM,MAAA,aAAA,GAAgB,YAAY,gBAAgB,CAAA,CAAA;AAClD,EAAM,MAAA,YAAA,GAAe,YAAY,eAAe,CAAA,CAAA;AAEhD,EAAM,MAAA,KAAA,GAAQ,QAAU,EAAA,KAAA,IAAS,EAAC,CAAA;AAElC,EACE,uBAAAA,cAAA,CAAA,aAAA,CAAC,kBACC,EAAA,IAAA,kBAAAA,cAAA,CAAA,aAAA,CAAC,SAAU,EAAA,EAAA,KAAA,EAAO,KAAM,CAAA,KAAA,EAAO,IAAM,EAAA,KAAA,CAAM,IACxC,EAAA,EAAA,OAAA,oBACEA,cAAA,CAAA,aAAA,CAAA,QAAA,EAAA,EAAS,SAAU,EAAA,+BAAA,EAAgC,KAAK,EAAA,IAAA,EAAA,kBACtDA,cAAA,CAAA,aAAA,CAAA,QAAA,EAAA,EAAS,OAAQ,EAAA,aAAA,EAAc,CAClC,CAAA,EAED,KACC,oBAAAA,cAAA,CAAA,aAAA,CAAC,QAAS,EAAA,EAAA,SAAA,EAAU,+BAAgC,EAAA,KAAA,EAAK,wBACtDA,cAAA,CAAA,aAAA,CAAA,YAAA,EAAA,IAAA,EAAc,CAAE,CAAA,sBAAsB,CAAE,CAC3C,CAED,EAAA,CAAC,KAAS,IAAA,KAAA,CAAM,MAAW,KAAA,CAAA,oBACzBA,cAAA,CAAA,aAAA,CAAA,QAAA,EAAA,EAAS,SAAU,EAAA,+BAAA,EAAgC,KAAK,EAAA,IAAA,EAAA,kBACtDA,cAAA,CAAA,aAAA,CAAA,YAAA,EAAA,IAAA,EAAc,KAAM,CAAA,gBAAiB,CACxC,CAAA,EAED,CAAC,KAAA,IACA,KAAM,CAAA,GAAA,CAAI,CAAK,CAAA,KAAA;AACb,IAAA,MAAM,KAAQ,GAAA,CAAA,CAAE,IAAS,KAAA,UAAA,GAAa,aAAgB,GAAA,YAAA,CAAA;AACtD,IACE,uBAAAA,cAAA,CAAA,aAAA,CAACA,eAAM,QAAN,EAAA,EAAe,KAAK,CAAE,CAAA,EAAA,EAAA,kBACpBA,cAAA,CAAA,aAAA,CAAA,OAAA,EAAA,IAAQ,CACT,kBAAAA,cAAA,CAAA,aAAA;AAAA,MAAC,cAAA;AAAA,MAAA;AAAA,QACC,KAAK,EAAA,IAAA;AAAA,QACL,SAAU,EAAA,GAAA;AAAA,QACV,OAAS,EAAA,MAAM,QAAS,CAAA,KAAA,CAAM,EAAE,EAAA,EAAI,CAAE,CAAA,EAAA,CAAG,QAAS,CAAA,EAAE,CAAE,EAAC,CAAC,CAAA;AAAA,OAAA;AAAA,sBAExDA,cAAA,CAAA,aAAA,CAAC,YAAc,EAAA,IAAA,EAAA,CAAA,CAAE,KAAM,CAAA;AAAA,KAE3B,CAAA,CAAA;AAAA,GAEH,CACL,CACF,CAAA,CAAA;AAEJ;;;;"}
|