Files
notifications-admin/app/assets/javascripts/expandCollapse.js

59 lines
1.2 KiB
JavaScript
Raw Normal View History

(function(Modules) {
"use strict";
Modules.ExpandCollapse = function() {
this.start = function(component) {
this.$component = $(component);
this.$toggle = this.$component.find('.toggle')
.on(
"click",
this.change
)
.on("keydown", this.filterKeyPresses([32, 13], this.change));
if (this.getNativeHeight() < this.$component.data('max-height')) {
this.change();
}
};
this.filterKeyPresses = (keys, callback) => function(event) {
if (keys.indexOf(event.keyCode)) return;
event.preventDefault();
callback();
};
this.getNativeHeight = function() {
var $copy = this.$component.clone().css({
'position': 'absolute',
'left': '9999px',
'width': this.$component.width(),
'font-size': this.$component.css('font-size'),
'line-height': this.$component.css('line-height')
}).addClass('expanded');
$('body').append($copy);
var nativeHeight = $copy.height();
$copy.remove();
return nativeHeight;
};
this.change = () => this.toggleCollapsed() && this.$toggle.remove();
this.toggleCollapsed = () => this.$component.addClass('expanded');
};
})(window.GOVUK.Modules);