You are here

class UIkitVideo in UIkit Components 8.3

Provides a render element for the Video component.

Properties:

  • #embed_iframe: The embed code to display the video. This should be the the full embed code from the video's source and contain the
 <iframe> 

element. The various embed options, such as displaying the video controls, should also be included. If this is set, do not set the #video_sources property.

  • #video_sources: An array of full-qualified URLs to the video sources. Each source should have a different video extension to provide a fallback source for browser compatibility. If only one source is provided and the browser does not support the video's file extension, the video will not display. If this is set, do not set the #embed_iframe property.
  • #display_controls: A boolean indicating whether to display the controls when the #video_sources property is set. This is ignored if the #embed_iframe property is set.
  • #component_options: An array containing the component options to apply to the video. These must be in the form of "option: value" in order to work correctly.

Usage example:

$build['video'] = [
  '#type' => 'uikit_video',
  '#embed_iframe' => $iframe_embed_code,
  '#display_controls' => TRUE,
  '#component_options' => [
    'autoplay: false',
  ],
];

Plugin annotation

@RenderElement("uikit_video");

Hierarchy

Expanded class hierarchy of UIkitVideo

See also

template_preprocess_uikit_video()

https://getuikit.com/docs/utility#video

Related topics

File

src/Element/UIkitVideo.php, line 48

Namespace

Drupal\uikit_components\Element
View source
class UIkitVideo extends RenderElement {

  /**
   * {@inheritdoc}
   */
  public function getInfo() {
    $class = get_class($this);
    return [
      '#embed_iframe' => NULL,
      '#video_sources' => [],
      '#display_controls' => FALSE,
      '#component_options' => [],
      '#attributes' => new Attribute(),
      '#pre_render' => [
        [
          $class,
          'preRenderUIkitVideo',
        ],
      ],
      '#theme_wrappers' => [
        'uikit_video',
      ],
    ];
  }

  /**
   * Pre-render callback: Sets the video attributes.
   *
   * Doing so during pre_render gives modules a chance to alter the video.
   *
   * @param array $element
   *   A renderable array.
   *
   * @return array
   *   A renderable array.
   */
  public static function preRenderUIkitVideo($element) {

    // Prepare the component options for the video.
    $component_options = '';
    if (!empty($element['#component_options'])) {
      $component_options = implode('; ', $element['#component_options']);
    }

    // Set the attributes for the video element.
    if (!empty($element['#video_sources'])) {
      if ($element['#display_controls']) {
        $element['#attributes']
          ->setAttribute('controls', '');
      }
      if ($element['#plays_inline']) {
        $element['#attributes']
          ->setAttribute('playsinline', '');
      }
    }
    $element['#attributes']
      ->setAttribute('data-uk-video', $component_options);
    return $element;
  }

}

Members

Namesort descending Modifiers Type Description Overrides
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
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
RenderElement::preRenderAjaxForm public static function Adds Ajax information about an element to communicate with JavaScript.
RenderElement::preRenderGroup public static function Adds members of this group as actual elements for rendering.
RenderElement::processAjaxForm public static function Form element processing handler for the #ajax form property. 1
RenderElement::processGroup public static function Arranges elements into groups.
RenderElement::setAttributes public static function Sets a form element's class attribute. Overrides ElementInterface::setAttributes
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.
UIkitVideo::getInfo public function Returns the element properties for this element. Overrides ElementInterface::getInfo
UIkitVideo::preRenderUIkitVideo public static function Pre-render callback: Sets the video attributes.