59 lines
1.7 KiB
JavaScript
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);
|