Web Components 탐색 서랍 개요
Ignite UI for Web Components 콘텐츠 내에서 확장하거나 축소할 수 있는 측면 탐색을 제공합니다. 미니 버전은 닫혀 있어도 탐색에 빠르게 액세스할 수 있습니다. 콘텐츠는 완전히 사용자 정의할 수 있으며 기본 메뉴 항목 스타일도 제공합니다.
Web Components Navigation Drawer Example
이 샘플은 컴포넌트를 만드는IgcNavDrawerComponent 방법을 보여줍니다.
Usage
먼저 다음 명령을 실행하여 Ignite UI for Web Components 설치해야 합니다.
npm install igniteui-webcomponents
import { defineComponents, IgcNavDrawerComponent } from 'igniteui-webcomponents';
defineComponents(IgcNavDrawerComponent);
Ignite UI for Web Components에 대한 완전한 소개는 '시작 주제'를 읽어보세요.
Adding Navigation Drawer Items
사용하기 가장 간단한 방법은IgcNavDrawerComponent 다음과 같습니다:
<igc-nav-drawer open="true">
<igc-nav-drawer-header-item>
Sample Drawer
</igc-nav-drawer-header-item>
<igc-nav-drawer-item>
<igc-icon slot="icon" name="home"></igc-icon>
<span slot="content">Home</span>
</igc-nav-drawer-item>
<igc-nav-drawer-item>
<igc-icon slot="icon" name="search"></igc-icon>
<span slot="content">Search</span>
</igc-nav-drawer-item>
</igc-nav-drawer>
모든 것이 순조롭게 진행되면 브라우저에 다음이 표시됩니다.
Navbar Integration
서랍 안에 어떤 콘텐츠든 제공할 수 있지만,IgcNavDrawerItemComponent 아이템에 맞춤형 스타일링을 적용할 수도 있습니다.
구성 요소를 조금 더 강화하기 위해, 우리는 그것을 함께 사용할 수 있습니다.IgcNavbarComponent 이렇게 하면 더 완성된 느낌을 얻고 서랍 방식을 활용할 수 있습니다. 다음 예시에서 이를 어떻게 활용할 수 있는지 살펴보겠습니다:
<igc-navbar>
<igc-icon slot="start" name="menu" id="menu"></igc-icon>
<h2>Home</h2>
</igc-navbar>
<igc-nav-drawer id="navDrawer">
<igc-nav-drawer-header-item>
Sample Drawer
</igc-nav-drawer-header-item>
<igc-nav-drawer-item>
<igc-icon slot="icon" name="home"></igc-icon>
<span slot="content">Home</span>
</igc-nav-drawer-item>
<igc-nav-drawer-item>
<igc-icon slot="icon" name="search"></igc-icon>
<span slot="content">Search</span>
</igc-nav-drawer-item>
</igc-nav-drawer>
모든position 값을 표시할 수 있는 라디오 버튼도 추가해 보겠습니다. 이렇게 하면 하나가 선택될 때마다 서랍의 위치를 바꿀 수 있습니다.
// ...
import { defineComponents, IgcNavDrawerComponent, IgcRadioComponent, IgcRadioGroupComponent } from 'igniteui-webcomponents';
defineComponents(IgcNavDrawerComponent, IgcRadioComponent, IgcRadioGroupComponent);
this.navDrawer = document.getElementById('navDrawer') as IgcNavDrawerComponent;
this.radioGroup = document.getElementById('radio-group') as IgcRadioGroupComponent;
this.radioGroup.addEventListener('click', (radio: any) => {
this.navDrawer.position = radio.target.value;
});
<igc-radio-group id="radio-group" alignment="horizontal">
<igc-radio name="position" value="start" label-position="after" checked>Start</igc-radio>
<igc-radio name="position" value="end" label-position="after">End</igc-radio>
<igc-radio name="position" value="top" label-position="after">Top</igc-radio>
<igc-radio name="position" value="bottom" label-position="after">Bottom</igc-radio>
</igc-radio-group>
마지막으로 탐색 창을 열고 닫는 방법이 필요합니다. 이를 달성하는 방법에는 몇 가지가 있지만 이 예에서는 다음을 수행합니다.
// ...
const menu = document.getElementById('menu');
const navDrawer = document.querySelector('igc-nav-drawer') as IgcNavDrawerComponent;
menu!.addEventListener('click', () => {
navDrawer.show();
})
document.getElementById('root')!.onclick = (e) => {
if (e.target != document.getElementById('navDrawer')) {
navDrawer.hide();
}
}
모든 것이 순조롭게 진행되면 구성 요소는 이제 다음과 같이 보일 것입니다.
Mini Variant
미니 버전에서는 내비게이션 드로어가 닫히지 않고 폭이 변경됩니다. 이 기능은 빠른 내비게이션을 유지하기 위해 항상 사용 가능하며, 아이콘만 남겨둡니다. 그걸 위해서는 서랍의 슬롯만 설정mini 하면 됩니다.
<igc-nav-drawer position="start">
<igc-nav-drawer-header-item>Sample Drawer</igc-nav-drawer-header-item>
<igc-nav-drawer-item>
<igc-icon slot="icon" name="home"></igc-icon>
<span slot="content">Home</span>
</igc-nav-drawer-item>
<igc-nav-drawer-item>
<igc-icon slot="icon" name="search"></igc-icon>
<span slot="content">Search</span>
</igc-nav-drawer-item>
<div slot="mini">
<igc-nav-drawer-item>
<igc-icon slot="icon" name="home"></igc-icon>
</igc-nav-drawer-item>
<igc-nav-drawer-item>
<igc-icon slot="icon" name="search"></igc-icon>
</igc-nav-drawer-item>
</div>
</igc-nav-drawer>
결과는 다음과 같습니다.
Styling
이 프로그램은IgcNavDrawerComponent 여러 CSS 파트basemainmini를 노출시켜 스타일링을 완전히 제어할 수 있게 해줍니다.
igc-nav-drawer::part(base) {
background: var(--ig-secondary-500);
}
igc-nav-drawer-item::part(base) {
color: var(--ig-secondary-500-contrast);
}
igc-nav-drawer-item::part(base):hover {
background-color: var(--ig-gray-800);
}
igc-nav-drawer-item[active]::part(base) {
background: var(--ig-warn-500);
color: var(--ig-warn-500-contrast);
}
igc-nav-drawer-header-item {
color: var(--ig-warn-500);
}
API References
IgcButtonComponentIgcIconComponentIgcNavDrawerHeaderItemComponentIgcNavDrawerItemComponentIgcNavDrawerComponentIgcNavbarComponentIgcRadioGroupComponentIgcRadioComponentStyling & Themes