public function buildConfigurationForm(array $form, FormStateInterface $form_state) {
$entity_type_id = $this->configuration['target_type'];
$bundles = $this->entityTypeBundleInfo
->getBundleInfo($entity_type_id);
$bundle_options = array();
$bundle_options_simple = array();
// Default weight for new items.
$weight = count($bundles) + 1;
foreach ($bundles as $bundle_name => $bundle_info) {
$bundle_options_simple[$bundle_name] = $bundle_info['label'];
$bundle_options[$bundle_name] = array(
'label' => $bundle_info['label'],
'enabled' => $this->configuration['target_bundles_drag_drop'][$bundle_name]['enabled'] ?? FALSE,
'weight' => $this->configuration['target_bundles_drag_drop'][$bundle_name]['weight'] ?? $weight,
);
$weight++;
}
// Do negate the selection.
$form['negate'] = [
'#type' => 'radios',
'#options' => [
1 => $this
->t('Exclude the selected below'),
0 => $this
->t('Include the selected below'),
],
'#title' => $this
->t('Which Paragraph types should be allowed?'),
'#default_value' => $this->configuration['negate'],
];
// Kept for compatibility with other entity reference widgets.
$form['target_bundles'] = array(
'#type' => 'checkboxes',
'#options' => $bundle_options_simple,
'#default_value' => $this->configuration['target_bundles'] ?? [],
'#access' => FALSE,
);
if ($bundle_options) {
$form['target_bundles_drag_drop'] = [
'#element_validate' => [
[
__CLASS__,
'targetTypeValidate',
],
],
'#type' => 'table',
'#header' => [
$this
->t('Type'),
$this
->t('Weight'),
],
'#attributes' => [
'id' => 'bundles',
],
'#prefix' => '<h5>' . $this
->t('Paragraph types') . '</h5>',
'#suffix' => '<div class="description">' . $this
->t('Selection of Paragraph types for this field. Select none to allow all Paragraph types.') . '</div>',
];
$form['target_bundles_drag_drop']['#tabledrag'][] = [
'action' => 'order',
'relationship' => 'sibling',
'group' => 'bundle-weight',
];
}
uasort($bundle_options, 'Drupal\\Component\\Utility\\SortArray::sortByWeightElement');
$weight_delta = $weight;
// Default weight for new items.
$weight = count($bundles) + 1;
foreach ($bundle_options as $bundle_name => $bundle_info) {
$form['target_bundles_drag_drop'][$bundle_name] = array(
'#attributes' => array(
'class' => array(
'draggable',
),
),
);
$form['target_bundles_drag_drop'][$bundle_name]['enabled'] = array(
'#type' => 'checkbox',
'#title' => $bundle_info['label'],
'#title_display' => 'after',
'#default_value' => $bundle_info['enabled'],
);
$form['target_bundles_drag_drop'][$bundle_name]['weight'] = array(
'#type' => 'weight',
'#default_value' => (int) $bundle_info['weight'],
'#delta' => $weight_delta,
'#title' => $this
->t('Weight for type @type', array(
'@type' => $bundle_info['label'],
)),
'#title_display' => 'invisible',
'#attributes' => array(
'class' => array(
'bundle-weight',
'bundle-weight-' . $bundle_name,
),
),
);
$weight++;
}
if (empty($bundle_options)) {
$form['allowed_bundles_explain'] = [
'#type' => 'markup',
'#markup' => $this
->t('You did not add any Paragraph types yet, click <a href=":here">here</a> to add one.', [
':here' => Url::fromRoute('paragraphs.type_add')
->toString(),
]),
];
}
return $form;
}