// Add ARIA attributes to triggers
var id = this.$element[0].id;
$(`[data-open="${id}"], [data-close="${id}"], [data-toggle="${id}"]`)
- .attr('aria-controls', id);
- // If the target is hidden, add aria-hidden
- this.$element.attr('aria-expanded', this.$element.is(':hidden') ? false : true);
+ .attr({
+ 'aria-controls': id,
+ 'aria-expanded': this.$element.is(':hidden') ? false : true
+ });
}
/**
}
_updateARIA(isOn) {
- this.$element.attr('aria-expanded', isOn ? true : false);
+ var id = this.$element[0].id;
+ $(`[data-open="${id}"], [data-close="${id}"], [data-toggle="${id}"]`)
+ .attr({
+ 'aria-expanded': isOn ? true : false
+ });
}
/**
$html.remove();
});
+ function appendTriggers() {
+ return $(`<div>
+ <a data-open="toggler">Open</a>
+ <a data-close="toggler">Close</a>
+ <a data-toggle="toggler">Toggle</a>
+ </div>`).appendTo('body')
+ }
+
describe('constructor()', function() {
it('stores the element and plugin options', function() {
$html = $('<div id="toggler" data-toggler="class"></div>').appendTo('body');
it('adds Aria attributes to click triggers', function() {
$html = $('<div id="toggler" data-toggler="class"></div>').appendTo('body');
- var $triggers = $(`<div>
- <a data-open="toggler">Open</a>
- <a data-close="toggler">Close</a>
- <a data-toggle="toggler">Toggle</a>
- </div>`).appendTo('body');
+ var $triggers = appendTriggers();
plugin = new Foundation.Toggler($html, {});
- $triggers.find('[data-open]').should.have.attr('aria-controls', 'toggler');
- $triggers.find('[data-close]').should.have.attr('aria-controls', 'toggler');
- $triggers.find('[data-toggle]').should.have.attr('aria-controls', 'toggler');
+ $triggers.find('[data-open], [data-close], [data-toggle]').should.have.attr('aria-controls', 'toggler');
$triggers.remove();
});
it('sets aria-expanded to true if the element is visible', function() {
$html = $('<div id="toggler" data-toggler="class"></div>').appendTo('body');
+ var $triggers = appendTriggers();
plugin = new Foundation.Toggler($html, {});
- $('#toggler').should.have.attr('aria-expanded', 'true');
+ $triggers.find('[data-open], [data-close], [data-toggle]').should.have.attr('aria-expanded', 'true');
});
it('sets aria-expanded to false if the element is invisible', function() {
var $css = $('<style>#toggler { display: none }</style>').appendTo('body');
$html = $('<div id="toggler" data-toggler="class"></div>').appendTo('body');
+ var $triggers = appendTriggers();
plugin = new Foundation.Toggler($html, {});
- $('#toggler').should.have.attr('aria-expanded', 'false');
+ $triggers.find('[data-open], [data-close], [data-toggle]').should.have.attr('aria-expanded', 'false');
$css.remove();
});
});
it('updates aria-expanded after the class is toggled', function() {
$html = $('<div id="toggler" data-toggler="class"></div>').appendTo('body');
+ var $triggers = appendTriggers();
plugin = new Foundation.Toggler($html, {});
plugin._toggleClass();
- $('#toggler').should.have.attr('aria-expanded', 'true');
+ $triggers.find('[data-open], [data-close], [data-toggle]').should.have.attr('aria-expanded', 'true');
plugin._toggleClass();
- $('#toggler').should.have.attr('aria-expanded', 'false');
+ $triggers.find('[data-open], [data-close], [data-toggle]').should.have.attr('aria-expanded', 'false');
});
});
it('animates an invisible element in', function(done) {
var $css = $('<style>#toggler { display: none; }</style>').appendTo('body');
$html = $('<div id="toggler" data-toggler data-animate="fade-in fade-out"></div>').appendTo('body');
+
plugin = new Foundation.Toggler($html, {});
$html.on('on.zf.toggler', function() {
$('#toggler').should.be.visible;
- $('#toggler').should.have.attr('aria-expanded', 'true');
$css.remove();
done();
});
plugin._toggleAnimate();
});
- it('animates an visible element out', function(done) {
+ it('animates a visible element out', function(done) {
$html = $('<div id="toggler" data-toggler data-animate="fade-in fade-out"></div>').appendTo('body');
+
plugin = new Foundation.Toggler($html, {});
$html.on('off.zf.toggler', function() {
$('#toggler').should.be.hidden;
- $('#toggler').should.have.attr('aria-expanded', 'false');
done();
});