This repository has been archived on 2025-01-19. You can view files and clone it, but cannot push or open issues or pull requests.
drupalcampbristol/web/modules/contrib/webform/js/webform.element.buttons.js
2018-11-23 12:29:20 +00:00

59 lines
1.7 KiB
JavaScript

/**
* @file
* JavaScript behaviors for jQuery UI buttons (checkboxradio) element integration.
*/
(function ($, Drupal) {
'use strict';
Drupal.webform = Drupal.webform || {};
Drupal.webform.buttons = Drupal.webform.buttons || {};
Drupal.webform.buttons.selector = Drupal.webform.buttons.selector || [
// Applies to Classy, Bartik, and Seven themes.
'.js-webform-buttons .form-radios',
// Applies to Stable and Bootstrap themes.
'.js-webform-buttons .js-form-type-radio'
].join(',');
/**
* Create jQuery UI buttons element.
*
* @type {Drupal~behavior}
*/
Drupal.behaviors.webformButtons = {
attach: function (context) {
$(context).find(Drupal.webform.buttons.selector).once('webform-buttons').each(function () {
var $buttons = $(this);
// Remove classes around radios and labels and move to main element.
$buttons.find('input[type="radio"], label').each(function () {
$buttons.append($(this).removeAttr('class'));
});
// Remove all empty div wrappers.
$buttons.find('div').remove();
// Must reset $buttons since the contents have changed.
$buttons = $(this);
// Get radios.
var $input = $buttons.find('input[type="radio"]');
// Create checkboxradio.
$input.checkboxradio({icon: false});
// Disable checkboxradio.
$input.checkboxradio('option', 'disabled', $input.is(':disabled'));
// Turn checkboxradio off/on when the input is disabled/enabled.
// @see webform.states.js
$input.on('webform:disabled', function () {
$input.checkboxradio('option', 'disabled', $input.is(':disabled'));
});
});
}
};
})(jQuery, Drupal);