Documentation
Exemple manifest entite
Declarer une entite list/detail avec facet loaders lazy et pages detail.
Utilisez les manifests pour rendre explicites le routing d’entite et le chargement des facets. Les facet loaders lazy permettent de separer list, picker, layout et pages detail en chunks distincts.
import {
createListDetailManifest,
type BackofficeDetailPageManifestItem,
type BackofficeListDetailFacetLoaderMap,
} from '@plumile/backoffice-core';
export const projectDetailPages = [
{
: 'overview',
: 'overview',
label: (t) => t('project.detail.overview'),
: true,
},
{
: 'activity',
: 'activity',
label: (t) => t('project.detail.activity'),
},
] as const satisfies readonly BackofficeDetailPageManifestItem[];
export const projectFacetLoaders: BackofficeListDetailFacetLoaderMap = {
list: async () => {
const module = await import'./facets/list.js';
return module.loadedProjectListFacetModule;
},
picker: async () => {
const module = await import'./facets/picker.js';
return module.loadedProjectPickerFacetModule;
},
detailLayout: async () => {
const module = await import'./facets/detail-layout.js';
return module.loadedProjectDetailLayoutFacetModule;
},
detailPage: async (pageId) => {
ifpageId === 'overview' {
const module = await import'./facets/detail-pages/overview.js';
return module.loadedProjectOverviewDetailPageFacetModule;
}
throw new Error`Unknown project detail page: ${pageId}`;
},
};
export const projectManifest = createListDetailManifest({
: 'projects',
label: (t) => t('project.entity.plural'),
: projectDetailPages,
: projectFacetLoaders,
});Preferez un dossier par entite lorsqu’elle a plusieurs facets. Gardez le manifest court et deplacez la logique list/detail dans les modules de facets.