enes

TitleBar

Una barra de título es la barra superior del marco de una aplicación, dispuesta como la de una aplicación de Windows 11: la identidad de la aplicación y su navegación al inicio, una búsqueda que crece y se reduce en el centro, y la foto de la persona y los controles de la ventana al final. No pinta ningún fondo propio, ya que se coloca sobre el componente que renderiza la ventana.

FluentUI App PREVIEW

Para crear una barra de título, necesitarás usar los siguientes componentes:

  • TitleBar: El componente raíz. Distribuye las tres áreas, mantiene la búsqueda entre sus límites de ancho y la colapsa cuando se le pide.
  • TitleBarLeftControls: Los controles al inicio de la barra: un botón de retroceso, un botón de navegación global, y el icono, el nombre y la etiqueta de versión de la aplicación.
  • TitleBarRightControls: Los controles al final de la barra: menús personalizados, la foto de la persona y los botones de minimizar, maximizar y cerrar de la ventana.

Uso

Compón la barra con sus tres áreas mediante los snippets leftControls, search y rightControls. Cada área es opcional. TitleBarLeftControls y TitleBarRightControls siguen los ajustes de la barra cuando se renderizan dentro de un TitleBar, y también funcionan por sí solos. Los botones de la ventana solo informan de la pulsación, ya que minimizar, maximizar y cerrar la ventana depende del host de tu aplicación.

<script>
	import { TitleBar, TitleBarLeftControls, TitleBarRightControls } from 'fluentui-svelte';
	import { AppsRegular } from 'fluentui-icons-svelte';
	import { getCurrentWindow } from '@tauri-apps/api/window';

	const appWindow = getCurrentWindow();
	let maximized = $state(false);
	appWindow.isMaximized().then((value) => (maximized = value));
</script>

<TitleBar>
	{#snippet leftControls()}
		<TitleBarLeftControls back globalNav appIcon={AppsRegular} appName="FluentUI App" releaseTag="PREVIEW" />
	{/snippet}
	{#snippet rightControls()}
		<TitleBarRightControls
			{maximized}
			personPic={{ name: 'Ada Lovelace' }}
			onMinimize={() => appWindow.minimize()}
			onWindowToggle={async () => {
				await appWindow.toggleMaximize();
				maximized = await appWindow.isMaximized();
			}}
			onClose={() => appWindow.close()}
		/>
	{/snippet}
</TitleBar>

Controles izquierdos

back y globalNav muestran un botón cada uno e informan de la pulsación con onBack y onGlobalNav. Establece globalNavExpanded mientras la navegación esté abierta, o pasa un snippet a globalNav para dibujar tú mismo el botón.

FluentUI App

Icono de la aplicación

appIcon acepta la URL de una imagen, un componente de icono de Fluent o un snippet que dibuja un SVG personalizado. Es decorativo, así que lo que identifica a la aplicación es su nombre.

Image URL
Fluent icon
Custom SVG

Etiqueta de versión

releaseTag marca el estado de versión de la aplicación, como PREVIEW o BETA, en una insignia junto a su nombre. Acepta un string o un snippet.

FluentUI App PREVIEW
FluentUI App BETA

Búsqueda

El snippet search se ubica en el centro de la barra y ocupa el ancho que la barra le da, creciendo y reduciéndose con la ventana. Una barra con búsqueda es tall por defecto, lo que le da espacio a la búsqueda.

Ancho de la búsqueda

searchMinWidth y searchMaxWidth definen cuánto se reduce y cuánto crece la búsqueda. Los números son valores en píxeles convertidos a rem usando el tamaño actual de la fuente raíz, con un fallback de 16px durante SSR. Por ejemplo, 200 se convierte en 10rem con una raíz de 20px y sigue ocupando 200px. Un string es cualquier longitud CSS.

Búsqueda colapsada

searchCollapsed pliega manualmente la búsqueda en un botón; cambiar el tamaño no la colapsa automáticamente. Al pulsar el botón se expande la búsqueda y el foco pasa al primer control disponible. Enlázala para seguir el estado. Deja espacio suficiente para la búsqueda expandida y los controles laterales, o reduce searchMinWidth. Los nombres largos de la app se truncan, pero los botones de navegación y de ventana siguen necesitando espacio.

Controles de ventana

hideMinimize, hideWindowToggle y hideClose quitan cada uno un botón de ventana de la barra. onMinimize, onWindowToggle y onClose informan de la pulsación.

Maximizada

Mientras maximized esté activo, el botón de maximizar pasa a ser un botón de restaurar, con el icono y la etiqueta que le corresponden.

Foto de la persona

personPic acepta las props de un Avatar, como su image, dibujado a 24 píxeles salvo que indiques un tamaño. Añade onPersonPicClick para convertir la foto en un botón, como el que abre una cuenta.

Menú personalizado

El snippet customMenu coloca tus propias acciones antes de la foto de la persona, como un menú de configuración.

Etiquetas

Los nombres accesibles de los botones están en inglés por defecto. Pasa backLabel, globalNavLabel, searchLabel, minimizeLabel, maximizeLabel, restoreLabel y closeLabel para traducirlos.

Orden de tabulación

Los botones de la barra están en el orden de tabulación por defecto. Establece tabbable en false solo cuando el host de escritorio proporcione una alternativa de teclado para estas acciones. El contenido que pongas en los snippets conserva su propio orden de tabulación.

FluentUI App

Región de arrastre

dragRegionProps se aplica a la barra, sus áreas de inicio y de fin y la identidad de la app, para que el host que mueve la ventana sepa de dónde agarrar la barra. Usa data-tauri-drag-region en Tauri, o un manejador de puntero en cualquier otro host.

<TitleBar dragRegionProps={{ 'data-tauri-drag-region': true }}>
	...
</TitleBar>

<TitleBar dragRegionProps={{ onpointerdown: (e) => e.target === e.currentTarget && appWindow.startDragging() }}>
	...
</TitleBar>

Propiedades del componente (TitleBar)

NameTypeDefaultDescription
ref bindableHTMLElement | nullLa referencia del DOM del elemento de la barra de título.
leftControlsSnippetLos controles al inicio de la barra: retroceso, navegaci�n y la identidad de la aplicaci�n. Renderiza aqu� un TitleBarLeftControls.
searchSnippetLa búsqueda en el centro de la barra, que crece y se reduce con la ventana entre searchMinWidth y searchMaxWidth.
rightControlsSnippetLos controles al final de la barra: men�s personalizados, la foto de la persona y los botones de la ventana. Renderiza aqu� un TitleBarRightControls.
tallbooleanUsa la barra alta, que le da espacio a la búsqueda. Está activa por defecto cuando se proporciona search.
searchMinWidthnumber | string200Lo más estrecha que llega a ser la búsqueda mientras la ventana se reduce. Un número está en píxeles, convertido a rem usando el tamaño actual de la fuente raíz, con un fallback de 16px durante SSR. Un string es cualquier longitud CSS.
searchMaxWidthnumber | string480Lo más ancha que llega a ser la búsqueda mientras la ventana crece. Un número está en píxeles, convertido a rem usando el tamaño actual de la fuente raíz, con un fallback de 16px durante SSR. Un string es cualquier longitud CSS.
searchCollapsed bindablebooleanfalseColapsa manualmente la búsqueda en un botón; no se colapsa automáticamente al cambiar el tamaño. Al pulsar el botón se expande la búsqueda y el foco pasa al primer control disponible. El host debe dejar espacio suficiente para la búsqueda expandida y los controles laterales.
searchLabelstring'Search'El nombre accesible del botón que reemplaza a una búsqueda colapsada.
tabbablebooleantruePermite que la tecla Tab llegue a los botones de la barra. Establécelo en false solo cuando el host de escritorio proporcione una alternativa de teclado para estas acciones. El contenido que renderizas en los snippets no se ve afectado.
dragRegionPropsHTMLAttributesLos atributos que hacen que la barra se pueda arrastrar para el host que mueve la ventana, como data-tauri-drag-region en Tauri. Se aplican a la barra, sus áreas de inicio y de fin y la identidad de la app.
HTMLAttributes<HTMLElement> without children

Propiedades del componente (TitleBarLeftControls)

NameTypeDefaultDescription
ref bindableHTMLDivElement | nullLa referencia del DOM del elemento de controles.
backbooleanfalseMuestra el botón de retroceso.
backDisabledbooleanfalseDeshabilita el botón de retroceso, para cuando no hay a dónde volver.
onBackMouseEventHandler<HTMLButtonElement>Se llama cuando se pulsa el botón de retroceso.
backLabelstring'Back'El nombre accesible del botón de retroceso.
globalNavboolean | SnippetfalseMuestra el botón de navegación global, o lo reemplaza por el snippet que proporciones.
globalNavExpandedbooleanfalseSi la navegación que controla el botón de navegación global está expandida. Dentro de un AppWindow con un SideNav sigue al SideNav, y el botón lo expande y lo colapsa.
onGlobalNavMouseEventHandler<HTMLButtonElement>Se llama cuando se pulsa el botón de navegación global. Llama a preventDefault() para evitar que alterne el SideNav de la ventana.
globalNavLabelstring'Navigation menu'El nombre accesible del botón de navegación global.
appIconstring | Snippet | ComponentEl icono de la aplicación: la URL de una imagen, un componente de icono o un snippet que dibuja un SVG personalizado.
appIconLabelstring'Application'El nombre accesible del icono de la app cuando appName no está presente. Usa el nombre de la app cuando su identidad solo muestre un icono.
appNamestringEl nombre de la aplicación.
releaseTagstring | SnippetEl estado de versión de la aplicación, como PREVIEW o BETA.
childrenSnippetMás contenido después de la etiqueta de versión, como un subtítulo.
HTMLAttributes<HTMLDivElement> without children

Propiedades del componente (TitleBarRightControls)

NameTypeDefaultDescription
ref bindableHTMLDivElement | nullLa referencia del DOM del elemento de controles.
hideMinimizebooleanfalseOculta el botón de minimizar.
hideWindowTogglebooleanfalseOculta el botón de maximizar y restaurar.
hideClosebooleanfalseOculta el botón de cerrar.
maximizedbooleanfalseIndica si la ventana está maximizada y cambia el botón de maximizar a restaurar. Hereda maximized de AppWindow cuando se omite, o false si se usa de forma independiente.
onMinimizeMouseEventHandler<HTMLButtonElement>Se llama cuando se pulsa el botón de minimizar.
onWindowToggleMouseEventHandler<HTMLButtonElement>Se llama cuando se pulsa el botón de maximizar o restaurar.
onCloseMouseEventHandler<HTMLButtonElement>Se llama cuando se pulsa el botón de cerrar.
minimizeLabelstring'Minimize'El nombre accesible del botón de minimizar.
maximizeLabelstring'Maximize'El nombre accesible del botón de maximizar.
restoreLabelstring'Restore'El nombre accesible del botón de restaurar.
closeLabelstring'Close'El nombre accesible del botón de cerrar.
personPicAvatarPropsLas props del Avatar que muestra a la persona. Su tamaño es 24 salvo que indiques otro.
onPersonPicClickMouseEventHandler<HTMLButtonElement>Se llama cuando se pulsa la foto de la persona, lo que la convierte en un botón.
customMenuSnippetLos menús o acciones personalizados que se colocan antes de la foto de la persona.
HTMLAttributes<HTMLDivElement> without children
Editar este documento Ver como Markdown