vvjc-1.0.x-dev/js/vvjc-admin.js

js/vvjc-admin.js
/**
 * @file
 * Handles form field visibility toggles in Views UI.
 *
 * Filename:     vvjc-admin.js
 * Website:      https://www.flashwebcenter.com
 * Developer:    Alaa Haddad https://www.alaahaddad.com.
 */

(function (Drupal, once) {
  'use strict';

  /**
   * Toggle deep link identifier field visibility.
   */
  Drupal.behaviors.vvjcDeeplinkToggle = {
    attach: function (context, settings) {
      const toggleCheckbox = once('vvjc-deeplink-toggle', '[data-vvjc-deeplink-toggle="true"]', context);

      if (!toggleCheckbox.length) {
        return;
      }

      toggleCheckbox.forEach(function(checkbox) {
        const wrapper = context.querySelector('[data-vvjc-deeplink-field="true"]');

        if (!wrapper) {
          return;
        }

        // Mark as processed to prevent duplicate handlers
        if (checkbox.hasAttribute('data-vvjc-processed')) {
          return;
        }
        checkbox.setAttribute('data-vvjc-processed', 'true');

        /**
         * Update field visibility and required state.
         */
        const updateVisibility = function(isEnabled) {
          const input = wrapper.querySelector('input[type="text"]');

          if (isEnabled) {
            wrapper.classList.remove('hidden-element');
            wrapper.removeAttribute('aria-hidden');

            if (input) {
              input.removeAttribute('tabindex');
              input.setAttribute('required', 'required');
            }
          }
          else {
            wrapper.classList.add('hidden-element');
            wrapper.setAttribute('aria-hidden', 'true');

            if (input) {
              input.setAttribute('tabindex', '-1');
              input.removeAttribute('required');
            }
          }
        };

        // Set initial state
        updateVisibility(checkbox.checked);

        // Listen for changes
        checkbox.addEventListener('change', function() {
          updateVisibility(this.checked);
        });
      });
    }
  };

})(Drupal, once);

Главная | Обратная связь

drupal hosting | друпал хостинг | it patrol .inc