UNPKG

@hmcts/frontend

Version:

HMCTS Frontend contains the code you need to start building a user interface for HMCTS.

85 lines (73 loc) 2.81 kB
HMCTSFrontend.FilterToggleButton = function(options) { this.options = options; this.container = this.options.toggleButton.container; this.createToggleButton(); this.setupResponsiveChecks(); this.options.filter.container.attr('tabindex', '-1'); if(this.options.startHidden) { this.hideMenu(); } }; HMCTSFrontend.FilterToggleButton.prototype.setupResponsiveChecks = function() { this.mq = window.matchMedia(this.options.bigModeMediaQuery); this.mq.addListener($.proxy(this, 'checkMode')); this.checkMode(this.mq); }; HMCTSFrontend.FilterToggleButton.prototype.createToggleButton = function() { this.menuButton = $('<button class="govuk-button '+this.options.toggleButton.classes+'" type="button" aria-haspopup="true" aria-expanded="false">'+this.options.toggleButton.showText+'</button>'); this.menuButton.on('click', $.proxy(this, 'onMenuButtonClick')); this.options.toggleButton.container.append(this.menuButton); }; HMCTSFrontend.FilterToggleButton.prototype.checkMode = function(mq) { if(mq.matches) { this.enableBigMode(); } else { this.enableSmallMode(); } }; HMCTSFrontend.FilterToggleButton.prototype.enableBigMode = function() { this.showMenu(); this.removeCloseButton(); }; HMCTSFrontend.FilterToggleButton.prototype.enableSmallMode = function() { this.hideMenu(); this.addCloseButton(); }; HMCTSFrontend.FilterToggleButton.prototype.addCloseButton = function() { if(this.options.closeButton) { this.closeButton = $('<button class="hmcts-filter__close" type="button">'+this.options.closeButton.text+'</button>'); this.closeButton.on('click', $.proxy(this, 'onCloseClick')); this.options.closeButton.container.append(this.closeButton); } }; HMCTSFrontend.FilterToggleButton.prototype.onCloseClick = function() { this.hideMenu(); this.menuButton.focus(); }; HMCTSFrontend.FilterToggleButton.prototype.removeCloseButton = function() { if(this.closeButton) { this.closeButton.remove(); this.closeButton = null; } }; HMCTSFrontend.FilterToggleButton.prototype.hideMenu = function() { this.menuButton.attr('aria-expanded', 'false'); this.options.filter.container.addClass('hmcts-hidden'); this.menuButton.text(this.options.toggleButton.showText); }; HMCTSFrontend.FilterToggleButton.prototype.showMenu = function() { this.menuButton.attr('aria-expanded', 'true'); this.options.filter.container.removeClass('hmcts-hidden'); this.menuButton.text(this.options.toggleButton.hideText); }; HMCTSFrontend.FilterToggleButton.prototype.onMenuButtonClick = function() { this.toggle(); }; HMCTSFrontend.FilterToggleButton.prototype.toggle = function() { if(this.menuButton.attr('aria-expanded') == 'false') { this.showMenu(); this.options.filter.container.focus(); } else { this.hideMenu(); } };