diff --git a/conditional_fields.libraries.yml b/conditional_fields.libraries.yml index 4b83c2c42303aadd90d7c9bfc8858768e351da6e..0e31249865152706ad197e8c433172d6d68c1ffd 100644 --- a/conditional_fields.libraries.yml +++ b/conditional_fields.libraries.yml @@ -4,6 +4,7 @@ conditional_fields: dependencies: - core/jquery - core/drupal.states + - core/once admin: css: diff --git a/js/conditional_fields.js b/js/conditional_fields.js index 61e0bbde4c2c5571189b7df3551114b48eb21ed1..15045c8eb5807eedbb492cf09fc112827796bb5c 100644 --- a/js/conditional_fields.js +++ b/js/conditional_fields.js @@ -195,6 +195,13 @@ } e.effect = effect; originalHandler(e); + + // Ensure Drupal behaviors get attached to visible fields only once. + if (e.type === 'state:visible') { + once('conditional-fields', e.target).forEach(() => { + Drupal.attachBehaviors(e.target); + }); + } }; } });