You are here

function paragraphs_ee_field_widget_third_party_settings_form in Paragraphs Editor Enhancements 8

Implements hook_field_widget_third_party_settings_form().

File

./paragraphs_ee.module, line 374
Main functions for "Paragraphs Editor Enhancements" module.

Code

function paragraphs_ee_field_widget_third_party_settings_form(WidgetInterface $plugin, FieldDefinitionInterface $field_definition, $form_mode, $form, FormStateInterface $form_state) {
  $elements = [];
  if (!$plugin instanceof ParagraphsWidget) {
    return $elements;
  }
  $settings_defaults = [
    'dialog_off_canvas' => FALSE,
    'dialog_style' => 'tiles',
    'easy_access_count' => 2,
  ];
  $settings = $plugin
    ->getThirdPartySetting('paragraphs_ee', 'paragraphs_ee', $settings_defaults);

  // Define rule for enabling/disabling options that depend on modal add mode.
  $modal_related_options_rule = [
    ':input[name="fields[' . $field_definition
      ->getName() . '][settings_edit_form][settings][add_mode]"]' => [
      'value' => 'modal',
    ],
  ];
  $elements['paragraphs_ee'] = [
    '#type' => 'fieldgroup',
    '#title' => t('Paragraphs Editor Enhancements'),
    '#attributes' => [
      'class' => [
        'fieldgroup',
        'form-composite',
      ],
    ],
  ];
  $elements['paragraphs_ee']['dialog_off_canvas'] = [
    '#type' => 'checkbox',
    '#title' => t('Use off-canvas instead of modal dialog'),
    '#default_value' => $settings['dialog_off_canvas'] ?? FALSE,
    '#attributes' => [
      'class' => [
        'paragraphs-ee__dialog-off-canvas__option',
      ],
    ],
    '#states' => [
      'enabled' => $modal_related_options_rule,
      'visible' => $modal_related_options_rule,
    ],
  ];
  $elements['paragraphs_ee']['dialog_style'] = [
    '#type' => 'select',
    '#title' => t('Display Paragraphs in dialog as'),
    '#default_value' => $settings['dialog_style'] ?? 'tiles',
    '#attributes' => [
      'class' => [
        'paragraphs-ee__dialog-style__option',
      ],
    ],
    '#options' => [
      'tiles' => t('Tiles', [], [
        'context' => 'Paragraphs Editor Enhancements',
      ]),
      'list' => t('List', [], [
        'context' => 'Paragraphs Editor Enhancements',
      ]),
    ],
    '#states' => [
      'enabled' => $modal_related_options_rule,
      'visible' => $modal_related_options_rule,
    ],
  ];
  $elements['paragraphs_ee']['easy_access_count'] = [
    '#type' => 'number',
    '#title' => t('Number of easy-access-buttons', [], [
      'context' => 'Paragraphs Editor Enhancements',
    ]),
    '#default_value' => isset($settings['easy_access_count']) ? $settings['easy_access_count'] : 2,
    '#min' => 0,
    '#description' => t('Set the number of buttons available to directly add a paragraph type without using the modal/off-canvas.', [], [
      'context' => 'Paragraphs Editor Enhancements',
    ]),
    '#attributes' => [
      'class' => [
        'paragraphs-ee__easy-access-count__option',
      ],
    ],
    '#states' => [
      'enabled' => $modal_related_options_rule,
      'visible' => $modal_related_options_rule,
    ],
  ];
  return $elements;
}