@ui5/webcomponents-base 1.1.1 → 1.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +53 -0
- package/dist/Boot.js +3 -5
- package/dist/CustomElementsRegistry.js +1 -1
- package/dist/Device.js +4 -1
- package/dist/Keys.js +15 -0
- package/dist/Runtimes.js +0 -2
- package/dist/features/F6Navigation.js +3 -3
- package/dist/generated/VersionInfo.js +3 -3
- package/dist/resources/bundle.esm.js +8 -8
- package/dist/resources/bundle.esm.js.map +1 -1
- package/dist/util/InvisibleMessage.js +11 -9
- package/dist/util/TabbableElements.js +4 -0
- package/hash.txt +1 -1
- package/package.json +3 -3
- package/src/Boot.js +3 -5
- package/src/CustomElementsRegistry.js +1 -1
- package/src/Device.js +4 -1
- package/src/Keys.js +15 -0
- package/src/Runtimes.js +0 -2
- package/src/features/F6Navigation.js +3 -3
- package/src/util/InvisibleMessage.js +11 -9
- package/src/util/TabbableElements.js +4 -0
- package/dist/util/metaUrl.js +0 -3
- package/src/util/metaUrl.js +0 -3
|
@@ -5,18 +5,20 @@ import { attachBoot } from "../Boot.js";
|
|
|
5
5
|
let politeSpan;
|
|
6
6
|
let assertiveSpan;
|
|
7
7
|
|
|
8
|
+
const setOutOfViewportStyles = el => {
|
|
9
|
+
el.style.position = "absolute";
|
|
10
|
+
el.style.clip = "rect(1px,1px,1px,1px)";
|
|
11
|
+
el.style.userSelect = "none";
|
|
12
|
+
el.style.left = "-1000px";
|
|
13
|
+
el.style.top = "-1000px";
|
|
14
|
+
el.style.pointerEvents = "none";
|
|
15
|
+
};
|
|
16
|
+
|
|
8
17
|
attachBoot(() => {
|
|
9
18
|
if (politeSpan && assertiveSpan) {
|
|
10
19
|
return;
|
|
11
20
|
}
|
|
12
21
|
|
|
13
|
-
const styles = `position: absolute;
|
|
14
|
-
clip: rect(1px,1px,1px,1px);
|
|
15
|
-
user-select: none;
|
|
16
|
-
left: -1000px;
|
|
17
|
-
top: -1000px;
|
|
18
|
-
pointer-events: none;`;
|
|
19
|
-
|
|
20
22
|
politeSpan = document.createElement("span");
|
|
21
23
|
assertiveSpan = document.createElement("span");
|
|
22
24
|
|
|
@@ -29,8 +31,8 @@ attachBoot(() => {
|
|
|
29
31
|
politeSpan.setAttribute("role", "alert");
|
|
30
32
|
assertiveSpan.setAttribute("role", "alert");
|
|
31
33
|
|
|
32
|
-
politeSpan
|
|
33
|
-
assertiveSpan
|
|
34
|
+
setOutOfViewportStyles(politeSpan);
|
|
35
|
+
setOutOfViewportStyles(assertiveSpan);
|
|
34
36
|
|
|
35
37
|
getSingletonElementInstance("ui5-static-area").appendChild(politeSpan);
|
|
36
38
|
getSingletonElementInstance("ui5-static-area").appendChild(assertiveSpan);
|
package/hash.txt
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
wkzVAlQ/fYfPNBufpuaT/G77X18=
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ui5/webcomponents-base",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.2.1",
|
|
4
4
|
"description": "UI5 Web Components: webcomponents.base",
|
|
5
5
|
"author": "SAP SE (https://www.sap.com)",
|
|
6
6
|
"license": "Apache-2.0",
|
|
@@ -37,8 +37,8 @@
|
|
|
37
37
|
"devDependencies": {
|
|
38
38
|
"@buxlabs/amd-to-es6": "0.16.1",
|
|
39
39
|
"@openui5/sap.ui.core": "1.94.0",
|
|
40
|
-
"@ui5/webcomponents-tools": "1.
|
|
41
|
-
"chromedriver": "
|
|
40
|
+
"@ui5/webcomponents-tools": "1.2.1",
|
|
41
|
+
"chromedriver": "98.0.0",
|
|
42
42
|
"clean-css": "^5.2.2",
|
|
43
43
|
"copy-and-watch": "^0.1.5",
|
|
44
44
|
"eslint": "^7.22.0",
|
package/src/Boot.js
CHANGED
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import EventProvider from "./EventProvider.js";
|
|
2
1
|
import whenDOMReady from "./util/whenDOMReady.js";
|
|
3
2
|
import insertFontFace from "./FontFace.js";
|
|
4
3
|
import insertSystemCSSVars from "./SystemCSSVars.js";
|
|
@@ -8,15 +7,15 @@ import { registerCurrentRuntime } from "./Runtimes.js";
|
|
|
8
7
|
import { getFeature } from "./FeaturesRegistry.js";
|
|
9
8
|
|
|
10
9
|
let bootPromise;
|
|
11
|
-
const eventProvider = new EventProvider();
|
|
12
10
|
|
|
13
11
|
/**
|
|
14
12
|
* Attach a callback that will be executed on boot
|
|
15
13
|
* @public
|
|
16
14
|
* @param listener
|
|
17
15
|
*/
|
|
18
|
-
const attachBoot = listener => {
|
|
19
|
-
|
|
16
|
+
const attachBoot = async listener => {
|
|
17
|
+
await boot();
|
|
18
|
+
listener();
|
|
20
19
|
};
|
|
21
20
|
|
|
22
21
|
const boot = async () => {
|
|
@@ -46,7 +45,6 @@ const boot = async () => {
|
|
|
46
45
|
OpenUI5Support && OpenUI5Support.attachListeners();
|
|
47
46
|
insertFontFace();
|
|
48
47
|
insertSystemCSSVars();
|
|
49
|
-
await eventProvider.fireEventAsync("boot");
|
|
50
48
|
|
|
51
49
|
resolve();
|
|
52
50
|
});
|
|
@@ -48,7 +48,7 @@ const displayFailedRegistrations = () => {
|
|
|
48
48
|
let message = `Multiple UI5 Web Components instances detected.`;
|
|
49
49
|
|
|
50
50
|
if (allRuntimes.length > 1) {
|
|
51
|
-
message = `${message}\nLoading order (versions before 1.1.0 not listed): ${allRuntimes.map(runtime => `\n${runtime.description}
|
|
51
|
+
message = `${message}\nLoading order (versions before 1.1.0 not listed): ${allRuntimes.map(runtime => `\n${runtime.description}`).join("")}`;
|
|
52
52
|
}
|
|
53
53
|
|
|
54
54
|
Object.keys(Failures).forEach(otherRuntimeIndex => {
|
package/src/Device.js
CHANGED
|
@@ -8,7 +8,10 @@ const windows = navigator.platform.indexOf("Win") !== -1;
|
|
|
8
8
|
const iOS = navigator.platform.match(/iPhone|iPad|iPod/) || (navigator.userAgent.match(/Mac/) && "ontouchend" in document);
|
|
9
9
|
const android = !windows && /Android/.test(ua);
|
|
10
10
|
const androidPhone = android && /(?=android)(?=.*mobile)/i.test(ua);
|
|
11
|
-
const ipad = /ipad/i.test(ua);
|
|
11
|
+
const ipad = /ipad/i.test(ua) || (/Macintosh/i.test(ua) && "ontouchend" in document);
|
|
12
|
+
// With iOS 13 the string 'iPad' was removed from the user agent string through a browser setting, which is applied on all sites by default:
|
|
13
|
+
// "Request Desktop Website -> All websites" (for more infos see: https://forums.developer.apple.com/thread/119186).
|
|
14
|
+
// Therefore the OS is detected as MACINTOSH instead of iOS and the device is a tablet if the Device.support.touch is true.
|
|
12
15
|
|
|
13
16
|
let windowsVersion;
|
|
14
17
|
let webkitVersion;
|
package/src/Keys.js
CHANGED
|
@@ -139,6 +139,10 @@ const isLeftShift = event => (event.key ? (event.key === "ArrowLeft" || event.ke
|
|
|
139
139
|
|
|
140
140
|
const isRightShift = event => (event.key ? (event.key === "ArrowRight" || event.key === "Right") : event.keyCode === KeyCodes.ARROW_RIGHT) && checkModifierKeys(event, false, false, true);
|
|
141
141
|
|
|
142
|
+
const isLeftShiftCtrl = event => (event.key ? (event.key === "ArrowLeft" || event.key === "Left") : event.keyCode === KeyCodes.ARROW_LEFT) && checkModifierKeys(event, true, false, true);
|
|
143
|
+
|
|
144
|
+
const isRightShiftCtrl = event => (event.key ? (event.key === "ArrowRight" || event.key === "Right") : event.keyCode === KeyCodes.ARROW_RIGHT) && checkModifierKeys(event, true, false, true);
|
|
145
|
+
|
|
142
146
|
const isUpShiftCtrl = event => (event.key ? (event.key === "ArrowUp" || event.key === "Up") : event.keyCode === KeyCodes.ARROW_UP) && checkModifierKeys(event, true, false, true);
|
|
143
147
|
|
|
144
148
|
const isDownShiftCtrl = event => (event.key ? (event.key === "ArrowDown" || event.key === "Down") : event.keyCode === KeyCodes.ARROW_DOWN) && checkModifierKeys(event, true, false, true);
|
|
@@ -149,8 +153,12 @@ const isEnd = event => (event.key ? event.key === "End" : event.keyCode === KeyC
|
|
|
149
153
|
|
|
150
154
|
const isHomeCtrl = event => (event.key ? event.key === "Home" : event.keyCode === KeyCodes.HOME) && checkModifierKeys(event, true, false, false);
|
|
151
155
|
|
|
156
|
+
const isHomeShift = event => (event.key ? event.key === "Home" : event.keyCode === KeyCodes.HOME) && checkModifierKeys(event, false, false, true);
|
|
157
|
+
|
|
152
158
|
const isEndCtrl = event => (event.key ? event.key === "End" : event.keyCode === KeyCodes.END) && checkModifierKeys(event, true, false, false);
|
|
153
159
|
|
|
160
|
+
const isEndShift = event => (event.key ? event.key === "End" : event.keyCode === KeyCodes.END) && checkModifierKeys(event, false, false, true);
|
|
161
|
+
|
|
154
162
|
const isEscape = event => (event.key ? event.key === "Escape" || event.key === "Esc" : event.keyCode === KeyCodes.ESCAPE) && !hasModifierKeys(event);
|
|
155
163
|
|
|
156
164
|
const isTabNext = event => (event.key ? event.key === "Tab" : event.keyCode === KeyCodes.TAB) && !hasModifierKeys(event);
|
|
@@ -209,6 +217,8 @@ const isShowByArrows = event => {
|
|
|
209
217
|
|
|
210
218
|
const isShift = event => event.key === "Shift" || event.keyCode === KeyCodes.SHIFT;
|
|
211
219
|
|
|
220
|
+
const isCtrlA = event => ((event.key === "A" || event.key === "a") || event.which === KeyCodes.A) && checkModifierKeys(event, true, false, false);
|
|
221
|
+
|
|
212
222
|
const hasModifierKeys = event => event.shiftKey || event.altKey || getCtrlKey(event);
|
|
213
223
|
|
|
214
224
|
const getCtrlKey = event => !!(event.metaKey || event.ctrlKey); // double negation doesn't have effect on boolean but ensures null and undefined are equivalent to false.
|
|
@@ -234,6 +244,8 @@ export {
|
|
|
234
244
|
isDownAlt,
|
|
235
245
|
isLeftShift,
|
|
236
246
|
isRightShift,
|
|
247
|
+
isLeftShiftCtrl,
|
|
248
|
+
isRightShiftCtrl,
|
|
237
249
|
isUpShiftCtrl,
|
|
238
250
|
isDownShiftCtrl,
|
|
239
251
|
isHome,
|
|
@@ -242,6 +254,8 @@ export {
|
|
|
242
254
|
isMinus,
|
|
243
255
|
isHomeCtrl,
|
|
244
256
|
isEndCtrl,
|
|
257
|
+
isHomeShift,
|
|
258
|
+
isEndShift,
|
|
245
259
|
isEscape,
|
|
246
260
|
isTabNext,
|
|
247
261
|
isTabPrevious,
|
|
@@ -262,4 +276,5 @@ export {
|
|
|
262
276
|
isPageUpShiftCtrl,
|
|
263
277
|
isPageDownShiftCtrl,
|
|
264
278
|
isShift,
|
|
279
|
+
isCtrlA,
|
|
265
280
|
};
|
package/src/Runtimes.js
CHANGED
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import VersionInfo from "./generated/VersionInfo.js";
|
|
2
2
|
import getSharedResource from "./getSharedResource.js";
|
|
3
|
-
import metaUrl from "./util/metaUrl.js"; // eslint-disable-line
|
|
4
3
|
|
|
5
4
|
let currentRuntimeIndex;
|
|
6
5
|
let currentRuntimeAlias = "";
|
|
@@ -22,7 +21,6 @@ const registerCurrentRuntime = () => {
|
|
|
22
21
|
currentRuntimeIndex = Runtimes.length;
|
|
23
22
|
Runtimes.push({
|
|
24
23
|
...VersionInfo,
|
|
25
|
-
url: metaUrl,
|
|
26
24
|
alias: currentRuntimeAlias,
|
|
27
25
|
description: `Runtime ${currentRuntimeIndex} - ver ${VersionInfo.version}${currentRuntimeAlias ? ` (${currentRuntimeAlias})` : ""}`,
|
|
28
26
|
});
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { registerFeature } from "
|
|
2
|
-
import { isF6Next, isF6Previous } from "
|
|
3
|
-
import { getFirstFocusableElement } from "
|
|
1
|
+
import { registerFeature } from "../FeaturesRegistry.js";
|
|
2
|
+
import { isF6Next, isF6Previous } from "../Keys.js";
|
|
3
|
+
import { getFirstFocusableElement } from "../util/FocusableElements.js";
|
|
4
4
|
|
|
5
5
|
class F6Navigation {
|
|
6
6
|
init() {
|
|
@@ -5,18 +5,20 @@ import { attachBoot } from "../Boot.js";
|
|
|
5
5
|
let politeSpan;
|
|
6
6
|
let assertiveSpan;
|
|
7
7
|
|
|
8
|
+
const setOutOfViewportStyles = el => {
|
|
9
|
+
el.style.position = "absolute";
|
|
10
|
+
el.style.clip = "rect(1px,1px,1px,1px)";
|
|
11
|
+
el.style.userSelect = "none";
|
|
12
|
+
el.style.left = "-1000px";
|
|
13
|
+
el.style.top = "-1000px";
|
|
14
|
+
el.style.pointerEvents = "none";
|
|
15
|
+
};
|
|
16
|
+
|
|
8
17
|
attachBoot(() => {
|
|
9
18
|
if (politeSpan && assertiveSpan) {
|
|
10
19
|
return;
|
|
11
20
|
}
|
|
12
21
|
|
|
13
|
-
const styles = `position: absolute;
|
|
14
|
-
clip: rect(1px,1px,1px,1px);
|
|
15
|
-
user-select: none;
|
|
16
|
-
left: -1000px;
|
|
17
|
-
top: -1000px;
|
|
18
|
-
pointer-events: none;`;
|
|
19
|
-
|
|
20
22
|
politeSpan = document.createElement("span");
|
|
21
23
|
assertiveSpan = document.createElement("span");
|
|
22
24
|
|
|
@@ -29,8 +31,8 @@ attachBoot(() => {
|
|
|
29
31
|
politeSpan.setAttribute("role", "alert");
|
|
30
32
|
assertiveSpan.setAttribute("role", "alert");
|
|
31
33
|
|
|
32
|
-
politeSpan
|
|
33
|
-
assertiveSpan
|
|
34
|
+
setOutOfViewportStyles(politeSpan);
|
|
35
|
+
setOutOfViewportStyles(assertiveSpan);
|
|
34
36
|
|
|
35
37
|
getSingletonElementInstance("ui5-static-area").appendChild(politeSpan);
|
|
36
38
|
getSingletonElementInstance("ui5-static-area").appendChild(assertiveSpan);
|
package/dist/util/metaUrl.js
DELETED
package/src/util/metaUrl.js
DELETED