Descripción general de Blazor Dock Manager
El Infragistics Blazor Dock Manager proporciona un medio para administrar el diseño de su aplicación a través de paneles, lo que permite a sus usuarios finales personalizarlo aún más anclando, cambiando el tamaño, moviendo, maximizando y ocultando paneles.
Ejemplo de Blazor Dock Manager
Este ejemplo muestra la mayoría de las funcionalidades y opciones de acoplamiento de IgbDockManager
que puede usar en su aplicación.
using System;
using System.Net.Http;
using System.Collections.Generic;
using System.Threading.Tasks;
using System.Text;
using Microsoft.AspNetCore.Components.WebAssembly.Hosting;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Logging;using IgniteUI.Blazor.Controls;
namespace Infragistics.Samples
{
public class Program
{
public static async Task Main (string [] args )
{
var builder = WebAssemblyHostBuilder.CreateDefault(args);
builder.RootComponents.Add<App>("app" );
builder.Services.AddScoped(sp => new HttpClient { BaseAddress = new Uri(builder.HostEnvironment.BaseAddress) });
builder.Services.AddIgniteUIBlazor(typeof (IgbDockManagerModule));
await builder.Build().RunAsync();
}
}
}
cs コピー
@using IgniteUI.Blazor.Controls
<div class ="container vertical" >
<div class ="container vertical" >
<IgbDockManager @ref ="dockManager" Layout ="Layout" Height ="100%" Width ="100%" >
<div slot ="content1" > Content 1 - pane docked to left side</div >
<div slot ="content2" > Content 2 - pane pinned to left side</div >
<div slot ="content3" > Content 3 - document pane</div >
<div slot ="content4" > Content 4 - document pane</div >
<div slot ="content5" > Content 5</div >
<div slot ="content6" > Content 6 - tab pane 1</div >
<div slot ="content7" > Content 7 - tab pane 2</div >
<div slot ="content8" > Content 8 - pane docked bottom right</div >
<div slot ="content9" > Content 9 - floating pane</div >
</IgbDockManager >
</div >
</div >
@code {
public IgbDockManager dockManager { get ; set ; }
public IgbDockManagerLayout Layout { get ; set ; }
protected override void OnInitialized ( )
{
Layout = new IgbDockManagerLayout();
Layout.RootPane = new IgbSplitPane();
Layout.RootPane.PaneType = DockManagerPaneType.SplitPane;
Layout.RootPane.Orientation = SplitPaneOrientation.Horizontal;
IgbSplitPane rootsplitPane1 = new IgbSplitPane
{
PaneType = DockManagerPaneType.SplitPane,
Orientation = SplitPaneOrientation.Vertical,
};
IgbContentPane contentPane1 = new IgbContentPane
{
PaneType = DockManagerPaneType.ContentPane,
Header = "Content Pane 1" ,
ContentId = "content1"
};
IgbContentPane contentPane2 = new IgbContentPane
{
PaneType = DockManagerPaneType.ContentPane,
Header = "Unpinned Pane 1" ,
ContentId = "content2" ,
IsPinned = false
};
IgbSplitPane splitPane2 = new IgbSplitPane
{
PaneType = DockManagerPaneType.SplitPane,
Orientation = SplitPaneOrientation.Vertical,
Size = 200 ,
};
IgbDocumentHost documentHost1 = new IgbDocumentHost
{
PaneType = DockManagerPaneType.DocumentHost,
Size = 200 ,
};
IgbSplitPane documentHost1RootSplitPane = new IgbSplitPane
{
PaneType = DockManagerPaneType.SplitPane,
Orientation = SplitPaneOrientation.Horizontal,
};
IgbTabGroupPane tabGroupPane1 = new IgbTabGroupPane
{
PaneType = DockManagerPaneType.TabGroupPane,
};
IgbContentPane documentContentPane1 = new IgbContentPane
{
PaneType = DockManagerPaneType.ContentPane,
Header = "Document 1" ,
ContentId = "content3"
};
IgbContentPane documentContentPane2 = new IgbContentPane
{
PaneType = DockManagerPaneType.ContentPane,
Header = "Document 2" ,
ContentId = "content4"
};
IgbContentPane contentPane5 = new IgbContentPane
{
PaneType = DockManagerPaneType.ContentPane,
ContentId = "content5" ,
Header = "Unpinned Pane 2" ,
IsPinned = false
};
IgbSplitPane rootsplitPane2 = new IgbSplitPane
{
PaneType = DockManagerPaneType.SplitPane,
Orientation = SplitPaneOrientation.Vertical,
};
IgbTabGroupPane tabGroupPane2 = new IgbTabGroupPane
{
PaneType = DockManagerPaneType.TabGroupPane,
Size = 200 ,
};
IgbContentPane tabGroupContentPane1 = new IgbContentPane
{
PaneType = DockManagerPaneType.ContentPane,
ContentId = "content6" ,
Header = "Tab 1"
};
IgbContentPane tabGroupContentPane2 = new IgbContentPane
{
PaneType = DockManagerPaneType.ContentPane,
ContentId = "content7" ,
Header = "Tab 2"
};
IgbContentPane tabGroupContentPane3 = new IgbContentPane
{
PaneType = DockManagerPaneType.ContentPane,
ContentId = "content8" ,
Header = "Tab 3"
};
IgbContentPane tabGroupContentPane4 = new IgbContentPane
{
PaneType = DockManagerPaneType.ContentPane,
ContentId = "content9" ,
Header = "Tab 4"
};
IgbContentPane tabGroupContentPane5 = new IgbContentPane
{
PaneType = DockManagerPaneType.ContentPane,
ContentId = "content10" ,
Header = "Tab 5"
};
IgbContentPane contentPane6 = new IgbContentPane
{
PaneType = DockManagerPaneType.ContentPane,
ContentId = "content11" ,
Header = "Content Pane 2"
};
IgbSplitPane floatingSplitPane = new IgbSplitPane
{
PaneType = DockManagerPaneType.SplitPane,
Orientation = SplitPaneOrientation.Horizontal,
FloatingHeight = 150 ,
FloatingWidth = 250 ,
FloatingLocation = new IgbDockManagerPoint { X = 300 , Y = 200 },
};
IgbContentPane contentPane7 = new IgbContentPane
{
PaneType = DockManagerPaneType.ContentPane,
ContentId = "content12" ,
Header = "Floating Pane"
};
rootsplitPane1.Panes.Add(contentPane1);
rootsplitPane1.Panes.Add(contentPane2);
splitPane2.Panes.Add(documentHost1);
splitPane2.Panes.Add(contentPane5);
documentHost1.RootPane = documentHost1RootSplitPane;
documentHost1RootSplitPane.Panes.Add(tabGroupPane1);
tabGroupPane1.Panes.Add(documentContentPane1);
tabGroupPane1.Panes.Add(documentContentPane2);
rootsplitPane2.Panes.Add(tabGroupPane2);
tabGroupPane2.Panes.Add(tabGroupContentPane1);
tabGroupPane2.Panes.Add(tabGroupContentPane2);
tabGroupPane2.Panes.Add(tabGroupContentPane3);
tabGroupPane2.Panes.Add(tabGroupContentPane4);
tabGroupPane2.Panes.Add(tabGroupContentPane5);
rootsplitPane2.Panes.Add(contentPane6);
floatingSplitPane.Panes.Add(contentPane7);
Layout.RootPane.Panes.Add(rootsplitPane1);
Layout.RootPane.Panes.Add(rootsplitPane2);
Layout.FloatingPanes.Add(floatingSplitPane);
}
}
razor コピー
¿Te gusta esta muestra? Obtenga acceso a nuestro kit de herramientas de Ignite UI for Blazor completo y comience a crear sus propias aplicaciones en minutos. Descárgalo gratis.
Personalización
El componente Dock Manager ofrece la opción de personalizar todos los botones mediante ranuras y piezas. Para cambiar cualquiera de los botones simplemente tienes que definir tu propio elemento dentro del Dock Manager y establecer el atributo de ranura en el identificador correspondiente.
Utilicemos estas ranuras y piezas para crear un diseño personalizado de Dock Manager. Primero, proporcionaremos nuestros propios íconos, usando las ranuras closeButton
, maximizeButton
, minimizeButton
, pinButton
y unpinButton
:
Luego, usaremos las partes expuestas en nuestra hoja de estilo. De esta manera tenemos control total del estilo del componente:
igc-dockmanager::part (unpinned-tab-area) {
background : #bee9ec ;
}
igc-dockmanager::part (unpinned-tab-area--left ) {
border-right : 1px dashed #004d7a ;
}
igc-dockmanager::part (unpinned-tab-area--bottom ) {
border-top : 1px dashed #004d7a ;
}
igc-dockmanager::part (tab-header -close-button ),
igc-dockmanager::part (pane-header -close-button ) {
background-color : #e73c7e ;
}
igc-dockmanager::part (pane-header -pin-button ),
igc-dockmanager::part (pane-header -unpin-button ) {
background : rgb (218 , 218 , 218 );
border : none;
width : 24px ;
height : 24px ;
color : #fff ;
}
igc-dockmanager::part (tabs-maximize-button ),
igc-dockmanager::part (tabs-minimize-button ),
igc-dockmanager::part (pane-header -minimize-button ),
igc-dockmanager::part (pane-header -maximize-button ) {
width : 24px ;
height : 24px ;
border : none;
transition : opacity 250ms ease-in-out;
opacity : 0.3 ;
margin-right : 15px ;
margin-top : -5px ;
margin-left : 0px ;
}
css
Si todo ha ido bien, ahora deberíamos tener un DockManager con iconos y área de pestañas personalizados. Echemos un vistazo:
using System;
using System.Net.Http;
using System.Collections.Generic;
using System.Threading.Tasks;
using System.Text;
using Microsoft.AspNetCore.Components.WebAssembly.Hosting;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Logging;using IgniteUI.Blazor.Controls;
namespace Infragistics.Samples
{
public class Program
{
public static async Task Main (string [] args )
{
var builder = WebAssemblyHostBuilder.CreateDefault(args);
builder.RootComponents.Add<App>("app" );
builder.Services.AddScoped(sp => new HttpClient { BaseAddress = new Uri(builder.HostEnvironment.BaseAddress) });
builder.Services.AddIgniteUIBlazor(typeof (IgbDockManagerModule));
await builder.Build().RunAsync();
}
}
}
cs コピー
@using IgniteUI.Blazor.Controls
<style >
</style >
<div class ="container vertical" >
<div class ="container vertical" >
<style >
.dockManagerContent {
padding : 0.5rem ;
height : calc (100% - 1rem );
width : calc (100% - 1rem );
display : flex;
flex-direction : column;
}
igc-dockmanager::part (unpinned-tab-area) {
background : #bee9ec ;
}
igc-dockmanager::part (unpinned-tab-area--left ) {
border-right : 1px dashed #004d7a ;
}
igc-dockmanager::part (unpinned-tab-area--bottom ) {
border-top : 1px dashed #004d7a ;
}
igc-dockmanager::part (tab-header -close-button ),
igc-dockmanager::part (pane-header -close-button ) {
background-color : #e73c7e ;
}
igc-dockmanager::part (context-menu -unpin-button ),
igc-dockmanager::part (pane-header -pin-button ),
igc-dockmanager::part (pane-header -unpin-button ) {
background : rgb (218 , 218 , 218 );
border : none;
width : 24px ;
height : 24px ;
color : #fff ;
}
igc-dockmanager::part (tabs-maximize-button ),
igc-dockmanager::part (tabs-minimize-button ),
igc-dockmanager::part (pane-header -minimize-button ),
igc-dockmanager::part (pane-header -maximize-button ) {
width : 24px ;
height : 24px ;
border : none;
transition : opacity 250ms ease-in-out;
opacity : 0.3 ;
margin-right : 15px ;
margin-top : -5px ;
margin-left : 0px ;
}
</style >
<IgbDockManager @ref ="dockManager" Layout ="Layout" Height ="100%" Width ="100%" >
<button slot ="closeButton" > x</button >
<button slot ="maximizeButton" >
<img src ="https://www.svgrepo.com/show/419558/arrow-top-chevron-chevron-top.svg" width ="17" height ="17" alt ="" />
</button >
<button slot ="minimizeButton" >
<img src ="https://www.svgrepo.com/show/419557/bottom-chevron-chevron-down.svg" width ="17" height ="17" alt ="" />
</button >
<button slot ="pinButton" >
<img src ="https://www.svgrepo.com/show/154123/pin.svg" width ="17" height ="17" alt ="" />
</button >
<button slot ="unpinButton" >
<img src ="https://www.svgrepo.com/show/154123/pin.svg" width ="17" height ="17" alt ="" />
</button >
<div slot ="content1" > Content 1 - pane docked to left side</div >
<div slot ="content2" > Content 2 - pane pinned to left side</div >
<div slot ="content3" > Content 3 - document pane</div >
<div slot ="content4" > Content 4 - document pane</div >
<div slot ="content5" > Content 5</div >
<div slot ="content6" > Content 6 - tab pane 1</div >
<div slot ="content7" > Content 7 - tab pane 2</div >
<div slot ="content8" > Content 8 - pane docked bottom right</div >
<div slot ="content9" > Content 9 - floating pane</div >
</IgbDockManager >
</div >
</div >
@code {
public IgbDockManager dockManager { get ; set ; }
public IgbDockManagerLayout Layout { get ; set ; }
protected override void OnInitialized ( )
{
Layout = new IgbDockManagerLayout();
Layout.RootPane = new IgbSplitPane();
Layout.RootPane.PaneType = DockManagerPaneType.SplitPane;
Layout.RootPane.Orientation = SplitPaneOrientation.Horizontal;
IgbSplitPane rootsplitPane1 = new IgbSplitPane
{
PaneType = DockManagerPaneType.SplitPane,
Orientation = SplitPaneOrientation.Vertical,
};
IgbContentPane contentPane1 = new IgbContentPane
{
PaneType = DockManagerPaneType.ContentPane,
Header = "Content Pane 1" ,
ContentId = "content1"
};
IgbContentPane contentPane2 = new IgbContentPane
{
PaneType = DockManagerPaneType.ContentPane,
Header = "Unpinned Pane 1" ,
ContentId = "content2" ,
IsPinned = false
};
IgbSplitPane splitPane2 = new IgbSplitPane
{
PaneType = DockManagerPaneType.SplitPane,
Orientation = SplitPaneOrientation.Vertical,
Size = 200 ,
};
IgbDocumentHost documentHost1 = new IgbDocumentHost
{
PaneType = DockManagerPaneType.DocumentHost,
Size = 200 ,
};
IgbSplitPane documentHost1RootSplitPane = new IgbSplitPane
{
PaneType = DockManagerPaneType.SplitPane,
Orientation = SplitPaneOrientation.Horizontal,
};
IgbTabGroupPane tabGroupPane1 = new IgbTabGroupPane
{
PaneType = DockManagerPaneType.TabGroupPane,
};
IgbContentPane documentContentPane1 = new IgbContentPane
{
PaneType = DockManagerPaneType.ContentPane,
Header = "Document 1" ,
ContentId = "content3"
};
IgbContentPane documentContentPane2 = new IgbContentPane
{
PaneType = DockManagerPaneType.ContentPane,
Header = "Document 2" ,
ContentId = "content4"
};
IgbContentPane contentPane5 = new IgbContentPane
{
PaneType = DockManagerPaneType.ContentPane,
ContentId = "content5" ,
Header = "Unpinned Pane 2" ,
IsPinned = false
};
IgbSplitPane rootsplitPane2 = new IgbSplitPane
{
PaneType = DockManagerPaneType.SplitPane,
Orientation = SplitPaneOrientation.Vertical,
};
IgbTabGroupPane tabGroupPane2 = new IgbTabGroupPane
{
PaneType = DockManagerPaneType.TabGroupPane,
Size = 200 ,
};
IgbContentPane tabGroupContentPane1 = new IgbContentPane
{
PaneType = DockManagerPaneType.ContentPane,
ContentId = "content6" ,
Header = "Tab 1"
};
IgbContentPane tabGroupContentPane2 = new IgbContentPane
{
PaneType = DockManagerPaneType.ContentPane,
ContentId = "content7" ,
Header = "Tab 2"
};
IgbContentPane tabGroupContentPane3 = new IgbContentPane
{
PaneType = DockManagerPaneType.ContentPane,
ContentId = "content8" ,
Header = "Tab 3"
};
IgbContentPane tabGroupContentPane4 = new IgbContentPane
{
PaneType = DockManagerPaneType.ContentPane,
ContentId = "content9" ,
Header = "Tab 4"
};
IgbContentPane tabGroupContentPane5 = new IgbContentPane
{
PaneType = DockManagerPaneType.ContentPane,
ContentId = "content10" ,
Header = "Tab 5"
};
IgbContentPane contentPane6 = new IgbContentPane
{
PaneType = DockManagerPaneType.ContentPane,
ContentId = "content11" ,
Header = "Content Pane 2"
};
IgbSplitPane floatingSplitPane = new IgbSplitPane
{
PaneType = DockManagerPaneType.SplitPane,
Orientation = SplitPaneOrientation.Horizontal,
FloatingHeight = 150 ,
FloatingWidth = 250 ,
FloatingLocation = new IgbDockManagerPoint { X = 300 , Y = 200 },
};
IgbContentPane contentPane7 = new IgbContentPane
{
PaneType = DockManagerPaneType.ContentPane,
ContentId = "content12" ,
Header = "Floating Pane"
};
rootsplitPane1.Panes.Add(contentPane1);
rootsplitPane1.Panes.Add(contentPane2);
splitPane2.Panes.Add(documentHost1);
splitPane2.Panes.Add(contentPane5);
documentHost1.RootPane = documentHost1RootSplitPane;
documentHost1RootSplitPane.Panes.Add(tabGroupPane1);
tabGroupPane1.Panes.Add(documentContentPane1);
tabGroupPane1.Panes.Add(documentContentPane2);
rootsplitPane2.Panes.Add(tabGroupPane2);
tabGroupPane2.Panes.Add(tabGroupContentPane1);
tabGroupPane2.Panes.Add(tabGroupContentPane2);
tabGroupPane2.Panes.Add(tabGroupContentPane3);
tabGroupPane2.Panes.Add(tabGroupContentPane4);
tabGroupPane2.Panes.Add(tabGroupContentPane5);
rootsplitPane2.Panes.Add(contentPane6);
floatingSplitPane.Panes.Add(contentPane7);
Layout.RootPane.Panes.Add(rootsplitPane1);
Layout.RootPane.Panes.Add(rootsplitPane2);
Layout.FloatingPanes.Add(floatingSplitPane);
}
}
razor コピー
A continuación puede encontrar una lista que contiene los nombres de las ranuras para todos los botones, así como el mango divisor:
Nombre de la ranura
Descripción
closeButton
Los botones de cierre.
paneHeaderCloseButton
Los botones de cierre de los encabezados del panel.
tabHeaderCloseButton
Los botones de cierre de los encabezados de las pestañas.
moreTabsButton
Cuantos más botones de pestañas.
moreOptionsButton
Los botones de más opciones.
maximizeButton
Los botones de maximizar.
minimizeButton
Los botones de minimizar.
pinButton
Los botones de alfiler.
unpinButton
Los botones para desanclar.
splitterHandle
El mango divisor.
Puede encontrar la parte correspondiente a cada ranura en las Partes CSS en la sección Estilo de esta página.
Variables CSS
La siguiente tabla describe todas las variables CSS utilizadas para diseñar el componente Dock-Manager:
variable CSS
Descripción
--igc-background-color
El color de fondo del encabezado dentro del componente del navegador del panel.
--igc-accent-color
El color de fondo de los botones dentro de la parte de acciones del encabezado del panel en foco.
--igc-active-color
El color del texto y de la sombra del cuadro utilizado para los componentes en estado activo.
--igc-border-color
El color inferior del borde del componente del encabezado del panel.
--igc-font-family
La familia de fuentes del componente Dock-Manager.
--igc-dock-background
El color de fondo de los componentes del administrador del muelle, de la pestaña y del panel flotante.
--igc-dock-text
El color del texto del administrador del muelle y de los componentes del panel flotante.
--igc-pane-header-background
El color de fondo del componente del encabezado del panel.
--igc-pane-header-text
El color del texto del componente del encabezado del panel.
--igc-pane-content-background
El color de fondo del contenido dentro del administrador del muelle y los componentes del panel de pestañas.
--igc-pane-content-text
El color del texto del contenido dentro del administrador del muelle y los componentes del panel de pestañas.
--igc-tab-text
El color del texto del componente del encabezado de la pestaña.
--igc-tab-background
El color de fondo del componente del encabezado de la pestaña.
--igc-tab-border-color
El color del borde del componente del encabezado de la pestaña.
--igc-tab-text-active
El color del texto del componente de encabezado de pestaña seleccionado.
--igc-tab-background-active
El color de fondo del componente de encabezado de pestaña seleccionado.
--igc-tab-border-color-active
El color del borde del componente de encabezado de pestaña seleccionado.
--igc-pinned-header-background
El color de fondo del componente de encabezado del panel no fijado.
--igc-pinned-header-text
El color del texto del componente de encabezado del panel no fijado.
--igc-splitter-background
El color de fondo del componente divisor.
--igc-splitter-handle
El color de fondo del controlador divisor.
--igc-button-text
El color de los botones dentro de la parte de acciones del encabezado del panel.
--igc-flyout-shadow-color
El color de la sombra del cuadro del componente del panel de contenido.
--igc-joystick-background
El color de fondo del joystick y los componentes del indicador de acoplamiento raíz.
--igc-joystick-border-color
El color del borde del joystick y los componentes del indicador de acoplamiento de raíz.
--igc-joystick-icon-color
El color del icono del joystick y los componentes del indicador de acoplamiento raíz.
--igc-joystick-background-active
El color de fondo al pasar el cursor sobre el joystick y los componentes del indicador de acoplamiento raíz.
--igc-joystick-icon-color-active
El color del icono de desplazamiento del joystick y los componentes del indicador de acoplamiento raíz.
--igc-floating-pane-border-color
El color del borde de los paneles flotantes.
--igc-context-menu-background
El color de fondo de los elementos del menú contextual.
--igc-context-menu-background-active
El color de fondo de los elementos del menú contextual al pasar el cursor y enfocar.
--igc-context-menu-color
El color del texto de los elementos del menú contextual.
--igc-context-menu-color-active
El color del texto de los elementos del menú contextual al pasar el cursor y enfocar.
--igc-drop-shadow-background
El color de fondo de la sombra paralela.
--igc-disabled-color
El color del texto de los componentes en estado deshabilitado.
Navegación por teclado
La navegación con el teclado mejora la accesibilidad del Dock Manager y proporciona una rica variedad de interacciones para el usuario final, como navegar a través de todos los paneles, dividir la vista en múltiples direcciones acoplando el panel activo, etc.
Los atajos son los siguientes:
Unión cósmica
Cmd/Ctrl + Shift + ↑ Se acopla al top global
Cmd/Ctrl + Shift + ↓ Se acopla al fondo global
Cmd/Ctrl + Shift + → Se acopla a la derecha global
Cmd/Ctrl + Shift + ← Se acopla a la izquierda global
Shift + ↑ Con varias pestañas en un grupo de pestañas, divide la vista y acopla la pestaña enfocada arriba
Shift + ↓ Con varias pestañas en un grupo de pestañas, divide la vista y acopla la pestaña enfocada debajo
Shift + → Con varias pestañas en un grupo de pestañas, divide la vista y acopla la pestaña enfocada a la derecha
Shift + ← Con varias pestañas en un grupo de pestañas, divide la vista y acopla la pestaña enfocada a la izquierda
Navegando
Cmd/Ctrl + F6 o Cmd/Ctrl + → Enfoca la siguiente pestaña en el host del documento
Cmd/Ctrl + Shift + F6 o Cmd/Ctrl + ← Enfoca la pestaña anterior en el host del documento
Alt + F6 Enfoca el siguiente panel de contenido
Alt + Shift + F6 Enfoca el panel de contenido anterior
Navegador de panel
Los siguientes atajos de teclado muestran un navegador desde el cual puede recorrer paneles y documentos.
Cmd/Ctrl + F7 o Cmd/Ctrl + F8 Comienza desde el primer documento en adelante
Alt + F7 o Alt + F8 Comienza desde el primer panel en adelante
Cmd/Ctrl + Shift + F7 o Cmd/Ctrl + Shift + F8 Comienza desde el último documento hacia atrás
Alt + Shift + F7 o Alt + Shift + F8 Comienza desde el último panel hacia atrás
Otro
Alt + F3 Cierra el panel activo
Practique todas las acciones mencionadas anteriormente en la demostración de muestra.
Estilo
Dock Manager utiliza un DOM oculto para encapsular sus estilos y comportamientos. Como resultado, no puedes simplemente apuntar a sus elementos internos con los selectores CSS habituales. Es por eso que exponemos partes de componentes a las que se puede apuntar con el selector CSS::part .
igc-dockmanager::part (content -pane) {
border-radius : 10px ;
}
css
En el siguiente ejemplo, demostramos la capacidad de personalizar Dock Manager a través de algunas de las partes CSS que hemos expuesto.
using System;
using System.Net.Http;
using System.Collections.Generic;
using System.Threading.Tasks;
using System.Text;
using Microsoft.AspNetCore.Components.WebAssembly.Hosting;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Logging;using IgniteUI.Blazor.Controls;
namespace Infragistics.Samples
{
public class Program
{
public static async Task Main (string [] args )
{
var builder = WebAssemblyHostBuilder.CreateDefault(args);
builder.RootComponents.Add<App>("app" );
builder.Services.AddScoped(sp => new HttpClient { BaseAddress = new Uri(builder.HostEnvironment.BaseAddress) });
builder.Services.AddIgniteUIBlazor(typeof (IgbDockManagerModule));
await builder.Build().RunAsync();
}
}
}
cs コピー
@inject IJSRuntime JSRuntime
@using IgniteUI.Blazor.Controls
@using System.Timers
<style >
:root {
--main -color : rgb (227 ,230 ,233 );
--secondary-color : rgb (113 ,115 ,116 );
--white: #ffffff ;
--font -color : rgb (113 ,115 ,116 );
display : flex;
flex-direction : column;
height : 100% ;
}
.size-small {
--ig-size: var (--ig-size-small);
}
.size-medium {
--ig-size: var (--ig-size-medium);
}
.size-large {
--ig-size: var (--ig-size-large);
}
igc-dockmanager {
background-color : var (--main-color);
padding : 20px ;
}
igc-dockmanager::part (pane-header ) {
background-color : var (--white);
border-bottom : 2px solid var (--main-color);
}
igc-dockmanager::part (pane-header active) {
font-weight : 700 ;
color : var (--secondary-color);
box-shadow : none;
border-bottom : 2px solid var (--secondary-color);
}
igc-dockmanager::part (pane-header -content ) {
color : rgba (104 , 97 , 97 , 0.938 );
}
igc-dockmanager::part (splitter) {
flex : 0 0 15px ;
}
igc-dockmanager::part (splitter-base) {
background : transparent;
}
igc-dockmanager::part (splitter-base)::after {
content : none;
}
igc-dockmanager::part (content -pane) {
border-radius : 10px ;
}
igc-dockmanager::part (tab-header bottom ) {
border-bottom-right-radius : 10px ;
border-bottom-left-radius : 10px ;
background-color : var (--main-color);
}
igc-dockmanager::part (tab-header active selected bottom ) {
font-weight : 700 ;
color : var (--secondary-color);
box-shadow : inset 0 2px 0 0 var (--secondary-color);
}
igc-dockmanager::part (tab-strip-area bottom ) {
border-radius : 0 0 10px 10px ;
border-bottom : 2px solid var (--main-color);
background-color : var (--white);
}
igc-dockmanager::part (tab-strip-actions bottom ) {
display : none;
}
igc-dockmanager::part (tabs-content ) {
border-radius : 10px 10px 0 0 ;
background-color : var (--white);
}
igc-dockmanager::part (root-docking-indicator),
igc-dockmanager::part (docking-indicator) {
background-color : rgba (49 , 45 , 49 , 0.733 );
color : var (--white);
border : none;
border-radius : 5px ;
margin : 2px
}
igc-dockmanager::part (docking-preview) {
background-color : var (--main-color);
opacity : 0.7 ;
}
igc-dockmanager::part (unpinned-pane-header ) {
border-radius : 5px ;
margin-bottom : 5px ;
box-shadow : inset 0 2px 0 0 var (--secondary-color);
background-color : var (--white);
}
igc-dockmanager::part (floating-window) {
border-radius : 10px ;
}
.header {
display : flex;
flex-direction : row;
justify-content : space-between;
}
.floatingHeader {
display : flex;
justify-content : space-between;
}
.dockManagerFull {
padding : 0rem ;
margin : 0rem ;
height : 100% ;
width : 100% ;
display : flex;
flex-direction : column;
overflow : hidden;
}
.closeButton {
width : inherit;
border : none;
background : transparent;
color : var (--font-color);
font-size : 14px ;
}
.stock-price {
display : flex;
flex-direction : column;
align-items : flex-end;
}
.stock-item-movement-up {
display : flex;
color : rgb (0 ,153 ,255 );
}
.stock-item-movement-down {
display : flex;
color : rgb (233 , 80 , 164 );
}
igc-avatar::part (image) {
background-color : white;
}
igc-card {
height : inherit;
}
igc-card-content {
padding-top : 5px ;
padding-bottom : 0px ;
}
.account-content {
display : flex;
flex-direction : row;
justify-content : space-between;
}
.top-movers-content {
margin : 0 auto;
width : 100% ;
display : grid;
grid-template-columns : repeat (auto-fit, 150px );
justify-content : space-evenly;
}
.top-move-stock-item {
margin : 1rem ;
display : flex;
flex-direction : column;
align-items : center;
}
.add-card-btn {
display : flex;
justify-content : flex-end;
margin-bottom : 0.5rem ;
}
</style >
<style >
</style >
<div id ="root" >
<IgbDockManager @ref =dockManager id ="dockManager" Height ="100%" Width ="100%" Layout ="Layout" >
<div slot ="accountHeader" class ="header" >
<span > ACCOUNTS</span >
<menu-component > </menu-component >
</div >
<div slot ="accountFloatingHeader" class ="floatingHeader" >
<span > ACCOUNTS</span >
<button id ="close" class ="closeButton" >
<IgbIcon IconName ="close" />
</button >
</div >
<div class ="dockManagerFull" slot ="content1" >
<IgbCard style ="overflow-y: auto;" elevated >
<IgbCardContent >
<div class ="account-content" >
<div >
<h1 > $2980.00</h1 >
<span style ="font-size: 12pt;" > United States Dollar</span >
</div >
<IgbAvatar style ="margin: 0.5rem;" class ="size-medium" Src ="https://static.infragistics.com/xplatform/images/flags/USA.png"
Shape ="@ AvatarShape.Rounded " > USA</IgbAvatar >
</div >
</IgbCardContent >
<IgbCardActions >
<div >
<IgbButton Variant ="@ ButtonVariant.Fab " class ="size-medium" slot ="start" >
Add Money
</IgbButton >
<IgbButton Variant ="@ ButtonVariant.Fab " class ="size-medium" slot ="start" >
Send
</IgbButton >
</div >
</IgbCardActions >
</IgbCard >
</div >
<div slot ="todayTopMovers" class ="header" >
<span > TODAY'S TOP MOVERS</span >
<menu-component > </menu-component >
</div >
<div slot ="todayTopMoversFloatingHeader" class ="floatingHeader" >
<span > TODAY'S TOP MOVERS</span >
<button id ="close" class ="closeButton" >
<IgbIcon IconName ="close" />
</button >
</div >
<div class ="dockManagerFull" slot ="content2" style ="overflow-y: auto;" >
<div class ="top-movers-content size-large" >
<div class ="top-move-stock-item" >
<IgbAvatar Src ="https://static.infragistics.com/xplatform/images/company/tesla.png" Shape ="@ AvatarShape.Circle " > TSLA</IgbAvatar >
<span > 1017,08$</span >
<div class ="stock-item-movement-down" >
<IgbIcon @ref =RegisterIconRef IconName ="arrow-down" Collection ="material" / >
12,54%
</div >
</div >
<div class ="top-move-stock-item" >
<IgbAvatar Src ="https://static.infragistics.com/xplatform/images/company/amc.png" Shape ="@ AvatarShape.Circle " > AMC</IgbAvatar >
<span > 39,33$</span >
<div class ="stock-item-movement-down" >
<IgbIcon IconName ="arrow-down" Collection ="material" > </IgbIcon >
12,72%
</div >
</div >
<div class ="top-move-stock-item" >
<IgbAvatar Src ="https://static.infragistics.com/xplatform/images/company/canoo.png" Shape ="@ AvatarShape.Circle " > GOEV</IgbAvatar >
<span > 12,33$</span >
<div class ="stock-item-movement-up" > <IgbIcon IconName ="arrow-up" Collection ="material" > </IgbIcon > 45,92%</div >
</div >
<div class ="top-move-stock-item" >
<IgbAvatar Src ="https://static.infragistics.com/xplatform/images/company/lucid.png" Shape ="@ AvatarShape.Circle " > LCID</IgbAvatar >
<span > 58,14$</span >
<div class ="stock-item-movement-up" > <IgbIcon IconName ="arrow-up" Collection ="material" > </IgbIcon > 29,42%</div >
</div >
<div class ="top-move-stock-item" >
<IgbAvatar Src ="https://static.infragistics.com/xplatform/images/company/nio.png" Shape ="@ AvatarShape.Circle " > NIO</IgbAvatar >
<span > 21,67$</span >
<div class ="stock-item-movement-down" > <IgbIcon IconName ="arrow-down" Collection ="material" > </IgbIcon > 7,25%</div >
</div >
<div class ="top-move-stock-item" >
<IgbAvatar Src ="https://static.infragistics.com/xplatform/images/company/stoneco.png" Shape ="@ AvatarShape.Circle " > STNE</IgbAvatar >
<span > 22,48$</span >
<div class ="stock-item-movement-down" > <IgbIcon IconName ="arrow-down" Collection ="material" > </IgbIcon > 28,68%</div >
</div >
<div class ="top-move-stock-item" >
<IgbAvatar Src ="https://static.infragistics.com/xplatform/images/company/roku.png" Shape ="@ AvatarShape.Circle " > ROKU</IgbAvatar >
<span > 249,35$</span >
<div class ="stock-item-movement-down" > <IgbIcon IconName ="arrow-down" Collection ="material" > </IgbIcon > 9,5%</div >
</div >
<div class ="top-move-stock-item" >
<IgbAvatar Src ="https://static.infragistics.com/xplatform/images/company/maxar.png" Shape ="@ AvatarShape.Circle " > MAXR</IgbAvatar >
<span > 33,14$</span >
<div class ="stock-item-movement-up" > <IgbIcon IconName ="arrow-up" Collection ="material" > </IgbIcon > 8,12%</div >
</div >
</div >
</div >
<div slot ="transactionsHeader" class ="header" >
<span > TRANSACTIONS</span >
<menu-component > </menu-component >
</div >
<div slot ="transactionsFloatingHeader" class ="floatingHeader" >
<span > TRANSACTIONS</span >
<button id ="close" class ="closeButton" >
<IgbIcon IconName ="close" />
</button >
</div >
<div class ="dockManagerFull" slot ="content3" >
<IgbList id ="list" style ="overflow-y: auto;" >
<IgbListItem >
<IgbAvatar slot ="start" Src ="https://raw.githubusercontent.com/IgniteUI/material-icons-extended/363c7f3e2da72df5fc2eb63b762a4e69f6fbc603/src/svgs/cash-2.svg" Shape ="@ AvatarShape.Circle " > AMZN</IgbAvatar >
<h2 slot ="title" > Money added via **0000</h2 >
<span slot ="subtitle" > 14:40</span >
<div slot ="end" class ="stock-price" >
<span > + 2000$</span >
</div >
</IgbListItem >
<IgbListItem >
<IgbAvatar slot ="start" Src ="https://raw.githubusercontent.com/IgniteUI/material-icons-extended/363c7f3e2da72df5fc2eb63b762a4e69f6fbc603/src/svgs/cash-only.svg" Shape ="@ AvatarShape.Circle " > SET</IgbAvatar >
<h2 slot ="title" > Sports Event Tickets</h2 >
<span slot ="subtitle" > Jun 21, 06:15, Declined because your card is inactive</span >
<div slot ="end" class ="stock-price" >
<span style ="text-decoration: line-through;" > 1017,08 $</span >
<span style ="color: lightgray;" > 900,08 $</span >
</div >
</IgbListItem >
<IgbListItem >
<IgbAvatar slot ="start" Src ="https://raw.githubusercontent.com/IgniteUI/material-icons-extended/363c7f3e2da72df5fc2eb63b762a4e69f6fbc603/src/svgs/cash-only.svg" Shape ="@ AvatarShape.Circle " > AT</IgbAvatar >
<h2 slot ="title" > Airplane Tickets</h2 >
<span slot ="subtitle" > Jun 21, 06:15, Declined because your card is inactive</span >
<div slot ="end" class ="stock-price" >
<span style ="text-decoration: line-through;" > 985,00 $</span >
<span style ="color: lightgray;" > 980,00 $</span >
</div >
</IgbListItem >
<IgbListItem >
<IgbAvatar slot ="start" Src ="https://raw.githubusercontent.com/IgniteUI/material-icons-extended/363c7f3e2da72df5fc2eb63b762a4e69f6fbc603/src/svgs/building.svg" Shape ="@ AvatarShape.Circle " > H</IgbAvatar >
<h2 slot ="title" > Hotel</h2 >
<span slot ="subtitle" > Jun 21, 06:15</span >
<div slot ="end" class ="stock-price" >
<span > - 400,00 $</span >
</div >
</IgbListItem >
<IgbListItem >
<IgbAvatar slot ="start" Src ="https://raw.githubusercontent.com/IgniteUI/material-icons-extended/363c7f3e2da72df5fc2eb63b762a4e69f6fbc603/src/svgs/atm.svg" Shape ="@ AvatarShape.Circle " > ATM</IgbAvatar >
<h2 slot ="title" > Cash at ATM 000000</h2 >
<span slot ="subtitle" > 14:40</span >
<div slot ="end" class ="stock-price" >
<span > - 140$</span >
</div >
</IgbListItem >
<IgbListItem >
<IgbAvatar slot ="start" Src ="https://raw.githubusercontent.com/IgniteUI/material-icons-extended/363c7f3e2da72df5fc2eb63b762a4e69f6fbc603/src/svgs/cash-1.svg" Shape ="@ AvatarShape.Circle " > U</IgbAvatar >
<h2 slot ="title" > Utilities</h2 >
<span slot ="subtitle" > 21/06/2021 16:00</span >
<div slot ="end" class ="stock-price" >
<span > - 200$</span >
</div >
</IgbListItem >
<IgbListItem >
<IgbAvatar slot ="start" Src ="https://raw.githubusercontent.com/IgniteUI/material-icons-extended/363c7f3e2da72df5fc2eb63b762a4e69f6fbc603/src/svgs/atm.svg" Shape ="@ AvatarShape.Circle " > ATM</IgbAvatar >
<h2 slot ="title" > Cash at ATM 000001</h2 >
<span slot ="subtitle" > 10:10</span >
<div slot ="end" class ="stock-price" >
<span > - 280$</span >
</div >
</IgbListItem >
<IgbListItem >
<IgbAvatar slot ="start" Src ="https://raw.githubusercontent.com/IgniteUI/material-icons-extended/363c7f3e2da72df5fc2eb63b762a4e69f6fbc603/src/svgs/cash-2.svg" Shape ="@ AvatarShape.Circle " > MA</IgbAvatar >
<h2 slot ="title" > Money added via **0000</h2 >
<span slot ="subtitle" > 14:40</span >
<div slot ="end" class ="stock-price" >
<span > + 2000$</span >
</div >
</IgbListItem >
</IgbList >
</div >
<div slot ="popularStocksHeader" class ="header" >
<span > POPULAR STOCKS</span >
<menu-component > </menu-component >
</div >
<div slot ="popularStocksFloatingHeader" class ="floatingHeader" >
<span > POPULAR STOCKS</span >
<button id ="close" class ="closeButton" >
<IgbIcon IconName ="close" />
</button >
</div >
<div class ="dockManagerFull" slot ="content4" >
<IgbList id ="list" style ="overflow-y: auto;" >
<IgbListItem >
<IgbAvatar slot ="start" Src ="https://static.infragistics.com/xplatform/images/company/tesla.png" Shape ="@ AvatarShape.Circle " > TSLA</IgbAvatar >
<h2 slot ="title" > Tesla</h2 >
<span slot ="subtitle" > TSLA - Electric Vehicles</span >
<div slot ="end" class ="stock-price" >
<span > 1017,08 $</span >
<div class ="stock-item-movement-down" > <IgbIcon IconName ="arrow-down" Collection ="material" > </IgbIcon > 12,54%</div >
</div >
</IgbListItem >
<IgbListItem >
<IgbAvatar slot ="start" Src ="https://static.infragistics.com/xplatform/images/company/apple.png" Shape ="@ AvatarShape.Circle " > APPL</IgbAvatar >
<h2 slot ="title" > Apple</h2 >
<span slot ="subtitle" > APPL - iPhones and Macs</span >
<div slot ="end" class ="stock-price" >
<span > 150,47 $</span >
<div class ="stock-item-movement-up" > <IgbIcon IconName ="arrow-up" Collection ="material" > </IgbIcon > 0,2%</div >
</div >
</IgbListItem >
<IgbListItem >
<IgbAvatar slot ="start" Src ="https://static.infragistics.com/xplatform/images/company/nio.png" Shape ="@ AvatarShape.Circle " > NIO</IgbAvatar >
<h2 slot ="title" > NIO</h2 >
<span slot ="subtitle" > NIO - Electric Vehicles</span >
<div slot ="end" class ="stock-price" >
<span > 40,07 $</span >
<div class ="stock-item-movement-down" > <IgbIcon IconName ="arrow-down" Collection ="material" > </IgbIcon > 7,25%</div >
</div >
</IgbListItem >
<IgbListItem >
<IgbAvatar slot ="start" Src ="https://static.infragistics.com/xplatform/images/company/amazon.png" Shape ="@ AvatarShape.Circle " > AMZN</IgbAvatar >
<h2 slot ="title" > Amazon</h2 >
<span slot ="subtitle" > AMZN - E-Commerce</span >
<div slot ="end" class ="stock-price" >
<span > 3582,32 $</span >
<div class ="stock-item-movement-down" > <IgbIcon IconName ="arrow-down" Collection ="material" > </IgbIcon > 2,68%</div >
</div >
</IgbListItem >
<IgbListItem >
<IgbAvatar slot ="start" Src ="https://static.infragistics.com/xplatform/images/company/gme.png" Shape ="@ AvatarShape.Circle " > GME</IgbAvatar >
<h2 slot ="title" > Game Stop</h2 >
<span slot ="subtitle" > GME - Video Games Retail</span >
<div slot ="end" class ="stock-price" >
<span > 205,60 $</span >
<div class ="stock-item-movement-down" > <IgbIcon IconName ="arrow-down" Collection ="material" > </IgbIcon > 5,96%</div >
</div >
</IgbListItem >
<IgbListItem >
<IgbAvatar slot ="start" Src ="https://static.infragistics.com/xplatform/images/company/amc.png" Shape ="@ AvatarShape.Circle " > AMC</IgbAvatar >
<h2 slot ="title" > AMC</h2 >
<span slot ="subtitle" > AMC - Entertainment</span >
<div slot ="end" class ="stock-price" >
<span > 39,33 $</span >
<div class ="stock-item-movement-down" > <IgbIcon IconName ="arrow-down" Collection ="material" > </IgbIcon > 12,72%</div >
</div >
</IgbListItem >
<IgbListItem >
<IgbAvatar slot ="start" Src ="https://static.infragistics.com/xplatform/images/company/microsoft.png" Shape ="@ AvatarShape.Circle " > MSFT</IgbAvatar >
<h2 slot ="title" > Microsoft</h2 >
<span slot ="subtitle" > MSFT - Tech Giant</span >
<div slot ="end" class ="stock-price" >
<span > 335,66 $</span >
<div class ="stock-item-movement-down" > <IgbIcon IconName ="arrow-down" Collection ="material" > </IgbIcon > 0,39%</div >
</div >
</IgbListItem >
<IgbListItem >
<IgbAvatar slot ="start" Src ="https://static.infragistics.com/xplatform/images/company/spce.png" Shape ="@ AvatarShape.Circle " > SPCE</IgbAvatar >
<h2 slot ="title" > Virgin Galactic</h2 >
<span slot ="subtitle" > SPCE - Space Tourism</span >
<div slot ="end" class ="stock-price" >
<span > 18,90 $</span >
<div class ="stock-item-movement-down" > <IgbIcon IconName ="arrow-down" Collection ="material" > </IgbIcon > 1,66%</div >
</div >
</IgbListItem >
<IgbListItem >
<IgbAvatar slot ="start" Src ="https://static.infragistics.com/xplatform/images/company/pfizer.png" Shape ="@ AvatarShape.Circle " > PFE</IgbAvatar >
<h2 slot ="title" > Pfizer</h2 >
<span slot ="subtitle" > PFE - Pharmaceuticals</span >
<div slot ="end" class ="stock-price" >
<span > 49,43 $</span >
<div class ="stock-item-movement-down" > <IgbIcon IconName ="arrow-down" Collection ="material" > </IgbIcon > 0,60%</div >
</div >
</IgbListItem >
<IgbListItem >
<IgbAvatar slot ="start" src ="https://static.infragistics.com/xplatform/images/company/google.png" Shape ="@ AvatarShape.Circle " > GOOGL</IgbAvatar >
<h2 slot ="title" > Alpabet (Class A)</h2 >
<span slot ="subtitle" > GOOGL - Tech Giant</span >
<div slot ="end" class ="stock-price" >
<span > 2972,88 $</span >
<div class ="stock-item-movement-down" > <IgbIcon IconName ="arrow-down" Collection ="material" > </IgbIcon > 0,02%</div >
</div >
</IgbListItem >
<IgbListItem >
<IgbAvatar slot ="start" Src ="https://static.infragistics.com/xplatform/images/company/meta.png" Shape ="@ AvatarShape.Circle " > FB</IgbAvatar >
<h2 slot ="title" > Meta Platforms</h2 >
<span slot ="subtitle" > FB - Tech Giant</span >
<div slot ="end" class ="stock-price" >
<span > 347,86 $</span >
<div class ="stock-item-movement-up" > <IgbIcon IconName ="arrow-up" Collection ="material" > </IgbIcon > 2,04%</div >
</div >
</IgbListItem >
<IgbListItem >
<IgbAvatar slot ="start" Src ="https://static.infragistics.com/xplatform/images/company/palantir.png" Shape ="@ AvatarShape.Circle " > PLTR</IgbAvatar >
<h2 slot ="title" > Palantir</h2 >
<span slot ="subtitle" > PLTR - Data Analytics</span >
<div slot ="end" class ="stock-price" >
<span > 23,30 $</span >
<div class ="stock-item-movement-up" > <IgbIcon IconName ="arrow-up" Collection ="material" > </IgbIcon > 2,06%</div >
</div >
</IgbListItem >
<IgbListItem >
<IgbAvatar slot ="start" Src ="https://static.infragistics.com/xplatform/images/company/aa.png" Shape ="@ AvatarShape.Circle " > AAL</IgbAvatar >
<h2 slot ="title" > American Airlines</h2 >
<span slot ="subtitle" > AAL - Airline Service</span >
<div slot ="end" class ="stock-price" >
<span > 20,45 $</span >
<div class ="stock-item-movement-up" > <IgbIcon IconName ="arrow-up" Collection ="material" > </IgbIcon > 0.79%</div >
</div >
</IgbListItem >
<IgbListItem >
<IgbAvatar slot ="start" Src ="https://static.infragistics.com/xplatform/images/company/netflix.png" Shape ="@ AvatarShape.Circle " > NFLX</IgbAvatar >
<h2 slot ="title" > Netflix</h2 >
<span slot ="subtitle" > NFLX - TV Streaming</span >
<div slot ="end" class ="stock-price" >
<span > 679,39 $</span >
<div class ="stock-item-movement-down" > <IgbIcon IconName ="arrow-down" Collection ="material" > </IgbIcon > 0,47%</div >
</div >
</IgbListItem >
</IgbList >
</div >
<div slot ="cardsHeader" class ="header" >
<span > PHYSICAL CARDS</span >
<menu-component > </menu-component >
</div >
<div slot ="cardsFloatingHeader" class ="floatingHeader" >
<span > TODAY'S TOP MOVERS</span >
<button id ="close" class ="closeButton" >
<IgbIcon IconName ="close" />
</button >
</div >
<div class ="dockManagerFull" slot ="content5" >
<IgbCard style ="overflow-y: auto;" Elevated =true >
<IgbCardContent >
<IgbButton Variant ="@ ButtonVariant.Flat " class ="add-card-btn size-small" >
+ Add Card
</IgbButton >
<IgbList id ="list" style ="overflow-y: auto;" >
<IgbListItem >
<IgbAvatar slot ="start" Src ="https://raw.githubusercontent.com/IgniteUI/material-icons-extended/363c7f3e2da72df5fc2eb63b762a4e69f6fbc603/src/svgs/mastercard.svg" Shape ="@ AvatarShape.Circle " > MC</IgbAvatar >
<h2 slot ="title" > Standard **0000</h2 >
<span slot ="subtitle" > Expires on 11/26</span >
</IgbListItem >
<IgbListItem >
<IgbAvatar slot ="start" Src ="https://raw.githubusercontent.com/IgniteUI/material-icons-extended/363c7f3e2da72df5fc2eb63b762a4e69f6fbc603/src/svgs/visa.svg" Shape ="@ AvatarShape.Circle " > VISA</IgbAvatar >
<h2 slot ="title" > Rose gold **0000</h2 >
<span slot ="subtitle" > Expires on 11/24</span >
</IgbListItem >
<IgbListItem >
<IgbAvatar slot ="start" Src ="https://raw.githubusercontent.com/IgniteUI/material-icons-extended/363c7f3e2da72df5fc2eb63b762a4e69f6fbc603/src/svgs/visa.svg" Shape ="@ AvatarShape.Circle " > VISA</IgbAvatar >
<h2 slot ="title" > Virtual card **0000</h2 >
<span slot ="subtitle" > Expires on 10/22</span >
</IgbListItem >
</IgbList >
</IgbCardContent >
</IgbCard >
</div >
</IgbDockManager >
</div >
@code {
public IgbDockManager dockManager { get ; set ; }
public IgbDockManagerLayout Layout { get ; set ; }
public IgbIcon RegisterIconRef { get ; set ; }
private double MaxWidth = 1200 ;
private double MinWidth = 800 ;
public IgbDockManagerLayout[] layouts;
private Timer _timer;
protected override void OnInitialized ( )
{
IgbDockManagerLayout layout1 = this .GetLayout1();
IgbDockManagerLayout layout2 = this .GetLayout2();
IgbDockManagerLayout layout3 = this .GetLayout3();
this .Layout = layout1;
layouts = new IgbDockManagerLayout[] { layout1, layout2, layout3 };
}
public async void TimerElapsed (object sender, ElapsedEventArgs e )
{
double dockWidth = await JSRuntime.InvokeAsync<double >("getDockManagerOffset" , null );
if (dockWidth != double .NaN)
{
IgbDockManagerLayout newLayout = null ;
if (dockWidth >= this .MaxWidth)
{
newLayout = this .layouts[0 ];
}
else if (dockWidth < this .MaxWidth && dockWidth > this .MinWidth)
{
newLayout = this .layouts[1 ];
}
else if (dockWidth <= this .MinWidth)
{
newLayout = this .layouts[2 ];
}
if (newLayout != null && this .Layout != newLayout && this .dockManager != null )
{
this .Layout = newLayout;
this .dockManager.Layout = this .Layout;
}
}
}
protected override async Task OnAfterRenderAsync (bool firstRender )
{
if (firstRender && this .RegisterIconRef != null )
{
await this .RegisterIconRef.EnsureReady();
var arrowDown = "<svg xmlns='http://www.w3.org/2000/svg' height='24' viewBox='0 0 24 24' width='24'><path d='M0 0h24v24H0V0z' fill='none'/><path d='M7 10l5 5 5-5H7z'/></svg>" ;
var arrowUp = "<svg xmlns='http://www.w3.org/2000/svg' height='24' viewBox='0 0 24 24' width='24'><path d='M0 0h24v24H0V0z' fill='none'/><path d='M7 14l5-5 5 5H7z'/></svg>" ;
await this .RegisterIconRef.RegisterIconFromTextAsync("arrow-down" , arrowDown, "material" );
await this .RegisterIconRef.RegisterIconFromTextAsync("arrow-up" , arrowUp, "material" );
if (_timer == null )
{
_timer = new Timer();
_timer.AutoReset = true ;
_timer.Elapsed += TimerElapsed;
_timer.Interval = 500 ;
_timer.Start();
}
}
}
public IgbContentPane GetContentPane (string header, string contentId, string headerId, string floatingHeaderId )
{
var pane = new IgbContentPane()
{
PaneType = DockManagerPaneType.ContentPane,
Header = header,
ContentId = contentId,
HeaderId = headerId,
FloatingHeaderId = floatingHeaderId,
IsPinned = true ,
AllowMaximize = false ,
AllowPinning = false ,
AllowClose = false
};
return pane;
}
public IgbDockManagerLayout GetLayout1 ( )
{
var accountPane = this .GetContentPane("ACCOUNTS" , "content1" , "accountHeader" , "accountFloatingHeader" );
var topMoversPane = this .GetContentPane("TODAY'S TOP MOVERS" , "content2" , "todayTopMovers" , "todayTopMoversFloatingHeader" );
var transactionsPane = this .GetContentPane("TRANSACTIONS" , "content3" , "transactionsHeader" , "transactionsFloatingHeader" );
var popularStocksPane = this .GetContentPane("POPULAR STOCKS" , "content4" , "popularStocksHeader" , "popularStocksFloatingHeader" );
var cardsPane = this .GetContentPane("PHYSICAL CARDS" , "content5" , "cardsHeader" , "cardsFloatingHeader" );
var splitPane1 = new IgbSplitPane()
{
PaneType = DockManagerPaneType.SplitPane,
Orientation = SplitPaneOrientation.Horizontal
};
var splitPane2 = new IgbSplitPane()
{
PaneType = DockManagerPaneType.SplitPane,
Orientation = SplitPaneOrientation.Vertical,
Size = 300
};
var splitPane3 = new IgbSplitPane()
{
PaneType = DockManagerPaneType.SplitPane,
Orientation = SplitPaneOrientation.Horizontal,
Size = 300
};
var splitPane4 = new IgbSplitPane()
{
PaneType = DockManagerPaneType.SplitPane,
Orientation = SplitPaneOrientation.Vertical,
Size = 300
};
var splitPane5 = new IgbSplitPane()
{
PaneType = DockManagerPaneType.SplitPane,
Orientation = SplitPaneOrientation.Vertical,
Size = 300
};
var splitPane6 = new IgbSplitPane()
{
PaneType = DockManagerPaneType.SplitPane,
Orientation = SplitPaneOrientation.Horizontal,
Size = 130
};
var splitPane7 = new IgbSplitPane()
{
PaneType = DockManagerPaneType.SplitPane,
Orientation = SplitPaneOrientation.Vertical,
Size = 200
};
splitPane4.Panes.Add(accountPane);
splitPane4.Panes.Add(cardsPane);
splitPane5.Panes.Add(transactionsPane);
splitPane6.Panes.Add(topMoversPane);
splitPane7.Panes.Add(popularStocksPane);
splitPane3.Panes.Add(splitPane4);
splitPane3.Panes.Add(splitPane5);
splitPane2.Panes.Add(splitPane3);
splitPane2.Panes.Add(splitPane6);
splitPane1.Panes.Add(splitPane2);
splitPane1.Panes.Add(splitPane7);
IgbDockManagerLayout layout = new IgbDockManagerLayout();
layout.RootPane = splitPane1;
return layout;
}
public IgbDockManagerLayout GetLayout2 ( )
{
var accountPane = this .GetContentPane("ACCOUNTS" , "content1" , "accountHeader" , "accountFloatingHeader" );
var topMoversPane = this .GetContentPane("TODAY'S TOP MOVERS" , "content2" , "todayTopMovers" , "todayTopMoversFloatingHeader" );
var transactionsPane = this .GetContentPane("TRANSACTIONS" , "content3" , "transactionsHeader" , "transactionsFloatingHeader" );
var popularStocksPane = this .GetContentPane("POPULAR STOCKS" , "content4" , "popularStocksHeader" , "popularStocksFloatingHeader" );
var cardsPane = this .GetContentPane("PHYSICAL CARDS" , "content5" , "cardsHeader" , "cardsFloatingHeader" );
IgbSplitPane splitPane1 = new IgbSplitPane()
{
PaneType = DockManagerPaneType.SplitPane,
Orientation = SplitPaneOrientation.Horizontal
};
IgbSplitPane splitPane2 = new IgbSplitPane()
{
PaneType = DockManagerPaneType.SplitPane,
Orientation = SplitPaneOrientation.Vertical,
Size = 300
};
IgbSplitPane splitPane3 = new IgbSplitPane()
{
PaneType = DockManagerPaneType.SplitPane,
Orientation = SplitPaneOrientation.Horizontal,
Size = 300
};
IgbSplitPane splitPane4 = new IgbSplitPane()
{
PaneType = DockManagerPaneType.SplitPane,
Orientation = SplitPaneOrientation.Vertical,
Size = 300
};
IgbSplitPane splitPane5 = new IgbSplitPane()
{
PaneType = DockManagerPaneType.SplitPane,
Orientation = SplitPaneOrientation.Vertical,
Size = 300
};
IgbSplitPane splitPane6 = new IgbSplitPane()
{
PaneType = DockManagerPaneType.SplitPane,
Orientation = SplitPaneOrientation.Horizontal,
Size = 130
};
IgbTabGroupPane tabGroupPane1 = new IgbTabGroupPane()
{
PaneType = DockManagerPaneType.TabGroupPane,
Size = 100
};
tabGroupPane1.Panes.Add(accountPane);
tabGroupPane1.Panes.Add(cardsPane);
splitPane4.Panes.Add(tabGroupPane1);
splitPane4.Panes.Add(transactionsPane);
splitPane5.Panes.Add(popularStocksPane);
splitPane6.Panes.Add(topMoversPane);
splitPane3.Panes.Add(splitPane4);
splitPane3.Panes.Add(splitPane5);
splitPane2.Panes.Add(splitPane3);
splitPane2.Panes.Add(splitPane6);
splitPane1.Panes.Add(splitPane2);
IgbDockManagerLayout layout = new IgbDockManagerLayout();
layout.RootPane = splitPane1;
return layout;
}
public IgbDockManagerLayout GetLayout3 ( )
{
var accountPane = this .GetContentPane("ACCOUNTS" , "content1" , "accountHeader" , "accountFloatingHeader" );
var topMoversPane = this .GetContentPane("TODAY'S TOP MOVERS" , "content2" , "todayTopMovers" , "todayTopMoversFloatingHeader" );
var transactionsPane = this .GetContentPane("TRANSACTIONS" , "content3" , "transactionsHeader" , "transactionsFloatingHeader" );
var popularStocksPane = this .GetContentPane("POPULAR STOCKS" , "content4" , "popularStocksHeader" , "popularStocksFloatingHeader" );
var cardsPane = this .GetContentPane("PHYSICAL CARDS" , "content5" , "cardsHeader" , "cardsFloatingHeader" );
IgbSplitPane splitPane1 = new IgbSplitPane()
{
PaneType = DockManagerPaneType.SplitPane,
Orientation = SplitPaneOrientation.Vertical
};
IgbTabGroupPane tabGroupPane1 = new IgbTabGroupPane()
{
PaneType = DockManagerPaneType.TabGroupPane,
Size = 200
};
IgbTabGroupPane tabGroupPane2 = new IgbTabGroupPane()
{
PaneType = DockManagerPaneType.TabGroupPane,
Size = 300
};
tabGroupPane1.Panes.Add(accountPane);
tabGroupPane1.Panes.Add(cardsPane);
tabGroupPane1.Panes.Add(transactionsPane);
tabGroupPane2.Panes.Add(popularStocksPane);
tabGroupPane2.Panes.Add(topMoversPane);
splitPane1.Panes.Add(tabGroupPane1);
splitPane1.Panes.Add(tabGroupPane2);
IgbDockManagerLayout layout = new IgbDockManagerLayout();
layout.RootPane = splitPane1;
return layout;
}
}
razor コピー function getDockManagerOffset ( ) {
var dockManager = document .querySelector("igc-dockmanager" );
if (dockManager != null ) {
var width = dockManager.offsetWidth;
return width;
}
}
js コピー
Partes CSS
Nombre de la pieza
Descripción
content-pane
El componente del panel de contenido.
pane-header
El componente de encabezado del panel de contenido.
pane-header-content
El área de contenido del encabezado del panel de contenido.
pane-header-actions
El área de acciones del encabezado del panel de contenido.
active
Indica un estado activo. Se aplica apane-header
,pane-header-content
,pane-header-actions
,tab-header
.
floating
Indica una ubicación de panel flotante. Se aplica apane-header
,pane-header-content
,pane-header-actions
.
window
Indica una ubicación de ventana flotante. Se aplica apane-header
,pane-header-content
,pane-header-actions
.
split-pane
El componente de panel dividido.
splitter
El componente divisor de cambio de tamaño.
splitter-base
El elemento base del componente divisor.
splitter-ghost
El elemento fantasma del componente divisor.
unpinned-pane-header
El componente de encabezado del panel no fijado.
tab-header
El componente de encabezado de pestaña.
tab-header-more-options-button
El botón de más opciones en el encabezado de la pestaña.
tab-header-close-button
El botón de cerrar en el encabezado de la pestaña.
selected
Indica un estado seleccionado. Se aplica atab-header
ytab-header-close-button
.
hovered
Indica un estado suspendido. Se aplica atab-header-close-button
.
header-title
El título de texto del encabezado de la pestaña.
tab-strip-area
El área de la tira de pestañas que contiene los encabezados de las pestañas.
tab-strip-actions
El área de la barra de pestañas que contiene las acciones de la pestaña.
top
Indica una posición de pestañas superiores. Se aplica atab-header
,tab-strip-area
,tab-strip-actions
.
bottom
Indica la posición de las pestañas inferiores. Se aplica atab-header
,tab-strip-area
,tab-strip-actions
.
context-menu
El componente del menú contextual.
context-menu-item
Un elemento en el componente del menú contextual.
docking-preview
El área de vista previa del acoplamiento.
docking-indicator
El indicador de acoplamiento no raíz.
root-docking-indicator
El indicador de acoplamiento de raíz.
pane-navigator
El componente del navegador de panel.
pane-navigator-header
El área del encabezado del navegador del panel.
pane-navigator-body
El área del cuerpo del navegador de panel.
pane-navigator-items-group
Un grupo de elementos en el componente del navegador de panel.
pane-navigator-items-group-title
El elemento de título de un grupo de elementos en el navegador del panel.
pane-navigator-item
Un elemento en el navegador del panel.
pane-header-close-button
El botón de cerrar en el encabezado del panel.
pane-header-maximize-button
El botón maximizar en el encabezado del panel.
pane-header-minimize-button
El botón minimizar en el encabezado del panel.
pane-header-pin-button
El botón de anclar en el encabezado del panel.
pane-header-unpin-button
El botón para desanclar en el encabezado del panel.
tabs-maximize-button
El botón de maximizar las pestañas.
tabs-minimize-button
Las pestañas minimizan el botón.
tabs-more-button
El botón de más pestañas.
context-menu-unpin-button
El botón desanclar en el menú contextual.
context-menu-close-button
El botón de cerrar en el menú contextual.
splitter-handle
El mango divisor.
horizontal
Indica una posición horizontal. Se aplica asplitter-handle
.
vertical
Indica una posición vertical. Se aplica asplitter-handle
.
Referencias de API