@plumile/backoffice-react 0.1.107 → 0.1.109

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 (196) 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/filters/EntityFilterValue.js +16 -8
  41. package/lib/esm/components/backoffice/filters/EntityFilterValue.js.map +1 -1
  42. package/lib/esm/components/backoffice/filters/EntityIdFilterField.js +85 -53
  43. package/lib/esm/components/backoffice/filters/EntityIdFilterField.js.map +1 -1
  44. package/lib/esm/components/backoffice/filters/entityIdFilterField.css.js +2 -2
  45. package/lib/esm/components/backoffice/filters/entityIdFilterField.css.js.map +1 -1
  46. package/lib/esm/components/backoffice/layout/breadcrumb/BackofficeTopbarBreadcrumb.js +53 -48
  47. package/lib/esm/components/backoffice/layout/breadcrumb/BackofficeTopbarBreadcrumb.js.map +1 -1
  48. package/lib/esm/components/backoffice/layout/breadcrumb/BackofficeTopbarPortalContext.js +2 -2
  49. package/lib/esm/components/backoffice/layout/breadcrumb/BackofficeTopbarPortalContext.js.map +1 -1
  50. package/lib/esm/components/backoffice/layout/breadcrumb/assertValidBreadcrumb.js +15 -11
  51. package/lib/esm/components/backoffice/layout/breadcrumb/assertValidBreadcrumb.js.map +1 -1
  52. package/lib/esm/components/backoffice/layout/breadcrumb/buildBreadcrumbs.js +50 -23
  53. package/lib/esm/components/backoffice/layout/breadcrumb/buildBreadcrumbs.js.map +1 -1
  54. package/lib/esm/components/backoffice/layout/buildSidebarSections.js +69 -69
  55. package/lib/esm/components/backoffice/layout/sidebarUtils.js +16 -16
  56. package/lib/esm/components/backoffice/layout/sidebarUtils.js.map +1 -1
  57. package/lib/esm/components/backoffice/links/BackofficeInlineLink.js +29 -0
  58. package/lib/esm/components/backoffice/links/BackofficeInlineLink.js.map +1 -0
  59. package/lib/esm/components/backoffice/links/BackofficeLink.js +21 -0
  60. package/lib/esm/components/backoffice/links/BackofficeLink.js.map +1 -0
  61. package/lib/esm/components/backoffice/links/BackofficeLinkContent.js +26 -0
  62. package/lib/esm/components/backoffice/links/BackofficeLinkContent.js.map +1 -0
  63. package/lib/esm/components/backoffice/links/BackofficeLinkLabel.js +19 -0
  64. package/lib/esm/components/backoffice/links/BackofficeLinkLabel.js.map +1 -0
  65. package/lib/esm/components/backoffice/links/backofficeLink.css.js +7 -0
  66. package/lib/esm/components/backoffice/links/backofficeLink.css.js.map +1 -0
  67. package/lib/esm/components/backoffice/links/resolveBackofficeLink.js +81 -0
  68. package/lib/esm/components/backoffice/links/resolveBackofficeLink.js.map +1 -0
  69. package/lib/esm/components/backoffice/links/resolveBackofficeTargetIcon.js +50 -0
  70. package/lib/esm/components/backoffice/links/resolveBackofficeTargetIcon.js.map +1 -0
  71. package/lib/esm/components/backoffice/links/types.js +0 -0
  72. package/lib/esm/components/backoffice/links/useBackofficeLink.js +21 -0
  73. package/lib/esm/components/backoffice/links/useBackofficeLink.js.map +1 -0
  74. package/lib/esm/components/backoffice/pickers/EntityIdPickerDialog.js +1 -0
  75. package/lib/esm/components/backoffice/pickers/EntityIdPickerDialog.js.map +1 -1
  76. package/lib/esm/components/backoffice/pickers/entityIdPickerDialog.css.js +2 -2
  77. package/lib/esm/components/backoffice/pickers/entityIdPickerDialog.css.js.map +1 -1
  78. package/lib/esm/components/backoffice/pickers/shared/EntityPickerList.js +27 -21
  79. package/lib/esm/components/backoffice/pickers/shared/EntityPickerList.js.map +1 -1
  80. package/lib/esm/components/backoffice/refs/BackofficeEntityIdRef.js +27 -27
  81. package/lib/esm/components/backoffice/refs/BackofficeEntityIdRef.js.map +1 -1
  82. package/lib/esm/components/backoffice/refs/BackofficeEntityLink.js +24 -21
  83. package/lib/esm/components/backoffice/refs/BackofficeEntityLink.js.map +1 -1
  84. package/lib/esm/components/backoffice/refs/BackofficeRelatedCountLink.js +45 -44
  85. package/lib/esm/components/backoffice/refs/BackofficeRelatedCountLink.js.map +1 -1
  86. package/lib/esm/components/backoffice/scaffolds/BackofficeEntityListScaffold.js +277 -227
  87. package/lib/esm/components/backoffice/scaffolds/BackofficeEntityListScaffold.js.map +1 -1
  88. package/lib/esm/components/backoffice/shared/BackofficeFilterableCell.js +25 -30
  89. package/lib/esm/components/backoffice/shared/BackofficeFilterableCell.js.map +1 -1
  90. package/lib/esm/i18n/locales/en/backofficeReact.js +8 -0
  91. package/lib/esm/i18n/locales/en/backofficeReact.js.map +1 -1
  92. package/lib/esm/i18n/locales/fr/backofficeReact.js +8 -0
  93. package/lib/esm/i18n/locales/fr/backofficeReact.js.map +1 -1
  94. package/lib/esm/index.js +88 -73
  95. package/lib/esm/pages/BackofficeDashboardPage.js +1 -5
  96. package/lib/esm/pages/BackofficeDashboardPage.js.map +1 -1
  97. package/lib/esm/pages/BackofficeEntityDetailPage.js +231 -222
  98. package/lib/esm/pages/BackofficeEntityDetailPage.js.map +1 -1
  99. package/lib/esm/pages/BackofficeEntityDetailPage.view-helpers.js +170 -54
  100. package/lib/esm/pages/BackofficeEntityDetailPage.view-helpers.js.map +1 -1
  101. package/lib/esm/pages/BackofficeEntityListPage.js +196 -207
  102. package/lib/esm/pages/BackofficeEntityListPage.js.map +1 -1
  103. package/lib/esm/pages/BackofficeHubPage.js +21 -21
  104. package/lib/esm/pages/BackofficeLayoutPage.js +7 -7
  105. package/lib/esm/pages/BackofficeLayoutPage.js.map +1 -1
  106. package/lib/esm/router/createBackofficeRoutes.js +132 -126
  107. package/lib/esm/router/createBackofficeRoutes.js.map +1 -1
  108. package/lib/esm/style.css +1 -1
  109. package/lib/types/auth/login/EmailCapturePanel.d.ts.map +1 -1
  110. package/lib/types/auth/login/MfaChallengeForm.d.ts.map +1 -1
  111. package/lib/types/auth/login/PasskeyLoginForm.d.ts.map +1 -1
  112. package/lib/types/auth/pages/AcceptInvitationScreen.d.ts.map +1 -1
  113. package/lib/types/auth/pages/PasswordResetCompleteScreen.d.ts.map +1 -1
  114. package/lib/types/auth/pages/PasswordResetRequestScreen.d.ts.map +1 -1
  115. package/lib/types/components/backoffice/actions/BackofficeEntityActionFormDialog.d.ts.map +1 -1
  116. package/lib/types/components/backoffice/columns/buildDataTableColumns.d.ts +0 -1
  117. package/lib/types/components/backoffice/columns/buildDataTableColumns.d.ts.map +1 -1
  118. package/lib/types/components/backoffice/detail/BackofficeCopyButton.d.ts +8 -0
  119. package/lib/types/components/backoffice/detail/BackofficeCopyButton.d.ts.map +1 -0
  120. package/lib/types/components/backoffice/detail/BackofficeDetailActionBar.d.ts +9 -0
  121. package/lib/types/components/backoffice/detail/BackofficeDetailActionBar.d.ts.map +1 -0
  122. package/lib/types/components/backoffice/detail/BackofficeDetailBlock.d.ts +7 -0
  123. package/lib/types/components/backoffice/detail/BackofficeDetailBlock.d.ts.map +1 -0
  124. package/lib/types/components/backoffice/detail/BackofficeDetailHeader.d.ts +12 -0
  125. package/lib/types/components/backoffice/detail/BackofficeDetailHeader.d.ts.map +1 -0
  126. package/lib/types/components/backoffice/detail/BackofficeDetailPage.d.ts +16 -0
  127. package/lib/types/components/backoffice/detail/BackofficeDetailPage.d.ts.map +1 -0
  128. package/lib/types/components/backoffice/detail/BackofficeDetailPage.stories.d.ts +11 -0
  129. package/lib/types/components/backoffice/detail/BackofficeDetailPage.stories.d.ts.map +1 -0
  130. package/lib/types/components/backoffice/detail/BackofficeDetailRelationLink.d.ts.map +1 -1
  131. package/lib/types/components/backoffice/detail/BackofficeDetailRelationListBlock.d.ts.map +1 -1
  132. package/lib/types/components/backoffice/detail/BackofficeDetailTable.d.ts +6 -0
  133. package/lib/types/components/backoffice/detail/BackofficeDetailTable.d.ts.map +1 -0
  134. package/lib/types/components/backoffice/detail/BackofficeEmptyValue.d.ts +7 -0
  135. package/lib/types/components/backoffice/detail/BackofficeEmptyValue.d.ts.map +1 -0
  136. package/lib/types/components/backoffice/detail/BackofficeStatusGroup.d.ts +8 -0
  137. package/lib/types/components/backoffice/detail/BackofficeStatusGroup.d.ts.map +1 -0
  138. package/lib/types/components/backoffice/detail/BackofficeTechnicalFacts.d.ts +2 -0
  139. package/lib/types/components/backoffice/detail/BackofficeTechnicalFacts.d.ts.map +1 -0
  140. package/lib/types/components/backoffice/filters/EntityFilterValue.d.ts +5 -1
  141. package/lib/types/components/backoffice/filters/EntityFilterValue.d.ts.map +1 -1
  142. package/lib/types/components/backoffice/filters/EntityIdFilterField.d.ts +1 -0
  143. package/lib/types/components/backoffice/filters/EntityIdFilterField.d.ts.map +1 -1
  144. package/lib/types/components/backoffice/filters/entityIdFilterField.css.d.ts +5 -2
  145. package/lib/types/components/backoffice/filters/entityIdFilterField.css.d.ts.map +1 -1
  146. package/lib/types/components/backoffice/layout/breadcrumb/BackofficeTopbarBreadcrumb.d.ts.map +1 -1
  147. package/lib/types/components/backoffice/layout/breadcrumb/BackofficeTopbarPortalContext.d.ts +1 -0
  148. package/lib/types/components/backoffice/layout/breadcrumb/BackofficeTopbarPortalContext.d.ts.map +1 -1
  149. package/lib/types/components/backoffice/layout/breadcrumb/assertValidBreadcrumb.d.ts.map +1 -1
  150. package/lib/types/components/backoffice/layout/breadcrumb/buildBreadcrumbs.d.ts +10 -8
  151. package/lib/types/components/backoffice/layout/breadcrumb/buildBreadcrumbs.d.ts.map +1 -1
  152. package/lib/types/components/backoffice/layout/breadcrumb/types.d.ts +10 -5
  153. package/lib/types/components/backoffice/layout/breadcrumb/types.d.ts.map +1 -1
  154. package/lib/types/components/backoffice/layout/sidebarUtils.d.ts +6 -2
  155. package/lib/types/components/backoffice/layout/sidebarUtils.d.ts.map +1 -1
  156. package/lib/types/components/backoffice/links/BackofficeInlineLink.d.ts +18 -0
  157. package/lib/types/components/backoffice/links/BackofficeInlineLink.d.ts.map +1 -0
  158. package/lib/types/components/backoffice/links/BackofficeLink.d.ts +13 -0
  159. package/lib/types/components/backoffice/links/BackofficeLink.d.ts.map +1 -0
  160. package/lib/types/components/backoffice/links/BackofficeLinkContent.d.ts +10 -0
  161. package/lib/types/components/backoffice/links/BackofficeLinkContent.d.ts.map +1 -0
  162. package/lib/types/components/backoffice/links/BackofficeLinkLabel.d.ts +12 -0
  163. package/lib/types/components/backoffice/links/BackofficeLinkLabel.d.ts.map +1 -0
  164. package/lib/types/components/backoffice/links/backofficeLink.css.d.ts +4 -0
  165. package/lib/types/components/backoffice/links/backofficeLink.css.d.ts.map +1 -0
  166. package/lib/types/components/backoffice/links/resolveBackofficeLink.d.ts +15 -0
  167. package/lib/types/components/backoffice/links/resolveBackofficeLink.d.ts.map +1 -0
  168. package/lib/types/components/backoffice/links/resolveBackofficeTargetIcon.d.ts +8 -0
  169. package/lib/types/components/backoffice/links/resolveBackofficeTargetIcon.d.ts.map +1 -0
  170. package/lib/types/components/backoffice/links/types.d.ts +45 -0
  171. package/lib/types/components/backoffice/links/types.d.ts.map +1 -0
  172. package/lib/types/components/backoffice/links/useBackofficeLink.d.ts +7 -0
  173. package/lib/types/components/backoffice/links/useBackofficeLink.d.ts.map +1 -0
  174. package/lib/types/components/backoffice/pickers/EntityIdPickerDialog.d.ts.map +1 -1
  175. package/lib/types/components/backoffice/pickers/entityIdPickerDialog.css.d.ts +2 -0
  176. package/lib/types/components/backoffice/pickers/entityIdPickerDialog.css.d.ts.map +1 -1
  177. package/lib/types/components/backoffice/pickers/shared/EntityPickerList.d.ts.map +1 -1
  178. package/lib/types/components/backoffice/refs/BackofficeEntityLink.d.ts.map +1 -1
  179. package/lib/types/components/backoffice/refs/BackofficeRelatedCountLink.d.ts.map +1 -1
  180. package/lib/types/components/backoffice/scaffolds/BackofficeEntityListScaffold.d.ts.map +1 -1
  181. package/lib/types/components/backoffice/shared/BackofficeFilterableCell.d.ts +6 -3
  182. package/lib/types/components/backoffice/shared/BackofficeFilterableCell.d.ts.map +1 -1
  183. package/lib/types/i18n/resources.d.ts +16 -0
  184. package/lib/types/i18n/resources.d.ts.map +1 -1
  185. package/lib/types/index.d.ts +24 -1
  186. package/lib/types/index.d.ts.map +1 -1
  187. package/lib/types/pages/BackofficeDashboardPage.d.ts.map +1 -1
  188. package/lib/types/pages/BackofficeEntityDetailPage.d.ts.map +1 -1
  189. package/lib/types/pages/BackofficeEntityDetailPage.view-helpers.d.ts +49 -22
  190. package/lib/types/pages/BackofficeEntityDetailPage.view-helpers.d.ts.map +1 -1
  191. package/lib/types/pages/BackofficeEntityListPage.d.ts.map +1 -1
  192. package/lib/types/provider/types.d.ts +26 -22
  193. package/lib/types/provider/types.d.ts.map +1 -1
  194. package/lib/types/router/createBackofficeRoutes.d.ts +36 -1
  195. package/lib/types/router/createBackofficeRoutes.d.ts.map +1 -1
  196. package/package.json +7 -7
@@ -1,65 +1,66 @@
1
1
  import { useBackofficeReactTranslation as e } from "../../../i18n/useBackofficeReactTranslation.js";
2
2
  import { useBackofficeConfig as t } from "../../../provider/BackofficeConfigContext.js";
3
- import { count as n, icon as r, link as i } from "./backofficeRelatedCountLink.css.js";
4
- import { useContext as a } from "react";
5
- import { jsx as o, jsxs as s } from "react/jsx-runtime";
6
- import { useTranslation as c } from "react-i18next";
7
- import { Link as l, RoutingContext as u } from "@plumile/router";
8
- import { buildBackofficeFallbackListHref as d, buildBackofficeListLink as f } from "@plumile/backoffice-core/state/buildListHref.js";
3
+ import { resolveBackofficeLink as n } from "../links/resolveBackofficeLink.js";
4
+ import { BackofficeInlineLink as r } from "../links/BackofficeInlineLink.js";
5
+ import { count as i, icon as a, link as o } from "./backofficeRelatedCountLink.css.js";
6
+ import { useContext as s } from "react";
7
+ import { jsx as c } from "react/jsx-runtime";
8
+ import { useTranslation as l } from "react-i18next";
9
+ import { RoutingContext as u } from "@plumile/router";
10
+ import { buildBackofficeListLink as d } from "@plumile/backoffice-core/state/buildListHref.js";
9
11
  //#region src/components/backoffice/refs/BackofficeRelatedCountLink.tsx
10
- var p = ({ count: p, entity: m, where: h }) => {
11
- let { t: g } = c(), { t: _ } = e(), { entities: v, entityRegistry: y } = t(), b = a(u), x = 0;
12
- typeof p == "number" && Number.isFinite(p) && (x = p);
13
- let S = v[m];
14
- if (S == null) return /* @__PURE__ */ o("span", { children: x });
15
- let C = _("relations.openFilteredList", { label: S.label(g) }), w = y.getLoadedListEntity(m), T;
16
- T = w == null ? d(S.routes.list, h) : f(w.config, { where: h });
17
- let E = async (e) => {
18
- let t = f((await y.loadListEntity(m)).config, { where: h }), n = "";
12
+ var f = ({ count: f, entity: p, where: m }) => {
13
+ let { t: h } = l(), { t: g } = e(), { entities: _, entityManifest: v, entityRegistry: y, sidebar: b } = t(), x = s(u), S = 0;
14
+ typeof f == "number" && Number.isFinite(f) && (S = f);
15
+ let C = _[p];
16
+ if (C == null) return /* @__PURE__ */ c("span", { children: S });
17
+ let w = g("relations.openFilteredList", { label: C.label(h) }), T = y.getLoadedListEntity(p), E = {
18
+ kind: "entity-list",
19
+ entityId: p,
20
+ state: { where: m }
21
+ }, D = async (e) => {
22
+ let t = d((await y.loadListEntity(p)).config, { where: m }), n = "";
19
23
  t.search !== "" && (n = `?${t.search}`), e.push({
20
24
  pathname: t.pathname,
21
25
  search: n,
22
26
  hash: ""
23
27
  });
24
28
  };
25
- return /* @__PURE__ */ s(l, {
26
- to: T,
27
- className: i,
28
- title: C,
29
- "aria-label": C,
29
+ return /* @__PURE__ */ c(r, {
30
+ target: E,
31
+ className: o,
32
+ title: w,
33
+ ariaLabel: w,
30
34
  onClick: (e) => {
31
- if (w != null || b == null || e.defaultPrevented || e.button !== 0 || e.metaKey || e.altKey || e.ctrlKey || e.shiftKey) return;
35
+ if (T != null || x == null || e.defaultPrevented || e.button !== 0 || e.metaKey || e.altKey || e.ctrlKey || e.shiftKey) return;
32
36
  e.preventDefault();
33
- let { history: t } = b;
34
- E(t).catch(() => {
35
- if (typeof T == "string") {
36
- let e = new URL(T, window.location.origin);
37
- t.push({
38
- pathname: e.pathname,
39
- search: e.search,
40
- hash: e.hash
41
- });
42
- return;
43
- }
44
- let e = "";
45
- T.search !== "" && (e = `?${T.search}`), t.push({
46
- pathname: T.pathname,
47
- search: e,
48
- hash: ""
37
+ let { history: t } = x;
38
+ D(t).catch(() => {
39
+ let e = n({
40
+ target: E,
41
+ manifest: v,
42
+ sidebar: b,
43
+ tApp: h
44
+ }), r = new URL(e.href, window.location.origin);
45
+ t.push({
46
+ pathname: r.pathname,
47
+ search: r.search,
48
+ hash: r.hash
49
49
  });
50
50
  });
51
51
  },
52
- children: [/* @__PURE__ */ o("span", {
53
- className: n,
54
- children: x
55
- }), /* @__PURE__ */ o("span", {
56
- className: r,
52
+ endAdornment: /* @__PURE__ */ c("span", {
53
+ className: a,
57
54
  "aria-hidden": "true",
58
55
  children: "›"
59
- })]
56
+ }),
57
+ children: /* @__PURE__ */ c("span", {
58
+ className: i,
59
+ children: S
60
+ })
60
61
  });
61
62
  };
62
63
  //#endregion
63
- export { p as BackofficeRelatedCountLink, p as default };
64
+ export { f as BackofficeRelatedCountLink, f as default };
64
65
 
65
66
  //# sourceMappingURL=BackofficeRelatedCountLink.js.map
@@ -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"}