Untitled
unknown
plain_text
4 years ago
4.7 kB
3
Indexable
/** * @module ds2-electric-range-accessibility * @description Electric range component Accessibility Partial * @author Martin Dimitrov */ define( 'ds2-electric-range-accessibility', [ 'jquery', 'ds2-accessibility', 'lazyload' ], function ($, Accessibility, LazyLoad) { 'use strict'; function DS2ElectricRangeAccessibility(element) { this.accessibility = new Accessibility(element); this.elements = { checkboxes: $(element).find('.ds2-electric-range__switch-wrapper input'), driverProfileInput: $(element).find('.ds2-electric-range__driving-profile-range input'), electricRangeLayer: $('.ds2-electric-range__layer-open'), closeBtn: $('.ds2-electric-range__layer-close'), layer: $('.ds2-electric-range__layer') } this.addKeyboardSupportCheckboxes(this.elements.checkboxes); this.addKeyboardSupportDrivingProfileInput(this.elements.driverProfileInput); this.initLayerMobile() } DS2ElectricRangeAccessibility.prototype.addKeyboardSupportDrivingProfileInput = function (element) { var getLabels = $('.ds2-electric-range__driving-profile-range .electric-range-slider__legend').children().toArray(); var efficient = $(getLabels[0]).text(); var moderate = $(getLabels[1]).text(); var sporty = $(getLabels[2]).text(); var labels = [efficient, efficient + ' ' + moderate, moderate, moderate + ' ' + sporty, sporty]; var input = $(element); $(input).on('change', function (event) { var value = Number(event.target.value); $(input).attr('aria-valuetext', labels[value - 1]); }); } DS2ElectricRangeAccessibility.prototype.addKeyboardSupportCheckboxes = function (elements) { var self = this; elements.each(function () { var currentCheckBox = $(this)[0]; self.accessibility.addKeyListener('up', { element: currentCheckBox, keyCodes: [self.accessibility.keyCodes.ENTER], fn: function () { var checked = $(currentCheckBox).is(":checked"); $(currentCheckBox).prop('checked', checked = !checked); }, }); }); } DS2ElectricRangeAccessibility.prototype.initLayerMobile = function () { var self = this; var electricRangeOpenLayer = document.querySelector('.ds2-electric-range__layer'); var electircRangeFirstChild = self.elements.electricRangeLayer.toArray()[0]; var layerListItems = $('.ds2-electric-range__layer .ds2-electric-range__layer-item').toArray(); // key listeners // make elements active self.accessibility.addKeyListener('up', { element: electircRangeFirstChild, keyCodes: [self.accessibility.keyCodes.ENTER], fn: function () { new LazyLoad({container: electricRangeOpenLayer}); $(electricRangeOpenLayer).addClass('is-active'); self.accessibility.focusElement(layerListItems[0]); var items = $('.ds2-electric-range__layer.is-active').find('.ds2-electric-range__layer-item'); items.each(function(){ self.accessibility.makeElementActive($(this)); }); self.accessibility.makeElementActive(self.elements.closeBtn); // set keyboard trap self.accessibility.activateKeyboardTrap({ container: $('.ds2-electric-range__layer.is-active'), includeContainer: true, }); }, }); // exit button key listener self.accessibility.addKeyListener('up', { element: this.elements.closeBtn, keyCodes: [self.accessibility.keyCodes.ENTER], fn: function () { var items = $('.ds2-electric-range__layer.is-active').find('.ds2-electric-range__layer-item'); $(electricRangeOpenLayer).removeClass('is-active'); items.each(function(){ self.accessibility.makeElementInactive($(this)); }); self.accessibility.makeElementInactive(self.elements.closeBtn); }, }); } return DS2ElectricRangeAccessibility; });
Editor is loading...