@plumile/backoffice-react 0.1.166 → 0.1.167
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/esm/auth/authRefreshNotice.css.js +1 -0
- package/lib/esm/auth/login/loginPage.css.js +0 -2
- package/lib/esm/components/backoffice/filters/backofficeFilterAction.css.js +0 -1
- package/lib/esm/components/backoffice/filters/deferredFilterSearchInput.css.js +1 -0
- package/lib/esm/components/backoffice/refs/backofficeRelatedCountLink.css.js +1 -0
- package/lib/esm/pages/BackofficeEntityDetailLayoutPage.js +87 -83
- package/lib/esm/pages/BackofficeEntityDetailLayoutPage.js.map +1 -1
- package/lib/esm/pages/BackofficeEntityDetailPage.js +174 -174
- package/lib/esm/pages/BackofficeEntityDetailPage.js.map +1 -1
- package/lib/esm/relay/environment.js +28 -12
- package/lib/esm/relay/environment.js.map +1 -1
- package/lib/types/pages/BackofficeEntityDetailLayoutPage.d.ts.map +1 -1
- package/lib/types/pages/BackofficeEntityDetailPage.d.ts.map +1 -1
- package/lib/types/relay/environment.d.ts +18 -0
- package/lib/types/relay/environment.d.ts.map +1 -1
- package/package.json +6 -6
|
@@ -1,5 +1,3 @@
|
|
|
1
|
-
/* empty css */
|
|
2
|
-
/* empty css */
|
|
3
1
|
/* empty css */
|
|
4
2
|
//#region src/auth/login/loginPage.css.ts
|
|
5
3
|
var e = "txvbqbfpn txvbqbh4x txvbqbheb", t = "txvbqbfpn txvbqbh4x txvbqb19uf", n = "txvbqb1bg3 txvbqb9j txvbqbo7v txvbqbny4", r = "txvbqbey txvbqb1bg3 txvbqbfpn txvbqbhdl txvbqbs00 txvbqbp6j", i = "txvbqb1b9r txvbqbk07 txvbqbfvs txvbqb2wi txvbqb1bk3", a = "txvbqbey txvbqbfpn txvbqbh7g txvbqbhdy txvbqblt7 txvbqbrza", o = "w8yhmy0 txvbqb1b4r txvbqb1tv txvbqb2rt txvbqb1bhb txvbqbv txvbqbhbf txvbqbwvi txvbqb3f txvbqb7h txvbqb76 txvbqb7t txvbqb1etp txvbqb1gct", s = "txvbqb10o0 txvbqb11ll txvbqb12j6 txvbqbxv9 txvbqbc7z txvbqbc27 txvbqbci3 txvbqbce4", c = "txvbqbfpn txvbqbh4x txvbqbheb", l = "txvbqb19uf", u = "txvbqbo7v txvbqbam txvbqbhbs txvbqb1bhb txvbqbmu1", d = "txvbqbrzn", f = "w8yhmy1 txvbqb1f2 txvbqb29r txvbqb2sj txvbqb1bhb txvbqb1b9n txvbqb7h txvbqb75 txvbqb7t";
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
/* empty css */
|
|
2
1
|
/* empty css */
|
|
3
2
|
//#region src/components/backoffice/filters/backofficeFilterAction.css.ts
|
|
4
3
|
var e = "hwnq700 txvbqbfqq txvbqbey txvbqbls4 txvbqbh6d txvbqb19gp txvbqbjm4 txvbqbwvi txvbqb2tz txvbqb28o txvbqb2sj txvbqb1d9 txvbqb1b83 txvbqb1bhb txvbqbv txvbqb3f txvbqb7h txvbqb75 txvbqb7t txvbqb1eol txvbqb1czh txvbqb1dth qbwcue0 txvbqb1ffs txvbqb1ga0", t = "txvbqb19fm txvbqbjl1";
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
/* empty css */
|
|
1
2
|
/* empty css */
|
|
2
3
|
//#region src/components/backoffice/filters/deferredFilterSearchInput.css.ts
|
|
3
4
|
var e = "txvbqb19uf", t = "ds2thc0 txvbqbfqq txvbqbey txvbqbi8a", n = "ds2thc1 txvbqb6 txvbqbfqq txvbqbey txvbqbls4 txvbqb19gp txvbqbjm4 txvbqbwvi txvbqb2tz txvbqb1tv txvbqb1b4r txvbqb1bg5 txvbqbv txvbqb7h txvbqb75 txvbqb7t", r = "txvbqbfqq txvbqb19gp txvbqbjm4 txvbqbh6d";
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
/* empty css */
|
|
1
2
|
/* empty css */
|
|
2
3
|
//#region src/components/backoffice/refs/backofficeRelatedCountLink.css.ts
|
|
3
4
|
var e = "qbwcuem qbwcuek txvbqb10mk txvbqb11k5 txvbqb12hd txvbqbxtg txvbqbfqq txvbqbey txvbqbls4 txvbqbhd8 txvbqbvb6 txvbqb1bg1 txvbqb1b81 txvbqb1d9 txvbqb2sj txvbqb29r txvbqb2wi txvbqbhbf txvbqbo4m txvbqb3f txvbqb7g txvbqb75 txvbqb7t qbwcuel txvbqb1etp txvbqb1cst txvbqb1dth txvbqb1e2l qbwcue0 txvbqb1ffs txvbqb1ga0", t = "txvbqbv8n txvbqb18dp txvbqbh86", n = "kk18lv0 txvbqbh6d txvbqb1bg3 txvbqb9j txvbqbo4m txvbqb7h txvbqb75 txvbqb7t";
|
|
@@ -3,114 +3,118 @@ import { useBackofficeConfig as t } from "../provider/BackofficeConfigContext.js
|
|
|
3
3
|
import { BackofficeDetailBadgeRow as n } from "../components/backoffice/detail/BackofficeDetailBadgeRow.js";
|
|
4
4
|
import { BackofficeRightPageLayout as r } from "../components/backoffice/layout/breadcrumb/BackofficeRightPageLayout.js";
|
|
5
5
|
import { buildEntityDetailBreadcrumb as i } from "../components/backoffice/layout/breadcrumb/buildBreadcrumbs.js";
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
9
|
-
import {
|
|
10
|
-
import {
|
|
11
|
-
import {
|
|
12
|
-
import {
|
|
13
|
-
import {
|
|
14
|
-
import
|
|
15
|
-
import
|
|
16
|
-
import {
|
|
17
|
-
import b from "@plumile/
|
|
18
|
-
import
|
|
19
|
-
import {
|
|
20
|
-
import C from "@plumile/
|
|
21
|
-
import
|
|
22
|
-
import {
|
|
23
|
-
import {
|
|
6
|
+
import { BackofficeEntityDetailScaffold as a } from "../components/backoffice/scaffolds/BackofficeEntityDetailScaffold.js";
|
|
7
|
+
import { resolveVisibleDetailPages as o } from "./detail/pageResolution.js";
|
|
8
|
+
import { headerBlock as s, headerMeta as c, headerMetaList as l } from "./backofficeEntityDetailPage.css.js";
|
|
9
|
+
import { resolveHeaderItems as u } from "./BackofficeEntityDetailPage.view-helpers.js";
|
|
10
|
+
import { BackofficeEntityDetailLayoutContextProvider as d } from "./detail/BackofficeEntityDetailLayoutContext.js";
|
|
11
|
+
import { buildTabsItems as f } from "./detail/buildTabsItems.js";
|
|
12
|
+
import { BackofficeRedirect as p } from "./BackofficeRedirect.js";
|
|
13
|
+
import { Fragment as m, jsx as h, jsxs as g } from "react/jsx-runtime";
|
|
14
|
+
import { useTranslation as _ } from "react-i18next";
|
|
15
|
+
import * as v from "react-relay";
|
|
16
|
+
import { FormattedDate as y } from "@plumile/ui/atomic/atoms/formatted-date/FormattedDate.js";
|
|
17
|
+
import { BACKOFFICE_DATE_TIME_OPTIONS as b } from "@plumile/backoffice-core/constants.js";
|
|
18
|
+
import x from "@plumile/router/routing/Link.js";
|
|
19
|
+
import { Tag as S } from "@plumile/ui/backoffice/atoms/tag/Tag.js";
|
|
20
|
+
import { BackofficePageHeader as C } from "@plumile/ui/backoffice/molecules/backoffice_page_header/BackofficePageHeader.js";
|
|
21
|
+
import w from "@plumile/router/routing/useLocation.js";
|
|
22
|
+
import { Tabs as T } from "@plumile/ui/atomic/molecules/tabs/Tabs.js";
|
|
23
|
+
import { DetailPageTemplate as E } from "@plumile/ui/backoffice/templates/detail_page_template/DetailPageTemplate.js";
|
|
24
|
+
import { BackofficeKeyValueList as D } from "@plumile/ui/backoffice/molecules/backoffice_key_value_list/BackofficeKeyValueList.js";
|
|
24
25
|
//#region src/pages/BackofficeEntityDetailLayoutPage.tsx
|
|
25
|
-
var { useFragment:
|
|
26
|
-
let { t:
|
|
27
|
-
if (
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
subPages: _.pages.subPages,
|
|
31
|
-
activePagePath: V,
|
|
32
|
-
node: B
|
|
26
|
+
var { useFragment: O, usePreloadedQuery: k } = v, A = (e) => e.trim().replace(/^\/+|\/+$/g, ""), j = (e, t, n) => [n.pages.mainPage, ...n.pages.subPages ?? []].find((r) => e === n.routes.detailPage(t, r.id))?.path ?? "", M = ({ config: v, prepared: M, children: N }) => {
|
|
27
|
+
let { t: P } = _(), { t: F } = e(), { entities: I } = t(), { pathname: L } = w(), R = k(v.layoutPage.query, M.layoutQuery), z = v.layoutPage.resolveNode(R, { id: M.id }), B = O(v.layoutPage.fragment, z);
|
|
28
|
+
if (z == null) return /* @__PURE__ */ h(a, {
|
|
29
|
+
node: null,
|
|
30
|
+
render: () => null
|
|
33
31
|
});
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
32
|
+
let V = v.layoutPage.toView(B), H = j(L, M.id, v), U = o({
|
|
33
|
+
mainPage: v.pages.mainPage,
|
|
34
|
+
subPages: v.pages.subPages,
|
|
35
|
+
activePagePath: H,
|
|
36
|
+
node: V
|
|
37
|
+
});
|
|
38
|
+
if (!U.hasVisiblePages || U.activePage == null) return /* @__PURE__ */ h(p, { to: v.routes.list });
|
|
39
|
+
let { activePage: W } = U;
|
|
40
|
+
if (H !== "" && A(W.path) !== A(H)) return /* @__PURE__ */ h(p, { to: v.routes.detailPage(M.id, W.id) });
|
|
41
|
+
let G = f({
|
|
42
|
+
pages: U.pages,
|
|
43
|
+
id: M.id,
|
|
44
|
+
tApp: P,
|
|
45
|
+
detailPageHref: v.routes.detailPage
|
|
46
|
+
}), K = u(v.header, V, {
|
|
47
|
+
tApp: P,
|
|
48
|
+
t: F,
|
|
45
49
|
resolveEntityHref: (e, t) => {
|
|
46
|
-
let n =
|
|
50
|
+
let n = I[e];
|
|
47
51
|
return n == null ? null : n.routes.detail(t);
|
|
48
52
|
},
|
|
49
|
-
renderLink: (e, t) => /* @__PURE__ */
|
|
53
|
+
renderLink: (e, t) => /* @__PURE__ */ h(x, {
|
|
50
54
|
to: e,
|
|
51
55
|
preloadOnMouseEnter: !0,
|
|
52
56
|
children: t
|
|
53
57
|
}),
|
|
54
|
-
renderDate: (e, t) => /* @__PURE__ */
|
|
58
|
+
renderDate: (e, t) => /* @__PURE__ */ h(y, {
|
|
55
59
|
value: e,
|
|
56
|
-
options:
|
|
60
|
+
options: b,
|
|
57
61
|
fallback: t
|
|
58
62
|
}),
|
|
59
|
-
renderTag: (e, t) => /* @__PURE__ */
|
|
63
|
+
renderTag: (e, t) => /* @__PURE__ */ h(S, {
|
|
60
64
|
tone: e,
|
|
61
65
|
children: t
|
|
62
66
|
}),
|
|
63
|
-
renderBadgeRow: (e) => /* @__PURE__ */
|
|
64
|
-
}),
|
|
65
|
-
config:
|
|
66
|
-
tApp:
|
|
67
|
-
entityId:
|
|
68
|
-
layoutView:
|
|
69
|
-
pageLabel:
|
|
70
|
-
pageId:
|
|
71
|
-
}),
|
|
72
|
-
(
|
|
73
|
-
className: s,
|
|
74
|
-
children: [G.status, G.badges]
|
|
75
|
-
}));
|
|
76
|
-
let J = null;
|
|
77
|
-
G.items != null && G.items.length > 0 && (J = /* @__PURE__ */ m("div", {
|
|
67
|
+
renderBadgeRow: (e) => /* @__PURE__ */ h(n, { items: e })
|
|
68
|
+
}), q = i({
|
|
69
|
+
config: v,
|
|
70
|
+
tApp: P,
|
|
71
|
+
entityId: M.id,
|
|
72
|
+
layoutView: V,
|
|
73
|
+
pageLabel: W.label(P),
|
|
74
|
+
pageId: W.id
|
|
75
|
+
}), J;
|
|
76
|
+
(K.status != null || K.badges != null) && (J = /* @__PURE__ */ g("div", {
|
|
78
77
|
className: c,
|
|
79
|
-
children:
|
|
78
|
+
children: [K.status, K.badges]
|
|
80
79
|
}));
|
|
81
|
-
let Y =
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
80
|
+
let Y = null;
|
|
81
|
+
K.items != null && K.items.length > 0 && (Y = /* @__PURE__ */ h("div", {
|
|
82
|
+
className: l,
|
|
83
|
+
children: /* @__PURE__ */ h(D, { items: K.items })
|
|
84
|
+
}));
|
|
85
|
+
let X = /* @__PURE__ */ g("div", {
|
|
86
|
+
className: s,
|
|
87
|
+
children: [/* @__PURE__ */ h(C, {
|
|
88
|
+
title: K.title,
|
|
89
|
+
subtitle: K.subtitle,
|
|
90
|
+
meta: J
|
|
91
|
+
}), Y]
|
|
92
|
+
}), Z = null;
|
|
93
|
+
return U.pages.length > 1 && (Z = /* @__PURE__ */ h(T, {
|
|
94
|
+
items: G,
|
|
95
|
+
activeId: W.id,
|
|
92
96
|
variant: "underline"
|
|
93
|
-
})), /* @__PURE__ */
|
|
97
|
+
})), /* @__PURE__ */ h(d, {
|
|
94
98
|
value: {
|
|
95
|
-
activePage:
|
|
96
|
-
config:
|
|
97
|
-
entityId:
|
|
98
|
-
layoutView:
|
|
99
|
-
tabsItems:
|
|
100
|
-
visiblePages:
|
|
99
|
+
activePage: W,
|
|
100
|
+
config: v,
|
|
101
|
+
entityId: M.id,
|
|
102
|
+
layoutView: V,
|
|
103
|
+
tabsItems: G,
|
|
104
|
+
visiblePages: U.pages
|
|
101
105
|
},
|
|
102
|
-
children: /* @__PURE__ */
|
|
103
|
-
breadcrumb:
|
|
104
|
-
children: /* @__PURE__ */
|
|
105
|
-
headerNode:
|
|
106
|
-
tabsNode:
|
|
106
|
+
children: /* @__PURE__ */ h(r, {
|
|
107
|
+
breadcrumb: q,
|
|
108
|
+
children: /* @__PURE__ */ h(E, {
|
|
109
|
+
headerNode: X,
|
|
110
|
+
tabsNode: Z,
|
|
107
111
|
headerDensity: "compact",
|
|
108
|
-
children: /* @__PURE__ */ m
|
|
112
|
+
children: /* @__PURE__ */ h(m, { children: N })
|
|
109
113
|
})
|
|
110
114
|
})
|
|
111
115
|
});
|
|
112
116
|
};
|
|
113
117
|
//#endregion
|
|
114
|
-
export {
|
|
118
|
+
export { M as BackofficeEntityDetailLayoutPage, M as default };
|
|
115
119
|
|
|
116
120
|
//# sourceMappingURL=BackofficeEntityDetailLayoutPage.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BackofficeEntityDetailLayoutPage.js","names":[],"sources":["../../../src/pages/BackofficeEntityDetailLayoutPage.tsx"],"sourcesContent":["import { type JSX, type ReactNode } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport * as ReactRelay from 'react-relay';\nimport Link from '@plumile/router/routing/Link.js';\nimport useLocation from '@plumile/router/routing/useLocation.js';\n\nimport { BACKOFFICE_DATE_TIME_OPTIONS } from '@plumile/backoffice-core/constants.js';\nimport type {\n BackofficeEntityManifestItem,\n BackofficePreparedDetailLayoutRoute,\n BackofficeResolvedDetailLayoutFacetConfig,\n} from '@plumile/backoffice-core/types.js';\nimport { FormattedDate } from '@plumile/ui/atomic/atoms/formatted-date/FormattedDate.js';\nimport { Tabs } from '@plumile/ui/atomic/molecules/tabs/Tabs.js';\nimport { Tag } from '@plumile/ui/backoffice/atoms/tag/Tag.js';\nimport { BackofficeKeyValueList } from '@plumile/ui/backoffice/molecules/backoffice_key_value_list/BackofficeKeyValueList.js';\nimport { BackofficePageHeader } from '@plumile/ui/backoffice/molecules/backoffice_page_header/BackofficePageHeader.js';\nimport { DetailPageTemplate } from '@plumile/ui/backoffice/templates/detail_page_template/DetailPageTemplate.js';\n\nimport { BackofficeDetailBadgeRow } from '../components/backoffice/detail/BackofficeDetailBadgeRow.js';\nimport { BackofficeRightPageLayout } from '../components/backoffice/layout/breadcrumb/BackofficeRightPageLayout.js';\nimport { buildEntityDetailBreadcrumb } from '../components/backoffice/layout/breadcrumb/buildBreadcrumbs.js';\nimport { useBackofficeReactTranslation } from '../i18n/useBackofficeReactTranslation.js';\nimport { useBackofficeConfig } from '../provider/BackofficeConfigContext.js';\nimport * as pageStyles from './backofficeEntityDetailPage.css.js';\nimport { resolveHeaderItems } from './BackofficeEntityDetailPage.view-helpers.js';\nimport { BackofficeEntityDetailLayoutContextProvider } from './detail/BackofficeEntityDetailLayoutContext.js';\nimport { buildTabsItems } from './detail/buildTabsItems.js';\nimport { resolveVisibleDetailPages } from './detail/pageResolution.js';\nimport { BackofficeRedirect } from './BackofficeRedirect.js';\n\nconst { useFragment, usePreloadedQuery } = ReactRelay;\n\nconst normalizePath = (value: string): string => {\n return value.trim().replace(/^\\/+|\\/+$/g, '');\n};\n\nconst resolveActivePagePath = (\n pathname: string,\n id: string,\n config: BackofficeResolvedDetailLayoutFacetConfig,\n): string => {\n const pages = [config.pages.mainPage, ...(config.pages.subPages ?? [])];\n const activePage = pages.find((page) => {\n return pathname === config.routes.detailPage(id, page.id);\n });\n return activePage?.path ?? '';\n};\n\nexport type BackofficeEntityDetailLayoutPageProps = {\n entityManifest: BackofficeEntityManifestItem;\n config: BackofficeResolvedDetailLayoutFacetConfig;\n prepared: BackofficePreparedDetailLayoutRoute;\n children?: ReactNode;\n};\n\nexport const BackofficeEntityDetailLayoutPage = ({\n config,\n prepared,\n children,\n}: BackofficeEntityDetailLayoutPageProps): JSX.Element => {\n const { t: tApp } = useTranslation();\n const { t } = useBackofficeReactTranslation();\n const { entities } = useBackofficeConfig();\n const { pathname } = useLocation();\n const layoutQueryData = usePreloadedQuery(\n config.layoutPage.query,\n prepared.layoutQuery,\n );\n const layoutNodeRef = config.layoutPage.resolveNode(layoutQueryData, {\n id: prepared.id,\n });\n\n const layoutNode = useFragment(\n config.layoutPage.fragment,\n layoutNodeRef as never,\n );\n\n if (layoutNodeRef == null) {\n return <
|
|
1
|
+
{"version":3,"file":"BackofficeEntityDetailLayoutPage.js","names":[],"sources":["../../../src/pages/BackofficeEntityDetailLayoutPage.tsx"],"sourcesContent":["import { type JSX, type ReactNode } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport * as ReactRelay from 'react-relay';\nimport Link from '@plumile/router/routing/Link.js';\nimport useLocation from '@plumile/router/routing/useLocation.js';\n\nimport { BACKOFFICE_DATE_TIME_OPTIONS } from '@plumile/backoffice-core/constants.js';\nimport type {\n BackofficeEntityManifestItem,\n BackofficePreparedDetailLayoutRoute,\n BackofficeResolvedDetailLayoutFacetConfig,\n} from '@plumile/backoffice-core/types.js';\nimport { FormattedDate } from '@plumile/ui/atomic/atoms/formatted-date/FormattedDate.js';\nimport { Tabs } from '@plumile/ui/atomic/molecules/tabs/Tabs.js';\nimport { Tag } from '@plumile/ui/backoffice/atoms/tag/Tag.js';\nimport { BackofficeKeyValueList } from '@plumile/ui/backoffice/molecules/backoffice_key_value_list/BackofficeKeyValueList.js';\nimport { BackofficePageHeader } from '@plumile/ui/backoffice/molecules/backoffice_page_header/BackofficePageHeader.js';\nimport { DetailPageTemplate } from '@plumile/ui/backoffice/templates/detail_page_template/DetailPageTemplate.js';\n\nimport { BackofficeDetailBadgeRow } from '../components/backoffice/detail/BackofficeDetailBadgeRow.js';\nimport { BackofficeEntityDetailScaffold } from '../components/backoffice/scaffolds/BackofficeEntityDetailScaffold.js';\nimport { BackofficeRightPageLayout } from '../components/backoffice/layout/breadcrumb/BackofficeRightPageLayout.js';\nimport { buildEntityDetailBreadcrumb } from '../components/backoffice/layout/breadcrumb/buildBreadcrumbs.js';\nimport { useBackofficeReactTranslation } from '../i18n/useBackofficeReactTranslation.js';\nimport { useBackofficeConfig } from '../provider/BackofficeConfigContext.js';\nimport * as pageStyles from './backofficeEntityDetailPage.css.js';\nimport { resolveHeaderItems } from './BackofficeEntityDetailPage.view-helpers.js';\nimport { BackofficeEntityDetailLayoutContextProvider } from './detail/BackofficeEntityDetailLayoutContext.js';\nimport { buildTabsItems } from './detail/buildTabsItems.js';\nimport { resolveVisibleDetailPages } from './detail/pageResolution.js';\nimport { BackofficeRedirect } from './BackofficeRedirect.js';\n\nconst { useFragment, usePreloadedQuery } = ReactRelay;\n\nconst normalizePath = (value: string): string => {\n return value.trim().replace(/^\\/+|\\/+$/g, '');\n};\n\nconst resolveActivePagePath = (\n pathname: string,\n id: string,\n config: BackofficeResolvedDetailLayoutFacetConfig,\n): string => {\n const pages = [config.pages.mainPage, ...(config.pages.subPages ?? [])];\n const activePage = pages.find((page) => {\n return pathname === config.routes.detailPage(id, page.id);\n });\n return activePage?.path ?? '';\n};\n\nexport type BackofficeEntityDetailLayoutPageProps = {\n entityManifest: BackofficeEntityManifestItem;\n config: BackofficeResolvedDetailLayoutFacetConfig;\n prepared: BackofficePreparedDetailLayoutRoute;\n children?: ReactNode;\n};\n\nexport const BackofficeEntityDetailLayoutPage = ({\n config,\n prepared,\n children,\n}: BackofficeEntityDetailLayoutPageProps): JSX.Element => {\n const { t: tApp } = useTranslation();\n const { t } = useBackofficeReactTranslation();\n const { entities } = useBackofficeConfig();\n const { pathname } = useLocation();\n const layoutQueryData = usePreloadedQuery(\n config.layoutPage.query,\n prepared.layoutQuery,\n );\n const layoutNodeRef = config.layoutPage.resolveNode(layoutQueryData, {\n id: prepared.id,\n });\n\n const layoutNode = useFragment(\n config.layoutPage.fragment,\n layoutNodeRef as never,\n );\n\n if (layoutNodeRef == null) {\n return (\n <BackofficeEntityDetailScaffold\n node={null}\n render={() => {\n return null;\n }}\n />\n );\n }\n\n const layoutView = config.layoutPage.toView(layoutNode);\n const activePagePath = resolveActivePagePath(pathname, prepared.id, config);\n const resolvedPages = resolveVisibleDetailPages({\n mainPage: config.pages.mainPage,\n subPages: config.pages.subPages,\n activePagePath,\n node: layoutView as never,\n });\n\n if (!resolvedPages.hasVisiblePages || resolvedPages.activePage == null) {\n return <BackofficeRedirect to={config.routes.list} />;\n }\n\n const { activePage } = resolvedPages;\n if (\n activePagePath !== '' &&\n normalizePath(activePage.path) !== normalizePath(activePagePath)\n ) {\n return (\n <BackofficeRedirect\n to={config.routes.detailPage(prepared.id, activePage.id)}\n />\n );\n }\n\n const tabsItems = buildTabsItems({\n pages: resolvedPages.pages,\n id: prepared.id,\n tApp,\n detailPageHref: config.routes.detailPage,\n });\n const resolveEntityHref = (entityId: string, refId: string) => {\n const entityConfig = entities[entityId];\n if (entityConfig == null) {\n return null;\n }\n return entityConfig.routes.detail(refId);\n };\n const header = resolveHeaderItems(config.header, layoutView, {\n tApp,\n t,\n resolveEntityHref,\n renderLink: (href, label) => {\n return (\n <Link to={href} preloadOnMouseEnter>\n {label}\n </Link>\n );\n },\n renderDate: (value, fallback) => {\n return (\n <FormattedDate\n value={value}\n options={BACKOFFICE_DATE_TIME_OPTIONS}\n fallback={fallback}\n />\n );\n },\n renderTag: (tone, label) => {\n return <Tag tone={tone}>{label}</Tag>;\n },\n renderBadgeRow: (items) => {\n return <BackofficeDetailBadgeRow items={items} />;\n },\n });\n const breadcrumb = buildEntityDetailBreadcrumb({\n config,\n tApp,\n entityId: prepared.id,\n layoutView,\n pageLabel: activePage.label(tApp),\n pageId: activePage.id,\n });\n let headerMetaNode: JSX.Element | undefined;\n if (header.status != null || header.badges != null) {\n headerMetaNode = (\n <div className={pageStyles.headerMeta}>\n {header.status}\n {header.badges}\n </div>\n );\n }\n let headerItemsNode: JSX.Element | null = null;\n if (header.items != null && header.items.length > 0) {\n headerItemsNode = (\n <div className={pageStyles.headerMetaList}>\n <BackofficeKeyValueList items={header.items} />\n </div>\n );\n }\n const headerNode = (\n <div className={pageStyles.headerBlock}>\n <BackofficePageHeader\n title={header.title}\n subtitle={header.subtitle}\n meta={headerMetaNode}\n />\n {headerItemsNode}\n </div>\n );\n let tabsNode: JSX.Element | null = null;\n if (resolvedPages.pages.length > 1) {\n tabsNode = (\n <Tabs items={tabsItems} activeId={activePage.id} variant=\"underline\" />\n );\n }\n\n return (\n <BackofficeEntityDetailLayoutContextProvider\n value={{\n activePage,\n config,\n entityId: prepared.id,\n layoutView,\n tabsItems,\n visiblePages: resolvedPages.pages,\n }}\n >\n <BackofficeRightPageLayout breadcrumb={breadcrumb}>\n <DetailPageTemplate\n headerNode={headerNode}\n tabsNode={tabsNode}\n headerDensity=\"compact\"\n >\n <>{children}</>\n </DetailPageTemplate>\n </BackofficeRightPageLayout>\n </BackofficeEntityDetailLayoutContextProvider>\n );\n};\n\nexport default BackofficeEntityDetailLayoutPage;\n"],"mappings":"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"}
|