React 그리드 키보드 탐색

    React Grid의 Ignite UI for React 사용자에게 다양한 키보드 상호 작용을 제공합니다. 이는 IgrGrid의 접근성을 향상시키고 사용자가 내부의 모든 유형의 요소(셀, 행, 열 머리글, 도구 모음, 바닥글 등)를 탐색할 수 있도록 합니다. 이 기능은 기본적으로 활성화되어 있으며 개발자는 기본 동작을 쉽게 재정의할 수 있는 옵션이 있습니다.

    탐색이 W3C 접근성 표준을 준수하고 사용하기 편리하도록 IgrGrid의 표가 줄어들었습니다.

    현재 IgrGrid 다음 탭 정지가 도입되었습니다.

    • GroupBy 또는 도구 모음 영역 (활성화된 경우)
    • Grid header.
    • Grid body.
    • Column summaries (if enabled).
    • 그리드 페이지네이터 (활성화된 경우).

    [!Note] Due to this change, navigating between the cells with tab and Shift + Tab is no longer supported in the IgrGrid. Pressing the Tab key now goes through the tab stops in the following order: GroupBy / Toolbar -> Headers -> Body -> Summaries -> Footer / Paginator.

    [!Note] Exposing any focusable element into the IgrGrid body via template may introduce side effects in the keyboard navigation, since the default browser behavior is not prevented. It is the developer's responsibility to prevent or modify it appropriately.

    Header Navigation

    전체 키보드 탐색에서 지원 IgrGrid 이제 헤더가 도입되었습니다. 열 머리글은 화살표 키를 사용하여 쉽게 이동할 수 있습니다. 또한 다음과 같이 열에 대한 작업을 트리거하는 여러 가지 키 조합이 있습니다. 필터링, 정렬, 그룹화 등등. IgrGrid 헤더 컨테이너에 초점이 맞춰지면 다음 키 조합을 사용할 수 있습니다.

    Key Combinations

    • 헤더에서 한 셀 위로 이동합니다(반복 없음). 다중 행 레이아웃(MRL) 또는 다중 열 헤더(MCH)가 정의된 경우에만 사용할 수 있습니다.
    • 헤더에서 한 셀 아래로 이동합니다(줄 바꿈 없음). 다중 행 레이아웃(MRL) 또는 다중 열 헤더(MCH)가 정의된 경우에만 사용할 수 있습니다.
    • 한 셀을 왼쪽으로 이동합니다(반복 없음).
    • 한 셀 오른쪽으로 이동합니다(줄 사이에 줄 바꿈 없음).
    • Ctrl + ←는 행의 가장 왼쪽 셀로 이동합니다. MRL 또는 MCH가 활성화된 경우 동일한 수준의 가장 왼쪽 셀로 이동합니다.
    • 홈은 행의 가장 왼쪽 셀로 이동합니다. MRL 또는 MCH가 활성화된 경우 동일한 수준의 가장 왼쪽 셀로 이동합니다.
    • Ctrl + 행의 가장 오른쪽 셀로 이동합니다. MRL 또는 MCH가 활성화된 경우 동일한 수준의 가장 오른쪽 셀로 이동합니다.
    • End는 행의 가장 오른쪽 셀로 이동합니다. MRL 또는 MCH가 활성화된 경우 동일한 수준의 가장 오른쪽 셀로 이동합니다.
    • 고급 필터링이 활성화된 경우 Alt + L은 고급 필터링 대화 상자를 엽니다.
    • Ctrl + Shift + L은 Excel 스타일 필터 대화 상자를 열거나 열을 필터링할 수 있는 경우 기본(행) 필터를 엽니다.
    • Ctrl + ↑는 활성 열 헤더를 ASC 순서로 정렬합니다. 열이 이미 ASC로 정렬되어 있는 경우 정렬 상태가 지워집니다.
    • Ctrl + ↓는 활성 열 머리글을 DSC 순서로 정렬합니다. DSC에서 열이 이미 정렬된 경우 정렬 상태가 지워집니다.
    • Space는 열을 선택합니다. 열이 이미 선택된 경우 선택이 취소됩니다.
    • Shift + Alt + ←는 열이 그룹화 가능으로 표시된 경우 열을 그룹화합니다.
    • Shift + Alt + 열이 그룹화 가능으로 표시된 경우 열의 그룹을 해제합니다.
    • Alt + 또는 Alt + 는 헤더가 아직 축소되지 않은 경우 열 그룹 헤더를 축소합니다.
    • Alt + 또는 Alt + ↓는 헤더가 아직 확장되지 않은 경우 열 그룹 헤더를 확장합니다.

    Body navigation

    IgrGrid 본문에 초점이 맞춰지면 다음 키 조합을 사용할 수 있습니다.

    Key Combination

    • - 한 셀 위로 이동합니다.
    • 한 셀 아래로 이동합니다.
    • 한 셀 왼쪽으로 이동합니다(줄 바꿈 없음).
    • - 한 셀 오른쪽으로 이동합니다(줄 바꿈 없음).
    • Ctrl + ←는 행의 가장 왼쪽 셀로 이동합니다.
    • Ctrl + →는 행의 가장 오른쪽 셀로 이동합니다.
    • Ctrl + ↑는 열의 첫 번째 셀로 이동합니다.
    • Ctrl + ↓는 열의 마지막 셀로 이동합니다.
    • 홈은 행의 가장 왼쪽 셀로 이동합니다.
    • End는 행의 가장 오른쪽 셀로 이동합니다.
    • Ctrl + Home은 그리드의 가장 왼쪽 상단 데이터 셀로 이동합니다.
    • Ctrl + End는 그리드의 가장 오른쪽 하단 데이터 셀로 이동합니다.
    • Page Up은 한 페이지(뷰 포트) 위로 스크롤합니다.
    • Page Down은 한 페이지(뷰 포트) 아래로 스크롤합니다.
    • Enter enters edit mode.
    • F2 enters edit mode.
    • Esc exits edit mode.
    • 편집 모드에 셀이 있는 경우에만 탭을 사용할 수 있습니다. 행의 편집 가능한 다음 셀로 포커스를 이동합니다. 행의 마지막 셀에 도달한 후 다음 행의 편집 가능한 첫 번째 셀로 포커스를 이동합니다. 행 편집이 활성화되면 포커스는 가장 오른쪽의 편집 가능한 셀에서 CANCELDONE 버튼으로 이동하고 DONE 버튼에서 행의 가장 왼쪽의 편집 가능한 셀로 이동됩니다.
    • Shift + Tab- 편집 모드에 셀이 있는 경우에만 사용할 수 있습니다. 행의 편집 가능한 이전 셀로 포커스를 이동합니다. 행의 첫 번째 셀에 도달한 후 이전 행의 편집 가능한 마지막 셀로 포커스를 이동합니다. 행 편집이 활성화되면 행의 가장 오른쪽 편집 가능한 셀에서 CANCELDONE 버튼으로 포커스가 이동하고 DONE 버튼에서 행의 가장 오른쪽 편집 가능한 셀로 포커스가 이동됩니다.
    • 공백-행 선택이 활성화된 경우 행을 선택합니다.
    • Alt + or Alt + -

    그룹 행 위에 - 그룹을 축소합니다.

    • Alt + or Alt + - over Group Row - expands the group.
    • Alt + 또는 Alt + - 마스터 세부 정보 행 위 - 세부 정보 보기를 축소합니다.
    • Alt + 또는 Alt + - 마스터 세부 정보 행 위 - 세부 정보 보기를 확장합니다.
    • 공백- 그룹 행 위 -RowSelection 속성이 다중으로 설정된 경우 그룹의 모든 행을 선택합니다.

    아래 데모 샘플에서 위에 언급된 모든 작업을 연습해 보세요. 탐색 가능한 그리드 요소에 초점을 맞추면 해당 요소에 사용 가능한 일부 작업이 포함된 목록이 표시되어 안내됩니다.

    데모

    Custom Keyboard Navigation

    특정 키 또는 키 조합에 대한 기본 동작을 재정의하는 것은 키보드 탐색 기능이 제공하는 이점 중 하나입니다. 예를 들어 다음 셀이나 아래 셀로 이동하려면 Enter 또는 Tab 키를 누르세요. 이 탐색 시나리오나 다른 탐색 시나리오는 키보드 탐색 API를 통해 쉽게 달성할 수 있습니다.


    사용자 입력 유효성 검사 및 사용자 지정 탐색과 같은 일반적인 시나리오를 달성하는 방법을 보여주기 위해 API를 사용해 보겠습니다. 먼저 GridKeydown 이벤트에 대한 이벤트 핸들러를 등록해야 합니다.

    <IgrGrid id="grid1" primaryKey="ProductID" gridKeydown={customKeydown}>
    </IgrGrid>
    
    constructor() {
            var grid = this.grid = document.getElementById('grid') as IgrGridComponent;
    		grid.data = this.data
    		grid.addEventListener("gridKeydown", this.customKeydown);
    	}
    
    function customKeydown(s: IgrGridBaseDirective, e: IgrGridKeydownEventArgs) {
      const detail = e.detail
      const target= detail.target;
      const evt = detail.event;
      const type = detail.targetType;
    
      if (type === GridKeydownTargetType.DataCell && target.editMode && evt.key.toLowerCase() === 'tab') {
          // 1. USER INPUT VALIDATION ON TAB
          
      }
      if (type === GridKeydownTargetType.DataCell && evt.key.toLowerCase() === 'enter') {
          // 2. CUSTOM NAVIGATION ON ENTER KEY PRESS
    
      }
    }
    

    이벤트 인수 값을 기반으로 우리는 자체 논리를 제공할 수 있는 두 가지 사례를 식별했습니다(위 참조). 이제 API의 메서드를 사용하여 원하는 작업을 수행해 보겠습니다. 사용자가 편집 모드에서 셀 위에서 Tab 키를 누르면 입력에 대한 유효성 검사가 수행됩니다.

        // 1. USER INPUT VALIDATION ON TAB
        if (target.column.dataType === 'number' && target.editValue < 10) {
            // alert the user that the input is invalid
            return;
        }
    

    [!Note] Please refer to the sample code for full implementation details.

    아래 데모를 사용하여 방금 구현한 사용자 지정 시나리오를 시험해 보세요.

    • 숫자 열의 셀을 두 번 클릭하거나 F2 키를 누르고 값을 7로 변경한 다음 Tab 키를 누릅니다. 프롬프트 메시지가 표시됩니다.
    • 셀을 선택하고 Enter 키를 두 번 누릅니다. 키를 누를 때마다 동일한 열 아래의 다음 행에 있는 셀로 초점이 이동합니다.

    데모

    Known Limitations

    한정 설명
    스크롤 가능한 상위 컨테이너를 사용하여 그리드 내부를 탐색합니다. 그리드가 스크롤 가능한 상위 컨테이너 내부에 배치되고 사용자가 보이지 않는 그리드 셀로 이동하는 경우 상위 컨테이너는 스크롤되지 않습니다.

    Additional Resources

    우리 커뮤니티는 활동적이며 항상 새로운 아이디어를 환영합니다.