Commit d78ba8f5 authored by Bojan Živanović's avatar Bojan Živanović
Browse files

Issue #3059298 by bojanz: The ZoneTerritory form element has several ajax bugs

parent a4101560
Loading
Loading
Loading
Loading
+20 −12
Original line number Diff line number Diff line
@@ -297,10 +297,8 @@ class ZoneTerritory extends FormElement {
   * Ajax callback.
   */
  public static function ajaxRefresh(array $form, FormStateInterface $form_state) {
    $country_element = $form_state->getTriggeringElement();
    $address_element = NestedArray::getValue($form, array_slice($country_element['#array_parents'], 0, -2));

    return $address_element;
    $triggering_element = $form_state->getTriggeringElement();
    return NestedArray::getValue($form, array_slice($triggering_element['#array_parents'], 0, -1));
  }

  /**
@@ -316,18 +314,28 @@ class ZoneTerritory extends FormElement {
      return $element;
    }

    $triggering_element_name = end($triggering_element['#parents']);
    if ($triggering_element_name == 'country_code') {
    $keys = [
      'country_code' => [
        'dependent_locality', 'locality', 'administrative_area',
      ],
      'administrative_area' => [
        'dependent_locality', 'locality',
      ],
      'locality' => [
        'dependent_locality',
      ],
    ];
    $triggering_element_name = end($triggering_element['#parents']);
    if (isset($keys[$triggering_element_name])) {
      $input = &$form_state->getUserInput();
      foreach ($keys as $key) {
      foreach ($keys[$triggering_element_name] as $key) {
        if (isset($element[$key])) {
          $parents = array_merge($element['#parents'], [$key]);
          NestedArray::setValue($input, $parents, '');
          $element[$key]['#value'] = '';
        }
      }
    }

    return $element;
  }