You are here

function paragraphs_sets_field_widget_third_party_settings_form in Paragraphs Sets 8.2

Implements hook_field_widget_third_party_settings_form().

File

./paragraphs_sets.module, line 81
Main functions of paragraphs_sets.module.

Code

function paragraphs_sets_field_widget_third_party_settings_form(WidgetInterface $plugin, FieldDefinitionInterface $field_definition, $form_mode, $form, FormStateInterface $form_state) {
  if ($plugin instanceof ParagraphsWidget) {
    $settings = $plugin
      ->getThirdPartySettings('paragraphs_sets');
    $element['paragraphs_sets'] = [
      '#type' => 'fieldgroup',
      '#title' => t('Paragraphs Sets'),
      '#attributes' => [
        'class' => [
          'fieldgroup',
          'form-composite',
        ],
      ],
    ];
    $element['paragraphs_sets']['use_paragraphs_sets'] = [
      '#type' => 'checkbox',
      '#title' => t('Enable Paragraphs Sets'),
      '#default_value' => isset($settings['paragraphs_sets']['use_paragraphs_sets']) ? $settings['paragraphs_sets']['use_paragraphs_sets'] : '',
    ];
    $paragraph_field = $field_definition
      ->getName();
    $field_allowed_paragraphs_types = $plugin
      ->getAllowedTypes($field_definition);
    $cardinality = $field_definition
      ->getFieldStorageDefinition()
      ->getCardinality();
    $sets_options = ParagraphsSets::getSetsOptions(array_keys($field_allowed_paragraphs_types), $cardinality);
    $element['paragraphs_sets']['sets_allowed'] = [
      '#type' => 'checkboxes',
      '#title' => t('Limit sets to'),
      '#description' => t('Leave unchecked to show all. Sets not shown here are not available due to field restrictions on cardinality or Paragraph types.'),
      '#options' => $sets_options,
      '#default_value' => isset($settings['paragraphs_sets']['sets_allowed']) ? $settings['paragraphs_sets']['sets_allowed'] : [],
      '#states' => [
        'visible' => [
          ":input[name='fields[{$paragraph_field}][settings_edit_form][third_party_settings][paragraphs_sets][paragraphs_sets][use_paragraphs_sets]']" => [
            'checked' => TRUE,
          ],
        ],
      ],
    ];
    $element['paragraphs_sets']['default_set'] = [
      '#type' => 'select',
      '#title' => t('Default set'),
      '#description' => t('Choose a default set. The "Default paragraph type" setting above must be set to "- None -".'),
      '#options' => array_merge([
        PARAGRAPHS_SETS_DEFAULT_EMPTY_VALUE => t("- None -"),
      ], $sets_options),
      '#default_value' => isset($settings['paragraphs_sets']['default_set']) ? $settings['paragraphs_sets']['default_set'] : '',
      '#states' => [
        'visible' => [
          ":input[name='fields[{$paragraph_field}][settings_edit_form][third_party_settings][paragraphs_sets][paragraphs_sets][use_paragraphs_sets]']" => [
            'checked' => TRUE,
          ],
        ],
        'enabled' => [
          ":input[name='fields[{$paragraph_field}][settings_edit_form][settings][default_paragraph_type]']" => [
            'value' => '_none',
          ],
        ],
      ],
    ];
    return $element;
  }
}