@plumile/backoffice-react 0.1.107 → 0.1.108

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 (177) hide show
  1. package/lib/esm/auth/TotpQrCode.js +1 -1
  2. package/lib/esm/auth/TotpQrCode.js.map +1 -1
  3. package/lib/esm/auth/login/EmailCapturePanel.js +27 -23
  4. package/lib/esm/auth/login/EmailCapturePanel.js.map +1 -1
  5. package/lib/esm/auth/login/MfaChallengeForm.js +38 -36
  6. package/lib/esm/auth/login/MfaChallengeForm.js.map +1 -1
  7. package/lib/esm/auth/login/PasskeyLoginForm.js +40 -37
  8. package/lib/esm/auth/login/PasskeyLoginForm.js.map +1 -1
  9. package/lib/esm/auth/pages/AcceptInvitationScreen.js +63 -62
  10. package/lib/esm/auth/pages/AcceptInvitationScreen.js.map +1 -1
  11. package/lib/esm/auth/pages/PasswordResetCompleteScreen.js +56 -55
  12. package/lib/esm/auth/pages/PasswordResetCompleteScreen.js.map +1 -1
  13. package/lib/esm/auth/pages/PasswordResetRequestScreen.js +45 -45
  14. package/lib/esm/auth/pages/PasswordResetRequestScreen.js.map +1 -1
  15. package/lib/esm/components/backoffice/actions/BackofficeEntityActionFormDialog.js +1 -0
  16. package/lib/esm/components/backoffice/actions/BackofficeEntityActionFormDialog.js.map +1 -1
  17. package/lib/esm/components/backoffice/columns/buildDataTableColumns.js +44 -39
  18. package/lib/esm/components/backoffice/columns/buildDataTableColumns.js.map +1 -1
  19. package/lib/esm/components/backoffice/detail/BackofficeCopyButton.js +15 -0
  20. package/lib/esm/components/backoffice/detail/BackofficeCopyButton.js.map +1 -0
  21. package/lib/esm/components/backoffice/detail/BackofficeDetailActionBar.js +11 -0
  22. package/lib/esm/components/backoffice/detail/BackofficeDetailActionBar.js.map +1 -0
  23. package/lib/esm/components/backoffice/detail/BackofficeDetailBlock.js +7 -0
  24. package/lib/esm/components/backoffice/detail/BackofficeDetailBlock.js.map +1 -0
  25. package/lib/esm/components/backoffice/detail/BackofficeDetailHeader.js +15 -0
  26. package/lib/esm/components/backoffice/detail/BackofficeDetailHeader.js.map +1 -0
  27. package/lib/esm/components/backoffice/detail/BackofficeDetailPage.js +19 -0
  28. package/lib/esm/components/backoffice/detail/BackofficeDetailPage.js.map +1 -0
  29. package/lib/esm/components/backoffice/detail/BackofficeDetailRelationLink.js +47 -40
  30. package/lib/esm/components/backoffice/detail/BackofficeDetailRelationLink.js.map +1 -1
  31. package/lib/esm/components/backoffice/detail/BackofficeDetailRelationListBlock.js +83 -90
  32. package/lib/esm/components/backoffice/detail/BackofficeDetailRelationListBlock.js.map +1 -1
  33. package/lib/esm/components/backoffice/detail/BackofficeDetailTable.js +8 -0
  34. package/lib/esm/components/backoffice/detail/BackofficeDetailTable.js.map +1 -0
  35. package/lib/esm/components/backoffice/detail/BackofficeEmptyValue.js +7 -0
  36. package/lib/esm/components/backoffice/detail/BackofficeEmptyValue.js.map +1 -0
  37. package/lib/esm/components/backoffice/detail/BackofficeStatusGroup.js +8 -0
  38. package/lib/esm/components/backoffice/detail/BackofficeStatusGroup.js.map +1 -0
  39. package/lib/esm/components/backoffice/detail/BackofficeTechnicalFacts.js +2 -0
  40. package/lib/esm/components/backoffice/layout/breadcrumb/BackofficeTopbarBreadcrumb.js +53 -48
  41. package/lib/esm/components/backoffice/layout/breadcrumb/BackofficeTopbarBreadcrumb.js.map +1 -1
  42. package/lib/esm/components/backoffice/layout/breadcrumb/BackofficeTopbarPortalContext.js +2 -2
  43. package/lib/esm/components/backoffice/layout/breadcrumb/BackofficeTopbarPortalContext.js.map +1 -1
  44. package/lib/esm/components/backoffice/layout/breadcrumb/assertValidBreadcrumb.js +15 -11
  45. package/lib/esm/components/backoffice/layout/breadcrumb/assertValidBreadcrumb.js.map +1 -1
  46. package/lib/esm/components/backoffice/layout/breadcrumb/buildBreadcrumbs.js +50 -23
  47. package/lib/esm/components/backoffice/layout/breadcrumb/buildBreadcrumbs.js.map +1 -1
  48. package/lib/esm/components/backoffice/layout/buildSidebarSections.js +69 -69
  49. package/lib/esm/components/backoffice/layout/sidebarUtils.js +16 -16
  50. package/lib/esm/components/backoffice/layout/sidebarUtils.js.map +1 -1
  51. package/lib/esm/components/backoffice/links/BackofficeInlineLink.js +29 -0
  52. package/lib/esm/components/backoffice/links/BackofficeInlineLink.js.map +1 -0
  53. package/lib/esm/components/backoffice/links/BackofficeLink.js +21 -0
  54. package/lib/esm/components/backoffice/links/BackofficeLink.js.map +1 -0
  55. package/lib/esm/components/backoffice/links/BackofficeLinkContent.js +26 -0
  56. package/lib/esm/components/backoffice/links/BackofficeLinkContent.js.map +1 -0
  57. package/lib/esm/components/backoffice/links/BackofficeLinkLabel.js +19 -0
  58. package/lib/esm/components/backoffice/links/BackofficeLinkLabel.js.map +1 -0
  59. package/lib/esm/components/backoffice/links/backofficeLink.css.js +7 -0
  60. package/lib/esm/components/backoffice/links/backofficeLink.css.js.map +1 -0
  61. package/lib/esm/components/backoffice/links/resolveBackofficeLink.js +81 -0
  62. package/lib/esm/components/backoffice/links/resolveBackofficeLink.js.map +1 -0
  63. package/lib/esm/components/backoffice/links/resolveBackofficeTargetIcon.js +50 -0
  64. package/lib/esm/components/backoffice/links/resolveBackofficeTargetIcon.js.map +1 -0
  65. package/lib/esm/components/backoffice/links/types.js +0 -0
  66. package/lib/esm/components/backoffice/links/useBackofficeLink.js +21 -0
  67. package/lib/esm/components/backoffice/links/useBackofficeLink.js.map +1 -0
  68. package/lib/esm/components/backoffice/pickers/EntityIdPickerDialog.js +1 -0
  69. package/lib/esm/components/backoffice/pickers/EntityIdPickerDialog.js.map +1 -1
  70. package/lib/esm/components/backoffice/refs/BackofficeEntityIdRef.js +27 -27
  71. package/lib/esm/components/backoffice/refs/BackofficeEntityIdRef.js.map +1 -1
  72. package/lib/esm/components/backoffice/refs/BackofficeEntityLink.js +24 -21
  73. package/lib/esm/components/backoffice/refs/BackofficeEntityLink.js.map +1 -1
  74. package/lib/esm/components/backoffice/refs/BackofficeRelatedCountLink.js +45 -44
  75. package/lib/esm/components/backoffice/refs/BackofficeRelatedCountLink.js.map +1 -1
  76. package/lib/esm/components/backoffice/scaffolds/BackofficeEntityListScaffold.js +269 -223
  77. package/lib/esm/components/backoffice/scaffolds/BackofficeEntityListScaffold.js.map +1 -1
  78. package/lib/esm/components/backoffice/shared/BackofficeFilterableCell.js +25 -30
  79. package/lib/esm/components/backoffice/shared/BackofficeFilterableCell.js.map +1 -1
  80. package/lib/esm/i18n/locales/en/backofficeReact.js +8 -0
  81. package/lib/esm/i18n/locales/en/backofficeReact.js.map +1 -1
  82. package/lib/esm/i18n/locales/fr/backofficeReact.js +8 -0
  83. package/lib/esm/i18n/locales/fr/backofficeReact.js.map +1 -1
  84. package/lib/esm/index.js +88 -73
  85. package/lib/esm/pages/BackofficeDashboardPage.js +1 -5
  86. package/lib/esm/pages/BackofficeDashboardPage.js.map +1 -1
  87. package/lib/esm/pages/BackofficeEntityDetailPage.js +231 -222
  88. package/lib/esm/pages/BackofficeEntityDetailPage.js.map +1 -1
  89. package/lib/esm/pages/BackofficeEntityDetailPage.view-helpers.js +170 -54
  90. package/lib/esm/pages/BackofficeEntityDetailPage.view-helpers.js.map +1 -1
  91. package/lib/esm/pages/BackofficeEntityListPage.js +196 -207
  92. package/lib/esm/pages/BackofficeEntityListPage.js.map +1 -1
  93. package/lib/esm/pages/BackofficeHubPage.js +21 -21
  94. package/lib/esm/pages/BackofficeLayoutPage.js +7 -7
  95. package/lib/esm/pages/BackofficeLayoutPage.js.map +1 -1
  96. package/lib/esm/router/createBackofficeRoutes.js +132 -126
  97. package/lib/esm/router/createBackofficeRoutes.js.map +1 -1
  98. package/lib/esm/style.css +1 -1
  99. package/lib/types/auth/login/EmailCapturePanel.d.ts.map +1 -1
  100. package/lib/types/auth/login/MfaChallengeForm.d.ts.map +1 -1
  101. package/lib/types/auth/login/PasskeyLoginForm.d.ts.map +1 -1
  102. package/lib/types/auth/pages/AcceptInvitationScreen.d.ts.map +1 -1
  103. package/lib/types/auth/pages/PasswordResetCompleteScreen.d.ts.map +1 -1
  104. package/lib/types/auth/pages/PasswordResetRequestScreen.d.ts.map +1 -1
  105. package/lib/types/components/backoffice/actions/BackofficeEntityActionFormDialog.d.ts.map +1 -1
  106. package/lib/types/components/backoffice/columns/buildDataTableColumns.d.ts +0 -1
  107. package/lib/types/components/backoffice/columns/buildDataTableColumns.d.ts.map +1 -1
  108. package/lib/types/components/backoffice/detail/BackofficeCopyButton.d.ts +8 -0
  109. package/lib/types/components/backoffice/detail/BackofficeCopyButton.d.ts.map +1 -0
  110. package/lib/types/components/backoffice/detail/BackofficeDetailActionBar.d.ts +9 -0
  111. package/lib/types/components/backoffice/detail/BackofficeDetailActionBar.d.ts.map +1 -0
  112. package/lib/types/components/backoffice/detail/BackofficeDetailBlock.d.ts +7 -0
  113. package/lib/types/components/backoffice/detail/BackofficeDetailBlock.d.ts.map +1 -0
  114. package/lib/types/components/backoffice/detail/BackofficeDetailHeader.d.ts +12 -0
  115. package/lib/types/components/backoffice/detail/BackofficeDetailHeader.d.ts.map +1 -0
  116. package/lib/types/components/backoffice/detail/BackofficeDetailPage.d.ts +16 -0
  117. package/lib/types/components/backoffice/detail/BackofficeDetailPage.d.ts.map +1 -0
  118. package/lib/types/components/backoffice/detail/BackofficeDetailPage.stories.d.ts +11 -0
  119. package/lib/types/components/backoffice/detail/BackofficeDetailPage.stories.d.ts.map +1 -0
  120. package/lib/types/components/backoffice/detail/BackofficeDetailRelationLink.d.ts.map +1 -1
  121. package/lib/types/components/backoffice/detail/BackofficeDetailRelationListBlock.d.ts.map +1 -1
  122. package/lib/types/components/backoffice/detail/BackofficeDetailTable.d.ts +6 -0
  123. package/lib/types/components/backoffice/detail/BackofficeDetailTable.d.ts.map +1 -0
  124. package/lib/types/components/backoffice/detail/BackofficeEmptyValue.d.ts +7 -0
  125. package/lib/types/components/backoffice/detail/BackofficeEmptyValue.d.ts.map +1 -0
  126. package/lib/types/components/backoffice/detail/BackofficeStatusGroup.d.ts +8 -0
  127. package/lib/types/components/backoffice/detail/BackofficeStatusGroup.d.ts.map +1 -0
  128. package/lib/types/components/backoffice/detail/BackofficeTechnicalFacts.d.ts +2 -0
  129. package/lib/types/components/backoffice/detail/BackofficeTechnicalFacts.d.ts.map +1 -0
  130. package/lib/types/components/backoffice/layout/breadcrumb/BackofficeTopbarBreadcrumb.d.ts.map +1 -1
  131. package/lib/types/components/backoffice/layout/breadcrumb/BackofficeTopbarPortalContext.d.ts +1 -0
  132. package/lib/types/components/backoffice/layout/breadcrumb/BackofficeTopbarPortalContext.d.ts.map +1 -1
  133. package/lib/types/components/backoffice/layout/breadcrumb/assertValidBreadcrumb.d.ts.map +1 -1
  134. package/lib/types/components/backoffice/layout/breadcrumb/buildBreadcrumbs.d.ts +10 -8
  135. package/lib/types/components/backoffice/layout/breadcrumb/buildBreadcrumbs.d.ts.map +1 -1
  136. package/lib/types/components/backoffice/layout/breadcrumb/types.d.ts +10 -5
  137. package/lib/types/components/backoffice/layout/breadcrumb/types.d.ts.map +1 -1
  138. package/lib/types/components/backoffice/layout/sidebarUtils.d.ts +6 -2
  139. package/lib/types/components/backoffice/layout/sidebarUtils.d.ts.map +1 -1
  140. package/lib/types/components/backoffice/links/BackofficeInlineLink.d.ts +18 -0
  141. package/lib/types/components/backoffice/links/BackofficeInlineLink.d.ts.map +1 -0
  142. package/lib/types/components/backoffice/links/BackofficeLink.d.ts +13 -0
  143. package/lib/types/components/backoffice/links/BackofficeLink.d.ts.map +1 -0
  144. package/lib/types/components/backoffice/links/BackofficeLinkContent.d.ts +10 -0
  145. package/lib/types/components/backoffice/links/BackofficeLinkContent.d.ts.map +1 -0
  146. package/lib/types/components/backoffice/links/BackofficeLinkLabel.d.ts +12 -0
  147. package/lib/types/components/backoffice/links/BackofficeLinkLabel.d.ts.map +1 -0
  148. package/lib/types/components/backoffice/links/backofficeLink.css.d.ts +4 -0
  149. package/lib/types/components/backoffice/links/backofficeLink.css.d.ts.map +1 -0
  150. package/lib/types/components/backoffice/links/resolveBackofficeLink.d.ts +15 -0
  151. package/lib/types/components/backoffice/links/resolveBackofficeLink.d.ts.map +1 -0
  152. package/lib/types/components/backoffice/links/resolveBackofficeTargetIcon.d.ts +8 -0
  153. package/lib/types/components/backoffice/links/resolveBackofficeTargetIcon.d.ts.map +1 -0
  154. package/lib/types/components/backoffice/links/types.d.ts +45 -0
  155. package/lib/types/components/backoffice/links/types.d.ts.map +1 -0
  156. package/lib/types/components/backoffice/links/useBackofficeLink.d.ts +7 -0
  157. package/lib/types/components/backoffice/links/useBackofficeLink.d.ts.map +1 -0
  158. package/lib/types/components/backoffice/pickers/EntityIdPickerDialog.d.ts.map +1 -1
  159. package/lib/types/components/backoffice/refs/BackofficeEntityLink.d.ts.map +1 -1
  160. package/lib/types/components/backoffice/refs/BackofficeRelatedCountLink.d.ts.map +1 -1
  161. package/lib/types/components/backoffice/scaffolds/BackofficeEntityListScaffold.d.ts.map +1 -1
  162. package/lib/types/components/backoffice/shared/BackofficeFilterableCell.d.ts +6 -3
  163. package/lib/types/components/backoffice/shared/BackofficeFilterableCell.d.ts.map +1 -1
  164. package/lib/types/i18n/resources.d.ts +16 -0
  165. package/lib/types/i18n/resources.d.ts.map +1 -1
  166. package/lib/types/index.d.ts +24 -1
  167. package/lib/types/index.d.ts.map +1 -1
  168. package/lib/types/pages/BackofficeDashboardPage.d.ts.map +1 -1
  169. package/lib/types/pages/BackofficeEntityDetailPage.d.ts.map +1 -1
  170. package/lib/types/pages/BackofficeEntityDetailPage.view-helpers.d.ts +49 -22
  171. package/lib/types/pages/BackofficeEntityDetailPage.view-helpers.d.ts.map +1 -1
  172. package/lib/types/pages/BackofficeEntityListPage.d.ts.map +1 -1
  173. package/lib/types/provider/types.d.ts +26 -22
  174. package/lib/types/provider/types.d.ts.map +1 -1
  175. package/lib/types/router/createBackofficeRoutes.d.ts +36 -1
  176. package/lib/types/router/createBackofficeRoutes.d.ts.map +1 -1
  177. package/package.json +7 -7
@@ -1 +1 @@
1
- {"version":3,"file":"BackofficeRelatedCountLink.js","names":[],"sources":["../../../../../src/components/backoffice/refs/BackofficeRelatedCountLink.tsx"],"sourcesContent":["import { useContext, type JSX, type MouseEvent } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { Link, RoutingContext } from '@plumile/router';\n\nimport {\n buildBackofficeFallbackListHref,\n buildBackofficeListLink,\n} from '@plumile/backoffice-core/state/buildListHref.js';\nimport { useBackofficeConfig } from '../../../provider/BackofficeConfigContext.js';\nimport { useBackofficeReactTranslation } from '../../../i18n/useBackofficeReactTranslation.js';\n\nimport * as styles from './backofficeRelatedCountLink.css.js';\n\nexport type BackofficeRelatedCountLinkProps<\n Where extends Record<string, unknown> = Record<string, unknown>,\n> = {\n count: number | null | undefined;\n entity: string;\n where: Where;\n};\n\nexport const BackofficeRelatedCountLink = <\n Where extends Record<string, unknown> = Record<string, unknown>,\n>({\n count,\n entity,\n where,\n}: BackofficeRelatedCountLinkProps<Where>): JSX.Element => {\n const { t: tApp } = useTranslation();\n const { t } = useBackofficeReactTranslation();\n const { entities, entityRegistry } = useBackofficeConfig();\n const routing = useContext(RoutingContext);\n let resolvedCount = 0;\n if (typeof count === 'number' && Number.isFinite(count)) {\n resolvedCount = count;\n }\n const entityManifest = entities[entity];\n if (entityManifest == null) {\n return <span>{resolvedCount}</span>;\n }\n const entityLabel = entityManifest.label(tApp);\n const actionLabel = t('relations.openFilteredList', {\n label: entityLabel,\n });\n const loadedEntity = entityRegistry.getLoadedListEntity(entity);\n let to: string | { pathname: string; search: string };\n if (loadedEntity == null) {\n to = buildBackofficeFallbackListHref(entityManifest.routes.list, where);\n } else {\n to = buildBackofficeListLink(loadedEntity.config, { where });\n }\n\n const navigateWithLoadedEntity = async (\n history: NonNullable<typeof routing>['history'],\n ): Promise<void> => {\n const listEntity = await entityRegistry.loadListEntity(entity);\n const next = buildBackofficeListLink(listEntity.config, { where });\n\n let search = '';\n if (next.search !== '') {\n search = `?${next.search}`;\n }\n\n history.push({\n pathname: next.pathname,\n search,\n hash: '',\n });\n };\n\n const handleClick = (event: MouseEvent<HTMLAnchorElement>) => {\n if (\n loadedEntity != null ||\n routing == null ||\n event.defaultPrevented ||\n event.button !== 0 ||\n event.metaKey ||\n event.altKey ||\n event.ctrlKey ||\n event.shiftKey\n ) {\n return;\n }\n\n event.preventDefault();\n const { history } = routing;\n navigateWithLoadedEntity(history).catch(() => {\n if (typeof to === 'string') {\n const fallbackUrl = new URL(to, window.location.origin);\n history.push({\n pathname: fallbackUrl.pathname,\n search: fallbackUrl.search,\n hash: fallbackUrl.hash,\n });\n return;\n }\n\n let search = '';\n if (to.search !== '') {\n search = `?${to.search}`;\n }\n\n history.push({\n pathname: to.pathname,\n search,\n hash: '',\n });\n });\n };\n\n return (\n <Link\n to={to}\n className={styles.link}\n title={actionLabel}\n aria-label={actionLabel}\n onClick={handleClick}\n >\n <span className={styles.count}>{resolvedCount}</span>\n <span className={styles.icon} aria-hidden=\"true\">\n ›\n </span>\n </Link>\n );\n};\n\nexport default BackofficeRelatedCountLink;\n"],"mappings":";;;;;;;;;AAqBA,IAAa,KAEX,EACA,OAAA,GACA,WACA,eACyD;CACzD,IAAM,EAAE,GAAG,MAAS,GAAgB,EAC9B,EAAE,SAAM,GAA+B,EACvC,EAAE,aAAU,sBAAmB,GAAqB,EACpD,IAAU,EAAW,EAAe,EACtC,IAAgB;CACpB,AAAI,OAAO,KAAU,YAAY,OAAO,SAAS,EAAM,KACrD,IAAgB;CAElB,IAAM,IAAiB,EAAS;CAChC,IAAI,KAAkB,MACpB,OAAO,kBAAC,QAAD,EAAA,UAAO,GAAqB,CAAA;CAGrC,IAAM,IAAc,EAAE,8BAA8B,EAClD,OAFkB,EAAe,MAAM,EAEhC,EACR,CAAC,EACI,IAAe,EAAe,oBAAoB,EAAO,EAC3D;CACJ,AAGE,IAHE,KAAgB,OACb,EAAgC,EAAe,OAAO,MAAM,EAAM,GAElE,EAAwB,EAAa,QAAQ,EAAE,UAAO,CAAC;CAG9D,IAAM,IAA2B,OAC/B,MACkB;EAElB,IAAM,IAAO,GAAwB,MADZ,EAAe,eAAe,EAAO,EACd,QAAQ,EAAE,UAAO,CAAC,EAE9D,IAAS;EAKb,AAJI,EAAK,WAAW,OAClB,IAAS,IAAI,EAAK,WAGpB,EAAQ,KAAK;GACX,UAAU,EAAK;GACf;GACA,MAAM;GACP,CAAC;;CA2CJ,OACE,kBAAC,GAAD;EACM;EACJ,WAAW;EACX,OAAO;EACP,cAAY;EACZ,UA9CiB,MAAyC;GAC5D,IACE,KAAgB,QAChB,KAAW,QACX,EAAM,oBACN,EAAM,WAAW,KACjB,EAAM,WACN,EAAM,UACN,EAAM,WACN,EAAM,UAEN;GAGF,EAAM,gBAAgB;GACtB,IAAM,EAAE,eAAY;GACpB,EAAyB,EAAQ,CAAC,YAAY;IAC5C,IAAI,OAAO,KAAO,UAAU;KAC1B,IAAM,IAAc,IAAI,IAAI,GAAI,OAAO,SAAS,OAAO;KACvD,EAAQ,KAAK;MACX,UAAU,EAAY;MACtB,QAAQ,EAAY;MACpB,MAAM,EAAY;MACnB,CAAC;KACF;;IAGF,IAAI,IAAS;IAKb,AAJI,EAAG,WAAW,OAChB,IAAS,IAAI,EAAG,WAGlB,EAAQ,KAAK;KACX,UAAU,EAAG;KACb;KACA,MAAM;KACP,CAAC;KACF;;YAIF,CAOE,kBAAC,QAAD;GAAM,WAAW;aAAe;GAAqB,CAAA,EACrD,kBAAC,QAAD;GAAM,WAAW;GAAa,eAAY;aAAO;GAE1C,CAAA,CACF"}
1
+ {"version":3,"file":"BackofficeRelatedCountLink.js","names":[],"sources":["../../../../../src/components/backoffice/refs/BackofficeRelatedCountLink.tsx"],"sourcesContent":["import { useContext, type JSX, type MouseEvent } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { RoutingContext } from '@plumile/router';\n\nimport { buildBackofficeListLink } from '@plumile/backoffice-core/state/buildListHref.js';\nimport { useBackofficeConfig } from '../../../provider/BackofficeConfigContext.js';\nimport { useBackofficeReactTranslation } from '../../../i18n/useBackofficeReactTranslation.js';\nimport { BackofficeInlineLink } from '../links/BackofficeInlineLink.js';\nimport { resolveBackofficeLink } from '../links/resolveBackofficeLink.js';\nimport type { BackofficeLinkTarget } from '../links/types.js';\n\nimport * as styles from './backofficeRelatedCountLink.css.js';\n\nexport type BackofficeRelatedCountLinkProps<\n Where extends Record<string, unknown> = Record<string, unknown>,\n> = {\n count: number | null | undefined;\n entity: string;\n where: Where;\n};\n\nexport const BackofficeRelatedCountLink = <\n Where extends Record<string, unknown> = Record<string, unknown>,\n>({\n count,\n entity,\n where,\n}: BackofficeRelatedCountLinkProps<Where>): JSX.Element => {\n const { t: tApp } = useTranslation();\n const { t } = useBackofficeReactTranslation();\n const { entities, entityManifest, entityRegistry, sidebar } =\n useBackofficeConfig();\n const routing = useContext(RoutingContext);\n let resolvedCount = 0;\n if (typeof count === 'number' && Number.isFinite(count)) {\n resolvedCount = count;\n }\n const targetManifest = entities[entity];\n if (targetManifest == null) {\n return <span>{resolvedCount}</span>;\n }\n const entityLabel = targetManifest.label(tApp);\n const actionLabel = t('relations.openFilteredList', {\n label: entityLabel,\n });\n const loadedEntity = entityRegistry.getLoadedListEntity(entity);\n const target = {\n kind: 'entity-list',\n entityId: entity,\n state: { where },\n } as BackofficeLinkTarget;\n\n const navigateWithLoadedEntity = async (\n history: NonNullable<typeof routing>['history'],\n ): Promise<void> => {\n const listEntity = await entityRegistry.loadListEntity(entity);\n const next = buildBackofficeListLink(listEntity.config, { where });\n\n let search = '';\n if (next.search !== '') {\n search = `?${next.search}`;\n }\n\n history.push({\n pathname: next.pathname,\n search,\n hash: '',\n });\n };\n\n const handleClick = (event: MouseEvent<HTMLAnchorElement>) => {\n if (\n loadedEntity != null ||\n routing == null ||\n event.defaultPrevented ||\n event.button !== 0 ||\n event.metaKey ||\n event.altKey ||\n event.ctrlKey ||\n event.shiftKey\n ) {\n return;\n }\n\n event.preventDefault();\n const { history } = routing;\n navigateWithLoadedEntity(history).catch(() => {\n const link = resolveBackofficeLink({\n target,\n manifest: entityManifest,\n sidebar,\n tApp,\n });\n const fallbackUrl = new URL(link.href, window.location.origin);\n history.push({\n pathname: fallbackUrl.pathname,\n search: fallbackUrl.search,\n hash: fallbackUrl.hash,\n });\n });\n };\n\n return (\n <BackofficeInlineLink\n target={target}\n className={styles.link}\n title={actionLabel}\n ariaLabel={actionLabel}\n onClick={handleClick}\n endAdornment={\n <span className={styles.icon} aria-hidden=\"true\">\n ›\n </span>\n }\n >\n <span className={styles.count}>{resolvedCount}</span>\n </BackofficeInlineLink>\n );\n};\n\nexport default BackofficeRelatedCountLink;\n"],"mappings":";;;;;;;;;;;AAqBA,IAAa,KAEX,EACA,OAAA,GACA,WACA,eACyD;CACzD,IAAM,EAAE,GAAG,MAAS,GAAgB,EAC9B,EAAE,SAAM,GAA+B,EACvC,EAAE,aAAU,mBAAgB,mBAAgB,eAChD,GAAqB,EACjB,IAAU,EAAW,EAAe,EACtC,IAAgB;CACpB,AAAI,OAAO,KAAU,YAAY,OAAO,SAAS,EAAM,KACrD,IAAgB;CAElB,IAAM,IAAiB,EAAS;CAChC,IAAI,KAAkB,MACpB,OAAO,kBAAC,QAAD,EAAA,UAAO,GAAqB,CAAA;CAGrC,IAAM,IAAc,EAAE,8BAA8B,EAClD,OAFkB,EAAe,MAAM,EAEhC,EACR,CAAC,EACI,IAAe,EAAe,oBAAoB,EAAO,EACzD,IAAS;EACb,MAAM;EACN,UAAU;EACV,OAAO,EAAE,UAAO;EACjB,EAEK,IAA2B,OAC/B,MACkB;EAElB,IAAM,IAAO,GAAwB,MADZ,EAAe,eAAe,EAAO,EACd,QAAQ,EAAE,UAAO,CAAC,EAE9D,IAAS;EAKb,AAJI,EAAK,WAAW,OAClB,IAAS,IAAI,EAAK,WAGpB,EAAQ,KAAK;GACX,UAAU,EAAK;GACf;GACA,MAAM;GACP,CAAC;;CAmCJ,OACE,kBAAC,GAAD;EACU;EACR,WAAW;EACX,OAAO;EACP,WAAW;EACX,UAtCiB,MAAyC;GAC5D,IACE,KAAgB,QAChB,KAAW,QACX,EAAM,oBACN,EAAM,WAAW,KACjB,EAAM,WACN,EAAM,UACN,EAAM,WACN,EAAM,UAEN;GAGF,EAAM,gBAAgB;GACtB,IAAM,EAAE,eAAY;GACpB,EAAyB,EAAQ,CAAC,YAAY;IAC5C,IAAM,IAAO,EAAsB;KACjC;KACA,UAAU;KACV;KACA;KACD,CAAC,EACI,IAAc,IAAI,IAAI,EAAK,MAAM,OAAO,SAAS,OAAO;IAC9D,EAAQ,KAAK;KACX,UAAU,EAAY;KACtB,QAAQ,EAAY;KACpB,MAAM,EAAY;KACnB,CAAC;KACF;;EAUA,cACE,kBAAC,QAAD;GAAM,WAAW;GAAa,eAAY;aAAO;GAE1C,CAAA;YAGT,kBAAC,QAAD;GAAM,WAAW;aAAe;GAAqB,CAAA;EAChC,CAAA"}