@drodil/backstage-plugin-qeta 4.1.0 → 4.1.2

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.
@@ -172,7 +172,7 @@
172
172
  "properties": {
173
173
  "disabled": {
174
174
  "type": "boolean",
175
- "description": "Hide user profile statistics and prevent access to other users' activity.",
175
+ "description": "Hide user profile statistics, user-directory activity metrics, and activity-based sorting. Prevent access to other users' activity.",
176
176
  "visibility": "frontend"
177
177
  },
178
178
  "lastSeen": {
@@ -6,7 +6,6 @@ import { HighlightedSearchResultText } from '@backstage/plugin-search-react';
6
6
  import { selectByPostType, truncate, removeMarkdownFormatting } from '@drodil/backstage-plugin-qeta-common';
7
7
  import { EntityRefLink } from '@backstage/plugin-catalog-react';
8
8
  import DOMPurify from 'dompurify';
9
- import { capitalize } from 'lodash';
10
9
  import { useTranslationRef } from '@backstage/core-plugin-api/alpha';
11
10
  import { qetaTranslationRef } from '@drodil/backstage-plugin-qeta-react';
12
11
  import { parseEntityRef } from '@backstage/catalog-model';
@@ -44,7 +43,7 @@ const Excerpt = (props) => {
44
43
  variant: "body-small",
45
44
  color: "secondary",
46
45
  children: [
47
- capitalize(t(`common.${document.postType}`)),
46
+ t(`common.${document.postType}`).charAt(0).toLocaleUpperCase() + t(`common.${document.postType}`).slice(1).toLocaleLowerCase(),
48
47
  " \xB7 ",
49
48
  t("searchResult.created"),
50
49
  " ",
@@ -87,7 +86,7 @@ const Excerpt = (props) => {
87
86
  variant: "body-small",
88
87
  color: "secondary",
89
88
  children: [
90
- capitalize(t(`common.collection`)),
89
+ t("common.collection").charAt(0).toLocaleUpperCase() + t("common.collection").slice(1).toLocaleLowerCase(),
91
90
  " \xB7 ",
92
91
  t("searchResult.created"),
93
92
  " ",
@@ -1 +1 @@
1
- {"version":3,"file":"QetaSearchResultListItem.esm.js","sources":["../../../src/components/QetaSearchResultListItem/QetaSearchResultListItem.tsx"],"sourcesContent":["import { DateTime } from 'luxon';\nimport { Link } from 'react-router-dom';\nimport { Text } from '@backstage/ui';\nimport {\n IndexableDocument,\n ResultHighlight,\n} from '@backstage/plugin-search-common';\nimport { HighlightedSearchResultText } from '@backstage/plugin-search-react';\nimport {\n QetaCollectionDocument,\n QetaPostDocument,\n QetaSearchDocument,\n removeMarkdownFormatting,\n selectByPostType,\n truncate,\n} from '@drodil/backstage-plugin-qeta-common';\nimport { EntityRefLink } from '@backstage/plugin-catalog-react';\nimport DOMPurify from 'dompurify';\nimport { capitalize } from 'lodash';\nimport { useTranslationRef } from '@backstage/core-plugin-api/alpha';\nimport { qetaTranslationRef } from '@drodil/backstage-plugin-qeta-react';\nimport { parseEntityRef } from '@backstage/catalog-model';\nimport {\n RiBookOpenLine,\n RiLink,\n RiPlayList2Line,\n RiQuestionLine,\n} from '@remixicon/react';\nimport styles from './QetaSearchResultListItem.module.css';\n\nexport type QetaSearchResultListItemProps = {\n result?: IndexableDocument;\n highlight?: ResultHighlight;\n rank?: number;\n hideIcon?: boolean;\n};\n\nconst isQetaSearchDocument = (\n document: IndexableDocument,\n): document is QetaSearchDocument => {\n return (\n 'docType' in document &&\n (document.docType === 'qeta_post' || document.docType === 'qeta_collection')\n );\n};\n\nconst isQetaPostDocument = (\n document: QetaSearchDocument,\n): document is QetaPostDocument => {\n return document.docType === 'qeta_post';\n};\n\nconst isQetaCollectionDocument = (\n document: QetaSearchDocument,\n): document is QetaCollectionDocument => {\n return document.docType === 'qeta_collection';\n};\n\nconst Excerpt = (props: {\n document: QetaSearchDocument;\n highlight?: ResultHighlight;\n}) => {\n const { document, highlight } = props;\n const { t } = useTranslationRef(qetaTranslationRef);\n\n const text = DOMPurify.sanitize(\n truncate(\n removeMarkdownFormatting(highlight?.fields.text ?? document.text),\n 300,\n ),\n );\n\n if (isQetaPostDocument(document)) {\n const authorEntity = parseEntityRef(document.author, {\n defaultKind: 'user',\n defaultNamespace: 'default',\n });\n return (\n <>\n <Text\n className={styles.excerptMeta}\n variant=\"body-small\"\n color=\"secondary\"\n >\n {capitalize(t(`common.${document.postType}`))}\n {' · '}\n {t('searchResult.created')}{' '}\n {DateTime.fromISO(document.created.toString() as string).toRelative()}\n {' · '}\n <EntityRefLink entityRef={authorEntity} hideIcon />\n {document.postType !== 'link' && (\n <>\n {' · '}\n {t('common.score', { score: document.score.toString(10) })}\n </>\n )}\n {' · '}\n {document.postType === 'link' &&\n t('common.clicksCount', { count: document.views })}\n {document.postType !== 'link' &&\n t('common.viewsShort', { count: document.views })}\n {document.postType !== 'link' && (\n <>\n {' · '}\n {t('common.answersCount', { count: document.answerCount })}\n </>\n )}\n </Text>\n <>\n {highlight?.fields.text ? (\n <HighlightedSearchResultText\n text={text}\n preTag={highlight.preTag}\n postTag={highlight.postTag}\n />\n ) : (\n text\n )}\n </>\n </>\n );\n } else if (isQetaCollectionDocument(document)) {\n const ownerEntity = parseEntityRef(document.owner, {\n defaultKind: 'user',\n defaultNamespace: 'default',\n });\n return (\n <>\n <Text\n className={styles.excerptMeta}\n variant=\"body-small\"\n color=\"secondary\"\n >\n {capitalize(t(`common.collection`))}\n {' · '}\n {t('searchResult.created')}{' '}\n {DateTime.fromISO(document.created.toString() as string).toRelative()}\n {' · '}\n <EntityRefLink entityRef={ownerEntity} hideIcon />\n {' · '}\n {t('common.posts', {\n count: document.postsCount,\n itemType: t('common.post'),\n })}\n </Text>\n <>\n {highlight?.fields.text ? (\n <HighlightedSearchResultText\n text={text}\n preTag={highlight.preTag}\n postTag={highlight.postTag}\n />\n ) : (\n text\n )}\n </>\n </>\n );\n }\n\n return null;\n};\n\nconst ResultIcon = (props: { document: QetaSearchDocument }) => {\n const { document } = props;\n if (isQetaPostDocument(document)) {\n return selectByPostType(\n document.postType,\n <RiQuestionLine size={20} />,\n <RiBookOpenLine size={20} />,\n <RiLink size={20} />,\n );\n }\n\n return <RiPlayList2Line size={20} />;\n};\n\nexport const QetaSearchResultListItem = (\n props: QetaSearchResultListItemProps,\n) => {\n const { result, highlight, hideIcon } = props;\n\n if (!result || !isQetaSearchDocument(result)) {\n return null;\n }\n\n const title = (\n <Link to={result.location}>\n {highlight?.fields.title ? (\n <HighlightedSearchResultText\n text={highlight.fields.title}\n preTag={highlight.preTag}\n postTag={highlight.postTag}\n />\n ) : (\n result.title\n )}\n </Link>\n );\n\n return (\n <>\n <article\n className={styles.resultItem}\n aria-labelledby={`search-result-${result.title}`}\n >\n {hideIcon !== true && (\n <span className={styles.resultIcon}>\n <ResultIcon document={result} aria-hidden=\"true\" />\n </span>\n )}\n <div className={styles.itemText}>\n <h3 id={`search-result-${result.title}`} className={styles.title}>\n {title}\n </h3>\n <div className={styles.excerpt}>\n <Excerpt document={result} highlight={highlight} />\n </div>\n </div>\n </article>\n\n <hr className={styles.divider} aria-hidden=\"true\" />\n </>\n );\n};\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"QetaSearchResultListItem.esm.js","sources":["../../../src/components/QetaSearchResultListItem/QetaSearchResultListItem.tsx"],"sourcesContent":["import { DateTime } from 'luxon';\nimport { Link } from 'react-router-dom';\nimport { Text } from '@backstage/ui';\nimport {\n IndexableDocument,\n ResultHighlight,\n} from '@backstage/plugin-search-common';\nimport { HighlightedSearchResultText } from '@backstage/plugin-search-react';\nimport {\n QetaCollectionDocument,\n QetaPostDocument,\n QetaSearchDocument,\n removeMarkdownFormatting,\n selectByPostType,\n truncate,\n} from '@drodil/backstage-plugin-qeta-common';\nimport { EntityRefLink } from '@backstage/plugin-catalog-react';\nimport DOMPurify from 'dompurify';\nimport { useTranslationRef } from '@backstage/core-plugin-api/alpha';\nimport { qetaTranslationRef } from '@drodil/backstage-plugin-qeta-react';\nimport { parseEntityRef } from '@backstage/catalog-model';\nimport {\n RiBookOpenLine,\n RiLink,\n RiPlayList2Line,\n RiQuestionLine,\n} from '@remixicon/react';\nimport styles from './QetaSearchResultListItem.module.css';\n\nexport type QetaSearchResultListItemProps = {\n result?: IndexableDocument;\n highlight?: ResultHighlight;\n rank?: number;\n hideIcon?: boolean;\n};\n\nconst isQetaSearchDocument = (\n document: IndexableDocument,\n): document is QetaSearchDocument => {\n return (\n 'docType' in document &&\n (document.docType === 'qeta_post' || document.docType === 'qeta_collection')\n );\n};\n\nconst isQetaPostDocument = (\n document: QetaSearchDocument,\n): document is QetaPostDocument => {\n return document.docType === 'qeta_post';\n};\n\nconst isQetaCollectionDocument = (\n document: QetaSearchDocument,\n): document is QetaCollectionDocument => {\n return document.docType === 'qeta_collection';\n};\n\nconst Excerpt = (props: {\n document: QetaSearchDocument;\n highlight?: ResultHighlight;\n}) => {\n const { document, highlight } = props;\n const { t } = useTranslationRef(qetaTranslationRef);\n\n const text = DOMPurify.sanitize(\n truncate(\n removeMarkdownFormatting(highlight?.fields.text ?? document.text),\n 300,\n ),\n );\n\n if (isQetaPostDocument(document)) {\n const authorEntity = parseEntityRef(document.author, {\n defaultKind: 'user',\n defaultNamespace: 'default',\n });\n return (\n <>\n <Text\n className={styles.excerptMeta}\n variant=\"body-small\"\n color=\"secondary\"\n >\n {t(`common.${document.postType}`).charAt(0).toLocaleUpperCase() +\n t(`common.${document.postType}`).slice(1).toLocaleLowerCase()}\n {' · '}\n {t('searchResult.created')}{' '}\n {DateTime.fromISO(document.created.toString() as string).toRelative()}\n {' · '}\n <EntityRefLink entityRef={authorEntity} hideIcon />\n {document.postType !== 'link' && (\n <>\n {' · '}\n {t('common.score', { score: document.score.toString(10) })}\n </>\n )}\n {' · '}\n {document.postType === 'link' &&\n t('common.clicksCount', { count: document.views })}\n {document.postType !== 'link' &&\n t('common.viewsShort', { count: document.views })}\n {document.postType !== 'link' && (\n <>\n {' · '}\n {t('common.answersCount', { count: document.answerCount })}\n </>\n )}\n </Text>\n <>\n {highlight?.fields.text ? (\n <HighlightedSearchResultText\n text={text}\n preTag={highlight.preTag}\n postTag={highlight.postTag}\n />\n ) : (\n text\n )}\n </>\n </>\n );\n } else if (isQetaCollectionDocument(document)) {\n const ownerEntity = parseEntityRef(document.owner, {\n defaultKind: 'user',\n defaultNamespace: 'default',\n });\n return (\n <>\n <Text\n className={styles.excerptMeta}\n variant=\"body-small\"\n color=\"secondary\"\n >\n {t('common.collection').charAt(0).toLocaleUpperCase() +\n t('common.collection').slice(1).toLocaleLowerCase()}\n {' · '}\n {t('searchResult.created')}{' '}\n {DateTime.fromISO(document.created.toString() as string).toRelative()}\n {' · '}\n <EntityRefLink entityRef={ownerEntity} hideIcon />\n {' · '}\n {t('common.posts', {\n count: document.postsCount,\n itemType: t('common.post'),\n })}\n </Text>\n <>\n {highlight?.fields.text ? (\n <HighlightedSearchResultText\n text={text}\n preTag={highlight.preTag}\n postTag={highlight.postTag}\n />\n ) : (\n text\n )}\n </>\n </>\n );\n }\n\n return null;\n};\n\nconst ResultIcon = (props: { document: QetaSearchDocument }) => {\n const { document } = props;\n if (isQetaPostDocument(document)) {\n return selectByPostType(\n document.postType,\n <RiQuestionLine size={20} />,\n <RiBookOpenLine size={20} />,\n <RiLink size={20} />,\n );\n }\n\n return <RiPlayList2Line size={20} />;\n};\n\nexport const QetaSearchResultListItem = (\n props: QetaSearchResultListItemProps,\n) => {\n const { result, highlight, hideIcon } = props;\n\n if (!result || !isQetaSearchDocument(result)) {\n return null;\n }\n\n const title = (\n <Link to={result.location}>\n {highlight?.fields.title ? (\n <HighlightedSearchResultText\n text={highlight.fields.title}\n preTag={highlight.preTag}\n postTag={highlight.postTag}\n />\n ) : (\n result.title\n )}\n </Link>\n );\n\n return (\n <>\n <article\n className={styles.resultItem}\n aria-labelledby={`search-result-${result.title}`}\n >\n {hideIcon !== true && (\n <span className={styles.resultIcon}>\n <ResultIcon document={result} aria-hidden=\"true\" />\n </span>\n )}\n <div className={styles.itemText}>\n <h3 id={`search-result-${result.title}`} className={styles.title}>\n {title}\n </h3>\n <div className={styles.excerpt}>\n <Excerpt document={result} highlight={highlight} />\n </div>\n </div>\n </article>\n\n <hr className={styles.divider} aria-hidden=\"true\" />\n </>\n );\n};\n"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -92,7 +92,7 @@ declare const qetaPlugin: _backstage_frontend_plugin_api.OverridableFrontendPlug
92
92
  relations: string[] | undefined;
93
93
  path: string | undefined;
94
94
  title: string | undefined;
95
- filter: _backstage_filter_predicates.FilterPredicate | undefined;
95
+ filter: string | _backstage_filter_predicates.FilterPredicate | undefined;
96
96
  group: string | false | undefined;
97
97
  icon: string | undefined;
98
98
  };
@@ -109,7 +109,7 @@ declare const qetaPlugin: _backstage_frontend_plugin_api.OverridableFrontendPlug
109
109
  relations?: string[] | undefined;
110
110
  path?: string | undefined | undefined;
111
111
  title?: string | undefined | undefined;
112
- filter?: _backstage_filter_predicates.FilterPredicate | undefined;
112
+ filter?: string | _backstage_filter_predicates.FilterPredicate | undefined;
113
113
  group?: string | false | undefined | undefined;
114
114
  icon?: string | undefined | undefined;
115
115
  };
@@ -6,7 +6,7 @@ var keywords = [
6
6
  "frontend",
7
7
  "backstage.io"
8
8
  ];
9
- var version = "4.1.0";
9
+ var version = "4.1.2";
10
10
  var main = "src/index.tsx";
11
11
  var types = "src/index.tsx";
12
12
  var prepublishOnly = "yarn tsc && yarn build";
@@ -72,14 +72,13 @@ var dependencies = {
72
72
  "@drodil/backstage-plugin-qeta-react": "workspace:^",
73
73
  "@remixicon/react": "^4.2.0",
74
74
  dompurify: "^3.2.4",
75
- lodash: "^4.17.23",
76
75
  luxon: "^3.5.0",
77
76
  "react-use": "^17.4.0",
78
77
  unified: "^11.0.5",
79
78
  zod: "^4.0.0"
80
79
  };
81
80
  var peerDependencies = {
82
- "@backstage/catalog-client": "^1.16.2",
81
+ "@backstage/catalog-client": "^1.16.3",
83
82
  react: " ^18.0.0 || ^19.0.0",
84
83
  "react-dom": "^18.0.0 || ^19.0.0",
85
84
  "react-router-dom": "6.0.0-beta.0 || ^6.3.0"
@@ -99,7 +98,6 @@ var devDependencies = {
99
98
  "@backstage/plugin-techdocs": "backstage:^",
100
99
  "@backstage/plugin-user-settings": "backstage:^",
101
100
  "@testing-library/jest-dom": "^6.1.3",
102
- "@types/lodash": "^4.14.199",
103
101
  "@types/luxon": "^3",
104
102
  "cross-fetch": "^3.1.5",
105
103
  "rehype-mermaid": "^3.0.0"
@@ -1 +1 @@
1
- {"version":3,"file":"package.json.esm.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"package.json.esm.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
package/package.json CHANGED
@@ -7,7 +7,7 @@
7
7
  "frontend",
8
8
  "backstage.io"
9
9
  ],
10
- "version": "4.1.0",
10
+ "version": "4.1.2",
11
11
  "main": "./dist/index.esm.js",
12
12
  "types": "./dist/index.d.ts",
13
13
  "prepublishOnly": "yarn tsc && yarn build",
@@ -65,30 +65,29 @@
65
65
  "tsc": "tsc"
66
66
  },
67
67
  "dependencies": {
68
- "@backstage/catalog-model": "^1.10.1",
69
- "@backstage/core-compat-api": "^0.5.15",
70
- "@backstage/core-components": "^0.18.14",
71
- "@backstage/core-plugin-api": "^1.12.10",
72
- "@backstage/frontend-plugin-api": "^0.18.1",
73
- "@backstage/plugin-catalog-react": "^3.2.3",
74
- "@backstage/plugin-home-react": "^0.1.42",
75
- "@backstage/plugin-search-common": "^1.2.25",
76
- "@backstage/plugin-search-react": "^1.11.8",
77
- "@backstage/plugin-signals-react": "^0.0.26",
78
- "@backstage/plugin-techdocs-react": "^1.3.15",
79
- "@backstage/ui": "^0.18.0",
80
- "@drodil/backstage-plugin-qeta-common": "^4.1.0",
81
- "@drodil/backstage-plugin-qeta-react": "^4.1.0",
68
+ "@backstage/catalog-model": "^1.10.2",
69
+ "@backstage/core-compat-api": "^0.5.16",
70
+ "@backstage/core-components": "^0.18.15",
71
+ "@backstage/core-plugin-api": "^1.12.11",
72
+ "@backstage/frontend-plugin-api": "^0.18.2",
73
+ "@backstage/plugin-catalog-react": "^3.3.0",
74
+ "@backstage/plugin-home-react": "^0.1.43",
75
+ "@backstage/plugin-search-common": "^1.2.26",
76
+ "@backstage/plugin-search-react": "^1.11.9",
77
+ "@backstage/plugin-signals-react": "^0.0.27",
78
+ "@backstage/plugin-techdocs-react": "^1.4.0",
79
+ "@backstage/ui": "^0.19.0",
80
+ "@drodil/backstage-plugin-qeta-common": "^4.1.2",
81
+ "@drodil/backstage-plugin-qeta-react": "^4.1.2",
82
82
  "@remixicon/react": "^4.2.0",
83
83
  "dompurify": "^3.2.4",
84
- "lodash": "^4.17.23",
85
84
  "luxon": "^3.5.0",
86
85
  "react-use": "^17.4.0",
87
86
  "unified": "^11.0.5",
88
87
  "zod": "^4.0.0"
89
88
  },
90
89
  "peerDependencies": {
91
- "@backstage/catalog-client": "^1.16.2",
90
+ "@backstage/catalog-client": "^1.16.3",
92
91
  "react": " ^18.0.0 || ^19.0.0",
93
92
  "react-dom": "^18.0.0 || ^19.0.0",
94
93
  "react-router-dom": "6.0.0-beta.0 || ^6.3.0"
@@ -97,18 +96,17 @@
97
96
  "react-markdown": "8.0.7"
98
97
  },
99
98
  "devDependencies": {
100
- "@backstage/cli": "^0.36.6",
101
- "@backstage/frontend-defaults": "^0.5.6",
102
- "@backstage/plugin-catalog": "^2.0.9",
103
- "@backstage/plugin-home": "^0.9.10",
104
- "@backstage/plugin-notifications": "^0.6.0",
105
- "@backstage/plugin-search": "^1.7.8",
106
- "@backstage/plugin-search-react": "^1.11.8",
107
- "@backstage/plugin-signals": "^0.0.35",
108
- "@backstage/plugin-techdocs": "^1.18.2",
109
- "@backstage/plugin-user-settings": "^0.9.7",
99
+ "@backstage/cli": "^0.36.7",
100
+ "@backstage/frontend-defaults": "^0.5.7",
101
+ "@backstage/plugin-catalog": "^2.0.10",
102
+ "@backstage/plugin-home": "^0.9.11",
103
+ "@backstage/plugin-notifications": "^0.6.1",
104
+ "@backstage/plugin-search": "^1.7.9",
105
+ "@backstage/plugin-search-react": "^1.11.9",
106
+ "@backstage/plugin-signals": "^0.0.36",
107
+ "@backstage/plugin-techdocs": "^1.19.0",
108
+ "@backstage/plugin-user-settings": "^0.9.8",
110
109
  "@testing-library/jest-dom": "^6.1.3",
111
- "@types/lodash": "^4.14.199",
112
110
  "@types/luxon": "^3",
113
111
  "cross-fetch": "^3.1.5",
114
112
  "rehype-mermaid": "^3.0.0"