Skip to content

Commit 88c498b

Browse files
authored
[4.0] BS5 JS (#31990)
1 parent 6e8f744 commit 88c498b

File tree

43 files changed

+1593
-750
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

43 files changed

+1593
-750
lines changed

administrator/components/com_content/tmpl/articles/default.php

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,9 @@
2626

2727
HTMLHelper::_('behavior.multiselect');
2828

29+
// Just for the tests :(
30+
HTMLHelper::_('jquery.framework');
31+
2932
$app = Factory::getApplication();
3033
$user = Factory::getUser();
3134
$userId = $user->get('id');

administrator/components/com_fields/tmpl/fields/default.php

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,9 @@
2020

2121
HTMLHelper::_('behavior.multiselect');
2222

23+
// Just for the tests :(
24+
HTMLHelper::_('jquery.framework');
25+
2326
$app = Factory::getApplication();
2427
$user = Factory::getUser();
2528
$userId = $user->get('id');

administrator/components/com_joomlaupdate/tmpl/update/default.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
/** @var Joomla\CMS\WebAsset\WebAssetManager $wa */
1717
$wa = $this->document->getWebAssetManager();
1818
$wa->useScript('core')
19+
->useScript('jquery')
1920
->useScript('com_joomlaupdate.encryption')
2021
->useScript('com_joomlaupdate.update')
2122
->useScript('com_joomlaupdate.admin-update');

administrator/components/com_joomlaupdate/tmpl/upload/captive.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
/** @var Joomla\CMS\WebAsset\WebAssetManager $wa */
2121
$wa = $this->document->getWebAssetManager();
2222
$wa->useScript('core')
23+
->useScript('jquery')
2324
->useScript('form.validate')
2425
->useScript('keepalive')
2526
->useScript('field.passwordview');

administrator/components/com_mails/tmpl/templates/default.php

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,8 @@
1414
use Joomla\CMS\Layout\LayoutHelper;
1515
use Joomla\CMS\Router\Route;
1616

17+
HTMLHelper::_('bootstrap.dropdown');
18+
1719
$listOrder = $this->escape($this->state->get('list.ordering'));
1820
$listDirn = $this->escape($this->state->get('list.direction'));
1921
?>

administrator/components/com_templates/tmpl/template/default.php

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -376,7 +376,7 @@
376376
);
377377
?>
378378
<form action="<?php echo Route::_('index.php?option=com_templates&task=template.copy&id=' . $input->getInt('id') . '&file=' . $this->file); ?>" method="post" name="adminForm" id="adminForm">
379-
<?php echo LayoutHelper::render('joomla.modal.main', $copyModalData); ?>
379+
<?php echo LayoutHelper::render('libraries.html.bootstrap.modal.main', $copyModalData); ?>
380380
<?php echo HTMLHelper::_('form.token'); ?>
381381
</form>
382382
<?php if ($this->type != 'home') : ?>
@@ -391,7 +391,7 @@
391391
);
392392
?>
393393
<form action="<?php echo Route::_('index.php?option=com_templates&task=template.renameFile&id=' . $input->getInt('id') . '&file=' . $this->file); ?>" method="post">
394-
<?php echo LayoutHelper::render('joomla.modal.main', $renameModalData); ?>
394+
<?php echo LayoutHelper::render('libraries.html.bootstrap.modal.main', $renameModalData); ?>
395395
<?php echo HTMLHelper::_('form.token'); ?>
396396
</form>
397397
<?php endif; ?>
@@ -406,7 +406,7 @@
406406
'body' => $this->loadTemplate('modal_delete_body')
407407
);
408408
?>
409-
<?php echo LayoutHelper::render('joomla.modal.main', $deleteModalData); ?>
409+
<?php echo LayoutHelper::render('libraries.html.bootstrap.modal.main', $deleteModalData); ?>
410410
<?php endif; ?>
411411
<?php // File Modal
412412
$fileModalData = array(
@@ -422,7 +422,7 @@
422422
'body' => $this->loadTemplate('modal_file_body')
423423
);
424424
?>
425-
<?php echo LayoutHelper::render('joomla.modal.main', $fileModalData); ?>
425+
<?php echo LayoutHelper::render('libraries.html.bootstrap.modal.main', $fileModalData); ?>
426426
<?php // Folder Modal
427427
$folderModalData = array(
428428
'selector' => 'folderModal',
@@ -437,7 +437,7 @@
437437
'body' => $this->loadTemplate('modal_folder_body')
438438
);
439439
?>
440-
<?php echo LayoutHelper::render('joomla.modal.main', $folderModalData); ?>
440+
<?php echo LayoutHelper::render('libraries.html.bootstrap.modal.main', $folderModalData); ?>
441441
<?php if ($this->type == 'image') : ?>
442442
<?php // Resize Modal
443443
$resizeModalData = array(
@@ -450,7 +450,7 @@
450450
);
451451
?>
452452
<form action="<?php echo Route::_('index.php?option=com_templates&task=template.resizeImage&id=' . $input->getInt('id') . '&file=' . $this->file); ?>" method="post">
453-
<?php echo LayoutHelper::render('joomla.modal.main', $resizeModalData); ?>
453+
<?php echo LayoutHelper::render('libraries.html.bootstrap.modal.main', $resizeModalData); ?>
454454
<?php echo HTMLHelper::_('form.token'); ?>
455455
</form>
456456
<?php endif; ?>
Lines changed: 155 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,155 @@
1+
const {
2+
readdir, readFile, rename, writeFile, rm,
3+
} = require('fs').promises;
4+
const { resolve } = require('path');
5+
const { minify } = require('terser');
6+
const rimraf = require('rimraf');
7+
const rollup = require('rollup');
8+
const { nodeResolve } = require('@rollup/plugin-node-resolve');
9+
const replace = require('@rollup/plugin-replace');
10+
const { babel } = require('@rollup/plugin-babel');
11+
12+
const tasks = [];
13+
const inputFolder = 'build/media_source/vendor/bootstrap/js';
14+
const outputFolder = 'media/vendor/bootstrap/js';
15+
16+
const createMinified = async (file) => {
17+
const initial = await readFile(resolve(outputFolder, file), { encoding: 'utf8' });
18+
const mini = await minify(initial);
19+
await rename(resolve(outputFolder, file), resolve(outputFolder, `${file.split('-')[0]}.es6.js`));
20+
await writeFile(resolve(outputFolder, `${file.split('-')[0]}.es6.min.js`), mini.code, { encoding: 'utf8' });
21+
};
22+
23+
const build = async () => {
24+
// eslint-disable-next-line no-console
25+
console.log('Building ES6 Components...');
26+
27+
const bundle = await rollup.rollup({
28+
input: resolve(inputFolder, 'index.es6.js'),
29+
plugins: [
30+
nodeResolve(),
31+
replace({
32+
'process.env.NODE_ENV': '\'production\'',
33+
}),
34+
],
35+
external: [
36+
'./base-component.js',
37+
'./dom/data.js',
38+
'./event-handler.js',
39+
'./dom/manipulator.js',
40+
'./selector-engine.js',
41+
'./util/index.js',
42+
],
43+
manualChunks: {
44+
alert: ['build/media_source/vendor/bootstrap/js/alert.es6.js'],
45+
button: ['build/media_source/vendor/bootstrap/js/button.es6.js'],
46+
carousel: ['build/media_source/vendor/bootstrap/js/carousel.es6.js'],
47+
collapse: ['build/media_source/vendor/bootstrap/js/collapse.es6.js'],
48+
dropdown: ['build/media_source/vendor/bootstrap/js/dropdown.es6.js'],
49+
modal: ['build/media_source/vendor/bootstrap/js/modal.es6.js'],
50+
popover: ['build/media_source/vendor/bootstrap/js/popover.es6.js'],
51+
scrollspy: ['build/media_source/vendor/bootstrap/js/scrollspy.es6.js'],
52+
tab: ['build/media_source/vendor/bootstrap/js/tab.es6.js'],
53+
toast: ['build/media_source/vendor/bootstrap/js/toast.es6.js'],
54+
popper: ['@popperjs/core'],
55+
dom: [
56+
'node_modules/bootstrap/js/src/base-component.js',
57+
'node_modules/bootstrap/js/src/dom/data.js',
58+
'node_modules/bootstrap/js/src/dom/event-handler.js',
59+
'node_modules/bootstrap/js/src/dom/manipulator.js',
60+
'node_modules/bootstrap/js/src/dom/selector-engine.js',
61+
'node_modules/bootstrap/js/src/util/index.js',
62+
],
63+
},
64+
});
65+
66+
await bundle.write({
67+
format: 'es',
68+
sourcemap: false,
69+
dir: outputFolder,
70+
});
71+
};
72+
73+
const buildLegacy = async () => {
74+
// eslint-disable-next-line no-console
75+
console.log('Building Legacy...');
76+
77+
const bundle = await rollup.rollup({
78+
input: resolve(inputFolder, 'index.es6.js'),
79+
plugins: [
80+
nodeResolve(),
81+
replace({
82+
'process.env.NODE_ENV': '\'production\'',
83+
}),
84+
babel({
85+
exclude: 'node_modules/core-js/**',
86+
babelHelpers: 'bundled',
87+
babelrc: false,
88+
presets: [
89+
[
90+
'@babel/preset-env',
91+
{
92+
corejs: '3.8',
93+
useBuiltIns: 'usage',
94+
targets: {
95+
chrome: '58',
96+
ie: '11',
97+
},
98+
loose: true,
99+
bugfixes: true,
100+
modules: false,
101+
},
102+
],
103+
],
104+
}),
105+
],
106+
external: [],
107+
});
108+
109+
await bundle.write({
110+
format: 'iife',
111+
sourcemap: false,
112+
name: 'Bootstrap',
113+
file: resolve(outputFolder, 'bootstrap.es5.js'),
114+
});
115+
};
116+
117+
(async () => {
118+
rimraf.sync(resolve(outputFolder));
119+
120+
try {
121+
await build(resolve(inputFolder, 'index.es6.js'));
122+
await rm(resolve(outputFolder, 'index.es6.js'));
123+
} catch (error) {
124+
// eslint-disable-next-line no-console
125+
console.error(error);
126+
process.exit(1);
127+
}
128+
129+
(await readdir(outputFolder)).forEach((file) => {
130+
if (!(file.startsWith('dom-') || file.startsWith('popper-'))) {
131+
tasks.push(createMinified(file));
132+
}
133+
});
134+
135+
await Promise.all(tasks).catch((er) => {
136+
// eslint-disable-next-line no-console
137+
console.log(er);
138+
process.exit(1);
139+
});
140+
// eslint-disable-next-line no-console
141+
console.log('ES6 components ready ✅');
142+
143+
try {
144+
await buildLegacy(inputFolder, 'index.es6.js');
145+
const es5File = await readFile(resolve(outputFolder, 'bootstrap.es5.js'), { encoding: 'utf8' });
146+
const mini = await minify(es5File);
147+
await writeFile(resolve(outputFolder, 'bootstrap.es5.min.js'), mini.code, { encoding: 'utf8' });
148+
// eslint-disable-next-line no-console
149+
console.log('Legacy done! ✅');
150+
} catch (error) {
151+
// eslint-disable-next-line no-console
152+
console.error(error);
153+
process.exit(1);
154+
}
155+
})();

build/build-modules-js/compilejs.es6.js

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
const Fs = require('fs');
2+
const { sep } = require('path');
23
const Recurs = require('recursive-readdir');
34
const HandleFile = require('./javascript/handle-file.es6.js');
45

@@ -45,6 +46,9 @@ module.exports.compileJS = (options, path) => {
4546
(files) => {
4647
files.forEach(
4748
(file) => {
49+
if (file.includes(`build${sep}media_source${sep}vendor${sep}bootstrap${sep}js`)) {
50+
return;
51+
}
4852
HandleFile.run(file);
4953
},
5054
(error) => {

build/build-modules-js/settings.json

Lines changed: 0 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -39,13 +39,6 @@
3939
},
4040
"bootstrap": {
4141
"name": "bootstrap",
42-
"js": {
43-
"dist/js/bootstrap.js": "js/bootstrap.js",
44-
"dist/js/bootstrap.min.js": "js/bootstrap.min.js",
45-
"dist/js/bootstrap.bundle.js": "js/bootstrap.bundle.js",
46-
"dist/js/bootstrap.bundle.min.js": "js/bootstrap.bundle.min.js",
47-
"dist/js/bootstrap.bundle.min.js.map": "js/bootstrap.bundle.min.js.map"
48-
},
4942
"css": {
5043
"dist/css/bootstrap.css": "css/bootstrap.css",
5144
"dist/css/bootstrap.min.css": "css/bootstrap.min.css",
@@ -76,22 +69,6 @@
7669
"dependencies": [
7770
"bootstrap.css"
7871
]
79-
},
80-
{
81-
"name": "bootstrap.js",
82-
"type": "script",
83-
"uri": "bootstrap.min.js",
84-
"dependencies": [
85-
"jquery"
86-
]
87-
},
88-
{
89-
"name": "bootstrap.js.bundle",
90-
"type": "script",
91-
"uri": "bootstrap.bundle.min.js",
92-
"dependencies": [
93-
"jquery"
94-
]
9572
}
9673
],
9774
"dependencies": [],

build/media_source/com_joomlaupdate/joomla.asset.json

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,8 @@
1010
"type": "script",
1111
"uri": "com_joomlaupdate/admin-update-default.min.js",
1212
"dependencies": [
13-
"core"
13+
"core",
14+
"jquery"
1415
],
1516
"attributes": {
1617
"defer": true
@@ -21,7 +22,8 @@
2122
"type": "script",
2223
"uri": "com_joomlaupdate/default.min.js",
2324
"dependencies": [
24-
"core"
25+
"core",
26+
"jquery"
2527
],
2628
"attributes": {
2729
"defer": true

0 commit comments

Comments
 (0)