12345678910111213141516171819202122232425262728293031323334353637383940414243 |
- /**
- * @file
- * Custom state for handling visibility
- */
- /**
- * Add a new state to Drupal #states. We use this to toggle element-invisible
- * to show/hidden #states elements. This allows elements to be visible to
- * screen readers.
- *
- * To use:
- * $form['my_form_field'] = array(
- * ..
- * // Only show this field if 'some_other_field' is checked.
- * '#states => array(
- * 'show' => array(
- * 'some-other-field' => array('checked' => TRUE),
- * ),
- * ),
- * ..
- * // Required to load the 'show' state handler.
- * '#attached' => array(
- * 'js' => array(ctools_attach_js('states-show')),
- * ),
- * );
- */
- (function ($) {
- 'use strict';
- Drupal.states.State.aliases.hidden = '!show';
- // Show/hide form items by toggling the 'element-invisible' class. This is a
- // more accessible option than the core 'visible' state.
- $(document).bind('state:show', function(e) {
- if (e.trigger) {
- var element = $(e.target).closest('.form-item, .form-submit, .form-wrapper');
- element.toggle(e.value);
- e.value === true ? element.removeClass('element-invisible') : element.addClass('element-invisible');
- }
- });
- })(jQuery);
|