Web Components 트리 개요
TreeView 구성 요소라고도 하는 Ignite UI for Web Components 트리와 같은 UI 내에서 확장 가능한 데이터 구조를 시각화하여 하위 항목에 대한 요청 시 로드를 적용할 수 있게 해주는 고성능 컨트롤입니다. Ignite UI for Web Components 노드 확장 및 축소, 중첩된 앱 탐색, 수동으로 또는 바인딩된 데이터 소스에서 생성할 수 있는 Ignite UI for Web Components와 같은 기능도 제공합니다.
최종 사용자의 경우 이는 다양한 앱 페이지를 쉽게 탐색하고, 선택 항목, 확인란을 사용하고, 텍스트, 아이콘, 이미지 등을 추가할 수 있음을 의미합니다.
Ignite UI for Web Components 사용하면 사용자는 트리 보기 구조로 계층적 데이터를 표현하고 상위-하위 관계를 유지할 수 있을 뿐만 아니라 해당 데이터 모델 없이 정적 트리 보기 구조를 정의할 수 있습니다. 주요 목적은 최종 사용자가 계층적 데이터 구조 내에서 시각화하고 탐색할 수 있도록 하는 것입니다. IgcTreeComponent
구성 요소는 또한 내장된 확인란, 내장된 키보드 탐색 등을 통해 요청 시 로드 기능, 항목 활성화, 다중 및 계단식 항목 선택을 제공합니다.
Web Components Tree Example
이 기본 Ignite UI for Web Components 예제에서는 항목 계층 구조를 지정하여 트리와 해당 항목을 정의하는 방법을 볼 수 있습니다.
How to Use Ignite UI for Web Components Tree With Ignite UI
먼저 다음 명령을 실행하여 Ignite UI for Web Components 설치해야 합니다.
npm install igniteui-webcomponents
IgcTreeComponent
를 사용하기 전에 다음과 같이 등록해야 합니다.
import { defineComponents, IgcTreeComponent } from 'igniteui-webcomponents';
defineComponents(IgcTreeComponent);
Ignite UI for Web Components 에 대한 전체 소개는 시작 항목을 참조하세요.
IgcTreeComponent
사용을 시작하는 가장 간단한 방법은 다음과 같습니다.
Declaring a tree
IgcTreeItemComponent
에 속한 IgcTreeComponent
모든 항목의 표현입니다. 항목은 요구 사항에 따라 항목의 상태를 구성할 수 있는 기회를 제공하는 속성을 제공합니다 disabled
selected
active
expanded
. 이 value
속성은 항목이 나타내는 데이터 항목에 대한 참조를 추가하는 데 사용할 수 있습니다.
항목은 다음 방법 중 하나를 사용하여 선언할 수 있습니다.
- 항목 계층 구조를 지정하고 데이터 세트를 반복하여 트리와 해당 항목 선언
<igc-tree>
${data.map((x) => html`
<igc-tree-item .value=${x} .expanded=${x.expanded} .label=${x.label}>
${x.children.map((y) => html`
<igc-tree-item .value=${y} .expanded=${y.expanded}>
<span slot="label">${y.label}</slot>
</igc-tree-item>
`
</igc-tree-item>
`
</igc-tree>
항목의 확장 및 선택 상태가 기본 데이터에도 반영되도록 항목을 데이터 모델에 바인딩할 수 있습니다.
- 바인딩되지 않은 정적 항목을 생성하여 트리 선언
트리를 렌더링하기 위해 반드시 데이터 세트가 필요한 것은 아닙니다 - 노출 label
된 속성을 사용하여 기본 데이터 모델 없이 개별 항목을 만들거나 레이블에 대한 사용자 지정 슬롯 콘텐츠를 제공할 수 있습니다 IgcTreeItemComponent
.
<igc-tree>
<igc-tree-item>
<div slot="label">
I am a parent item 1
<img src="hard_coded_src.webb" alt="Alt Text">
</div>
<igc-tree-item label="I am a child item 1">
</igc-tree-item>
</igc-tree-item>
<igc-tree-item>
<div slot="label">
I am a parent item 2
<img src="hard_coded_src.webb" alt="Alt Text">
</div>
<igc-tree-item label="I am a child item 1">
</igc-tree-item>
</igc-tree-item>
</igc-tree>
[!Note] You can provide a custom slot content for each
IgcTreeItemComponent
's indentation, expansion and label area respectively using the providedindentation
,indicator
andlabel
slots.
Item Interactions
IgcTreeItemComponent
확장되거나 축소될 수 있습니다.
- 항목을 클릭하여 확장 표시기 (기본 동작).
- 항목을 클릭하면
IgcTreeComponent
toggleNodeOnClick
속성이 로 설정되어 있는지 확인합니다true
.
<igc-tree toggle-node-on-click="true">
<igc-tree-item label="North America">
<igc-tree-item label="United States"></igc-tree-item>
<igc-tree-item label="Canada"></igc-tree-item>
<igc-tree-item label="Mexico"></igc-tree-item>
</igc-tree-item>
<igc-tree-item label="South America">
<igc-tree-item label="Brazil"></igc-tree-item>
</igc-tree-item>
</igc-tree>
기본적으로 여러 항목을 동시에 확장할 수 있습니다. 이 동작을 변경하고 한 번에 singleBranchExpand
하나의 분기만 확장할 수 있도록 하려면 속성을 사용하도록 설정할 수 있습니다. 이렇게 하면 항목이 확장될 때 동일한 수준에서 이미 확장된 다른 모든 분기가 축소됩니다.
<igc-tree single-branch-expand="true">
<igc-tree-item label="North America">
<igc-tree-item label="United States"></igc-tree-item>
<igc-tree-item label="Canada"></igc-tree-item>
<igc-tree-item label="Mexico"></igc-tree-item>
</igc-tree-item>
<igc-tree-item label="South America">
<igc-tree-item label="Brazil"></igc-tree-item>
</igc-tree-item>
</igc-tree>
또한 IgcTreeComponent
항목 상호 작용에 대해 다음과 같은 API 메서드를 제공합니다.
expand
- 모든 항목을 확장합니다. items 배열이 전달되면 지정된 항목만 확장합니다.collapse
- 모든 항목을 축소합니다. items 배열이 전달되면 지정된 항목만 축소합니다.IgcSelectComponent
- 모든 항목을 선택합니다. items 배열이 전달되면 지정된 항목만 선택합니다. 이벤트를 내보내selection
지 않습니다.Tree.Deselect
- 모든 항목을 선택 취소합니다. items 배열이 전달되면 지정된 항목만 선택 취소합니다. 이벤트를 내보내selection
지 않습니다.
Web Components Tree Selection
Ignite UI for Web Components 트리 구성 요소에서 항목 선택을 설정하려면 해당 속성을 설정하기만 하면 됩니다 selection
. 이 속성은 None, Multiple 및 Cascade의 세 가지 모드를 허용합니다. 아래에서 각각에 대해 자세히 살펴보겠습니다.
None
IgcTreeComponent
에서는 기본적으로 항목 선택이 비활성화되어 있습니다. 사용자는 UI 상호 작용을 통해 항목을 선택하거나 선택 취소할 수 없지만 제공된 API 메서드를 통해 이러한 작업을 완료할 수 있습니다.
Multiple
에서 여러 항목을 선택할 수 있도록 하려면 IgcTreeComponent
그냥 설정하기만 하면 됩니다. selection
property 를 배수. 이렇게 하면 모든 항목에 대한 확인란이 렌더링됩니다. 각 항목에는 선택되거나 선택되지 않은 두 가지 상태가 있습니다. 이 모드는 다중 선택을 지원합니다.
<igc-tree selection="multiple">
</igc-tree>
Cascade
IgcTreeComponent
에서 계단식 항목 선택을 활성화하려면 선택 속성을 cascade로 설정하면 됩니다. 그러면 모든 항목에 대한 확인란이 렌더링됩니다.
<igc-tree selection="Cascade">
</igc-tree>
이 모드에서 부모의 선택 상태는 전적으로 자식의 선택 상태에 따라 달라집니다. 부모에 선택된 자식과 선택 취소된 자식이 있는 경우 해당 확인란은 확정되지 않은 상태입니다.
Keyboard Navigation
IgcTreeComponent
의 키보드 탐색은 사용자에게 다양한 키보드 상호 작용을 제공합니다. 이 기능은 기본적으로 활성화되어 있으며 사용자가 항목을 탐색할 수 있도록 합니다.
IgcTreeComponent
탐색은 W3C 접근성 표준을 준수하며 사용이 편리합니다.
주요 조합
- ↓- 표시되는 다음 항목으로 이동합니다. 항목을 활성으로 표시합니다. 마지막 항목인 경우 아무 작업도 수행하지 않습니다.
- Ctrl + ↓- 표시되는 다음 항목으로 이동합니다. 마지막 항목인 경우 아무 작업도 수행하지 않습니다.
- ↑- 이전에 표시된 항목으로 이동합니다. 항목을 활성으로 표시합니다. 첫 번째 항목인 경우 아무 작업도 수행하지 않습니다.
- Ctrl + ↑- 표시된 이전 항목으로 이동합니다. 첫 번째 항목인 경우 아무 작업도 수행하지 않습니다.
- ←- 확장된 상위 항목에서는 해당 항목을 축소합니다. 항목이 축소되었거나 하위 항목이 없으면 상위 항목으로 이동합니다. 상위 항목이 없으면 아무 작업도 수행하지 않습니다.
- →- 확장된 상위 항목에서 항목의 첫 번째 하위 항목으로 이동합니다. 접힌 상위 항목에 있는 경우 확장합니다. 항목에 하위 항목이 없으면 아무 작업도 수행하지 않습니다.
- 홈- 첫 번째 항목으로 이동합니다.
- 끝- 마지막으로 표시된 항목으로 이동합니다.
- 탭- 트리 외부의 페이지에서 포커스를 받을 수 있는 다음 요소로 이동합니다.
- Shift + Tab- 트리 외부의 페이지에서 초점을 맞출 수 있는 이전 요소로 이동합니다.
- 스페이스- 현재 항목 선택을 전환합니다. 노드를 활성으로 표시합니다.
- Shift + Space- 선택이 활성화된 경우 Shift를 누른 상태에서 활성 항목과 Space를 누른 항목 사이의 모든 항목 선택을 전환합니다.
- Enter- 초점이 맞춰진 항목을 활성화합니다. 항목에 링크가 있으면 링크를 엽니다.
- *- 항목과 같은 수준의 모든 형제 항목을 확장합니다.
선택이 활성화되면 최종 사용자의 항목 선택은 렌더링된 확인란을 통해서만 허용됩니다. 두 선택 유형 모두 다중 선택을 허용하므로 다음과 같은 마우스 및 키보드 상호 작용을 사용할 수 있습니다.
- 클릭- 항목 확인란을 수행할 때 선택이 활성화된 경우 항목 선택을 전환합니다. 그렇지 않으면 항목에 초점을 맞춥니다.
- Shift + 클릭- 항목 확인란을 수행할 때 활성 항목과 선택이 활성화된 경우 Shift를 누른 상태에서 클릭한 항목 사이의 모든 항목 선택을 전환합니다.
Web Components Tree Load On Demand
Ignite UI for Web Components 사용자가 가능한 한 빨리 볼 수 있도록 서버에서 검색할 데이터의 양을 최소화하는 방식으로 렌더링될 수 있습니다. 이 동적 데이터 로드 접근 방식을 사용하면 사용자가 항목을 확장한 후에만 해당 특정 상위 항목의 하위 항목이 검색됩니다. 요청 시 로드라고도 하는 이 메커니즘은 모든 원격 데이터에 대해 작동하도록 쉽게 구성할 수 있습니다.
사용자가 확장 아이콘을 클릭하면 로딩 표시기로 대체됩니다. 로딩 속성이 false로 확인되면 로딩 표시기가 사라지고 자식이 로드됩니다.
loadingIndicator
슬롯을 사용하여 로딩 영역에 대한 사용자 정의 슬롯 콘텐츠를 제공할 수 있습니다. 해당 슬롯이 정의되지 않은 경우 IgcCircularProgressComponent
가 사용됩니다.
Load On Demand With Virtualization
Ignite UI for Web Components에서 요청 시 더 많은 수의 하위 항목을 로드하면 트리 항목이 디자인에 따라 선언적으로 정의되므로 성능에 부정적인 영향을 미칠 수 있습니다. 다음 데모에서는 @lit-labs/virtualizer 라이브러리를 사용하여 가상화된 컨테이너에서 하위 트리 항목을 렌더링하는 방법을 보여줍니다. 결과적으로 보이는 자식 덩어리만 DOM에서 렌더링되므로 성능이 향상됩니다.
Styling
아래 나열된 노출된 CSS 부분 중 일부를 사용하여 IgcTreeItemComponent
의 모양을 변경할 수 있습니다.
부품명 | 설명 |
---|---|
wrapper |
나무 항목의 래퍼입니다. |
selected |
선택된 상태를 나타냅니다. 적용대상wrapper . |
focused |
집중된 상태를 나타냅니다. 적용대상wrapper . |
active |
활성 상태를 나타냅니다. 적용대상wrapper . |
indicator |
트리 항목의 확장 표시기입니다. |
label |
트리 항목 콘텐츠입니다. |
text |
트리 항목에 텍스트가 표시되었습니다. |
select |
선택이 활성화된 경우 트리 항목의 확인란입니다. |
이러한 CSS 부분을 사용하여 다음과 같이 IgcTreeComponent
구성 요소의 모양을 사용자 정의할 수 있습니다.
igc-tree-item::part(active) {
background: #ecaa53;
}
igc-tree-item::part(selected) {
background: #ffe6cc;
}
igc-tree-item::part(active selected) {
background: #ff8c1a;
color: white;
}