@plumile/backoffice-react 0.1.81 → 0.1.83
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/{AcceptInvitationScreen-DJkNNx49.js → AcceptInvitationScreen-5-0EtE15.js} +4 -4
- package/lib/esm/{AcceptInvitationScreen-DJkNNx49.js.map → AcceptInvitationScreen-5-0EtE15.js.map} +1 -1
- package/lib/esm/{AuthPanel-Co626p7A.js → AuthPanel-DiHejPoq.js} +2 -2
- package/lib/esm/{AuthPanel-Co626p7A.js.map → AuthPanel-DiHejPoq.js.map} +1 -1
- package/lib/esm/{BackofficeAcceptInvitationPage-BQfDMSux.js → BackofficeAcceptInvitationPage-FPbn31YK.js} +6 -6
- package/lib/esm/{BackofficeAcceptInvitationPage-BQfDMSux.js.map → BackofficeAcceptInvitationPage-FPbn31YK.js.map} +1 -1
- package/lib/esm/{BackofficeDashboardPage-B5_YC1ZL.js → BackofficeDashboardPage-C7lIVeA1.js} +3 -3
- package/lib/esm/{BackofficeDashboardPage-B5_YC1ZL.js.map → BackofficeDashboardPage-C7lIVeA1.js.map} +1 -1
- package/lib/esm/{BackofficeDetailPayload-CbsZKnw6.js → BackofficeDetailPayload-iVx66o_6.js} +4 -4
- package/lib/esm/{BackofficeDetailPayload-CbsZKnw6.js.map → BackofficeDetailPayload-iVx66o_6.js.map} +1 -1
- package/lib/esm/{BackofficeEntityActionFormDialog-BzKi1eyv.js → BackofficeEntityActionFormDialog-V4QXnvpy.js} +18 -18
- package/lib/esm/{BackofficeEntityActionFormDialog-BzKi1eyv.js.map → BackofficeEntityActionFormDialog-V4QXnvpy.js.map} +1 -1
- package/lib/esm/{BackofficeEntityDetailPage-CE4tl5ZJ.js → BackofficeEntityDetailPage-BljQmWsw.js} +10 -10
- package/lib/esm/{BackofficeEntityDetailPage-CE4tl5ZJ.js.map → BackofficeEntityDetailPage-BljQmWsw.js.map} +1 -1
- package/lib/esm/{BackofficeEntityListPage-CtLI15-L.js → BackofficeEntityListPage-BneDsGo-.js} +6 -6
- package/lib/esm/{BackofficeEntityListPage-CtLI15-L.js.map → BackofficeEntityListPage-BneDsGo-.js.map} +1 -1
- package/lib/esm/{BackofficeLayoutPage-DpvTzwtK.js → BackofficeLayoutPage-Da4y2B0i.js} +5 -5
- package/lib/esm/{BackofficeLayoutPage-DpvTzwtK.js.map → BackofficeLayoutPage-Da4y2B0i.js.map} +1 -1
- package/lib/esm/{BackofficeLoginPage-GKVdZndS.js → BackofficeLoginPage-Dc61SyMV.js} +6 -6
- package/lib/esm/{BackofficeLoginPage-GKVdZndS.js.map → BackofficeLoginPage-Dc61SyMV.js.map} +1 -1
- package/lib/esm/{BackofficePasswordResetCompletePage-CCQJYK9S.js → BackofficePasswordResetCompletePage-CvoHqhBS.js} +4 -4
- package/lib/esm/{BackofficePasswordResetCompletePage-CCQJYK9S.js.map → BackofficePasswordResetCompletePage-CvoHqhBS.js.map} +1 -1
- package/lib/esm/{BackofficePasswordResetRequestPage-Df8mcLkC.js → BackofficePasswordResetRequestPage-DDNcCf3_.js} +4 -4
- package/lib/esm/{BackofficePasswordResetRequestPage-Df8mcLkC.js.map → BackofficePasswordResetRequestPage-DDNcCf3_.js.map} +1 -1
- package/lib/esm/{BackofficeRightPageLayout-D7QRE8KZ.js → BackofficeRightPageLayout-F8ipegrl.js} +3 -3
- package/lib/esm/{BackofficeRightPageLayout-D7QRE8KZ.js.map → BackofficeRightPageLayout-F8ipegrl.js.map} +1 -1
- package/lib/esm/{BackofficeVerifyEmailPage-CtqLzXAD.js → BackofficeVerifyEmailPage-BSTtLXdx.js} +3 -3
- package/lib/esm/{BackofficeVerifyEmailPage-CtqLzXAD.js.map → BackofficeVerifyEmailPage-BSTtLXdx.js.map} +1 -1
- package/lib/esm/{EntityFilterValue-Bn9VGr2M.js → EntityFilterValue-B5ZGHO_u.js} +2 -2
- package/lib/esm/{EntityFilterValue-Bn9VGr2M.js.map → EntityFilterValue-B5ZGHO_u.js.map} +1 -1
- package/lib/esm/{EntityIdPickerDialog-D_qAlrU6.js → EntityIdPickerDialog-DbTnDU4v.js} +3 -3
- package/lib/esm/{EntityIdPickerDialog-D_qAlrU6.js.map → EntityIdPickerDialog-DbTnDU4v.js.map} +1 -1
- package/lib/esm/{LazyBackofficeEntityActionFormDialog-DndjG4kV.js → LazyBackofficeEntityActionFormDialog-BE3wVfU6.js} +5 -5
- package/lib/esm/{LazyBackofficeEntityActionFormDialog-DndjG4kV.js.map → LazyBackofficeEntityActionFormDialog-BE3wVfU6.js.map} +1 -1
- package/lib/esm/{PasswordResetCompleteScreen-DdJsdKMI.js → PasswordResetCompleteScreen-B0P_tZg2.js} +3 -3
- package/lib/esm/{PasswordResetCompleteScreen-DdJsdKMI.js.map → PasswordResetCompleteScreen-B0P_tZg2.js.map} +1 -1
- package/lib/esm/{PasswordResetRequestScreen-DBIHOmsl.js → PasswordResetRequestScreen-p9s0dblR.js} +3 -3
- package/lib/esm/{PasswordResetRequestScreen-DBIHOmsl.js.map → PasswordResetRequestScreen-p9s0dblR.js.map} +1 -1
- package/lib/esm/{VerifyEmailScreen-C9rfi3q8.js → VerifyEmailScreen--9lxOGlW.js} +2 -2
- package/lib/esm/{VerifyEmailScreen-C9rfi3q8.js.map → VerifyEmailScreen--9lxOGlW.js.map} +1 -1
- package/lib/esm/backoffice-react.js +20 -20
- package/lib/esm/loginPage.css-CBJ1Ozm5.js +12 -0
- package/lib/esm/{loginPage.css-4M4PrzUn.js.map → loginPage.css-CBJ1Ozm5.js.map} +1 -1
- package/lib/esm/{synchronizeAuthStatusQuery-Bb5wh5rF.js → synchronizeAuthStatusQuery-Dr6AEFhi.js} +4 -4
- package/lib/esm/{synchronizeAuthStatusQuery-Bb5wh5rF.js.map → synchronizeAuthStatusQuery-Dr6AEFhi.js.map} +1 -1
- package/lib/esm/{useAuth-tQWc1NnB.js → useAuth-CjdysxLB.js} +2 -2
- package/lib/esm/{useAuth-tQWc1NnB.js.map → useAuth-CjdysxLB.js.map} +1 -1
- package/lib/esm/{useBackofficeAuth-BUrTeBOK.js → useBackofficeAuth-BshabGXc.js} +2 -2
- package/lib/esm/{useBackofficeAuth-BUrTeBOK.js.map → useBackofficeAuth-BshabGXc.js.map} +1 -1
- package/package.json +5 -5
- package/lib/esm/loginPage.css-4M4PrzUn.js +0 -12
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { a as e, d as t, f as n, s as r } from "./loginPage.css-
|
|
2
|
-
import { o as i } from "./useAuth-
|
|
3
|
-
import { t as a } from "./AuthPanel-
|
|
1
|
+
import { a as e, d as t, f as n, s as r } from "./loginPage.css-CBJ1Ozm5.js";
|
|
2
|
+
import { o as i } from "./useAuth-CjdysxLB.js";
|
|
3
|
+
import { t as a } from "./AuthPanel-DiHejPoq.js";
|
|
4
4
|
import { useCallback as o, useMemo as s, useState as c } from "react";
|
|
5
5
|
import { AuthLayout as l, Button as u, FormError as d, FormField as f } from "@plumile/ui";
|
|
6
6
|
import { jsx as p, jsxs as m } from "react/jsx-runtime";
|
|
@@ -113,4 +113,4 @@ var h = ({ auth: h, onSuccessRedirect: g, onBackToLogin: _, token: v }) => {
|
|
|
113
113
|
//#endregion
|
|
114
114
|
export { h as t };
|
|
115
115
|
|
|
116
|
-
//# sourceMappingURL=AcceptInvitationScreen-
|
|
116
|
+
//# sourceMappingURL=AcceptInvitationScreen-5-0EtE15.js.map
|
package/lib/esm/{AcceptInvitationScreen-DJkNNx49.js.map → AcceptInvitationScreen-5-0EtE15.js.map}
RENAMED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AcceptInvitationScreen-
|
|
1
|
+
{"version":3,"file":"AcceptInvitationScreen-5-0EtE15.js","names":[],"sources":["../../src/auth/pages/AcceptInvitationScreen.tsx"],"sourcesContent":["/* eslint-disable no-ternary */\nimport {\n useCallback,\n useMemo,\n useState,\n type FormEvent,\n type JSX,\n} from 'react';\nimport { useSharedTranslation } from '../../i18n/useSharedTranslation.js';\n\nimport { AuthLayout, Button, FormError, FormField } from '@plumile/ui';\n\nimport type { UseAuthReturn } from '../../hooks/useAuth.js';\nimport { MfaChallengeForm } from '../login/MfaChallengeForm.js';\nimport AuthPanel from '../login/AuthPanel.js';\nimport * as styles from '../login/loginPage.css.js';\n\ntype AcceptanceState = 'pending' | 'mfa' | 'completed' | 'error' | 'idle';\n\ntype Props = {\n auth: UseAuthReturn;\n onSuccessRedirect: () => void;\n onBackToLogin: () => void;\n token?: string;\n};\n\nexport const AcceptInvitationScreen = ({\n auth,\n onSuccessRedirect,\n onBackToLogin,\n token,\n}: Props): JSX.Element => {\n const { t } = useSharedTranslation();\n const { acceptInvitation } = auth;\n const [status, setStatus] = useState<AcceptanceState>('idle');\n const [password, setPassword] = useState('');\n const [passwordConfirmation, setPasswordConfirmation] = useState('');\n const [isSubmitting, setIsSubmitting] = useState(false);\n const [errorMessage, setErrorMessage] = useState<string | null>(null);\n\n const resolvedToken = useMemo(() => {\n if (token != null) {\n return token;\n }\n if (typeof window === 'undefined') {\n return '';\n }\n const params = new URLSearchParams(window.location.search);\n return params.get('token') ?? '';\n }, [token]);\n\n const handleSubmit = useCallback(\n (event: FormEvent<HTMLFormElement>) => {\n event.preventDefault();\n if (resolvedToken === '') {\n setErrorMessage(t('auth.acceptInvitation.errors.missingToken'));\n setStatus('error');\n return;\n }\n\n if (password !== passwordConfirmation) {\n setErrorMessage(t('auth.acceptInvitation.errors.passwordMismatch'));\n setStatus('error');\n return;\n }\n\n setStatus('pending');\n setErrorMessage(null);\n setIsSubmitting(true);\n\n // eslint-disable-next-line no-void\n void acceptInvitation({\n token: resolvedToken,\n password,\n passwordConfirmation,\n })\n .then((result) => {\n if (result === 'mfa-required') {\n setStatus('mfa');\n return;\n }\n setStatus('completed');\n onSuccessRedirect();\n })\n .catch((error) => {\n setStatus('error');\n if (error instanceof Error) {\n setErrorMessage(error.message);\n } else if (typeof error === 'string') {\n setErrorMessage(error);\n } else {\n setErrorMessage(t('auth.acceptInvitation.errors.default'));\n }\n })\n .finally(() => {\n setIsSubmitting(false);\n });\n },\n [\n acceptInvitation,\n onSuccessRedirect,\n password,\n passwordConfirmation,\n resolvedToken,\n t,\n ],\n );\n\n const handleMfaSuccess = useCallback(() => {\n setStatus('completed');\n onSuccessRedirect();\n }, [onSuccessRedirect]);\n\n const handleRetry = useCallback(() => {\n setStatus('idle');\n setErrorMessage(null);\n setIsSubmitting(false);\n }, []);\n\n if (status === 'mfa') {\n return (\n <AuthLayout\n title={t('auth.acceptInvitation.mfaTitle')}\n subtitle={t('auth.acceptInvitation.mfaSubtitle')}\n >\n <MfaChallengeForm\n auth={auth}\n onSuccess={handleMfaSuccess}\n onBack={() => {\n auth.reset();\n handleRetry();\n }}\n />\n </AuthLayout>\n );\n }\n\n let content: JSX.Element;\n if (status === 'completed') {\n content = (\n <div className={styles.stack}>\n <p className={styles.helper}>\n {t('auth.acceptInvitation.status.success')}\n </p>\n </div>\n );\n } else {\n content = (\n <AuthPanel description={t('auth.acceptInvitation.subtitle')}>\n <form className={styles.formSurface} onSubmit={handleSubmit} noValidate>\n {errorMessage != null ? <FormError>{errorMessage}</FormError> : null}\n <FormField\n label={t('auth.acceptInvitation.form.passwordLabel')}\n name=\"password\"\n type=\"password\"\n value={password}\n onChange={(event) => {\n setPassword(event.target.value);\n setErrorMessage(null);\n if (status === 'error') {\n setStatus('idle');\n }\n }}\n placeholder={t('auth.acceptInvitation.form.passwordPlaceholder')}\n autoComplete=\"new-password\"\n required\n />\n <FormField\n label={t('auth.acceptInvitation.form.confirmLabel')}\n name=\"password-confirmation\"\n type=\"password\"\n value={passwordConfirmation}\n onChange={(event) => {\n setPasswordConfirmation(event.target.value);\n setErrorMessage(null);\n if (status === 'error') {\n setStatus('idle');\n }\n }}\n placeholder={t('auth.acceptInvitation.form.confirmPlaceholder')}\n autoComplete=\"new-password\"\n required\n />\n <Button type=\"submit\" isLoading={isSubmitting}>\n {status === 'pending'\n ? t('auth.acceptInvitation.status.workingButton')\n : t('auth.acceptInvitation.form.submit')}\n </Button>\n <Button type=\"button\" variant=\"secondary\" onClick={onBackToLogin}>\n {t('auth.acceptInvitation.actions.backToLogin')}\n </Button>\n </form>\n </AuthPanel>\n );\n }\n\n return (\n <AuthLayout title={t('auth.acceptInvitation.title')}>{content}</AuthLayout>\n );\n};\n"],"mappings":";;;;;;;AA0BA,IAAa,KAA0B,EACrC,SACA,sBACA,kBACA,eACwB;CACxB,IAAM,EAAE,SAAM,GAAsB,EAC9B,EAAE,wBAAqB,GACvB,CAAC,GAAQ,KAAa,EAA0B,OAAO,EACvD,CAAC,GAAU,KAAe,EAAS,GAAG,EACtC,CAAC,GAAsB,KAA2B,EAAS,GAAG,EAC9D,CAAC,GAAc,KAAmB,EAAS,GAAM,EACjD,CAAC,GAAc,KAAmB,EAAwB,KAAK,EAE/D,IAAgB,QAChB,MAGA,OAAO,SAAW,MACb,KAEM,IAAI,gBAAgB,OAAO,SAAS,OAAO,CAC5C,IAAI,QAAQ,IAAI,KAC7B,CAAC,EAAM,CAAC,EAEL,IAAe,GAClB,MAAsC;AAErC,MADA,EAAM,gBAAgB,EAClB,MAAkB,IAAI;AAExB,GADA,EAAgB,EAAE,4CAA4C,CAAC,EAC/D,EAAU,QAAQ;AAClB;;AAGF,MAAI,MAAa,GAAsB;AAErC,GADA,EAAgB,EAAE,gDAAgD,CAAC,EACnE,EAAU,QAAQ;AAClB;;AAQG,EALL,EAAU,UAAU,EACpB,EAAgB,KAAK,EACrB,EAAgB,GAAK,EAGhB,EAAiB;GACpB,OAAO;GACP;GACA;GACD,CAAC,CACC,MAAM,MAAW;AAChB,OAAI,MAAW,gBAAgB;AAC7B,MAAU,MAAM;AAChB;;AAGF,GADA,EAAU,YAAY,EACtB,GAAmB;IACnB,CACD,OAAO,MAAU;AAEhB,GADA,EAAU,QAAQ,EACd,aAAiB,QACnB,EAAgB,EAAM,QAAQ,GAE9B,EADS,OAAO,KAAU,WACV,IAEA,EAAE,uCAAuC,CAAC;IAE5D,CACD,cAAc;AACb,KAAgB,GAAM;IACtB;IAEN;EACE;EACA;EACA;EACA;EACA;EACA;EACD,CACF,EAEK,IAAmB,QAAkB;AAEzC,EADA,EAAU,YAAY,EACtB,GAAmB;IAClB,CAAC,EAAkB,CAAC,EAEjB,IAAc,QAAkB;AAGpC,EAFA,EAAU,OAAO,EACjB,EAAgB,KAAK,EACrB,EAAgB,GAAM;IACrB,EAAE,CAAC;AAEN,KAAI,MAAW,MACb,QACE,kBAAC,GAAD;EACE,OAAO,EAAE,iCAAiC;EAC1C,UAAU,EAAE,oCAAoC;YAEhD,kBAAC,GAAD;GACQ;GACN,WAAW;GACX,cAAc;AAEZ,IADA,EAAK,OAAO,EACZ,GAAa;;GAEf,CAAA;EACS,CAAA;CAIjB,IAAI;AA2DJ,QA1DA,AASE,IATE,MAAW,cAEX,kBAAC,OAAD;EAAK,WAAW;YACd,kBAAC,KAAD;GAAG,WAAW;aACX,EAAE,uCAAuC;GACxC,CAAA;EACA,CAAA,GAIN,kBAAC,GAAD;EAAW,aAAa,EAAE,iCAAiC;YACzD,kBAAC,QAAD;GAAM,WAAW;GAAoB,UAAU;GAAc,YAAA;aAA7D;IACG,KAAgB,OAA+C,OAAxC,kBAAC,GAAD,EAAA,UAAY,GAAyB,CAAA;IAC7D,kBAAC,GAAD;KACE,OAAO,EAAE,2CAA2C;KACpD,MAAK;KACL,MAAK;KACL,OAAO;KACP,WAAW,MAAU;AAGnB,MAFA,EAAY,EAAM,OAAO,MAAM,EAC/B,EAAgB,KAAK,EACjB,MAAW,WACb,EAAU,OAAO;;KAGrB,aAAa,EAAE,iDAAiD;KAChE,cAAa;KACb,UAAA;KACA,CAAA;IACF,kBAAC,GAAD;KACE,OAAO,EAAE,0CAA0C;KACnD,MAAK;KACL,MAAK;KACL,OAAO;KACP,WAAW,MAAU;AAGnB,MAFA,EAAwB,EAAM,OAAO,MAAM,EAC3C,EAAgB,KAAK,EACjB,MAAW,WACb,EAAU,OAAO;;KAGrB,aAAa,EAAE,gDAAgD;KAC/D,cAAa;KACb,UAAA;KACA,CAAA;IACF,kBAAC,GAAD;KAAQ,MAAK;KAAS,WAAW;eAE3B,EADH,MAAW,YACN,+CACA,oCAAoC;KACnC,CAAA;IACT,kBAAC,GAAD;KAAQ,MAAK;KAAS,SAAQ;KAAY,SAAS;eAChD,EAAE,4CAA4C;KACxC,CAAA;IACJ;;EACG,CAAA,EAKd,kBAAC,GAAD;EAAY,OAAO,EAAE,8BAA8B;YAAG;EAAqB,CAAA"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { i as e, l as t, n, s as r, u as i } from "./loginPage.css-
|
|
1
|
+
import { i as e, l as t, n, s as r, u as i } from "./loginPage.css-CBJ1Ozm5.js";
|
|
2
2
|
import { jsx as a, jsxs as o } from "react/jsx-runtime";
|
|
3
3
|
//#region src/auth/login/AuthPanel.tsx
|
|
4
4
|
var s = ({ title: s, description: c, children: l, footer: u }) => /* @__PURE__ */ a("div", {
|
|
@@ -25,4 +25,4 @@ var s = ({ title: s, description: c, children: l, footer: u }) => /* @__PURE__ *
|
|
|
25
25
|
//#endregion
|
|
26
26
|
export { s as t };
|
|
27
27
|
|
|
28
|
-
//# sourceMappingURL=AuthPanel-
|
|
28
|
+
//# sourceMappingURL=AuthPanel-DiHejPoq.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AuthPanel-
|
|
1
|
+
{"version":3,"file":"AuthPanel-DiHejPoq.js","names":[],"sources":["../../src/auth/login/AuthPanel.tsx"],"sourcesContent":["/* eslint-disable no-ternary */\nimport { type JSX, type ReactNode } from 'react';\n\nimport * as styles from './loginPage.css.js';\n\ntype Props = {\n title?: string;\n description?: string;\n children: ReactNode;\n footer?: ReactNode;\n};\n\nexport const AuthPanel = ({\n title,\n description,\n children,\n footer,\n}: Props): JSX.Element => {\n return (\n <div className={styles.panel}>\n <div className={styles.block}>\n {title != null ? <h2 className={styles.panelTitle}>{title}</h2> : null}\n {description != null ? (\n <p className={styles.helper}>{description}</p>\n ) : null}\n {children}\n {footer != null ? <div className={styles.footer}>{footer}</div> : null}\n </div>\n </div>\n );\n};\n\nexport default AuthPanel;\n"],"mappings":";;;AAYA,IAAa,KAAa,EACxB,UACA,gBACA,aACA,QAAA,QAGE,kBAAC,OAAD;CAAK,WAAW;WACd,kBAAC,OAAD;EAAK,WAAW;YAAhB;GACG,KAAS,OAAwD,OAAjD,kBAAC,MAAD;IAAI,WAAW;cAAoB;IAAW,CAAA;GAC9D,KAAe,OAEZ,OADF,kBAAC,KAAD;IAAG,WAAW;cAAgB;IAAgB,CAAA;GAE/C;GACA,KAAU,OAAuD,OAAhD,kBAAC,OAAD;IAAK,WAAW;cAAgB;IAAa,CAAA;GAC3D;;CACF,CAAA"}
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import "./environment-BJeJTbIN.js";
|
|
2
2
|
import "./useRelayEnvironment-vQ86aW-n.js";
|
|
3
3
|
import { n as e } from "./BackofficeConfigContext-R0t1owTI.js";
|
|
4
|
-
import "./loginPage.css-
|
|
5
|
-
import "./useAuth-
|
|
6
|
-
import "./AuthPanel-
|
|
7
|
-
import { t } from "./AcceptInvitationScreen-
|
|
4
|
+
import "./loginPage.css-CBJ1Ozm5.js";
|
|
5
|
+
import "./useAuth-CjdysxLB.js";
|
|
6
|
+
import "./AuthPanel-DiHejPoq.js";
|
|
7
|
+
import { t } from "./AcceptInvitationScreen-5-0EtE15.js";
|
|
8
8
|
import "./mutationResult-CcQMY13J.js";
|
|
9
|
-
import { t as n } from "./useBackofficeAuth-
|
|
9
|
+
import { t as n } from "./useBackofficeAuth-BshabGXc.js";
|
|
10
10
|
import { t as r } from "./backofficeAuthPaths-BiJvoI5Q.js";
|
|
11
11
|
import { useCallback as i, useContext as a } from "react";
|
|
12
12
|
import { RoutingContext as o } from "@plumile/router";
|
|
@@ -27,4 +27,4 @@ var c = () => {
|
|
|
27
27
|
//#endregion
|
|
28
28
|
export { c as BackofficeAcceptInvitationPage, c as default };
|
|
29
29
|
|
|
30
|
-
//# sourceMappingURL=BackofficeAcceptInvitationPage-
|
|
30
|
+
//# sourceMappingURL=BackofficeAcceptInvitationPage-FPbn31YK.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BackofficeAcceptInvitationPage-
|
|
1
|
+
{"version":3,"file":"BackofficeAcceptInvitationPage-FPbn31YK.js","names":[],"sources":["../../src/pages/BackofficeAcceptInvitationPage.tsx"],"sourcesContent":["import { useCallback, useContext, type JSX } from 'react';\nimport { RoutingContext } from '@plumile/router';\n\nimport { AcceptInvitationScreen } from '../auth/pages/AcceptInvitationScreen.js';\nimport { useBackofficeAuth } from '../hooks/useBackofficeAuth.js';\nimport { useBackofficeConfig } from '../provider/BackofficeConfigContext.js';\nimport { getBackofficeLoginPath } from '../router/backofficeAuthPaths.js';\n\nexport const BackofficeAcceptInvitationPage = (): JSX.Element => {\n const routerContext = useContext(RoutingContext);\n const { basePath } = useBackofficeConfig();\n const auth = useBackofficeAuth();\n\n const handleSuccessRedirect = useCallback(() => {\n routerContext?.history.push({ pathname: basePath });\n }, [basePath, routerContext?.history]);\n\n const handleBackToLogin = useCallback(() => {\n routerContext?.history.push({ pathname: getBackofficeLoginPath(basePath) });\n }, [basePath, routerContext?.history]);\n\n return (\n <AcceptInvitationScreen\n auth={auth}\n onSuccessRedirect={handleSuccessRedirect}\n onBackToLogin={handleBackToLogin}\n />\n );\n};\n\nexport default BackofficeAcceptInvitationPage;\n"],"mappings":";;;;;;;;;;;;;;AAQA,IAAa,UAAoD;CAC/D,IAAM,IAAgB,EAAW,EAAe,EAC1C,EAAE,gBAAa,GAAqB;AAW1C,QACE,kBAAC,GAAD;EACQ,MAZG,GAAmB;EAa5B,mBAX0B,QAAkB;AAC9C,MAAe,QAAQ,KAAK,EAAE,UAAU,GAAU,CAAC;KAClD,CAAC,GAAU,GAAe,QAAQ,CAAC;EAUlC,eARsB,QAAkB;AAC1C,MAAe,QAAQ,KAAK,EAAE,UAAU,EAAuB,EAAS,EAAE,CAAC;KAC1E,CAAC,GAAU,GAAe,QAAQ,CAAC;EAOlC,CAAA"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { n as e } from "./BackofficeConfigContext-R0t1owTI.js";
|
|
2
2
|
import { n as t, t as n } from "./useBackofficeReactTranslation-WfXU8kCf.js";
|
|
3
|
-
import { n as r, t as i } from "./BackofficeRightPageLayout-
|
|
3
|
+
import { n as r, t as i } from "./BackofficeRightPageLayout-F8ipegrl.js";
|
|
4
4
|
import "./BackofficeTopbarPortalContext-iD7dm4_h.js";
|
|
5
5
|
import { a } from "./useBackofficeLazyValue-Dnii1_dE.js";
|
|
6
6
|
import { t as o } from "./buildBreadcrumbs-CqF9Nh6x.js";
|
|
@@ -11,7 +11,7 @@ import { DataTable as u, DetailPageTemplate as d, InfoTile as f } from "@plumile
|
|
|
11
11
|
import * as p from "react-relay";
|
|
12
12
|
import { jsx as m, jsxs as h } from "react/jsx-runtime";
|
|
13
13
|
//#region src/pages/backofficeDashboardPage.css.ts
|
|
14
|
-
var g = "
|
|
14
|
+
var g = "txvbqb9iy txvbqbbz7 txvbqbaop", _ = "txvbqb9ip txvbqbai7 txvbqbao7", v = "txvbqba7 txvbqbamy txvbqbehy", y = "txvbqb9ip txvbqbajy txvbqbqi7 txvbqb8vg", { useLazyLoadQuery: b } = p, x = (e, t) => e(t), S = (e, t) => {
|
|
15
15
|
switch (e.kind) {
|
|
16
16
|
case "entityCount":
|
|
17
17
|
case "shortcut": return e.label;
|
|
@@ -192,4 +192,4 @@ var g = "txvbqb9ix txvbqbbyo txvbqbaoo", _ = "txvbqb9io txvbqbai6 txvbqbao6", v
|
|
|
192
192
|
//#endregion
|
|
193
193
|
export { O as BackofficeDashboardPage, O as default };
|
|
194
194
|
|
|
195
|
-
//# sourceMappingURL=BackofficeDashboardPage-
|
|
195
|
+
//# sourceMappingURL=BackofficeDashboardPage-C7lIVeA1.js.map
|
package/lib/esm/{BackofficeDashboardPage-B5_YC1ZL.js.map → BackofficeDashboardPage-C7lIVeA1.js.map}
RENAMED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BackofficeDashboardPage-B5_YC1ZL.js","names":[],"sources":["../../src/pages/backofficeDashboardPage.css.ts","../../src/pages/BackofficeDashboardPage.tsx"],"sourcesContent":["import { sprinkles } from '@plumile/ui';\n\nexport const tilesGrid = sprinkles({\n display: 'grid',\n gridTemplateColumns: 'autoFillMinmax320',\n gap: 4,\n});\n\nexport const tileBody = sprinkles({\n display: 'flex',\n flexDirection: 'column',\n gap: 2,\n});\n\nexport const tileCount = sprinkles({\n fontSize: '3xl',\n fontWeight: 'bold',\n lineHeight: 1,\n});\n\nexport const links = sprinkles({\n display: 'flex',\n flexWrap: 'wrap',\n rowGap: 2,\n columnGap: 3,\n});\n","/* eslint-disable no-ternary */\nimport { type JSX, Suspense } from 'react';\nimport { Link } from '@plumile/router';\nimport type {\n BackofficeDashboardConfig,\n BackofficeDashboardWidget,\n I18nLabel,\n} from '@plumile/backoffice-core/types.js';\nimport { DataTable, DetailPageTemplate, InfoTile } from '@plumile/ui';\nimport type { TFunction } from 'i18next';\nimport { useTranslation } from 'react-i18next';\nimport * as ReactRelay from 'react-relay';\nimport type { GraphQLTaggedNode, OperationType } from 'relay-runtime';\n\nimport { BackofficeErrorBoundary } from '../components/backoffice/errors/BackofficeErrorBoundary.js';\nimport { useBackofficeReactTranslation } from '../i18n/useBackofficeReactTranslation.js';\nimport { useBackofficeConfig } from '../provider/BackofficeConfigContext.js';\nimport { useBackofficeDashboardConfig } from '../provider/useBackofficeLazyValue.js';\nimport { buildDataTableColumns } from '../components/backoffice/columns/buildDataTableColumns.js';\nimport { BackofficeRightPageLayout } from '../components/backoffice/layout/breadcrumb/BackofficeRightPageLayout.js';\nimport { buildDashboardBreadcrumb } from '../components/backoffice/layout/breadcrumb/buildBreadcrumbs.js';\n\nimport * as styles from './backofficeDashboardPage.css.js';\n\nconst { useLazyLoadQuery } = ReactRelay;\n\nconst resolveLabel = (label: I18nLabel, tApp: TFunction): string => {\n return label(tApp);\n};\n\nconst getWidgetLabel = (\n widget: BackofficeDashboardWidget,\n config: BackofficeDashboardConfig,\n): I18nLabel => {\n switch (widget.kind) {\n case 'entityCount':\n case 'shortcut':\n return widget.label;\n case 'tablePreview':\n case 'textBlock':\n return widget.title;\n default:\n return config.title;\n }\n};\n\nconst hasWidgetQuery = (\n widget: BackofficeDashboardWidget,\n): widget is BackofficeDashboardWidget & { query: GraphQLTaggedNode } => {\n return 'query' in widget && widget.query != null;\n};\n\ntype WidgetContentProps = {\n widget: BackofficeDashboardWidget;\n globalData: unknown;\n};\n\nconst WidgetContent = ({\n widget,\n globalData,\n}: WidgetContentProps): JSX.Element | null => {\n const { t: tApp } = useTranslation();\n const { t } = useBackofficeReactTranslation();\n const { entities } = useBackofficeConfig();\n\n const resolveData = (data: unknown): unknown => {\n if ('resolve' in widget && widget.resolve != null) {\n return widget.resolve(data);\n }\n return null;\n };\n\n if (widget.kind === 'textBlock') {\n const title = resolveLabel(widget.title, tApp);\n const body = resolveLabel(widget.body, tApp);\n return (\n <InfoTile title={title}>\n <div className={styles.tileBody}>{body}</div>\n </InfoTile>\n );\n }\n\n if (widget.kind === 'shortcut') {\n const entity = entities[widget.entityId];\n if (entity == null) {\n return null;\n }\n const title = resolveLabel(widget.label, tApp);\n if (entity.kind === 'tool') {\n return (\n <InfoTile title={title}>\n <div className={styles.links}>\n <Link to={entity.routes.list}>\n {t('dashboard.actions.openTool')}\n </Link>\n </div>\n </InfoTile>\n );\n }\n return (\n <InfoTile title={title}>\n <div className={styles.links}>\n <Link to={entity.routes.list}>{t('dashboard.actions.openList')}</Link>\n </div>\n </InfoTile>\n );\n }\n\n if (widget.kind === 'tablePreview') {\n const resolved = resolveData(globalData) as {\n columns: readonly unknown[];\n rows: readonly unknown[];\n } | null;\n if (resolved == null) {\n return null;\n }\n const columns = buildDataTableColumns(resolved.columns as never, {\n tApp,\n t,\n resolveEntityHref: (entityId, refId) => {\n const entityConfig = entities[entityId];\n if (entityConfig == null) {\n return null;\n }\n return entityConfig.routes.detail(refId);\n },\n });\n const title = resolveLabel(widget.title, tApp);\n return (\n <InfoTile title={title}>\n <DataTable\n columns={columns}\n rows={resolved.rows}\n getRowId={(row, index) => {\n if (row != null && typeof row === 'object') {\n const record = row as Record<string, unknown>;\n const { id } = record;\n if (typeof id === 'string' && id.trim() !== '') {\n return id;\n }\n }\n return String(index);\n }}\n />\n </InfoTile>\n );\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n if (widget.kind === 'entityCount') {\n const entityManifest = entities[widget.entityId];\n if (entityManifest?.kind !== 'list-detail') {\n return null;\n }\n const resolved = resolveData(globalData) as { count: number | null } | null;\n let countLabel: number | string = t('common.notAvailable');\n if (typeof resolved?.count === 'number') {\n countLabel = resolved.count;\n }\n const title = resolveLabel(widget.label, tApp);\n return (\n <InfoTile title={title}>\n <div className={styles.tileBody}>\n <div className={styles.tileCount}>{countLabel}</div>\n <div className={styles.links}>\n <Link to={entityManifest.routes.list}>\n {t('dashboard.actions.openList')}\n </Link>\n </div>\n </div>\n </InfoTile>\n );\n }\n\n return null;\n};\n\ntype WidgetWithQueryProps = {\n widget: BackofficeDashboardWidget & { query: GraphQLTaggedNode };\n};\n\nconst WidgetWithQuery = ({ widget }: WidgetWithQueryProps): JSX.Element => {\n const data = useLazyLoadQuery<OperationType>(\n widget.query,\n {},\n {\n fetchPolicy: 'store-or-network',\n },\n );\n\n return <WidgetContent widget={widget} globalData={data} />;\n};\n\ntype DashboardContentProps = {\n config: BackofficeDashboardConfig;\n globalData: unknown;\n};\n\nconst DashboardContent = ({\n config,\n globalData,\n}: DashboardContentProps): JSX.Element => {\n const { t: tApp } = useTranslation();\n const { t } = useBackofficeReactTranslation();\n\n const title = resolveLabel(config.title, tApp);\n const subtitle =\n config.subtitle != null ? resolveLabel(config.subtitle, tApp) : undefined;\n\n return (\n <DetailPageTemplate\n header={{\n title,\n subtitle: subtitle ?? t('dashboard.subtitle'),\n }}\n >\n <div className={styles.tilesGrid}>\n {config.widgets.map((widget) => {\n const content = hasWidgetQuery(widget) ? (\n <WidgetWithQuery widget={widget} />\n ) : (\n <WidgetContent widget={widget} globalData={globalData} />\n );\n\n return (\n <BackofficeErrorBoundary\n key={widget.id}\n fallback={() => {\n return (\n <InfoTile\n title={resolveLabel(getWidgetLabel(widget, config), tApp)}\n >\n <div className={styles.tileBody}>\n {t('common.notAvailable')}\n </div>\n </InfoTile>\n );\n }}\n >\n <Suspense\n fallback={\n <InfoTile\n title={resolveLabel(getWidgetLabel(widget, config), tApp)}\n >\n <div className={styles.tileBody}>{t('common.loading')}</div>\n </InfoTile>\n }\n >\n {content}\n </Suspense>\n </BackofficeErrorBoundary>\n );\n })}\n </div>\n </DetailPageTemplate>\n );\n};\n\ntype DashboardWithQueryProps = {\n config: BackofficeDashboardConfig;\n};\n\nconst DashboardWithQuery = ({\n config,\n}: DashboardWithQueryProps): JSX.Element => {\n const data = useLazyLoadQuery<OperationType>(\n config.query as never,\n {},\n { fetchPolicy: 'store-or-network' },\n );\n\n return <DashboardContent config={config} globalData={data} />;\n};\n\nexport const BackofficeDashboardPage = (): JSX.Element => {\n const { t: tApp } = useTranslation();\n const { t } = useBackofficeReactTranslation();\n const { entities } = useBackofficeConfig();\n const dashboard = useBackofficeDashboardConfig();\n const breadcrumb = buildDashboardBreadcrumb(t);\n\n if (dashboard == null) {\n const items = Object.values(entities)\n .filter((config) => {\n return config.kind === 'list-detail' && config.hasList;\n })\n .map((config) => {\n return {\n config,\n label: resolveLabel(config.label, tApp),\n };\n })\n .sort((left, right) => {\n return left.label.localeCompare(right.label);\n });\n\n return (\n <BackofficeRightPageLayout breadcrumb={breadcrumb}>\n <DetailPageTemplate\n header={{\n title: t('dashboard.title'),\n subtitle: t('dashboard.subtitle'),\n }}\n >\n <div className={styles.tilesGrid}>\n {items.map(({ config, label }) => {\n return (\n <InfoTile key={config.id} title={label}>\n <div className={styles.tileBody}>\n <div className={styles.tileCount}>\n {t('common.notAvailable')}\n </div>\n <div className={styles.links}>\n <Link to={config.routes.list}>\n {t('dashboard.actions.openList')}\n </Link>\n </div>\n </div>\n </InfoTile>\n );\n })}\n </div>\n </DetailPageTemplate>\n </BackofficeRightPageLayout>\n );\n }\n\n if (dashboard.query != null) {\n return (\n <BackofficeRightPageLayout breadcrumb={breadcrumb}>\n <DashboardWithQuery config={dashboard} />\n </BackofficeRightPageLayout>\n );\n }\n\n return (\n <BackofficeRightPageLayout breadcrumb={breadcrumb}>\n <DashboardContent config={dashboard} globalData={null} />\n </BackofficeRightPageLayout>\n );\n};\n\nexport default BackofficeDashboardPage;\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"BackofficeDashboardPage-C7lIVeA1.js","names":[],"sources":["../../src/pages/backofficeDashboardPage.css.ts","../../src/pages/BackofficeDashboardPage.tsx"],"sourcesContent":["import { sprinkles } from '@plumile/ui';\n\nexport const tilesGrid = sprinkles({\n display: 'grid',\n gridTemplateColumns: 'autoFillMinmax320',\n gap: 4,\n});\n\nexport const tileBody = sprinkles({\n display: 'flex',\n flexDirection: 'column',\n gap: 2,\n});\n\nexport const tileCount = sprinkles({\n fontSize: '3xl',\n fontWeight: 'bold',\n lineHeight: 1,\n});\n\nexport const links = sprinkles({\n display: 'flex',\n flexWrap: 'wrap',\n rowGap: 2,\n columnGap: 3,\n});\n","/* eslint-disable no-ternary */\nimport { type JSX, Suspense } from 'react';\nimport { Link } from '@plumile/router';\nimport type {\n BackofficeDashboardConfig,\n BackofficeDashboardWidget,\n I18nLabel,\n} from '@plumile/backoffice-core/types.js';\nimport { DataTable, DetailPageTemplate, InfoTile } from '@plumile/ui';\nimport type { TFunction } from 'i18next';\nimport { useTranslation } from 'react-i18next';\nimport * as ReactRelay from 'react-relay';\nimport type { GraphQLTaggedNode, OperationType } from 'relay-runtime';\n\nimport { BackofficeErrorBoundary } from '../components/backoffice/errors/BackofficeErrorBoundary.js';\nimport { useBackofficeReactTranslation } from '../i18n/useBackofficeReactTranslation.js';\nimport { useBackofficeConfig } from '../provider/BackofficeConfigContext.js';\nimport { useBackofficeDashboardConfig } from '../provider/useBackofficeLazyValue.js';\nimport { buildDataTableColumns } from '../components/backoffice/columns/buildDataTableColumns.js';\nimport { BackofficeRightPageLayout } from '../components/backoffice/layout/breadcrumb/BackofficeRightPageLayout.js';\nimport { buildDashboardBreadcrumb } from '../components/backoffice/layout/breadcrumb/buildBreadcrumbs.js';\n\nimport * as styles from './backofficeDashboardPage.css.js';\n\nconst { useLazyLoadQuery } = ReactRelay;\n\nconst resolveLabel = (label: I18nLabel, tApp: TFunction): string => {\n return label(tApp);\n};\n\nconst getWidgetLabel = (\n widget: BackofficeDashboardWidget,\n config: BackofficeDashboardConfig,\n): I18nLabel => {\n switch (widget.kind) {\n case 'entityCount':\n case 'shortcut':\n return widget.label;\n case 'tablePreview':\n case 'textBlock':\n return widget.title;\n default:\n return config.title;\n }\n};\n\nconst hasWidgetQuery = (\n widget: BackofficeDashboardWidget,\n): widget is BackofficeDashboardWidget & { query: GraphQLTaggedNode } => {\n return 'query' in widget && widget.query != null;\n};\n\ntype WidgetContentProps = {\n widget: BackofficeDashboardWidget;\n globalData: unknown;\n};\n\nconst WidgetContent = ({\n widget,\n globalData,\n}: WidgetContentProps): JSX.Element | null => {\n const { t: tApp } = useTranslation();\n const { t } = useBackofficeReactTranslation();\n const { entities } = useBackofficeConfig();\n\n const resolveData = (data: unknown): unknown => {\n if ('resolve' in widget && widget.resolve != null) {\n return widget.resolve(data);\n }\n return null;\n };\n\n if (widget.kind === 'textBlock') {\n const title = resolveLabel(widget.title, tApp);\n const body = resolveLabel(widget.body, tApp);\n return (\n <InfoTile title={title}>\n <div className={styles.tileBody}>{body}</div>\n </InfoTile>\n );\n }\n\n if (widget.kind === 'shortcut') {\n const entity = entities[widget.entityId];\n if (entity == null) {\n return null;\n }\n const title = resolveLabel(widget.label, tApp);\n if (entity.kind === 'tool') {\n return (\n <InfoTile title={title}>\n <div className={styles.links}>\n <Link to={entity.routes.list}>\n {t('dashboard.actions.openTool')}\n </Link>\n </div>\n </InfoTile>\n );\n }\n return (\n <InfoTile title={title}>\n <div className={styles.links}>\n <Link to={entity.routes.list}>{t('dashboard.actions.openList')}</Link>\n </div>\n </InfoTile>\n );\n }\n\n if (widget.kind === 'tablePreview') {\n const resolved = resolveData(globalData) as {\n columns: readonly unknown[];\n rows: readonly unknown[];\n } | null;\n if (resolved == null) {\n return null;\n }\n const columns = buildDataTableColumns(resolved.columns as never, {\n tApp,\n t,\n resolveEntityHref: (entityId, refId) => {\n const entityConfig = entities[entityId];\n if (entityConfig == null) {\n return null;\n }\n return entityConfig.routes.detail(refId);\n },\n });\n const title = resolveLabel(widget.title, tApp);\n return (\n <InfoTile title={title}>\n <DataTable\n columns={columns}\n rows={resolved.rows}\n getRowId={(row, index) => {\n if (row != null && typeof row === 'object') {\n const record = row as Record<string, unknown>;\n const { id } = record;\n if (typeof id === 'string' && id.trim() !== '') {\n return id;\n }\n }\n return String(index);\n }}\n />\n </InfoTile>\n );\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n if (widget.kind === 'entityCount') {\n const entityManifest = entities[widget.entityId];\n if (entityManifest?.kind !== 'list-detail') {\n return null;\n }\n const resolved = resolveData(globalData) as { count: number | null } | null;\n let countLabel: number | string = t('common.notAvailable');\n if (typeof resolved?.count === 'number') {\n countLabel = resolved.count;\n }\n const title = resolveLabel(widget.label, tApp);\n return (\n <InfoTile title={title}>\n <div className={styles.tileBody}>\n <div className={styles.tileCount}>{countLabel}</div>\n <div className={styles.links}>\n <Link to={entityManifest.routes.list}>\n {t('dashboard.actions.openList')}\n </Link>\n </div>\n </div>\n </InfoTile>\n );\n }\n\n return null;\n};\n\ntype WidgetWithQueryProps = {\n widget: BackofficeDashboardWidget & { query: GraphQLTaggedNode };\n};\n\nconst WidgetWithQuery = ({ widget }: WidgetWithQueryProps): JSX.Element => {\n const data = useLazyLoadQuery<OperationType>(\n widget.query,\n {},\n {\n fetchPolicy: 'store-or-network',\n },\n );\n\n return <WidgetContent widget={widget} globalData={data} />;\n};\n\ntype DashboardContentProps = {\n config: BackofficeDashboardConfig;\n globalData: unknown;\n};\n\nconst DashboardContent = ({\n config,\n globalData,\n}: DashboardContentProps): JSX.Element => {\n const { t: tApp } = useTranslation();\n const { t } = useBackofficeReactTranslation();\n\n const title = resolveLabel(config.title, tApp);\n const subtitle =\n config.subtitle != null ? resolveLabel(config.subtitle, tApp) : undefined;\n\n return (\n <DetailPageTemplate\n header={{\n title,\n subtitle: subtitle ?? t('dashboard.subtitle'),\n }}\n >\n <div className={styles.tilesGrid}>\n {config.widgets.map((widget) => {\n const content = hasWidgetQuery(widget) ? (\n <WidgetWithQuery widget={widget} />\n ) : (\n <WidgetContent widget={widget} globalData={globalData} />\n );\n\n return (\n <BackofficeErrorBoundary\n key={widget.id}\n fallback={() => {\n return (\n <InfoTile\n title={resolveLabel(getWidgetLabel(widget, config), tApp)}\n >\n <div className={styles.tileBody}>\n {t('common.notAvailable')}\n </div>\n </InfoTile>\n );\n }}\n >\n <Suspense\n fallback={\n <InfoTile\n title={resolveLabel(getWidgetLabel(widget, config), tApp)}\n >\n <div className={styles.tileBody}>{t('common.loading')}</div>\n </InfoTile>\n }\n >\n {content}\n </Suspense>\n </BackofficeErrorBoundary>\n );\n })}\n </div>\n </DetailPageTemplate>\n );\n};\n\ntype DashboardWithQueryProps = {\n config: BackofficeDashboardConfig;\n};\n\nconst DashboardWithQuery = ({\n config,\n}: DashboardWithQueryProps): JSX.Element => {\n const data = useLazyLoadQuery<OperationType>(\n config.query as never,\n {},\n { fetchPolicy: 'store-or-network' },\n );\n\n return <DashboardContent config={config} globalData={data} />;\n};\n\nexport const BackofficeDashboardPage = (): JSX.Element => {\n const { t: tApp } = useTranslation();\n const { t } = useBackofficeReactTranslation();\n const { entities } = useBackofficeConfig();\n const dashboard = useBackofficeDashboardConfig();\n const breadcrumb = buildDashboardBreadcrumb(t);\n\n if (dashboard == null) {\n const items = Object.values(entities)\n .filter((config) => {\n return config.kind === 'list-detail' && config.hasList;\n })\n .map((config) => {\n return {\n config,\n label: resolveLabel(config.label, tApp),\n };\n })\n .sort((left, right) => {\n return left.label.localeCompare(right.label);\n });\n\n return (\n <BackofficeRightPageLayout breadcrumb={breadcrumb}>\n <DetailPageTemplate\n header={{\n title: t('dashboard.title'),\n subtitle: t('dashboard.subtitle'),\n }}\n >\n <div className={styles.tilesGrid}>\n {items.map(({ config, label }) => {\n return (\n <InfoTile key={config.id} title={label}>\n <div className={styles.tileBody}>\n <div className={styles.tileCount}>\n {t('common.notAvailable')}\n </div>\n <div className={styles.links}>\n <Link to={config.routes.list}>\n {t('dashboard.actions.openList')}\n </Link>\n </div>\n </div>\n </InfoTile>\n );\n })}\n </div>\n </DetailPageTemplate>\n </BackofficeRightPageLayout>\n );\n }\n\n if (dashboard.query != null) {\n return (\n <BackofficeRightPageLayout breadcrumb={breadcrumb}>\n <DashboardWithQuery config={dashboard} />\n </BackofficeRightPageLayout>\n );\n }\n\n return (\n <BackofficeRightPageLayout breadcrumb={breadcrumb}>\n <DashboardContent config={dashboard} globalData={null} />\n </BackofficeRightPageLayout>\n );\n};\n\nexport default BackofficeDashboardPage;\n"],"mappings":"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"}
|
|
@@ -3,7 +3,7 @@ import { useTranslation as t } from "react-i18next";
|
|
|
3
3
|
import { CopyableText as n, LazyMarkdownRenderer as r, Tag as i, cx as a } from "@plumile/ui";
|
|
4
4
|
import { jsx as o, jsxs as s } from "react/jsx-runtime";
|
|
5
5
|
//#region src/components/backoffice/detail/backofficeDetailBadgeRow.css.ts
|
|
6
|
-
var c = "
|
|
6
|
+
var c = "txvbqb9ip txvbqbajy txvbqbao7 txvbqbcp", l = ({ items: e }) => {
|
|
7
7
|
let { t: n } = t();
|
|
8
8
|
return /* @__PURE__ */ o("div", {
|
|
9
9
|
className: c,
|
|
@@ -15,7 +15,7 @@ var c = "txvbqb9io txvbqbajx txvbqbao6 txvbqbco", l = ({ items: e }) => {
|
|
|
15
15
|
}, e.id);
|
|
16
16
|
})
|
|
17
17
|
});
|
|
18
|
-
}, u = "
|
|
18
|
+
}, u = "txvbqb9ip txvbqbai7 txvbqbany txvbqbk5y", d = "txvbqb8p txvbqb66 txvbqbefp txvbqbva1", f = "txvbqb8y txvbqbv9z txvbqbuu7", p = "txvbqbbg7", m = {
|
|
19
19
|
xs: "_1vn15b70",
|
|
20
20
|
s: "_1vn15b71",
|
|
21
21
|
m: "_1vn15b72",
|
|
@@ -42,7 +42,7 @@ var c = "txvbqb9io txvbqbajx txvbqbao6 txvbqbco", l = ({ items: e }) => {
|
|
|
42
42
|
children: g
|
|
43
43
|
})]
|
|
44
44
|
});
|
|
45
|
-
}, g = "
|
|
45
|
+
}, g = "txvbqb9ip txvbqbai7 txvbqbaop txvbqblby txvbqb1rg txvbqbv41 txvbqb1cp txvbqb1qg txvbqbwp txvbqb8qy", _ = "txvbqb9ip txvbqbai7 txvbqbany", v = "txvbqb97 txvbqbamp txvbqbv9z", y = "txvbqb8y txvbqbva1", b = "txvbqb9iy txvbqbaop txvbqbc0y", x = ({ title: e, description: t, items: n, children: r }) => {
|
|
46
46
|
let i = null;
|
|
47
47
|
t != null && t !== "" && (i = /* @__PURE__ */ o("p", {
|
|
48
48
|
className: y,
|
|
@@ -91,4 +91,4 @@ var C = ({ title: t, content: n, format: i = "markdown", description: a }) => {
|
|
|
91
91
|
//#endregion
|
|
92
92
|
export { l as a, h as i, S as n, x as r, C as t };
|
|
93
93
|
|
|
94
|
-
//# sourceMappingURL=BackofficeDetailPayload-
|
|
94
|
+
//# sourceMappingURL=BackofficeDetailPayload-iVx66o_6.js.map
|
package/lib/esm/{BackofficeDetailPayload-CbsZKnw6.js.map → BackofficeDetailPayload-iVx66o_6.js.map}
RENAMED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BackofficeDetailPayload-CbsZKnw6.js","names":[],"sources":["../../src/components/backoffice/detail/backofficeDetailBadgeRow.css.ts","../../src/components/backoffice/detail/BackofficeDetailBadgeRow.tsx","../../src/components/backoffice/detail/backofficeDetailField.css.ts","../../src/components/backoffice/detail/BackofficeDetailField.tsx","../../src/components/backoffice/detail/backofficeDetailSection.css.ts","../../src/components/backoffice/detail/BackofficeDetailSection.tsx","../../src/components/backoffice/detail/detailPayloadUtils.ts","../../src/components/backoffice/detail/BackofficeDetailPayload.tsx"],"sourcesContent":["import { sprinkles } from '@plumile/ui';\n\nexport const row = sprinkles({\n display: 'flex',\n flexWrap: 'wrap',\n gap: 2,\n alignItems: 'center',\n});\n","/* eslint-disable no-ternary */\nimport { type JSX } from 'react';\nimport { useTranslation } from 'react-i18next';\n\nimport type { BackofficeBadgeItem } from '@plumile/backoffice-core/types.js';\nimport { Tag } from '@plumile/ui';\n\nimport * as styles from './backofficeDetailBadgeRow.css.js';\n\nexport type BackofficeDetailBadgeRowProps = {\n items: readonly BackofficeBadgeItem[];\n};\n\nexport const BackofficeDetailBadgeRow = ({\n items,\n}: BackofficeDetailBadgeRowProps): JSX.Element => {\n const { t } = useTranslation();\n return (\n <div className={styles.row}>\n {items.map((item) => {\n const label =\n typeof item.label === 'function' ? item.label(t) : item.label;\n return (\n <Tag key={item.id} tone={item.tone ?? 'neutral'}>\n {label}\n </Tag>\n );\n })}\n </div>\n );\n};\n\nexport default BackofficeDetailBadgeRow;\n","import { style } from '@vanilla-extract/css';\nimport { sprinkles } from '@plumile/ui';\n\nexport const field = sprinkles({\n display: 'flex',\n flexDirection: 'column',\n gap: 1,\n minWidth: 0,\n});\n\nexport const label = sprinkles({\n fontSize: 'xs',\n textTransform: 'uppercase',\n letterSpacing: 'capsTight',\n color: 'textSecondary',\n});\n\nexport const value = sprinkles({\n fontSize: 'sm',\n color: 'text',\n wordBreak: 'break-word',\n});\n\nexport const fullWidth = sprinkles({\n gridColumn: 'span-full',\n});\n\nexport const size = {\n xs: style({ maxWidth: '10ch' }),\n s: style({ maxWidth: '18ch' }),\n m: style({ maxWidth: '28ch' }),\n l: style({ maxWidth: '44ch' }),\n xl: style({ maxWidth: '64ch' }),\n fluid: style({ maxWidth: '100%' }),\n};\n","import { type JSX, type ReactNode } from 'react';\nimport type { BackofficeFieldSize } from '@plumile/backoffice-core/types.js';\n\nimport { CopyableText, cx } from '@plumile/ui';\n\nimport { useBackofficeReactTranslation } from '../../../i18n/useBackofficeReactTranslation.js';\n\nimport * as styles from './backofficeDetailField.css.js';\n\nexport type BackofficeDetailFieldProps = {\n id: string;\n label: string;\n size: BackofficeFieldSize;\n value: ReactNode | null | undefined;\n copyValue?: string;\n fullWidth?: boolean;\n};\n\nexport const BackofficeDetailField = ({\n label,\n size,\n value,\n copyValue,\n fullWidth = false,\n}: BackofficeDetailFieldProps): JSX.Element => {\n const { t } = useBackofficeReactTranslation();\n let resolvedValue: ReactNode = value;\n if (\n resolvedValue == null ||\n (typeof resolvedValue === 'string' && resolvedValue.trim() === '')\n ) {\n resolvedValue = t('common.notAvailable');\n }\n\n if (copyValue != null && copyValue !== '') {\n resolvedValue = (\n <CopyableText\n value={copyValue}\n copyValue={copyValue}\n truncate={false}\n copyLabel={t('common.actions.copy')}\n copiedLabel={t('common.actions.copied')}\n />\n );\n }\n\n const fieldClassNames = [styles.field, styles.size[size]];\n if (fullWidth) {\n fieldClassNames.push(styles.fullWidth);\n }\n\n return (\n <div className={cx(...fieldClassNames)}>\n <span className={styles.label}>{label}</span>\n <div className={styles.value}>{resolvedValue}</div>\n </div>\n );\n};\n\nexport default BackofficeDetailField;\n","import { sprinkles } from '@plumile/ui';\n\nexport const section = sprinkles({\n display: 'flex',\n flexDirection: 'column',\n gap: 4,\n padding: 6,\n borderRadius: 'md',\n backgroundColor: 'surface',\n borderWidth: 'default',\n borderStyle: 'solid',\n borderColor: 'borderSubtle',\n boxShadow: 'inkSoft',\n});\n\nexport const header = sprinkles({\n display: 'flex',\n flexDirection: 'column',\n gap: 1,\n});\n\nexport const title = sprinkles({\n fontSize: 'base',\n fontWeight: 'semibold',\n color: 'text',\n});\n\nexport const description = sprinkles({\n fontSize: 'sm',\n color: 'textSecondary',\n});\n\nexport const grid = sprinkles({\n display: 'grid',\n gap: 4,\n gridTemplateColumns: 'autoFitMinmax220',\n});\n","import { type JSX, type ReactNode } from 'react';\n\nimport {\n BackofficeDetailField,\n type BackofficeDetailFieldProps,\n} from './BackofficeDetailField.js';\nimport * as styles from './backofficeDetailSection.css.js';\n\nexport type BackofficeDetailSectionProps = {\n title: string;\n description?: string;\n items?: readonly BackofficeDetailFieldProps[];\n children?: ReactNode;\n};\n\nexport const BackofficeDetailSection = ({\n title,\n description,\n items,\n children,\n}: BackofficeDetailSectionProps): JSX.Element => {\n let descriptionNode: JSX.Element | null = null;\n if (description != null && description !== '') {\n descriptionNode = <p className={styles.description}>{description}</p>;\n }\n\n let itemsNode: JSX.Element | null = null;\n if (items != null && items.length > 0) {\n itemsNode = (\n <div className={styles.grid}>\n {items.map((item) => {\n return <BackofficeDetailField key={item.id} {...item} />;\n })}\n </div>\n );\n }\n\n return (\n <section className={styles.section}>\n <header className={styles.header}>\n <h3 className={styles.title}>{title}</h3>\n {descriptionNode}\n </header>\n {itemsNode}\n {children}\n </section>\n );\n};\n\nexport default BackofficeDetailSection;\n","/**\n * Formats a JSON payload into a fenced Markdown code block.\n */\nexport function formatJsonPayload(value: unknown): string {\n if (value == null) {\n return '';\n }\n try {\n return `\\`\\`\\`json\\n${JSON.stringify(value, null, 2)}\\n\\`\\`\\``;\n } catch {\n let fallback = '[unserializable]';\n if (typeof value === 'string') {\n fallback = value;\n } else if (typeof value === 'number' || typeof value === 'boolean') {\n fallback = String(value);\n }\n return `\\`\\`\\`\\n${fallback}\\n\\`\\`\\``;\n }\n}\n\n/**\n * Formats a list of strings as a Markdown bullet list.\n */\nexport function formatListAsMarkdown(items: readonly string[]): string {\n if (items.length === 0) {\n return '';\n }\n return items\n .map((item) => {\n return `- ${item}`;\n })\n .join('\\n');\n}\n","import { type JSX } from 'react';\n\nimport { LazyMarkdownRenderer } from '@plumile/ui';\n\nimport { useBackofficeReactTranslation } from '../../../i18n/useBackofficeReactTranslation.js';\nimport { BackofficeDetailSection } from './BackofficeDetailSection.js';\nimport { formatJsonPayload } from './detailPayloadUtils.js';\n\nexport type BackofficeDetailPayloadProps = {\n title: string;\n content: unknown;\n format?: 'markdown' | 'json' | 'text';\n description?: string;\n};\n\nexport const BackofficeDetailPayload = ({\n title,\n content,\n format = 'markdown',\n description,\n}: BackofficeDetailPayloadProps): JSX.Element => {\n const { t } = useBackofficeReactTranslation();\n let resolved = '';\n if (format === 'json') {\n resolved = formatJsonPayload(content);\n } else if (content != null) {\n if (typeof content === 'string') {\n resolved = content;\n } else if (typeof content === 'number' || typeof content === 'boolean') {\n resolved = String(content);\n } else {\n resolved = formatJsonPayload(content);\n }\n }\n\n if (resolved.trim() === '') {\n resolved = t('common.notAvailable');\n }\n\n return (\n <BackofficeDetailSection title={title} description={description}>\n <LazyMarkdownRenderer content={resolved} />\n </BackofficeDetailSection>\n );\n};\n\nexport default BackofficeDetailPayload;\n"],"mappings":";;;;;kDCaa,KAA4B,EACvC,eACgD;CAChD,IAAM,EAAE,SAAM,GAAgB;AAC9B,QACE,kBAAC,OAAD;EAAK,WAAW;YACb,EAAM,KAAK,MAAS;GACnB,IAAM,IACJ,OAAO,EAAK,SAAU,aAAa,EAAK,MAAM,EAAE,GAAG,EAAK;AAC1D,UACE,kBAAC,GAAD;IAAmB,MAAM,EAAK,QAAQ;cACnC;IACG,EAFI,EAAK,GAET;IAER;EACE,CAAA;;;;;;;;GEVG,KAAyB,EACpC,OAAA,GACA,MAAA,GACA,OAAA,GACA,cACA,WAAA,IAAY,SACiC;CAC7C,IAAM,EAAE,SAAM,GAA+B,EACzC,IAA2B;AAQ/B,EANE,KAAiB,QAChB,OAAO,KAAkB,YAAY,EAAc,MAAM,KAAK,QAE/D,IAAgB,EAAE,sBAAsB,GAGtC,KAAa,QAAQ,MAAc,OACrC,IACE,kBAAC,GAAD;EACE,OAAO;EACI;EACX,UAAU;EACV,WAAW,EAAE,sBAAsB;EACnC,aAAa,EAAE,wBAAwB;EACvC,CAAA;CAIN,IAAM,IAAkB,CAAC,GAAc,EAAY,GAAM;AAKzD,QAJI,KACF,EAAgB,KAAK,EAAiB,EAItC,kBAAC,OAAD;EAAK,WAAW,EAAG,GAAG,EAAgB;YAAtC,CACE,kBAAC,QAAD;GAAM,WAAW;aAAe;GAAa,CAAA,EAC7C,kBAAC,OAAD;GAAK,WAAW;aAAe;GAAoB,CAAA,CAC/C;;qPExCG,KAA2B,EACtC,OAAA,GACA,aAAA,GACA,UACA,kBAC+C;CAC/C,IAAI,IAAsC;AAC1C,CAAI,KAAe,QAAQ,MAAgB,OACzC,IAAkB,kBAAC,KAAD;EAAG,WAAW;YAAqB;EAAgB,CAAA;CAGvE,IAAI,IAAgC;AAWpC,QAVI,KAAS,QAAQ,EAAM,SAAS,MAClC,IACE,kBAAC,OAAD;EAAK,WAAW;YACb,EAAM,KAAK,MACH,kBAAC,GAAD,EAAqC,GAAI,GAAQ,EAArB,EAAK,GAAgB,CACxD;EACE,CAAA,GAKR,kBAAC,WAAD;EAAS,WAAW;YAApB;GACE,kBAAC,UAAD;IAAQ,WAAW;cAAnB,CACE,kBAAC,MAAD;KAAI,WAAW;eAAe;KAAW,CAAA,EACxC,EACM;;GACR;GACA;GACO;;;;;AC1Cd,SAAgB,EAAkB,GAAwB;AACxD,KAAI,KAAS,KACX,QAAO;AAET,KAAI;AACF,SAAO,eAAe,KAAK,UAAU,GAAO,MAAM,EAAE,CAAC;SAC/C;EACN,IAAI,IAAW;AAMf,SALI,OAAO,KAAU,WACnB,IAAW,KACF,OAAO,KAAU,YAAY,OAAO,KAAU,eACvD,IAAW,OAAO,EAAM,GAEnB,WAAW,EAAS;;;;;ACD/B,IAAa,KAA2B,EACtC,UACA,YACA,YAAS,YACT,qBAC+C;CAC/C,IAAM,EAAE,SAAM,GAA+B,EACzC,IAAW;AAiBf,QAhBI,MAAW,SACb,IAAW,EAAkB,EAAQ,GAC5B,KAAW,SACpB,AAKE,IALE,OAAO,KAAY,WACV,IACF,OAAO,KAAY,YAAY,OAAO,KAAY,YAChD,OAAO,EAAQ,GAEf,EAAkB,EAAQ,GAIrC,EAAS,MAAM,KAAK,OACtB,IAAW,EAAE,sBAAsB,GAInC,kBAAC,GAAD;EAAgC;EAAoB;YAClD,kBAAC,GAAD,EAAsB,SAAS,GAAY,CAAA;EACnB,CAAA"}
|
|
1
|
+
{"version":3,"file":"BackofficeDetailPayload-iVx66o_6.js","names":[],"sources":["../../src/components/backoffice/detail/backofficeDetailBadgeRow.css.ts","../../src/components/backoffice/detail/BackofficeDetailBadgeRow.tsx","../../src/components/backoffice/detail/backofficeDetailField.css.ts","../../src/components/backoffice/detail/BackofficeDetailField.tsx","../../src/components/backoffice/detail/backofficeDetailSection.css.ts","../../src/components/backoffice/detail/BackofficeDetailSection.tsx","../../src/components/backoffice/detail/detailPayloadUtils.ts","../../src/components/backoffice/detail/BackofficeDetailPayload.tsx"],"sourcesContent":["import { sprinkles } from '@plumile/ui';\n\nexport const row = sprinkles({\n display: 'flex',\n flexWrap: 'wrap',\n gap: 2,\n alignItems: 'center',\n});\n","/* eslint-disable no-ternary */\nimport { type JSX } from 'react';\nimport { useTranslation } from 'react-i18next';\n\nimport type { BackofficeBadgeItem } from '@plumile/backoffice-core/types.js';\nimport { Tag } from '@plumile/ui';\n\nimport * as styles from './backofficeDetailBadgeRow.css.js';\n\nexport type BackofficeDetailBadgeRowProps = {\n items: readonly BackofficeBadgeItem[];\n};\n\nexport const BackofficeDetailBadgeRow = ({\n items,\n}: BackofficeDetailBadgeRowProps): JSX.Element => {\n const { t } = useTranslation();\n return (\n <div className={styles.row}>\n {items.map((item) => {\n const label =\n typeof item.label === 'function' ? item.label(t) : item.label;\n return (\n <Tag key={item.id} tone={item.tone ?? 'neutral'}>\n {label}\n </Tag>\n );\n })}\n </div>\n );\n};\n\nexport default BackofficeDetailBadgeRow;\n","import { style } from '@vanilla-extract/css';\nimport { sprinkles } from '@plumile/ui';\n\nexport const field = sprinkles({\n display: 'flex',\n flexDirection: 'column',\n gap: 1,\n minWidth: 0,\n});\n\nexport const label = sprinkles({\n fontSize: 'xs',\n textTransform: 'uppercase',\n letterSpacing: 'capsTight',\n color: 'textSecondary',\n});\n\nexport const value = sprinkles({\n fontSize: 'sm',\n color: 'text',\n wordBreak: 'break-word',\n});\n\nexport const fullWidth = sprinkles({\n gridColumn: 'span-full',\n});\n\nexport const size = {\n xs: style({ maxWidth: '10ch' }),\n s: style({ maxWidth: '18ch' }),\n m: style({ maxWidth: '28ch' }),\n l: style({ maxWidth: '44ch' }),\n xl: style({ maxWidth: '64ch' }),\n fluid: style({ maxWidth: '100%' }),\n};\n","import { type JSX, type ReactNode } from 'react';\nimport type { BackofficeFieldSize } from '@plumile/backoffice-core/types.js';\n\nimport { CopyableText, cx } from '@plumile/ui';\n\nimport { useBackofficeReactTranslation } from '../../../i18n/useBackofficeReactTranslation.js';\n\nimport * as styles from './backofficeDetailField.css.js';\n\nexport type BackofficeDetailFieldProps = {\n id: string;\n label: string;\n size: BackofficeFieldSize;\n value: ReactNode | null | undefined;\n copyValue?: string;\n fullWidth?: boolean;\n};\n\nexport const BackofficeDetailField = ({\n label,\n size,\n value,\n copyValue,\n fullWidth = false,\n}: BackofficeDetailFieldProps): JSX.Element => {\n const { t } = useBackofficeReactTranslation();\n let resolvedValue: ReactNode = value;\n if (\n resolvedValue == null ||\n (typeof resolvedValue === 'string' && resolvedValue.trim() === '')\n ) {\n resolvedValue = t('common.notAvailable');\n }\n\n if (copyValue != null && copyValue !== '') {\n resolvedValue = (\n <CopyableText\n value={copyValue}\n copyValue={copyValue}\n truncate={false}\n copyLabel={t('common.actions.copy')}\n copiedLabel={t('common.actions.copied')}\n />\n );\n }\n\n const fieldClassNames = [styles.field, styles.size[size]];\n if (fullWidth) {\n fieldClassNames.push(styles.fullWidth);\n }\n\n return (\n <div className={cx(...fieldClassNames)}>\n <span className={styles.label}>{label}</span>\n <div className={styles.value}>{resolvedValue}</div>\n </div>\n );\n};\n\nexport default BackofficeDetailField;\n","import { sprinkles } from '@plumile/ui';\n\nexport const section = sprinkles({\n display: 'flex',\n flexDirection: 'column',\n gap: 4,\n padding: 6,\n borderRadius: 'md',\n backgroundColor: 'surface',\n borderWidth: 'default',\n borderStyle: 'solid',\n borderColor: 'borderSubtle',\n boxShadow: 'inkSoft',\n});\n\nexport const header = sprinkles({\n display: 'flex',\n flexDirection: 'column',\n gap: 1,\n});\n\nexport const title = sprinkles({\n fontSize: 'base',\n fontWeight: 'semibold',\n color: 'text',\n});\n\nexport const description = sprinkles({\n fontSize: 'sm',\n color: 'textSecondary',\n});\n\nexport const grid = sprinkles({\n display: 'grid',\n gap: 4,\n gridTemplateColumns: 'autoFitMinmax220',\n});\n","import { type JSX, type ReactNode } from 'react';\n\nimport {\n BackofficeDetailField,\n type BackofficeDetailFieldProps,\n} from './BackofficeDetailField.js';\nimport * as styles from './backofficeDetailSection.css.js';\n\nexport type BackofficeDetailSectionProps = {\n title: string;\n description?: string;\n items?: readonly BackofficeDetailFieldProps[];\n children?: ReactNode;\n};\n\nexport const BackofficeDetailSection = ({\n title,\n description,\n items,\n children,\n}: BackofficeDetailSectionProps): JSX.Element => {\n let descriptionNode: JSX.Element | null = null;\n if (description != null && description !== '') {\n descriptionNode = <p className={styles.description}>{description}</p>;\n }\n\n let itemsNode: JSX.Element | null = null;\n if (items != null && items.length > 0) {\n itemsNode = (\n <div className={styles.grid}>\n {items.map((item) => {\n return <BackofficeDetailField key={item.id} {...item} />;\n })}\n </div>\n );\n }\n\n return (\n <section className={styles.section}>\n <header className={styles.header}>\n <h3 className={styles.title}>{title}</h3>\n {descriptionNode}\n </header>\n {itemsNode}\n {children}\n </section>\n );\n};\n\nexport default BackofficeDetailSection;\n","/**\n * Formats a JSON payload into a fenced Markdown code block.\n */\nexport function formatJsonPayload(value: unknown): string {\n if (value == null) {\n return '';\n }\n try {\n return `\\`\\`\\`json\\n${JSON.stringify(value, null, 2)}\\n\\`\\`\\``;\n } catch {\n let fallback = '[unserializable]';\n if (typeof value === 'string') {\n fallback = value;\n } else if (typeof value === 'number' || typeof value === 'boolean') {\n fallback = String(value);\n }\n return `\\`\\`\\`\\n${fallback}\\n\\`\\`\\``;\n }\n}\n\n/**\n * Formats a list of strings as a Markdown bullet list.\n */\nexport function formatListAsMarkdown(items: readonly string[]): string {\n if (items.length === 0) {\n return '';\n }\n return items\n .map((item) => {\n return `- ${item}`;\n })\n .join('\\n');\n}\n","import { type JSX } from 'react';\n\nimport { LazyMarkdownRenderer } from '@plumile/ui';\n\nimport { useBackofficeReactTranslation } from '../../../i18n/useBackofficeReactTranslation.js';\nimport { BackofficeDetailSection } from './BackofficeDetailSection.js';\nimport { formatJsonPayload } from './detailPayloadUtils.js';\n\nexport type BackofficeDetailPayloadProps = {\n title: string;\n content: unknown;\n format?: 'markdown' | 'json' | 'text';\n description?: string;\n};\n\nexport const BackofficeDetailPayload = ({\n title,\n content,\n format = 'markdown',\n description,\n}: BackofficeDetailPayloadProps): JSX.Element => {\n const { t } = useBackofficeReactTranslation();\n let resolved = '';\n if (format === 'json') {\n resolved = formatJsonPayload(content);\n } else if (content != null) {\n if (typeof content === 'string') {\n resolved = content;\n } else if (typeof content === 'number' || typeof content === 'boolean') {\n resolved = String(content);\n } else {\n resolved = formatJsonPayload(content);\n }\n }\n\n if (resolved.trim() === '') {\n resolved = t('common.notAvailable');\n }\n\n return (\n <BackofficeDetailSection title={title} description={description}>\n <LazyMarkdownRenderer content={resolved} />\n </BackofficeDetailSection>\n );\n};\n\nexport default BackofficeDetailPayload;\n"],"mappings":";;;;;kDCaa,KAA4B,EACvC,eACgD;CAChD,IAAM,EAAE,SAAM,GAAgB;AAC9B,QACE,kBAAC,OAAD;EAAK,WAAW;YACb,EAAM,KAAK,MAAS;GACnB,IAAM,IACJ,OAAO,EAAK,SAAU,aAAa,EAAK,MAAM,EAAE,GAAG,EAAK;AAC1D,UACE,kBAAC,GAAD;IAAmB,MAAM,EAAK,QAAQ;cACnC;IACG,EAFI,EAAK,GAET;IAER;EACE,CAAA;;;;;;;;GEVG,KAAyB,EACpC,OAAA,GACA,MAAA,GACA,OAAA,GACA,cACA,WAAA,IAAY,SACiC;CAC7C,IAAM,EAAE,SAAM,GAA+B,EACzC,IAA2B;AAQ/B,EANE,KAAiB,QAChB,OAAO,KAAkB,YAAY,EAAc,MAAM,KAAK,QAE/D,IAAgB,EAAE,sBAAsB,GAGtC,KAAa,QAAQ,MAAc,OACrC,IACE,kBAAC,GAAD;EACE,OAAO;EACI;EACX,UAAU;EACV,WAAW,EAAE,sBAAsB;EACnC,aAAa,EAAE,wBAAwB;EACvC,CAAA;CAIN,IAAM,IAAkB,CAAC,GAAc,EAAY,GAAM;AAKzD,QAJI,KACF,EAAgB,KAAK,EAAiB,EAItC,kBAAC,OAAD;EAAK,WAAW,EAAG,GAAG,EAAgB;YAAtC,CACE,kBAAC,QAAD;GAAM,WAAW;aAAe;GAAa,CAAA,EAC7C,kBAAC,OAAD;GAAK,WAAW;aAAe;GAAoB,CAAA,CAC/C;;qPExCG,KAA2B,EACtC,OAAA,GACA,aAAA,GACA,UACA,kBAC+C;CAC/C,IAAI,IAAsC;AAC1C,CAAI,KAAe,QAAQ,MAAgB,OACzC,IAAkB,kBAAC,KAAD;EAAG,WAAW;YAAqB;EAAgB,CAAA;CAGvE,IAAI,IAAgC;AAWpC,QAVI,KAAS,QAAQ,EAAM,SAAS,MAClC,IACE,kBAAC,OAAD;EAAK,WAAW;YACb,EAAM,KAAK,MACH,kBAAC,GAAD,EAAqC,GAAI,GAAQ,EAArB,EAAK,GAAgB,CACxD;EACE,CAAA,GAKR,kBAAC,WAAD;EAAS,WAAW;YAApB;GACE,kBAAC,UAAD;IAAQ,WAAW;cAAnB,CACE,kBAAC,MAAD;KAAI,WAAW;eAAe;KAAW,CAAA,EACxC,EACM;;GACR;GACA;GACO;;;;;AC1Cd,SAAgB,EAAkB,GAAwB;AACxD,KAAI,KAAS,KACX,QAAO;AAET,KAAI;AACF,SAAO,eAAe,KAAK,UAAU,GAAO,MAAM,EAAE,CAAC;SAC/C;EACN,IAAI,IAAW;AAMf,SALI,OAAO,KAAU,WACnB,IAAW,KACF,OAAO,KAAU,YAAY,OAAO,KAAU,eACvD,IAAW,OAAO,EAAM,GAEnB,WAAW,EAAS;;;;;ACD/B,IAAa,KAA2B,EACtC,UACA,YACA,YAAS,YACT,qBAC+C;CAC/C,IAAM,EAAE,SAAM,GAA+B,EACzC,IAAW;AAiBf,QAhBI,MAAW,SACb,IAAW,EAAkB,EAAQ,GAC5B,KAAW,SACpB,AAKE,IALE,OAAO,KAAY,WACV,IACF,OAAO,KAAY,YAAY,OAAO,KAAY,YAChD,OAAO,EAAQ,GAEf,EAAkB,EAAQ,GAIrC,EAAS,MAAM,KAAK,OACtB,IAAW,EAAE,sBAAsB,GAInC,kBAAC,GAAD;EAAgC;EAAoB;YAClD,kBAAC,GAAD,EAAsB,SAAS,GAAY,CAAA;EACnB,CAAA"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { n as e } from "./BackofficeConfigContext-R0t1owTI.js";
|
|
2
2
|
import { t } from "./useBackofficeReactTranslation-WfXU8kCf.js";
|
|
3
|
-
import { i as n, t as r } from "./EntityIdPickerDialog-
|
|
3
|
+
import { i as n, t as r } from "./EntityIdPickerDialog-DbTnDU4v.js";
|
|
4
4
|
import { i } from "./mutationResult-CcQMY13J.js";
|
|
5
5
|
import { n as a, t as o } from "./toastViewAction-BGTS7vqm.js";
|
|
6
6
|
import { useCallback as s, useContext as ee, useEffect as te, useMemo as c, useState as l } from "react";
|
|
@@ -10,7 +10,7 @@ import { BackofficeFormSection as ie, Button as u, CheckboxField as d, Form as a
|
|
|
10
10
|
import * as h from "react-relay";
|
|
11
11
|
import { Fragment as fe, jsx as g, jsxs as _ } from "react/jsx-runtime";
|
|
12
12
|
//#region src/components/backoffice/actions/backofficeEntityActionFormDialog.css.ts
|
|
13
|
-
var pe = "
|
|
13
|
+
var pe = "txvbqb9ip txvbqbai7 txvbqbaog", me = "txvbqb9ip txvbqbdp7 txvbqbao7", he = "txvbqb9ip txvbqbai7 txvbqbao7", { commitMutation: ge, useRelayEnvironment: _e } = h, v = (e, t) => e(t), y = (e) => typeof e == "object" && !!e && !Array.isArray(e), ve = (e) => {
|
|
14
14
|
if (!y(e)) return null;
|
|
15
15
|
for (let t of Object.values(e)) if (y(t) && ("status" in t || "result" in t)) return t;
|
|
16
16
|
return null;
|
|
@@ -313,7 +313,7 @@ var pe = "txvbqb9io txvbqbai6 txvbqbaof", me = "txvbqb9io txvbqbdo6 txvbqbao6",
|
|
|
313
313
|
return e.placeholder != null && (a = v(e.placeholder, w)), /* @__PURE__ */ _(f, { children: [
|
|
314
314
|
/* @__PURE__ */ g(m, { children: t }),
|
|
315
315
|
r != null && /* @__PURE__ */ g("span", {
|
|
316
|
-
className: "
|
|
316
|
+
className: "txvbqb8p txvbqbv9d",
|
|
317
317
|
children: r
|
|
318
318
|
}),
|
|
319
319
|
/* @__PURE__ */ g(p, {
|
|
@@ -326,7 +326,7 @@ var pe = "txvbqb9io txvbqbai6 txvbqbaof", me = "txvbqb9io txvbqbdo6 txvbqbao6",
|
|
|
326
326
|
fullWidth: !0
|
|
327
327
|
}),
|
|
328
328
|
N[e.id] != null && /* @__PURE__ */ g("span", {
|
|
329
|
-
className: "
|
|
329
|
+
className: "txvbqb8p txvbqbvad",
|
|
330
330
|
children: N[e.id]
|
|
331
331
|
})
|
|
332
332
|
] }, e.id);
|
|
@@ -338,7 +338,7 @@ var pe = "txvbqb9io txvbqbai6 txvbqbaof", me = "txvbqb9io txvbqbdo6 txvbqbao6",
|
|
|
338
338
|
return e.placeholder != null && (a = v(e.placeholder, w)), /* @__PURE__ */ _(f, { children: [
|
|
339
339
|
/* @__PURE__ */ g(m, { children: t }),
|
|
340
340
|
r != null && /* @__PURE__ */ g("span", {
|
|
341
|
-
className: "
|
|
341
|
+
className: "txvbqb8p txvbqbv9d",
|
|
342
342
|
children: r
|
|
343
343
|
}),
|
|
344
344
|
/* @__PURE__ */ g(p, {
|
|
@@ -351,7 +351,7 @@ var pe = "txvbqb9io txvbqbai6 txvbqbaof", me = "txvbqb9io txvbqbdo6 txvbqbao6",
|
|
|
351
351
|
fullWidth: !0
|
|
352
352
|
}),
|
|
353
353
|
N[e.id] != null && /* @__PURE__ */ g("span", {
|
|
354
|
-
className: "
|
|
354
|
+
className: "txvbqb8p txvbqbvad",
|
|
355
355
|
children: N[e.id]
|
|
356
356
|
})
|
|
357
357
|
] }, e.id);
|
|
@@ -363,7 +363,7 @@ var pe = "txvbqb9io txvbqbai6 txvbqbaof", me = "txvbqb9io txvbqbdo6 txvbqbao6",
|
|
|
363
363
|
return e.placeholder != null && (a = v(e.placeholder, w)), /* @__PURE__ */ _(f, { children: [
|
|
364
364
|
/* @__PURE__ */ g(m, { children: t }),
|
|
365
365
|
r != null && /* @__PURE__ */ g("span", {
|
|
366
|
-
className: "
|
|
366
|
+
className: "txvbqb8p txvbqbv9d",
|
|
367
367
|
children: r
|
|
368
368
|
}),
|
|
369
369
|
/* @__PURE__ */ g(ue, {
|
|
@@ -376,7 +376,7 @@ var pe = "txvbqb9io txvbqbai6 txvbqbaof", me = "txvbqb9io txvbqbdo6 txvbqbao6",
|
|
|
376
376
|
fullWidth: !0
|
|
377
377
|
}),
|
|
378
378
|
N[e.id] != null && /* @__PURE__ */ g("span", {
|
|
379
|
-
className: "
|
|
379
|
+
className: "txvbqb8p txvbqbvad",
|
|
380
380
|
children: N[e.id]
|
|
381
381
|
})
|
|
382
382
|
] }, e.id);
|
|
@@ -392,7 +392,7 @@ var pe = "txvbqb9io txvbqbai6 txvbqbaof", me = "txvbqb9io txvbqbdo6 txvbqbao6",
|
|
|
392
392
|
return /* @__PURE__ */ _(f, { children: [
|
|
393
393
|
/* @__PURE__ */ g(m, { children: t }),
|
|
394
394
|
r != null && /* @__PURE__ */ g("span", {
|
|
395
|
-
className: "
|
|
395
|
+
className: "txvbqb8p txvbqbv9d",
|
|
396
396
|
children: r
|
|
397
397
|
}),
|
|
398
398
|
/* @__PURE__ */ g(le, {
|
|
@@ -404,7 +404,7 @@ var pe = "txvbqb9io txvbqbai6 txvbqbaof", me = "txvbqb9io txvbqbdo6 txvbqbao6",
|
|
|
404
404
|
}
|
|
405
405
|
}),
|
|
406
406
|
N[e.id] != null && /* @__PURE__ */ g("span", {
|
|
407
|
-
className: "
|
|
407
|
+
className: "txvbqb8p txvbqbvad",
|
|
408
408
|
children: N[e.id]
|
|
409
409
|
})
|
|
410
410
|
] }, e.id);
|
|
@@ -413,7 +413,7 @@ var pe = "txvbqb9io txvbqbai6 txvbqbaof", me = "txvbqb9io txvbqbdo6 txvbqbao6",
|
|
|
413
413
|
let n = A[e.id] === !0;
|
|
414
414
|
return /* @__PURE__ */ _(f, { children: [
|
|
415
415
|
r != null && /* @__PURE__ */ g("span", {
|
|
416
|
-
className: "
|
|
416
|
+
className: "txvbqb8p txvbqbv9d",
|
|
417
417
|
children: r
|
|
418
418
|
}),
|
|
419
419
|
/* @__PURE__ */ g(d, {
|
|
@@ -424,7 +424,7 @@ var pe = "txvbqb9io txvbqbai6 txvbqbaof", me = "txvbqb9io txvbqbdo6 txvbqbao6",
|
|
|
424
424
|
}
|
|
425
425
|
}),
|
|
426
426
|
N[e.id] != null && /* @__PURE__ */ g("span", {
|
|
427
|
-
className: "
|
|
427
|
+
className: "txvbqb8p txvbqbvad",
|
|
428
428
|
children: N[e.id]
|
|
429
429
|
})
|
|
430
430
|
] }, e.id);
|
|
@@ -434,7 +434,7 @@ var pe = "txvbqb9io txvbqbai6 txvbqbaof", me = "txvbqb9io txvbqbdo6 txvbqbao6",
|
|
|
434
434
|
return typeof i == "string" && (a = i), /* @__PURE__ */ _(f, { children: [
|
|
435
435
|
/* @__PURE__ */ g(m, { children: t }),
|
|
436
436
|
r != null && /* @__PURE__ */ g("span", {
|
|
437
|
-
className: "
|
|
437
|
+
className: "txvbqb8p txvbqbv9d",
|
|
438
438
|
children: r
|
|
439
439
|
}),
|
|
440
440
|
/* @__PURE__ */ g(n, {
|
|
@@ -452,7 +452,7 @@ var pe = "txvbqb9io txvbqbai6 txvbqbaof", me = "txvbqb9io txvbqbdo6 txvbqbao6",
|
|
|
452
452
|
}
|
|
453
453
|
}),
|
|
454
454
|
N[e.id] != null && /* @__PURE__ */ g("span", {
|
|
455
|
-
className: "
|
|
455
|
+
className: "txvbqb8p txvbqbvad",
|
|
456
456
|
children: N[e.id]
|
|
457
457
|
})
|
|
458
458
|
] }, e.id);
|
|
@@ -462,7 +462,7 @@ var pe = "txvbqb9io txvbqbai6 txvbqbaof", me = "txvbqb9io txvbqbdo6 txvbqbao6",
|
|
|
462
462
|
return Array.isArray(n) && (i = n.filter((e) => typeof e == "string")), /* @__PURE__ */ _(f, { children: [
|
|
463
463
|
/* @__PURE__ */ g(m, { children: t }),
|
|
464
464
|
r != null && /* @__PURE__ */ g("span", {
|
|
465
|
-
className: "
|
|
465
|
+
className: "txvbqb8p txvbqbv9d",
|
|
466
466
|
children: r
|
|
467
467
|
}),
|
|
468
468
|
/* @__PURE__ */ g("div", {
|
|
@@ -477,7 +477,7 @@ var pe = "txvbqb9io txvbqbai6 txvbqbaof", me = "txvbqb9io txvbqbdo6 txvbqbao6",
|
|
|
477
477
|
}, t.value))
|
|
478
478
|
}),
|
|
479
479
|
N[e.id] != null && /* @__PURE__ */ g("span", {
|
|
480
|
-
className: "
|
|
480
|
+
className: "txvbqb8p txvbqbvad",
|
|
481
481
|
children: N[e.id]
|
|
482
482
|
})
|
|
483
483
|
] }, e.id);
|
|
@@ -486,7 +486,7 @@ var pe = "txvbqb9io txvbqbai6 txvbqbaof", me = "txvbqb9io txvbqbdo6 txvbqbao6",
|
|
|
486
486
|
}
|
|
487
487
|
}) }),
|
|
488
488
|
$ && /* @__PURE__ */ _("div", {
|
|
489
|
-
className: "
|
|
489
|
+
className: "txvbqb9ip txvbqbai7 txvbqbao7",
|
|
490
490
|
children: [L != null && Z != null && /* @__PURE__ */ g(se, {
|
|
491
491
|
badgeLabel: Z,
|
|
492
492
|
copyCode: L,
|
|
@@ -510,4 +510,4 @@ var pe = "txvbqb9io txvbqbai6 txvbqbaof", me = "txvbqb9io txvbqbdo6 txvbqbao6",
|
|
|
510
510
|
//#endregion
|
|
511
511
|
export { S as BackofficeEntityActionFormDialog, S as default };
|
|
512
512
|
|
|
513
|
-
//# sourceMappingURL=BackofficeEntityActionFormDialog-
|
|
513
|
+
//# sourceMappingURL=BackofficeEntityActionFormDialog-V4QXnvpy.js.map
|