Tela Dividida
Configura o Split Screen com divisão por arrastar e soltar, alinhamento de guia central e personalização de UI de título/instrução/mais.
Tela Dividida Padrão
FlexLayoutSplitScreenGerencia as áreas before/center/after no store com base no componente central. Quando um DragBox é solto nesta tela, uma divisão em linha ou coluna é criada dependendo da posição, e as telas que entram no centro são gerenciadas como guias.
<FlexLayoutSplitScreen
layoutName="editor-split"
containerName="editor-home"
navigationTitle="Home"
>
<HomeView />
</FlexLayoutSplitScreen>Renderização de navigationTitle e título.
navigationTitle.é o dado do rótulo da tela e, navigationTitleComponent.é um wrapper comum usado quando o Split Screen renderiza cada rótulo como uma UI de título real. O DragBox apenas transmite a string navigationTitle e não carrega o navigationTitleComponent.
function SplitScreenTitle({ children }: { children?: React.ReactNode }) {
return <strong className="split-title">{children}</strong>;
}
<FlexLayoutSplitScreen
layoutName="editor-split"
containerName="editor-home"
navigationTitle="Home"
navigationTitleComponent={<SplitScreenTitle />}
>
<HomeView />
</FlexLayoutSplitScreen>Instruções de divisão e personalização de UI de mais.
titleWrapperComponent
Um wrapper comum que envolve o navigationTitleComponent e o titleCloseButtonComponent. Se omitido, não será criado um wrapper DOM separado.
titleCloseButtonComponent
Substitui a UI de fechamento da aba central. Se undefined, usa o botão X padrão, e se null, oculta o botão de fechamento.
dropGuideComponent
Substitui a UI de instrução padrão exibida ao arrastar para uma área divisível. Se omitido, usa a mensagem de instrução padrão.
titleMoreButtonComponent
Substitui apenas o gatilho ... à direita do título. Se undefined, usa o botão padrão e se null, oculta o Mais.
renderTitleMoreMenuItems
Mantém o menu padrão de Mais e adiciona itens de menu do usuário abaixo.
renderTitleMoreMenu
Substitui todo o conteúdo do menu padrão. Portal, cálculo de posição, clique externo e fechamento com Escape continuam sendo tratados pela biblioteca.
<FlexLayoutSplitScreen
layoutName="editor-split"
containerName="editor-home"
navigationTitle="Home"
titleWrapperComponent={<div className="split-tab" />}
titleCloseButtonComponent={<button type="button">Close</button>}
dropGuideComponent={<div>Drop here</div>}
titleMoreButtonComponent={<button type="button">Menu</button>}
renderTitleMoreMenuItems={(context) => (
<button
type="button"
onClick={() => {
console.log(context.activeItem);
context.closeMenu();
}}
>
Custom action
</button>
)}
>
<HomeView />
</FlexLayoutSplitScreen>Alterar a ordem dos títulos das guias centrais.
Os títulos das guias centrais do mesmo Split Screen podem ser arrastados para alterar a ordem. Se colocado na metade esquerda do título alvo, move para frente, se na metade direita, move para trás, mantendo a guia ativa com base no screenKey.
Cancelar arrasto com Escape.
Se você pressionar Escape enquanto arrasta o DragBox, ele limpa o clone de arrasto atual e o estado de arrasto pendente, propagando isDragging false / isDrop false. A UI de instrução de divisão desaparece imediatamente e o drop não será executado mesmo após o término do mouse/touch.
Arraste a tela para a URL no Next.js
import { FlexLayoutSplitScreenDragBox } from "@byeolnaerim/flex-layout/next";
<FlexLayoutSplitScreenDragBox
url="/orders/1"
containerName="order-1"
navigationTitle="Order #1"
>
<button type="button">Order #1</button>
</FlexLayoutSplitScreenDragBox>opções de ciclo de vida do estado
preserveStateOnUnmount
true면 FlexLayoutSplitScreen이 언마운트되어도 현재 JavaScript runtime의 in-memory split store를 유지합니다. 브라우저 새로고침 persistence와는 별개이며 기본값은 false입니다.
screenKey
split screen 내 화면을 식별하는 key입니다. 생략하면 내부에서 생성됩니다.
Atualização e restauração da URL do navegador
<FlexLayoutNextSplitScreen
persistence={{
storage: "auto",
restoreOnReload: true,
syncWithBrowserUrl: true,
}}
>
<FlexLayoutSplitScreen
layoutName="editor-split"
containerName="editor-home"
navigationTitle="Home"
>
<HomeView />
</FlexLayoutSplitScreen>
</FlexLayoutNextSplitScreen>