I created a custom webform element, It works perfectly, but when I add a table form element, It is not showing
My Code :
<?php namespace Drupalwebform_mapperPluginWebformElement; use DrupalComponentUtilityNestedArray; use DrupalCoreDependencyInjectionDependencySerializationTrait; use DrupalCoreFormFormStateInterface; use DrupalwebformPluginWebformElementBase; use DrupalwebformWebformSubmissionInterface; /** * Provides a 'webform_example_element' element. * * @WebformElement( * id = "webform_example_element", * label = @Translation("Webform example element"), * description = @Translation("Provides a webform element example."), * category = @Translation("Example elements"), * ) * * @see Drupalwebform_example_elementElementWebformExampleElement * @see DrupalwebformPluginWebformElementBase * @see DrupalwebformPluginWebformElementInterface * @see DrupalwebformAnnotationWebformElement */ class WebformExampleElement extends WebformElementBase { use DependencySerializationTrait; /** * {@inheritdoc} */ protected function defineDefaultProperties() { return [ 'multiple' => '', 'size' => '', 'minlength' => '', 'maxlength' => '', 'placeholder' => '', 'source_webform' => '', 'target_elements' => [], 'reference_element' => [], 'reference_element_2' => [], ] + parent::defineDefaultProperties(); } /* ************************************************************************ */ /** * {@inheritdoc} */ public function prepare(array &$element, WebformSubmissionInterface $webform_submission = NULL) { parent::prepare($element, $webform_submission); // Here you can customize the webform element's properties. // You can also customize the form/render element's properties via the // FormElement. // // @see Drupalwebform_example_elementElementWebformExampleElement::processWebformElementExample } /** * {@inheritdoc} */ public function form(array $form, FormStateInterface $form_state) { $form = parent::form($form, $form_state); $form['mapped_container'] = [ '#type' => 'fieldset', '#title' => $this->t('Auto complete data element settings'), '#open' => TRUE, '#weight' => -10, '#attributes' => [ 'id' => ['webform-mapped-container'], ], ]; $query = Drupal::entityQuery('webform'); $results = $query->execute(); $form['mapped_container']['source_webform'] = [ '#type' => 'select', '#title' => $this->t('Source webform'), '#options' => $results, '#ajax' => [ 'callback' => [$this, 'updateFormCallback'], 'wrapper' => 'webform-mapped-container', ], ]; $id = $form_state->getValue('source_webform') != NULL ? $form_state->getValue('source_webform') : ''; if (!empty($id)) { $form['mapped_container']['reference_element'] = [ '#type' => 'select', '#title' => $this->t('Reference Element'), '#options' => ['t1', 't2'], ]; $form['mapped_container']['reference_element_2'] = [ '#type' => 'select', '#title' => $this->t('Reference Element'), '#options' => ['t5', 't2'], ]; $form['mapped_container']['target_elements'] = [ '#type' => 'table', '#title' => $this->t('Map Source Elements to Target Elements'), '#header' => [ $this ->t('Source Webform Elements'), $this ->t('Target Webform Elements'), ], ]; for ($i = 1; $i <= 4; $i++) { $form['mapped_container']['target_elements'][$i]['name'] = [ '#type' => 'textfield', '#title' => $this ->t('Name'), '#title_display' => 'invisible', ]; $form['mapped_container']['target_elements'][$i]['phone'] = [ '#type' => 'tel', '#title' => $this ->t('Phone'), '#title_display' => 'invisible', ]; } } return $form; } public function updateFormCallback(array $form, FormStateInterface $form_state) { $id = $form_state->getValues()['properties']['source_webform']; $form_state->setValue('source_webform', $id); $triggering_element = $form_state->getTriggeringElement(); $parents = array_slice($triggering_element['#array_parents'], 0, -1); $element = NestedArray::getValue($form, $parents); return $element; } /** * {@inheritdoc} */ public function preview() { return []; } }