@drodil/backstage-plugin-qeta-react 3.59.2 → 3.59.6

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.
Files changed (161) hide show
  1. package/dist/alpha.esm.js.map +1 -1
  2. package/dist/api.esm.js.map +1 -1
  3. package/dist/components/AIAnswerCard/AIAnswerCard.esm.js +1 -1
  4. package/dist/components/AIAnswerCard/AIAnswerCard.esm.js.map +1 -1
  5. package/dist/components/AnswerCard/AnswerCard.esm.js.map +1 -1
  6. package/dist/components/AnswerForm/AnswerForm.esm.js +1 -1
  7. package/dist/components/AnswerForm/AnswerForm.esm.js.map +1 -1
  8. package/dist/components/AnswersContainer/AnswerListItem.esm.js.map +1 -1
  9. package/dist/components/AnswersContainer/AnswersContainer.esm.js.map +1 -1
  10. package/dist/components/AnswersContainer/AnswersGridItem.esm.js.map +1 -1
  11. package/dist/components/ArticleContent/ArticleButtons.esm.js.map +1 -1
  12. package/dist/components/ArticleContent/ArticleContent.esm.js.map +1 -1
  13. package/dist/components/AuthorBox/AuthorBox.esm.js.map +1 -1
  14. package/dist/components/AuthorBox/AuthorBoxes.esm.js.map +1 -1
  15. package/dist/components/Badges/BadgeChip.esm.js.map +1 -1
  16. package/dist/components/Badges/UserBadges.esm.js.map +1 -1
  17. package/dist/components/Buttons/AddToCollectionButton.esm.js.map +1 -1
  18. package/dist/components/Buttons/AskQuestionButton.esm.js.map +1 -1
  19. package/dist/components/Buttons/ButtonContainer.esm.js.map +1 -1
  20. package/dist/components/Buttons/CollectionFollowButton.esm.js.map +1 -1
  21. package/dist/components/Buttons/ContentHeaderButton.esm.js.map +1 -1
  22. package/dist/components/Buttons/CreateCollectionButton.esm.js.map +1 -1
  23. package/dist/components/Buttons/CreateLinkButton.esm.js.map +1 -1
  24. package/dist/components/Buttons/EntityFollowButton.esm.js.map +1 -1
  25. package/dist/components/Buttons/FavoriteButton.esm.js.map +1 -1
  26. package/dist/components/Buttons/FollowPostButton.esm.js.map +1 -1
  27. package/dist/components/Buttons/LinkButton.esm.js.map +1 -1
  28. package/dist/components/Buttons/OpenLinkButton.esm.js.map +1 -1
  29. package/dist/components/Buttons/RankingButtons.esm.js.map +1 -1
  30. package/dist/components/Buttons/TagFollowButton.esm.js.map +1 -1
  31. package/dist/components/Buttons/UserFollowButton.esm.js.map +1 -1
  32. package/dist/components/Buttons/VoteButtons.esm.js.map +1 -1
  33. package/dist/components/Buttons/WriteArticleButton.esm.js.map +1 -1
  34. package/dist/components/CollectionForm/CollectionForm.esm.js.map +1 -1
  35. package/dist/components/CollectionsContainer/CollectionListItem.esm.js.map +1 -1
  36. package/dist/components/CollectionsContainer/CollectionsContainer.esm.js.map +1 -1
  37. package/dist/components/CollectionsContainer/CollectionsGridItem.esm.js.map +1 -1
  38. package/dist/components/CommentSection/CommentForm.esm.js.map +1 -1
  39. package/dist/components/CommentSection/CommentList.esm.js.map +1 -1
  40. package/dist/components/CommentSection/CommentListItem.esm.js.map +1 -1
  41. package/dist/components/CommentSection/CommentSection.esm.js.map +1 -1
  42. package/dist/components/ContentHeader/ContentHeader.esm.js.map +1 -1
  43. package/dist/components/ContentHeaderCard/ContentHeaderCard.esm.js.map +1 -1
  44. package/dist/components/EntitiesContainer/EntitiesContainer.esm.js.map +1 -1
  45. package/dist/components/EntitiesContainer/EntitiesGridItem.esm.js.map +1 -1
  46. package/dist/components/EntitiesContainer/EntityListItem.esm.js.map +1 -1
  47. package/dist/components/FaviconItem/FaviconItem.esm.js.map +1 -1
  48. package/dist/components/FilterPanel/DateRangeFilter.esm.js.map +1 -1
  49. package/dist/components/FilterPanel/FilterPanel.esm.js.map +1 -1
  50. package/dist/components/FollowedLists/FollowedCollectionsList.esm.js.map +1 -1
  51. package/dist/components/FollowedLists/FollowedEntitiesList.esm.js.map +1 -1
  52. package/dist/components/FollowedLists/FollowedTagsList.esm.js.map +1 -1
  53. package/dist/components/FollowedLists/FollowedUsersList.esm.js.map +1 -1
  54. package/dist/components/GridItemStyles/useGridItemStyles.esm.js.map +1 -1
  55. package/dist/components/HeaderImageInput/HeaderImageInput.esm.js.map +1 -1
  56. package/dist/components/HomePageCards/CommunityActivityCard.esm.js.map +1 -1
  57. package/dist/components/HomePageCards/FollowedItemsCard.esm.js.map +1 -1
  58. package/dist/components/HomePageCards/ImpactCard.esm.js.map +1 -1
  59. package/dist/components/HomePageCards/PostsCard.esm.js.map +1 -1
  60. package/dist/components/Icons/ExpertIcon.esm.js.map +1 -1
  61. package/dist/components/LeftMenu/LeftMenu.esm.js.map +1 -1
  62. package/dist/components/LeftMenu/LeftMenuButton.esm.js.map +1 -1
  63. package/dist/components/LinkCard/LinkCard.esm.js.map +1 -1
  64. package/dist/components/Links/Links.esm.js.map +1 -1
  65. package/dist/components/LoadingGrid/LoadingGrid.esm.js.map +1 -1
  66. package/dist/components/MarkdownEditor/MarkdownEditor.esm.js.map +1 -1
  67. package/dist/components/MarkdownRenderer/MarkdownRenderer.esm.js.map +1 -1
  68. package/dist/components/Modals/DeleteModal.esm.js.map +1 -1
  69. package/dist/components/Modals/ObsoleteModal.esm.js.map +1 -1
  70. package/dist/components/Modals/ValidReviewModal.esm.js.map +1 -1
  71. package/dist/components/PostAnonymouslyCheckbox/PostAnonymouslyCheckbox.esm.js.map +1 -1
  72. package/dist/components/PostForm/AutocompleteListComponent.esm.js +1 -1
  73. package/dist/components/PostForm/AutocompleteListComponent.esm.js.map +1 -1
  74. package/dist/components/PostForm/EntitiesInput.esm.js +3 -6
  75. package/dist/components/PostForm/EntitiesInput.esm.js.map +1 -1
  76. package/dist/components/PostForm/PostForm.esm.js.map +1 -1
  77. package/dist/components/PostForm/TagInput.esm.js +1 -1
  78. package/dist/components/PostForm/TagInput.esm.js.map +1 -1
  79. package/dist/components/PostHighlightList/PostHighlightList.esm.js.map +1 -1
  80. package/dist/components/PostHighlightList/PostHighlightListContainer.esm.js.map +1 -1
  81. package/dist/components/PostHistory/PostHistory.esm.js.map +1 -1
  82. package/dist/components/PostHistoryButton/PostHistoryButton.esm.js +4 -5
  83. package/dist/components/PostHistoryButton/PostHistoryButton.esm.js.map +1 -1
  84. package/dist/components/PostsContainer/NoPostsCard.esm.js.map +1 -1
  85. package/dist/components/PostsContainer/PostListItem.esm.js.map +1 -1
  86. package/dist/components/PostsContainer/PostsContainer.esm.js.map +1 -1
  87. package/dist/components/PostsContainer/PostsGridItem.esm.js.map +1 -1
  88. package/dist/components/PostsTable/PostsTable.esm.js.map +1 -1
  89. package/dist/components/PostsTable/PostsTableRow.esm.js.map +1 -1
  90. package/dist/components/QetaContext/QetaContext.esm.js +1 -1
  91. package/dist/components/QetaContext/QetaContext.esm.js.map +1 -1
  92. package/dist/components/QetaEntityContainer/QetaEntityContainer.esm.js.map +1 -1
  93. package/dist/components/QuestionCard/QuestionCard.esm.js.map +1 -1
  94. package/dist/components/RelativeTimeWithTooltip/RelativeTimeWithTooltip.esm.js.map +1 -1
  95. package/dist/components/SearchBar/SearchBar.esm.js.map +1 -1
  96. package/dist/components/SelectTemplateList/SelectTemplateList.esm.js.map +1 -1
  97. package/dist/components/StatsChart/StatsChart.esm.js +1 -1
  98. package/dist/components/StatsChart/StatsChart.esm.js.map +1 -1
  99. package/dist/components/StatsChart/util.esm.js.map +1 -1
  100. package/dist/components/SuggestionsCard/SuggestionsCard.esm.js.map +1 -1
  101. package/dist/components/TagsAndEntities/EntityChip.esm.js.map +1 -1
  102. package/dist/components/TagsAndEntities/TagChip.esm.js.map +1 -1
  103. package/dist/components/TagsAndEntities/TagsAndEntities.esm.js.map +1 -1
  104. package/dist/components/TagsContainer/CreateTagModal.esm.js.map +1 -1
  105. package/dist/components/TagsContainer/EditTagModal.esm.js.map +1 -1
  106. package/dist/components/TagsContainer/TagGridItem.esm.js.map +1 -1
  107. package/dist/components/TagsContainer/TagListItem.esm.js.map +1 -1
  108. package/dist/components/TagsContainer/TagsContainer.esm.js.map +1 -1
  109. package/dist/components/TemplateList/TemplateForm.esm.js.map +1 -1
  110. package/dist/components/TemplateList/TemplateList.esm.js.map +1 -1
  111. package/dist/components/Timeline/Timeline.esm.js.map +1 -1
  112. package/dist/components/Timeline/TimelineItem.esm.js.map +1 -1
  113. package/dist/components/Tooltips/CollectionTooltip.esm.js.map +1 -1
  114. package/dist/components/Tooltips/EntityTooltip.esm.js.map +1 -1
  115. package/dist/components/Tooltips/PostTooltip.esm.js.map +1 -1
  116. package/dist/components/Tooltips/TagTooltip.esm.js.map +1 -1
  117. package/dist/components/Tooltips/UserTooltip.esm.js.map +1 -1
  118. package/dist/components/TopRankingUsersCard/TopRankingUsersCard.esm.js.map +1 -1
  119. package/dist/components/TopRankingUsersCard/TrophyIcon.esm.js.map +1 -1
  120. package/dist/components/UsersContainer/UserListItem.esm.js.map +1 -1
  121. package/dist/components/UsersContainer/UsersContainer.esm.js.map +1 -1
  122. package/dist/components/UsersContainer/UsersGridItem.esm.js.map +1 -1
  123. package/dist/components/Utility/ClickableLink.esm.js.map +1 -1
  124. package/dist/components/Utility/DeletedBanner.esm.js.map +1 -1
  125. package/dist/components/Utility/DraftBanner.esm.js.map +1 -1
  126. package/dist/components/Utility/ModalContent.esm.js.map +1 -1
  127. package/dist/components/Utility/ObsoleteBanner.esm.js.map +1 -1
  128. package/dist/components/Utility/OptionalRequirePermission.esm.js.map +1 -1
  129. package/dist/components/Utility/QetaGridHeader.esm.js.map +1 -1
  130. package/dist/components/Utility/QetaPagination.esm.js.map +1 -1
  131. package/dist/components/Utility/RightList.esm.js +1 -1
  132. package/dist/components/Utility/RightList.esm.js.map +1 -1
  133. package/dist/components/Utility/StatusChip.esm.js.map +1 -1
  134. package/dist/components/Utility/VoteButtonContainer.esm.js.map +1 -1
  135. package/dist/components/ViewToggle/ViewToggle.esm.js.map +1 -1
  136. package/dist/hooks/useAI.esm.js.map +1 -1
  137. package/dist/hooks/useCanReview.esm.js.map +1 -1
  138. package/dist/hooks/useCollectionsFollow.esm.js.map +1 -1
  139. package/dist/hooks/useEntityAuthor.esm.js.map +1 -1
  140. package/dist/hooks/useEntityFollow.esm.js.map +1 -1
  141. package/dist/hooks/useEntityQueryParameter.esm.js.map +1 -1
  142. package/dist/hooks/useFavicon.esm.js.map +1 -1
  143. package/dist/hooks/useFollow.esm.js.map +1 -1
  144. package/dist/hooks/useGridPageSize.esm.js.map +1 -1
  145. package/dist/hooks/useHistoryEnabled.esm.js.map +1 -1
  146. package/dist/hooks/useIdentityApi.esm.js.map +1 -1
  147. package/dist/hooks/useIsDarkTheme.esm.js.map +1 -1
  148. package/dist/hooks/useIsModerator.esm.js.map +1 -1
  149. package/dist/hooks/useListItemStyles.esm.js.map +1 -1
  150. package/dist/hooks/useQetaApi.esm.js.map +1 -1
  151. package/dist/hooks/useQetaEntities.esm.js.map +1 -1
  152. package/dist/hooks/useTagsFollow.esm.js.map +1 -1
  153. package/dist/hooks/useTooltipStyles.esm.js.map +1 -1
  154. package/dist/hooks/useUserFollow.esm.js.map +1 -1
  155. package/dist/hooks/useUserSettings.esm.js.map +1 -1
  156. package/dist/hooks/useVoting.esm.js.map +1 -1
  157. package/dist/index.d.ts +1 -1
  158. package/dist/routes.esm.js.map +1 -1
  159. package/dist/translation.esm.js.map +1 -1
  160. package/dist/utils/utils.esm.js.map +1 -1
  161. package/package.json +13 -13
@@ -1 +1 @@
1
- {"version":3,"file":"utils.esm.js","sources":["../../src/utils/utils.ts"],"sourcesContent":["import {\n Entity,\n isGroupEntity,\n isUserEntity,\n stringifyEntityRef,\n} from '@backstage/catalog-model';\nimport { Filters } from '../components/FilterPanel/FilterPanel';\nimport FileType from 'file-type';\nimport { ErrorApi } from '@backstage/core-plugin-api';\nimport { Post, QetaApi } from '@drodil/backstage-plugin-qeta-common';\nimport { useEffect } from 'react';\nimport { useTranslationRef } from '@backstage/core-plugin-api/alpha';\nimport { qetaTranslationRef } from '../translation.ts';\n\nexport const imageUpload = (opts: {\n qetaApi: QetaApi;\n errorApi: ErrorApi;\n onImageUpload?: (id: number) => void;\n postId?: number;\n answerId?: number;\n collectionId?: number;\n}) => {\n const { qetaApi, errorApi, onImageUpload, postId, answerId, collectionId } =\n opts;\n // eslint-disable-next-line func-names\n return async function* (data: ArrayBuffer) {\n const fileType = await FileType.fromBuffer(data);\n\n const mimeType = fileType ? fileType.mime : 'text/plain';\n const attachment = await qetaApi.postAttachment(\n new Blob([data], { type: mimeType }),\n { postId, answerId, collectionId },\n );\n if ('errors' in attachment) {\n errorApi.post({\n name: 'Upload failed',\n message: attachment.errors?.map(e => e.message).join(', ') ?? '',\n });\n return false;\n }\n onImageUpload?.(attachment.id);\n yield attachment.locationUri;\n return true;\n };\n};\n\nexport const formatEntityName = (username?: string) => {\n if (!username) {\n return '';\n }\n const plainName = username.split(/[/:]+/).pop();\n return plainName\n ?.split(/[_.-]+/)\n .map(a => a.charAt(0).toUpperCase() + a.slice(1))\n .join(' ');\n};\n\nexport const getEntityTitle = (\n entity: Entity,\n opts?: { withType: boolean },\n): string => {\n const { withType } = opts || { withType: true };\n if (\n (isUserEntity(entity) || isGroupEntity(entity)) &&\n entity.spec?.profile?.displayName\n ) {\n return entity.spec.profile.displayName;\n }\n\n const stringified = stringifyEntityRef(entity);\n return `${\n entity.metadata.title ?? formatEntityName(stringified) ?? stringified\n }${withType && entity.spec?.type ? ` (${entity.spec.type})` : ''}`;\n};\n\nexport const getEntityDescription = (entity: Entity): string => {\n const parts = [stringifyEntityRef(entity)];\n if (entity.metadata.description) {\n parts.push(entity.metadata.description.split('\\n')[0]);\n }\n if (\n (isUserEntity(entity) || isGroupEntity(entity)) &&\n entity.spec?.profile?.email\n ) {\n parts.push(entity.spec.profile.email);\n }\n return parts.join(', ');\n};\n\n/**\n * Get the appropriate display date for a post.\n * For articles and links, returns the published date if available, otherwise returns created date.\n * For questions, always returns created date.\n */\nexport const getPostDisplayDate = (post: Post): Date => {\n // For articles and links, prefer published date if available\n if ((post.type === 'article' || post.type === 'link') && post.published) {\n return post.published;\n }\n // Fall back to created date\n return post.created;\n};\n\nexport const formatDate = (localDate: Date) => {\n let date: any = localDate.getDate();\n let month: any = localDate.getMonth() + 1;\n if (date < 10) {\n date = `0${date}`;\n }\n\n if (month < 10) {\n month = `0${month}`;\n }\n return `${localDate.getFullYear()}-${month}-${date}`;\n};\n\nexport type FiltersWithDateRange = Filters & {\n fromDate: string;\n toDate: string;\n};\n\nexport const getFiltersWithDateRange = (filters: Filters) => {\n let filtersWithDateRange: FiltersWithDateRange;\n const to = new Date();\n const from = new Date(to);\n if (filters.dateRange) {\n let fromDate = '';\n let toDate = '';\n\n switch (filters.dateRange) {\n case '7-days':\n toDate = formatDate(to);\n from.setDate(to.getDate() - 6);\n fromDate = formatDate(from);\n break;\n\n case '30-days':\n toDate = formatDate(to);\n from.setDate(to.getDate() - 29);\n fromDate = formatDate(from);\n break;\n default:\n if (filters.dateRange.indexOf('--') > 0) {\n fromDate = filters.dateRange.split('--')[0];\n toDate = filters.dateRange.split('--')[1];\n }\n break;\n }\n if (fromDate && toDate) {\n filtersWithDateRange = { ...filters, fromDate, toDate };\n delete filtersWithDateRange.dateRange;\n return filtersWithDateRange;\n }\n }\n\n if ('dateRange' in filters) {\n delete filters.dateRange;\n }\n\n return filters;\n};\n\nexport const useConfirmNavigationIfEdited = (edited: boolean) => {\n const { t } = useTranslationRef(qetaTranslationRef);\n const msg = t('common.unsaved_changes');\n\n useEffect(() => {\n const handleBeforeUnload = (event: BeforeUnloadEvent) => {\n if (edited) {\n event.preventDefault();\n event.returnValue = msg; // Included for legacy support, e.g. Chrome/Edge < 119\n }\n };\n\n const handleLocationChange = (event: any) => {\n if (edited) {\n // eslint-disable-next-line no-alert\n const response = window.confirm(msg);\n if (!response) {\n event.preventDefault();\n }\n }\n };\n\n window.addEventListener('beforeunload', handleBeforeUnload);\n\n // Modern browsers with Navigation API\n if ('navigation' in window && window.navigation) {\n // @ts-ignore\n window.navigation.addEventListener('navigate', handleLocationChange);\n\n return () => {\n window.removeEventListener('beforeunload', handleBeforeUnload);\n // @ts-ignore\n window.navigation.removeEventListener('navigate', handleLocationChange);\n };\n }\n\n // Fallback: Use popstate + history monitoring\n window.addEventListener('popstate', handleLocationChange);\n\n const originalPushState = window.history.pushState;\n const originalReplaceState = window.history.replaceState;\n\n window.history.pushState = (...args) => {\n originalPushState.apply(window.history, args);\n handleLocationChange(new PopStateEvent('navigate', { state: args[0] }));\n };\n\n window.history.replaceState = (...args) => {\n originalReplaceState.apply(window.history, args);\n handleLocationChange(new PopStateEvent('navigate', { state: args[0] }));\n };\n\n return () => {\n window.removeEventListener('beforeunload', handleBeforeUnload);\n window.removeEventListener('popstate', handleLocationChange);\n window.history.pushState = originalPushState;\n window.history.replaceState = originalReplaceState;\n };\n }, [edited, msg]);\n};\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"utils.esm.js","sources":["../../src/utils/utils.ts"],"sourcesContent":["import {\n Entity,\n isGroupEntity,\n isUserEntity,\n stringifyEntityRef,\n} from '@backstage/catalog-model';\nimport { Filters } from '../components/FilterPanel/FilterPanel';\nimport FileType from 'file-type';\nimport { ErrorApi } from '@backstage/core-plugin-api';\nimport { Post, QetaApi } from '@drodil/backstage-plugin-qeta-common';\nimport { useEffect } from 'react';\nimport { useTranslationRef } from '@backstage/core-plugin-api/alpha';\nimport { qetaTranslationRef } from '../translation.ts';\n\nexport const imageUpload = (opts: {\n qetaApi: QetaApi;\n errorApi: ErrorApi;\n onImageUpload?: (id: number) => void;\n postId?: number;\n answerId?: number;\n collectionId?: number;\n}) => {\n const { qetaApi, errorApi, onImageUpload, postId, answerId, collectionId } =\n opts;\n // eslint-disable-next-line func-names\n return async function* (data: ArrayBuffer) {\n const fileType = await FileType.fromBuffer(data);\n\n const mimeType = fileType ? fileType.mime : 'text/plain';\n const attachment = await qetaApi.postAttachment(\n new Blob([data], { type: mimeType }),\n { postId, answerId, collectionId },\n );\n if ('errors' in attachment) {\n errorApi.post({\n name: 'Upload failed',\n message: attachment.errors?.map(e => e.message).join(', ') ?? '',\n });\n return false;\n }\n onImageUpload?.(attachment.id);\n yield attachment.locationUri;\n return true;\n };\n};\n\nexport const formatEntityName = (username?: string) => {\n if (!username) {\n return '';\n }\n const plainName = username.split(/[/:]+/).pop();\n return plainName\n ?.split(/[_.-]+/)\n .map(a => a.charAt(0).toUpperCase() + a.slice(1))\n .join(' ');\n};\n\nexport const getEntityTitle = (\n entity: Entity,\n opts?: { withType: boolean },\n): string => {\n const { withType } = opts || { withType: true };\n if (\n (isUserEntity(entity) || isGroupEntity(entity)) &&\n entity.spec?.profile?.displayName\n ) {\n return entity.spec.profile.displayName;\n }\n\n const stringified = stringifyEntityRef(entity);\n return `${\n entity.metadata.title ?? formatEntityName(stringified) ?? stringified\n }${withType && entity.spec?.type ? ` (${entity.spec.type})` : ''}`;\n};\n\nexport const getEntityDescription = (entity: Entity): string => {\n const parts = [stringifyEntityRef(entity)];\n if (entity.metadata.description) {\n parts.push(entity.metadata.description.split('\\n')[0]);\n }\n if (\n (isUserEntity(entity) || isGroupEntity(entity)) &&\n entity.spec?.profile?.email\n ) {\n parts.push(entity.spec.profile.email);\n }\n return parts.join(', ');\n};\n\n/**\n * Get the appropriate display date for a post.\n * For articles and links, returns the published date if available, otherwise returns created date.\n * For questions, always returns created date.\n */\nexport const getPostDisplayDate = (post: Post): Date => {\n // For articles and links, prefer published date if available\n if ((post.type === 'article' || post.type === 'link') && post.published) {\n return post.published;\n }\n // Fall back to created date\n return post.created;\n};\n\nexport const formatDate = (localDate: Date) => {\n let date: any = localDate.getDate();\n let month: any = localDate.getMonth() + 1;\n if (date < 10) {\n date = `0${date}`;\n }\n\n if (month < 10) {\n month = `0${month}`;\n }\n return `${localDate.getFullYear()}-${month}-${date}`;\n};\n\nexport type FiltersWithDateRange = Filters & {\n fromDate: string;\n toDate: string;\n};\n\nexport const getFiltersWithDateRange = (filters: Filters) => {\n let filtersWithDateRange: FiltersWithDateRange;\n const to = new Date();\n const from = new Date(to);\n if (filters.dateRange) {\n let fromDate = '';\n let toDate = '';\n\n switch (filters.dateRange) {\n case '7-days':\n toDate = formatDate(to);\n from.setDate(to.getDate() - 6);\n fromDate = formatDate(from);\n break;\n\n case '30-days':\n toDate = formatDate(to);\n from.setDate(to.getDate() - 29);\n fromDate = formatDate(from);\n break;\n default:\n if (filters.dateRange.indexOf('--') > 0) {\n fromDate = filters.dateRange.split('--')[0];\n toDate = filters.dateRange.split('--')[1];\n }\n break;\n }\n if (fromDate && toDate) {\n filtersWithDateRange = { ...filters, fromDate, toDate };\n delete filtersWithDateRange.dateRange;\n return filtersWithDateRange;\n }\n }\n\n if ('dateRange' in filters) {\n delete filters.dateRange;\n }\n\n return filters;\n};\n\nexport const useConfirmNavigationIfEdited = (edited: boolean) => {\n const { t } = useTranslationRef(qetaTranslationRef);\n const msg = t('common.unsaved_changes');\n\n useEffect(() => {\n const handleBeforeUnload = (event: BeforeUnloadEvent) => {\n if (edited) {\n event.preventDefault();\n event.returnValue = msg; // Included for legacy support, e.g. Chrome/Edge < 119\n }\n };\n\n const handleLocationChange = (event: any) => {\n if (edited) {\n // eslint-disable-next-line no-alert\n const response = window.confirm(msg);\n if (!response) {\n event.preventDefault();\n }\n }\n };\n\n window.addEventListener('beforeunload', handleBeforeUnload);\n\n // Modern browsers with Navigation API\n if ('navigation' in window && window.navigation) {\n // @ts-ignore\n window.navigation.addEventListener('navigate', handleLocationChange);\n\n return () => {\n window.removeEventListener('beforeunload', handleBeforeUnload);\n // @ts-ignore\n window.navigation.removeEventListener('navigate', handleLocationChange);\n };\n }\n\n // Fallback: Use popstate + history monitoring\n window.addEventListener('popstate', handleLocationChange);\n\n const originalPushState = window.history.pushState;\n const originalReplaceState = window.history.replaceState;\n\n window.history.pushState = (...args) => {\n originalPushState.apply(window.history, args);\n handleLocationChange(new PopStateEvent('navigate', { state: args[0] }));\n };\n\n window.history.replaceState = (...args) => {\n originalReplaceState.apply(window.history, args);\n handleLocationChange(new PopStateEvent('navigate', { state: args[0] }));\n };\n\n return () => {\n window.removeEventListener('beforeunload', handleBeforeUnload);\n window.removeEventListener('popstate', handleLocationChange);\n window.history.pushState = originalPushState;\n window.history.replaceState = originalReplaceState;\n };\n }, [edited, msg]);\n};\n"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -7,7 +7,7 @@
7
7
  "frontend",
8
8
  "backstage.io"
9
9
  ],
10
- "version": "3.59.2",
10
+ "version": "3.59.6",
11
11
  "main": "./dist/index.esm.js",
12
12
  "types": "./dist/index.d.ts",
13
13
  "prepublishOnly": "yarn tsc && yarn build",
@@ -69,16 +69,16 @@
69
69
  "tsc": "tsc"
70
70
  },
71
71
  "dependencies": {
72
- "@backstage/catalog-client": "^1.13.0",
73
- "@backstage/catalog-model": "^1.7.6",
74
- "@backstage/core-components": "^0.18.7",
75
- "@backstage/core-plugin-api": "^1.12.3",
76
- "@backstage/frontend-plugin-api": "^0.14.1",
77
- "@backstage/plugin-catalog-react": "^2.0.0",
78
- "@backstage/plugin-permission-common": "^0.9.6",
79
- "@backstage/plugin-permission-react": "^0.4.40",
80
- "@backstage/plugin-signals-react": "^0.0.19",
81
- "@drodil/backstage-plugin-qeta-common": "^3.59.2",
72
+ "@backstage/catalog-client": "^1.15.0",
73
+ "@backstage/catalog-model": "^1.8.0",
74
+ "@backstage/core-components": "^0.18.9",
75
+ "@backstage/core-plugin-api": "^1.12.5",
76
+ "@backstage/frontend-plugin-api": "^0.16.0",
77
+ "@backstage/plugin-catalog-react": "^2.1.2",
78
+ "@backstage/plugin-permission-common": "^0.9.8",
79
+ "@backstage/plugin-permission-react": "^0.5.0",
80
+ "@backstage/plugin-signals-react": "^0.0.21",
81
+ "@drodil/backstage-plugin-qeta-common": "^3.59.6",
82
82
  "@jsdevtools/rehype-toc": "^3.0.2",
83
83
  "@material-ui/core": "^4.12.2",
84
84
  "@material-ui/icons": "^4.11.3",
@@ -109,8 +109,8 @@
109
109
  "react-router-dom": "6.0.0-beta.0 || ^6.3.0"
110
110
  },
111
111
  "devDependencies": {
112
- "@backstage/cli": "^0.35.4",
113
- "@backstage/test-utils": "^1.7.15",
112
+ "@backstage/cli": "^0.36.1",
113
+ "@backstage/test-utils": "^1.7.17",
114
114
  "@testing-library/dom": "^10.4.0",
115
115
  "@testing-library/jest-dom": "^5.10.1",
116
116
  "@testing-library/react": "^16.0.1",