From 2af570a711e3f5f08d67bc180a8ce24da462d543 Mon Sep 17 00:00:00 2001 From: Antonio De Marco <antonio@nuvole.org> Date: Sat, 23 Sep 2017 12:29:31 +0200 Subject: [PATCH] Issue #120: Add dependencies support for pattern libraries. --- docs/content/patterns-definition.rst | 2 ++ .../templates/patterns/media/media.ui_patterns.yml | 2 ++ src/Plugin/PatternBase.php | 8 ++++---- tests/features/overview.feature | 1 + 4 files changed, 9 insertions(+), 4 deletions(-) diff --git a/docs/content/patterns-definition.rst b/docs/content/patterns-definition.rst index f3916c42b..64b692ee5 100644 --- a/docs/content/patterns-definition.rst +++ b/docs/content/patterns-definition.rst @@ -43,6 +43,8 @@ and list them using the following format: - pattern_library_two: js: js/library_two.js: {} + dependencies: + - core/jquery Let's break this down: diff --git a/modules/ui_patterns_test/ui_patterns_test_theme/templates/patterns/media/media.ui_patterns.yml b/modules/ui_patterns_test/ui_patterns_test_theme/templates/patterns/media/media.ui_patterns.yml index 95014db56..00af1a5bc 100644 --- a/modules/ui_patterns_test/ui_patterns_test_theme/templates/patterns/media/media.ui_patterns.yml +++ b/modules/ui_patterns_test/ui_patterns_test_theme/templates/patterns/media/media.ui_patterns.yml @@ -36,3 +36,5 @@ media: js: js/media1.js: {} js/media2.js: {} + dependencies: + - core/drupal.tabledrag diff --git a/src/Plugin/PatternBase.php b/src/Plugin/PatternBase.php index 1dc9ba088..c0ad45130 100644 --- a/src/Plugin/PatternBase.php +++ b/src/Plugin/PatternBase.php @@ -96,14 +96,14 @@ abstract class PatternBase extends PluginBase implements PatternInterface, Conta /** * Process libraries. * - * @param array $libraries - * Libraries array. + * @param array|string $libraries + * List of dependencies or "dependencies:" root property. * @param string $base_path * Pattern base path. * @param string $parent * Item parent set in previous recursive iteration, if any. */ - protected function processLibraries(array &$libraries, $base_path, $parent = '') { + protected function processLibraries(&$libraries, $base_path, $parent = '') { $parents = ['js', 'base', 'layout', 'component', 'state', 'theme']; $_libraries = $libraries; foreach ($_libraries as $name => $values) { @@ -113,7 +113,7 @@ abstract class PatternBase extends PluginBase implements PatternInterface, Conta $libraries[$base_path . DIRECTORY_SEPARATOR . $name] = $values; unset($libraries[$name]); } - elseif (!$is_asset) { + elseif (!$is_asset && ($parent != 'dependencies')) { $this->processLibraries($libraries[$name], $base_path, $name); } } diff --git a/tests/features/overview.feature b/tests/features/overview.feature index ca592b085..2c67b1378 100644 --- a/tests/features/overview.feature +++ b/tests/features/overview.feature @@ -69,6 +69,7 @@ Feature: Overview And the response should contain "/ui_patterns_test_theme/templates/patterns/media/css/media2.css" And the response should contain "/ui_patterns_test_theme/templates/patterns/media/js/media1.js" And the response should contain "/ui_patterns_test_theme/templates/patterns/media/js/media2.js" + And the response should contain "/misc/tabledrag.js" Scenario: Patterns overview page will show validation errors after clearing the cache. Given I am logged in as a user with the "access patterns page" permission -- GitLab