Commit 46a8139d authored by Jacob Rockowitz's avatar Jacob Rockowitz Committed by Jacob Rockowitz
Browse files

Issue #3316667 by jrockowitz: Tippy.js is loaded via CDN even when disabled

parent 6d2eef2f
Loading
Loading
Loading
Loading
+8 −1
Original line number Diff line number Diff line
@@ -848,10 +848,17 @@ function _webform_preprocess_element(array &$variables, $title_parents = ['title
 * Prepares #description and #help properties for form element templates.
 */
function _webform_preprocess_description_help(array &$variables) {
  /** @var \Drupal\webform\WebformRequestInterface $webform_request */
  $webform_request = \Drupal::service('webform.request');
  /** @var \Drupal\webform\WebformLibrariesManagerInterface $libraries_manager */
  $libraries_manager = \Drupal::service('webform.libraries_manager');

  $element = &$variables['element'];

  // Move #description to #help for webform admin routes.
  if (\Drupal::config('webform.settings')->get('ui.description_help')
    && \Drupal::service('webform.request')->isWebformAdminRoute()
    && $webform_request->isWebformAdminRoute()
    && $libraries_manager->isIncluded('tippyjs')
    && \Drupal::routeMatch()->getRouteName() !== 'webform.contribute.settings'
    && !isset($element['#help'])
    && !empty($element['#title']) && (empty($element['#title_display']) || !in_array($element['#title_display'], ['attribute', 'invisible']))
+32 −7
Original line number Diff line number Diff line
@@ -32,6 +32,13 @@ class WebformAdminConfigAdvancedForm extends WebformAdminConfigBaseForm {
   */
  protected $routerBuilder;

  /**
   * The webform libraries manager.
   *
   * @var \Drupal\webform\WebformLibrariesManagerInterface
   */
  protected $librariesManager;

  /**
   * {@inheritdoc}
   */
@@ -47,6 +54,7 @@ class WebformAdminConfigAdvancedForm extends WebformAdminConfigBaseForm {
    $instance->renderCache = $container->get('cache.render');
    $instance->moduleHandler = $container->get('module_handler');
    $instance->routerBuilder = $container->get('router.builder');
    $instance->librariesManager = $container->get('webform.libraries_manager');
    return $instance;
  }

@@ -82,6 +90,22 @@ class WebformAdminConfigAdvancedForm extends WebformAdminConfigBaseForm {
      '#default_value' => $config->get('ui.toolbar_item'),
      '#access' => $this->moduleHandler->moduleExists('toolbar'),
    ];
    if ($this->librariesManager->isExcluded('tippyjs')) {
      $form['ui']['description_help'] = [
        '#type' => 'value',
        '#value' => $config->get('ui.description_help'),
      ];
      $form['ui']['description_help_disabled'] = [
        '#type' => 'checkbox',
        '#title' => $this->t('Display element description as help text (tooltip)'),
        '#description' => $this->t("If checked, all element descriptions will be moved to help text (tooltip).")
          . '<br/><br/><em>'
          . $this->t('This behavior is disabled when the <a href=":href">Tippy.js library is disabled</a.', [':href' => Url::fromRoute('webform.config.libraries')->toString()]) . '</em>',
        '#default_value' => $config->get('ui.description_help'),
        '#disabled' => TRUE,
      ];
    }
    else {
      $form['ui']['description_help'] = [
        '#type' => 'checkbox',
        '#title' => $this->t('Display element description as help text (tooltip)'),
@@ -89,6 +113,7 @@ class WebformAdminConfigAdvancedForm extends WebformAdminConfigBaseForm {
        '#return_value' => TRUE,
        '#default_value' => $config->get('ui.description_help'),
      ];
    }
    $form['ui']['details_save'] = [
      '#type' => 'checkbox',
      '#title' => $this->t('Save details open/close state'),
+2 −2
Original line number Diff line number Diff line
@@ -468,7 +468,7 @@ class WebformLibrariesManager implements WebformLibrariesManagerInterface {
    $libraries['popperjs'] = [
      'title' => $this->t('Popper.js'),
      'description' => $this->t("Tippy.js a tiny, low-level library for creating \"floating\" elements like tooltips, popovers, dropdowns, menus, and more."),
      'notes' => $this->t('Popper.js is used to provide a tooltips.'),
      'notes' => $this->t('Popper.js is used to provide tooltip behavior for elements.'),
      'homepage_url' => Url::fromUri('https://github.com/floating-ui/floating-ui'),
      'download_url' => Url::fromUri('https://unpkg.com/@popperjs/core@2.11.6/dist/umd/popper.min.js'),
      'version' => '2.11.6',
@@ -478,7 +478,7 @@ class WebformLibrariesManager implements WebformLibrariesManagerInterface {
    $libraries['tippyjs'] = [
      'title' => $this->t('Tippy.js'),
      'description' => $this->t("Tippy.js is the complete tooltip, popover, dropdown, and menu solution for the web, powered by Popper."),
      'notes' => $this->t('Tippy.js is used to provide a tooltips.'),
      'notes' => $this->t('Tippy.js is used to provide tooltip behavior for elements.'),
      'homepage_url' => Url::fromUri('https://github.com/atomiks/tippyjs'),
      'download_url' => Url::fromUri('https://unpkg.com/tippy.js@6.3.7/dist/tippy-bundle.umd.min.js'),
      'version' => '6.3.7',