diff --git a/src/Form/Control/Callbacks/RecalculateCallback.php b/src/Form/Control/Callbacks/RecalculateCallback.php index 421c996..db61a47 100644 --- a/src/Form/Control/Callbacks/RecalculateCallback.php +++ b/src/Form/Control/Callbacks/RecalculateCallback.php @@ -44,13 +44,30 @@ public static function addAjaxCommands(AjaxResponse $response, FormStateInterfac * * @return array */ - public static function processElement(array $element, FormStateInterface $formState): array { + public static function processElement(array &$element, FormStateInterface &$formState): array { if (TRUE !== $formState->get('$calculateUsed')) { if (is_array($element['#ajax'] ?? NULL) && [static::class, 'onChange'] === $element['#ajax']['callback']) { unset($element['#ajax']); } } + if (isset($element['#type'])) { + assert(is_string($element['#type'])); + /** @var \Drupal\Core\Render\ElementInfoManagerInterface $elementInfoManager */ + $elementInfoManager = \Drupal::service('plugin.manager.element_info'); + $info = $elementInfoManager->getInfo($element['#type']); + foreach ($info['#process'] ?? [] as $callback) { + $completeForm = &$formState->getCompleteForm(); + /** @var array $element */ + // @phpstan-ignore parameterByRef.type + $element = call_user_func_array( + // @phpstan-ignore argument.type + $formState->prepareCallback($callback), + [&$element, &$formState, &$completeForm] + ); + } + } + return $element; }