mdrop_suite-1.0.0-alpha1/modules/mdrop_suite_utility_classes/src/Form/MdropSuiteUtilityClassesSettingsForm.php

modules/mdrop_suite_utility_classes/src/Form/MdropSuiteUtilityClassesSettingsForm.php
<?php

namespace Drupal\mdrop_suite_utility_classes\Form;

use Drupal\Core\Form\ConfigFormBase;
use Drupal\Core\Form\FormStateInterface;

/**
 * Configure mdrop suite utility classes settings.
 */
class MdropSuiteUtilityClassesSettingsForm extends ConfigFormBase {

  /**
   * {@inheritdoc}
   */
  public function getFormId() {
    return 'mdrop_suite_utility_classes_settings';
  }

  /**
   * {@inheritdoc}
   */
  protected function getEditableConfigNames() {
    return ['mdrop_suite_utility_classes.settings'];
  }

  /**
   * {@inheritdoc}
   */
  public function buildForm(array $form, FormStateInterface $form_state) {
    $config = $this->configFactory->get('mdrop_suite_utility_classes.settings');
    $form['utility_classes'] = [
      '#type' => 'details',
      '#open' => TRUE,
      '#title' => $this->t('Utility classes'),
      '#description' => $this->t(
        'Using similar as <a href=":link" target="_blank">Bootstrap 5 spacing utilities</a>, you can adjust to fit your bootstrap customization or completly customized styles.',
        [':link' => 'https://getbootstrap.com/docs/5.0/utilities/spacing/#utilities-api']
      ),
    ];

    $form['utility_classes']['minimal'] = [
      '#type' => 'checkbox',
      '#disabled' => TRUE,
      '#title' => $this->t('Add minimal styles'),
      '#description' => $this->t('Make sure you manage minimal styles in your theme when disabled, or even templates if you want to use different classes approach. Do not enable if you are using a bootstrap 5 based theme.'),
      '#default_value' => $config->get('minimal'),
    ];

    $form['utility_classes']['container_class'] = [
      '#type' => 'textfield',
      '#required' => TRUE,
      '#title' => $this->t('Container class'),
      '#description' => $this->t('Example "container".'),
      '#default_value' => $config->get('container_class'),
    ];

    $form['utility_classes']['spacers_count'] = [
      '#type' => 'number',
      '#min' => 0,
      '#max' => 10,
      '#required' => TRUE,
      '#title' => $this->t('Spacers count'),
      '#description' => $this->t('How many spacers variants whould you like to appliy to spacing related options (padding, margin, gap), 0 to 10 range.'),
      '#default_value' => $config->get('spacers_count'),
    ];

    $form['utility_classes']['spacers_padding_class_base'] = [
      '#type' => 'textfield',
      '#required' => TRUE,
      '#title' => $this->t('Spacers padding class base'),
      '#description' => $this->t('Example "p". Then classes will be used as "[padding_class_base]-[spacer_number]" e.g: "p-1".'),
      '#default_value' => $config->get('spacers_padding_class_base'),
    ];

    $form['utility_classes']['spacers_margin_class_base'] = [
      '#type' => 'textfield',
      '#required' => TRUE,
      '#title' => $this->t('Spacers margin class base'),
      '#description' => $this->t('Example "m". Then classes will be used as "[margin_class_base]-[spacer_number]" e.g: "m-1".'),
      '#default_value' => $config->get('spacers_margin_class_base'),
    ];

    $form['utility_classes']['spacers_x_class_base'] = [
      '#type' => 'textfield',
      '#required' => TRUE,
      '#title' => $this->t('Spacers horizontal spacing class base (for paddings & margins)'),
      '#description' => $this->t('Example "x". Then classes will be used as "[padding_class_base][spacers_x_class_base]-[spacer_number]" e.g: "px-1".'),
      '#default_value' => $config->get('spacers_x_class_base'),
    ];

    $form['utility_classes']['spacers_y_class_base'] = [
      '#type' => 'textfield',
      '#required' => TRUE,
      '#title' => $this->t('Spacers vertical spacing class base (for paddings & margins)'),
      '#description' => $this->t('Example "y". Then classes will be used as "[padding_class_base][spacers_y_class_base]-[spacer_number]" e.g: "py-1".'),
      '#default_value' => $config->get('spacers_y_class_base'),
    ];

    $form['utility_classes']['spacers_start_class_base'] = [
      '#type' => 'textfield',
      '#required' => TRUE,
      '#title' => $this->t('Spacers start spacing class base (for paddings & margins)'),
      '#description' => $this->t('Example "s". Then classes will be used as "[padding_class_base][spacers_start_class_base]-[spacer_number]" e.g: "ps-1".'),
      '#default_value' => $config->get('spacers_start_class_base'),
    ];

    $form['utility_classes']['spacers_end_class_base'] = [
      '#type' => 'textfield',
      '#required' => TRUE,
      '#title' => $this->t('Spacers end spacing class base (for paddings & margins)'),
      '#description' => $this->t('Example "e". Then classes will be used as "[padding_class_base][spacers_end_class_base]-[spacer_number]" e.g: "pe-1".'),
      '#default_value' => $config->get('spacers_end_class_base'),
    ];

    $form['utility_classes']['spacers_gutter_class_base'] = [
      '#type' => 'textfield',
      '#required' => TRUE,
      '#title' => $this->t('Spacers gutter class base'),
      '#description' => $this->t('Example "g". Then classes will be used as "[gutter_class_base]-[spacer_number]" e.g: "g-1".'),
      '#default_value' => $config->get('spacers_gutter_class_base'),
    ];

    return parent::buildForm($form, $form_state);
  }

  /**
   * {@inheritdoc}
   */
  public function submitForm(array &$form, FormStateInterface $form_state) {
    $this->config('mdrop_suite_utility_classes.settings')
      ->set('minimal', $form_state->getValue('minimal'))
      ->set('container_class', $form_state->getValue('container_class'))
      ->set('spacers_count', $form_state->getValue('spacers_count'))
      ->set('spacers_padding_class_base', $form_state->getValue('spacers_padding_class_base'))
      ->set('spacers_margin_class_base', $form_state->getValue('spacers_margin_class_base'))
      ->set('spacers_x_class_base', $form_state->getValue('spacers_x_class_base'))
      ->set('spacers_y_class_base', $form_state->getValue('spacers_y_class_base'))
      ->set('spacers_start_class_base', $form_state->getValue('spacers_start_class_base'))
      ->set('spacers_end_class_base', $form_state->getValue('spacers_end_class_base'))
      ->set('spacers_gutter_class_base', $form_state->getValue('spacers_gutter_class_base'))
      ->save();
    parent::submitForm($form, $form_state);
  }

}

Главная | Обратная связь

drupal hosting | друпал хостинг | it patrol .inc