Skip to content

Commit 07b33e0

Browse files
authored
improvement: externalise webcomponents polyfill (#185)
The polyfill is now loaded via the official webcomponents-loader, instead of imports This allows users of web components to provide their own version and copy of the polyfill This also decreases the bundle size for the playground for modern browsers.
1 parent 1c601fd commit 07b33e0

Some content is hidden

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

62 files changed

+119
-139
lines changed

packages/base/src/sap/ui/webcomponents/base/Bootstrap.js

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,17 @@ const Bootstrap = {
1818
whenDOMReady().then(() => {
1919
insertIconFontFace();
2020
DOMEventHandler.start();
21-
resolve();
21+
22+
if (window.WebComponents && window.WebComponents.waitFor) {
23+
// the polyfill loader is present
24+
window.WebComponents.waitFor(() => {
25+
// the polyfills are loaded, safe to execute code depending on their APIs
26+
resolve();
27+
});
28+
} else {
29+
// polyfill loader missing, modern browsers only
30+
resolve();
31+
}
2232
});
2333
});
2434

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,6 @@
11
// URLSearchParams
22
import "url-search-params-polyfill";
33

4-
// Web Components polyfills
5-
import "../thirdparty/shadydom.min";
6-
import "../thirdparty/custom-elements.min";
74

85
// "pseudo mutation observer" fix for nodeValue
96
import "../compatibility/patchNodeValue";

packages/base/src/sap/ui/webcomponents/base/browsersupport/IE11.js

Lines changed: 0 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,9 @@
22
import "@ui5/webcomponents-core/dist/sap/ui/thirdparty/es6-string-methods";
33

44
// Object
5-
import "../thirdparty/Object.assign";
65
import "../thirdparty/Object.entries";
76

87
// Array
9-
import "../thirdparty/Array.from";
108
import "../thirdparty/Array.prototype.fill";
119
import "../thirdparty/Array.prototype.includes";
1210

@@ -15,28 +13,16 @@ import "../thirdparty/Number.isInteger";
1513
import "../thirdparty/Number.isNaN";
1614
import "../thirdparty/Number.parseInt";
1715

18-
// Symbol
19-
import "../thirdparty/Symbol";
20-
2116
// Element
2217
import "../thirdparty/Element.prototype.matches";
2318
import "../thirdparty/Element.prototype.closest";
2419

25-
// Promise
26-
import "@ui5/webcomponents-core/dist/sap/ui/thirdparty/es6-promise";
27-
2820
// WeakSet
2921
import "../thirdparty/WeakSet";
3022

3123
// fetch
3224
import "../thirdparty/fetch";
3325

34-
// template
35-
import "../thirdparty/template";
36-
37-
// Various event polyfills - preventDefault, window.Event, window.CustomEvent, window.MouseEvent
38-
import "../thirdparty/events-polyfills";
39-
4026
// async - await
4127
import "regenerator-runtime/runtime";
4228

packages/main/package.json

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@
4444
}
4545
},
4646
"scripts": {
47-
"build": "npm-run-all --sequential clean lint build:templates build:samples build:less copy:src build:bundle copy:i18n",
47+
"build": "npm-run-all --sequential clean lint build:templates build:samples build:less copy:src build:bundle copy:i18n copy:webcomponents-polyfill ",
4848
"build:less": "rollup -c rollup.config.less.js",
4949
"build:bundle": "rollup -c --environment ES5_BUILD",
5050
"build:templates": "mkdirp src/build/compiled && node ./lib/hbs2ui5/index.js -d src/ -o src/build/compiled",
@@ -59,7 +59,8 @@
5959
"copy:test": "cpx \"test/**/*.*\" dist/test-resources",
6060
"copy:pages": "cpx \"test/**/pages/*.*\" dist/test-resources",
6161
"copy:qunit": "cpx \"test/**/qunit/*.*\" dist/test-resources",
62-
"dev": "npm-run-all --parallel watch:less watch:templates watch:samples watch:pages watch:qunit watch:src watch:bundle",
62+
"copy:webcomponents-polyfill": "cpx \"../../node_modules/@webcomponents/webcomponentsjs/**/*.*\" dist/webcomponentsjs/",
63+
"dev": "npm-run-all --parallel watch:less watch:templates watch:samples watch:pages watch:qunit watch:src watch:bundle copy:webcomponents-polyfill",
6364
"start": "npm-run-all --parallel serve:static dev",
6465
"lint": "eslint .",
6566
"test:wdio": "npm-run-all --parallel --race serve:static test:wdio-run",
@@ -97,6 +98,7 @@
9798
"@wdio/mocha-framework": "^5.4.13",
9899
"@wdio/spec-reporter": "^5.4.3",
99100
"@wdio/sync": "^5.4.13",
101+
"@webcomponents/webcomponentsjs": "^2.2.7",
100102
"chromedriver": "^2.45.0",
101103
"clean-css": "^4.2.1",
102104
"copy-and-watch": "^0.1.2",

packages/main/src/Suggestions.js

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
import Bootstrap from "@ui5/webcomponents-base/src/sap/ui/webcomponents/base/Bootstrap";
12
import List from "./List";
23
import Popover from "./Popover";
34
import StandardListItem from "./StandardListItem"; // ensure <ui5-li> is loaded
@@ -274,7 +275,9 @@ Suggestions.SCROLL_STEP = 48;
274275

275276
// The List and Popover components would be rendered
276277
// by the issuer component`s template.
277-
List.define();
278-
Popover.define();
278+
Bootstrap.boot().then(() => {
279+
List.define();
280+
Popover.define();
281+
});
279282

280283
export default Suggestions;

packages/main/test/sap/ui/webcomponents/main/pages/Button.html

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -13,11 +13,8 @@
1313
}
1414
</script>
1515

16-
<script src="../../../../../../resources/sap/ui/webcomponents/main/bundle.esm.js"
17-
type="module"
18-
>
19-
</script>
20-
16+
<script src="../../../../../../webcomponentsjs/webcomponents-loader.js"></script>
17+
<script src="../../../../../../resources/sap/ui/webcomponents/main/bundle.esm.js" type="module"></script>
2118
<script nomodule src="../../../../../../resources/sap/ui/webcomponents/main/bundle.es5.js">
2219
</script>
2320
</head>

packages/main/test/sap/ui/webcomponents/main/pages/Calendar.html

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -13,11 +13,8 @@
1313
}
1414
</script>
1515

16-
<script src="../../../../../../resources/sap/ui/webcomponents/main/bundle.esm.js"
17-
type="module"
18-
>
19-
</script>
20-
16+
<script src="../../../../../../webcomponentsjs/webcomponents-loader.js"></script>
17+
<script src="../../../../../../resources/sap/ui/webcomponents/main/bundle.esm.js" type="module"></script>
2118
<script nomodule src="../../../../../../resources/sap/ui/webcomponents/main/bundle.es5.js">
2219
</script>
2320
</head>

packages/main/test/sap/ui/webcomponents/main/pages/Card.html

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -13,11 +13,8 @@
1313
}
1414
</script>
1515

16-
<script src="../../../../../../resources/sap/ui/webcomponents/main/bundle.esm.js"
17-
type="module"
18-
>
19-
</script>
20-
16+
<script src="../../../../../../webcomponentsjs/webcomponents-loader.js"></script>
17+
<script src="../../../../../../resources/sap/ui/webcomponents/main/bundle.esm.js" type="module"></script>
2118
<script nomodule src="../../../../../../resources/sap/ui/webcomponents/main/bundle.es5.js">
2219
</script>
2320
<style>

packages/main/test/sap/ui/webcomponents/main/pages/CheckBox.html

Lines changed: 2 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -6,23 +6,15 @@
66

77
<title>ui5-checkbox</title>
88

9-
<script
10-
src="../../../../../../resources/sap/ui/webcomponents/main/bundle.esm.js"
11-
type="module"
12-
></script>
13-
9+
<script src="../../../../../../webcomponentsjs/webcomponents-loader.js"></script>
10+
<script src="../../../../../../resources/sap/ui/webcomponents/main/bundle.esm.js" type="module"></script>
1411
<script nomodule src="../../../../../../resources/sap/ui/webcomponents/main/bundle.es5.js"></script>
1512

1613
<style>
1714
ui5-checkbox {
1815
border: 1px solid red;
1916
}
2017
</style>
21-
22-
<script data-id="sap-ui-config" type="application/json">
23-
{
24-
}
25-
</script>
2618
</head>
2719

2820
<body>

packages/main/test/sap/ui/webcomponents/main/pages/DatePicker.html

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -7,11 +7,8 @@
77

88
<script src="diffable-html.js"></script>
99

10-
<script src="../../../../../../resources/sap/ui/webcomponents/main/bundle.esm.js"
11-
type="module"
12-
>
13-
</script>
14-
10+
<script src="../../../../../../webcomponentsjs/webcomponents-loader.js"></script>
11+
<script src="../../../../../../resources/sap/ui/webcomponents/main/bundle.esm.js" type="module"></script>
1512
<script nomodule src="../../../../../../resources/sap/ui/webcomponents/main/bundle.es5.js">
1613
</script>
1714

0 commit comments

Comments
 (0)