Revert "Issue #3113400 by bnjmnm, catch, ankithashetty, anmolgoyal74, sarvjeetsingh, Suresh Prabhu Parkala, lauriii, zrpnr, alexpott, xjm, nod_, DamienMcKenna: Deprecate more jQuery UI library definitions"

This reverts commit 42da50dccb.
merge-requests/125/head
Alex Pott 2020-12-11 00:46:40 +00:00
parent af36a53c08
commit f75929b582
No known key found for this signature in database
GPG Key ID: 31905460D4A69276
10 changed files with 67 additions and 1164 deletions

View File

@ -88,44 +88,12 @@ drupal.autocomplete:
version: VERSION
js:
misc/autocomplete.js: { weight: -1 }
# The remaining JavaScript assets previously came from core/jquery.ui, a
# deprecated library.
# All weights are based on on the requirements defined within each file.
# @todo replace with solution in https://drupal.org/node/3076171
assets/vendor/jquery.ui/ui/widgets/autocomplete-min.js: { weight: -11.7, minified: true }
assets/vendor/jquery.ui/ui/labels-min.js: { weight: -11.7, minified: true }
assets/vendor/jquery.ui/ui/widgets/menu-min.js: { weight: -11.7, minified: true }
assets/vendor/jquery.ui/ui/tabbable-min.js: { weight: -11.7, minified: true }
assets/vendor/jquery.ui/ui/data-min.js: { weight: -11.8, minified: true }
assets/vendor/jquery.ui/ui/disable-selection-min.js: { weight: -11.8, minified: true }
assets/vendor/jquery.ui/ui/escape-selector-min.js: { weight: -11.8, minified: true }
assets/vendor/jquery.ui/ui/focusable-min.js: { weight: -11.8, minified: true }
assets/vendor/jquery.ui/ui/form-min.js: { weight: -11.8, minified: true }
assets/vendor/jquery.ui/ui/ie-min.js: { weight: -11.8, minified: true }
assets/vendor/jquery.ui/ui/jquery-1-7-min.js: { weight: -11.8, minified: true }
assets/vendor/jquery.ui/ui/keycode-min.js: { weight: -11.8, minified: true }
assets/vendor/jquery.ui/ui/plugin-min.js: { weight: -11.8, minified: true }
assets/vendor/jquery.ui/ui/position-min.js: { weight: -11.8, minified: true }
assets/vendor/jquery.ui/ui/safe-active-element-min.js: { weight: -11.8, minified: true }
assets/vendor/jquery.ui/ui/safe-blur-min.js: { weight: -11.8, minified: true }
assets/vendor/jquery.ui/ui/scroll-parent-min.js: { weight: -11.8, minified: true }
assets/vendor/jquery.ui/ui/unique-id-min.js: { weight: -11.8, minified: true }
assets/vendor/jquery.ui/ui/widget-min.js: { weight: -11.8, minified: true }
assets/vendor/jquery.ui/ui/version-min.js: { weight: -11.9, minified: true }
# All CSS assets previously came from core/jquery.ui, a deprecated library.
# @todo replace with solution found in https://drupal.org/node/3076171
css:
component:
assets/vendor/jquery.ui/themes/base/autocomplete.css: { weight: -11.7 }
assets/vendor/jquery.ui/themes/base/menu.css: { weight: -11.7 }
assets/vendor/jquery.ui/themes/base/core.css: { weight: -11.8 }
theme:
assets/vendor/jquery.ui/themes/base/theme.css: { weight: -11.8 }
dependencies:
- core/jquery
- core/drupal
- core/drupalSettings
- core/drupal.ajax
- core/jquery.ui.autocomplete
drupal.array.find:
version: VERSION
@ -187,54 +155,13 @@ drupal.dialog:
misc/dialog/dialog.js: {}
misc/dialog/dialog.position.js: {}
misc/dialog/dialog.jquery-ui.js: {}
# The remaining JavaScript assets previously came from core/jquery.ui, a
# deprecated library.
# All weights are based on on the requirements defined within each file.
# @todo replace with solution in https://drupal.org/node/2158943
assets/vendor/jquery.ui/ui/widgets/dialog-min.js: { weight: -11.4, minified: true }
assets/vendor/jquery.ui/ui/widgets/button-min.js: { weight: -11.5, minified: true }
assets/vendor/jquery.ui/ui/widgets/checkboxradio-min.js: { weight: -11.6, minified: true }
assets/vendor/jquery.ui/ui/widgets/draggable-min.js: { weight: -11.6, minified: true }
assets/vendor/jquery.ui/ui/widgets/resizable-min.js: { weight: -11.6, minified: true }
assets/vendor/jquery.ui/ui/widgets/controlgroup-min.js: { weight: -11.7, minified: true }
assets/vendor/jquery.ui/ui/form-reset-mixin-min.js: { weight: -11.7, minified: true }
assets/vendor/jquery.ui/ui/labels-min.js: { weight: -11.7, minified: true }
assets/vendor/jquery.ui/ui/widgets/mouse-min.js: { weight: -11.7, minified: true }
assets/vendor/jquery.ui/ui/tabbable-min.js: { weight: -11.7, minified: true }
assets/vendor/jquery.ui/ui/data-min.js: { weight: -11.8, minified: true }
assets/vendor/jquery.ui/ui/disable-selection-min.js: { weight: -11.8, minified: true }
assets/vendor/jquery.ui/ui/form-min.js: { weight: -11.8, minified: true }
assets/vendor/jquery.ui/ui/jquery-1-7-min.js: { weight: -11.8, minified: true }
assets/vendor/jquery.ui/ui/scroll-parent-min.js: { weight: -11.8, minified: true }
assets/vendor/jquery.ui/ui/unique-id-min.js: { weight: -11.8, minified: true }
assets/vendor/jquery.ui/ui/escape-selector-min.js: { weight: -11.8, minified: true }
assets/vendor/jquery.ui/ui/focusable-min.js: { weight: -11.8, minified: true }
assets/vendor/jquery.ui/ui/ie-min.js: { weight: -11.8, minified: true }
assets/vendor/jquery.ui/ui/keycode-min.js: { weight: -11.8, minified: true }
assets/vendor/jquery.ui/ui/plugin-min.js: { weight: -11.8, minified: true }
assets/vendor/jquery.ui/ui/position-min.js: { weight: -11.8, minified: true }
assets/vendor/jquery.ui/ui/safe-active-element-min.js: { weight: -11.8, minified: true }
assets/vendor/jquery.ui/ui/safe-blur-min.js: { weight: -11.8, minified: true }
assets/vendor/jquery.ui/ui/widget-min.js: { weight: -11.8, minified: true }
assets/vendor/jquery.ui/ui/version-min.js: { weight: -11.9, minified: true }
# All CSS assets previously came from core/jquery.ui, a deprecated library.
# @todo replace with solution found in https://drupal.org/node/2158943
css:
component:
assets/vendor/jquery.ui/themes/base/dialog.css: { weight: -11.4 }
assets/vendor/jquery.ui/themes/base/button.css: { weight: -11.5 }
assets/vendor/jquery.ui/themes/base/checkboxradio.css: { weight: -11.6 }
assets/vendor/jquery.ui/themes/base/resizable.css: { weight: -11.6 }
assets/vendor/jquery.ui/themes/base/controlgroup.css: { weight: -11.7 }
assets/vendor/jquery.ui/themes/base/core.css: { weight: -11.8 }
theme:
assets/vendor/jquery.ui/themes/base/theme.css: { weight: -11.8 }
dependencies:
- core/jquery
- core/drupal
- core/drupalSettings
- core/drupal.debounce
- core/drupal.displace
- core/jquery.ui.dialog
drupal.dialog.ajax:
version: VERSION
@ -338,36 +265,10 @@ drupal.tabbingmanager:
version: VERSION
js:
misc/tabbingmanager.js: {}
# The remaining JavaScript assets previously came from core/jquery.ui, a
# deprecated library. These assets are used to provide the :tabbable pseudo
# selector to core's JavaScript. It should be possible to remove them once
# :tabbable is provided via a non-jQuery UI based library.
# All weights are based on on the requirements defined within each file.
# @todo replace with solution found in https://drupal.org/node/3113649
assets/vendor/jquery.ui/ui/labels-min.js: { weight: -11.7, minified: true }
assets/vendor/jquery.ui/ui/tabbable-min.js: { weight: -11.7, minified: true }
assets/vendor/jquery.ui/ui/disable-selection-min.js: { weight: -11.8, minified: true }
assets/vendor/jquery.ui/ui/form-min.js: { weight: -11.8, minified: true }
assets/vendor/jquery.ui/ui/escape-selector-min.js: { weight: -11.8, minified: true }
assets/vendor/jquery.ui/ui/focusable-min.js: { weight: -11.8, minified: true }
assets/vendor/jquery.ui/ui/ie-min.js: { weight: -11.8, minified: true }
assets/vendor/jquery.ui/ui/jquery-1-7-min.js: { weight: -11.8, minified: true }
assets/vendor/jquery.ui/ui/keycode-min.js: { weight: -11.8, minified: true }
assets/vendor/jquery.ui/ui/plugin-min.js: { weight: -11.8, minified: true }
assets/vendor/jquery.ui/ui/safe-active-element-min.js: { weight: -11.8, minified: true }
assets/vendor/jquery.ui/ui/safe-blur-min.js: { weight: -11.8, minified: true }
assets/vendor/jquery.ui/ui/scroll-parent-min.js: { weight: -11.8, minified: true }
assets/vendor/jquery.ui/ui/unique-id-min.js: { weight: -11.8, minified: true }
assets/vendor/jquery.ui/ui/version-min.js: { weight: -11.9, minified: true }
# All CSS assets previously came from core/jquery.ui, a deprecated library.
# @todo replace with solution found in https://drupal.org/node/3113649
css:
component:
assets/vendor/jquery.ui/themes/base/core.css: { weight: -11.8 }
theme:
assets/vendor/jquery.ui/themes/base/theme.css: { weight: -11.8 }
dependencies:
- core/jquery
# Supplies the ':tabbable' pseudo selector.
- core/jquery.ui
- core/drupal
drupal.tabledrag:
@ -527,105 +428,82 @@ jquery.ui:
url: https://raw.githubusercontent.com/jquery/jquery-ui/1.12.1/LICENSE.txt
gpl-compatible: true
js:
assets/vendor/jquery.ui/ui/labels-min.js: { weight: -11.7, minified: true }
assets/vendor/jquery.ui/ui/tabbable-min.js: { weight: -11.7, minified: true }
assets/vendor/jquery.ui/ui/data-min.js: { weight: -11.8, minified: true }
assets/vendor/jquery.ui/ui/disable-selection-min.js: { weight: -11.8, minified: true }
assets/vendor/jquery.ui/ui/escape-selector-min.js: { weight: -11.8, minified: true }
assets/vendor/jquery.ui/ui/focusable-min.js: { weight: -11.8, minified: true }
assets/vendor/jquery.ui/ui/form-min.js: { weight: -11.8, minified: true }
assets/vendor/jquery.ui/ui/ie-min.js: { weight: -11.8, minified: true }
assets/vendor/jquery.ui/ui/jquery-1-7-min.js: { weight: -11.8, minified: true }
assets/vendor/jquery.ui/ui/keycode-min.js: { weight: -11.8, minified: true }
assets/vendor/jquery.ui/ui/plugin-min.js: { weight: -11.8, minified: true }
assets/vendor/jquery.ui/ui/safe-active-element-min.js: { weight: -11.8, minified: true }
assets/vendor/jquery.ui/ui/safe-blur-min.js: { weight: -11.8, minified: true }
assets/vendor/jquery.ui/ui/scroll-parent-min.js: { weight: -11.8, minified: true }
assets/vendor/jquery.ui/ui/unique-id-min.js: { weight: -11.8, minified: true }
assets/vendor/jquery.ui/ui/version-min.js: { weight: -11.9, minified: true }
assets/vendor/jquery.ui/ui/data-min.js: { weight: -11, minified: true }
assets/vendor/jquery.ui/ui/disable-selection-min.js: { weight: -11, minified: true }
assets/vendor/jquery.ui/ui/form-min.js: { weight: -11, minified: true }
assets/vendor/jquery.ui/ui/labels-min.js: { weight: -11, minified: true }
assets/vendor/jquery.ui/ui/jquery-1-7-min.js: { weight: -11, minified: true }
assets/vendor/jquery.ui/ui/scroll-parent-min.js: { weight: -11, minified: true }
assets/vendor/jquery.ui/ui/tabbable-min.js: { weight: -11, minified: true }
assets/vendor/jquery.ui/ui/unique-id-min.js: { weight: -11, minified: true }
assets/vendor/jquery.ui/ui/version-min.js: { weight: -11, minified: true }
assets/vendor/jquery.ui/ui/escape-selector-min.js: { weight: -11, minified: true }
assets/vendor/jquery.ui/ui/focusable-min.js: { weight: -11, minified: true }
assets/vendor/jquery.ui/ui/ie-min.js: { weight: -11, minified: true }
assets/vendor/jquery.ui/ui/keycode-min.js: { weight: -11, minified: true }
assets/vendor/jquery.ui/ui/plugin-min.js: { weight: -11, minified: true }
assets/vendor/jquery.ui/ui/safe-active-element-min.js: { weight: -11, minified: true }
assets/vendor/jquery.ui/ui/safe-blur-min.js: { weight: -11, minified: true }
css:
component:
assets/vendor/jquery.ui/themes/base/core.css: { weight: -11.8 }
assets/vendor/jquery.ui/themes/base/core.css: {}
theme:
assets/vendor/jquery.ui/themes/base/theme.css: { weight: -11.8 }
assets/vendor/jquery.ui/themes/base/theme.css: {}
dependencies:
- core/jquery
deprecated: &jquery_ui_unused_deprecated The "%library_id%" asset library is deprecated in drupal:9.2.0 and is removed from drupal:10.0.0. See https://www.drupal.org/node/3067969
jquery.ui.autocomplete:
version: *jquery_ui_version
license: *jquery_ui_license
js:
assets/vendor/jquery.ui/ui/widgets/autocomplete-min.js: { weight: -11.7, minified: true }
assets/vendor/jquery.ui/ui/widgets/autocomplete-min.js: { minified: true }
css:
component:
assets/vendor/jquery.ui/themes/base/autocomplete.css: { weight: -11.7 }
assets/vendor/jquery.ui/themes/base/autocomplete.css: {}
dependencies:
- core/jquery.ui
- core/jquery.ui.widget
- core/jquery.ui.position
- core/jquery.ui.menu
deprecated: *jquery_ui_unused_deprecated
jquery.ui.button:
version: *jquery_ui_version
license: *jquery_ui_license
js:
assets/vendor/jquery.ui/ui/widgets/button-min.js: { weight: -11.5, minified: true }
assets/vendor/jquery.ui/ui/widgets/checkboxradio-min.js: { weight: -11.6, minified: true }
assets/vendor/jquery.ui/ui/widgets/controlgroup-min.js: { weight: -11.7, minified: true }
assets/vendor/jquery.ui/ui/widgets/checkboxradio-min.js: { minified: true }
assets/vendor/jquery.ui/ui/widgets/controlgroup-min.js: { minified: true }
assets/vendor/jquery.ui/ui/widgets/button-min.js: { minified: true }
css:
component:
assets/vendor/jquery.ui/themes/base/button.css: { weight: -11.5 }
assets/vendor/jquery.ui/themes/base/checkboxradio.css: { weight: -11.6 }
assets/vendor/jquery.ui/themes/base/controlgroup.css: { weight: -11.7 }
assets/vendor/jquery.ui/themes/base/checkboxradio.css: {}
assets/vendor/jquery.ui/themes/base/controlgroup.css: {}
assets/vendor/jquery.ui/themes/base/button.css: {}
dependencies:
- core/jquery.ui
- core/jquery.ui.widget
deprecated: *jquery_ui_unused_deprecated
jquery.ui.dialog:
version: *jquery_ui_version
license: *jquery_ui_license
js:
# All weights are based on on the requirements defined within each file.
assets/vendor/jquery.ui/ui/widgets/dialog-min.js: { weight: -11.4, minified: true }
assets/vendor/jquery.ui/ui/widgets/button-min.js: { weight: -11.5, minified: true }
assets/vendor/jquery.ui/ui/widgets/checkboxradio-min.js: { weight: -11.6, minified: true }
assets/vendor/jquery.ui/ui/widgets/draggable-min.js: { weight: -11.6, minified: true }
assets/vendor/jquery.ui/ui/widgets/resizable-min.js: { weight: -11.6, minified: true }
assets/vendor/jquery.ui/ui/widgets/controlgroup-min.js: { weight: -11.7, minified: true }
assets/vendor/jquery.ui/ui/form-reset-mixin-min.js: { weight: -11.7, minified: true }
assets/vendor/jquery.ui/ui/labels-min.js: { weight: -11.7, minified: true }
assets/vendor/jquery.ui/ui/widgets/mouse-min.js: { weight: -11.7, minified: true }
assets/vendor/jquery.ui/ui/tabbable-min.js: { weight: -11.7, minified: true }
assets/vendor/jquery.ui/ui/data-min.js: { weight: -11.8, minified: true }
assets/vendor/jquery.ui/ui/disable-selection-min.js: { weight: -11.8, minified: true }
assets/vendor/jquery.ui/ui/escape-selector-min.js: { weight: -11.8, minified: true }
assets/vendor/jquery.ui/ui/focusable-min.js: { weight: -11.8, minified: true }
assets/vendor/jquery.ui/ui/form-min.js: { weight: -11.8, minified: true }
assets/vendor/jquery.ui/ui/ie-min.js: { weight: -11.8, minified: true }
assets/vendor/jquery.ui/ui/jquery-1-7-min.js: { weight: -11.8, minified: true }
assets/vendor/jquery.ui/ui/keycode-min.js: { weight: -11.8, minified: true }
assets/vendor/jquery.ui/ui/plugin-min.js: { weight: -11.8, minified: true }
assets/vendor/jquery.ui/ui/position-min.js: { weight: -11.8, minified: true }
assets/vendor/jquery.ui/ui/safe-active-element-min.js: { weight: -11.8, minified: true }
assets/vendor/jquery.ui/ui/safe-blur-min.js: { weight: -11.8, minified: true }
assets/vendor/jquery.ui/ui/scroll-parent-min.js: { weight: -11.8, minified: true }
assets/vendor/jquery.ui/ui/unique-id-min.js: { weight: -11.8, minified: true }
assets/vendor/jquery.ui/ui/widget-min.js: { weight: -11.8, minified: true }
assets/vendor/jquery.ui/ui/version-min.js: { weight: -11.9, minified: true }
assets/vendor/jquery.ui/ui/form-reset-mixin-min.js: { minified: true }
assets/vendor/jquery.ui/ui/widgets/checkboxradio-min.js: { minified: true }
assets/vendor/jquery.ui/ui/widgets/controlgroup-min.js: { minified: true }
assets/vendor/jquery.ui/ui/widgets/button-min.js: { minified: true }
assets/vendor/jquery.ui/ui/widgets/dialog-min.js: { minified: true }
css:
component:
assets/vendor/jquery.ui/themes/base/dialog.css: { weight: -11.4 }
assets/vendor/jquery.ui/themes/base/button.css: { weight: -11.5 }
assets/vendor/jquery.ui/themes/base/checkboxradio.css: { weight: -11.6 }
assets/vendor/jquery.ui/themes/base/resizable.css: { weight: -11.6 }
assets/vendor/jquery.ui/themes/base/controlgroup.css: { weight: -11.7 }
assets/vendor/jquery.ui/themes/base/core.css: { weight: -11.8 }
theme:
assets/vendor/jquery.ui/themes/base/theme.css: { weight: -11.8 }
deprecated: *jquery_ui_unused_deprecated
assets/vendor/jquery.ui/themes/base/checkboxradio.css: {}
assets/vendor/jquery.ui/themes/base/controlgroup.css: {}
assets/vendor/jquery.ui/themes/base/button.css: {}
assets/vendor/jquery.ui/themes/base/dialog.css: {}
dependencies:
- core/jquery.ui
- core/jquery.ui.widget
- core/jquery.ui.draggable
- core/jquery.ui.mouse
- core/jquery.ui.position
- core/jquery.ui.resizable
jquery.ui.draggable:
version: *jquery_ui_version
@ -636,63 +514,57 @@ jquery.ui.draggable:
- core/jquery.ui
- core/jquery.ui.mouse
- core/jquery.ui.widget
deprecated: *jquery_ui_unused_deprecated
jquery.ui.menu:
version: *jquery_ui_version
license: *jquery_ui_license
js:
assets/vendor/jquery.ui/ui/widgets/menu-min.js: { weight: -11.7, minified: true }
assets/vendor/jquery.ui/ui/widgets/menu-min.js: { minified: true }
css:
component:
assets/vendor/jquery.ui/themes/base/menu.css: { weight: -11.7 }
assets/vendor/jquery.ui/themes/base/menu.css: {}
dependencies:
- core/jquery.ui
- core/jquery.ui.position
- core/jquery.ui.widget
deprecated: *jquery_ui_unused_deprecated
jquery.ui.mouse:
version: *jquery_ui_version
license: *jquery_ui_license
js:
assets/vendor/jquery.ui/ui/widgets/mouse-min.js: { weight: -11.7, minified: true }
assets/vendor/jquery.ui/ui/ie-min.js: { weight: -11.8, minified: true }
assets/vendor/jquery.ui/ui/ie-min.js: { minified: true }
assets/vendor/jquery.ui/ui/widgets/mouse-min.js: { minified: true }
dependencies:
- core/jquery.ui.widget
deprecated: *jquery_ui_unused_deprecated
jquery.ui.position:
version: *jquery_ui_version
license: *jquery_ui_license
js:
assets/vendor/jquery.ui/ui/position-min.js: { weight: -11.8, minified: true }
assets/vendor/jquery.ui/ui/position-min.js: { minified: true }
dependencies:
- core/jquery.ui
deprecated: *jquery_ui_unused_deprecated
jquery.ui.resizable:
version: *jquery_ui_version
license: *jquery_ui_license
js:
assets/vendor/jquery.ui/ui/widgets/resizable-min.js: { weight: -11.6, minified: true }
assets/vendor/jquery.ui/ui/widgets/resizable-min.js: { minified: true }
css:
component:
assets/vendor/jquery.ui/themes/base/resizable.css: { weight: -11.6 }
assets/vendor/jquery.ui/themes/base/resizable.css: {}
dependencies:
- core/jquery.ui
- core/jquery.ui.widget
- core/jquery.ui.mouse
deprecated: *jquery_ui_unused_deprecated
jquery.ui.widget:
version: *jquery_ui_version
license: *jquery_ui_license
js:
assets/vendor/jquery.ui/ui/widget-min.js: { weight: -11.8, minified: true }
assets/vendor/jquery.ui/ui/widget-min.js: { weight: -10, minified: true }
dependencies:
- core/jquery.ui
deprecated: *jquery_ui_unused_deprecated
modernizr:
# Block the page from being loaded until Modernizr is initialized.

View File

@ -1,5 +0,0 @@
name: 'jQuery UI library assets test'
type: module
description: 'Tests jQuery UI library asset loading'
package: Testing
version: VERSION

View File

@ -1,7 +0,0 @@
jqueryui_library_asset_test_page:
path: '/jqueryui_library_assets_test/{library}'
defaults:
_controller: '\Drupal\jqueryui_library_assets_test\Controller\JqueryUiTestAssetsController::build'
_title: 'Test jQuery UI asset loading order'
requirements:
_access: 'TRUE'

View File

@ -1,42 +0,0 @@
<?php
namespace Drupal\jqueryui_library_assets_test\Controller;
use Drupal\Core\Controller\ControllerBase;
/**
* Controller for testing jQuery UI asset loading order.
*/
class JqueryUiTestAssetsController extends ControllerBase {
/**
* Provides a page that loads a library.
*
* @param string $library
* A pipe delimited list of library names.
*
* @return array
* The render array.
*/
public function build($library) {
// If there are pipes in $library, they are separating multiple library
// names.
if (strpos($library, '|') !== FALSE) {
$library = explode('|', $library);
$library = array_map(function ($item) {
return "core/$item";
}, $library);
}
else {
$library = "core/$library";
}
return [
'#markup' => 'I am a page for testing jQuery UI asset loading order.',
'#attached' => [
'library' => $library,
],
];
}
}

View File

@ -53,9 +53,10 @@ libraries-override:
component:
/core/themes/stable/css/core/vertical-tabs.css: public://my_css/vertical-tabs.css
# Use a protocol-relative URI.
core/drupal.displace:
js:
misc/displace.js: //my-server/my_theme/js/overridden.js
core/jquery.ui:
css:
component:
assets/vendor/jquery.ui/themes/base/core.css: //my-server/my_theme/css/jquery_ui.css
# Use an absolute URI.
core/jquery.farbtastic:
css:

View File

@ -1,843 +0,0 @@
<?php
namespace Drupal\FunctionalTests\Libraries;
use Drupal\Tests\BrowserTestBase;
/**
* Tests the loading of jQuery UI CSS and JS assets.
*
* @group libraries
* @group legacy
*/
class JqueryUiLibraryAssetsTest extends BrowserTestBase {
/**
* {@inheritdoc}
*/
protected $defaultTheme = 'stark';
/**
* {@inheritdoc}
*/
protected static $modules = ['jqueryui_library_assets_test'];
/**
* The library discovery service.
*
* @var \Drupal\Core\Asset\LibraryDiscoveryInterface
*/
protected $libraryDiscovery;
/**
* jQuery UI CSS and JS assets keyed by their weight.
*
* For example, the value of $weightGroupedAssets[-11] would be an array
* of every jQuery UI CSS and JS file asset configured with a weight of -11.
*
* @var array
*/
protected $weightGroupedAssets = [];
/**
* The core libraries that load assets from jQuery UI.
*
* @var array
*/
protected $coreLibrariesWithJqueryUiAssets = [];
/**
* {@inheritdoc}
*/
protected function setUp(): void {
parent::setUp();
$this->libraryDiscovery = $this->container->get('library.discovery');
$core_libraries = $this->libraryDiscovery->getLibrariesByExtension('core');
// All the core libraries that use jQuery UI assets.
$libraries_to_check = [
'drupal.autocomplete',
'drupal.dialog',
'drupal.tabbingmanager',
'jquery.ui',
'jquery.ui.autocomplete',
'jquery.ui.button',
'jquery.ui.dialog',
'jquery.ui.menu',
'jquery.ui.mouse',
'jquery.ui.position',
'jquery.ui.resizable',
'jquery.ui.widget',
];
$this->coreLibrariesWithJqueryUiAssets = array_filter($core_libraries, function ($key) use ($libraries_to_check) {
return in_array($key, $libraries_to_check);
}, ARRAY_FILTER_USE_KEY);
// Loop through the core libraries with jQuery assets to build an array that
// groups assets by their weight value.
foreach ($this->coreLibrariesWithJqueryUiAssets as $library) {
foreach (['js', 'css'] as $type) {
foreach ($library[$type] as $asset) {
$file = $asset['data'];
if (strpos($file, 'jquery.ui') === FALSE) {
continue;
}
$weight = $asset['weight'];
$this->weightGroupedAssets["$weight"][] = $file;
}
}
}
$this->weightGroupedAssets = array_map(function ($item) {
return array_unique($item);
}, $this->weightGroupedAssets);
ksort($this->weightGroupedAssets);
}
/**
* Confirm assets are weighted so they load in the correct order.
*
* The configured loading order is compared against the necessary loading
* order. The necessary loading order was determined by the requirements
* specified in each jQuery UI JavaScript file.
*/
public function testProperlySetWeights() {
$assets = [];
// Confirm that no asset is assigned multiple weights.
foreach ($this->weightGroupedAssets as $asset_array) {
foreach ($asset_array as $asset) {
$this->assertNotContains($asset, $assets);
$assets[] = $asset;
}
}
// The loading order that assets groups must be in, based on the
// dependencies specified in every jQuery UI JavaScript file.
$necessary_loading_order = [
['core/assets/vendor/jquery.ui/ui/version-min.js'],
[
'core/assets/vendor/jquery.ui/ui/data-min.js',
'core/assets/vendor/jquery.ui/ui/disable-selection-min.js',
'core/assets/vendor/jquery.ui/ui/escape-selector-min.js',
'core/assets/vendor/jquery.ui/ui/focusable-min.js',
'core/assets/vendor/jquery.ui/ui/form-min.js',
'core/assets/vendor/jquery.ui/ui/ie-min.js',
'core/assets/vendor/jquery.ui/ui/jquery-1-7-min.js',
'core/assets/vendor/jquery.ui/ui/keycode-min.js',
'core/assets/vendor/jquery.ui/ui/plugin-min.js',
'core/assets/vendor/jquery.ui/ui/position-min.js',
'core/assets/vendor/jquery.ui/ui/safe-active-element-min.js',
'core/assets/vendor/jquery.ui/ui/safe-blur-min.js',
'core/assets/vendor/jquery.ui/ui/scroll-parent-min.js',
'core/assets/vendor/jquery.ui/ui/unique-id-min.js',
'core/assets/vendor/jquery.ui/ui/widget-min.js',
'core/assets/vendor/jquery.ui/themes/base/core.css',
],
[
'core/assets/vendor/jquery.ui/ui/widgets/autocomplete-min.js',
'core/assets/vendor/jquery.ui/ui/labels-min.js',
'core/assets/vendor/jquery.ui/ui/widgets/menu-min.js',
'core/assets/vendor/jquery.ui/ui/tabbable-min.js',
'core/assets/vendor/jquery.ui/themes/base/autocomplete.css',
'core/assets/vendor/jquery.ui/themes/base/menu.css',
'core/assets/vendor/jquery.ui/ui/widgets/controlgroup-min.js',
'core/assets/vendor/jquery.ui/ui/form-reset-mixin-min.js',
'core/assets/vendor/jquery.ui/ui/widgets/mouse-min.js',
'core/assets/vendor/jquery.ui/themes/base/controlgroup.css',
],
[
'core/assets/vendor/jquery.ui/ui/widgets/checkboxradio-min.js',
'core/assets/vendor/jquery.ui/ui/widgets/draggable-min.js',
'core/assets/vendor/jquery.ui/ui/widgets/resizable-min.js',
'core/assets/vendor/jquery.ui/themes/base/checkboxradio.css',
'core/assets/vendor/jquery.ui/themes/base/resizable.css',
],
[
'core/assets/vendor/jquery.ui/ui/widgets/button-min.js',
'core/assets/vendor/jquery.ui/themes/base/button.css',
],
[
'core/assets/vendor/jquery.ui/ui/widgets/dialog-min.js',
'core/assets/vendor/jquery.ui/themes/base/dialog.css',
],
['core/assets/vendor/jquery.ui/themes/base/theme.css'],
];
$configured_weights = array_keys($this->weightGroupedAssets);
// Loop through the necessary loading order and compare to the configured
// loading order.
foreach ($necessary_loading_order as $stage => $assets) {
$assets_loaded_in_stage = $this->weightGroupedAssets[$configured_weights[$stage]];
foreach ($assets as $asset) {
$this->assertContains($asset, $assets_loaded_in_stage);
}
}
}
/**
* Confirm that uses of a jQuery UI asset are configured with the same weight.
*/
public function testSameAssetSameWeight() {
$asset_weights = [];
$libraries_to_check = $this->coreLibrariesWithJqueryUiAssets;
foreach ($libraries_to_check as $library) {
foreach (['js', 'css'] as $type) {
foreach ($library[$type] as $asset) {
$file = $asset['data'];
if (strpos($file, 'jquery.ui') !== FALSE) {
// If this is the first time a given file is checked, add the weight
// value to an array.
if (!isset($asset_weights[$file])) {
$asset_weights[$file] = $asset['weight'];
}
else {
// Confirm the weight of the file being loaded matches the weight
// of when it was loaded by a library that was checked earlier.
$this->assertEquals($asset_weights[$file], $asset['weight']);
}
}
}
}
}
}
/**
* Removes base_url() and query args from file paths.
*
* @param string $path
* The path being trimmed.
*
* @return string
* The trimmed path.
*/
protected function trimFilePath($path) {
$base_path_position = strpos($path, base_path());
if ($base_path_position !== FALSE) {
$path = substr_replace($path, '', $base_path_position, strlen(base_path()));
}
$query_pos = strpos($path, '?');
return $query_pos !== FALSE ? substr($path, 0, $query_pos) : $path;
}
/**
* Confirms that jQuery UI assets load on the page in the configured order.
*
* @dataProvider providerTestAssetLoading
*/
public function testLibraryAssetLoadingOrder($library) {
$this->drupalGet("jqueryui_library_assets_test/$library");
$this->assertSession()->statusCodeEquals(200);
// A pipe character in $libraries is delimiting multiple library names.
$libraries = strpos($library, '|') !== FALSE ? explode('|', $library) : [$library];
$files_to_check = [];
// Populate an array with the filenames of every jQuery UI asset in the
// libraries being tested. This will be used to confirm the configured
// assets actually load on the test page.
foreach ($libraries as $library_name) {
foreach (['css', 'js'] as $type) {
$assets = $this->coreLibrariesWithJqueryUiAssets[$library_name][$type];
foreach ($assets as $asset) {
if (strpos($asset['data'], 'jquery.ui') !== FALSE) {
$files_to_check[$asset['data']] = TRUE;
}
}
}
}
$this->assertNotEmpty($files_to_check);
// Find all jQuery UI CSS files loaded to the page, and compare their
// loading order to the weights configured in core.libraries.yml.
$css = $this->getSession()->getPage()->findAll('css', 'link[href*="jquery.ui"]');
$css_weight = -100;
foreach ($css as $item) {
$file = $this->trimFilePath($item->getAttribute('href'));
$found = FALSE;
foreach ($this->weightGroupedAssets as $key => $array) {
if (in_array($file, $array)) {
$found = TRUE;
$this->assertGreaterThanOrEqual($css_weight, $key, "The file $file not loading in the expected order based on its weight value.");
$css_weight = $key;
unset($files_to_check[$file]);
}
}
$this->assertTrue($found, "A jQuery UI file: $file was loaded by the page, but is not taken into account by the test.");
}
$this->assertGreaterThan(-100, $css_weight);
$js_weight = -100;
$js = $this->getSession()->getPage()->findAll('css', 'script[src*="jquery.ui"]');
foreach ($js as $item) {
$file = $this->trimFilePath($item->getAttribute('src'));
$found = FALSE;
foreach ($this->weightGroupedAssets as $key => $array) {
if (in_array($file, $array)) {
$found = TRUE;
$this->assertGreaterThanOrEqual($js_weight, $key, "The file $file not loading in the expected order based on its weight value.");
$js_weight = $key;
unset($files_to_check[$file]);
}
}
$this->assertTrue($found, "A jQuery UI file: $file was loaded by the page, but is not taken into account by the test.");
}
$this->assertGreaterThan(-100, $js_weight);
$this->assertEmpty($files_to_check);
}
/**
* Confirms jQuery UI assets load as expected.
*
* Compares the jQuery assets that currently load against a list of the assets
* that loaded prior to the the deprecation of all remaining core jQuery UI
* libraries.
*
* While this is similar to testLibraryAssetLoadingOrder(), it is a separate
* test so it can be run in a test-only context, thus confirming that asset
* loading is truly unchanged before and after the deprecations.
*
* @param string $library
* A pipe delimited list of libraries to check.
* @param string[] $expected_css
* The jQuery UI CSS files expected to load.
* @param string[] $expected_js
* The jQuery UI JavaScript files expected to load.
*
* @dataProvider providerTestAssetLoading
*/
public function testAssetLoadingUnchanged($library, array $expected_css, array $expected_js) {
$this->drupalGet("jqueryui_library_assets_test/$library");
$this->assertSession()->statusCodeEquals(200);
// Find all jQuery UI CSS files loaded to the page.
$css = $this->getSession()->getPage()->findAll('css', 'link[href*="jquery.ui"]');
$css_loaded_by_page = [];
foreach ($css as $item) {
$file = $this->trimFilePath($item->getAttribute('href'));
$css_loaded_by_page[] = $file;
}
$this->assertEmpty(array_diff($css_loaded_by_page, $expected_css));
// Find all jQuery UI JavaScript files loaded to the page.
$js = $this->getSession()->getPage()->findAll('css', 'script[src*="jquery.ui"]');
$js_loaded_by_page = [];
foreach ($js as $item) {
$file = $this->trimFilePath($item->getAttribute('src'));
$js_loaded_by_page[] = $file;
}
// assertEmpty() is used instead of assertSame() because we can only test
// for the presence of assets, not their loading order. The test is designed
// to pass before and after the jQuery UI asset changes in
// http://drupal.org/node/3113400, which, by necessity, results in loading
// order changes.
$this->assertEmpty(array_diff($js_loaded_by_page, $expected_js));
}
/**
* Data provider for confirming jQuery UI assets load as expected.
*
* Provides arrays that list how jQuery UI CSS and JavaScript dependencies
* loaded prior to the change from dependencies to direct asset loading.
*
* @return array
* An array of test cases, where each test case is an array with the
* following values:
* - A pipe delimited string of the library/libraries to test.
* - An array of the jQuery UI CSS files that loaded for a given library
* prior to the change from jQuery UI library dependencies to direct file
* inclusion.
* - An array of the jQuery UI JavaScript files that loaded for a given
* library prior to the change from jQuery UI library dependencies to
* direct file inclusion.
*/
public function providerTestAssetLoading() {
return [
'drupal.autocomplete' => [
'library' => 'drupal.autocomplete',
'expected_css' => [
'core/assets/vendor/jquery.ui/themes/base/core.css',
'core/assets/vendor/jquery.ui/themes/base/menu.css',
'core/assets/vendor/jquery.ui/themes/base/autocomplete.css',
'core/assets/vendor/jquery.ui/themes/base/theme.css',
],
'expected_js' => [
'core/assets/vendor/jquery.ui/ui/data-min.js',
'core/assets/vendor/jquery.ui/ui/disable-selection-min.js',
'core/assets/vendor/jquery.ui/ui/form-min.js',
'core/assets/vendor/jquery.ui/ui/labels-min.js',
'core/assets/vendor/jquery.ui/ui/jquery-1-7-min.js',
'core/assets/vendor/jquery.ui/ui/scroll-parent-min.js',
'core/assets/vendor/jquery.ui/ui/tabbable-min.js',
'core/assets/vendor/jquery.ui/ui/unique-id-min.js',
'core/assets/vendor/jquery.ui/ui/version-min.js',
'core/assets/vendor/jquery.ui/ui/escape-selector-min.js',
'core/assets/vendor/jquery.ui/ui/focusable-min.js',
'core/assets/vendor/jquery.ui/ui/ie-min.js',
'core/assets/vendor/jquery.ui/ui/keycode-min.js',
'core/assets/vendor/jquery.ui/ui/plugin-min.js',
'core/assets/vendor/jquery.ui/ui/safe-active-element-min.js',
'core/assets/vendor/jquery.ui/ui/safe-blur-min.js',
'core/assets/vendor/jquery.ui/ui/widget-min.js',
'core/assets/vendor/jquery.ui/ui/position-min.js',
'core/assets/vendor/jquery.ui/ui/widgets/menu-min.js',
'core/assets/vendor/jquery.ui/ui/widgets/autocomplete-min.js',
],
],
'drupal.dialog' => [
'library' => 'drupal.dialog',
'expected_css' => [
'core/assets/vendor/jquery.ui/themes/base/core.css',
'core/assets/vendor/jquery.ui/themes/base/resizable.css',
'core/assets/vendor/jquery.ui/themes/base/checkboxradio.css',
'core/assets/vendor/jquery.ui/themes/base/controlgroup.css',
'core/assets/vendor/jquery.ui/themes/base/button.css',
'core/assets/vendor/jquery.ui/themes/base/dialog.css',
'core/assets/vendor/jquery.ui/themes/base/theme.css',
],
'expected_js' => [
'core/assets/vendor/jquery.ui/ui/data-min.js',
'core/assets/vendor/jquery.ui/ui/disable-selection-min.js',
'core/assets/vendor/jquery.ui/ui/form-min.js',
'core/assets/vendor/jquery.ui/ui/labels-min.js',
'core/assets/vendor/jquery.ui/ui/jquery-1-7-min.js',
'core/assets/vendor/jquery.ui/ui/scroll-parent-min.js',
'core/assets/vendor/jquery.ui/ui/tabbable-min.js',
'core/assets/vendor/jquery.ui/ui/unique-id-min.js',
'core/assets/vendor/jquery.ui/ui/version-min.js',
'core/assets/vendor/jquery.ui/ui/escape-selector-min.js',
'core/assets/vendor/jquery.ui/ui/focusable-min.js',
'core/assets/vendor/jquery.ui/ui/keycode-min.js',
'core/assets/vendor/jquery.ui/ui/plugin-min.js',
'core/assets/vendor/jquery.ui/ui/safe-active-element-min.js',
'core/assets/vendor/jquery.ui/ui/safe-blur-min.js',
'core/assets/vendor/jquery.ui/ui/widget-min.js',
'core/assets/vendor/jquery.ui/ui/ie-min.js',
'core/assets/vendor/jquery.ui/ui/widgets/mouse-min.js',
'core/assets/vendor/jquery.ui/ui/widgets/draggable-min.js',
'core/assets/vendor/jquery.ui/ui/position-min.js',
'core/assets/vendor/jquery.ui/ui/widgets/resizable-min.js',
'core/assets/vendor/jquery.ui/ui/form-reset-mixin-min.js',
'core/assets/vendor/jquery.ui/ui/widgets/checkboxradio-min.js',
'core/assets/vendor/jquery.ui/ui/widgets/controlgroup-min.js',
'core/assets/vendor/jquery.ui/ui/widgets/button-min.js',
'core/assets/vendor/jquery.ui/ui/widgets/dialog-min.js',
],
],
'drupal.tabbingmanager' => [
'library' => 'drupal.tabbingmanager',
'expected_css' => [
'core/assets/vendor/jquery.ui/themes/base/core.css',
'core/assets/vendor/jquery.ui/themes/base/theme.css',
],
'expected_js' => [
'core/assets/vendor/jquery.ui/ui/data-min.js',
'core/assets/vendor/jquery.ui/ui/disable-selection-min.js',
'core/assets/vendor/jquery.ui/ui/form-min.js',
'core/assets/vendor/jquery.ui/ui/labels-min.js',
'core/assets/vendor/jquery.ui/ui/jquery-1-7-min.js',
'core/assets/vendor/jquery.ui/ui/scroll-parent-min.js',
'core/assets/vendor/jquery.ui/ui/tabbable-min.js',
'core/assets/vendor/jquery.ui/ui/unique-id-min.js',
'core/assets/vendor/jquery.ui/ui/version-min.js',
'core/assets/vendor/jquery.ui/ui/escape-selector-min.js',
'core/assets/vendor/jquery.ui/ui/focusable-min.js',
'core/assets/vendor/jquery.ui/ui/ie-min.js',
'core/assets/vendor/jquery.ui/ui/keycode-min.js',
'core/assets/vendor/jquery.ui/ui/plugin-min.js',
'core/assets/vendor/jquery.ui/ui/safe-active-element-min.js',
'core/assets/vendor/jquery.ui/ui/safe-blur-min.js',
],
],
'jquery.ui' => [
'library' => 'jquery.ui',
'expected_css' => [
'core/assets/vendor/jquery.ui/themes/base/core.css',
'core/assets/vendor/jquery.ui/themes/base/theme.css',
],
'expected_js' => [
'core/assets/vendor/jquery.ui/ui/data-min.js',
'core/assets/vendor/jquery.ui/ui/disable-selection-min.js',
'core/assets/vendor/jquery.ui/ui/form-min.js',
'core/assets/vendor/jquery.ui/ui/labels-min.js',
'core/assets/vendor/jquery.ui/ui/jquery-1-7-min.js',
'core/assets/vendor/jquery.ui/ui/scroll-parent-min.js',
'core/assets/vendor/jquery.ui/ui/tabbable-min.js',
'core/assets/vendor/jquery.ui/ui/unique-id-min.js',
'core/assets/vendor/jquery.ui/ui/version-min.js',
'core/assets/vendor/jquery.ui/ui/escape-selector-min.js',
'core/assets/vendor/jquery.ui/ui/focusable-min.js',
'core/assets/vendor/jquery.ui/ui/ie-min.js',
'core/assets/vendor/jquery.ui/ui/keycode-min.js',
'core/assets/vendor/jquery.ui/ui/plugin-min.js',
'core/assets/vendor/jquery.ui/ui/safe-active-element-min.js',
'core/assets/vendor/jquery.ui/ui/safe-blur-min.js',
],
],
'jquery.ui.autocomplete' => [
'library' => 'jquery.ui.autocomplete',
'expected_css' => [
'core/assets/vendor/jquery.ui/themes/base/core.css',
'core/assets/vendor/jquery.ui/themes/base/menu.css',
'core/assets/vendor/jquery.ui/themes/base/autocomplete.css',
'core/assets/vendor/jquery.ui/themes/base/theme.css',
],
'expected_js' => [
'core/assets/vendor/jquery.ui/ui/data-min.js',
'core/assets/vendor/jquery.ui/ui/disable-selection-min.js',
'core/assets/vendor/jquery.ui/ui/form-min.js',
'core/assets/vendor/jquery.ui/ui/labels-min.js',
'core/assets/vendor/jquery.ui/ui/jquery-1-7-min.js',
'core/assets/vendor/jquery.ui/ui/scroll-parent-min.js',
'core/assets/vendor/jquery.ui/ui/tabbable-min.js',
'core/assets/vendor/jquery.ui/ui/unique-id-min.js',
'core/assets/vendor/jquery.ui/ui/version-min.js',
'core/assets/vendor/jquery.ui/ui/escape-selector-min.js',
'core/assets/vendor/jquery.ui/ui/focusable-min.js',
'core/assets/vendor/jquery.ui/ui/ie-min.js',
'core/assets/vendor/jquery.ui/ui/keycode-min.js',
'core/assets/vendor/jquery.ui/ui/plugin-min.js',
'core/assets/vendor/jquery.ui/ui/safe-active-element-min.js',
'core/assets/vendor/jquery.ui/ui/safe-blur-min.js',
'core/assets/vendor/jquery.ui/ui/widget-min.js',
'core/assets/vendor/jquery.ui/ui/position-min.js',
'core/assets/vendor/jquery.ui/ui/widgets/menu-min.js',
'core/assets/vendor/jquery.ui/ui/widgets/autocomplete-min.js',
],
],
'jquery.ui.button' => [
'library' => 'jquery.ui.button',
'expected_css' => [
'core/assets/vendor/jquery.ui/themes/base/core.css',
'core/assets/vendor/jquery.ui/themes/base/checkboxradio.css',
'core/assets/vendor/jquery.ui/themes/base/controlgroup.css',
'core/assets/vendor/jquery.ui/themes/base/button.css',
'core/assets/vendor/jquery.ui/themes/base/theme.css',
],
'expected_js' => [
'core/assets/vendor/jquery.ui/ui/data-min.js',
'core/assets/vendor/jquery.ui/ui/disable-selection-min.js',
'core/assets/vendor/jquery.ui/ui/form-min.js',
'core/assets/vendor/jquery.ui/ui/labels-min.js',
'core/assets/vendor/jquery.ui/ui/jquery-1-7-min.js',
'core/assets/vendor/jquery.ui/ui/scroll-parent-min.js',
'core/assets/vendor/jquery.ui/ui/tabbable-min.js',
'core/assets/vendor/jquery.ui/ui/unique-id-min.js',
'core/assets/vendor/jquery.ui/ui/version-min.js',
'core/assets/vendor/jquery.ui/ui/escape-selector-min.js',
'core/assets/vendor/jquery.ui/ui/focusable-min.js',
'core/assets/vendor/jquery.ui/ui/ie-min.js',
'core/assets/vendor/jquery.ui/ui/keycode-min.js',
'core/assets/vendor/jquery.ui/ui/plugin-min.js',
'core/assets/vendor/jquery.ui/ui/safe-active-element-min.js',
'core/assets/vendor/jquery.ui/ui/safe-blur-min.js',
'core/assets/vendor/jquery.ui/ui/widget-min.js',
'core/assets/vendor/jquery.ui/ui/widgets/checkboxradio-min.js',
'core/assets/vendor/jquery.ui/ui/widgets/controlgroup-min.js',
'core/assets/vendor/jquery.ui/ui/widgets/button-min.js',
],
],
'jquery.ui.dialog' => [
'library' => 'jquery.ui.dialog',
'expected_css' => [
'core/assets/vendor/jquery.ui/themes/base/core.css',
'core/assets/vendor/jquery.ui/themes/base/resizable.css',
'core/assets/vendor/jquery.ui/themes/base/checkboxradio.css',
'core/assets/vendor/jquery.ui/themes/base/controlgroup.css',
'core/assets/vendor/jquery.ui/themes/base/button.css',
'core/assets/vendor/jquery.ui/themes/base/dialog.css',
'core/assets/vendor/jquery.ui/themes/base/theme.css',
],
'expected_js' => [
'core/assets/vendor/jquery.ui/ui/data-min.js',
'core/assets/vendor/jquery.ui/ui/disable-selection-min.js',
'core/assets/vendor/jquery.ui/ui/form-min.js',
'core/assets/vendor/jquery.ui/ui/labels-min.js',
'core/assets/vendor/jquery.ui/ui/jquery-1-7-min.js',
'core/assets/vendor/jquery.ui/ui/scroll-parent-min.js',
'core/assets/vendor/jquery.ui/ui/tabbable-min.js',
'core/assets/vendor/jquery.ui/ui/unique-id-min.js',
'core/assets/vendor/jquery.ui/ui/version-min.js',
'core/assets/vendor/jquery.ui/ui/escape-selector-min.js',
'core/assets/vendor/jquery.ui/ui/focusable-min.js',
'core/assets/vendor/jquery.ui/ui/keycode-min.js',
'core/assets/vendor/jquery.ui/ui/plugin-min.js',
'core/assets/vendor/jquery.ui/ui/safe-active-element-min.js',
'core/assets/vendor/jquery.ui/ui/safe-blur-min.js',
'core/assets/vendor/jquery.ui/ui/widget-min.js',
'core/assets/vendor/jquery.ui/ui/ie-min.js',
'core/assets/vendor/jquery.ui/ui/widgets/mouse-min.js',
'core/assets/vendor/jquery.ui/ui/widgets/draggable-min.js',
'core/assets/vendor/jquery.ui/ui/position-min.js',
'core/assets/vendor/jquery.ui/ui/widgets/resizable-min.js',
'core/assets/vendor/jquery.ui/ui/form-reset-mixin-min.js',
'core/assets/vendor/jquery.ui/ui/widgets/checkboxradio-min.js',
'core/assets/vendor/jquery.ui/ui/widgets/controlgroup-min.js',
'core/assets/vendor/jquery.ui/ui/widgets/button-min.js',
'core/assets/vendor/jquery.ui/ui/widgets/dialog-min.js',
],
],
'jquery.ui.menu' => [
'library' => 'jquery.ui.menu',
'expected_css' => [
'core/assets/vendor/jquery.ui/themes/base/core.css',
'core/assets/vendor/jquery.ui/themes/base/menu.css',
'core/assets/vendor/jquery.ui/themes/base/theme.css',
],
'expected_js' => [
'core/assets/vendor/jquery.ui/ui/data-min.js',
'core/assets/vendor/jquery.ui/ui/disable-selection-min.js',
'core/assets/vendor/jquery.ui/ui/form-min.js',
'core/assets/vendor/jquery.ui/ui/labels-min.js',
'core/assets/vendor/jquery.ui/ui/jquery-1-7-min.js',
'core/assets/vendor/jquery.ui/ui/scroll-parent-min.js',
'core/assets/vendor/jquery.ui/ui/tabbable-min.js',
'core/assets/vendor/jquery.ui/ui/unique-id-min.js',
'core/assets/vendor/jquery.ui/ui/version-min.js',
'core/assets/vendor/jquery.ui/ui/escape-selector-min.js',
'core/assets/vendor/jquery.ui/ui/focusable-min.js',
'core/assets/vendor/jquery.ui/ui/ie-min.js',
'core/assets/vendor/jquery.ui/ui/keycode-min.js',
'core/assets/vendor/jquery.ui/ui/plugin-min.js',
'core/assets/vendor/jquery.ui/ui/safe-active-element-min.js',
'core/assets/vendor/jquery.ui/ui/safe-blur-min.js',
'core/assets/vendor/jquery.ui/ui/widget-min.js',
'core/assets/vendor/jquery.ui/ui/position-min.js',
'core/assets/vendor/jquery.ui/ui/widgets/menu-min.js',
],
],
'jquery.ui.mouse' => [
'library' => 'jquery.ui.mouse',
'expected_css' => [
'core/assets/vendor/jquery.ui/themes/base/core.css',
'core/assets/vendor/jquery.ui/themes/base/theme.css',
],
'expected_js' => [
'core/assets/vendor/jquery.ui/ui/data-min.js',
'core/assets/vendor/jquery.ui/ui/disable-selection-min.js',
'core/assets/vendor/jquery.ui/ui/form-min.js',
'core/assets/vendor/jquery.ui/ui/labels-min.js',
'core/assets/vendor/jquery.ui/ui/jquery-1-7-min.js',
'core/assets/vendor/jquery.ui/ui/scroll-parent-min.js',
'core/assets/vendor/jquery.ui/ui/tabbable-min.js',
'core/assets/vendor/jquery.ui/ui/unique-id-min.js',
'core/assets/vendor/jquery.ui/ui/version-min.js',
'core/assets/vendor/jquery.ui/ui/escape-selector-min.js',
'core/assets/vendor/jquery.ui/ui/focusable-min.js',
'core/assets/vendor/jquery.ui/ui/keycode-min.js',
'core/assets/vendor/jquery.ui/ui/plugin-min.js',
'core/assets/vendor/jquery.ui/ui/safe-active-element-min.js',
'core/assets/vendor/jquery.ui/ui/safe-blur-min.js',
'core/assets/vendor/jquery.ui/ui/widget-min.js',
'core/assets/vendor/jquery.ui/ui/ie-min.js',
'core/assets/vendor/jquery.ui/ui/widgets/mouse-min.js',
],
],
'jquery.ui.position' => [
'library' => 'jquery.ui.position',
'expected_css' => [
'core/assets/vendor/jquery.ui/themes/base/core.css',
'core/assets/vendor/jquery.ui/themes/base/theme.css',
],
'expected_js' => [
'core/assets/vendor/jquery.ui/ui/data-min.js',
'core/assets/vendor/jquery.ui/ui/disable-selection-min.js',
'core/assets/vendor/jquery.ui/ui/form-min.js',
'core/assets/vendor/jquery.ui/ui/labels-min.js',
'core/assets/vendor/jquery.ui/ui/jquery-1-7-min.js',
'core/assets/vendor/jquery.ui/ui/scroll-parent-min.js',
'core/assets/vendor/jquery.ui/ui/tabbable-min.js',
'core/assets/vendor/jquery.ui/ui/unique-id-min.js',
'core/assets/vendor/jquery.ui/ui/version-min.js',
'core/assets/vendor/jquery.ui/ui/escape-selector-min.js',
'core/assets/vendor/jquery.ui/ui/focusable-min.js',
'core/assets/vendor/jquery.ui/ui/ie-min.js',
'core/assets/vendor/jquery.ui/ui/keycode-min.js',
'core/assets/vendor/jquery.ui/ui/plugin-min.js',
'core/assets/vendor/jquery.ui/ui/safe-active-element-min.js',
'core/assets/vendor/jquery.ui/ui/safe-blur-min.js',
'core/assets/vendor/jquery.ui/ui/position-min.js',
],
],
'jquery.ui.resizable' => [
'library' => 'jquery.ui.resizable',
'expected_css' => [
'core/assets/vendor/jquery.ui/themes/base/core.css',
'core/assets/vendor/jquery.ui/themes/base/resizable.css',
'core/assets/vendor/jquery.ui/themes/base/theme.css',
],
'expected_js' => [
'core/assets/vendor/jquery.ui/ui/data-min.js',
'core/assets/vendor/jquery.ui/ui/disable-selection-min.js',
'core/assets/vendor/jquery.ui/ui/form-min.js',
'core/assets/vendor/jquery.ui/ui/labels-min.js',
'core/assets/vendor/jquery.ui/ui/jquery-1-7-min.js',
'core/assets/vendor/jquery.ui/ui/scroll-parent-min.js',
'core/assets/vendor/jquery.ui/ui/tabbable-min.js',
'core/assets/vendor/jquery.ui/ui/unique-id-min.js',
'core/assets/vendor/jquery.ui/ui/version-min.js',
'core/assets/vendor/jquery.ui/ui/escape-selector-min.js',
'core/assets/vendor/jquery.ui/ui/focusable-min.js',
'core/assets/vendor/jquery.ui/ui/keycode-min.js',
'core/assets/vendor/jquery.ui/ui/plugin-min.js',
'core/assets/vendor/jquery.ui/ui/safe-active-element-min.js',
'core/assets/vendor/jquery.ui/ui/safe-blur-min.js',
'core/assets/vendor/jquery.ui/ui/widget-min.js',
'core/assets/vendor/jquery.ui/ui/ie-min.js',
'core/assets/vendor/jquery.ui/ui/widgets/mouse-min.js',
'core/assets/vendor/jquery.ui/ui/widgets/resizable-min.js',
],
],
'jquery.ui.widget' => [
'library' => 'jquery.ui.widget',
'expected_css' => [
'core/assets/vendor/jquery.ui/themes/base/core.css',
'core/assets/vendor/jquery.ui/themes/base/theme.css',
],
'expected_js' => [
'core/assets/vendor/jquery.ui/ui/data-min.js',
'core/assets/vendor/jquery.ui/ui/disable-selection-min.js',
'core/assets/vendor/jquery.ui/ui/form-min.js',
'core/assets/vendor/jquery.ui/ui/labels-min.js',
'core/assets/vendor/jquery.ui/ui/jquery-1-7-min.js',
'core/assets/vendor/jquery.ui/ui/scroll-parent-min.js',
'core/assets/vendor/jquery.ui/ui/tabbable-min.js',
'core/assets/vendor/jquery.ui/ui/unique-id-min.js',
'core/assets/vendor/jquery.ui/ui/version-min.js',
'core/assets/vendor/jquery.ui/ui/escape-selector-min.js',
'core/assets/vendor/jquery.ui/ui/focusable-min.js',
'core/assets/vendor/jquery.ui/ui/ie-min.js',
'core/assets/vendor/jquery.ui/ui/keycode-min.js',
'core/assets/vendor/jquery.ui/ui/plugin-min.js',
'core/assets/vendor/jquery.ui/ui/safe-active-element-min.js',
'core/assets/vendor/jquery.ui/ui/safe-blur-min.js',
'core/assets/vendor/jquery.ui/ui/widget-min.js',
],
],
// A few instances of multiple libraries being checked simultaneously are
// here to ensure that multiple libraries requesting the same asset does
// not impact the expected loading order.
'drupal.tabbingmanager|jquery.ui|jquery.ui.widget' => [
'library' => 'drupal.tabbingmanager|jquery.ui|jquery.ui.widget',
'expected_css' => [
'core/assets/vendor/jquery.ui/themes/base/core.css',
'core/assets/vendor/jquery.ui/themes/base/theme.css',
],
'expected_js' => [
'core/assets/vendor/jquery.ui/ui/data-min.js',
'core/assets/vendor/jquery.ui/ui/disable-selection-min.js',
'core/assets/vendor/jquery.ui/ui/form-min.js',
'core/assets/vendor/jquery.ui/ui/labels-min.js',
'core/assets/vendor/jquery.ui/ui/jquery-1-7-min.js',
'core/assets/vendor/jquery.ui/ui/scroll-parent-min.js',
'core/assets/vendor/jquery.ui/ui/tabbable-min.js',
'core/assets/vendor/jquery.ui/ui/unique-id-min.js',
'core/assets/vendor/jquery.ui/ui/version-min.js',
'core/assets/vendor/jquery.ui/ui/escape-selector-min.js',
'core/assets/vendor/jquery.ui/ui/focusable-min.js',
'core/assets/vendor/jquery.ui/ui/ie-min.js',
'core/assets/vendor/jquery.ui/ui/keycode-min.js',
'core/assets/vendor/jquery.ui/ui/plugin-min.js',
'core/assets/vendor/jquery.ui/ui/safe-active-element-min.js',
'core/assets/vendor/jquery.ui/ui/safe-blur-min.js',
'core/assets/vendor/jquery.ui/ui/widget-min.js',
],
],
'drupal.autocomplete|jquery.ui|jquery.ui.autocomplete|drupal.dialog' => [
'library' => 'drupal.autocomplete|jquery.ui|jquery.ui.autocomplete|drupal.dialog',
'expected_css' => [
'core/assets/vendor/jquery.ui/themes/base/core.css',
'core/assets/vendor/jquery.ui/themes/base/menu.css',
'core/assets/vendor/jquery.ui/themes/base/autocomplete.css',
'core/assets/vendor/jquery.ui/themes/base/resizable.css',
'core/assets/vendor/jquery.ui/themes/base/checkboxradio.css',
'core/assets/vendor/jquery.ui/themes/base/controlgroup.css',
'core/assets/vendor/jquery.ui/themes/base/button.css',
'core/assets/vendor/jquery.ui/themes/base/dialog.css',
'core/assets/vendor/jquery.ui/themes/base/theme.css',
],
'expected_js' => [
'core/assets/vendor/jquery.ui/ui/data-min.js',
'core/assets/vendor/jquery.ui/ui/disable-selection-min.js',
'core/assets/vendor/jquery.ui/ui/form-min.js',
'core/assets/vendor/jquery.ui/ui/labels-min.js',
'core/assets/vendor/jquery.ui/ui/jquery-1-7-min.js',
'core/assets/vendor/jquery.ui/ui/scroll-parent-min.js',
'core/assets/vendor/jquery.ui/ui/tabbable-min.js',
'core/assets/vendor/jquery.ui/ui/unique-id-min.js',
'core/assets/vendor/jquery.ui/ui/version-min.js',
'core/assets/vendor/jquery.ui/ui/escape-selector-min.js',
'core/assets/vendor/jquery.ui/ui/focusable-min.js',
'core/assets/vendor/jquery.ui/ui/keycode-min.js',
'core/assets/vendor/jquery.ui/ui/plugin-min.js',
'core/assets/vendor/jquery.ui/ui/safe-active-element-min.js',
'core/assets/vendor/jquery.ui/ui/safe-blur-min.js',
'core/assets/vendor/jquery.ui/ui/widget-min.js',
'core/assets/vendor/jquery.ui/ui/position-min.js',
'core/assets/vendor/jquery.ui/ui/widgets/menu-min.js',
'core/assets/vendor/jquery.ui/ui/widgets/autocomplete-min.js',
'core/assets/vendor/jquery.ui/ui/ie-min.js',
'core/assets/vendor/jquery.ui/ui/widgets/mouse-min.js',
'core/assets/vendor/jquery.ui/ui/widgets/draggable-min.js',
'core/assets/vendor/jquery.ui/ui/widgets/resizable-min.js',
'core/assets/vendor/jquery.ui/ui/form-reset-mixin-min.js',
'core/assets/vendor/jquery.ui/ui/widgets/checkboxradio-min.js',
'core/assets/vendor/jquery.ui/ui/widgets/controlgroup-min.js',
'core/assets/vendor/jquery.ui/ui/widgets/button-min.js',
'core/assets/vendor/jquery.ui/ui/widgets/dialog-min.js',
],
],
'jquery.ui.widget|jquery.ui.resizable|jquery.ui.position|jquery.ui.mouse|jquery.ui.menu|jquery.ui.dialog|jquery.ui.button|jquery.ui.autocomplete|jquery.ui|drupal.tabbingmanager|drupal.dialog|drupal.autocomplete' => [
'library' => 'jquery.ui.widget|jquery.ui.resizable|jquery.ui.position|jquery.ui.mouse|jquery.ui.menu|jquery.ui.dialog|jquery.ui.button|jquery.ui.autocomplete|jquery.ui|drupal.tabbingmanager|drupal.dialog|drupal.autocomplete',
'expected_css' => [
'core/assets/vendor/jquery.ui/themes/base/core.css',
'core/assets/vendor/jquery.ui/themes/base/resizable.css',
'core/assets/vendor/jquery.ui/themes/base/menu.css',
'core/assets/vendor/jquery.ui/themes/base/dialog.css',
'core/assets/vendor/jquery.ui/themes/base/checkboxradio.css',
'core/assets/vendor/jquery.ui/themes/base/controlgroup.css',
'core/assets/vendor/jquery.ui/themes/base/button.css',
'core/assets/vendor/jquery.ui/themes/base/autocomplete.css',
'core/assets/vendor/jquery.ui/themes/base/theme.css',
],
'expected_js' => [
'core/assets/vendor/jquery.ui/ui/data-min.js',
'core/assets/vendor/jquery.ui/ui/disable-selection-min.js',
'core/assets/vendor/jquery.ui/ui/form-min.js',
'core/assets/vendor/jquery.ui/ui/labels-min.js',
'core/assets/vendor/jquery.ui/ui/jquery-1-7-min.js',
'core/assets/vendor/jquery.ui/ui/scroll-parent-min.js',
'core/assets/vendor/jquery.ui/ui/tabbable-min.js',
'core/assets/vendor/jquery.ui/ui/unique-id-min.js',
'core/assets/vendor/jquery.ui/ui/version-min.js',
'core/assets/vendor/jquery.ui/ui/escape-selector-min.js',
'core/assets/vendor/jquery.ui/ui/focusable-min.js',
'core/assets/vendor/jquery.ui/ui/keycode-min.js',
'core/assets/vendor/jquery.ui/ui/plugin-min.js',
'core/assets/vendor/jquery.ui/ui/safe-active-element-min.js',
'core/assets/vendor/jquery.ui/ui/safe-blur-min.js',
'core/assets/vendor/jquery.ui/ui/widget-min.js',
'core/assets/vendor/jquery.ui/ui/ie-min.js',
'core/assets/vendor/jquery.ui/ui/widgets/mouse-min.js',
'core/assets/vendor/jquery.ui/ui/widgets/resizable-min.js',
'core/assets/vendor/jquery.ui/ui/position-min.js',
'core/assets/vendor/jquery.ui/ui/widgets/menu-min.js',
'core/assets/vendor/jquery.ui/ui/widgets/draggable-min.js',
'core/assets/vendor/jquery.ui/ui/form-reset-mixin-min.js',
'core/assets/vendor/jquery.ui/ui/widgets/dialog-min.js',
'core/assets/vendor/jquery.ui/ui/widgets/autocomplete-min.js',
'core/assets/vendor/jquery.ui/ui/widgets/button-min.js',
'core/assets/vendor/jquery.ui/ui/widgets/controlgroup-min.js',
'core/assets/vendor/jquery.ui/ui/widgets/checkboxradio-min.js',
],
],
];
}
}

View File

@ -1,55 +0,0 @@
<?php
namespace Drupal\KernelTests\Core\Asset;
use Drupal\KernelTests\KernelTestBase;
/**
* Checks the deprecation status and contents of jQuery UI libraries.
*
* @group Asset
*/
class DeprecatedJqueryUiAssetsTest extends KernelTestBase {
/**
* The library discovery service.
*
* @var \Drupal\Core\Asset\LibraryDiscoveryInterface
*/
protected $libraryDiscovery;
/**
* {@inheritdoc}
*/
protected function setUp(): void {
parent::setUp();
$this->libraryDiscovery = $this->container->get('library.discovery');
}
/**
* Confirm deprecation status and contents of jQuery UI libraries.
*
* @group legacy
*/
public function testDeprecatedJqueryUi() {
$deprecated_jquery_ui_libraries = [
'jquery.ui' => '1396fab9268ee2cce47df6ac3e4781c8',
'jquery.ui.autocomplete' => '153f2836f8f2da39767208b6e09cb5b4',
'jquery.ui.button' => 'ad23e5de0fa1de1f511d10ba2e10d2dd',
'jquery.ui.dialog' => 'dc72e5bd38a3d2697bcf3e7964852e4b',
'jquery.ui.draggable' => 'af0f2bdc8aa4ade1e3de8042f31a9312',
'jquery.ui.menu' => '7d0c4d57f43d2f881d2cd5e5b79effbb',
'jquery.ui.mouse' => '626bb203807fa2cdc62510412685df4a',
'jquery.ui.position' => '6d1759c7d3eb94accbed78416487469b',
'jquery.ui.resizable' => 'a2448fa87071a17a9756f39c9becb70d',
'jquery.ui.widget' => 'eacd675de09572383b58e52309ba2245',
];
foreach ($deprecated_jquery_ui_libraries as $library => $expected_hashed_library_definition) {
$this->expectDeprecation("The \"core/$library\" asset library is deprecated in drupal:9.2.0 and is removed from drupal:10.0.0. See https://www.drupal.org/node/3067969");
$library_definition = $this->libraryDiscovery->getLibraryByName('core', $library);
$this->assertEquals($expected_hashed_library_definition, md5(serialize($library_definition)));
}
}
}

View File

@ -147,7 +147,7 @@ class LibraryDiscoveryIntegrationTest extends KernelTestBase {
$this->assertAssetInLibrary('public://my_css/vertical-tabs.css', 'core', 'drupal.vertical-tabs', 'css');
// Assert a protocol-relative URI.
$this->assertAssetInLibrary('//my-server/my_theme/js/overridden.js', 'core', 'drupal.displace', 'js');
$this->assertAssetInLibrary('//my-server/my_theme/css/jquery_ui.css', 'core', 'jquery.ui', 'css');
// Assert an absolute URI.
$this->assertAssetInLibrary('http://example.com/my_theme/css/farbtastic.css', 'core', 'jquery.farbtastic', 'css');

View File

@ -59,22 +59,15 @@ libraries-override:
js:
misc/vertical-tabs.js: js/vertical-tabs.js
core/drupal.autocomplete:
core/jquery.ui:
css:
theme:
assets/vendor/jquery.ui/themes/base/theme.css: false
core/drupal.tabbingmanager:
css:
theme:
assets/vendor/jquery.ui/themes/base/theme.css: false
core/drupal.dialog:
core/jquery.ui.dialog:
css:
component:
assets/vendor/jquery.ui/themes/base/dialog.css: false
theme:
assets/vendor/jquery.ui/themes/base/theme.css: false
user/drupal.user:
css:
@ -125,7 +118,6 @@ libraries-extend:
- claro/details-focus
core/drupal.dialog:
- claro/claro.drupal.dialog
- claro/claro.jquery.ui
core/drupal.dropbutton:
- claro/dropbutton
core/drupal.checkbox:
@ -134,10 +126,10 @@ libraries-extend:
- claro/messages
core/drupal.progress:
- claro/progress
core/drupal.tabbingmanager:
- claro/claro.jquery.ui
core/drupal.vertical-tabs:
- claro/vertical-tabs
core/jquery.ui:
- claro/claro.jquery.ui
file/drupal.file:
- claro/file
filter/drupal.filter.admin:
@ -148,7 +140,6 @@ libraries-extend:
- claro/system.admin
core/drupal.autocomplete:
- claro/autocomplete
- claro/claro.jquery.ui
tour/tour-styling:
- claro/tour-styling
shortcut/drupal.shortcut:

View File

@ -34,37 +34,28 @@ libraries-override:
css:
component:
misc/vertical-tabs.css: false
core/drupal.autocomplete:
core/jquery.ui:
css:
theme:
assets/vendor/jquery.ui/themes/base/theme.css: false
core/drupal.tabbingmanager:
css:
theme:
assets/vendor/jquery.ui/themes/base/theme.css: false
core/drupal.dialog:
core/jquery.ui.dialog:
css:
component:
assets/vendor/jquery.ui/themes/base/dialog.css: false
theme:
assets/vendor/jquery.ui/themes/base/theme.css: false
libraries-extend:
core/ckeditor:
- seven/ckeditor-dialog
core/drupal.autocomplete:
- seven/seven.jquery.ui
core/drupal.dialog:
- seven/seven.drupal.dialog
- seven/seven.jquery.ui
core/drupal.dropbutton:
- seven/classy.dropbutton
core/drupal.progress:
- seven/classy.progress
core/drupal.tabbingmanager:
- seven/seven.jquery.ui
core/drupal.vertical-tabs:
- seven/vertical-tabs
core/jquery.ui:
- seven/seven.jquery.ui
file/drupal.file:
- seven/classy.file
filter/drupal.filter.admin: