@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.
@@ -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.style.cssText = styles;
33
- assertiveSpan.style.cssText = styles;
34
+ setOutOfViewportStyles(politeSpan);
35
+ setOutOfViewportStyles(assertiveSpan);
34
36
 
35
37
  getSingletonElementInstance("ui5-static-area").appendChild(politeSpan);
36
38
  getSingletonElementInstance("ui5-static-area").appendChild(assertiveSpan);
@@ -27,6 +27,10 @@ const getTabbables = (nodes, tabbables) => {
27
27
  currentNode = Array.from(children).find(node => node.tagName !== "STYLE");
28
28
  }
29
29
 
30
+ if (!currentNode) {
31
+ return;
32
+ }
33
+
30
34
  if (isNodeTabbable(currentNode)) {
31
35
  tabbablesNodes.push(currentNode);
32
36
  }
package/hash.txt CHANGED
@@ -1 +1 @@
1
- 5Qhz3zJBbWjzRmCB93P93wWHNJE=
1
+ wkzVAlQ/fYfPNBufpuaT/G77X18=
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ui5/webcomponents-base",
3
- "version": "1.1.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.1.1",
41
- "chromedriver": "96.0.0",
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
- eventProvider.attachEvent("boot", listener);
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} ${runtime.url}`).join("")}`;
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 "../../dist/FeaturesRegistry.js";
2
- import { isF6Next, isF6Previous } from "../../dist/Keys.js";
3
- import { getFirstFocusableElement } from "../../dist/util/FocusableElements.js";
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.style.cssText = styles;
33
- assertiveSpan.style.cssText = styles;
34
+ setOutOfViewportStyles(politeSpan);
35
+ setOutOfViewportStyles(assertiveSpan);
34
36
 
35
37
  getSingletonElementInstance("ui5-static-area").appendChild(politeSpan);
36
38
  getSingletonElementInstance("ui5-static-area").appendChild(assertiveSpan);
@@ -27,6 +27,10 @@ const getTabbables = (nodes, tabbables) => {
27
27
  currentNode = Array.from(children).find(node => node.tagName !== "STYLE");
28
28
  }
29
29
 
30
+ if (!currentNode) {
31
+ return;
32
+ }
33
+
30
34
  if (isNodeTabbable(currentNode)) {
31
35
  tabbablesNodes.push(currentNode);
32
36
  }
@@ -1,3 +0,0 @@
1
- const metaUrl = import.meta.url;
2
-
3
- export default metaUrl;
@@ -1,3 +0,0 @@
1
- const metaUrl = import.meta.url;
2
-
3
- export default metaUrl;