From 7653981b02a34e6c7d44d378beb30c3aefceac41 Mon Sep 17 00:00:00 2001 From: Mikkel Ricky Date: Sun, 5 Jun 2022 16:37:39 +0200 Subject: [PATCH] Wrapped change event to make CVR element play (more) nicely with webform states --- js/scripts.js | 11 +++++++++++ os2forms_cvr_lookup.libraries.yml | 6 ++++++ src/Element/CvrElement.php | 2 +- src/Plugin/WebformElement/CvrElement.php | 10 ++++++++++ 4 files changed, 28 insertions(+), 1 deletion(-) create mode 100644 js/scripts.js create mode 100644 os2forms_cvr_lookup.libraries.yml diff --git a/js/scripts.js b/js/scripts.js new file mode 100644 index 0000000..6c7d548 --- /dev/null +++ b/js/scripts.js @@ -0,0 +1,11 @@ +(function($, Drupal) { + // Handle the `change` event which is triggered by webform states when an + // element is hidden or shown. + $('.os2forms-cvr-lookup-cvr-element').on('change', function(event) { + // Trigger AJAX event only when webform states is not triggering the + // `change` event and when the CVR element is actually visible. + if ('webform.states' !== extraParameters && $(this).is(':visible')) { + $(this).trigger('os2forms_cvr_lookup:change') + } + }) +})(jQuery, Drupal); diff --git a/os2forms_cvr_lookup.libraries.yml b/os2forms_cvr_lookup.libraries.yml new file mode 100644 index 0000000..3869dc8 --- /dev/null +++ b/os2forms_cvr_lookup.libraries.yml @@ -0,0 +1,6 @@ +os2forms_cvr_lookup: + version: VERSION + js: + js/scripts.js: {} + dependencies: + - core/drupal.ajax diff --git a/src/Element/CvrElement.php b/src/Element/CvrElement.php index 60ee6c2..8af44da 100644 --- a/src/Element/CvrElement.php +++ b/src/Element/CvrElement.php @@ -23,7 +23,7 @@ public function getInfo() { $element['#element_validate'] = [[$this, 'validate']]; $element['#ajax'] = [ 'callback' => [$this, 'ajaxCallback'], - 'event' => 'change', + 'event' => 'os2forms_cvr_lookup:change', 'progress' => [ 'type' => 'throbber', 'message' => $this->t('Looking up CVR'), diff --git a/src/Plugin/WebformElement/CvrElement.php b/src/Plugin/WebformElement/CvrElement.php index 31a1b84..65e01f2 100644 --- a/src/Plugin/WebformElement/CvrElement.php +++ b/src/Plugin/WebformElement/CvrElement.php @@ -3,6 +3,7 @@ namespace Drupal\os2forms_cvr_lookup\Plugin\WebformElement; use Drupal\webform\Plugin\WebformElement\TextField; +use Drupal\webform\WebformSubmissionInterface; /** * @WebformElement( @@ -14,4 +15,13 @@ */ class CvrElement extends TextField { + /** + * {@inheritdoc} + */ + public function prepare(array &$element, WebformSubmissionInterface $webform_submission = null) + { + $element['#attributes']['class'][] = 'os2forms-cvr-lookup-cvr-element'; + $element['#attached']['library'][] = 'os2forms_cvr_lookup/os2forms_cvr_lookup'; + parent::prepare($element, $webform_submission); + } }