タブパネル:アクセシビリティ

TabPanelは、WAI-ARIAのアクセシビリティガイドラインを実装しています。以下の例では、タブヘッダーとタブペインに一意のIDを割り当てています。これは、TabPanelが「aria-controls」と「aria-labelledby」属性を生成するために自動的に使用します。

import 'bootstrap.css'; import '@grapecity/wijmo.styles/wijmo.css'; import './styles.css'; import * as wjNav from '@grapecity/wijmo.nav'; // document.readyState === 'complete' ? init() : window.onload = init; // function init() { var theTabPanel = new wjNav.TabPanel('#theTabPanel'); // toggle autoSwitch property document.getElementById('autoSwitch').addEventListener('click', function (e) { theTabPanel.autoSwitch = e.target.checked; }); } <!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <title>GrapeCity Wijmo TabPanel Accessibility</title> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <!-- SystemJS --> <script src="node_modules/systemjs/dist/system.src.js"></script> <script src="systemjs.config.js"></script> <script> System.import('./src/app'); </script> </head> <body> <div class="container-fluid"> <div id="theTabPanel"> <div> <a id="hdr-africa"> アフリカ </a> <div id="pane-africa"> <ul> <li>アルジェリア</li> <li>アンゴラ</li> <li>ベニン</li> <li>ボツワナ</li> </ul> </div> </div> <div> <a id="hdr-america" class="wj-state-active"> アメリカ </a> <div id="pane-america"> <ul> <li>カナダ</li> <li>チリ</li> <li>メキシコ</li> <li>アメリカ</li> </ul> </div> </div> <div> <a id="hdr-asia"> アジア </a> <div id="pane-asia"> <ul> <li>中国</li> <li>韓国</li> <li>インド</li> <li>日本</li> </ul> </div> </div> <div> <a id="hdr-europe"> ヨーロッパ </a> <div id="pane-europe"> <ul> <li>オーストリア</li> <li>イングランド</li> <li>フランス</li> <li>ドイツ</li> <li>オランダ</li> <li>スイス</li> </ul> </div> </div> <div> <a id="hdr-oceania"> オセアニア </a> <div id="pane-oceania"> <ul> <li>オーストラリア</li> <li>フィジー</li> <li>ニュージーランド</li> <li>サモア</li> </ul> </div> </div> </div> <div> <label for="autoSwitch"> 自動的に切り替え </label> <input id="autoSwitch" type="checkbox" checked="checked"> </div> </div> </body> </html> .wj-tabpane { padding: 12px; } body { margin-bottom: 48pt; } import 'bootstrap.css'; import '@grapecity/wijmo.styles/wijmo.css'; import './styles.css'; // import { Component, enableProdMode, NgModule } from '@angular/core'; import { platformBrowserDynamic } from '@angular/platform-browser-dynamic'; import { BrowserModule } from '@angular/platform-browser'; import { FormsModule } from '@angular/forms'; import { WjNavModule } from '@grapecity/wijmo.angular2.nav'; // @Component({ selector: 'app-component', templateUrl: 'src/app.component.html' }) export class AppComponent { autoSwitch = true; // constructor() { } } // @NgModule({ imports: [WjNavModule, FormsModule, BrowserModule], declarations: [AppComponent], providers: [], bootstrap: [AppComponent] }) export class AppModule { } // enableProdMode(); // Bootstrap application with hash style navigation and global services. platformBrowserDynamic().bootstrapModule(AppModule); <!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <title>GrapeCity Wijmo TabPanel Accessibility</title> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <!-- Polyfills --> <script src="node_modules/core-js/client/shim.min.js"></script> <script src="node_modules/zone.js/dist/zone.min.js"></script> <!-- SystemJS --> <script src="node_modules/systemjs/dist/system.js"></script> <script src="systemjs.config.js"></script> <script> // workaround to load 'rxjs/operators' from the rxjs bundle System.import('rxjs').then(function (m) { System.set(SystemJS.resolveSync('rxjs/operators'), System.newModule(m.operators)); System.import('./src/app.component'); }); </script> </head> <body> <app-component></app-component> </body> </html> <div class="container-fluid"> <wj-tab-panel [autoSwitch]="autoSwitch" [selectedIndex]="1"> <wj-tab> <a id="hdr-africa">アフリカ</a> <div id="pane-africa"> <ul> <li>アルジェリア</li> <li>アンゴラ</li> <li>ベニン</li> <li>ボツワナ</li> </ul> </div> </wj-tab> <wj-tab> <a id="hdr-america"> アメリカ </a> <div id="pane-america"> <ul> <li>カナダ</li> <li>チリ</li> <li>メキシコ</li> <li>アメリカ</li> </ul> </div> </wj-tab> <wj-tab> <a id="hdr-asia">アジア</a> <div id="pane-asia"> <ul> <li>中国</li> <li>韓国</li> <li>インド</li> <li>日本</li> </ul> </div> </wj-tab> <wj-tab> <a id="hdr-europe">ヨーロッパ</a> <div id="pane-europe"> <ul> <li>オーストリア</li> <li>イングランド</li> <li>フランス</li> <li>ドイツ</li> <li>オランダ</li> <li>スイス</li> </ul> </div> </wj-tab> <wj-tab> <a id="hdr-oceania">オセアニア</a> <div id="pane-oceania"> <ul> <li>オーストラリア</li> <li>フィジー</li> <li>ニュージーランド</li> <li>サモア</li> </ul> </div> </wj-tab> </wj-tab-panel> <div> <label for="autoSwitch"> 自動的に切り替え </label> <input id="autoSwitch" type="checkbox" [(ngModel)]="autoSwitch"> </div> </div> .wj-tabpane { padding: 12px; } body { margin-bottom: 48pt; }