muser-8.x-1.x-dev/modules/custom/muser_project/js/contract-confirm.js

modules/custom/muser_project/js/contract-confirm.js
/**
 * @file
 * View filter functionality.
 */

(function ($, Drupal) {
  Drupal.behaviors.muserContractConfirm = {
    attach: function (context, settings) {
      const $contract_fields = $('.field--name-field-use-contract', context);
      let allow_checking = false;
      $contract_fields.once('muser-contract-confirm--processed').each(function(field) {
        const $contract_field = $(this);
        if ($contract_field.attr('data-enable-contract-modal') === '1') {
          const $checkbox = $contract_field.find('input[type="checkbox"]');
          $checkbox.on('change', function(e) {
            if (e.originalEvent !== undefined && this.checked && !allow_checking) {
              this.checked = false;
              openConfirmationModal($contract_field, $checkbox)
              return;
            }
            allow_checking = false
          })
        }
      })

      let openConfirmationModal = function($contract_field, $checkbox) {
        $contract_field.attr('data-contract-modal-text')

        $contract_field.attr('data-require-confirmation-text')
        const trimmed_confirm_text = $contract_field.attr('data-contract-short-confirmation-text').toLocaleLowerCase().trim();

        $contract_field.attr('data-contract-modal-text-confirm')
        $('.contract-confirm-modal').remove();

        const markup = `
        <div class="contract-confirm-modal">
        <div class="contract-confirm-modal__window">
            <div class="contract-confirm-modal__text">${$contract_field.attr('data-contract-modal-text')}</div>
            ${$contract_field.attr('data-require-confirmation-text') === "1" ?
          `<label for="contract-confirm-modal__input" class="contract-confirm-modal__confirm-text">
              ${$contract_field.attr('data-contract-modal-text-confirm')}
           </label>
          <input  autocomplete="off" id="contract-confirm-modal__input" class="contract-confirm-modal__confirm-field" />
          ` : ""}
           
           <div class="contract-confirm-modal__actions">
             <button class="contract-confirm-modal__action-cancel button--outline">${Drupal.t('Cancel')}</button>
             <button class="contract-confirm-modal__action-submit button--outline" ${$contract_field.attr('data-require-confirmation-text') === "1" ? 'disabled' : ''}>${Drupal.t('Accept')}</button>
            </div>
        
      </div>
      </div>
        `;
        const $markup = $(markup);
        $contract_field.append($markup);
        const $confirmation_field = $markup.find('.contract-confirm-modal__confirm-field');
        const $submit_button = $markup.find('.contract-confirm-modal__action-submit');
        const $cancel_button = $markup.find('.contract-confirm-modal__action-cancel');
        if ($confirmation_field.length > 0) {
          $confirmation_field.focus();
        }
        $confirmation_field.on('change blur keydown keyup', function() {
          if ($confirmation_field.val().toLocaleLowerCase().trim() === trimmed_confirm_text) {
            $submit_button.removeAttr('disabled')
          }
          else {
            $submit_button.attr('disabled', 'disabled')
          }
        })
        $submit_button.on('click', function(e) {
          e.preventDefault();
          e.stopPropagation();
          if ($contract_field.attr('data-require-confirmation-text') !== "1" || $confirmation_field.val().toLocaleLowerCase().trim() === trimmed_confirm_text) {
            allow_checking = true;
            $checkbox.click();
            $markup.remove();
          }
        })
        $cancel_button.on('click', function(e) {
          e.preventDefault();
          e.stopPropagation();
          $markup.remove();
        })
      }
    }
  };
})(jQuery, Drupal);

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

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