UNPKG

2.68 kBJavaScriptView Raw
1import { CLS } from './swiper-utils';
2export function initA11y(s, plt) {
3 var unregs = [];
4 s._liveRegion = plt.doc().createElement('span');
5 s._liveRegion.className = CLS.notification;
6 s._liveRegion.setAttribute('aria-live', 'assertive');
7 s._liveRegion.setAttribute('aria-atomic', 'true');
8 s.container.appendChild(s._liveRegion);
9 // Setup accessibility
10 if (s.nextButton) {
11 makeFocusable(s.nextButton);
12 addRole(s.nextButton, 'button');
13 addLabel(s.nextButton, s.nextSlideMessage);
14 plt.registerListener(s.nextButton, 'keydown', function (ev) {
15 onEnterKey(s, ev);
16 }, { zone: false }, unregs);
17 }
18 if (s.prevButton) {
19 makeFocusable(s.prevButton);
20 addRole(s.prevButton, 'button');
21 addLabel(s.prevButton, s.prevSlideMessage);
22 plt.registerListener(s.prevButton, 'keydown', function (ev) {
23 onEnterKey(s, ev);
24 }, { zone: false }, unregs);
25 }
26 return function () {
27 unregs.forEach(function (unreg) {
28 unreg();
29 });
30 unregs = null;
31 if (s._liveRegion) {
32 s._liveRegion.parentElement.removeChild(s._liveRegion);
33 }
34 };
35}
36export function makeFocusable(ele) {
37 ele.setAttribute('tabIndex', '0');
38}
39export function addRole(ele, role) {
40 ele.setAttribute('role', role);
41}
42export function addLabel(ele, label) {
43 ele.setAttribute('aria-label', label);
44}
45export function ariaDisable(ele, isDisabled) {
46 if (isDisabled) {
47 ele.setAttribute('aria-disabled', 'true');
48 }
49 else if (ele.hasAttribute('aria-disabled')) {
50 ele.removeAttribute('aria-disabled');
51 }
52}
53export function ariaHidden(ele, isHidden) {
54 if (isHidden) {
55 ele.setAttribute('aria-hidden', 'true');
56 }
57 else if (ele.hasAttribute('aria-hidden')) {
58 ele.removeAttribute('aria-hidden');
59 }
60}
61function onEnterKey(_, __) {
62 // if (event.keyCode !== 13) return;
63 // const target: HTMLElement = <any>event.target;
64 // if (target.classList.contains(PARAMS.nextButtonClass)) {
65 // if (s.isEnd) {
66 // notify(s, PARAMS.lastSlideMessage);
67 // } else {
68 // notify(s, PARAMS.nextSlideMessage);
69 // }
70 // } else if (target.classList.contains(PARAMS.prevButtonClass)) {
71 // if (s.isBeginning) {
72 // notify(s, PARAMS.firstSlideMessage);
73 // } else {
74 // notify(s, PARAMS.prevSlideMessage);
75 // }
76 // }
77}
78// function notify(s: Slides, message: string) {
79// var notification = s._liveRegion;
80// if (notification) {
81// notification.innerHTML = message || '';
82// }
83// }
84//# sourceMappingURL=swiper-a11y.js.map
\No newline at end of file