Skip to content

Commit 3b4bb0d

Browse files
committed
Switch to packageFiles
1 parent f00c1fe commit 3b4bb0d

3 files changed

Lines changed: 46 additions & 23 deletions

File tree

src/BootstrapManager.php

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -104,7 +104,7 @@ public function addBootstrapModule( $modules ) {
104104
}
105105

106106
$this->addFilesToGlobalResourceModules( 'styles', $description );
107-
$this->addFilesToGlobalResourceModules( 'scripts', $description );
107+
$this->addFilesToGlobalResourceModules( 'packageFiles', $description );
108108

109109
}
110110
}
@@ -188,6 +188,12 @@ public function addCacheTriggerFile( $files ) {
188188
*/
189189
protected function adjustArrayElementOfResourceModuleDescription( $key, $value,
190190
$filetype = 'styles' ) {
191+
192+
// TODO: handle better
193+
if ( $filetype === 'packageFiles' ) {
194+
$filetype = 'scripts';
195+
}
196+
191197
if ( !isset( $GLOBALS[ 'wgResourceModules' ][ 'ext.bootstrap.' . $filetype ][ $key ] ) ) {
192198
$GLOBALS[ 'wgResourceModules' ][ 'ext.bootstrap.' . $filetype ][ $key ] = [];
193199
}

src/Definition/V5ModuleDefinition.php

Lines changed: 23 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@ class V5ModuleDefinition implements ModuleDefinition {
5353
'forms' => [ 'styles' => 'forms' ],
5454
'buttons' => [ 'styles' => 'buttons' ],
5555
'transitions' => [ 'styles' => 'transitions' ],
56-
'dropdown' => [ 'styles' => 'dropdown', 'scripts' => 'dropdown.js', 'dependencies' => [ 'popper', 'base-component' ] ],
56+
'dropdown' => [ 'styles' => 'dropdown', 'packageFiles' => 'dropdown.js', 'dependencies' => [ 'popper', 'base-component' ] ],
5757
'button-group' => [ 'styles' => 'button-group', 'dependencies' => [ 'buttons' ] ],
5858
'nav' => [ 'styles' => 'nav' ],
5959
'navbar' => [ 'styles' => 'navbar' ],
@@ -66,41 +66,42 @@ class V5ModuleDefinition implements ModuleDefinition {
6666
'progress' => [ 'styles' => 'progress' ],
6767
'list-group' => [ 'styles' => 'list-group' ],
6868
'close' => [ 'styles' => 'close' ],
69-
'toasts' => [ 'styles' => 'toasts', 'scripts' => 'toast.js', 'dependencies' => 'base-component' ],
70-
'modal' => [ 'styles' => 'modal', 'scripts' => 'modal.js', 'dependencies' => 'base-component' ],
71-
'tooltip' => [ 'styles' => 'tooltip', 'scripts' => 'tooltip.js', 'dependencies' => [ 'popper', 'base-component' ] ],
72-
'popover' => [ 'styles' => 'popover', 'scripts' => 'popover.js', 'dependencies' => [ 'popper', 'tooltip', 'base-component' ] ],
73-
'carousel' => [ 'styles' => 'carousel', 'scripts' => 'carousel.js', 'dependencies' => 'base-component' ],
69+
'toasts' => [ 'styles' => 'toasts', 'packageFiles' => 'toast.js', 'dependencies' => 'base-component' ],
70+
'modal' => [ 'styles' => 'modal', 'packageFiles' => 'modal.js', 'dependencies' => 'base-component' ],
71+
'tooltip' => [ 'styles' => 'tooltip', 'packageFiles' => 'tooltip.js', 'dependencies' => [ 'popper', 'base-component' ] ],
72+
'popover' => [ 'styles' => 'popover', 'packageFiles' => 'popover.js', 'dependencies' => [ 'popper', 'tooltip', 'base-component' ] ],
73+
'carousel' => [ 'styles' => 'carousel', 'packageFiles' => 'carousel.js', 'dependencies' => 'base-component' ],
7474
'spinners' => [ 'styles' => 'spinners' ],
75-
'offcanvas' => [ 'styles' => 'offcanvas', 'scripts' => 'offcanvas.js' ],
75+
'offcanvas' => [ 'styles' => 'offcanvas', 'packageFiles' => 'offcanvas.js' ],
7676
'placeholders' => [ 'styles' => 'placeholders' ],
7777

7878
// Helpers
7979
'helpers' => [ 'styles' => 'helpers' ],
8080

8181
// Helpers
82-
'utilities/api' => [ 'styles' => 'utilities/api' ],
83-
84-
// Javascript
85-
'active-buttons' => [ 'scripts' => 'button.js', 'dependencies' => [ 'buttons', 'js-util' ] ],
86-
'dismissable-alert' => [ 'scripts' => 'alert.js', 'dependencies' => [ 'alert', 'base-component' ] ],
87-
'collapse' => [ 'scripts' => 'collapse.js', 'dependencies' => [ 'js-util' ] ],
88-
'scrollspy' => [ 'scripts' => 'scrollspy.js', 'dependencies' => [ 'popper', 'js-util' ] ],
89-
'tab' => [ 'scripts' => 'tab.js', 'dependencies' => [ 'list-group', 'js-util' ] ],
90-
'popper' => [ 'scripts' => 'popper.js', 'dependencies' => [ 'js-util' ] ],
91-
92-
'base-component' => [ 'scripts' => 'base-component.js', 'dependencies' => [ 'js-util' ] ],
93-
82+
'utilities/api' => [ 'styles' => 'utilities/api' ],
83+
84+
// Component JavaScript requirements
85+
'base-component' => [ 'packageFiles' => 'base-component.js', 'dependencies' => [ 'js-util' ] ],
86+
'active-buttons' => [ 'packageFiles' => 'button.js', 'dependencies' => [ 'buttons', 'js-util' ] ],
87+
'dismissable-alert' => [ 'packageFiles' => 'alert.js', 'dependencies' => [ 'alert', 'base-component' ] ],
88+
'collapse' => [ 'packageFiles' => 'collapse.js', 'dependencies' => [ 'js-util' ] ],
89+
'scrollspy' => [ 'packageFiles' => 'scrollspy.js', 'dependencies' => [ 'popper', 'js-util' ] ],
90+
'tab' => [ 'packageFiles' => 'tab.js', 'dependencies' => [ 'list-group', 'js-util' ] ],
91+
// TODO: this needs to be included via ResourceLoader module
92+
'popper' => [ 'packageFiles' => 'popper.js', 'dependencies' => [ 'js-util' ] ],
93+
94+
// General JavaScript requirements
9495
'js-dom' => [
95-
'scripts' => [
96+
'packageFiles' => [
9697
'dom/data.js',
9798
'dom/event-handler.js',
9899
'dom/manipulator.js',
99100
'dom/selector-engine.js'
100101
]
101102
],
102103
'js-util' => [
103-
'scripts' => [
104+
'packageFiles' => [
104105
'util/config.js',
105106
'util/backdrop.js',
106107
'util/component-functions.js',
@@ -114,6 +115,7 @@ class V5ModuleDefinition implements ModuleDefinition {
114115
'dependencies' => ['js-dom' ]
115116
],
116117

118+
// Pre-defined collections
117119
'bs-core' => [ 'dependencies' => [ 'variables', 'variables-dark', 'maps', 'mixins', 'utilities' ] ],
118120
'bs-reboot' => [ 'dependencies' => [ 'bs-core', 'reboot' ] ],
119121
'bs-grid' => [ 'styles' => 'bootstrap-grid' ],

src/Hooks/SetupAfterCache.php

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -108,12 +108,27 @@ protected function registerResourceLoaderModules( $localBasePath, $remoteBasePat
108108
[
109109
'localBasePath' => $localBasePath . '/js',
110110
'remoteBasePath' => $remoteBasePath . '/js',
111-
'scripts' => [],
111+
'es6' => true,
112+
'packageFiles'=> [],
113+
'dependencies' => [
114+
// TODO: should be conditional
115+
'@popperjs/core',
116+
]
112117
],
113118
array_key_exists( 'ext.bootstrap.scripts', $GLOBALS[ 'wgResourceModules' ] ) ?
114119
$GLOBALS[ 'wgResourceModules' ][ 'ext.bootstrap.scripts' ] : []
115120
);
116121

122+
// Separate module because Bootstrap JavaScript calls require('@popperjs/core')
123+
$GLOBALS[ 'wgResourceModules' ][ '@popperjs/core' ] = [
124+
'localBasePath' => $localBasePath . '/js',
125+
'remoteBasePath' => $remoteBasePath . '/js',
126+
'es6' => true,
127+
'packageFiles' => [
128+
'popper.js'
129+
]
130+
];
131+
117132
$GLOBALS[ 'wgResourceModules' ][ 'ext.bootstrap' ] = [
118133
'dependencies' => [ 'ext.bootstrap.styles', 'ext.bootstrap.scripts' ],
119134
];

0 commit comments

Comments
 (0)