@drodil/backstage-plugin-qeta-react 3.56.1 → 3.57.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 +60 -18
- package/dist/components/FollowedLists/FollowedCollectionsList.esm.js.map +1 -1
- package/dist/components/FollowedLists/FollowedEntitiesList.esm.js +46 -18
- package/dist/components/FollowedLists/FollowedEntitiesList.esm.js.map +1 -1
- package/dist/components/FollowedLists/FollowedTagsList.esm.js +44 -18
- package/dist/components/FollowedLists/FollowedTagsList.esm.js.map +1 -1
- package/dist/components/FollowedLists/FollowedUsersList.esm.js +55 -26
- package/dist/components/FollowedLists/FollowedUsersList.esm.js.map +1 -1
- package/dist/components/Links/Links.esm.js +26 -18
- package/dist/components/Links/Links.esm.js.map +1 -1
- package/dist/components/MarkdownRenderer/MarkdownRenderer.esm.js +4 -2
- package/dist/components/MarkdownRenderer/MarkdownRenderer.esm.js.map +1 -1
- package/dist/components/PostHighlightList/PostHighlightList.esm.js +23 -145
- package/dist/components/PostHighlightList/PostHighlightList.esm.js.map +1 -1
- package/dist/components/TagsAndEntities/EntityChip.esm.js +42 -109
- package/dist/components/TagsAndEntities/EntityChip.esm.js.map +1 -1
- package/dist/components/TagsAndEntities/TagChip.esm.js +56 -118
- package/dist/components/TagsAndEntities/TagChip.esm.js.map +1 -1
- package/dist/components/TagsContainer/EditTagModal.esm.js.map +1 -1
- package/dist/components/TagsContainer/TagsContainer.esm.js +2 -1
- package/dist/components/TagsContainer/TagsContainer.esm.js.map +1 -1
- package/dist/components/Timeline/TimelineItem.esm.js +53 -2
- package/dist/components/Timeline/TimelineItem.esm.js.map +1 -1
- package/dist/components/Tooltips/CollectionTooltip.esm.js +151 -0
- package/dist/components/Tooltips/CollectionTooltip.esm.js.map +1 -0
- package/dist/components/Tooltips/EntityTooltip.esm.js +188 -0
- package/dist/components/Tooltips/EntityTooltip.esm.js.map +1 -0
- package/dist/components/Tooltips/PostTooltip.esm.js +257 -0
- package/dist/components/Tooltips/PostTooltip.esm.js.map +1 -0
- package/dist/components/Tooltips/TagTooltip.esm.js +199 -0
- package/dist/components/Tooltips/TagTooltip.esm.js.map +1 -0
- package/dist/components/Tooltips/UserTooltip.esm.js +259 -0
- package/dist/components/Tooltips/UserTooltip.esm.js.map +1 -0
- package/dist/hooks/useEntityAuthor.esm.js +3 -5
- package/dist/hooks/useEntityAuthor.esm.js.map +1 -1
- package/package.json +3 -3
- package/dist/components/TagsAndEntities/UserChip.esm.js +0 -88
- package/dist/components/TagsAndEntities/UserChip.esm.js.map +0 -1
|
@@ -3,11 +3,43 @@ import { useTranslationRef } from '@backstage/core-plugin-api/alpha';
|
|
|
3
3
|
import { qetaTranslationRef } from '../../translation.esm.js';
|
|
4
4
|
import { useCollectionsFollow } from '../../hooks/useCollectionsFollow.esm.js';
|
|
5
5
|
import { RightListContainer, RightList } from '../Utility/RightList.esm.js';
|
|
6
|
-
import { makeStyles, ListItem, Box,
|
|
6
|
+
import { makeStyles, ListItem, Box, ListItemText } from '@material-ui/core';
|
|
7
7
|
import PlaylistPlayOutlined from '@material-ui/icons/PlaylistPlayOutlined';
|
|
8
8
|
import { Link } from 'react-router-dom';
|
|
9
9
|
import { collectionRouteRef } from '../../routes.esm.js';
|
|
10
10
|
import { useRouteRef } from '@backstage/core-plugin-api';
|
|
11
|
+
import 'react';
|
|
12
|
+
import '../../api.esm.js';
|
|
13
|
+
import '../MarkdownRenderer/MarkdownRenderer.esm.js';
|
|
14
|
+
import 'react-use';
|
|
15
|
+
import '@backstage/plugin-signals-react';
|
|
16
|
+
import '../../hooks/useListItemStyles.esm.js';
|
|
17
|
+
import '@backstage/catalog-model';
|
|
18
|
+
import 'dataloader';
|
|
19
|
+
import '@backstage/plugin-catalog-react';
|
|
20
|
+
import 'react-use/lib/useAsync';
|
|
21
|
+
import '@backstage/plugin-permission-react';
|
|
22
|
+
import '@drodil/backstage-plugin-qeta-common';
|
|
23
|
+
import '@backstage/plugin-permission-common';
|
|
24
|
+
import 'react-use/lib/useDebounce';
|
|
25
|
+
import '../FilterPanel/FilterPanel.esm.js';
|
|
26
|
+
import '../QetaContext/QetaContext.esm.js';
|
|
27
|
+
import '@material-ui/lab';
|
|
28
|
+
import '@material-ui/icons/VisibilityOff';
|
|
29
|
+
import '@material-ui/icons/Visibility';
|
|
30
|
+
import '@material-ui/icons/LoyaltyOutlined';
|
|
31
|
+
import '@material-ui/icons/HelpOutline';
|
|
32
|
+
import '@material-ui/icons/DescriptionOutlined';
|
|
33
|
+
import '@material-ui/icons/PeopleAltOutlined';
|
|
34
|
+
import '../../hooks/useTooltipStyles.esm.js';
|
|
35
|
+
import { CollectionTooltip } from '../Tooltips/CollectionTooltip.esm.js';
|
|
36
|
+
import '@material-ui/icons/QuestionAnswerOutlined';
|
|
37
|
+
import '@material-ui/icons/Stars';
|
|
38
|
+
import '@material-ui/icons/CheckCircleOutline';
|
|
39
|
+
import 'react-relative-time';
|
|
40
|
+
import '@material-ui/icons/ThumbUpOutlined';
|
|
41
|
+
import '@material-ui/icons/VisibilityOutlined';
|
|
42
|
+
import '@material-ui/icons/ChatBubbleOutline';
|
|
11
43
|
|
|
12
44
|
const useStyles = makeStyles((theme) => ({
|
|
13
45
|
listItem: {
|
|
@@ -53,24 +85,34 @@ const FollowedCollectionsList = () => {
|
|
|
53
85
|
}
|
|
54
86
|
return /* @__PURE__ */ jsx(RightListContainer, { children: /* @__PURE__ */ jsx(RightList, { title: t("rightMenu.followedCollections"), limit: 5, randomize: true, children: collections.collections.map((collection) => {
|
|
55
87
|
const href = collectionRoute({ id: collection.id.toString(10) });
|
|
56
|
-
return /* @__PURE__ */
|
|
57
|
-
|
|
88
|
+
return /* @__PURE__ */ jsx(
|
|
89
|
+
CollectionTooltip,
|
|
58
90
|
{
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
children:
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
91
|
+
collectionId: collection.id,
|
|
92
|
+
interactive: false,
|
|
93
|
+
enterDelay: 400,
|
|
94
|
+
enterNextDelay: 400,
|
|
95
|
+
placement: "left",
|
|
96
|
+
children: /* @__PURE__ */ jsxs(
|
|
97
|
+
ListItem,
|
|
98
|
+
{
|
|
99
|
+
dense: true,
|
|
100
|
+
button: true,
|
|
101
|
+
className: classes.listItem,
|
|
102
|
+
component: Link,
|
|
103
|
+
to: href,
|
|
104
|
+
children: [
|
|
105
|
+
/* @__PURE__ */ jsx(Box, { className: classes.iconBox, children: /* @__PURE__ */ jsx(PlaylistPlayOutlined, { fontSize: "small" }) }),
|
|
106
|
+
/* @__PURE__ */ jsx(
|
|
107
|
+
ListItemText,
|
|
108
|
+
{
|
|
109
|
+
primary: collection.title,
|
|
110
|
+
classes: { primary: classes.listItemText }
|
|
111
|
+
}
|
|
112
|
+
)
|
|
113
|
+
]
|
|
114
|
+
}
|
|
115
|
+
)
|
|
74
116
|
},
|
|
75
117
|
collection.id
|
|
76
118
|
);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FollowedCollectionsList.esm.js","sources":["../../../src/components/FollowedLists/FollowedCollectionsList.tsx"],"sourcesContent":["import { useTranslationRef } from '@backstage/core-plugin-api/alpha';\nimport { qetaTranslationRef } from '../../translation';\nimport { useCollectionsFollow } from '../../hooks/useCollectionsFollow';\nimport { RightList, RightListContainer } from '../Utility/RightList';\nimport {
|
|
1
|
+
{"version":3,"file":"FollowedCollectionsList.esm.js","sources":["../../../src/components/FollowedLists/FollowedCollectionsList.tsx"],"sourcesContent":["import { useTranslationRef } from '@backstage/core-plugin-api/alpha';\nimport { qetaTranslationRef } from '../../translation';\nimport { useCollectionsFollow } from '../../hooks/useCollectionsFollow';\nimport { RightList, RightListContainer } from '../Utility/RightList';\nimport { Box, ListItem, ListItemText, makeStyles } from '@material-ui/core';\nimport PlaylistPlayOutlined from '@material-ui/icons/PlaylistPlayOutlined';\nimport { Link } from 'react-router-dom';\nimport { collectionRouteRef } from '../../routes';\nimport { useRouteRef } from '@backstage/core-plugin-api';\nimport { CollectionTooltip } from '../Tooltips';\n\nconst useStyles = makeStyles(theme => ({\n listItem: {\n display: 'flex',\n alignItems: 'center',\n padding: '0 4px',\n minHeight: 28,\n cursor: 'pointer',\n transition: 'background 0.2s',\n textDecoration: 'none',\n color: 'inherit',\n '&:hover': {\n background: theme.palette.action.hover,\n },\n },\n listItemText: {\n color: theme.palette.text.primary,\n whiteSpace: 'nowrap',\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n flex: 1,\n },\n iconBox: {\n minWidth: 28,\n maxWidth: 28,\n height: 24,\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n borderRadius: 4,\n marginRight: theme.spacing(1),\n marginLeft: theme.spacing(0.5),\n color: theme.palette.text.secondary,\n },\n}));\n\nexport const FollowedCollectionsList = () => {\n const collections = useCollectionsFollow();\n const { t } = useTranslationRef(qetaTranslationRef);\n const classes = useStyles();\n const collectionRoute = useRouteRef(collectionRouteRef);\n\n if (collections.collections.length === 0 || collections.loading) {\n return null;\n }\n\n return (\n <RightListContainer>\n <RightList title={t('rightMenu.followedCollections')} limit={5} randomize>\n {collections.collections.map(collection => {\n const href = collectionRoute({ id: collection.id.toString(10) });\n return (\n <CollectionTooltip\n key={collection.id}\n collectionId={collection.id}\n interactive={false}\n enterDelay={400}\n enterNextDelay={400}\n placement=\"left\"\n >\n <ListItem\n dense\n button\n className={classes.listItem}\n component={Link}\n to={href}\n >\n <Box className={classes.iconBox}>\n <PlaylistPlayOutlined fontSize=\"small\" />\n </Box>\n <ListItemText\n primary={collection.title}\n classes={{ primary: classes.listItemText }}\n />\n </ListItem>\n </CollectionTooltip>\n );\n })}\n </RightList>\n </RightListContainer>\n );\n};\n"],"names":[],"mappings":"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"}
|
|
@@ -15,13 +15,31 @@ import 'react-use/lib/useAsync';
|
|
|
15
15
|
import '@backstage/plugin-permission-react';
|
|
16
16
|
import '@drodil/backstage-plugin-qeta-common';
|
|
17
17
|
import '@backstage/plugin-permission-common';
|
|
18
|
-
import { makeStyles, ListItem, Box,
|
|
18
|
+
import { makeStyles, ListItem, Box, ListItemText } from '@material-ui/core';
|
|
19
19
|
import { Link } from 'react-router-dom';
|
|
20
20
|
import 'react-use/lib/useDebounce';
|
|
21
21
|
import '../FilterPanel/FilterPanel.esm.js';
|
|
22
22
|
import '../QetaContext/QetaContext.esm.js';
|
|
23
23
|
import { RightListContainer, RightList } from '../Utility/RightList.esm.js';
|
|
24
24
|
import { entityRouteRef } from '../../routes.esm.js';
|
|
25
|
+
import '../MarkdownRenderer/MarkdownRenderer.esm.js';
|
|
26
|
+
import '@material-ui/lab';
|
|
27
|
+
import '@material-ui/icons/VisibilityOff';
|
|
28
|
+
import '@material-ui/icons/Visibility';
|
|
29
|
+
import '@material-ui/icons/LoyaltyOutlined';
|
|
30
|
+
import '@material-ui/icons/HelpOutline';
|
|
31
|
+
import '@material-ui/icons/DescriptionOutlined';
|
|
32
|
+
import '@material-ui/icons/PeopleAltOutlined';
|
|
33
|
+
import '../../hooks/useTooltipStyles.esm.js';
|
|
34
|
+
import { EntityTooltip } from '../Tooltips/EntityTooltip.esm.js';
|
|
35
|
+
import '@material-ui/icons/LibraryBooksOutlined';
|
|
36
|
+
import '@material-ui/icons/QuestionAnswerOutlined';
|
|
37
|
+
import '@material-ui/icons/Stars';
|
|
38
|
+
import '@material-ui/icons/CheckCircleOutline';
|
|
39
|
+
import 'react-relative-time';
|
|
40
|
+
import '@material-ui/icons/ThumbUpOutlined';
|
|
41
|
+
import '@material-ui/icons/VisibilityOutlined';
|
|
42
|
+
import '@material-ui/icons/ChatBubbleOutline';
|
|
25
43
|
|
|
26
44
|
const useStyles = makeStyles((theme) => ({
|
|
27
45
|
listItem: {
|
|
@@ -62,24 +80,34 @@ const FollowedEntityItem = ({ entityRef }) => {
|
|
|
62
80
|
const entityRoute = useRouteRef(entityRouteRef);
|
|
63
81
|
const { primaryTitle, Icon } = useEntityPresentation(entityRef);
|
|
64
82
|
const href = entityRoute({ entityRef });
|
|
65
|
-
return /* @__PURE__ */
|
|
66
|
-
|
|
83
|
+
return /* @__PURE__ */ jsx(
|
|
84
|
+
EntityTooltip,
|
|
67
85
|
{
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
children:
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
86
|
+
entity: entityRef,
|
|
87
|
+
interactive: false,
|
|
88
|
+
enterDelay: 400,
|
|
89
|
+
enterNextDelay: 400,
|
|
90
|
+
placement: "left",
|
|
91
|
+
children: /* @__PURE__ */ jsxs(
|
|
92
|
+
ListItem,
|
|
93
|
+
{
|
|
94
|
+
dense: true,
|
|
95
|
+
button: true,
|
|
96
|
+
className: classes.listItem,
|
|
97
|
+
component: Link,
|
|
98
|
+
to: href,
|
|
99
|
+
children: [
|
|
100
|
+
/* @__PURE__ */ jsx(Box, { className: classes.iconBox, children: Icon ? /* @__PURE__ */ jsx(Icon, { fontSize: "small" }) : null }),
|
|
101
|
+
/* @__PURE__ */ jsx(
|
|
102
|
+
ListItemText,
|
|
103
|
+
{
|
|
104
|
+
primary: primaryTitle ?? entityRef,
|
|
105
|
+
classes: { primary: classes.listItemText }
|
|
106
|
+
}
|
|
107
|
+
)
|
|
108
|
+
]
|
|
109
|
+
}
|
|
110
|
+
)
|
|
83
111
|
}
|
|
84
112
|
);
|
|
85
113
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FollowedEntitiesList.esm.js","sources":["../../../src/components/FollowedLists/FollowedEntitiesList.tsx"],"sourcesContent":["import { useEntityFollow } from '../../hooks';\nimport { RightList, RightListContainer } from '../Utility/RightList';\nimport {
|
|
1
|
+
{"version":3,"file":"FollowedEntitiesList.esm.js","sources":["../../../src/components/FollowedLists/FollowedEntitiesList.tsx"],"sourcesContent":["import { useEntityFollow } from '../../hooks';\nimport { RightList, RightListContainer } from '../Utility/RightList';\nimport { Box, ListItem, ListItemText, makeStyles } from '@material-ui/core';\nimport { useTranslationRef } from '@backstage/core-plugin-api/alpha';\nimport { qetaTranslationRef } from '../../translation';\nimport { Link } from 'react-router-dom';\nimport { entityRouteRef } from '../../routes';\nimport { useRouteRef } from '@backstage/core-plugin-api';\nimport { useEntityPresentation } from '@backstage/plugin-catalog-react';\nimport { EntityTooltip } from '../Tooltips';\n\nconst useStyles = makeStyles(theme => ({\n listItem: {\n display: 'flex',\n alignItems: 'center',\n padding: '0 4px',\n minHeight: 28,\n cursor: 'pointer',\n transition: 'background 0.2s',\n textDecoration: 'none',\n color: 'inherit',\n '&:hover': {\n background: theme.palette.action.hover,\n },\n },\n listItemText: {\n color: theme.palette.text.primary,\n whiteSpace: 'nowrap',\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n flex: 1,\n },\n iconBox: {\n minWidth: 28,\n maxWidth: 28,\n height: 24,\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n borderRadius: 4,\n marginRight: theme.spacing(1),\n marginLeft: theme.spacing(0.5),\n color: theme.palette.text.secondary,\n },\n}));\n\nconst FollowedEntityItem = ({ entityRef }: { entityRef: string }) => {\n const classes = useStyles();\n const entityRoute = useRouteRef(entityRouteRef);\n const { primaryTitle, Icon } = useEntityPresentation(entityRef);\n const href = entityRoute({ entityRef: entityRef });\n\n return (\n <EntityTooltip\n entity={entityRef}\n interactive={false}\n enterDelay={400}\n enterNextDelay={400}\n placement=\"left\"\n >\n <ListItem\n dense\n button\n className={classes.listItem}\n component={Link}\n to={href}\n >\n <Box className={classes.iconBox}>\n {Icon ? <Icon fontSize=\"small\" /> : null}\n </Box>\n <ListItemText\n primary={primaryTitle ?? entityRef}\n classes={{ primary: classes.listItemText }}\n />\n </ListItem>\n </EntityTooltip>\n );\n};\n\nexport const FollowedEntitiesList = () => {\n const entities = useEntityFollow();\n const { t } = useTranslationRef(qetaTranslationRef);\n\n if (entities.entities.length === 0 || entities.loading) {\n return null;\n }\n\n return (\n <RightListContainer>\n <RightList title={t('rightMenu.followedEntities')} limit={5} randomize>\n {entities.entities.map(entity => (\n <FollowedEntityItem key={entity} entityRef={entity} />\n ))}\n </RightList>\n </RightListContainer>\n );\n};\n"],"names":[],"mappings":"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"}
|
|
@@ -15,7 +15,7 @@ import 'react-use/lib/useAsync';
|
|
|
15
15
|
import '@backstage/plugin-permission-react';
|
|
16
16
|
import '@drodil/backstage-plugin-qeta-common';
|
|
17
17
|
import '@backstage/plugin-permission-common';
|
|
18
|
-
import { makeStyles, ListItem, Box,
|
|
18
|
+
import { makeStyles, ListItem, Box, ListItemText } from '@material-ui/core';
|
|
19
19
|
import { Link } from 'react-router-dom';
|
|
20
20
|
import 'react-use/lib/useDebounce';
|
|
21
21
|
import '../FilterPanel/FilterPanel.esm.js';
|
|
@@ -23,6 +23,22 @@ import '../QetaContext/QetaContext.esm.js';
|
|
|
23
23
|
import { RightListContainer, RightList } from '../Utility/RightList.esm.js';
|
|
24
24
|
import LocalOfferOutlined from '@material-ui/icons/LocalOfferOutlined';
|
|
25
25
|
import { tagRouteRef } from '../../routes.esm.js';
|
|
26
|
+
import { TagTooltip } from '../Tooltips/TagTooltip.esm.js';
|
|
27
|
+
import '@material-ui/lab';
|
|
28
|
+
import '@material-ui/icons/VisibilityOff';
|
|
29
|
+
import '@material-ui/icons/Visibility';
|
|
30
|
+
import '@material-ui/icons/HelpOutline';
|
|
31
|
+
import '@material-ui/icons/DescriptionOutlined';
|
|
32
|
+
import '@material-ui/icons/PeopleAltOutlined';
|
|
33
|
+
import '../../hooks/useTooltipStyles.esm.js';
|
|
34
|
+
import '@material-ui/icons/LibraryBooksOutlined';
|
|
35
|
+
import '@material-ui/icons/QuestionAnswerOutlined';
|
|
36
|
+
import '@material-ui/icons/Stars';
|
|
37
|
+
import '@material-ui/icons/CheckCircleOutline';
|
|
38
|
+
import 'react-relative-time';
|
|
39
|
+
import '@material-ui/icons/ThumbUpOutlined';
|
|
40
|
+
import '@material-ui/icons/VisibilityOutlined';
|
|
41
|
+
import '@material-ui/icons/ChatBubbleOutline';
|
|
26
42
|
|
|
27
43
|
const useStyles = makeStyles((theme) => ({
|
|
28
44
|
listItem: {
|
|
@@ -68,24 +84,34 @@ const FollowedTagsList = () => {
|
|
|
68
84
|
}
|
|
69
85
|
return /* @__PURE__ */ jsx(RightListContainer, { children: /* @__PURE__ */ jsx(RightList, { title: t("rightMenu.followedTags"), limit: 5, randomize: true, children: tags.tags.map((tag) => {
|
|
70
86
|
const href = tagRoute({ tag });
|
|
71
|
-
return /* @__PURE__ */
|
|
72
|
-
|
|
87
|
+
return /* @__PURE__ */ jsx(
|
|
88
|
+
TagTooltip,
|
|
73
89
|
{
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
children:
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
90
|
+
tag,
|
|
91
|
+
interactive: false,
|
|
92
|
+
enterDelay: 400,
|
|
93
|
+
enterNextDelay: 400,
|
|
94
|
+
placement: "left",
|
|
95
|
+
children: /* @__PURE__ */ jsxs(
|
|
96
|
+
ListItem,
|
|
97
|
+
{
|
|
98
|
+
dense: true,
|
|
99
|
+
button: true,
|
|
100
|
+
className: classes.listItem,
|
|
101
|
+
component: Link,
|
|
102
|
+
to: href,
|
|
103
|
+
children: [
|
|
104
|
+
/* @__PURE__ */ jsx(Box, { className: classes.iconBox, children: /* @__PURE__ */ jsx(LocalOfferOutlined, { fontSize: "small" }) }),
|
|
105
|
+
/* @__PURE__ */ jsx(
|
|
106
|
+
ListItemText,
|
|
107
|
+
{
|
|
108
|
+
primary: `${tag}`,
|
|
109
|
+
classes: { primary: classes.listItemText }
|
|
110
|
+
}
|
|
111
|
+
)
|
|
112
|
+
]
|
|
113
|
+
}
|
|
114
|
+
)
|
|
89
115
|
},
|
|
90
116
|
tag
|
|
91
117
|
);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FollowedTagsList.esm.js","sources":["../../../src/components/FollowedLists/FollowedTagsList.tsx"],"sourcesContent":["import { useTagsFollow } from '../../hooks';\nimport { RightList, RightListContainer } from '../Utility/RightList';\nimport {
|
|
1
|
+
{"version":3,"file":"FollowedTagsList.esm.js","sources":["../../../src/components/FollowedLists/FollowedTagsList.tsx"],"sourcesContent":["import { useTagsFollow } from '../../hooks';\nimport { RightList, RightListContainer } from '../Utility/RightList';\nimport { Box, ListItem, ListItemText, makeStyles } from '@material-ui/core';\nimport { useTranslationRef } from '@backstage/core-plugin-api/alpha';\nimport { qetaTranslationRef } from '../../translation';\nimport LocalOfferOutlined from '@material-ui/icons/LocalOfferOutlined';\nimport { Link } from 'react-router-dom';\nimport { tagRouteRef } from '../../routes';\nimport { useRouteRef } from '@backstage/core-plugin-api';\nimport { TagTooltip } from '../Tooltips';\n\nconst useStyles = makeStyles(theme => ({\n listItem: {\n display: 'flex',\n alignItems: 'center',\n padding: '0 4px',\n minHeight: 28,\n cursor: 'pointer',\n transition: 'background 0.2s',\n textDecoration: 'none',\n color: 'inherit',\n '&:hover': {\n background: theme.palette.action.hover,\n },\n },\n listItemText: {\n color: theme.palette.text.primary,\n whiteSpace: 'nowrap',\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n flex: 1,\n },\n iconBox: {\n minWidth: 28,\n maxWidth: 28,\n height: 24,\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n borderRadius: 4,\n marginRight: theme.spacing(1),\n marginLeft: theme.spacing(0.5),\n color: theme.palette.text.secondary,\n },\n}));\n\nexport const FollowedTagsList = () => {\n const tags = useTagsFollow();\n const { t } = useTranslationRef(qetaTranslationRef);\n const classes = useStyles();\n const tagRoute = useRouteRef(tagRouteRef);\n\n if (tags.tags.length === 0 || tags.loading) {\n return null;\n }\n\n return (\n <RightListContainer>\n <RightList title={t('rightMenu.followedTags')} limit={5} randomize>\n {tags.tags.map(tag => {\n const href = tagRoute({ tag: tag });\n return (\n <TagTooltip\n key={tag}\n tag={tag}\n interactive={false}\n enterDelay={400}\n enterNextDelay={400}\n placement=\"left\"\n >\n <ListItem\n dense\n button\n className={classes.listItem}\n component={Link}\n to={href}\n >\n <Box className={classes.iconBox}>\n <LocalOfferOutlined fontSize=\"small\" />\n </Box>\n <ListItemText\n primary={`${tag}`}\n classes={{ primary: classes.listItemText }}\n />\n </ListItem>\n </TagTooltip>\n );\n })}\n </RightList>\n </RightListContainer>\n );\n};\n"],"names":[],"mappings":"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"}
|
|
@@ -13,7 +13,7 @@ import 'react-use/lib/useAsync';
|
|
|
13
13
|
import '@backstage/plugin-permission-react';
|
|
14
14
|
import '@drodil/backstage-plugin-qeta-common';
|
|
15
15
|
import '@backstage/plugin-permission-common';
|
|
16
|
-
import { makeStyles, ListItem, Avatar,
|
|
16
|
+
import { makeStyles, ListItem, Avatar, ListItemText } from '@material-ui/core';
|
|
17
17
|
import { Link } from 'react-router-dom';
|
|
18
18
|
import 'react-use/lib/useDebounce';
|
|
19
19
|
import '../FilterPanel/FilterPanel.esm.js';
|
|
@@ -21,6 +21,25 @@ import '../QetaContext/QetaContext.esm.js';
|
|
|
21
21
|
import 'dataloader';
|
|
22
22
|
import { RightListContainer, RightList } from '../Utility/RightList.esm.js';
|
|
23
23
|
import { userRouteRef } from '../../routes.esm.js';
|
|
24
|
+
import '../MarkdownRenderer/MarkdownRenderer.esm.js';
|
|
25
|
+
import '@material-ui/lab';
|
|
26
|
+
import '@material-ui/icons/VisibilityOff';
|
|
27
|
+
import '@material-ui/icons/Visibility';
|
|
28
|
+
import '@material-ui/icons/LoyaltyOutlined';
|
|
29
|
+
import '@material-ui/icons/HelpOutline';
|
|
30
|
+
import '@material-ui/icons/DescriptionOutlined';
|
|
31
|
+
import '@material-ui/icons/PeopleAltOutlined';
|
|
32
|
+
import '../../hooks/useTooltipStyles.esm.js';
|
|
33
|
+
import '@backstage/catalog-model';
|
|
34
|
+
import '@backstage/plugin-catalog-react';
|
|
35
|
+
import '@material-ui/icons/LibraryBooksOutlined';
|
|
36
|
+
import { UserTooltip } from '../Tooltips/UserTooltip.esm.js';
|
|
37
|
+
import 'react-relative-time';
|
|
38
|
+
import '@material-ui/icons/ThumbUpOutlined';
|
|
39
|
+
import '@material-ui/icons/VisibilityOutlined';
|
|
40
|
+
import '@material-ui/icons/QuestionAnswerOutlined';
|
|
41
|
+
import '@material-ui/icons/ChatBubbleOutline';
|
|
42
|
+
import '@material-ui/icons/CheckCircleOutline';
|
|
24
43
|
|
|
25
44
|
const useStyles = makeStyles((theme) => ({
|
|
26
45
|
listItem: {
|
|
@@ -56,32 +75,42 @@ const FollowedUserItem = ({ entityRef }) => {
|
|
|
56
75
|
const userRoute = useRouteRef(userRouteRef);
|
|
57
76
|
const { name, initials, user } = useUserInfo(entityRef);
|
|
58
77
|
const href = `${userRoute()}/${entityRef}`;
|
|
59
|
-
return /* @__PURE__ */
|
|
60
|
-
|
|
78
|
+
return /* @__PURE__ */ jsx(
|
|
79
|
+
UserTooltip,
|
|
61
80
|
{
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
children:
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
81
|
+
entityRef,
|
|
82
|
+
interactive: false,
|
|
83
|
+
enterDelay: 400,
|
|
84
|
+
enterNextDelay: 400,
|
|
85
|
+
placement: "left",
|
|
86
|
+
children: /* @__PURE__ */ jsxs(
|
|
87
|
+
ListItem,
|
|
88
|
+
{
|
|
89
|
+
dense: true,
|
|
90
|
+
button: true,
|
|
91
|
+
className: classes.listItem,
|
|
92
|
+
component: Link,
|
|
93
|
+
to: href,
|
|
94
|
+
children: [
|
|
95
|
+
/* @__PURE__ */ jsx(
|
|
96
|
+
Avatar,
|
|
97
|
+
{
|
|
98
|
+
src: user?.spec?.profile?.picture,
|
|
99
|
+
alt: name,
|
|
100
|
+
className: classes.avatar,
|
|
101
|
+
children: initials
|
|
102
|
+
}
|
|
103
|
+
),
|
|
104
|
+
/* @__PURE__ */ jsx(
|
|
105
|
+
ListItemText,
|
|
106
|
+
{
|
|
107
|
+
primary: name ?? entityRef,
|
|
108
|
+
classes: { primary: classes.listItemText }
|
|
109
|
+
}
|
|
110
|
+
)
|
|
111
|
+
]
|
|
112
|
+
}
|
|
113
|
+
)
|
|
85
114
|
}
|
|
86
115
|
);
|
|
87
116
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FollowedUsersList.esm.js","sources":["../../../src/components/FollowedLists/FollowedUsersList.tsx"],"sourcesContent":["import { useUserFollow } from '../../hooks';\nimport { useUserInfo } from '../../hooks/useEntityAuthor';\nimport { RightList, RightListContainer } from '../Utility/RightList';\nimport {
|
|
1
|
+
{"version":3,"file":"FollowedUsersList.esm.js","sources":["../../../src/components/FollowedLists/FollowedUsersList.tsx"],"sourcesContent":["import { useUserFollow } from '../../hooks';\nimport { useUserInfo } from '../../hooks/useEntityAuthor';\nimport { RightList, RightListContainer } from '../Utility/RightList';\nimport { Avatar, ListItem, ListItemText, makeStyles } from '@material-ui/core';\nimport { useTranslationRef } from '@backstage/core-plugin-api/alpha';\nimport { qetaTranslationRef } from '../../translation';\nimport { Link } from 'react-router-dom';\nimport { userRouteRef } from '../../routes';\nimport { useRouteRef } from '@backstage/core-plugin-api';\nimport { UserTooltip } from '../Tooltips';\n\nconst useStyles = makeStyles(theme => ({\n listItem: {\n display: 'flex',\n alignItems: 'center',\n padding: '0 4px',\n minHeight: 28,\n cursor: 'pointer',\n transition: 'background 0.2s',\n textDecoration: 'none',\n color: 'inherit',\n '&:hover': {\n background: theme.palette.action.hover,\n },\n },\n listItemText: {\n color: theme.palette.text.primary,\n whiteSpace: 'nowrap',\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n flex: 1,\n },\n avatar: {\n width: 24,\n height: 24,\n fontSize: '0.75rem',\n marginRight: theme.spacing(1),\n marginLeft: theme.spacing(0.5),\n },\n}));\n\nconst FollowedUserItem = ({ entityRef }: { entityRef: string }) => {\n const classes = useStyles();\n const userRoute = useRouteRef(userRouteRef);\n const { name, initials, user } = useUserInfo(entityRef);\n const href = `${userRoute()}/${entityRef}`;\n\n return (\n <UserTooltip\n entityRef={entityRef}\n interactive={false}\n enterDelay={400}\n enterNextDelay={400}\n placement=\"left\"\n >\n <ListItem\n dense\n button\n className={classes.listItem}\n component={Link}\n to={href}\n >\n <Avatar\n src={user?.spec?.profile?.picture}\n alt={name}\n className={classes.avatar}\n >\n {initials}\n </Avatar>\n <ListItemText\n primary={name ?? entityRef}\n classes={{ primary: classes.listItemText }}\n />\n </ListItem>\n </UserTooltip>\n );\n};\n\nexport const FollowedUsersList = () => {\n const users = useUserFollow();\n const { t } = useTranslationRef(qetaTranslationRef);\n\n if (users.users.length === 0 || users.loading) {\n return null;\n }\n\n return (\n <RightListContainer>\n <RightList title={t('rightMenu.followedUsers')} limit={5} randomize>\n {users.users.map(user => (\n <FollowedUserItem key={user} entityRef={user} />\n ))}\n </RightList>\n </RightListContainer>\n );\n};\n"],"names":[],"mappings":"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"}
|
|
@@ -14,14 +14,31 @@ import 'react-use/lib/useAsync';
|
|
|
14
14
|
import '@backstage/plugin-permission-react';
|
|
15
15
|
import '@drodil/backstage-plugin-qeta-common';
|
|
16
16
|
import '@backstage/plugin-permission-common';
|
|
17
|
-
import
|
|
17
|
+
import '@material-ui/core';
|
|
18
18
|
import 'react-router-dom';
|
|
19
19
|
import 'react-use/lib/useDebounce';
|
|
20
20
|
import '../FilterPanel/FilterPanel.esm.js';
|
|
21
21
|
import '../QetaContext/QetaContext.esm.js';
|
|
22
22
|
import 'dataloader';
|
|
23
|
-
import
|
|
24
|
-
import
|
|
23
|
+
import '../MarkdownRenderer/MarkdownRenderer.esm.js';
|
|
24
|
+
import '@material-ui/lab';
|
|
25
|
+
import '@material-ui/icons/VisibilityOff';
|
|
26
|
+
import '@material-ui/icons/Visibility';
|
|
27
|
+
import '@material-ui/icons/LoyaltyOutlined';
|
|
28
|
+
import '@material-ui/icons/HelpOutline';
|
|
29
|
+
import '@material-ui/icons/DescriptionOutlined';
|
|
30
|
+
import '@material-ui/icons/PeopleAltOutlined';
|
|
31
|
+
import '../../hooks/useTooltipStyles.esm.js';
|
|
32
|
+
import '@backstage/catalog-model';
|
|
33
|
+
import '@backstage/plugin-catalog-react';
|
|
34
|
+
import '@material-ui/icons/LibraryBooksOutlined';
|
|
35
|
+
import { UserTooltip } from '../Tooltips/UserTooltip.esm.js';
|
|
36
|
+
import 'react-relative-time';
|
|
37
|
+
import '@material-ui/icons/ThumbUpOutlined';
|
|
38
|
+
import '@material-ui/icons/VisibilityOutlined';
|
|
39
|
+
import '@material-ui/icons/QuestionAnswerOutlined';
|
|
40
|
+
import '@material-ui/icons/ChatBubbleOutline';
|
|
41
|
+
import '@material-ui/icons/CheckCircleOutline';
|
|
25
42
|
|
|
26
43
|
const UserLink = (props) => {
|
|
27
44
|
const { entityRef, linkProps, anonymous, noLink } = props;
|
|
@@ -30,37 +47,28 @@ const UserLink = (props) => {
|
|
|
30
47
|
entityRef,
|
|
31
48
|
anonymous ?? entityRef === "anonymous"
|
|
32
49
|
);
|
|
33
|
-
const classes = useTooltipStyles();
|
|
34
50
|
if (anonymous && !isCurrentUser) {
|
|
35
51
|
return /* @__PURE__ */ jsx("span", { children: name });
|
|
36
52
|
}
|
|
37
53
|
if (noLink) {
|
|
38
54
|
return /* @__PURE__ */ jsx(
|
|
39
|
-
|
|
55
|
+
UserTooltip,
|
|
40
56
|
{
|
|
41
|
-
|
|
42
|
-
|
|
57
|
+
entityRef,
|
|
58
|
+
anonymous,
|
|
43
59
|
enterDelay: 400,
|
|
44
60
|
interactive: true,
|
|
45
|
-
classes: {
|
|
46
|
-
tooltip: classes.tooltip,
|
|
47
|
-
arrow: classes.tooltipArrow
|
|
48
|
-
},
|
|
49
61
|
children: /* @__PURE__ */ jsx("span", { children: name })
|
|
50
62
|
}
|
|
51
63
|
);
|
|
52
64
|
}
|
|
53
65
|
return /* @__PURE__ */ jsx(
|
|
54
|
-
|
|
66
|
+
UserTooltip,
|
|
55
67
|
{
|
|
56
|
-
|
|
57
|
-
|
|
68
|
+
entityRef,
|
|
69
|
+
anonymous,
|
|
58
70
|
enterDelay: 400,
|
|
59
71
|
interactive: true,
|
|
60
|
-
classes: {
|
|
61
|
-
tooltip: classes.tooltip,
|
|
62
|
-
arrow: classes.tooltipArrow
|
|
63
|
-
},
|
|
64
72
|
children: /* @__PURE__ */ jsx(Link, { to: `${userRoute()}/${entityRef}`, ...linkProps, children: name })
|
|
65
73
|
}
|
|
66
74
|
);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Links.esm.js","sources":["../../../src/components/Links/Links.tsx"],"sourcesContent":["import { useRouteRef } from '@backstage/core-plugin-api';\nimport { Link, LinkProps } from '@backstage/core-components';\nimport { userRouteRef } from '../../routes';\nimport { Answer, Comment, Post } from '@drodil/backstage-plugin-qeta-common';\nimport { useUserInfo } from '../../hooks';\nimport { UserTooltip } from '../
|
|
1
|
+
{"version":3,"file":"Links.esm.js","sources":["../../../src/components/Links/Links.tsx"],"sourcesContent":["import { useRouteRef } from '@backstage/core-plugin-api';\nimport { Link, LinkProps } from '@backstage/core-components';\nimport { userRouteRef } from '../../routes';\nimport { Answer, Comment, Post } from '@drodil/backstage-plugin-qeta-common';\nimport { useUserInfo } from '../../hooks';\nimport { UserTooltip } from '../Tooltips';\n\nexport const UserLink = (props: {\n entityRef: string;\n anonymous?: boolean;\n linkProps?: LinkProps;\n noLink?: boolean;\n}) => {\n const { entityRef, linkProps, anonymous, noLink } = props;\n const userRoute = useRouteRef(userRouteRef);\n const { name, isCurrentUser } = useUserInfo(\n entityRef,\n anonymous ?? entityRef === 'anonymous',\n );\n if (anonymous && !isCurrentUser) {\n return <span>{name}</span>;\n }\n\n if (noLink) {\n return (\n <UserTooltip\n entityRef={entityRef}\n anonymous={anonymous}\n enterDelay={400}\n interactive\n >\n <span>{name}</span>\n </UserTooltip>\n );\n }\n\n return (\n <UserTooltip\n entityRef={entityRef}\n anonymous={anonymous}\n enterDelay={400}\n interactive\n >\n <Link to={`${userRoute()}/${entityRef}`} {...linkProps}>\n {name}\n </Link>\n </UserTooltip>\n );\n};\n\nexport const AuthorLink = (props: {\n entity: Post | Answer | Comment;\n linkProps?: LinkProps;\n}) => {\n const { entity, linkProps } = props;\n return (\n <UserLink\n entityRef={entity.author}\n linkProps={linkProps}\n anonymous={'anonymous' in entity ? entity.anonymous : undefined}\n />\n );\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 (\n <UserLink\n entityRef={entity.updatedBy}\n linkProps={linkProps}\n anonymous={'anonymous' in entity ? entity.anonymous : undefined}\n />\n );\n};\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAOa,MAAA,QAAA,GAAW,CAAC,KAKnB,KAAA;AACJ,EAAA,MAAM,EAAE,SAAA,EAAW,SAAW,EAAA,SAAA,EAAW,QAAW,GAAA,KAAA;AACpD,EAAM,MAAA,SAAA,GAAY,YAAY,YAAY,CAAA;AAC1C,EAAM,MAAA,EAAE,IAAM,EAAA,aAAA,EAAkB,GAAA,WAAA;AAAA,IAC9B,SAAA;AAAA,IACA,aAAa,SAAc,KAAA;AAAA,GAC7B;AACA,EAAI,IAAA,SAAA,IAAa,CAAC,aAAe,EAAA;AAC/B,IAAO,uBAAA,GAAA,CAAC,UAAM,QAAK,EAAA,IAAA,EAAA,CAAA;AAAA;AAGrB,EAAA,IAAI,MAAQ,EAAA;AACV,IACE,uBAAA,GAAA;AAAA,MAAC,WAAA;AAAA,MAAA;AAAA,QACC,SAAA;AAAA,QACA,SAAA;AAAA,QACA,UAAY,EAAA,GAAA;AAAA,QACZ,WAAW,EAAA,IAAA;AAAA,QAEX,QAAA,kBAAA,GAAA,CAAC,UAAM,QAAK,EAAA,IAAA,EAAA;AAAA;AAAA,KACd;AAAA;AAIJ,EACE,uBAAA,GAAA;AAAA,IAAC,WAAA;AAAA,IAAA;AAAA,MACC,SAAA;AAAA,MACA,SAAA;AAAA,MACA,UAAY,EAAA,GAAA;AAAA,MACZ,WAAW,EAAA,IAAA;AAAA,MAEX,QAAA,kBAAA,GAAA,CAAC,IAAK,EAAA,EAAA,EAAA,EAAI,CAAG,EAAA,SAAA,EAAW,CAAA,CAAA,EAAI,SAAS,CAAA,CAAA,EAAK,GAAG,SAAA,EAC1C,QACH,EAAA,IAAA,EAAA;AAAA;AAAA,GACF;AAEJ;AAEa,MAAA,UAAA,GAAa,CAAC,KAGrB,KAAA;AACJ,EAAM,MAAA,EAAE,MAAQ,EAAA,SAAA,EAAc,GAAA,KAAA;AAC9B,EACE,uBAAA,GAAA;AAAA,IAAC,QAAA;AAAA,IAAA;AAAA,MACC,WAAW,MAAO,CAAA,MAAA;AAAA,MAClB,SAAA;AAAA,MACA,SAAW,EAAA,WAAA,IAAe,MAAS,GAAA,MAAA,CAAO,SAAY,GAAA,KAAA;AAAA;AAAA,GACxD;AAEJ;AAEa,MAAA,aAAA,GAAgB,CAAC,KAGxB,KAAA;AACJ,EAAM,MAAA,EAAE,MAAQ,EAAA,SAAA,EAAc,GAAA,KAAA;AAC9B,EAAI,IAAA,CAAC,OAAO,SAAW,EAAA;AACrB,IAAO,OAAA,IAAA;AAAA;AAET,EACE,uBAAA,GAAA;AAAA,IAAC,QAAA;AAAA,IAAA;AAAA,MACC,WAAW,MAAO,CAAA,SAAA;AAAA,MAClB,SAAA;AAAA,MACA,SAAW,EAAA,WAAA,IAAe,MAAS,GAAA,MAAA,CAAO,SAAY,GAAA,KAAA;AAAA;AAAA,GACxD;AAEJ;;;;"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
|
|
2
|
-
import { useEffect, Children, createElement } from 'react';
|
|
2
|
+
import { lazy, useEffect, Children, createElement } from 'react';
|
|
3
3
|
import SyntaxHighlighter from 'react-syntax-highlighter';
|
|
4
4
|
import { MarkdownHooks } from 'react-markdown';
|
|
5
5
|
import { a11yDark, a11yLight } from 'react-syntax-highlighter/dist/esm/styles/hljs';
|
|
@@ -17,9 +17,11 @@ import { useTranslationRef } from '@backstage/core-plugin-api/alpha';
|
|
|
17
17
|
import { qetaTranslationRef } from '../../translation.esm.js';
|
|
18
18
|
import GithubSlugger from 'github-slugger';
|
|
19
19
|
import { find } from 'unist-util-find';
|
|
20
|
-
import { TagChip } from '../TagsAndEntities/TagChip.esm.js';
|
|
21
20
|
import { useQetaContext } from '../QetaContext/QetaContext.esm.js';
|
|
22
21
|
|
|
22
|
+
const TagChip = lazy(
|
|
23
|
+
() => import('../TagsAndEntities/TagChip.esm.js').then((m) => ({ default: m.TagChip }))
|
|
24
|
+
);
|
|
23
25
|
const slugger = new GithubSlugger();
|
|
24
26
|
const useStyles = makeStyles(
|
|
25
27
|
(theme) => {
|