You are here

class Classes in GridStack 8.2

Provides the classes styles.

Plugin annotation


@GridStackStylizer(
  id = "classes",
  label = @Translation("Classes")
)

Hierarchy

Expanded class hierarchy of Classes

1 string reference to 'Classes'
Wrapper::wrapperElement in src/Plugin/gridstack/stylizer/Wrapper.php

File

src/Plugin/gridstack/stylizer/Classes.php, line 18

Namespace

Drupal\gridstack\Plugin\gridstack\stylizer
View source
class Classes extends Media {

  /**
   * The black opacity for backgrounds or colors.
   *
   * @var array
   */
  protected $opacity = [
    20,
    40,
    60,
    80,
    90,
  ];

  /**
   * Returns the module feature CSS classes, not available at CSS frameworks.
   */
  public function getInternalClasses() {
    $classes = $bg = $bg_pos = $padding = $min_height = $min_height_md = [];
    $min_height_lg = [];
    foreach ($this->opacity as $key) {
      $bg[] = 'bg-dark-' . $key;
    }
    foreach (array_keys(GridStackDefault::breakpoints()) as $key) {
      $min_height[] = 'mh-' . $key;
      $min_height_md[] = 'mh-md-' . $key;
      $min_height_lg[] = 'mh-lg-' . $key;
      $padding[] = 'p-' . $key;
    }
    $positions = [
      'center',
      'bottom',
      'bottom-left',
      'bottom-right',
      'left',
      'right',
      'top',
      'top-left',
      'top-right',
    ];
    foreach ($positions as $key) {
      $bg_pos[] = 'bg-' . $key;
    }
    $classes['background'] = $bg;
    $classes['bg_position'] = $bg_pos;
    $classes['min_height'] = $min_height;
    $classes['min_height_md'] = $min_height_md;
    $classes['min_height_lg'] = $min_height_lg;
    $classes['padding'] = $padding;
    return $classes;
  }

  /**
   * {@inheritdoc}
   */
  protected function classesElement($optionset, FormStateInterface $form_state, array $settings, array $extras = []) {
    $context = $settings['_scope'];
    $container = !empty($settings['_container']);
    $element = [];
    $wrapper_classes = [];
    $wrapper_class_value = trim($settings['wrapper_classes']);
    if ($wrapper_class_value) {
      $wrapper_classes = array_filter(array_map('trim', explode(" ", $wrapper_class_value)));
    }
    if ($classes = $this->manager
      ->getMergedClasses(FALSE)) {

      // Saves headaches from problematic options.
      $problems = [
        'hidden',
        'visible',
        'visibility',
        'height',
      ];
      foreach ($classes as $key => $options) {

        // Hiding the entire container is likely out of questions, skip.
        if ($container && in_array($key, $problems)) {
          continue;
        }

        // JS-driven layouts have pre-defined fixed heights, skip.
        if (!$optionset
          ->isFramework() && strpos($key, 'height') !== FALSE) {
          continue;
        }
        $refined_options = $this
          ->getPresetOptions($options);
        $element[$key] = $this
          ->classElement($key, $options, $refined_options, $context, $wrapper_classes);
        $element[$key]['#attributes']['class'][] = $optionset
          ->isFramework() ? 'is-gs-css-driven' : 'is-gs-js-driven';
        if ($framework = $this->manager
          ->engineManager()
          ->framework()) {
          if (in_array($key, $framework
            ->previewOptions())) {
            $element[$key]['#is_preview'] = TRUE;
            $element[$key]['#attributes']['class'][] = 'form-wrapper--preview';
            if (in_array($key, [
              'rounded',
              'text_color',
            ])) {
              $element[$key]['#attributes']['class'][] = 'form-wrapper--bg';
            }
          }
        }
      }
    }
    return $element;
  }

  /**
   * {@inheritdoc}
   */
  protected function rowClassesElement($optionset, FormStateInterface $form_state, array $settings, array $extras = []) {
    $context = $settings['_scope'];
    $container = !empty($settings['_container']);
    $element = [];

    // Only applicable to one dimensional for now.
    if (!$optionset
      ->isFramework() && !$container) {
      return [];
    }
    $wrapper_classes = [];
    $wrapper_class_value = trim($settings['row_classes']);
    if ($wrapper_class_value) {
      $wrapper_classes = array_filter(array_map('trim', explode(" ", $wrapper_class_value)));
    }
    if ($classes = $this->manager
      ->engineManager()
      ->getClassOptions('row')) {
      foreach ($classes as $key => $options) {
        $refined_options = $this
          ->getPresetRowOptions($options);
        $element[$key] = $this
          ->classElement($key, $options, $refined_options, $context, $wrapper_classes);
      }
    }
    return $element;
  }

  /**
   * Returns common class element.
   */
  protected function classElement($key, $options, $refined_options, $context, $wrapper_classes = []) {
    $title = str_replace([
      '_',
      '-',
    ], ' ', $key);
    $value = '';

    // We don't store these, fecthing from wrapper_classes string instead.
    if ($wrapper_classes) {
      $values = array_values($options);
      $values = array_combine($values, $values);
      foreach ($wrapper_classes as $wrapper_class) {
        if (isset($values[$wrapper_class])) {
          $value = $values[$wrapper_class];
          break;
        }
      }
    }
    $css_classes = [
      'form-wrapper--' . str_replace('_', '-', $key),
      'is-collapsible',
      'is-collapsed',
      'is-gs-fieldset',
    ];
    return [
      '#type' => 'radios',
      '#title' => $this
        ->t('@title', [
        '@title' => Unicode::ucfirst($title),
      ]),
      '#options' => [
        '' => $this
          ->t('- None -'),
      ] + $refined_options,
      '#default_value' => $value,
      '#region' => $context,
      '#is_preview' => FALSE,
      '#after_build' => [
        [
          $this,
          'afterBuildPreset',
        ],
      ],
      '#group_name' => $key,
      '#attributes' => [
        'class' => $css_classes,
        'data-gs-preset-region' => $context,
      ],
    ];
  }

  /**
   * Provides preview classes.
   */
  public function afterBuildPreset(array $element) {
    foreach (Element::children($element) as $key) {
      $removed = [
        'form-wrapper--preview',
        'form-wrapper--' . str_replace('_', '-', $key),
        'form-wrapper--' . str_replace('_', '-', $element['#group_name']),
        'is-collapsible',
        'is-collapsed',
        'is-gs-fieldset',
      ];

      // Provides small preview for what the class looks like if so required.
      if (!empty($element['#is_preview'])) {
        $element[$key]['#wrapper_attributes']['class'][] = $key;
      }

      // Unfortunately fieldset classes are also inherited by each item.
      if (isset($element[$key]['#attributes']['class'])) {
        $classes = $element[$key]['#attributes']['class'];
        $classes = array_diff($classes, $removed);
        $element[$key]['#attributes']['class'] = $classes;
      }

      // @todo if (strpos($key, 'bg-white') !== FALSE) {}
      // @todo $element[$key]['#attributes']['data-gs-target-selector'] = '> .box__content';
    }
    return $element;
  }

  /**
   * {@inheritdoc}
   */
  protected function getPresetOptions(array $data) {
    $rm = [
      'bg-',
      'gradient-',
      'padding-',
      'mh-',
      'text-',
      'hidden-',
      'rounded-',
      'visible-',
    ];
    return $this
      ->getBasePresetOptions($data, $rm, 'gridstack_classes_preset_options');
  }

  /**
   * {@inheritdoc}
   */
  protected function getPresetRowOptions(array $data) {
    $rm = [
      'flex-',
      'justify-content-',
      'align-items-',
      'align-content-',
      'align-self-',
    ];
    return $this
      ->getBasePresetOptions($data, $rm, 'gridstack_classes_preset_row_options');
  }

  /**
   * {@inheritdoc}
   */
  protected function getBasePresetOptions(array $data, array $rm, $alter = 'gridstack_classes_preset_options') {
    $options = [];
    foreach ($data as $option) {
      $title = str_replace($rm, '', $option);
      $title = str_replace([
        '_',
        '-',
      ], ' ', $title);
      $options[$option] = $this
        ->t('@title', [
        '@title' => Unicode::ucfirst($title),
      ]);
    }
    $this->manager
      ->getModuleHandler()
      ->alter($alter, $options, $data);
    ksort($options);
    return $options;
  }

}

Members

Namesort descending Modifiers Type Description Overrides
Animation::animationElement protected function Provides animation form elements.
Animation::animations public static function Returns utilities settings.
Background::getBackgroundColor protected function Returns the background colors grouped by the given key, w/o text colors.
Classes::$opacity protected property The black opacity for backgrounds or colors.
Classes::afterBuildPreset public function Provides preview classes.
Classes::classElement protected function Returns common class element.
Classes::classesElement protected function
Classes::getBasePresetOptions protected function
Classes::getInternalClasses public function Returns the module feature CSS classes, not available at CSS frameworks.
Classes::getPresetOptions protected function
Classes::getPresetRowOptions protected function
Classes::rowClassesElement protected function
Color::colorElement protected function Provides extras form elements.
Color::getTextColor protected function Returns the text colors grouped by the given key.
Color::paletteElement protected function Return the color palette element.
DependencySerializationTrait::$_entityStorages protected property An array of entity type IDs keyed by the property name of their storages.
DependencySerializationTrait::$_serviceIds protected property An array of service IDs keyed by property name used for serialization.
DependencySerializationTrait::__sleep public function 1
DependencySerializationTrait::__wakeup public function 2
GridStackPluginBase::$breakpoints protected property The layout breakpoints.
GridStackPluginBase::$cellHeight protected property The optionset cell height.
GridStackPluginBase::$columns protected property The breakpoint columns.
GridStackPluginBase::$currentUser protected property The current user.
GridStackPluginBase::$manager protected property The gridstack manager service.
GridStackPluginBase::$minWidth protected property The optionset min-width.
GridStackPluginBase::$optionset protected property The gridstack optionset.
GridStackPluginBase::$verticalMargin protected property The optionset vertical margin.
GridStackPluginBase::config protected function Returns gridstack config shortcut.
GridStackPluginBase::defaultConfiguration public function Gets default configuration for this plugin. Overrides ConfigurableInterface::defaultConfiguration 1
GridStackPluginBase::get public function
GridStackPluginBase::getConfiguration public function Gets this plugin's configuration. Overrides ConfigurableInterface::getConfiguration
GridStackPluginBase::getOptionset public function
GridStackPluginBase::getSetting public function
GridStackPluginBase::label public function Returns the plugin label. Overrides GridStackPluginInterface::label
GridStackPluginBase::setConfiguration public function Sets the configuration for this plugin instance. Overrides ConfigurableInterface::setConfiguration
GridStackPluginBase::setOptionset public function Sets the optionset.
GridStackPluginBase::setSetting public function
GridStackStylizerPluginBase::$blazyEntity protected property The blazy entity service to support Media Library at Layout Builder pages.
GridStackStylizerPluginBase::attach public function Provides gridstack skins and libraries. 1
GridStackStylizerPluginBase::getVariantUniqueId protected function Returns unique variant ID.
GridStackStylizerPluginBase::validateConfigurationForm public function 1
Media::$fieldName protected property The field name to store media.
Media::buildMedia public function Returns the formatted media as Blazy CSS background.
Media::create public static function Creates an instance of the plugin. Overrides GridStackStylizerPluginBase::create
Media::getFieldName public function Returns the selected field name.
Media::mediaSettings protected function Returns the data understood by Blazy for CSS background.
Media::prepareMedia protected function Returns the formatted media as Blazy output.
Media::prepareOverlay protected function Returns the media overlay.
Media::setFieldName public function Sets the field name.
MessengerTrait::$messenger protected property The messenger. 29
MessengerTrait::messenger public function Gets the messenger. 29
MessengerTrait::setMessenger public function Sets the messenger.
PluginBase::$configuration protected property Configuration information passed into the plugin. 1
PluginBase::$pluginDefinition protected property The plugin implementation definition. 1
PluginBase::$pluginId protected property The plugin_id.
PluginBase::DERIVATIVE_SEPARATOR constant A string which is used to separate base plugin IDs from the derivative ID.
PluginBase::getBaseId public function Gets the base_plugin_id of the plugin instance. Overrides DerivativeInspectionInterface::getBaseId
PluginBase::getDerivativeId public function Gets the derivative_id of the plugin instance. Overrides DerivativeInspectionInterface::getDerivativeId
PluginBase::getPluginDefinition public function Gets the definition of the plugin implementation. Overrides PluginInspectionInterface::getPluginDefinition 3
PluginBase::getPluginId public function Gets the plugin_id of the plugin instance. Overrides PluginInspectionInterface::getPluginId
PluginBase::isConfigurable public function Determines if the plugin is configurable.
PluginBase::__construct public function Constructs a \Drupal\Component\Plugin\PluginBase object. 92
Range::rangeElement protected function Returns the range element.
StringTranslationTrait::$stringTranslation protected property The string translation service. 1
StringTranslationTrait::formatPlural protected function Formats a string containing a count of items.
StringTranslationTrait::getNumberOfPlurals protected function Returns the number of plurals supported by a given language.
StringTranslationTrait::getStringTranslation protected function Gets the string translation service.
StringTranslationTrait::setStringTranslation public function Sets the string translation service to use. 2
StringTranslationTrait::t protected function Translates a string to the current language or to a given language.
StyleBase::attributes public function Provides both CSS grid and js-driven attributes configurable via UI.
StyleBase::cssRule protected function Returns the CSS rule with a selector and sub selector if available.
StyleBase::extraAttributes protected function Modifies any attributes relevant to use backgrounds.
StyleBase::getAnimation public function Returns an animation.
StyleBase::getColor protected function Checks for valid color excluding black (#000000) by design.
StyleBase::getColors protected function Returns available colors.
StyleBase::getSelector public function Returns selectors and sub-selectors with context related to box levels.
StyleBase::getStyle public function Returns a style.
StyleBase::getVariantClass public function Returns the variant class.
StyleBase::hasColors protected function Checks if it has colors.
StyleBase::inlineStyle public function Modifies inline style to not nullify others.
StyleBase::parseAttributes protected function Parses the string attribute: role|navigation,data-something|some value.
StyleBase::parseClasses protected function Parses the given string classes.
StyleBase::parseStyles public function Builds inline styles if so required with multiple instances on a page.
StyleBase::styleElement protected function Return the style element.