O PageLayout componente fornece um layout estruturado de grade CSS com quatro áreas: Cabeçalho, Navegação, Corpo e Rodapé (Footer). Ele é usado para criar estruturas de página consistentes em todo o seu portal.
O layout utiliza uma grade CSS com as seguintes áreas:
Header — Abrange toda a largura no topo. Normalmente contém um MenuBar com botões de salvar/atualizar ou títulos de página.Navigation — Coluna à esquerda abaixo do cabeçalho. Usado para menus de navegação lateral. Pergaminhos independentes do corpo.Body — Área principal de conteúdo. Faz scroll de forma independente e recebe preenchimento automaticamente.Footer — Abrange toda a largura na parte inferior. Normalmente contém informações de direitos autorais ou status.// O PageLayout do React aceita conteúdo de slot via props (cabeçalho/navegação/
// corpo/rodapé) em vez de elementos aninhados — dá ao TypeScript um lugar para
// Aplicar restrições de slot. Equivalente à marcação do Razor à esquerda.
<PageLayout
header={
<>
<SaveContextButton />
<RefreshContextButton />
</>
}
navigation={/* Conteúdo da navegação lateral */}
body={/* Conteúdo da página principal */}
footer={<span>© Minha Empresa 2026</span>}
/><PageLayout>
<Header>
<MenuBar>
<SaveContextButton />
<RefreshContextButton />
</MenuBar>
</Header>
<Navigation>
<!-- Conteúdo de navegação lateral -->
</Navigation>
<Body>
<!-- Conteúdo da página principal -->
</Body>
<Footer>
<FluentLabel>© Minha Empresa 2026</FluentLabel>
</Footer>
</PageLayout>Cada área pode ser mostrada ou oculta usando os HeaderVisibleparâmetros , NavigationVisible, e FooterVisible . Quando oculta, a área é completamente removida do layout da grade.
<PageLayout
headerVisible
navigationVisible={false}
footerVisible
header="Título da Página"
body="Conteúdo sem navegação lateral"
footer="Rodapé"
/><PageLayout HeaderVisible="true"
NavigationVisible="false"
FooterVisible="true">
<Header>Título da Página</Header>
<Body>Conteúdo sem navegação lateral</Body>
<Footer>Rodapé</Footer>
</PageLayout>Cada área suporta tanto um Class quanto Style um parâmetro (ex HeaderClass.: , HeaderStyle, BodyClass, BodyStyle, etc.) para estilo personalizado. O contêiner de nível superior também suporta Class e Style.
<PageLayout
className="my-page"
style={{ minHeight: '100vh' }}
headerClassName="my-header"
headerStyle={{ backgroundColor: 'var(--colorNeutralBackground5)' }}
bodyClassName="my-body"
bodyStyle={{ padding: '2rem' }}
header="Cabeçalho Estilizado"
body="Corpo Estilizado"
/><PageLayout HeaderClass="my-header"
HeaderStyle="background-color: var(--neutral-layer-4);"
BodyClass="my-body"
BodyStyle="padding: 2rem;"
Class="my-page"
Style="min-height: 100vh;">
<Header>Cabeçalho Estilizado</Header>
<Body>Corpo Estilizado</Body>
</PageLayout>A PageLayout pode ser aninhado dentro Body do de outro PageLayout para criar layouts de subpágina. O layout filho detecta automaticamente o pai e aplica uma child-layout classe CSS com estilização reduzida da borda do cabeçalho.
// O ninho funciona da mesma forma — passe um espaço interno <PageLayout> como o espaço do corpo.</PageLayout>
// PageLayoutNestingContext detecta automaticamente o pai e aplica o
// variante com layout filho (borda de cabeçalho mais fina, preenche o corpo do pai
// em vez da janela de visão).
<PageLayout
header="Cabeçalho Principal"
body={
<PageLayout
header={<SaveContextButton />}
body={/* Conteúdo da subpágina */}
/>
}
/><PageLayout>
<Header>Cabeçalho Principal</Header>
<Body>
<PageLayout>
<Header>
<MenuBar>
<SaveContextButton />
</MenuBar>
</Header>
<Body>
<!-- Conteúdo da subpágina -->
</Body>
</PageLayout>
</Body>
</PageLayout>A área do corpo rola independentemente do cabeçalho e do rodapé, mantendo-os fixos no lugar. Ao navegar entre as páginas, o corpo rola automaticamente até o topo. A área de navegação também rola de forma independente.
O exemplo a seguir mostra a PageLayout com todas as quatro áreas povoadas.
Use os controles abaixo para alternar a visibilidade de cada área e ajustar o comportamento de navegação redimensionável — ligue/desligue o divisor, saia da persistência do localStorage e ajuste as larguras padrão / mínima / máxima de arrasto. Arraste a alça na borda de navegação/corpo para redimensionar, ou clique duas vezes nela para resetar a largura padrão.
Nome | Tipo | Padrão | Descrição |
|---|---|---|---|
Body | RenderFragment? | Conteúdo renderizado na área principal do corpo. Esta é a região principal de conteúdo e rola independentemente do cabeçalho, rodapé e navegação. O preenchimento é aplicado automaticamente. | |
BodyClass | string? | A aula CSS aplicada ao elemento corpo. | |
BodyStyle | string? | Estilo CSS em linha aplicado ao elemento do corpo. | |
DefaultNavigationWidth | int | 280 | Largura de navegação em px usada antes do usuário redimensionar, e ao fazer duplo clique reiniciar. O padrão é |
EnableNavigationResizing | bool | True | Quando PageLayout.NavigationVisible é PageLayout.DefaultNavigationWidth. |
Footer | RenderFragment? | Conteúdo renderizado na área de rodapé na parte inferior do layout. A sapada abrange toda a largura e permanece fixo enquanto o corpo rola. Normalmente contém avisos de direitos autorais ou informações de status. | |
FooterClass | string? | Classe CSS aplicada ao elemento de rodapé. | |
FooterStyle | string? | Estilo CSS inline aplicado ao elemento do rodapés. | |
FooterVisible | bool | True | Controle se a área do rodapé é renderizada. Quando configurado como |
Header | RenderFragment? | Conteúdo renderizado na área de cabeçalho no topo do layout. Normalmente contém um | |
HeaderClass | string? | Classe CSS aplicada ao elemento de cabeçalho. Use isso para aplicar estilos personalizados, como cores de fundo ou bordas. | |
HeaderStyle | string? | Estilo CSS inline aplicado ao elemento do cabeçalho. | |
HeaderVisible | bool | True | Controle se a área do cabeçalho é renderizada. Quando definido como |
MaxNavigationWidth | int | 480 | Maior que a coluna de navegação já alcançará, em px. O padrão é PageLayout.EnableNavigationResizing está ligado, este é o limite superior o usuário pode arrastar o divisor para; Quando está desligado, este é o |
MinNavigationWidth | int | 200 | Menor para onde a navegação pode ser arrastada, em px. O padrão é |
Navigation | RenderFragment? | Conteúdo renderizado na área de navegação à esquerda do corpo. Pergaminhos independentes do corpo. Normalmente contém um | |
NavigationClass | string? | Classe CSS aplicada ao elemento de navegação. | |
NavigationResizeHandleLabel | string | Resize navigation | Etiqueta acessível para o handle de redimensionamento (renderizado com |
NavigationResizeStorageKey | string | ppp-page-layout-nav-width | chave localStorage, a largura de navegação escolhida persiste embaixo. Padrão para Layout.PageLayout pode ser mostrado. Ignorado quando PageLayout.PersistNavigationWidth é |
NavigationStyle | string? | O estilo CSS inline aplicado ao elemento de navegação. | |
NavigationVisible | bool | True | Ele controla se a área de navegação é renderizada. Quando configurado como |
PersistNavigationWidth | bool | True | Quando PageLayout.NavigationResizeStorageKey e restaurado em cargas subsequentes. Defina para PageLayout.DefaultNavigationWidth. Só significativo quando PageLayout.EnableNavigationResizing é |
ValidationSummaryVisible | bool | True | Determina se o resumo de validação é exibido. O padrão é |
BodyBodyClassBodyStyleDefaultNavigationWidthEnableNavigationResizingPageLayout.NavigationVisible é PageLayout.DefaultNavigationWidth.FooterFooterClassFooterStyleFooterVisibleHeaderHeaderClassHeaderStyleHeaderVisibleMaxNavigationWidthPageLayout.EnableNavigationResizing está ligado, este é o limite superior o usuário pode arrastar o divisor para; Quando está desligado, este é o MinNavigationWidthNavigationNavigationClassNavigationResizeHandleLabelNavigationResizeStorageKeyLayout.PageLayout pode ser mostrado. Ignorado quando PageLayout.PersistNavigationWidth é NavigationStyleNavigationVisiblePersistNavigationWidthPageLayout.NavigationResizeStorageKey e restaurado em cargas subsequentes. Defina para PageLayout.DefaultNavigationWidth. Só significativo quando PageLayout.EnableNavigationResizing é ValidationSummaryVisible