@plumile/backoffice-react 0.1.105 → 0.1.106
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/_virtual/_rolldown/runtime.js +7 -0
- package/lib/esm/auth/AuthRefreshNotice.js +38 -0
- package/lib/esm/auth/AuthRefreshNotice.js.map +1 -0
- package/lib/esm/auth/TotpQrCode.js +28 -0
- package/lib/esm/auth/TotpQrCode.js.map +1 -0
- package/lib/esm/auth/authRefreshNotice.css.js +7 -0
- package/lib/esm/auth/authRefreshNotice.css.js.map +1 -0
- package/lib/esm/{AuthPanel-BaIRFGbX.js → auth/login/AuthPanel.js} +7 -7
- package/lib/esm/auth/login/AuthPanel.js.map +1 -0
- package/lib/esm/auth/login/EmailCapturePanel.js +50 -0
- package/lib/esm/auth/login/EmailCapturePanel.js.map +1 -0
- package/lib/esm/auth/login/LoginFlow.js +130 -0
- package/lib/esm/auth/login/LoginFlow.js.map +1 -0
- package/lib/esm/auth/login/MethodChooser.js +49 -0
- package/lib/esm/auth/login/MethodChooser.js.map +1 -0
- package/lib/esm/auth/login/MfaChallengeForm.js +80 -0
- package/lib/esm/auth/login/MfaChallengeForm.js.map +1 -0
- package/lib/esm/auth/login/OidcButtons.js +29 -0
- package/lib/esm/auth/login/OidcButtons.js.map +1 -0
- package/lib/esm/auth/login/PasskeyLoginForm.js +81 -0
- package/lib/esm/auth/login/PasskeyLoginForm.js.map +1 -0
- package/lib/esm/auth/login/PasswordLoginPanel.js +37 -0
- package/lib/esm/auth/login/PasswordLoginPanel.js.map +1 -0
- package/lib/esm/auth/login/loginPage.css.js +7 -0
- package/lib/esm/auth/login/loginPage.css.js.map +1 -0
- package/lib/esm/auth/login/synchronizeAuthStatusQuery.js +10 -0
- package/lib/esm/auth/login/synchronizeAuthStatusQuery.js.map +1 -0
- package/lib/esm/{AcceptInvitationScreen-VaWXQPHp.js → auth/pages/AcceptInvitationScreen.js} +11 -11
- package/lib/esm/auth/pages/AcceptInvitationScreen.js.map +1 -0
- package/lib/esm/{PasswordResetCompleteScreen-Cgg96DPo.js → auth/pages/PasswordResetCompleteScreen.js} +10 -10
- package/lib/esm/auth/pages/PasswordResetCompleteScreen.js.map +1 -0
- package/lib/esm/{PasswordResetRequestScreen-I1nFvGLd.js → auth/pages/PasswordResetRequestScreen.js} +10 -10
- package/lib/esm/auth/pages/PasswordResetRequestScreen.js.map +1 -0
- package/lib/esm/{VerifyEmailScreen-Br5KyHjg.js → auth/pages/VerifyEmailScreen.js} +7 -7
- package/lib/esm/auth/pages/VerifyEmailScreen.js.map +1 -0
- package/lib/esm/{BackofficeEntityActionFormDialog-DrZxuytz.js → components/backoffice/actions/BackofficeEntityActionFormDialog.js} +123 -121
- package/lib/esm/{BackofficeEntityActionFormDialog-DrZxuytz.js.map → components/backoffice/actions/BackofficeEntityActionFormDialog.js.map} +1 -1
- package/lib/esm/components/backoffice/actions/LazyBackofficeEntityActionFormDialog.js +26 -0
- package/lib/esm/components/backoffice/actions/LazyBackofficeEntityActionFormDialog.js.map +1 -0
- package/lib/esm/{backofficeEntityActionFormDialog.css-DJgEKwaA.js → components/backoffice/actions/backofficeEntityActionFormDialog.css.js} +3 -2
- package/lib/esm/{backofficeEntityActionFormDialog.css-DJgEKwaA.js.map → components/backoffice/actions/backofficeEntityActionFormDialog.css.js.map} +1 -1
- package/lib/esm/{toastViewAction-DQYlcGOL.js → components/backoffice/actions/toastViewAction.js} +2 -2
- package/lib/esm/{toastViewAction-DQYlcGOL.js.map → components/backoffice/actions/toastViewAction.js.map} +1 -1
- package/lib/esm/{buildDataTableColumns-DdmF-EYq.js → components/backoffice/columns/buildDataTableColumns.js} +18 -18
- package/lib/esm/{buildDataTableColumns-DdmF-EYq.js.map → components/backoffice/columns/buildDataTableColumns.js.map} +1 -1
- package/lib/esm/components/backoffice/detail/BackofficeAuditMetadataPanel.js +31 -0
- package/lib/esm/components/backoffice/detail/BackofficeAuditMetadataPanel.js.map +1 -0
- package/lib/esm/components/backoffice/detail/BackofficeDetailBadgeRow.js +22 -0
- package/lib/esm/components/backoffice/detail/BackofficeDetailBadgeRow.js.map +1 -0
- package/lib/esm/components/backoffice/detail/BackofficeDetailErrorList.js +40 -0
- package/lib/esm/components/backoffice/detail/BackofficeDetailErrorList.js.map +1 -0
- package/lib/esm/components/backoffice/detail/BackofficeDetailField.js +30 -0
- package/lib/esm/components/backoffice/detail/BackofficeDetailField.js.map +1 -0
- package/lib/esm/components/backoffice/detail/BackofficeDetailFlagTag.css.js +7 -0
- package/lib/esm/components/backoffice/detail/BackofficeDetailFlagTag.css.js.map +1 -0
- package/lib/esm/components/backoffice/detail/BackofficeDetailFlagTag.js +24 -0
- package/lib/esm/components/backoffice/detail/BackofficeDetailFlagTag.js.map +1 -0
- package/lib/esm/components/backoffice/detail/BackofficeDetailLayout.js +20 -0
- package/lib/esm/components/backoffice/detail/BackofficeDetailLayout.js.map +1 -0
- package/lib/esm/components/backoffice/detail/BackofficeDetailPayload.js +18 -0
- package/lib/esm/components/backoffice/detail/BackofficeDetailPayload.js.map +1 -0
- package/lib/esm/components/backoffice/detail/BackofficeDetailRelationLink.js +56 -0
- package/lib/esm/components/backoffice/detail/BackofficeDetailRelationLink.js.map +1 -0
- package/lib/esm/components/backoffice/detail/BackofficeDetailRelationList.js +11 -0
- package/lib/esm/components/backoffice/detail/BackofficeDetailRelationList.js.map +1 -0
- package/lib/esm/components/backoffice/detail/BackofficeDetailRelationListBlock.js +123 -0
- package/lib/esm/components/backoffice/detail/BackofficeDetailRelationListBlock.js.map +1 -0
- package/lib/esm/components/backoffice/detail/BackofficeDetailSection.js +36 -0
- package/lib/esm/components/backoffice/detail/BackofficeDetailSection.js.map +1 -0
- package/lib/esm/components/backoffice/detail/BackofficeDetailTaggedValue.js +18 -0
- package/lib/esm/components/backoffice/detail/BackofficeDetailTaggedValue.js.map +1 -0
- package/lib/esm/components/backoffice/detail/BackofficeEntityRefLink.js +17 -0
- package/lib/esm/components/backoffice/detail/BackofficeEntityRefLink.js.map +1 -0
- package/lib/esm/components/backoffice/detail/BackofficeEntitySummaryHeader.js +72 -0
- package/lib/esm/components/backoffice/detail/BackofficeEntitySummaryHeader.js.map +1 -0
- package/lib/esm/components/backoffice/detail/BackofficeEnumLabel.js +11 -0
- package/lib/esm/components/backoffice/detail/BackofficeEnumLabel.js.map +1 -0
- package/lib/esm/components/backoffice/detail/BackofficeKpiStrip.js +35 -0
- package/lib/esm/components/backoffice/detail/BackofficeKpiStrip.js.map +1 -0
- package/lib/esm/components/backoffice/detail/BackofficeLifecycleTimelineSection.js +37 -0
- package/lib/esm/components/backoffice/detail/BackofficeLifecycleTimelineSection.js.map +1 -0
- package/lib/esm/components/backoffice/detail/BackofficePayloadInspectorSection.js +36 -0
- package/lib/esm/components/backoffice/detail/BackofficePayloadInspectorSection.js.map +1 -0
- package/lib/esm/components/backoffice/detail/BackofficeReferenceValue.js +22 -0
- package/lib/esm/components/backoffice/detail/BackofficeReferenceValue.js.map +1 -0
- package/lib/esm/components/backoffice/detail/BackofficeRelationsSummaryGrid.js +43 -0
- package/lib/esm/components/backoffice/detail/BackofficeRelationsSummaryGrid.js.map +1 -0
- package/lib/esm/components/backoffice/detail/BackofficeScopeStack.js +28 -0
- package/lib/esm/components/backoffice/detail/BackofficeScopeStack.js.map +1 -0
- package/lib/esm/components/backoffice/detail/BackofficeStatusMetaBadge.js +27 -0
- package/lib/esm/components/backoffice/detail/BackofficeStatusMetaBadge.js.map +1 -0
- package/lib/esm/components/backoffice/detail/BackofficeTokenUsageBreakdown.js +37 -0
- package/lib/esm/components/backoffice/detail/BackofficeTokenUsageBreakdown.js.map +1 -0
- package/lib/esm/components/backoffice/detail/BackofficeUsageCostBreakdown.js +84 -0
- package/lib/esm/components/backoffice/detail/BackofficeUsageCostBreakdown.js.map +1 -0
- package/lib/esm/components/backoffice/detail/backofficeAuditMetadataPanel.css.js +7 -0
- package/lib/esm/components/backoffice/detail/backofficeAuditMetadataPanel.css.js.map +1 -0
- package/lib/esm/components/backoffice/detail/backofficeDetailBadgeRow.css.js +7 -0
- package/lib/esm/components/backoffice/detail/backofficeDetailBadgeRow.css.js.map +1 -0
- package/lib/esm/components/backoffice/detail/backofficeDetailErrorList.css.js +7 -0
- package/lib/esm/components/backoffice/detail/backofficeDetailErrorList.css.js.map +1 -0
- package/lib/esm/components/backoffice/detail/backofficeDetailField.css.js +15 -0
- package/lib/esm/components/backoffice/detail/backofficeDetailField.css.js.map +1 -0
- package/lib/esm/components/backoffice/detail/backofficeDetailLayout.css.js +7 -0
- package/lib/esm/components/backoffice/detail/backofficeDetailLayout.css.js.map +1 -0
- package/lib/esm/components/backoffice/detail/backofficeDetailRelationLink.css.js +7 -0
- package/lib/esm/components/backoffice/detail/backofficeDetailRelationLink.css.js.map +1 -0
- package/lib/esm/components/backoffice/detail/backofficeDetailRelationList.css.js +7 -0
- package/lib/esm/components/backoffice/detail/backofficeDetailRelationList.css.js.map +1 -0
- package/lib/esm/components/backoffice/detail/backofficeDetailSection.css.js +7 -0
- package/lib/esm/components/backoffice/detail/backofficeDetailSection.css.js.map +1 -0
- package/lib/esm/components/backoffice/detail/backofficeDetailTaggedValue.css.js +7 -0
- package/lib/esm/components/backoffice/detail/backofficeDetailTaggedValue.css.js.map +1 -0
- package/lib/esm/components/backoffice/detail/backofficeEntitySummaryHeader.css.js +7 -0
- package/lib/esm/components/backoffice/detail/backofficeEntitySummaryHeader.css.js.map +1 -0
- package/lib/esm/components/backoffice/detail/backofficeKpiStrip.css.js +7 -0
- package/lib/esm/components/backoffice/detail/backofficeKpiStrip.css.js.map +1 -0
- package/lib/esm/components/backoffice/detail/backofficeLifecycleTimelineSection.css.js +7 -0
- package/lib/esm/components/backoffice/detail/backofficeLifecycleTimelineSection.css.js.map +1 -0
- package/lib/esm/components/backoffice/detail/backofficePayloadInspectorSection.css.js +7 -0
- package/lib/esm/components/backoffice/detail/backofficePayloadInspectorSection.css.js.map +1 -0
- package/lib/esm/components/backoffice/detail/backofficeReferenceValue.css.js +7 -0
- package/lib/esm/components/backoffice/detail/backofficeReferenceValue.css.js.map +1 -0
- package/lib/esm/components/backoffice/detail/backofficeRelationsSummaryGrid.css.js +7 -0
- package/lib/esm/components/backoffice/detail/backofficeRelationsSummaryGrid.css.js.map +1 -0
- package/lib/esm/components/backoffice/detail/backofficeScopeStack.css.js +7 -0
- package/lib/esm/components/backoffice/detail/backofficeScopeStack.css.js.map +1 -0
- package/lib/esm/components/backoffice/detail/backofficeStatusMetaBadge.css.js +7 -0
- package/lib/esm/components/backoffice/detail/backofficeStatusMetaBadge.css.js.map +1 -0
- package/lib/esm/components/backoffice/detail/backofficeUsageCostBreakdown.css.js +7 -0
- package/lib/esm/components/backoffice/detail/backofficeUsageCostBreakdown.css.js.map +1 -0
- package/lib/esm/components/backoffice/detail/createBackofficeEntityLinkProps.js +21 -0
- package/lib/esm/components/backoffice/detail/createBackofficeEntityLinkProps.js.map +1 -0
- package/lib/esm/components/backoffice/detail/detailPayloadUtils.js +17 -0
- package/lib/esm/components/backoffice/detail/detailPayloadUtils.js.map +1 -0
- package/lib/esm/{BackofficeErrorBoundary-BwRVSDHU.js → components/backoffice/errors/BackofficeErrorBoundary.js} +2 -2
- package/lib/esm/{BackofficeErrorBoundary-BwRVSDHU.js.map → components/backoffice/errors/BackofficeErrorBoundary.js.map} +1 -1
- package/lib/esm/components/backoffice/filters/BackofficeFilterAction.js +46 -0
- package/lib/esm/components/backoffice/filters/BackofficeFilterAction.js.map +1 -0
- package/lib/esm/components/backoffice/filters/DeferredFilterSearchInput.js +67 -0
- package/lib/esm/components/backoffice/filters/DeferredFilterSearchInput.js.map +1 -0
- package/lib/esm/components/backoffice/filters/EntityFilterValue.js +46 -0
- package/lib/esm/components/backoffice/filters/EntityFilterValue.js.map +1 -0
- package/lib/esm/components/backoffice/filters/EntityIdFilterField.js +65 -0
- package/lib/esm/components/backoffice/filters/EntityIdFilterField.js.map +1 -0
- package/lib/esm/components/backoffice/filters/backofficeFilterAction.css.js +7 -0
- package/lib/esm/components/backoffice/filters/backofficeFilterAction.css.js.map +1 -0
- package/lib/esm/components/backoffice/filters/deferredFilterSearchInput.css.js +7 -0
- package/lib/esm/components/backoffice/filters/deferredFilterSearchInput.css.js.map +1 -0
- package/lib/esm/components/backoffice/filters/entityIdFilterField.css.js +7 -0
- package/lib/esm/components/backoffice/filters/entityIdFilterField.css.js.map +1 -0
- package/lib/esm/components/backoffice/hub/BackofficeHubTemplate.js +83 -0
- package/lib/esm/components/backoffice/hub/BackofficeHubTemplate.js.map +1 -0
- package/lib/esm/components/backoffice/hub/backofficeHubTemplate.css.js +7 -0
- package/lib/esm/components/backoffice/hub/backofficeHubTemplate.css.js.map +1 -0
- package/lib/esm/{BackofficePermissionsContext-C2bdxy2z.js → components/backoffice/layout/BackofficePermissionsContext.js} +2 -2
- package/lib/esm/{BackofficePermissionsContext-C2bdxy2z.js.map → components/backoffice/layout/BackofficePermissionsContext.js.map} +1 -1
- package/lib/esm/components/backoffice/layout/backofficeSidebarActions.css.js +7 -0
- package/lib/esm/components/backoffice/layout/backofficeSidebarActions.css.js.map +1 -0
- package/lib/esm/components/backoffice/layout/breadcrumb/BackofficeRightPageLayout.js +10 -0
- package/lib/esm/components/backoffice/layout/breadcrumb/BackofficeRightPageLayout.js.map +1 -0
- package/lib/esm/components/backoffice/layout/breadcrumb/BackofficeTopbarBreadcrumb.js +69 -0
- package/lib/esm/components/backoffice/layout/breadcrumb/BackofficeTopbarBreadcrumb.js.map +1 -0
- package/lib/esm/components/backoffice/layout/breadcrumb/BackofficeTopbarPortal.js +12 -0
- package/lib/esm/components/backoffice/layout/breadcrumb/BackofficeTopbarPortal.js.map +1 -0
- package/lib/esm/{BackofficeTopbarPortalContext-Da5XFatM.js → components/backoffice/layout/breadcrumb/BackofficeTopbarPortalContext.js} +2 -2
- package/lib/esm/components/backoffice/layout/breadcrumb/BackofficeTopbarPortalContext.js.map +1 -0
- package/lib/esm/components/backoffice/layout/breadcrumb/assertValidBreadcrumb.js +16 -0
- package/lib/esm/components/backoffice/layout/breadcrumb/assertValidBreadcrumb.js.map +1 -0
- package/lib/esm/components/backoffice/layout/breadcrumb/backofficeTopbarBreadcrumb.css.js +7 -0
- package/lib/esm/components/backoffice/layout/breadcrumb/backofficeTopbarBreadcrumb.css.js.map +1 -0
- package/lib/esm/{buildBreadcrumbs-C5St167Y.js → components/backoffice/layout/breadcrumb/buildBreadcrumbs.js} +7 -3
- package/lib/esm/components/backoffice/layout/breadcrumb/buildBreadcrumbs.js.map +1 -0
- package/lib/esm/components/backoffice/layout/breadcrumb/types.js +0 -0
- package/lib/esm/components/backoffice/layout/buildSidebarSections.js +301 -0
- package/lib/esm/components/backoffice/layout/buildSidebarSections.js.map +1 -0
- package/lib/esm/components/backoffice/layout/mapViewerToSidebarProfileView.js +18 -0
- package/lib/esm/components/backoffice/layout/mapViewerToSidebarProfileView.js.map +1 -0
- package/lib/esm/{sidebarUtils-BgCBLJLv.js → components/backoffice/layout/sidebarUtils.js} +32 -22
- package/lib/esm/{sidebarUtils-BgCBLJLv.js.map → components/backoffice/layout/sidebarUtils.js.map} +1 -1
- package/lib/esm/components/backoffice/list/RowFlagsCell.css.js +7 -0
- package/lib/esm/components/backoffice/list/RowFlagsCell.css.js.map +1 -0
- package/lib/esm/components/backoffice/list/RowFlagsCell.js +37 -0
- package/lib/esm/components/backoffice/list/RowFlagsCell.js.map +1 -0
- package/lib/esm/components/backoffice/lists/BackofficeListToolbar.js +33 -0
- package/lib/esm/components/backoffice/lists/BackofficeListToolbar.js.map +1 -0
- package/lib/esm/components/backoffice/lists/backofficeListToolbar.css.js +13 -0
- package/lib/esm/components/backoffice/lists/backofficeListToolbar.css.js.map +1 -0
- package/lib/esm/components/backoffice/overview/BackofficeOverviewLayout.js +31 -0
- package/lib/esm/components/backoffice/overview/BackofficeOverviewLayout.js.map +1 -0
- package/lib/esm/components/backoffice/overview/backofficeOverviewLayout.css.js +7 -0
- package/lib/esm/components/backoffice/overview/backofficeOverviewLayout.css.js.map +1 -0
- package/lib/esm/components/backoffice/pickers/EntityIdPickerDialog.js +117 -0
- package/lib/esm/components/backoffice/pickers/EntityIdPickerDialog.js.map +1 -0
- package/lib/esm/components/backoffice/pickers/entityIdPickerDialog.css.js +7 -0
- package/lib/esm/components/backoffice/pickers/entityIdPickerDialog.css.js.map +1 -0
- package/lib/esm/components/backoffice/pickers/shared/EntityPickerList.js +27 -0
- package/lib/esm/components/backoffice/pickers/shared/EntityPickerList.js.map +1 -0
- package/lib/esm/components/backoffice/pickers/shared/EntityPickerRowBase.js +23 -0
- package/lib/esm/components/backoffice/pickers/shared/EntityPickerRowBase.js.map +1 -0
- package/lib/esm/components/backoffice/pickers/shared/EntityPickerShell.js +28 -0
- package/lib/esm/components/backoffice/pickers/shared/EntityPickerShell.js.map +1 -0
- package/lib/esm/components/backoffice/pickers/types.js +0 -0
- package/lib/esm/components/backoffice/refs/BackofficeEntityIdRef.js +35 -0
- package/lib/esm/components/backoffice/refs/BackofficeEntityIdRef.js.map +1 -0
- package/lib/esm/components/backoffice/refs/BackofficeEntityLink.js +30 -0
- package/lib/esm/components/backoffice/refs/BackofficeEntityLink.js.map +1 -0
- package/lib/esm/components/backoffice/refs/BackofficeRelatedCountLink.js +65 -0
- package/lib/esm/components/backoffice/refs/BackofficeRelatedCountLink.js.map +1 -0
- package/lib/esm/components/backoffice/refs/backofficeEntityIdRef.css.js +7 -0
- package/lib/esm/components/backoffice/refs/backofficeEntityIdRef.css.js.map +1 -0
- package/lib/esm/components/backoffice/refs/backofficeRelatedCountLink.css.js +7 -0
- package/lib/esm/components/backoffice/refs/backofficeRelatedCountLink.css.js.map +1 -0
- package/lib/esm/components/backoffice/routing/BackofficeContentBoundary.js +24 -0
- package/lib/esm/components/backoffice/routing/BackofficeContentBoundary.js.map +1 -0
- package/lib/esm/components/backoffice/routing/BackofficeContentError.js +27 -0
- package/lib/esm/components/backoffice/routing/BackofficeContentError.js.map +1 -0
- package/lib/esm/components/backoffice/routing/BackofficeContentFallback.js +47 -0
- package/lib/esm/components/backoffice/routing/BackofficeContentFallback.js.map +1 -0
- package/lib/esm/components/backoffice/routing/BackofficeRouteFallback.js +25 -0
- package/lib/esm/components/backoffice/routing/BackofficeRouteFallback.js.map +1 -0
- package/lib/esm/components/backoffice/routing/BackofficeRoutePendingBar.js +12 -0
- package/lib/esm/components/backoffice/routing/BackofficeRoutePendingBar.js.map +1 -0
- package/lib/esm/components/backoffice/routing/backofficeContentBoundary.css.js +7 -0
- package/lib/esm/components/backoffice/routing/backofficeContentBoundary.css.js.map +1 -0
- package/lib/esm/components/backoffice/routing/backofficeContentError.css.js +7 -0
- package/lib/esm/components/backoffice/routing/backofficeContentError.css.js.map +1 -0
- package/lib/esm/components/backoffice/routing/backofficeContentFallback.css.js +7 -0
- package/lib/esm/components/backoffice/routing/backofficeContentFallback.css.js.map +1 -0
- package/lib/esm/components/backoffice/routing/backofficeRouteFallback.css.js +7 -0
- package/lib/esm/components/backoffice/routing/backofficeRouteFallback.css.js.map +1 -0
- package/lib/esm/components/backoffice/routing/backofficeRoutePendingBar.css.js +7 -0
- package/lib/esm/components/backoffice/routing/backofficeRoutePendingBar.css.js.map +1 -0
- package/lib/esm/components/backoffice/scaffolds/BackofficeEntityDetailScaffold.js +12 -0
- package/lib/esm/components/backoffice/scaffolds/BackofficeEntityDetailScaffold.js.map +1 -0
- package/lib/esm/components/backoffice/scaffolds/BackofficeEntityListScaffold.js +506 -0
- package/lib/esm/components/backoffice/scaffolds/BackofficeEntityListScaffold.js.map +1 -0
- package/lib/esm/components/backoffice/scaffolds/BackofficeListFilterContext.js +40 -0
- package/lib/esm/components/backoffice/scaffolds/BackofficeListFilterContext.js.map +1 -0
- package/lib/esm/components/backoffice/scaffolds/BackofficeTabbedDetailShell.js +24 -0
- package/lib/esm/components/backoffice/scaffolds/BackofficeTabbedDetailShell.js.map +1 -0
- package/lib/esm/components/backoffice/scaffolds/backofficeEntityListScaffold.css.js +7 -0
- package/lib/esm/components/backoffice/scaffolds/backofficeEntityListScaffold.css.js.map +1 -0
- package/lib/esm/components/backoffice/scaffolds/backofficeTabbedDetailShell.css.js +7 -0
- package/lib/esm/components/backoffice/scaffolds/backofficeTabbedDetailShell.css.js.map +1 -0
- package/lib/esm/components/backoffice/shared/BackofficeFilterableCell.js +41 -0
- package/lib/esm/components/backoffice/shared/BackofficeFilterableCell.js.map +1 -0
- package/lib/esm/components/backoffice/shared/BackofficeFormattedCurrency.js +17 -0
- package/lib/esm/components/backoffice/shared/BackofficeFormattedCurrency.js.map +1 -0
- package/lib/esm/components/backoffice/shared/BackofficeFormattedNumber.js +17 -0
- package/lib/esm/components/backoffice/shared/BackofficeFormattedNumber.js.map +1 -0
- package/lib/esm/components/backoffice/shared/BackofficeInlineFilterRow.js +12 -0
- package/lib/esm/components/backoffice/shared/BackofficeInlineFilterRow.js.map +1 -0
- package/lib/esm/components/backoffice/shared/backofficeFilterableCell.css.js +16 -0
- package/lib/esm/components/backoffice/shared/backofficeFilterableCell.css.js.map +1 -0
- package/lib/esm/components/backoffice/shared/backofficeInlineFilterRow.css.js +7 -0
- package/lib/esm/components/backoffice/shared/backofficeInlineFilterRow.css.js.map +1 -0
- package/lib/esm/components/backoffice/tools/BackofficeToolsDocPanel.js +41 -0
- package/lib/esm/components/backoffice/tools/BackofficeToolsDocPanel.js.map +1 -0
- package/lib/esm/components/backoffice/tools/BackofficeToolsErrorFallback.js +48 -0
- package/lib/esm/components/backoffice/tools/BackofficeToolsErrorFallback.js.map +1 -0
- package/lib/esm/components/backoffice/tools/BackofficeToolsJsonForm.js +63 -0
- package/lib/esm/components/backoffice/tools/BackofficeToolsJsonForm.js.map +1 -0
- package/lib/esm/components/backoffice/tools/BackofficeToolsQueryBoundary.js +35 -0
- package/lib/esm/components/backoffice/tools/BackofficeToolsQueryBoundary.js.map +1 -0
- package/lib/esm/components/backoffice/tools/backofficeToolsDocPanel.css.js +7 -0
- package/lib/esm/components/backoffice/tools/backofficeToolsDocPanel.css.js.map +1 -0
- package/lib/esm/components/backoffice/tools/backofficeToolsForm.css.js +7 -0
- package/lib/esm/components/backoffice/tools/backofficeToolsForm.css.js.map +1 -0
- package/lib/esm/components/backoffice/tools/backofficeToolsJsonForm.css.js +7 -0
- package/lib/esm/components/backoffice/tools/backofficeToolsJsonForm.css.js.map +1 -0
- package/lib/esm/components/backoffice/tools/parseToolJson.js +13 -0
- package/lib/esm/components/backoffice/tools/parseToolJson.js.map +1 -0
- package/lib/esm/filters/filterHelpers.js +26 -0
- package/lib/esm/filters/filterHelpers.js.map +1 -0
- package/lib/esm/hooks/useAuth.js +444 -0
- package/lib/esm/hooks/useAuth.js.map +1 -0
- package/lib/esm/hooks/useBackofficeAuth.js +89 -0
- package/lib/esm/hooks/useBackofficeAuth.js.map +1 -0
- package/lib/esm/hooks/useBackofficeInfiniteScrollSentinel.js +39 -0
- package/lib/esm/hooks/useBackofficeInfiniteScrollSentinel.js.map +1 -0
- package/lib/esm/hooks/useBackofficeListRefetch.js +50 -0
- package/lib/esm/hooks/useBackofficeListRefetch.js.map +1 -0
- package/lib/esm/{useBackofficeListUrlState-Ca6d7uIN.js → hooks/useBackofficeListUrlState.js} +2 -2
- package/lib/esm/hooks/useBackofficeListUrlState.js.map +1 -0
- package/lib/esm/hooks/useBackofficeLoadMore.js +18 -0
- package/lib/esm/hooks/useBackofficeLoadMore.js.map +1 -0
- package/lib/esm/hooks/useBackofficeSessionAuth.js +33 -0
- package/lib/esm/hooks/useBackofficeSessionAuth.js.map +1 -0
- package/lib/esm/hooks/useBackofficeSidebarPins.js +89 -0
- package/lib/esm/hooks/useBackofficeSidebarPins.js.map +1 -0
- package/lib/esm/hooks/useConditionalSubscription.js +63 -0
- package/lib/esm/hooks/useConditionalSubscription.js.map +1 -0
- package/lib/esm/hooks/useCopyToClipboard.js +31 -0
- package/lib/esm/hooks/useCopyToClipboard.js.map +1 -0
- package/lib/esm/hooks/useInfiniteConnection.js +95 -0
- package/lib/esm/hooks/useInfiniteConnection.js.map +1 -0
- package/lib/esm/hooks/useRefetchNeededReload.js +23 -0
- package/lib/esm/hooks/useRefetchNeededReload.js.map +1 -0
- package/lib/esm/hooks/useSidebarGroupCollapse.js +70 -0
- package/lib/esm/hooks/useSidebarGroupCollapse.js.map +1 -0
- package/lib/esm/i18n/createI18nInstance.js +68 -0
- package/lib/esm/i18n/createI18nInstance.js.map +1 -0
- package/lib/esm/i18n/locales/en/backofficeReact.js +436 -0
- package/lib/esm/i18n/locales/en/backofficeReact.js.map +1 -0
- package/lib/esm/i18n/locales/fr/backofficeReact.js +439 -0
- package/lib/esm/i18n/locales/fr/backofficeReact.js.map +1 -0
- package/lib/esm/i18n/mergeResourceLanguages.js +22 -0
- package/lib/esm/i18n/mergeResourceLanguages.js.map +1 -0
- package/lib/esm/i18n/resources.js +23 -0
- package/lib/esm/i18n/resources.js.map +1 -0
- package/lib/esm/i18n/useBackofficeFormats.js +23 -0
- package/lib/esm/i18n/useBackofficeFormats.js.map +1 -0
- package/lib/esm/i18n/useBackofficeReactTranslation.js +9 -0
- package/lib/esm/i18n/useBackofficeReactTranslation.js.map +1 -0
- package/lib/esm/i18n/useReviewStatusLabel.js +19 -0
- package/lib/esm/i18n/useReviewStatusLabel.js.map +1 -0
- package/lib/esm/index.js +73 -0
- package/lib/esm/modules/base64.js +21 -0
- package/lib/esm/modules/base64.js.map +1 -0
- package/lib/esm/modules/formatFileSize.js +28 -0
- package/lib/esm/modules/formatFileSize.js.map +1 -0
- package/lib/esm/modules/sharedSchemaTypes.js +0 -0
- package/lib/esm/modules/webauthn.js +33 -0
- package/lib/esm/modules/webauthn.js.map +1 -0
- package/lib/esm/node_modules/@babel/runtime/helpers/arrayLikeToArray.js +15 -0
- package/lib/esm/node_modules/@babel/runtime/helpers/arrayLikeToArray.js.map +1 -0
- package/lib/esm/node_modules/@babel/runtime/helpers/arrayWithoutHoles.js +15 -0
- package/lib/esm/node_modules/@babel/runtime/helpers/arrayWithoutHoles.js.map +1 -0
- package/lib/esm/node_modules/@babel/runtime/helpers/defineProperty.js +20 -0
- package/lib/esm/node_modules/@babel/runtime/helpers/defineProperty.js.map +1 -0
- package/lib/esm/node_modules/@babel/runtime/helpers/interopRequireDefault.js +13 -0
- package/lib/esm/node_modules/@babel/runtime/helpers/interopRequireDefault.js.map +1 -0
- package/lib/esm/node_modules/@babel/runtime/helpers/iterableToArray.js +13 -0
- package/lib/esm/node_modules/@babel/runtime/helpers/iterableToArray.js.map +1 -0
- package/lib/esm/node_modules/@babel/runtime/helpers/nonIterableSpread.js +13 -0
- package/lib/esm/node_modules/@babel/runtime/helpers/nonIterableSpread.js.map +1 -0
- package/lib/esm/node_modules/@babel/runtime/helpers/objectSpread2.js +33 -0
- package/lib/esm/node_modules/@babel/runtime/helpers/objectSpread2.js.map +1 -0
- package/lib/esm/node_modules/@babel/runtime/helpers/objectWithoutPropertiesLoose.js +19 -0
- package/lib/esm/node_modules/@babel/runtime/helpers/objectWithoutPropertiesLoose.js.map +1 -0
- package/lib/esm/node_modules/@babel/runtime/helpers/toConsumableArray.js +18 -0
- package/lib/esm/node_modules/@babel/runtime/helpers/toConsumableArray.js.map +1 -0
- package/lib/esm/node_modules/@babel/runtime/helpers/toPrimitive.js +22 -0
- package/lib/esm/node_modules/@babel/runtime/helpers/toPrimitive.js.map +1 -0
- package/lib/esm/node_modules/@babel/runtime/helpers/toPropertyKey.js +17 -0
- package/lib/esm/node_modules/@babel/runtime/helpers/toPropertyKey.js.map +1 -0
- package/lib/esm/node_modules/@babel/runtime/helpers/typeof.js +18 -0
- package/lib/esm/node_modules/@babel/runtime/helpers/typeof.js.map +1 -0
- package/lib/esm/node_modules/@babel/runtime/helpers/unsupportedIterableToArray.js +19 -0
- package/lib/esm/node_modules/@babel/runtime/helpers/unsupportedIterableToArray.js.map +1 -0
- package/lib/esm/node_modules/@vanilla-extract/recipes/dist/createRuntimeFn-62c9670f.esm.js +80 -0
- package/lib/esm/node_modules/@vanilla-extract/recipes/dist/createRuntimeFn-62c9670f.esm.js.map +1 -0
- package/lib/esm/node_modules/fbjs/lib/areEqual.js +42 -0
- package/lib/esm/node_modules/fbjs/lib/areEqual.js.map +1 -0
- package/lib/esm/node_modules/invariant/browser.js +30 -0
- package/lib/esm/node_modules/invariant/browser.js.map +1 -0
- package/lib/esm/node_modules/relay-test-utils/index.js +11 -0
- package/lib/esm/node_modules/relay-test-utils/index.js.map +1 -0
- package/lib/esm/node_modules/relay-test-utils/lib/RelayMockPayloadGenerator.js +288 -0
- package/lib/esm/node_modules/relay-test-utils/lib/RelayMockPayloadGenerator.js.map +1 -0
- package/lib/esm/node_modules/relay-test-utils/lib/RelayModernMockEnvironment.js +183 -0
- package/lib/esm/node_modules/relay-test-utils/lib/RelayModernMockEnvironment.js.map +1 -0
- package/lib/esm/node_modules/relay-test-utils/lib/RelayResolverTestUtils.js +19 -0
- package/lib/esm/node_modules/relay-test-utils/lib/RelayResolverTestUtils.js.map +1 -0
- package/lib/esm/node_modules/relay-test-utils/lib/index.js +21 -0
- package/lib/esm/node_modules/relay-test-utils/lib/index.js.map +1 -0
- package/lib/esm/node_modules/relay-test-utils/lib/unwrapContainer.js +16 -0
- package/lib/esm/node_modules/relay-test-utils/lib/unwrapContainer.js.map +1 -0
- package/lib/esm/pages/BackofficeAcceptInvitationPage.js +24 -0
- package/lib/esm/pages/BackofficeAcceptInvitationPage.js.map +1 -0
- package/lib/esm/pages/BackofficeDashboardPage.helpers.js +18 -0
- package/lib/esm/pages/BackofficeDashboardPage.helpers.js.map +1 -0
- package/lib/esm/pages/BackofficeDashboardPage.js +266 -0
- package/lib/esm/pages/BackofficeDashboardPage.js.map +1 -0
- package/lib/esm/pages/BackofficeEntityDetailLayoutPage.js +18 -0
- package/lib/esm/pages/BackofficeEntityDetailLayoutPage.js.map +1 -0
- package/lib/esm/pages/BackofficeEntityDetailPage.helpers.js +14 -0
- package/lib/esm/pages/BackofficeEntityDetailPage.helpers.js.map +1 -0
- package/lib/esm/pages/BackofficeEntityDetailPage.js +474 -0
- package/lib/esm/pages/BackofficeEntityDetailPage.js.map +1 -0
- package/lib/esm/pages/BackofficeEntityDetailPage.view-helpers.js +414 -0
- package/lib/esm/pages/BackofficeEntityDetailPage.view-helpers.js.map +1 -0
- package/lib/esm/{BackofficeEntityDetailUnknownPageRedirect-Iu4R3WvX.js → pages/BackofficeEntityDetailUnknownPageRedirect.js} +3 -3
- package/lib/esm/pages/BackofficeEntityDetailUnknownPageRedirect.js.map +1 -0
- package/lib/esm/pages/BackofficeEntityListPage.helpers.js +37 -0
- package/lib/esm/pages/BackofficeEntityListPage.helpers.js.map +1 -0
- package/lib/esm/pages/BackofficeEntityListPage.js +381 -0
- package/lib/esm/pages/BackofficeEntityListPage.js.map +1 -0
- package/lib/esm/{BackofficeHubPage-DOePQ8Fc.js → pages/BackofficeHubPage.js} +29 -28
- package/lib/esm/pages/BackofficeHubPage.js.map +1 -0
- package/lib/esm/pages/BackofficeLayoutPage.js +273 -0
- package/lib/esm/pages/BackofficeLayoutPage.js.map +1 -0
- package/lib/esm/pages/BackofficeLoginPage.js +47 -0
- package/lib/esm/pages/BackofficeLoginPage.js.map +1 -0
- package/lib/esm/{BackofficePasswordResetCompletePage-Cit5sdDm.js → pages/BackofficePasswordResetCompletePage.js} +16 -15
- package/lib/esm/pages/BackofficePasswordResetCompletePage.js.map +1 -0
- package/lib/esm/{BackofficePasswordResetRequestPage-B_TurHev.js → pages/BackofficePasswordResetRequestPage.js} +12 -12
- package/lib/esm/pages/BackofficePasswordResetRequestPage.js.map +1 -0
- package/lib/esm/{BackofficeVerifyEmailPage-DQbFIob1.js → pages/BackofficeVerifyEmailPage.js} +16 -15
- package/lib/esm/pages/BackofficeVerifyEmailPage.js.map +1 -0
- package/lib/esm/pages/backofficeDashboardPage.css.js +7 -0
- package/lib/esm/pages/backofficeDashboardPage.css.js.map +1 -0
- package/lib/esm/pages/backofficeEntityDetailPage.css.js +7 -0
- package/lib/esm/pages/backofficeEntityDetailPage.css.js.map +1 -0
- package/lib/esm/pages/backofficeEntityListPage.css.js +7 -0
- package/lib/esm/pages/backofficeEntityListPage.css.js.map +1 -0
- package/lib/esm/pages/dashboard/DashboardMetricGroup.js +25 -0
- package/lib/esm/pages/dashboard/DashboardMetricGroup.js.map +1 -0
- package/lib/esm/pages/dashboard/DashboardPanel.js +15 -0
- package/lib/esm/pages/dashboard/DashboardPanel.js.map +1 -0
- package/lib/esm/pages/dashboard/DashboardQuickActions.js +27 -0
- package/lib/esm/pages/dashboard/DashboardQuickActions.js.map +1 -0
- package/lib/esm/pages/dashboard/DashboardStatusList.js +28 -0
- package/lib/esm/pages/dashboard/DashboardStatusList.js.map +1 -0
- package/lib/esm/pages/dashboard/dashboardMetricGroup.css.js +8 -0
- package/lib/esm/pages/dashboard/dashboardMetricGroup.css.js.map +1 -0
- package/lib/esm/pages/dashboard/dashboardPanel.css.js +7 -0
- package/lib/esm/pages/dashboard/dashboardPanel.css.js.map +1 -0
- package/lib/esm/pages/dashboard/dashboardQuickActions.css.js +7 -0
- package/lib/esm/pages/dashboard/dashboardQuickActions.css.js.map +1 -0
- package/lib/esm/pages/dashboard/dashboardStatusList.css.js +7 -0
- package/lib/esm/pages/dashboard/dashboardStatusList.css.js.map +1 -0
- package/lib/esm/{BackofficeEntityDetailLayoutContext-C5G-PH28.js → pages/detail/BackofficeEntityDetailLayoutContext.js} +2 -2
- package/lib/esm/pages/detail/BackofficeEntityDetailLayoutContext.js.map +1 -0
- package/lib/esm/pages/detail/buildTabsItems.js +10 -0
- package/lib/esm/pages/detail/buildTabsItems.js.map +1 -0
- package/lib/esm/{pageResolution-CUaTq4Ql.js → pages/detail/pageResolution.js} +2 -2
- package/lib/esm/pages/detail/pageResolution.js.map +1 -0
- package/lib/esm/provider/BackofficeConfigContext.js +12 -0
- package/lib/esm/provider/BackofficeConfigContext.js.map +1 -0
- package/lib/esm/provider/BackofficeProvider.js +171 -0
- package/lib/esm/provider/BackofficeProvider.js.map +1 -0
- package/lib/esm/provider/entityRegistry.js +95 -0
- package/lib/esm/provider/entityRegistry.js.map +1 -0
- package/lib/esm/provider/lazyValue.js +14 -0
- package/lib/esm/provider/lazyValue.js.map +1 -0
- package/lib/esm/provider/types.js +0 -0
- package/lib/esm/provider/useBackofficeEntityLoader.js +141 -0
- package/lib/esm/provider/useBackofficeEntityLoader.js.map +1 -0
- package/lib/esm/{useBackofficeLazyValue-CW9xfRzQ.js → provider/useBackofficeLazyValue.js} +15 -7
- package/lib/esm/provider/useBackofficeLazyValue.js.map +1 -0
- package/lib/esm/relay/RelayProvider.js +13 -0
- package/lib/esm/relay/RelayProvider.js.map +1 -0
- package/lib/esm/relay/connectionUtils.js +19 -0
- package/lib/esm/relay/connectionUtils.js.map +1 -0
- package/lib/esm/relay/createInlineDataReader.js +2 -0
- package/lib/esm/relay/createInlineReader.js +7 -0
- package/lib/esm/relay/createInlineReader.js.map +1 -0
- package/lib/esm/relay/envHelpers.js +55 -0
- package/lib/esm/relay/envHelpers.js.map +1 -0
- package/lib/esm/{environment-DQfVyWHJ.js → relay/environment.js} +90 -100
- package/lib/esm/relay/environment.js.map +1 -0
- package/lib/esm/relay/identityView.js +6 -0
- package/lib/esm/relay/identityView.js.map +1 -0
- package/lib/esm/{mutationResult-C2Vb_vPt.js → relay/mutationResult.js} +2 -2
- package/lib/esm/relay/mutationResult.js.map +1 -0
- package/lib/esm/{useRelayEnvironment-vQ86aW-n.js → relay/useRelayEnvironment.js} +2 -2
- package/lib/esm/relay/useRelayEnvironment.js.map +1 -0
- package/lib/esm/{backofficeAuthPaths-2hHNn8D3.js → router/backofficeAuthPaths.js} +2 -2
- package/lib/esm/router/backofficeAuthPaths.js.map +1 -0
- package/lib/esm/router/createBackofficeRoutes.js +322 -0
- package/lib/esm/router/createBackofficeRoutes.js.map +1 -0
- package/lib/esm/storybook/relay/RelayStory.css.js +7 -0
- package/lib/esm/storybook/relay/RelayStory.css.js.map +1 -0
- package/lib/esm/storybook/relay/RelayStory.js +86 -0
- package/lib/esm/storybook/relay/RelayStory.js.map +1 -0
- package/lib/esm/storybook/relay/mockResolvers.js +99 -0
- package/lib/esm/storybook/relay/mockResolvers.js.map +1 -0
- package/lib/esm/storybook/relay/relay-test-utils.d.js +0 -0
- package/lib/esm/style.css +1 -1
- package/lib/esm/style.js +1 -0
- package/lib/esm/subscriptions/useCursorResumableSubscription.js +29 -0
- package/lib/esm/subscriptions/useCursorResumableSubscription.js.map +1 -0
- package/lib/types/auth/AuthRefreshNotice.d.ts +14 -0
- package/lib/types/auth/AuthRefreshNotice.d.ts.map +1 -0
- package/lib/types/auth/TotpQrCode.d.ts +17 -0
- package/lib/types/auth/TotpQrCode.d.ts.map +1 -0
- package/lib/types/auth/authRefreshNotice.css.d.ts +4 -0
- package/lib/types/auth/authRefreshNotice.css.d.ts.map +1 -0
- package/lib/types/components/backoffice/detail/BackofficeAuditMetadataPanel.d.ts +19 -0
- package/lib/types/components/backoffice/detail/BackofficeAuditMetadataPanel.d.ts.map +1 -0
- package/lib/types/components/backoffice/detail/BackofficeEntityRefLink.d.ts +15 -0
- package/lib/types/components/backoffice/detail/BackofficeEntityRefLink.d.ts.map +1 -0
- package/lib/types/components/backoffice/detail/BackofficeEntitySummaryHeader.d.ts +34 -0
- package/lib/types/components/backoffice/detail/BackofficeEntitySummaryHeader.d.ts.map +1 -0
- package/lib/types/components/backoffice/detail/BackofficeEnumLabel.d.ts +9 -0
- package/lib/types/components/backoffice/detail/BackofficeEnumLabel.d.ts.map +1 -0
- package/lib/types/components/backoffice/detail/BackofficeKpiStrip.d.ts +17 -0
- package/lib/types/components/backoffice/detail/BackofficeKpiStrip.d.ts.map +1 -0
- package/lib/types/components/backoffice/detail/BackofficeLifecycleTimelineSection.d.ts +20 -0
- package/lib/types/components/backoffice/detail/BackofficeLifecycleTimelineSection.d.ts.map +1 -0
- package/lib/types/components/backoffice/detail/BackofficePayloadInspectorSection.d.ts +15 -0
- package/lib/types/components/backoffice/detail/BackofficePayloadInspectorSection.d.ts.map +1 -0
- package/lib/types/components/backoffice/detail/BackofficeReferenceValue.d.ts +9 -0
- package/lib/types/components/backoffice/detail/BackofficeReferenceValue.d.ts.map +1 -0
- package/lib/types/components/backoffice/detail/BackofficeRelationsSummaryGrid.d.ts +17 -0
- package/lib/types/components/backoffice/detail/BackofficeRelationsSummaryGrid.d.ts.map +1 -0
- package/lib/types/components/backoffice/detail/BackofficeScopeStack.d.ts +13 -0
- package/lib/types/components/backoffice/detail/BackofficeScopeStack.d.ts.map +1 -0
- package/lib/types/components/backoffice/detail/BackofficeStatusMetaBadge.d.ts +13 -0
- package/lib/types/components/backoffice/detail/BackofficeStatusMetaBadge.d.ts.map +1 -0
- package/lib/types/components/backoffice/detail/BackofficeTokenUsageBreakdown.d.ts +18 -0
- package/lib/types/components/backoffice/detail/BackofficeTokenUsageBreakdown.d.ts.map +1 -0
- package/lib/types/components/backoffice/detail/BackofficeUsageCostBreakdown.d.ts +31 -0
- package/lib/types/components/backoffice/detail/BackofficeUsageCostBreakdown.d.ts.map +1 -0
- package/lib/types/components/backoffice/detail/backofficeAuditMetadataPanel.css.d.ts +5 -0
- package/lib/types/components/backoffice/detail/backofficeAuditMetadataPanel.css.d.ts.map +1 -0
- package/lib/types/components/backoffice/detail/backofficeEntitySummaryHeader.css.d.ts +12 -0
- package/lib/types/components/backoffice/detail/backofficeEntitySummaryHeader.css.d.ts.map +1 -0
- package/lib/types/components/backoffice/detail/backofficeKpiStrip.css.d.ts +5 -0
- package/lib/types/components/backoffice/detail/backofficeKpiStrip.css.d.ts.map +1 -0
- package/lib/types/components/backoffice/detail/backofficeLifecycleTimelineSection.css.d.ts +3 -0
- package/lib/types/components/backoffice/detail/backofficeLifecycleTimelineSection.css.d.ts.map +1 -0
- package/lib/types/components/backoffice/detail/backofficePayloadInspectorSection.css.d.ts +4 -0
- package/lib/types/components/backoffice/detail/backofficePayloadInspectorSection.css.d.ts.map +1 -0
- package/lib/types/components/backoffice/detail/backofficeReferenceValue.css.d.ts +3 -0
- package/lib/types/components/backoffice/detail/backofficeReferenceValue.css.d.ts.map +1 -0
- package/lib/types/components/backoffice/detail/backofficeRelationsSummaryGrid.css.d.ts +6 -0
- package/lib/types/components/backoffice/detail/backofficeRelationsSummaryGrid.css.d.ts.map +1 -0
- package/lib/types/components/backoffice/detail/backofficeScopeStack.css.d.ts +5 -0
- package/lib/types/components/backoffice/detail/backofficeScopeStack.css.d.ts.map +1 -0
- package/lib/types/components/backoffice/detail/backofficeStatusMetaBadge.css.d.ts +2 -0
- package/lib/types/components/backoffice/detail/backofficeStatusMetaBadge.css.d.ts.map +1 -0
- package/lib/types/components/backoffice/detail/backofficeUsageCostBreakdown.css.d.ts +7 -0
- package/lib/types/components/backoffice/detail/backofficeUsageCostBreakdown.css.d.ts.map +1 -0
- package/lib/types/components/backoffice/detail/createBackofficeEntityLinkProps.d.ts +30 -0
- package/lib/types/components/backoffice/detail/createBackofficeEntityLinkProps.d.ts.map +1 -0
- package/lib/types/components/backoffice/errors/BackofficeErrorBoundary.stories.d.ts +12 -0
- package/lib/types/components/backoffice/errors/BackofficeErrorBoundary.stories.d.ts.map +1 -0
- package/lib/types/components/backoffice/filters/EntityIdFilterField.stories.d.ts +12 -0
- package/lib/types/components/backoffice/filters/EntityIdFilterField.stories.d.ts.map +1 -0
- package/lib/types/components/backoffice/overview/BackofficeOverviewLayout.stories.d.ts +11 -0
- package/lib/types/components/backoffice/overview/BackofficeOverviewLayout.stories.d.ts.map +1 -0
- package/lib/types/components/backoffice/refs/BackofficeEntityLink.d.ts +15 -0
- package/lib/types/components/backoffice/refs/BackofficeEntityLink.d.ts.map +1 -0
- package/lib/types/components/backoffice/scaffolds/BackofficeTabbedDetailShell.stories.d.ts +11 -0
- package/lib/types/components/backoffice/scaffolds/BackofficeTabbedDetailShell.stories.d.ts.map +1 -0
- package/lib/types/components/backoffice/shared/BackofficeFormattedCurrency.d.ts +9 -0
- package/lib/types/components/backoffice/shared/BackofficeFormattedCurrency.d.ts.map +1 -0
- package/lib/types/components/backoffice/shared/BackofficeFormattedNumber.d.ts +9 -0
- package/lib/types/components/backoffice/shared/BackofficeFormattedNumber.d.ts.map +1 -0
- package/lib/types/components/backoffice/tools/BackofficeToolsDocPanel.d.ts +11 -0
- package/lib/types/components/backoffice/tools/BackofficeToolsDocPanel.d.ts.map +1 -0
- package/lib/types/components/backoffice/tools/BackofficeToolsErrorFallback.d.ts +8 -0
- package/lib/types/components/backoffice/tools/BackofficeToolsErrorFallback.d.ts.map +1 -0
- package/lib/types/components/backoffice/tools/BackofficeToolsJsonForm.d.ts +15 -0
- package/lib/types/components/backoffice/tools/BackofficeToolsJsonForm.d.ts.map +1 -0
- package/lib/types/components/backoffice/tools/BackofficeToolsQueryBoundary.d.ts +7 -0
- package/lib/types/components/backoffice/tools/BackofficeToolsQueryBoundary.d.ts.map +1 -0
- package/lib/types/components/backoffice/tools/backofficeToolsDocPanel.css.d.ts +8 -0
- package/lib/types/components/backoffice/tools/backofficeToolsDocPanel.css.d.ts.map +1 -0
- package/lib/types/components/backoffice/tools/backofficeToolsForm.css.d.ts +7 -0
- package/lib/types/components/backoffice/tools/backofficeToolsForm.css.d.ts.map +1 -0
- package/lib/types/components/backoffice/tools/backofficeToolsJsonForm.css.d.ts +4 -0
- package/lib/types/components/backoffice/tools/backofficeToolsJsonForm.css.d.ts.map +1 -0
- package/lib/types/components/backoffice/tools/parseToolJson.d.ts +2 -0
- package/lib/types/components/backoffice/tools/parseToolJson.d.ts.map +1 -0
- package/lib/types/hooks/useInfiniteConnection.d.ts +37 -0
- package/lib/types/hooks/useInfiniteConnection.d.ts.map +1 -0
- package/lib/types/i18n/resources.d.ts +54 -0
- package/lib/types/i18n/resources.d.ts.map +1 -1
- package/lib/types/index.d.ts +28 -0
- package/lib/types/index.d.ts.map +1 -1
- package/lib/types/relay/connectionUtils.d.ts +10 -0
- package/lib/types/relay/connectionUtils.d.ts.map +1 -0
- package/lib/types/storybook/relay/RelayStory.css.d.ts +5 -0
- package/lib/types/storybook/relay/RelayStory.css.d.ts.map +1 -0
- package/lib/types/storybook/relay/RelayStory.d.ts +35 -0
- package/lib/types/storybook/relay/RelayStory.d.ts.map +1 -0
- package/lib/types/storybook/relay/mockResolvers.d.ts +3 -0
- package/lib/types/storybook/relay/mockResolvers.d.ts.map +1 -0
- package/lib/types/subscriptions/useCursorResumableSubscription.d.ts +16 -0
- package/lib/types/subscriptions/useCursorResumableSubscription.d.ts.map +1 -0
- package/package.json +24 -9
- package/lib/esm/AcceptInvitationScreen-VaWXQPHp.js.map +0 -1
- package/lib/esm/AuthPanel-BaIRFGbX.js.map +0 -1
- package/lib/esm/BackofficeAcceptInvitationPage-tpfBfhT9.js +0 -24
- package/lib/esm/BackofficeAcceptInvitationPage-tpfBfhT9.js.map +0 -1
- package/lib/esm/BackofficeDashboardPage-D5W36DY-.js +0 -329
- package/lib/esm/BackofficeDashboardPage-D5W36DY-.js.map +0 -1
- package/lib/esm/BackofficeDetailPayload-CZcsDv2w.js +0 -98
- package/lib/esm/BackofficeDetailPayload-CZcsDv2w.js.map +0 -1
- package/lib/esm/BackofficeEntityDetailLayoutContext-C5G-PH28.js.map +0 -1
- package/lib/esm/BackofficeEntityDetailLayoutPage-BSgGBzSL.js +0 -18
- package/lib/esm/BackofficeEntityDetailLayoutPage-BSgGBzSL.js.map +0 -1
- package/lib/esm/BackofficeEntityDetailPage-LB1uEJVM.js +0 -1061
- package/lib/esm/BackofficeEntityDetailPage-LB1uEJVM.js.map +0 -1
- package/lib/esm/BackofficeEntityDetailUnknownPageRedirect-Iu4R3WvX.js.map +0 -1
- package/lib/esm/BackofficeEntityListPage-D_zL-qRb.js +0 -432
- package/lib/esm/BackofficeEntityListPage-D_zL-qRb.js.map +0 -1
- package/lib/esm/BackofficeHubPage-DOePQ8Fc.js.map +0 -1
- package/lib/esm/BackofficeHubTemplate-C6K55egX.js +0 -82
- package/lib/esm/BackofficeHubTemplate-C6K55egX.js.map +0 -1
- package/lib/esm/BackofficeLayoutPage-Bq2bKkYF.js +0 -783
- package/lib/esm/BackofficeLayoutPage-Bq2bKkYF.js.map +0 -1
- package/lib/esm/BackofficeListToolbar-loFfIPtP.js +0 -109
- package/lib/esm/BackofficeListToolbar-loFfIPtP.js.map +0 -1
- package/lib/esm/BackofficeLoginPage-DIlcOueK.js +0 -46
- package/lib/esm/BackofficeLoginPage-DIlcOueK.js.map +0 -1
- package/lib/esm/BackofficePasswordResetCompletePage-Cit5sdDm.js.map +0 -1
- package/lib/esm/BackofficePasswordResetRequestPage-B_TurHev.js.map +0 -1
- package/lib/esm/BackofficeRightPageLayout-CfNkrMvH.js +0 -83
- package/lib/esm/BackofficeRightPageLayout-CfNkrMvH.js.map +0 -1
- package/lib/esm/BackofficeTopbarPortalContext-Da5XFatM.js.map +0 -1
- package/lib/esm/BackofficeVerifyEmailPage-DQbFIob1.js.map +0 -1
- package/lib/esm/EntityIdPickerDialog-BSn0v3bv.js +0 -340
- package/lib/esm/EntityIdPickerDialog-BSn0v3bv.js.map +0 -1
- package/lib/esm/LazyBackofficeEntityActionFormDialog-oRd_WHAK.js +0 -670
- package/lib/esm/LazyBackofficeEntityActionFormDialog-oRd_WHAK.js.map +0 -1
- package/lib/esm/PasswordResetCompleteScreen-Cgg96DPo.js.map +0 -1
- package/lib/esm/PasswordResetRequestScreen-I1nFvGLd.js.map +0 -1
- package/lib/esm/VerifyEmailScreen-Br5KyHjg.js.map +0 -1
- package/lib/esm/backoffice-react.js +0 -1925
- package/lib/esm/backoffice-react.js.map +0 -1
- package/lib/esm/backofficeAuthPaths-2hHNn8D3.js.map +0 -1
- package/lib/esm/buildBreadcrumbs-C5St167Y.js.map +0 -1
- package/lib/esm/environment-DQfVyWHJ.js.map +0 -1
- package/lib/esm/loginPage.css-B7Io_DuU.js +0 -6
- package/lib/esm/loginPage.css-B7Io_DuU.js.map +0 -1
- package/lib/esm/mutationResult-C2Vb_vPt.js.map +0 -1
- package/lib/esm/pageResolution-CUaTq4Ql.js.map +0 -1
- package/lib/esm/synchronizeAuthStatusQuery-DNJR5MfH.js +0 -323
- package/lib/esm/synchronizeAuthStatusQuery-DNJR5MfH.js.map +0 -1
- package/lib/esm/useAuth-CWf8ZspF.js +0 -548
- package/lib/esm/useAuth-CWf8ZspF.js.map +0 -1
- package/lib/esm/useBackofficeAuth-Da7FPNys.js +0 -89
- package/lib/esm/useBackofficeAuth-Da7FPNys.js.map +0 -1
- package/lib/esm/useBackofficeLazyValue-CW9xfRzQ.js.map +0 -1
- package/lib/esm/useBackofficeListUrlState-Ca6d7uIN.js.map +0 -1
- package/lib/esm/useBackofficeReactTranslation-Btt58EIo.js +0 -18
- package/lib/esm/useBackofficeReactTranslation-Btt58EIo.js.map +0 -1
- package/lib/esm/useRelayEnvironment-vQ86aW-n.js.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BackofficeEntityDetailPage.js","names":[],"sources":["../../../src/pages/BackofficeEntityDetailPage.tsx"],"sourcesContent":["/* eslint-disable no-ternary */\nimport { type JSX, type ReactNode, useContext, useMemo, useState } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport {\n commitMutation,\n type PreloadedQuery,\n useFragment,\n usePreloadedQuery,\n} from 'react-relay';\nimport type { OperationType } from 'relay-runtime';\nimport { resolveMutationOutcome } from '../relay/mutationResult.js';\nimport { setWhereValue } from '@plumile/backoffice-core/filters/where.js';\nimport {\n buildBackofficeFallbackListHref,\n buildBackofficeListHref,\n buildBackofficeListLink,\n} from '@plumile/backoffice-core/state/buildListHref.js';\n\nimport { BACKOFFICE_DATE_TIME_OPTIONS } from '@plumile/backoffice-core/constants.js';\nimport type {\n BackofficeResolvedDetailLayoutFacetConfigBase,\n BackofficeResolvedDetailPageFacetConfig,\n BackofficeResolvedDetailPageFacetConfigBase,\n} from '@plumile/backoffice-core/types.js';\nimport {\n BackofficeKeyValueList,\n BackofficePageHeader,\n BackofficeRelationsMenu,\n BackofficeTabs,\n type BackofficeRelationsMenuItem,\n Button,\n ChatCheckSvg,\n DataTable,\n DetailPageTemplate,\n FormattedDate,\n HighlightCode,\n KeyOffSvg,\n KeySvg,\n LazyBackofficeJsonViewer,\n LinkButton,\n LockOpenSvg,\n LockSvg,\n RobotCheckSvg,\n RobotXSvg,\n RocketOffSvg,\n RocketSvg,\n SettingsCheckSvg,\n SettingsXSvg,\n ShieldLockSvg,\n ShieldOffSvg,\n Tag,\n useToast,\n XBadgeSvg,\n} from '@plumile/ui';\nimport { HttpRedirect, Link, RoutingContext } from '@plumile/router';\n\nimport { buildDataTableColumns } from '../components/backoffice/columns/buildDataTableColumns.js';\nimport { BackofficeEntityDetailScaffold } from '../components/backoffice/scaffolds/BackofficeEntityDetailScaffold.js';\nimport { BackofficeDetailBadgeRow } from '../components/backoffice/detail/BackofficeDetailBadgeRow.js';\nimport { BackofficeDetailFlagTag } from '../components/backoffice/detail/BackofficeDetailFlagTag.js';\nimport { BackofficeDetailTaggedValue } from '../components/backoffice/detail/BackofficeDetailTaggedValue.js';\nimport { BackofficeDetailPayload } from '../components/backoffice/detail/BackofficeDetailPayload.js';\nimport { BackofficeDetailErrorList } from '../components/backoffice/detail/BackofficeDetailErrorList.js';\nimport { BackofficeDetailRelationListBlock } from '../components/backoffice/detail/BackofficeDetailRelationListBlock.js';\nimport { BackofficeDetailSection } from '../components/backoffice/detail/BackofficeDetailSection.js';\nimport { LazyBackofficeEntityActionFormDialog } from '../components/backoffice/actions/LazyBackofficeEntityActionFormDialog.js';\nimport {\n resolveToastSpec,\n resolveToastViewActions,\n} from '../components/backoffice/actions/toastViewAction.js';\nimport * as pageStyles from './backofficeEntityDetailPage.css.js';\nimport { useBackofficeFormats } from '../i18n/useBackofficeFormats.js';\nimport { useBackofficeReactTranslation } from '../i18n/useBackofficeReactTranslation.js';\nimport { useBackofficeConfig } from '../provider/BackofficeConfigContext.js';\nimport { useRelayEnvironment } from '../relay/useRelayEnvironment.js';\nimport { useBackofficeEntityDetailLayoutContext } from './detail/BackofficeEntityDetailLayoutContext.js';\nimport { buildTabsItems } from './detail/buildTabsItems.js';\nimport { resolveVisibleDetailPages } from './detail/pageResolution.js';\nimport { BackofficeRightPageLayout } from '../components/backoffice/layout/breadcrumb/BackofficeRightPageLayout.js';\nimport { buildEntityDetailBreadcrumb } from '../components/backoffice/layout/breadcrumb/buildBreadcrumbs.js';\nimport {\n extractMutationPayload,\n isFormMutationAction,\n isMutationAction,\n isRouteAction,\n resolveLabel,\n} from './BackofficeEntityDetailPage.helpers.js';\nimport {\n buildFieldItems,\n renderBlocks,\n resolveHeaderItems,\n type FlagIconName,\n} from './BackofficeEntityDetailPage.view-helpers.js';\n\nexport type BackofficeEntityDetailPageProps = {\n config: BackofficeResolvedDetailLayoutFacetConfigBase;\n prepared: {\n id: string;\n detailId?: string;\n pageConfig: BackofficeResolvedDetailPageFacetConfigBase;\n pageQuery: PreloadedQuery<OperationType>;\n pageId: string;\n pagePath: string;\n };\n};\n\nconst renderFlagIcon = (iconName: FlagIconName): JSX.Element => {\n const iconSize = 14;\n switch (iconName) {\n case 'shield-lock':\n return (\n <ShieldLockSvg width={iconSize} height={iconSize} aria-hidden=\"true\" />\n );\n case 'shield-off':\n return (\n <ShieldOffSvg width={iconSize} height={iconSize} aria-hidden=\"true\" />\n );\n case 'settings-check':\n return (\n <SettingsCheckSvg\n width={iconSize}\n height={iconSize}\n aria-hidden=\"true\"\n />\n );\n case 'settings-x':\n return (\n <SettingsXSvg width={iconSize} height={iconSize} aria-hidden=\"true\" />\n );\n case 'x-badge':\n return (\n <XBadgeSvg width={iconSize} height={iconSize} aria-hidden=\"true\" />\n );\n case 'chat-check':\n return (\n <ChatCheckSvg width={iconSize} height={iconSize} aria-hidden=\"true\" />\n );\n case 'key':\n return <KeySvg width={iconSize} height={iconSize} aria-hidden=\"true\" />;\n case 'key-off':\n return (\n <KeyOffSvg width={iconSize} height={iconSize} aria-hidden=\"true\" />\n );\n case 'lock':\n return <LockSvg width={iconSize} height={iconSize} aria-hidden=\"true\" />;\n case 'lock-open':\n return (\n <LockOpenSvg width={iconSize} height={iconSize} aria-hidden=\"true\" />\n );\n case 'robot-check':\n return (\n <RobotCheckSvg width={iconSize} height={iconSize} aria-hidden=\"true\" />\n );\n case 'robot-x':\n return (\n <RobotXSvg width={iconSize} height={iconSize} aria-hidden=\"true\" />\n );\n case 'rocket':\n return (\n <RocketSvg width={iconSize} height={iconSize} aria-hidden=\"true\" />\n );\n case 'rocket-off':\n return (\n <RocketOffSvg width={iconSize} height={iconSize} aria-hidden=\"true\" />\n );\n default:\n throw new Error(`Unsupported flag icon: ${String(iconName)}`);\n }\n};\n\nconst resolveDetailPlacement = (item: {\n placement?: 'primary' | 'secondary';\n presentation?: {\n group?: string;\n desktop?: 'primary' | 'secondary' | 'fullWidth';\n };\n kind?: string;\n fields?: readonly {\n presentation?: {\n group?: string;\n desktop?: 'primary' | 'secondary' | 'fullWidth';\n };\n }[];\n}): 'primary' | 'secondary' => {\n if (item.presentation?.desktop === 'secondary') {\n return 'secondary';\n }\n if (\n item.presentation?.group === 'scope' ||\n item.presentation?.group === 'status'\n ) {\n return 'secondary';\n }\n const fieldGroups =\n item.fields?.map((field) => {\n return field.presentation?.group;\n }) ?? [];\n if (\n fieldGroups.length > 0 &&\n fieldGroups.every((group) => {\n return group === 'scope' || group === 'status';\n })\n ) {\n return 'secondary';\n }\n return item.placement ?? 'primary';\n};\n\nconst BackofficeEntityDetailPageContent = ({\n config,\n prepared,\n}: {\n config: BackofficeResolvedDetailPageFacetConfig;\n prepared: {\n pageQuery: PreloadedQuery<OperationType>;\n id: string;\n detailId?: string;\n pageId: string;\n pagePath: string;\n };\n}): JSX.Element => {\n const { t: tApp } = useTranslation();\n const { t } = useBackofficeReactTranslation();\n const { formatNumber, formatCurrency, formatPercent } =\n useBackofficeFormats();\n const { entities, entityRegistry } = useBackofficeConfig();\n const { layoutView } = useBackofficeEntityDetailLayoutContext();\n const routing = useContext(RoutingContext);\n const environment = useRelayEnvironment();\n const toast = useToast();\n const [actionState, setActionState] = useState<Record<string, boolean>>({});\n const [activeFormActionId, setActiveFormActionId] = useState<string | null>(\n null,\n );\n const resolvedPages = resolveVisibleDetailPages({\n mainPage: config.pages.mainPage,\n subPages: config.pages.subPages,\n activePagePath: prepared.pagePath,\n node: layoutView as never,\n });\n const activePage = resolvedPages.activePage ?? config.pages.mainPage;\n const pages =\n resolvedPages.pages.length > 0\n ? resolvedPages.pages\n : [config.pages.mainPage];\n\n const setActionLoading = (actionId: string, isLoading: boolean) => {\n setActionState((prev) => {\n if (prev[actionId] === isLoading) {\n return prev;\n }\n return { ...prev, [actionId]: isLoading };\n });\n };\n\n const { page } = config;\n\n const pageQueryData = usePreloadedQuery(page.query, prepared.pageQuery);\n const pageNodeRef = page.resolveNode(pageQueryData, {\n id: prepared.id,\n detailId: prepared.detailId,\n });\n const hasPageNode = pageNodeRef != null;\n const resolvedNode = useFragment(page.fragment, pageNodeRef as never);\n const relationEntityListRoutes = useMemo(() => {\n return Object.fromEntries(\n page.content\n .flatMap((block) => {\n if (block.kind !== 'section') {\n return [];\n }\n\n return block.fields.flatMap((field) => {\n if (field.type !== 'relation') {\n return [];\n }\n return [field.relation.target];\n });\n })\n .flatMap((entityId) => {\n const entityManifest = entities[entityId];\n if (entityManifest?.hasList !== true) {\n return [];\n }\n return [[entityId, entityManifest.routes.list]];\n }),\n );\n }, [entities, page.content]);\n\n if (!hasPageNode) {\n throw new HttpRedirect(config.routes.list);\n }\n\n return (\n <BackofficeEntityDetailScaffold\n node={resolvedNode}\n render={(node) => {\n const view = page.toView(node);\n const tabsItems = buildTabsItems({\n 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 resolveRelationItem = ({\n id,\n label,\n count,\n relation,\n listRoute,\n value,\n where,\n }: {\n id: string;\n label: string;\n count: number | null;\n relation: {\n target: string;\n filterId?: string;\n whereKey: string;\n path?: readonly string[];\n };\n listRoute: string;\n value: string;\n where: Record<string, unknown>;\n }): BackofficeRelationsMenuItem => {\n const { target, filterId, whereKey, path } = relation;\n const loadedEntity = entityRegistry.getLoadedListEntity(target);\n return {\n id,\n label,\n count,\n href:\n loadedEntity == null\n ? buildBackofficeFallbackListHref(listRoute, where, [\n {\n id:\n filterId ??\n (path == null\n ? whereKey\n : `${whereKey}.${path.join('.')}`),\n value,\n },\n ])\n : buildBackofficeListHref(loadedEntity.config, { where }),\n onClick: async (event) => {\n if (\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\n const listEntity = await entityRegistry.loadListEntity(target);\n const next = buildBackofficeListLink(listEntity.config, {\n where,\n });\n\n routing.history.push({\n pathname: next.pathname,\n search: next.search === '' ? '' : `?${next.search}`,\n hash: '',\n });\n },\n };\n };\n\n const header = resolveHeaderItems(config.header, layoutView, {\n tApp,\n t,\n resolveEntityHref,\n renderLink: (href, label) => {\n return <Link to={href}>{label}</Link>;\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 });\n\n const actions = page.actions ?? [];\n let headerActionButtons: ReactNode[] = [];\n if (actions.length > 0) {\n const visibleActions = actions.filter((action) => {\n if (action.isVisible == null) {\n return true;\n }\n return action.isVisible(view);\n });\n\n if (visibleActions.length > 0) {\n headerActionButtons = visibleActions.map((action) => {\n const label = resolveLabel(action.label, tApp);\n const ariaLabel =\n action.ariaLabel != null\n ? resolveLabel(action.ariaLabel, tApp)\n : label;\n const variant = action.variant ?? 'secondary';\n const size = action.size ?? 'small';\n const isLoading = actionState[action.id] ?? false;\n const isDisabled =\n isLoading || action.isDisabled?.(view) === true;\n\n if (isRouteAction(action)) {\n const href = action.to(view);\n return (\n <LinkButton\n key={action.id}\n to={href}\n variant={variant}\n size={size}\n isDisabled={isDisabled}\n aria-label={ariaLabel}\n >\n {label}\n </LinkButton>\n );\n }\n\n if (isFormMutationAction(action)) {\n return (\n <Button\n key={action.id}\n type=\"button\"\n variant={variant}\n size={size}\n isLoading={false}\n disabled={isDisabled}\n onClick={() => {\n setActiveFormActionId(action.id);\n }}\n aria-label={ariaLabel}\n >\n {label}\n </Button>\n );\n }\n\n if (isMutationAction(action)) {\n const handleClick = () => {\n if (isLoading) {\n return;\n }\n const variables = action.getVariables(view);\n setActionLoading(action.id, true);\n commitMutation(environment, {\n mutation: action.mutation,\n variables,\n updater: (store) => {\n action.updater?.(store, view);\n },\n onCompleted: (response) => {\n setActionLoading(action.id, false);\n const mutationPayload = extractMutationPayload(response);\n if (mutationPayload != null) {\n let defaultErrorMessage = t(\n 'actions.form.errors.invalidPayload',\n );\n if (action.toasts?.error?.message != null) {\n defaultErrorMessage = resolveLabel(\n action.toasts.error.message,\n tApp,\n );\n } else if (action.toasts?.error?.title != null) {\n defaultErrorMessage = resolveLabel(\n action.toasts.error.title,\n tApp,\n );\n }\n\n const outcome = resolveMutationOutcome(\n mutationPayload,\n {\n defaultErrorMessage,\n mapReason: (reason) => {\n const mapped = action.mapErrorReason?.(\n reason,\n view,\n );\n if (mapped == null) {\n return null;\n }\n if (typeof mapped === 'function') {\n return resolveLabel(mapped, tApp);\n }\n return String(mapped);\n },\n },\n );\n if (!outcome.ok) {\n const error = new Error(outcome.message);\n action.onError?.(error, view);\n if (action.toasts?.error != null) {\n const toastSpec = resolveToastSpec(\n action.toasts.error,\n tApp,\n );\n toast.error(toastSpec.title, toastSpec.message);\n }\n return;\n }\n }\n\n action.onCompleted?.(response, view);\n if (action.toasts?.success != null) {\n const toastSpec = resolveToastSpec(\n action.toasts.success,\n tApp,\n );\n const toastActions = resolveToastViewActions({\n toast: action.toasts.success,\n response,\n node: view,\n tApp,\n entities,\n defaultLabel: t('actions.view'),\n navigateTo: (to) => {\n routing?.history.push({ pathname: to });\n },\n });\n toast.push({\n kind: 'info',\n title: toastSpec.title,\n message: toastSpec.message,\n actions: toastActions,\n });\n }\n },\n onError: (error) => {\n setActionLoading(action.id, false);\n action.onError?.(error, view);\n if (action.toasts?.error != null) {\n const toastSpec = resolveToastSpec(\n action.toasts.error,\n tApp,\n );\n toast.error(toastSpec.title, toastSpec.message);\n }\n },\n });\n };\n\n return (\n <Button\n key={action.id}\n type=\"button\"\n variant={variant}\n size={size}\n isLoading={isLoading}\n disabled={isDisabled}\n onClick={handleClick}\n aria-label={ariaLabel}\n >\n {label}\n </Button>\n );\n }\n\n return null;\n });\n }\n }\n\n const activeFormAction = actions.find((action) => {\n return action.id === activeFormActionId;\n });\n\n const { content } = page;\n\n const primaryNodes: ReactNode[] = [];\n const secondaryNodes: ReactNode[] = [];\n const relationMenuItems: BackofficeRelationsMenuItem[] = [];\n\n content.forEach((item, index) => {\n const placement = resolveDetailPlacement(item);\n const targetNodes =\n placement === 'secondary' ? secondaryNodes : primaryNodes;\n\n if (item.kind === 'section') {\n const sectionLabel = resolveLabel(item.title, tApp);\n const description =\n item.description != null\n ? resolveLabel(item.description, tApp)\n : undefined;\n const { items, relationItems, customNodes } = buildFieldItems(\n item.fields,\n view,\n {\n tApp,\n t,\n resolveEntityHref,\n formatNumber,\n formatCurrency,\n formatPercent,\n relationEntityListRoutes,\n resolveRelationItem,\n setWhereValue,\n renderTag: (tone, label) => {\n return <Tag tone={tone}>{label}</Tag>;\n },\n renderBadgeRow: (items) => {\n return <BackofficeDetailBadgeRow items={items} />;\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 renderFlagTag: (tag) => {\n return (\n <BackofficeDetailFlagTag\n tone={tag.tone}\n icon={\n tag.iconName != null\n ? renderFlagIcon(tag.iconName)\n : undefined\n }\n label={tag.label}\n />\n );\n },\n renderLink: (href, label) => {\n return <Link to={href}>{label}</Link>;\n },\n renderTaggedValue: (tag, value) => {\n return (\n <BackofficeDetailTaggedValue\n tag={tag as never}\n value={value}\n />\n );\n },\n wrapCustomNode: (id, custom) => {\n return <div key={id}>{custom}</div>;\n },\n },\n );\n relationItems.forEach((relation) => {\n if (\n !relationMenuItems.some((entry) => {\n return entry.id === relation.id;\n })\n ) {\n relationMenuItems.push(relation);\n }\n });\n\n const hasContent = items.length > 0 || customNodes.length > 0;\n\n if (!hasContent) {\n return;\n }\n\n targetNodes.push(\n <BackofficeDetailSection\n key={`${sectionLabel}-${index}`}\n title={sectionLabel}\n description={description}\n items={items.length > 0 ? items : undefined}\n >\n {customNodes}\n </BackofficeDetailSection>,\n );\n return;\n }\n\n const rendered = renderBlocks([item], view, {\n tApp,\n t,\n resolveEntityHref,\n keyPrefix: String(index),\n renderCustomSection: (key, title, child) => {\n return (\n <BackofficeDetailSection key={key} title={title}>\n {child}\n </BackofficeDetailSection>\n );\n },\n wrapCustomNode: (key, custom) => {\n return <div key={key}>{custom}</div>;\n },\n renderRelationList: ({ key, title, relation, value }) => {\n return (\n <BackofficeDetailRelationListBlock\n key={key}\n title={title}\n relation={relation}\n value={value ?? null}\n />\n );\n },\n resolveTableColumns: (columns) => {\n return buildDataTableColumns(columns as never, {\n tApp,\n t,\n resolveEntityHref,\n });\n },\n renderTable: ({ key, title, description, columns, rows }) => {\n return (\n <BackofficeDetailSection\n key={key}\n title={title}\n description={description}\n >\n <DataTable\n columns={columns as never}\n rows={rows}\n getRowId={(row, rowIndex) => {\n if (row != null && typeof row === 'object') {\n const record = row as Record<string, unknown>;\n const maybeId = record.id;\n if (\n typeof maybeId === 'string' &&\n maybeId.trim() !== ''\n ) {\n return maybeId;\n }\n }\n return String(rowIndex);\n }}\n />\n </BackofficeDetailSection>\n );\n },\n renderJson: ({\n key,\n title,\n description,\n value,\n defaultCollapsed,\n }) => {\n const content = (\n <BackofficeDetailSection\n key={key}\n title={title}\n description={description}\n >\n <LazyBackofficeJsonViewer value={value} title={title} />\n </BackofficeDetailSection>\n );\n if (defaultCollapsed !== true) {\n return content;\n }\n return (\n <details key={key}>\n <summary>{title}</summary>\n {content}\n </details>\n );\n },\n renderCode: ({ key, title, description, value, outputLabel }) => {\n return (\n <BackofficeDetailSection\n key={key}\n title={title}\n description={description}\n >\n <HighlightCode\n badgeLabel={outputLabel}\n copyCode={value}\n fallbackCodeText={value}\n />\n </BackofficeDetailSection>\n );\n },\n renderPayload: ({ key, title, description, content, format }) => {\n return (\n <BackofficeDetailPayload\n key={key}\n title={title}\n description={description}\n content={content}\n format={format as never}\n />\n );\n },\n renderErrorList: ({ key, title, description, items }) => {\n return (\n <BackofficeDetailErrorList\n key={key}\n title={title}\n description={description}\n items={items as never}\n />\n );\n },\n renderKeyValueListSection: ({ key, title, description, items }) => {\n return (\n <BackofficeDetailSection\n key={key}\n title={title}\n description={description}\n >\n <BackofficeKeyValueList items={items} />\n </BackofficeDetailSection>\n );\n },\n });\n const blockNode = rendered[0];\n if (blockNode != null) {\n targetNodes.push(blockNode);\n }\n });\n\n const relationsMenuNode =\n relationMenuItems.length > 0 ? (\n <BackofficeRelationsMenu\n label={t('relations.menu.label')}\n items={relationMenuItems}\n />\n ) : null;\n\n const headerActions =\n headerActionButtons.length > 0 || relationsMenuNode != null ? (\n <div className={pageStyles.headerActions}>\n {headerActionButtons.length > 0 && (\n <div className={pageStyles.headerActionGroup}>\n {headerActionButtons}\n </div>\n )}\n {relationsMenuNode != null && (\n <div className={pageStyles.headerRelationGroup}>\n {relationsMenuNode}\n </div>\n )}\n </div>\n ) : undefined;\n\n const headerMetaNode =\n header.status != null || header.badges != null ? (\n <div className={pageStyles.headerMeta}>\n {header.status}\n {header.badges}\n </div>\n ) : undefined;\n\n const headerItemsNode =\n header.items != null && header.items.length > 0 ? (\n <div className={pageStyles.headerMetaList}>\n <BackofficeKeyValueList items={header.items} />\n </div>\n ) : null;\n\n const hasAside = secondaryNodes.length > 0;\n let tabsNode: JSX.Element | null = null;\n if (pages.length > 1) {\n tabsNode = (\n <BackofficeTabs\n items={tabsItems}\n activeId={activePage.id}\n onChange={() => {}}\n variant=\"underline\"\n />\n );\n }\n const headerNode = (\n <div className={pageStyles.headerBlock}>\n <BackofficePageHeader\n title={header.title}\n subtitle={header.subtitle}\n actions={headerActions}\n meta={headerMetaNode}\n />\n {headerItemsNode}\n </div>\n );\n\n return (\n <BackofficeRightPageLayout breadcrumb={breadcrumb}>\n <DetailPageTemplate\n headerNode={headerNode}\n tabsNode={tabsNode}\n sidePanel={hasAside ? <>{secondaryNodes}</> : undefined}\n sidePanelVariant=\"plain\"\n headerDensity=\"compact\"\n >\n <>{primaryNodes}</>\n </DetailPageTemplate>\n {activeFormAction != null &&\n isFormMutationAction(activeFormAction) && (\n <LazyBackofficeEntityActionFormDialog\n isOpen\n action={activeFormAction}\n node={view}\n onClose={() => {\n setActiveFormActionId(null);\n }}\n />\n )}\n </BackofficeRightPageLayout>\n );\n }}\n />\n );\n};\n\nexport const BackofficeEntityDetailPage = ({\n config,\n prepared,\n}: BackofficeEntityDetailPageProps): JSX.Element => {\n const { layoutView } = useBackofficeEntityDetailLayoutContext();\n\n const resolvedPages = resolveVisibleDetailPages({\n mainPage: config.pages.mainPage,\n subPages: config.pages.subPages,\n activePagePath: prepared.pagePath,\n node: layoutView as never,\n });\n\n if (!resolvedPages.hasVisiblePages || resolvedPages.activePage == null) {\n throw new HttpRedirect(config.routes.list);\n }\n\n if (resolvedPages.activePage.id !== prepared.pageId) {\n throw new HttpRedirect(\n config.routes.detailPage(prepared.id, resolvedPages.activePage.id),\n );\n }\n\n return (\n <BackofficeEntityDetailPageContent\n config={prepared.pageConfig}\n prepared={prepared}\n />\n );\n};\n\nexport default BackofficeEntityDetailPage;\n"],"mappings":"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"}
|
|
@@ -0,0 +1,414 @@
|
|
|
1
|
+
import { isEmptyText as e, resolveBadgeTone as t, resolveLabel as n, resolveRelationValue as r, resolveValueLabel as i } from "./BackofficeEntityDetailPage.helpers.js";
|
|
2
|
+
import { Fragment as a, createElement as o } from "react";
|
|
3
|
+
//#region src/pages/BackofficeEntityDetailPage.view-helpers.ts
|
|
4
|
+
var s = (e, t, n) => {
|
|
5
|
+
switch (e) {
|
|
6
|
+
case "yesNo": return t ? {
|
|
7
|
+
tone: "success",
|
|
8
|
+
label: n("common.boolean.yes")
|
|
9
|
+
} : {
|
|
10
|
+
tone: "neutral",
|
|
11
|
+
label: n("common.boolean.no")
|
|
12
|
+
};
|
|
13
|
+
case "capability": return t ? {
|
|
14
|
+
tone: "success",
|
|
15
|
+
label: n("flags.capability.allowed"),
|
|
16
|
+
iconName: "shield-lock"
|
|
17
|
+
} : {
|
|
18
|
+
tone: "neutral",
|
|
19
|
+
label: n("flags.capability.denied"),
|
|
20
|
+
iconName: "shield-off"
|
|
21
|
+
};
|
|
22
|
+
case "enabled": return t ? {
|
|
23
|
+
tone: "success",
|
|
24
|
+
label: n("flags.enabled.enabled"),
|
|
25
|
+
iconName: "settings-check"
|
|
26
|
+
} : {
|
|
27
|
+
tone: "neutral",
|
|
28
|
+
label: n("flags.enabled.disabled"),
|
|
29
|
+
iconName: "settings-x"
|
|
30
|
+
};
|
|
31
|
+
case "failure": return t ? {
|
|
32
|
+
tone: "danger",
|
|
33
|
+
label: n("flags.failure.failed"),
|
|
34
|
+
iconName: "x-badge"
|
|
35
|
+
} : {
|
|
36
|
+
tone: "success",
|
|
37
|
+
label: n("flags.failure.ok"),
|
|
38
|
+
iconName: "chat-check"
|
|
39
|
+
};
|
|
40
|
+
case "encrypted": return t ? {
|
|
41
|
+
tone: "info",
|
|
42
|
+
label: n("flags.encrypted.encrypted"),
|
|
43
|
+
iconName: "key"
|
|
44
|
+
} : {
|
|
45
|
+
tone: "neutral",
|
|
46
|
+
label: n("flags.encrypted.notEncrypted"),
|
|
47
|
+
iconName: "key-off"
|
|
48
|
+
};
|
|
49
|
+
case "locked": return t ? {
|
|
50
|
+
tone: "warning",
|
|
51
|
+
label: n("flags.locked.locked"),
|
|
52
|
+
iconName: "lock"
|
|
53
|
+
} : {
|
|
54
|
+
tone: "success",
|
|
55
|
+
label: n("flags.locked.unlocked"),
|
|
56
|
+
iconName: "lock-open"
|
|
57
|
+
};
|
|
58
|
+
case "default": return t ? {
|
|
59
|
+
tone: "info",
|
|
60
|
+
label: n("flags.default.default")
|
|
61
|
+
} : {
|
|
62
|
+
tone: "neutral",
|
|
63
|
+
label: n("flags.default.notDefault")
|
|
64
|
+
};
|
|
65
|
+
case "agentManaged": return t ? {
|
|
66
|
+
tone: "info",
|
|
67
|
+
label: n("flags.agentManaged.agentManaged"),
|
|
68
|
+
iconName: "robot-check"
|
|
69
|
+
} : {
|
|
70
|
+
tone: "neutral",
|
|
71
|
+
label: n("flags.agentManaged.userManaged"),
|
|
72
|
+
iconName: "robot-x"
|
|
73
|
+
};
|
|
74
|
+
case "deployedProduction": return t ? {
|
|
75
|
+
tone: "success",
|
|
76
|
+
label: n("flags.deployedProduction.deployed"),
|
|
77
|
+
iconName: "rocket"
|
|
78
|
+
} : {
|
|
79
|
+
tone: "neutral",
|
|
80
|
+
label: n("flags.deployedProduction.notDeployed"),
|
|
81
|
+
iconName: "rocket-off"
|
|
82
|
+
};
|
|
83
|
+
case "forced": return t ? {
|
|
84
|
+
tone: "warning",
|
|
85
|
+
label: n("flags.forced.forced")
|
|
86
|
+
} : {
|
|
87
|
+
tone: "neutral",
|
|
88
|
+
label: n("flags.forced.normal")
|
|
89
|
+
};
|
|
90
|
+
default: throw Error(`Unsupported flag variant: ${String(e)}`);
|
|
91
|
+
}
|
|
92
|
+
}, c = (t, n) => {
|
|
93
|
+
let { tApp: r, t: a, resolveEntityHref: o, renderLink: s } = n, c = a("common.notAvailable");
|
|
94
|
+
if (t.type === "text") {
|
|
95
|
+
let n = i(t.value, r);
|
|
96
|
+
return e(n) ? c : n;
|
|
97
|
+
}
|
|
98
|
+
if (t.type === "entityRef") {
|
|
99
|
+
let { id: e } = t;
|
|
100
|
+
if (e == null || e.trim() === "") return c;
|
|
101
|
+
let n = i(t.label, r), a = n != null && String(n).trim() !== "" ? n : null;
|
|
102
|
+
if (a == null) return c;
|
|
103
|
+
let l = o?.(t.entity, e) ?? null;
|
|
104
|
+
return l == null ? a : s(l, a);
|
|
105
|
+
}
|
|
106
|
+
let { href: l } = t;
|
|
107
|
+
if (l == null || l.trim() === "") return c;
|
|
108
|
+
let u = i(t.label, r);
|
|
109
|
+
return e(u) ? c : s(l, u);
|
|
110
|
+
}, l = (t, n, r) => {
|
|
111
|
+
let { tApp: a, t: o, resolveEntityHref: s, renderDate: c, renderLink: l } = r, u = o("common.notAvailable");
|
|
112
|
+
if (t.type === "dateTime") return c(t.value(n), u);
|
|
113
|
+
if (t.type === "entityRef") {
|
|
114
|
+
let e = t.id(n);
|
|
115
|
+
if (e == null || e.trim() === "") return u;
|
|
116
|
+
let r = i(t.value?.(n), a), o = r != null && String(r).trim() !== "" ? r : null;
|
|
117
|
+
if (o == null) return u;
|
|
118
|
+
let c = s?.(t.entity, e) ?? null;
|
|
119
|
+
return c == null ? o : l(c, o);
|
|
120
|
+
}
|
|
121
|
+
if (t.type === "link") {
|
|
122
|
+
let r = t.href(n), o = i(t.value(n), a);
|
|
123
|
+
return r == null || r.trim() === "" || e(o) ? u : l(r, o);
|
|
124
|
+
}
|
|
125
|
+
let d = i(t.value(n), a);
|
|
126
|
+
return e(d) ? u : d;
|
|
127
|
+
}, u = (e, n, r, a) => {
|
|
128
|
+
if (e.type === "badgeRow") {
|
|
129
|
+
let t = e.items(n).map((e) => {
|
|
130
|
+
let t = i(e.label, r), n = t == null ? "" : String(t);
|
|
131
|
+
return {
|
|
132
|
+
...e,
|
|
133
|
+
label: n
|
|
134
|
+
};
|
|
135
|
+
});
|
|
136
|
+
return t.length === 0 ? void 0 : a.renderBadgeRow(t);
|
|
137
|
+
}
|
|
138
|
+
let o = i(e.value(n), r), s = o == null ? "" : String(o);
|
|
139
|
+
if (s.trim() === "") return;
|
|
140
|
+
let c = t(e.tone, n);
|
|
141
|
+
return a.renderTag(c, s);
|
|
142
|
+
}, d = (a, o, l) => {
|
|
143
|
+
let { tApp: u, t: d, resolveEntityHref: f, formatNumber: p, formatCurrency: m, formatPercent: h, relationEntityListRoutes: g, resolveRelationItem: _, setWhereValue: v, renderTag: y, renderBadgeRow: b, renderDate: x, renderFlagTag: S, renderLink: C, renderTaggedValue: w, wrapCustomNode: T } = l, E = [], D = [], O = [], k = d("common.notAvailable");
|
|
144
|
+
return a.forEach((a, l) => {
|
|
145
|
+
let A = `${a.type}-${l}`;
|
|
146
|
+
switch (a.type) {
|
|
147
|
+
case "text": {
|
|
148
|
+
let e = i(a.value(o), u);
|
|
149
|
+
E.push({
|
|
150
|
+
id: A,
|
|
151
|
+
label: n(a.label, u),
|
|
152
|
+
size: a.size,
|
|
153
|
+
value: e,
|
|
154
|
+
copyValue: a.copyValue?.(o) ?? void 0,
|
|
155
|
+
fullWidth: a.fullWidth
|
|
156
|
+
});
|
|
157
|
+
break;
|
|
158
|
+
}
|
|
159
|
+
case "badge": {
|
|
160
|
+
let e = i(a.value(o), u), r = e == null ? "" : String(e), s = t(a.tone, o);
|
|
161
|
+
E.push({
|
|
162
|
+
id: A,
|
|
163
|
+
label: n(a.label, u),
|
|
164
|
+
size: a.size,
|
|
165
|
+
value: r.trim() === "" ? null : y(s, r)
|
|
166
|
+
});
|
|
167
|
+
break;
|
|
168
|
+
}
|
|
169
|
+
case "badgeRow": {
|
|
170
|
+
let e = a.items(o).map((e) => {
|
|
171
|
+
let t = i(e.label, u), n = t == null ? "" : String(t);
|
|
172
|
+
return {
|
|
173
|
+
...e,
|
|
174
|
+
label: n
|
|
175
|
+
};
|
|
176
|
+
});
|
|
177
|
+
E.push({
|
|
178
|
+
id: A,
|
|
179
|
+
label: n(a.label, u),
|
|
180
|
+
size: a.size,
|
|
181
|
+
value: e.length > 0 ? b(e) : null,
|
|
182
|
+
fullWidth: a.fullWidth
|
|
183
|
+
});
|
|
184
|
+
break;
|
|
185
|
+
}
|
|
186
|
+
case "dateTime":
|
|
187
|
+
E.push({
|
|
188
|
+
id: A,
|
|
189
|
+
label: n(a.label, u),
|
|
190
|
+
size: a.size,
|
|
191
|
+
value: x(a.value(o), k)
|
|
192
|
+
});
|
|
193
|
+
break;
|
|
194
|
+
case "number": {
|
|
195
|
+
let e = a.value(o), t = null;
|
|
196
|
+
e != null && (t = a.format === "currency" ? m(e) : a.format === "percent" ? h(e) : p(e)), E.push({
|
|
197
|
+
id: A,
|
|
198
|
+
label: n(a.label, u),
|
|
199
|
+
size: a.size,
|
|
200
|
+
value: t
|
|
201
|
+
});
|
|
202
|
+
break;
|
|
203
|
+
}
|
|
204
|
+
case "flag": {
|
|
205
|
+
let e = a.value(o);
|
|
206
|
+
E.push({
|
|
207
|
+
id: A,
|
|
208
|
+
label: n(a.label, u),
|
|
209
|
+
size: a.size,
|
|
210
|
+
value: e == null ? null : S(s(a.variant, e, d))
|
|
211
|
+
});
|
|
212
|
+
break;
|
|
213
|
+
}
|
|
214
|
+
case "entityRef": {
|
|
215
|
+
let e = a.id(o), t = null;
|
|
216
|
+
if (e != null && e.trim() !== "") {
|
|
217
|
+
let n = a.value?.(o), r = n != null && n.trim() !== "" ? n : null, i = f?.(a.entity, e) ?? null;
|
|
218
|
+
r != null && (t = i == null ? r : C(i, r));
|
|
219
|
+
}
|
|
220
|
+
E.push({
|
|
221
|
+
id: A,
|
|
222
|
+
label: n(a.label, u),
|
|
223
|
+
size: a.size,
|
|
224
|
+
value: t ?? k
|
|
225
|
+
});
|
|
226
|
+
break;
|
|
227
|
+
}
|
|
228
|
+
case "link": {
|
|
229
|
+
let t = a.href(o), r = a.value(o);
|
|
230
|
+
E.push({
|
|
231
|
+
id: A,
|
|
232
|
+
label: n(a.label, u),
|
|
233
|
+
size: a.size,
|
|
234
|
+
value: t != null && t.trim() !== "" && !e(r) ? C(t, r) : null
|
|
235
|
+
});
|
|
236
|
+
break;
|
|
237
|
+
}
|
|
238
|
+
case "taggedValue": {
|
|
239
|
+
let e = a.tag(o), t = c(a.value(o), {
|
|
240
|
+
tApp: u,
|
|
241
|
+
t: d,
|
|
242
|
+
resolveEntityHref: f,
|
|
243
|
+
renderLink: C
|
|
244
|
+
}), r = e == null ? null : {
|
|
245
|
+
...e,
|
|
246
|
+
label: (() => {
|
|
247
|
+
let t = i(e.label, u);
|
|
248
|
+
return t == null ? "" : String(t);
|
|
249
|
+
})()
|
|
250
|
+
};
|
|
251
|
+
E.push({
|
|
252
|
+
id: A,
|
|
253
|
+
label: n(a.label, u),
|
|
254
|
+
size: a.size,
|
|
255
|
+
value: r != null || t != null ? w(r, t) : null,
|
|
256
|
+
fullWidth: a.fullWidth
|
|
257
|
+
});
|
|
258
|
+
break;
|
|
259
|
+
}
|
|
260
|
+
case "relation": {
|
|
261
|
+
let e = r(a.value(o));
|
|
262
|
+
if (e == null) break;
|
|
263
|
+
let t = g[a.relation.target];
|
|
264
|
+
if (t == null) break;
|
|
265
|
+
let i = v(null, a.relation.whereKey, e, a.relation.path);
|
|
266
|
+
if (i == null) break;
|
|
267
|
+
D.push(_({
|
|
268
|
+
id: A,
|
|
269
|
+
label: n(a.label, u),
|
|
270
|
+
count: a.count?.(o) ?? null,
|
|
271
|
+
relation: a.relation,
|
|
272
|
+
listRoute: t,
|
|
273
|
+
value: e,
|
|
274
|
+
where: i
|
|
275
|
+
}));
|
|
276
|
+
break;
|
|
277
|
+
}
|
|
278
|
+
case "custom": {
|
|
279
|
+
let e = a.render(o);
|
|
280
|
+
if (e == null) break;
|
|
281
|
+
if (a.label != null) {
|
|
282
|
+
E.push({
|
|
283
|
+
id: A,
|
|
284
|
+
label: n(a.label, u),
|
|
285
|
+
size: a.size,
|
|
286
|
+
value: e,
|
|
287
|
+
fullWidth: a.fullWidth
|
|
288
|
+
});
|
|
289
|
+
break;
|
|
290
|
+
}
|
|
291
|
+
O.push(T(A, e));
|
|
292
|
+
break;
|
|
293
|
+
}
|
|
294
|
+
default: break;
|
|
295
|
+
}
|
|
296
|
+
}), {
|
|
297
|
+
items: E,
|
|
298
|
+
relationItems: D,
|
|
299
|
+
customNodes: O
|
|
300
|
+
};
|
|
301
|
+
}, f = (e, r, s) => {
|
|
302
|
+
let { tApp: d, t: f, resolveEntityHref: p, renderLink: m, renderDate: h, renderTag: g, renderBadgeRow: _ } = s, v = e.titleValue?.(r, d) ?? n(e.title, d), y = v.trim() === "" ? n(e.title, d) : v, b;
|
|
303
|
+
if (e.subtitleItems != null && e.subtitleItems.length > 0) {
|
|
304
|
+
let { subtitleItems: t } = e, n = e.subtitleSeparator ?? " / ", i = [];
|
|
305
|
+
t.forEach((e, a) => {
|
|
306
|
+
i.push(o("span", { key: e.id }, c(e.value(r), {
|
|
307
|
+
tApp: d,
|
|
308
|
+
t: f,
|
|
309
|
+
resolveEntityHref: p,
|
|
310
|
+
renderLink: m
|
|
311
|
+
}))), a < t.length - 1 && i.push(o("span", { key: `${e.id}-sep` }, n));
|
|
312
|
+
}), b = o("span", null, ...i);
|
|
313
|
+
} else {
|
|
314
|
+
let t = e.subtitleValue?.(r, d) ?? (e.subtitle == null ? null : n(e.subtitle, d));
|
|
315
|
+
b = t != null && t.trim() !== "" ? t : void 0;
|
|
316
|
+
}
|
|
317
|
+
let x = [];
|
|
318
|
+
e.badges?.forEach((e, s) => {
|
|
319
|
+
let c = n(e.label, d), l = i(e.value(r), d), u = l == null ? "" : String(l);
|
|
320
|
+
u.trim() !== "" && (x.push(g(t(e.tone, r), `${c}: ${u}`)), typeof x[x.length - 1] == "object" && (x[x.length - 1] = o(a, { key: `${c}-${s}` }, x[x.length - 1])));
|
|
321
|
+
});
|
|
322
|
+
let S = e.status == null ? void 0 : u(e.status, r, d, {
|
|
323
|
+
renderBadgeRow: _,
|
|
324
|
+
renderTag: g
|
|
325
|
+
}), C = e.meta?.map((e, t) => {
|
|
326
|
+
let i = n(e.label, d);
|
|
327
|
+
return {
|
|
328
|
+
id: `${i}-${t}`,
|
|
329
|
+
label: i,
|
|
330
|
+
value: l(e, r, {
|
|
331
|
+
tApp: d,
|
|
332
|
+
t: f,
|
|
333
|
+
resolveEntityHref: p,
|
|
334
|
+
renderDate: h,
|
|
335
|
+
renderLink: m
|
|
336
|
+
})
|
|
337
|
+
};
|
|
338
|
+
});
|
|
339
|
+
return {
|
|
340
|
+
title: y,
|
|
341
|
+
subtitle: b,
|
|
342
|
+
badges: x.length > 0 ? o(a, null, ...x) : void 0,
|
|
343
|
+
status: S,
|
|
344
|
+
items: C
|
|
345
|
+
};
|
|
346
|
+
}, p = (e, t, r) => {
|
|
347
|
+
let { tApp: a, t: o, keyPrefix: s } = r;
|
|
348
|
+
return e == null || e.length === 0 ? [] : e.map((e, c) => {
|
|
349
|
+
let l = s == null ? `${e.kind}-${c}` : `${s}-${e.kind}-${c}`;
|
|
350
|
+
if (e.kind === "custom") {
|
|
351
|
+
let i = e.render(t);
|
|
352
|
+
return i == null ? null : e.label == null ? r.wrapCustomNode(l, i) : r.renderCustomSection(l, n(e.label, a), i);
|
|
353
|
+
}
|
|
354
|
+
let u = n(e.label, a), d = e.description == null ? void 0 : n(e.description, a);
|
|
355
|
+
if (e.kind === "relationList") return r.renderRelationList({
|
|
356
|
+
key: l,
|
|
357
|
+
title: u,
|
|
358
|
+
relation: e.relation,
|
|
359
|
+
value: e.value(t)
|
|
360
|
+
});
|
|
361
|
+
if (e.kind === "table") return r.renderTable({
|
|
362
|
+
key: l,
|
|
363
|
+
title: u,
|
|
364
|
+
description: d,
|
|
365
|
+
columns: r.resolveTableColumns(e.columns),
|
|
366
|
+
rows: e.rows(t)
|
|
367
|
+
});
|
|
368
|
+
if (e.kind === "json") return r.renderJson({
|
|
369
|
+
key: l,
|
|
370
|
+
title: u,
|
|
371
|
+
description: d,
|
|
372
|
+
value: e.value(t),
|
|
373
|
+
defaultCollapsed: e.presentation?.collapse?.defaultCollapsed ?? (e.presentation?.group === "technical" || e.presentation?.group === "raw")
|
|
374
|
+
});
|
|
375
|
+
if (e.kind === "code") return r.renderCode({
|
|
376
|
+
key: l,
|
|
377
|
+
title: u,
|
|
378
|
+
description: d,
|
|
379
|
+
value: e.value(t),
|
|
380
|
+
outputLabel: o("tools.output")
|
|
381
|
+
});
|
|
382
|
+
if (e.kind === "payload") return r.renderPayload({
|
|
383
|
+
key: l,
|
|
384
|
+
title: u,
|
|
385
|
+
description: d,
|
|
386
|
+
content: e.value(t),
|
|
387
|
+
format: e.format
|
|
388
|
+
});
|
|
389
|
+
if (e.kind === "errorList") return r.renderErrorList({
|
|
390
|
+
key: l,
|
|
391
|
+
title: u,
|
|
392
|
+
description: d,
|
|
393
|
+
items: e.errors(t)
|
|
394
|
+
});
|
|
395
|
+
let f = e.items.map((e, r) => {
|
|
396
|
+
let s = n(e.label, a), c = i(e.value(t), a);
|
|
397
|
+
return {
|
|
398
|
+
id: `${s}-${r}`,
|
|
399
|
+
label: s,
|
|
400
|
+
value: c ?? o("common.notAvailable")
|
|
401
|
+
};
|
|
402
|
+
});
|
|
403
|
+
return r.renderKeyValueListSection({
|
|
404
|
+
key: l,
|
|
405
|
+
title: u,
|
|
406
|
+
description: d,
|
|
407
|
+
items: f
|
|
408
|
+
});
|
|
409
|
+
});
|
|
410
|
+
};
|
|
411
|
+
//#endregion
|
|
412
|
+
export { d as buildFieldItems, p as renderBlocks, s as resolveFlagTag, f as resolveHeaderItems, l as resolveHeaderMeta, u as resolveHeaderStatus, c as resolveInlineValue };
|
|
413
|
+
|
|
414
|
+
//# sourceMappingURL=BackofficeEntityDetailPage.view-helpers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BackofficeEntityDetailPage.view-helpers.js","names":[],"sources":["../../../src/pages/BackofficeEntityDetailPage.view-helpers.ts"],"sourcesContent":["/* eslint-disable no-ternary */\nimport type {\n BackofficeBadgeItem,\n BackofficeDetailBlockSpec,\n BackofficeDetailFieldSpec,\n BackofficeDetailHeaderConfig,\n BackofficeDetailHeaderMetaSpec,\n BackofficeDetailHeaderStatusSpec,\n BackofficeFieldSize,\n BackofficeFlagVariant,\n BackofficeInlineValueSpec,\n BackofficeRuntimeRelationFilterSpec,\n} from '@plumile/backoffice-core/types.js';\nimport type { TFunction } from 'i18next';\nimport { Fragment, createElement, type ReactNode } from 'react';\n\nimport {\n isEmptyText,\n resolveLabel,\n resolveBadgeTone,\n resolveRelationValue,\n resolveValueLabel,\n} from './BackofficeEntityDetailPage.helpers.js';\n\nexport type ResolvedFieldItem = {\n id: string;\n label: string;\n size: BackofficeFieldSize;\n value: ReactNode;\n copyValue?: string;\n fullWidth?: boolean;\n};\n\nexport type ResolvedHeaderItem = {\n id: string;\n label: string;\n value: ReactNode;\n};\n\nexport type FlagIconName =\n | 'shield-lock'\n | 'shield-off'\n | 'settings-check'\n | 'settings-x'\n | 'x-badge'\n | 'chat-check'\n | 'key'\n | 'key-off'\n | 'lock'\n | 'lock-open'\n | 'robot-check'\n | 'robot-x'\n | 'rocket'\n | 'rocket-off';\n\nexport type ResolvedFlagTag = {\n tone: 'neutral' | 'info' | 'success' | 'warning' | 'danger';\n label: string;\n iconName?: FlagIconName;\n};\n\nexport const resolveFlagTag = (\n variant: BackofficeFlagVariant,\n value: boolean,\n t: TFunction,\n): ResolvedFlagTag => {\n switch (variant) {\n case 'yesNo':\n return value\n ? { tone: 'success', label: t('common.boolean.yes') }\n : { tone: 'neutral', label: t('common.boolean.no') };\n case 'capability':\n return value\n ? {\n tone: 'success',\n label: t('flags.capability.allowed'),\n iconName: 'shield-lock',\n }\n : {\n tone: 'neutral',\n label: t('flags.capability.denied'),\n iconName: 'shield-off',\n };\n case 'enabled':\n return value\n ? {\n tone: 'success',\n label: t('flags.enabled.enabled'),\n iconName: 'settings-check',\n }\n : {\n tone: 'neutral',\n label: t('flags.enabled.disabled'),\n iconName: 'settings-x',\n };\n case 'failure':\n return value\n ? {\n tone: 'danger',\n label: t('flags.failure.failed'),\n iconName: 'x-badge',\n }\n : {\n tone: 'success',\n label: t('flags.failure.ok'),\n iconName: 'chat-check',\n };\n case 'encrypted':\n return value\n ? {\n tone: 'info',\n label: t('flags.encrypted.encrypted'),\n iconName: 'key',\n }\n : {\n tone: 'neutral',\n label: t('flags.encrypted.notEncrypted'),\n iconName: 'key-off',\n };\n case 'locked':\n return value\n ? {\n tone: 'warning',\n label: t('flags.locked.locked'),\n iconName: 'lock',\n }\n : {\n tone: 'success',\n label: t('flags.locked.unlocked'),\n iconName: 'lock-open',\n };\n case 'default':\n return value\n ? { tone: 'info', label: t('flags.default.default') }\n : { tone: 'neutral', label: t('flags.default.notDefault') };\n case 'agentManaged':\n return value\n ? {\n tone: 'info',\n label: t('flags.agentManaged.agentManaged'),\n iconName: 'robot-check',\n }\n : {\n tone: 'neutral',\n label: t('flags.agentManaged.userManaged'),\n iconName: 'robot-x',\n };\n case 'deployedProduction':\n return value\n ? {\n tone: 'success',\n label: t('flags.deployedProduction.deployed'),\n iconName: 'rocket',\n }\n : {\n tone: 'neutral',\n label: t('flags.deployedProduction.notDeployed'),\n iconName: 'rocket-off',\n };\n case 'forced':\n return value\n ? { tone: 'warning', label: t('flags.forced.forced') }\n : { tone: 'neutral', label: t('flags.forced.normal') };\n default:\n throw new Error(`Unsupported flag variant: ${String(variant)}`);\n }\n};\n\nexport const resolveInlineValue = (\n value: BackofficeInlineValueSpec,\n options: {\n tApp: TFunction;\n t: TFunction;\n resolveEntityHref?: (entityId: string, refId: string) => string | null;\n renderLink: (href: string, label: ReactNode) => ReactNode;\n },\n): ReactNode => {\n const { tApp, t, resolveEntityHref, renderLink } = options;\n const fallback = t('common.notAvailable');\n\n if (value.type === 'text') {\n const resolved = resolveValueLabel(value.value, tApp);\n return isEmptyText(resolved) ? fallback : resolved;\n }\n\n if (value.type === 'entityRef') {\n const { id } = value;\n if (id == null || id.trim() === '') {\n return fallback;\n }\n const resolvedLabel = resolveValueLabel(value.label, tApp);\n const label =\n resolvedLabel != null && String(resolvedLabel).trim() !== ''\n ? resolvedLabel\n : null;\n if (label == null) {\n return fallback;\n }\n const href = resolveEntityHref?.(value.entity, id) ?? null;\n return href != null ? renderLink(href, label) : label;\n }\n\n const { href } = value;\n if (href == null || href.trim() === '') {\n return fallback;\n }\n const label = resolveValueLabel(value.label, tApp);\n if (isEmptyText(label)) {\n return fallback;\n }\n return renderLink(href, label);\n};\n\nexport const resolveHeaderMeta = <Node>(\n meta: BackofficeDetailHeaderMetaSpec<Node>,\n node: Node,\n options: {\n tApp: TFunction;\n t: TFunction;\n resolveEntityHref?: (entityId: string, refId: string) => string | null;\n renderDate: (\n value: string | number | null | undefined,\n fallback: string,\n ) => ReactNode;\n renderLink: (href: string, label: ReactNode) => ReactNode;\n },\n): ReactNode => {\n const { tApp, t, resolveEntityHref, renderDate, renderLink } = options;\n const fallback = t('common.notAvailable');\n\n if (meta.type === 'dateTime') {\n return renderDate(meta.value(node), fallback);\n }\n\n if (meta.type === 'entityRef') {\n const idValue = meta.id(node);\n if (idValue == null || idValue.trim() === '') {\n return fallback;\n }\n const labelValue = resolveValueLabel(meta.value?.(node), tApp);\n const label =\n labelValue != null && String(labelValue).trim() !== ''\n ? labelValue\n : null;\n if (label == null) {\n return fallback;\n }\n const href = resolveEntityHref?.(meta.entity, idValue) ?? null;\n return href != null ? renderLink(href, label) : label;\n }\n\n if (meta.type === 'link') {\n const href = meta.href(node);\n const labelValue = resolveValueLabel(meta.value(node), tApp);\n if (href == null || href.trim() === '' || isEmptyText(labelValue)) {\n return fallback;\n }\n return renderLink(href, labelValue);\n }\n\n const value = resolveValueLabel(meta.value(node), tApp);\n return isEmptyText(value) ? fallback : value;\n};\n\nexport const resolveHeaderStatus = <Node>(\n status: BackofficeDetailHeaderStatusSpec<Node>,\n node: Node,\n tApp: TFunction,\n renderers: {\n renderBadgeRow: (items: readonly BackofficeBadgeItem[]) => ReactNode;\n renderTag: (\n tone: ReturnType<typeof resolveBadgeTone<Node>>,\n label: string,\n ) => ReactNode;\n },\n): ReactNode | undefined => {\n if (status.type === 'badgeRow') {\n const items = status.items(node).map((item) => {\n const resolvedLabel = resolveValueLabel(item.label, tApp);\n const label = resolvedLabel == null ? '' : String(resolvedLabel);\n return { ...item, label };\n });\n if (items.length === 0) {\n return undefined;\n }\n return renderers.renderBadgeRow(items);\n }\n\n const value = resolveValueLabel(status.value(node), tApp);\n const label = value == null ? '' : String(value);\n if (label.trim() === '') {\n return undefined;\n }\n const tone = resolveBadgeTone(status.tone, node);\n return renderers.renderTag(tone, label);\n};\n\nexport const buildFieldItems = <Node, RelationItem>(\n fields: readonly BackofficeDetailFieldSpec<Node>[],\n node: Node,\n options: {\n tApp: TFunction;\n t: TFunction;\n resolveEntityHref?: (entityId: string, refId: string) => string | null;\n formatNumber: (value: number | null | undefined) => string;\n formatCurrency: (value: number | null | undefined) => string;\n formatPercent: (value: number | null | undefined) => string;\n relationEntityListRoutes: Record<string, string>;\n resolveRelationItem: (args: {\n id: string;\n label: string;\n count: number | null;\n relation: BackofficeRuntimeRelationFilterSpec;\n listRoute: string;\n value: string;\n where: Record<string, unknown>;\n }) => RelationItem;\n setWhereValue: (\n where: Record<string, unknown> | null,\n whereKey: string,\n value: string,\n path?: readonly string[],\n ) => Record<string, unknown> | null;\n renderTag: (\n tone: ReturnType<typeof resolveBadgeTone<Node>>,\n label: string,\n ) => ReactNode;\n renderBadgeRow: (items: readonly BackofficeBadgeItem[]) => ReactNode;\n renderDate: (\n value: string | number | null | undefined,\n fallback: string,\n ) => ReactNode;\n renderFlagTag: (tag: ResolvedFlagTag) => ReactNode;\n renderLink: (href: string, label: ReactNode) => ReactNode;\n renderTaggedValue: (tag: unknown, value: ReactNode) => ReactNode;\n wrapCustomNode: (id: string, node: ReactNode) => ReactNode;\n },\n): {\n items: ResolvedFieldItem[];\n relationItems: RelationItem[];\n customNodes: ReactNode[];\n} => {\n const {\n tApp,\n t,\n resolveEntityHref,\n formatNumber,\n formatCurrency,\n formatPercent,\n relationEntityListRoutes,\n resolveRelationItem,\n setWhereValue,\n renderTag,\n renderBadgeRow,\n renderDate,\n renderFlagTag,\n renderLink,\n renderTaggedValue,\n wrapCustomNode,\n } = options;\n const items: ResolvedFieldItem[] = [];\n const relationItems: RelationItem[] = [];\n const customNodes: ReactNode[] = [];\n const fallback = t('common.notAvailable');\n\n fields.forEach((field, index) => {\n const id = `${field.type}-${index}`;\n\n switch (field.type) {\n case 'text': {\n const value = resolveValueLabel(field.value(node), tApp);\n items.push({\n id,\n label: resolveLabel(field.label, tApp),\n size: field.size,\n value,\n copyValue: field.copyValue?.(node) ?? undefined,\n fullWidth: field.fullWidth,\n });\n break;\n }\n case 'badge': {\n const value = resolveValueLabel(field.value(node), tApp);\n const label = value != null ? String(value) : '';\n const tone = resolveBadgeTone(field.tone, node);\n items.push({\n id,\n label: resolveLabel(field.label, tApp),\n size: field.size,\n value: label.trim() !== '' ? renderTag(tone, label) : null,\n });\n break;\n }\n case 'badgeRow': {\n const badgeItems = field.items(node).map((item) => {\n const resolvedLabel = resolveValueLabel(item.label, tApp);\n const label = resolvedLabel == null ? '' : String(resolvedLabel);\n return { ...item, label };\n });\n items.push({\n id,\n label: resolveLabel(field.label, tApp),\n size: field.size,\n value: badgeItems.length > 0 ? renderBadgeRow(badgeItems) : null,\n fullWidth: field.fullWidth,\n });\n break;\n }\n case 'dateTime': {\n items.push({\n id,\n label: resolveLabel(field.label, tApp),\n size: field.size,\n value: renderDate(field.value(node), fallback),\n });\n break;\n }\n case 'number': {\n const value = field.value(node);\n let formatted: string | null = null;\n if (value != null) {\n if (field.format === 'currency') {\n formatted = formatCurrency(value);\n } else if (field.format === 'percent') {\n formatted = formatPercent(value);\n } else {\n formatted = formatNumber(value);\n }\n }\n items.push({\n id,\n label: resolveLabel(field.label, tApp),\n size: field.size,\n value: formatted,\n });\n break;\n }\n case 'flag': {\n const value = field.value(node);\n items.push({\n id,\n label: resolveLabel(field.label, tApp),\n size: field.size,\n value:\n value != null\n ? renderFlagTag(resolveFlagTag(field.variant, value, t))\n : null,\n });\n break;\n }\n case 'entityRef': {\n const idValue = field.id(node);\n let value: ReactNode | null = null;\n if (idValue != null && idValue.trim() !== '') {\n const labelValue = field.value?.(node);\n const label =\n labelValue != null && labelValue.trim() !== '' ? labelValue : null;\n const href = resolveEntityHref?.(field.entity, idValue) ?? null;\n if (label != null) {\n value = href != null ? renderLink(href, label) : label;\n }\n }\n items.push({\n id,\n label: resolveLabel(field.label, tApp),\n size: field.size,\n value: value ?? fallback,\n });\n break;\n }\n case 'link': {\n const href = field.href(node);\n const labelValue = field.value(node);\n items.push({\n id,\n label: resolveLabel(field.label, tApp),\n size: field.size,\n value:\n href != null && href.trim() !== '' && !isEmptyText(labelValue)\n ? renderLink(href, labelValue)\n : null,\n });\n break;\n }\n case 'taggedValue': {\n const tag = field.tag(node);\n const valueNode = resolveInlineValue(field.value(node), {\n tApp,\n t,\n resolveEntityHref,\n renderLink,\n });\n const resolvedTag =\n tag == null\n ? null\n : {\n ...tag,\n label: (() => {\n const labelValue = resolveValueLabel(tag.label, tApp);\n return labelValue == null ? '' : String(labelValue);\n })(),\n };\n items.push({\n id,\n label: resolveLabel(field.label, tApp),\n size: field.size,\n value:\n resolvedTag != null || valueNode != null\n ? renderTaggedValue(resolvedTag, valueNode)\n : null,\n fullWidth: field.fullWidth,\n });\n break;\n }\n case 'relation': {\n const value = resolveRelationValue(field.value(node));\n if (value == null) {\n break;\n }\n const listRoute = relationEntityListRoutes[field.relation.target];\n if (listRoute == null) {\n break;\n }\n const where = setWhereValue(\n null,\n field.relation.whereKey,\n value,\n field.relation.path,\n );\n if (where == null) {\n break;\n }\n relationItems.push(\n resolveRelationItem({\n id,\n label: resolveLabel(field.label, tApp),\n count: field.count?.(node) ?? null,\n relation: field.relation,\n listRoute,\n value,\n where,\n }),\n );\n break;\n }\n case 'custom': {\n const custom = field.render(node) as ReactNode;\n if (custom == null) {\n break;\n }\n if (field.label != null) {\n items.push({\n id,\n label: resolveLabel(field.label, tApp),\n size: field.size,\n value: custom,\n fullWidth: field.fullWidth,\n });\n break;\n }\n customNodes.push(wrapCustomNode(id, custom));\n break;\n }\n default:\n break;\n }\n });\n\n return { items, relationItems, customNodes };\n};\n\nexport const resolveHeaderItems = <Node>(\n header: BackofficeDetailHeaderConfig<Node>,\n node: Node,\n options: {\n tApp: TFunction;\n t: TFunction;\n resolveEntityHref?: (entityId: string, refId: string) => string | null;\n renderLink: (href: string, label: ReactNode) => ReactNode;\n renderDate: (\n value: string | number | null | undefined,\n fallback: string,\n ) => ReactNode;\n renderTag: (\n tone: ReturnType<typeof resolveBadgeTone<Node>>,\n label: string,\n ) => ReactNode;\n renderBadgeRow: (items: readonly BackofficeBadgeItem[]) => ReactNode;\n },\n): {\n title: string;\n subtitle?: ReactNode;\n badges?: ReactNode;\n status?: ReactNode;\n items?: readonly ResolvedHeaderItem[];\n} => {\n const {\n tApp,\n t,\n resolveEntityHref,\n renderLink,\n renderDate,\n renderTag,\n renderBadgeRow,\n } = options;\n const resolvedTitle =\n header.titleValue?.(node, tApp) ?? resolveLabel(header.title, tApp);\n const title =\n resolvedTitle.trim() === ''\n ? resolveLabel(header.title, tApp)\n : resolvedTitle;\n\n let subtitleNode: ReactNode | undefined;\n if (header.subtitleItems != null && header.subtitleItems.length > 0) {\n const { subtitleItems } = header;\n const separator = header.subtitleSeparator ?? ' / ';\n const parts: ReactNode[] = [];\n subtitleItems.forEach((item, index) => {\n parts.push(\n createElement(\n 'span',\n { key: item.id },\n resolveInlineValue(item.value(node), {\n tApp,\n t,\n resolveEntityHref,\n renderLink,\n }),\n ),\n );\n if (index < subtitleItems.length - 1) {\n parts.push(createElement('span', { key: `${item.id}-sep` }, separator));\n }\n });\n subtitleNode = createElement('span', null, ...parts);\n } else {\n const subtitleValue =\n header.subtitleValue?.(node, tApp) ??\n (header.subtitle != null ? resolveLabel(header.subtitle, tApp) : null);\n subtitleNode =\n subtitleValue != null && subtitleValue.trim() !== ''\n ? subtitleValue\n : undefined;\n }\n\n const badgeNodes: ReactNode[] = [];\n header.badges?.forEach((badge, index) => {\n const label = resolveLabel(badge.label, tApp);\n const resolvedValue = resolveValueLabel(badge.value(node), tApp);\n const value = resolvedValue == null ? '' : String(resolvedValue);\n if (value.trim() === '') {\n return;\n }\n badgeNodes.push(\n renderTag(resolveBadgeTone(badge.tone, node), `${label}: ${value}`),\n );\n if (typeof badgeNodes[badgeNodes.length - 1] === 'object') {\n badgeNodes[badgeNodes.length - 1] = createElement(\n Fragment,\n { key: `${label}-${index}` },\n badgeNodes[badgeNodes.length - 1],\n );\n }\n });\n\n const status =\n header.status != null\n ? resolveHeaderStatus(header.status, node, tApp, {\n renderBadgeRow,\n renderTag,\n })\n : undefined;\n\n const items = header.meta?.map((meta, index) => {\n const label = resolveLabel(meta.label, tApp);\n return {\n id: `${label}-${index}`,\n label,\n value: resolveHeaderMeta(meta, node, {\n tApp,\n t,\n resolveEntityHref,\n renderDate,\n renderLink,\n }),\n };\n });\n\n return {\n title,\n subtitle: subtitleNode,\n badges:\n badgeNodes.length > 0\n ? createElement(Fragment, null, ...badgeNodes)\n : undefined,\n status,\n items,\n };\n};\n\nexport const renderBlocks = <Node>(\n blocks: readonly BackofficeDetailBlockSpec<Node>[] | undefined,\n node: Node,\n options: {\n tApp: TFunction;\n t: TFunction;\n resolveEntityHref: (entityId: string, refId: string) => string | null;\n keyPrefix?: string;\n renderCustomSection: (\n key: string,\n title: string,\n child: ReactNode,\n ) => ReactNode;\n wrapCustomNode: (key: string, node: ReactNode) => ReactNode;\n renderRelationList: (args: {\n key: string;\n title: string;\n relation: BackofficeRuntimeRelationFilterSpec;\n value: string | null | undefined;\n }) => ReactNode;\n resolveTableColumns: (columns: readonly unknown[]) => unknown;\n renderTable: (args: {\n key: string;\n title: string;\n description?: string;\n columns: unknown;\n rows: readonly unknown[];\n }) => ReactNode;\n renderJson: (args: {\n key: string;\n title: string;\n description?: string;\n value: unknown;\n defaultCollapsed?: boolean;\n }) => ReactNode;\n renderCode: (args: {\n key: string;\n title: string;\n description?: string;\n value: string;\n outputLabel: string;\n }) => ReactNode;\n renderPayload: (args: {\n key: string;\n title: string;\n description?: string;\n content: unknown;\n format?: string;\n }) => ReactNode;\n renderErrorList: (args: {\n key: string;\n title: string;\n description?: string;\n items: readonly unknown[];\n }) => ReactNode;\n renderKeyValueListSection: (args: {\n key: string;\n title: string;\n description?: string;\n items: readonly { id: string; label: string; value: ReactNode }[];\n }) => ReactNode;\n },\n): ReactNode[] => {\n const { tApp, t, keyPrefix } = options;\n if (blocks == null || blocks.length === 0) {\n return [];\n }\n\n return blocks.map((block, index): ReactNode => {\n const key =\n keyPrefix != null\n ? `${keyPrefix}-${block.kind}-${index}`\n : `${block.kind}-${index}`;\n\n if (block.kind === 'custom') {\n const custom = block.render(node) as ReactNode;\n if (custom == null) {\n return null;\n }\n if (block.label != null) {\n return options.renderCustomSection(\n key,\n resolveLabel(block.label, tApp),\n custom,\n );\n }\n return options.wrapCustomNode(key, custom);\n }\n\n const title = resolveLabel(block.label, tApp);\n const description =\n block.description != null\n ? resolveLabel(block.description, tApp)\n : undefined;\n\n if (block.kind === 'relationList') {\n return options.renderRelationList({\n key,\n title,\n relation: block.relation,\n value: block.value(node),\n });\n }\n\n if (block.kind === 'table') {\n return options.renderTable({\n key,\n title,\n description,\n columns: options.resolveTableColumns(\n block.columns as readonly unknown[],\n ),\n rows: block.rows(node) as readonly unknown[],\n });\n }\n\n if (block.kind === 'json') {\n return options.renderJson({\n key,\n title,\n description,\n value: block.value(node),\n defaultCollapsed:\n block.presentation?.collapse?.defaultCollapsed ??\n (block.presentation?.group === 'technical' ||\n block.presentation?.group === 'raw'),\n });\n }\n\n if (block.kind === 'code') {\n return options.renderCode({\n key,\n title,\n description,\n value: block.value(node),\n outputLabel: t('tools.output'),\n });\n }\n\n if (block.kind === 'payload') {\n return options.renderPayload({\n key,\n title,\n description,\n content: block.value(node),\n format: block.format,\n });\n }\n\n if (block.kind === 'errorList') {\n return options.renderErrorList({\n key,\n title,\n description,\n items: block.errors(node),\n });\n }\n\n const items = block.items.map((item, itemIndex) => {\n const label = resolveLabel(item.label, tApp);\n const resolvedValue = resolveValueLabel(item.value(node), tApp);\n return {\n id: `${label}-${itemIndex}`,\n label,\n value: resolvedValue ?? t('common.notAvailable'),\n };\n });\n\n return options.renderKeyValueListSection({\n key,\n title,\n description,\n items,\n });\n });\n};\n"],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
1
|
+
import { resolveVisibleDetailPages as e } from "./detail/pageResolution.js";
|
|
2
|
+
import { useBackofficeEntityDetailLayoutContext as t } from "./detail/BackofficeEntityDetailLayoutContext.js";
|
|
3
3
|
import { HttpRedirect as n } from "@plumile/router";
|
|
4
4
|
//#region src/pages/BackofficeEntityDetailUnknownPageRedirect.tsx
|
|
5
5
|
var r = ({ config: r, prepared: i }) => {
|
|
@@ -14,4 +14,4 @@ var r = ({ config: r, prepared: i }) => {
|
|
|
14
14
|
//#endregion
|
|
15
15
|
export { r as BackofficeEntityDetailUnknownPageRedirect, r as default };
|
|
16
16
|
|
|
17
|
-
//# sourceMappingURL=BackofficeEntityDetailUnknownPageRedirect
|
|
17
|
+
//# sourceMappingURL=BackofficeEntityDetailUnknownPageRedirect.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BackofficeEntityDetailUnknownPageRedirect.js","names":[],"sources":["../../../src/pages/BackofficeEntityDetailUnknownPageRedirect.tsx"],"sourcesContent":["import { type JSX } from 'react';\nimport { HttpRedirect } from '@plumile/router';\n\nimport type {\n BackofficeEntityManifestItem,\n BackofficeResolvedDetailLayoutFacetConfig,\n} from '@plumile/backoffice-core/types.js';\n\nimport { useBackofficeEntityDetailLayoutContext } from './detail/BackofficeEntityDetailLayoutContext.js';\nimport { resolveVisibleDetailPages } from './detail/pageResolution.js';\n\nexport type BackofficeEntityDetailUnknownPageRedirectProps = {\n entityManifest: BackofficeEntityManifestItem;\n config: BackofficeResolvedDetailLayoutFacetConfig;\n prepared: {\n id: string;\n pagePath: string;\n };\n};\n\nexport const BackofficeEntityDetailUnknownPageRedirect = ({\n config,\n prepared,\n}: BackofficeEntityDetailUnknownPageRedirectProps): JSX.Element => {\n const { layoutView } = useBackofficeEntityDetailLayoutContext();\n\n const resolvedPages = resolveVisibleDetailPages({\n mainPage: config.pages.mainPage,\n subPages: config.pages.subPages,\n activePagePath: prepared.pagePath,\n node: layoutView as never,\n });\n\n if (!resolvedPages.hasVisiblePages || resolvedPages.activePage == null) {\n throw new HttpRedirect(config.routes.list);\n }\n\n throw new HttpRedirect(\n config.routes.detailPage(prepared.id, resolvedPages.activePage.id),\n );\n};\n\nexport default BackofficeEntityDetailUnknownPageRedirect;\n"],"mappings":";;;;AAoBA,IAAa,KAA6C,EACxD,WACA,kBACiE;CACjE,IAAM,EAAE,kBAAe,GAAwC,EAEzD,IAAgB,EAA0B;EAC9C,UAAU,EAAO,MAAM;EACvB,UAAU,EAAO,MAAM;EACvB,gBAAgB,EAAS;EACzB,MAAM;EACP,CAAC;CAMF,MAJI,CAAC,EAAc,mBAAmB,EAAc,cAAc,OAC1D,IAAI,EAAa,EAAO,OAAO,KAAK,GAGtC,IAAI,EACR,EAAO,OAAO,WAAW,EAAS,IAAI,EAAc,WAAW,GAAG,CACnE"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
//#region src/pages/BackofficeEntityListPage.helpers.tsx
|
|
2
|
+
var e = 24, t = 6, n = 4, r = 32, i = 8, a = 12, o = 4, s = {
|
|
3
|
+
xs: "minmax(72px, 92px)",
|
|
4
|
+
s: "minmax(104px, 136px)",
|
|
5
|
+
statusAction: "minmax(136px, 168px)",
|
|
6
|
+
m: "minmax(136px, 184px)",
|
|
7
|
+
l: "minmax(160px, 220px)",
|
|
8
|
+
xl: "minmax(220px, 300px)",
|
|
9
|
+
fluid: "minmax(0, 1fr)"
|
|
10
|
+
}, c = (r) => r <= 0 ? 0 : n * 2 + e * r + t * Math.max(0, r - 1), l = (e) => e <= 0 ? 0 : o + a * 2 + r * e + i * Math.max(0, e - 1), u = (e, t) => e.mobileRole === "action" ? "60px" : e.isPrimary === !0 ? "minmax(0, 1fr)" : "size" in e && typeof e.size == "string" ? s[e.size] : t, d = (e) => e.kind === "route", f = (e) => e.kind === "formMutation", p = (e, t) => e ?? (t === 0 ? "primary" : "secondary"), m = (e) => {
|
|
11
|
+
if (typeof e != "object" || !e || !("id" in e)) return null;
|
|
12
|
+
let t = e.id;
|
|
13
|
+
if (typeof t != "string") return null;
|
|
14
|
+
let n = t.trim();
|
|
15
|
+
return n === "" ? null : n;
|
|
16
|
+
}, h = (e) => e.list.kind === "records", g = (e) => e.list.kind !== "records", _ = (e, t) => e(t), v = (e) => {
|
|
17
|
+
let { ariaLabel: t, fallback: n, resolveDetailHref: r, className: i, renderAction: a } = e;
|
|
18
|
+
return {
|
|
19
|
+
id: "actions",
|
|
20
|
+
header: "",
|
|
21
|
+
className: i,
|
|
22
|
+
mobileRole: "action",
|
|
23
|
+
cell: (e) => {
|
|
24
|
+
let i = m(e);
|
|
25
|
+
if (i == null) return n;
|
|
26
|
+
let o = r(i);
|
|
27
|
+
return o == null ? n : a({
|
|
28
|
+
href: o,
|
|
29
|
+
ariaLabel: t
|
|
30
|
+
});
|
|
31
|
+
}
|
|
32
|
+
};
|
|
33
|
+
};
|
|
34
|
+
//#endregion
|
|
35
|
+
export { v as buildActionsColumn, l as computeActionsColumnWidthPx, c as computeRowFlagsColumnWidthPx, g as isConnectionListConfig, f as isFormMutationAction, h as isRecordListConfig, d as isRouteAction, p as resolveActionVariant, _ as resolveLabel, m as resolveRowId, u as resolveTrackBySize };
|
|
36
|
+
|
|
37
|
+
//# sourceMappingURL=BackofficeEntityListPage.helpers.js.map
|