@ui5/webcomponents-base 0.0.0-4a28ecb24 → 0.0.0-4b9b0ab7c
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 +64 -0
- package/bundle.esm.js +3 -1
- package/dist/Boot.d.ts +4 -3
- package/dist/Boot.js +25 -4
- package/dist/Boot.js.map +1 -1
- package/dist/Device.js +109 -34
- package/dist/Device.js.map +1 -1
- package/dist/InitialConfiguration.js +1 -1
- package/dist/InitialConfiguration.js.map +1 -1
- package/dist/UI5Element.d.ts +18 -14
- package/dist/UI5Element.js +7 -20
- package/dist/UI5Element.js.map +1 -1
- package/dist/api.json +1 -1
- package/dist/asset-registries/Icons.d.ts +1 -1
- package/dist/asset-registries/Icons.js +21 -21
- package/dist/asset-registries/Icons.js.map +1 -1
- package/dist/asset-registries/Illustrations.d.ts +1 -1
- package/dist/asset-registries/Themes.d.ts +1 -0
- package/dist/asset-registries/Themes.js +2 -0
- package/dist/asset-registries/Themes.js.map +1 -1
- package/dist/assets/Boot.6335ce08.css +1 -0
- package/dist/assets/Boot.e74b2a49.js +9 -0
- package/dist/assets/bundle.esm.abaf0306.js +52 -0
- package/dist/assets-meta/IconCollectionsAlias.d.ts +24 -10
- package/dist/assets-meta/IconCollectionsAlias.js +29 -9
- package/dist/assets-meta/IconCollectionsAlias.js.map +1 -1
- package/dist/config/FormatSettings.d.ts +5 -1
- package/dist/config/FormatSettings.js +5 -1
- package/dist/config/FormatSettings.js.map +1 -1
- package/dist/config/Icons.d.ts +43 -18
- package/dist/config/Icons.js +80 -25
- package/dist/config/Icons.js.map +1 -1
- package/dist/config/RTL.js +3 -0
- package/dist/config/RTL.js.map +1 -1
- package/dist/decorators/customElement.d.ts +17 -2
- package/dist/decorators/customElement.js +20 -5
- package/dist/decorators/customElement.js.map +1 -1
- package/dist/decorators/event.js +6 -6
- package/dist/decorators/event.js.map +1 -1
- package/dist/decorators/property.js +6 -6
- package/dist/decorators/property.js.map +1 -1
- package/dist/decorators/slot.js +7 -7
- package/dist/decorators/slot.js.map +1 -1
- package/dist/delegate/ResizeHandler.d.ts +2 -1
- package/dist/delegate/ResizeHandler.js +3 -1
- package/dist/delegate/ResizeHandler.js.map +1 -1
- package/dist/features/F6Navigation.d.ts +3 -0
- package/dist/features/F6Navigation.js +77 -38
- package/dist/features/F6Navigation.js.map +1 -1
- package/dist/features/LegacyDateFormats.d.ts +18 -0
- package/dist/features/LegacyDateFormats.js +20 -0
- package/dist/features/LegacyDateFormats.js.map +1 -0
- package/dist/features/OpenUI5Support.d.ts +2 -0
- package/dist/features/OpenUI5Support.js +1 -0
- package/dist/features/OpenUI5Support.js.map +1 -1
- package/dist/generated/VersionInfo.js +3 -3
- package/dist/getSharedResource.js +9 -1
- package/dist/getSharedResource.js.map +1 -1
- package/dist/renderer/LitRenderer.d.ts +3 -3
- package/dist/renderer/LitRenderer.js.map +1 -1
- package/dist/theming/CustomStyle.js +7 -5
- package/dist/theming/CustomStyle.js.map +1 -1
- package/dist/theming/ThemeRegistered.d.ts +5 -0
- package/dist/theming/ThemeRegistered.js +14 -0
- package/dist/theming/ThemeRegistered.js.map +1 -0
- package/dist/theming/applyTheme.js +1 -0
- package/dist/theming/applyTheme.js.map +1 -1
- package/dist/theming/getStylesString.d.ts +1 -1
- package/dist/types/AnimationMode.d.ts +1 -1
- package/dist/types/AnimationMode.js +1 -1
- package/dist/types/CSSColor.d.ts +0 -1
- package/dist/types/CSSColor.js +0 -1
- package/dist/types/CSSColor.js.map +1 -1
- package/dist/types/CalendarType.d.ts +1 -1
- package/dist/types/CalendarType.js +1 -1
- package/dist/types/Float.d.ts +0 -1
- package/dist/types/Float.js +0 -1
- package/dist/types/Float.js.map +1 -1
- package/dist/types/Integer.d.ts +0 -1
- package/dist/types/Integer.js +0 -1
- package/dist/types/Integer.js.map +1 -1
- package/dist/types/InvisibleMessageMode.d.ts +1 -1
- package/dist/types/InvisibleMessageMode.js +1 -1
- package/dist/types/ItemNavigationBehavior.d.ts +1 -1
- package/dist/types/ItemNavigationBehavior.js +1 -1
- package/dist/types/NavigationMode.d.ts +1 -1
- package/dist/types/NavigationMode.js +1 -1
- package/dist/types/ValueState.d.ts +1 -1
- package/dist/types/ValueState.js +1 -1
- package/dist/updateShadowRoot.js +4 -0
- package/dist/updateShadowRoot.js.map +1 -1
- package/dist/util/AriaLabelHelper.d.ts +10 -1
- package/dist/util/AriaLabelHelper.js +135 -8
- package/dist/util/AriaLabelHelper.js.map +1 -1
- package/dist/util/getClassCopy.d.ts +7 -9
- package/package-scripts.js +6 -2
- package/package.json +2 -2
- package/src/Boot.ts +29 -5
- package/src/Device.ts +113 -34
- package/src/InitialConfiguration.ts +1 -1
- package/src/UI5Element.ts +28 -25
- package/src/asset-registries/Icons.ts +26 -27
- package/src/asset-registries/Illustrations.ts +1 -1
- package/src/asset-registries/Themes.ts +7 -0
- package/src/assets-meta/IconCollectionsAlias.ts +32 -9
- package/src/config/FormatSettings.ts +16 -2
- package/src/config/Icons.ts +92 -25
- package/src/config/RTL.ts +4 -0
- package/src/decorators/customElement.ts +45 -5
- package/src/decorators/event.ts +6 -6
- package/src/decorators/property.ts +6 -6
- package/src/decorators/slot.ts +7 -7
- package/src/delegate/ResizeHandler.ts +7 -2
- package/src/features/F6Navigation.ts +98 -44
- package/src/features/LegacyDateFormats.ts +40 -0
- package/src/features/OpenUI5Support.ts +5 -0
- package/src/getSharedResource.ts +10 -1
- package/src/renderer/LitRenderer.ts +2 -2
- package/src/theming/CustomStyle.ts +7 -5
- package/src/theming/ThemeRegistered.ts +24 -0
- package/src/theming/applyTheme.ts +2 -0
- package/src/theming/getEffectiveLinksHrefs.ts +1 -1
- package/src/theming/getStylesString.ts +1 -1
- package/src/types/AnimationMode.ts +1 -1
- package/src/types/CSSColor.ts +0 -1
- package/src/types/CalendarType.ts +1 -1
- package/src/types/Float.ts +0 -1
- package/src/types/Integer.ts +0 -1
- package/src/types/InvisibleMessageMode.ts +1 -1
- package/src/types/ItemNavigationBehavior.ts +1 -1
- package/src/types/NavigationMode.ts +1 -1
- package/src/types/ValueState.ts +1 -1
- package/src/updateShadowRoot.ts +5 -0
- package/src/util/AriaLabelHelper.ts +167 -12
- package/dist/assets/bundle.esm.2e322362.js +0 -56
- package/dist/decorators/fastNavigation.d.ts +0 -7
- package/dist/decorators/fastNavigation.js +0 -13
- package/dist/decorators/fastNavigation.js.map +0 -1
- package/dist/decorators/languageAware.d.ts +0 -7
- package/dist/decorators/languageAware.js +0 -13
- package/dist/decorators/languageAware.js.map +0 -1
- package/dist/decorators/themeAware.d.ts +0 -7
- package/dist/decorators/themeAware.js +0 -13
- package/dist/decorators/themeAware.js.map +0 -1
- package/src/decorators/fastNavigation.ts +0 -14
- package/src/decorators/languageAware.ts +0 -14
- package/src/decorators/themeAware.ts +0 -14
package/dist/types/Float.d.ts
CHANGED
package/dist/types/Float.js
CHANGED
package/dist/types/Float.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Float.js","sourceRoot":"","sources":["../../src/types/Float.ts"],"names":[],"mappings":"AACA,OAAO,QAAQ,MAAM,eAAe,CAAC;AAErC
|
|
1
|
+
{"version":3,"file":"Float.js","sourceRoot":"","sources":["../../src/types/Float.ts"],"names":[],"mappings":"AACA,OAAO,QAAQ,MAAM,eAAe,CAAC;AAErC;;;;;;;;;GASG;AACH,MAAM,KAAM,SAAQ,QAAQ;IAC3B,MAAM,CAAU,OAAO,CAAC,KAAU;QACjC,OAAO,MAAM,CAAC,KAAK,CAAC,KAAK,KAAK,CAAC;IAChC,CAAC;IAED,MAAM,CAAU,mBAAmB,CAAC,cAAsB;QACzD,OAAO,UAAU,CAAC,cAAc,CAAC,CAAC;IACnC,CAAC;CACD;AAED,eAAe,KAAK,CAAC"}
|
package/dist/types/Integer.d.ts
CHANGED
package/dist/types/Integer.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Integer.js","sourceRoot":"","sources":["../../src/types/Integer.ts"],"names":[],"mappings":"AACA,OAAO,QAAQ,MAAM,eAAe,CAAC;AAErC
|
|
1
|
+
{"version":3,"file":"Integer.js","sourceRoot":"","sources":["../../src/types/Integer.ts"],"names":[],"mappings":"AACA,OAAO,QAAQ,MAAM,eAAe,CAAC;AAErC;;;;;;;;;GASG;AACH,MAAM,OAAQ,SAAQ,QAAQ;IAC7B,MAAM,CAAU,OAAO,CAAC,KAAU;QACjC,OAAO,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;IAChC,CAAC;IAED,MAAM,CAAU,mBAAmB,CAAC,cAAsB;QACzD,OAAO,QAAQ,CAAC,cAAc,CAAC,CAAC;IACjC,CAAC;CACD;AAED,eAAe,OAAO,CAAC"}
|
package/dist/types/ValueState.js
CHANGED
package/dist/updateShadowRoot.js
CHANGED
|
@@ -28,6 +28,10 @@ const updateShadowRoot = (element, forStaticArea = false) => {
|
|
|
28
28
|
else { // FF, Safari
|
|
29
29
|
styleStrOrHrefsArr = getEffectiveStyle(ctor, forStaticArea);
|
|
30
30
|
}
|
|
31
|
+
if (ctor.renderer) {
|
|
32
|
+
ctor.renderer(renderResult, shadowRoot, styleStrOrHrefsArr, forStaticArea, { host: element });
|
|
33
|
+
return;
|
|
34
|
+
}
|
|
31
35
|
ctor.render(renderResult, shadowRoot, styleStrOrHrefsArr, forStaticArea, { host: element });
|
|
32
36
|
};
|
|
33
37
|
export default updateShadowRoot;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"updateShadowRoot.js","sourceRoot":"","sources":["../src/updateShadowRoot.ts"],"names":[],"mappings":"AAAA,OAAO,eAAe,MAAM,+BAA+B,CAAC;AAC5D,OAAO,qBAAqB,MAAM,oCAAoC,CAAC;AACvE,OAAO,iBAAiB,MAAM,gCAAgC,CAAC;AAC/D,OAAO,sBAAsB,MAAM,qCAAqC,CAAC;AACzE,OAAO,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAG1C;;;;GAIG;AACH,MAAM,gBAAgB,GAAG,CAAC,OAAmB,EAAE,aAAa,GAAG,KAAK,EAAE,EAAE;IACvE,IAAI,kBAAkB,CAAC;IACvB,MAAM,IAAI,GAAG,OAAO,CAAC,WAAgC,CAAC;IACtD,MAAM,YAAY,GAAG,aAAa,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC,UAAU,CAAC;IACvE,MAAM,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC,CAAC;IACpC,MAAM,UAAU,GAAG,aAAa,CAAC,CAAC,CAAC,OAAO,CAAC,cAAe,CAAC,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC;IAC3F,MAAM,YAAY,GAAG,eAAe,CAAC,QAAS,EAAE,OAAO,CAAC,CAAC,CAAC,kDAAkD;IAE5G,IAAI,CAAC,UAAU,EAAE;QAChB,OAAO,CAAC,IAAI,CAAC,mCAAmC,CAAC,CAAC,CAAC,sBAAsB;QACzE,OAAO;KACP;IAED,IAAI,cAAc,EAAE,EAAE;QACrB,kBAAkB,GAAG,sBAAsB,CAAC,IAAI,EAAE,aAAa,CAAC,CAAC;KACjE;SAAM,IAAI,QAAQ,CAAC,kBAAkB,EAAE,EAAE,SAAS;QAClD,UAAU,CAAC,kBAAkB,GAAG,qBAAqB,CAAC,IAAI,EAAE,aAAa,CAAC,CAAC;KAC3E;SAAM,EAAE,aAAa;QACrB,kBAAkB,GAAG,iBAAiB,CAAC,IAAI,EAAE,aAAa,CAAC,CAAC;KAC5D;IAED,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,UAAU,EAAE,kBAAkB,EAAE,aAAa,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;AAC7F,CAAC,CAAC;AAEF,eAAe,gBAAgB,CAAC"}
|
|
1
|
+
{"version":3,"file":"updateShadowRoot.js","sourceRoot":"","sources":["../src/updateShadowRoot.ts"],"names":[],"mappings":"AAAA,OAAO,eAAe,MAAM,+BAA+B,CAAC;AAC5D,OAAO,qBAAqB,MAAM,oCAAoC,CAAC;AACvE,OAAO,iBAAiB,MAAM,gCAAgC,CAAC;AAC/D,OAAO,sBAAsB,MAAM,qCAAqC,CAAC;AACzE,OAAO,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAG1C;;;;GAIG;AACH,MAAM,gBAAgB,GAAG,CAAC,OAAmB,EAAE,aAAa,GAAG,KAAK,EAAE,EAAE;IACvE,IAAI,kBAAkB,CAAC;IACvB,MAAM,IAAI,GAAG,OAAO,CAAC,WAAgC,CAAC;IACtD,MAAM,YAAY,GAAG,aAAa,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC,UAAU,CAAC;IACvE,MAAM,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC,CAAC;IACpC,MAAM,UAAU,GAAG,aAAa,CAAC,CAAC,CAAC,OAAO,CAAC,cAAe,CAAC,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC;IAC3F,MAAM,YAAY,GAAG,eAAe,CAAC,QAAS,EAAE,OAAO,CAAC,CAAC,CAAC,kDAAkD;IAE5G,IAAI,CAAC,UAAU,EAAE;QAChB,OAAO,CAAC,IAAI,CAAC,mCAAmC,CAAC,CAAC,CAAC,sBAAsB;QACzE,OAAO;KACP;IAED,IAAI,cAAc,EAAE,EAAE;QACrB,kBAAkB,GAAG,sBAAsB,CAAC,IAAI,EAAE,aAAa,CAAC,CAAC;KACjE;SAAM,IAAI,QAAQ,CAAC,kBAAkB,EAAE,EAAE,SAAS;QAClD,UAAU,CAAC,kBAAkB,GAAG,qBAAqB,CAAC,IAAI,EAAE,aAAa,CAAC,CAAC;KAC3E;SAAM,EAAE,aAAa;QACrB,kBAAkB,GAAG,iBAAiB,CAAC,IAAI,EAAE,aAAa,CAAC,CAAC;KAC5D;IAED,IAAI,IAAI,CAAC,QAAQ,EAAE;QAClB,IAAI,CAAC,QAAQ,CAAC,YAAY,EAAE,UAAU,EAAE,kBAAkB,EAAE,aAAa,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;QAC9F,OAAO;KACP;IAED,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,UAAU,EAAE,kBAAkB,EAAE,aAAa,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;AAC7F,CAAC,CAAC;AAEF,eAAe,gBAAgB,CAAC"}
|
|
@@ -1,6 +1,15 @@
|
|
|
1
|
+
import UI5Element from "../UI5Element.js";
|
|
2
|
+
type MutationCallback = () => void;
|
|
1
3
|
declare const getEffectiveAriaLabelText: (el: HTMLElement) => string | undefined;
|
|
4
|
+
/**
|
|
5
|
+
*
|
|
6
|
+
* @param {HTMLElement} el Defines the HTMLElement, for which you need to get all related texts
|
|
7
|
+
*/
|
|
8
|
+
declare const getAllAccessibleNameRefTexts: (el: HTMLElement) => string;
|
|
2
9
|
/**
|
|
3
10
|
* @param {HTMLElement} el Defines the HTMLElement, for which you need to get all related "label for" texts
|
|
4
11
|
*/
|
|
5
12
|
declare const getAssociatedLabelForTexts: (el: HTMLElement) => string | undefined;
|
|
6
|
-
|
|
13
|
+
declare const registerUI5Element: (el: UI5Element, callback: MutationCallback) => void;
|
|
14
|
+
declare const deregisterUI5Element: (el: UI5Element) => void;
|
|
15
|
+
export { getEffectiveAriaLabelText, getAssociatedLabelForTexts, registerUI5Element, deregisterUI5Element, getAllAccessibleNameRefTexts, };
|
|
@@ -1,3 +1,11 @@
|
|
|
1
|
+
const associatedElements = new WeakMap();
|
|
2
|
+
const registeredElements = new WeakMap();
|
|
3
|
+
const observerOptions = {
|
|
4
|
+
attributes: true,
|
|
5
|
+
childList: true,
|
|
6
|
+
characterData: true,
|
|
7
|
+
subtree: true,
|
|
8
|
+
};
|
|
1
9
|
const getEffectiveAriaLabelText = (el) => {
|
|
2
10
|
const accessibleEl = el;
|
|
3
11
|
if (!accessibleEl.accessibleNameRef) {
|
|
@@ -6,31 +14,59 @@ const getEffectiveAriaLabelText = (el) => {
|
|
|
6
14
|
}
|
|
7
15
|
return undefined;
|
|
8
16
|
}
|
|
9
|
-
return
|
|
17
|
+
return getAllAccessibleNameRefTexts(el);
|
|
10
18
|
};
|
|
11
19
|
/**
|
|
12
20
|
*
|
|
13
21
|
* @param {HTMLElement} el Defines the HTMLElement, for which you need to get all related texts
|
|
14
22
|
*/
|
|
15
|
-
const
|
|
16
|
-
const ids = el.accessibleNameRef
|
|
23
|
+
const getAllAccessibleNameRefTexts = (el) => {
|
|
24
|
+
const ids = el.accessibleNameRef?.split(" ") ?? [];
|
|
17
25
|
const owner = el.getRootNode();
|
|
18
26
|
let result = "";
|
|
19
27
|
ids.forEach((elementId, index) => {
|
|
20
28
|
const element = owner.querySelector(`[id='${elementId}']`);
|
|
21
|
-
|
|
22
|
-
if (
|
|
23
|
-
result +=
|
|
29
|
+
const text = `${element && element.textContent ? element.textContent : ""}`;
|
|
30
|
+
if (text) {
|
|
31
|
+
result += text;
|
|
32
|
+
if (index < ids.length - 1) {
|
|
33
|
+
result += " ";
|
|
34
|
+
}
|
|
24
35
|
}
|
|
25
36
|
});
|
|
26
37
|
return result;
|
|
27
38
|
};
|
|
39
|
+
const _getAllAssociatedElementsFromDOM = (el) => {
|
|
40
|
+
const set = new Set();
|
|
41
|
+
// adding labels with attribute for matching the el.id
|
|
42
|
+
const labelsForAssociated = _getAssociatedLabels(el);
|
|
43
|
+
labelsForAssociated.forEach(itm => {
|
|
44
|
+
set.add(itm);
|
|
45
|
+
});
|
|
46
|
+
// adding other elements that id is the same as accessibleNameRef value
|
|
47
|
+
const value = el["accessibleNameRef"];
|
|
48
|
+
const ids = value?.split(" ") ?? [];
|
|
49
|
+
ids.forEach(id => {
|
|
50
|
+
const refEl = _getReferencedElementById(el, id);
|
|
51
|
+
if (refEl) {
|
|
52
|
+
set.add(refEl);
|
|
53
|
+
}
|
|
54
|
+
});
|
|
55
|
+
return Array.from(set);
|
|
56
|
+
};
|
|
57
|
+
const _getAssociatedLabels = (el) => {
|
|
58
|
+
const labels = el.getRootNode().querySelectorAll(`[for="${el.id}"]`);
|
|
59
|
+
return Array.from(labels);
|
|
60
|
+
};
|
|
61
|
+
const _getReferencedElementById = (el, elementId) => {
|
|
62
|
+
return el.getRootNode().querySelector(`[id='${elementId}']`);
|
|
63
|
+
};
|
|
28
64
|
/**
|
|
29
65
|
* @param {HTMLElement} el Defines the HTMLElement, for which you need to get all related "label for" texts
|
|
30
66
|
*/
|
|
31
67
|
const getAssociatedLabelForTexts = (el) => {
|
|
32
68
|
const results = [];
|
|
33
|
-
const labels =
|
|
69
|
+
const labels = _getAssociatedLabels(el);
|
|
34
70
|
labels.forEach((label) => {
|
|
35
71
|
const labelText = label.textContent;
|
|
36
72
|
labelText && results.push(labelText);
|
|
@@ -40,5 +76,96 @@ const getAssociatedLabelForTexts = (el) => {
|
|
|
40
76
|
}
|
|
41
77
|
return undefined;
|
|
42
78
|
};
|
|
43
|
-
|
|
79
|
+
const _createInvalidationCallback = (el) => {
|
|
80
|
+
const invalidationCallback = (changeInfo) => {
|
|
81
|
+
if (!(changeInfo && changeInfo.type === "property" && changeInfo.name === "accessibleNameRef")) {
|
|
82
|
+
return;
|
|
83
|
+
}
|
|
84
|
+
const registeredElement = registeredElements.get(el);
|
|
85
|
+
if (!registeredElement) {
|
|
86
|
+
return;
|
|
87
|
+
}
|
|
88
|
+
const oldAssociatedElements = registeredElement.observedElements;
|
|
89
|
+
const newAssociatedElements = _getAllAssociatedElementsFromDOM(el);
|
|
90
|
+
oldAssociatedElements.forEach(oldElement => {
|
|
91
|
+
if (!newAssociatedElements.includes(oldElement)) {
|
|
92
|
+
_removeObservedElementFromRegisteredElement(registeredElement, oldElement);
|
|
93
|
+
}
|
|
94
|
+
});
|
|
95
|
+
newAssociatedElements.forEach(newElement => {
|
|
96
|
+
if (!oldAssociatedElements.includes(newElement)) {
|
|
97
|
+
_addObservedElementToRegisteredElement(registeredElement, newElement);
|
|
98
|
+
registeredElement.observedElements.push(newElement);
|
|
99
|
+
}
|
|
100
|
+
});
|
|
101
|
+
registeredElement?.callback();
|
|
102
|
+
};
|
|
103
|
+
return invalidationCallback;
|
|
104
|
+
};
|
|
105
|
+
const registerUI5Element = (el, callback) => {
|
|
106
|
+
if (registeredElements.has(el)) {
|
|
107
|
+
return;
|
|
108
|
+
}
|
|
109
|
+
const allAssociatedElements = _getAllAssociatedElementsFromDOM(el);
|
|
110
|
+
const invalidationCallback = _createInvalidationCallback(el);
|
|
111
|
+
const registeredElement = {
|
|
112
|
+
host: el,
|
|
113
|
+
observedElements: allAssociatedElements,
|
|
114
|
+
callback,
|
|
115
|
+
invalidationCallback,
|
|
116
|
+
};
|
|
117
|
+
registeredElements.set(el, registeredElement);
|
|
118
|
+
el.attachInvalidate(invalidationCallback);
|
|
119
|
+
allAssociatedElements.forEach((element) => {
|
|
120
|
+
_addObservedElementToRegisteredElement(registeredElement, element);
|
|
121
|
+
});
|
|
122
|
+
callback();
|
|
123
|
+
};
|
|
124
|
+
const _addObservedElementToRegisteredElement = (registeredElement, element) => {
|
|
125
|
+
let associatedElement = associatedElements.get(element);
|
|
126
|
+
if (!associatedElement) {
|
|
127
|
+
associatedElement = { observer: null, callbacks: [] };
|
|
128
|
+
const observer = new MutationObserver(() => {
|
|
129
|
+
const callbacks = associatedElement.callbacks;
|
|
130
|
+
callbacks.forEach(callback => {
|
|
131
|
+
callback();
|
|
132
|
+
});
|
|
133
|
+
const domEl = document.getElementById(element.id);
|
|
134
|
+
// if no longer should be observed from this registeredElement, remove it
|
|
135
|
+
if (!(registeredElement.host.id === element.getAttribute("for") || domEl)) {
|
|
136
|
+
_removeObservedElementFromRegisteredElement(registeredElement, element);
|
|
137
|
+
}
|
|
138
|
+
});
|
|
139
|
+
associatedElement.observer = observer;
|
|
140
|
+
observer.observe(element, observerOptions);
|
|
141
|
+
associatedElements.set(element, associatedElement);
|
|
142
|
+
}
|
|
143
|
+
if (!associatedElement.callbacks.includes(registeredElement.callback)) {
|
|
144
|
+
associatedElement.callbacks.push(registeredElement.callback);
|
|
145
|
+
}
|
|
146
|
+
};
|
|
147
|
+
const _removeObservedElementFromRegisteredElement = (registeredElement, element) => {
|
|
148
|
+
const associatedElement = associatedElements.get(element);
|
|
149
|
+
if (associatedElement) {
|
|
150
|
+
associatedElement.callbacks = associatedElement.callbacks.filter(itm => itm !== registeredElement.callback);
|
|
151
|
+
if (!associatedElement.callbacks.length) {
|
|
152
|
+
associatedElement.observer?.disconnect();
|
|
153
|
+
associatedElements.delete(element);
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
registeredElement.observedElements = registeredElement.observedElements.filter(itm => itm !== element);
|
|
157
|
+
};
|
|
158
|
+
const deregisterUI5Element = (el) => {
|
|
159
|
+
const registeredElement = registeredElements.get(el);
|
|
160
|
+
if (!registeredElement) {
|
|
161
|
+
return;
|
|
162
|
+
}
|
|
163
|
+
const oldObservedElements = [...registeredElement.observedElements];
|
|
164
|
+
oldObservedElements.forEach(observedElement => {
|
|
165
|
+
_removeObservedElementFromRegisteredElement(registeredElement, observedElement);
|
|
166
|
+
});
|
|
167
|
+
el.detachInvalidate(registeredElement.invalidationCallback);
|
|
168
|
+
registeredElements.delete(el);
|
|
169
|
+
};
|
|
170
|
+
export { getEffectiveAriaLabelText, getAssociatedLabelForTexts, registerUI5Element, deregisterUI5Element, getAllAccessibleNameRefTexts, };
|
|
44
171
|
//# sourceMappingURL=AriaLabelHelper.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AriaLabelHelper.js","sourceRoot":"","sources":["../../src/util/AriaLabelHelper.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"AriaLabelHelper.js","sourceRoot":"","sources":["../../src/util/AriaLabelHelper.ts"],"names":[],"mappings":"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"}
|
|
@@ -63,7 +63,7 @@ declare const getClassCopy: (klass: typeof UI5Element, constructorCallback: () =
|
|
|
63
63
|
focus(focusOptions?: FocusOptions | undefined): Promise<void>;
|
|
64
64
|
fireEvent<T>(name: string, data?: T | undefined, cancelable?: boolean, bubbles?: boolean): boolean;
|
|
65
65
|
_fireEvent<T_1>(name: string, data?: T_1 | undefined, cancelable?: boolean, bubbles?: boolean): boolean;
|
|
66
|
-
getSlottedNodes(slotName: string):
|
|
66
|
+
getSlottedNodes<T_2 = Node>(slotName: string): T_2[];
|
|
67
67
|
readonly effectiveDir: string | undefined;
|
|
68
68
|
readonly isUI5Element: boolean;
|
|
69
69
|
readonly classes: import("../types.js").ClassMap;
|
|
@@ -174,21 +174,21 @@ declare const getClassCopy: (klass: typeof UI5Element, constructorCallback: () =
|
|
|
174
174
|
readonly parentNode: ParentNode | null;
|
|
175
175
|
readonly previousSibling: ChildNode | null;
|
|
176
176
|
textContent: string | null;
|
|
177
|
-
appendChild<
|
|
177
|
+
appendChild<T_3 extends Node>(node: T_3): T_3;
|
|
178
178
|
cloneNode(deep?: boolean | undefined): Node;
|
|
179
179
|
compareDocumentPosition(other: Node): number;
|
|
180
180
|
contains(other: Node | null): boolean;
|
|
181
181
|
getRootNode(options?: GetRootNodeOptions | undefined): Node;
|
|
182
182
|
hasChildNodes(): boolean;
|
|
183
|
-
insertBefore<
|
|
183
|
+
insertBefore<T_4 extends Node>(node: T_4, child: Node | null): T_4;
|
|
184
184
|
isDefaultNamespace(namespace: string | null): boolean;
|
|
185
185
|
isEqualNode(otherNode: Node | null): boolean;
|
|
186
186
|
isSameNode(otherNode: Node | null): boolean;
|
|
187
187
|
lookupNamespaceURI(prefix: string | null): string | null;
|
|
188
188
|
lookupPrefix(namespace: string | null): string | null;
|
|
189
189
|
normalize(): void;
|
|
190
|
-
removeChild<
|
|
191
|
-
replaceChild<
|
|
190
|
+
removeChild<T_5 extends Node>(child: T_5): T_5;
|
|
191
|
+
replaceChild<T_6 extends Node>(node: Node, child: T_6): T_6;
|
|
192
192
|
readonly ATTRIBUTE_NODE: number;
|
|
193
193
|
readonly CDATA_SECTION_NODE: number;
|
|
194
194
|
readonly COMMENT_NODE: number;
|
|
@@ -379,9 +379,8 @@ declare const getClassCopy: (klass: typeof UI5Element, constructorCallback: () =
|
|
|
379
379
|
template?: import("../renderer/executeTemplate.js").TemplateFunction | undefined;
|
|
380
380
|
staticAreaTemplate?: import("../renderer/executeTemplate.js").TemplateFunction | undefined;
|
|
381
381
|
_metadata: import("../UI5ElementMetadata.js").default;
|
|
382
|
-
render: (
|
|
383
|
-
|
|
384
|
-
}) => void;
|
|
382
|
+
render: import("../UI5Element.js").Renderer;
|
|
383
|
+
renderer?: import("../UI5Element.js").Renderer | undefined;
|
|
385
384
|
readonly observedAttributes: string[];
|
|
386
385
|
_needsShadowDOM(): boolean;
|
|
387
386
|
_needsStaticArea(): boolean;
|
|
@@ -395,6 +394,5 @@ declare const getClassCopy: (klass: typeof UI5Element, constructorCallback: () =
|
|
|
395
394
|
onDefine(): Promise<void>;
|
|
396
395
|
define(): Promise<typeof UI5Element>;
|
|
397
396
|
getMetadata(): import("../UI5ElementMetadata.js").default;
|
|
398
|
-
decoratorMetadata: import("../UI5ElementMetadata.js").Metadata;
|
|
399
397
|
};
|
|
400
398
|
export default getClassCopy;
|
package/package-scripts.js
CHANGED
|
@@ -16,7 +16,7 @@ const eslintConfig = `--config ${require.resolve("@ui5/webcomponents-tools/compo
|
|
|
16
16
|
const scripts = {
|
|
17
17
|
clean: "rimraf jsdoc-dist && rimraf src/generated && rimraf dist && rimraf .port",
|
|
18
18
|
lint: `eslint . ${eslintConfig}`,
|
|
19
|
-
prepare: "nps clean integrate copy generateAssetParameters generateVersionInfo generateStyles generateTemplates typescript generateAPI",
|
|
19
|
+
prepare: "cross-env UI5_TS=true nps clean integrate copy generateAssetParameters generateVersionInfo generateStyles generateTemplates typescript generateAPI",
|
|
20
20
|
typescript: "tsc",
|
|
21
21
|
integrate: {
|
|
22
22
|
default: "nps integrate.copy-used-modules integrate.replace-amd integrate.amd-to-es6 integrate.esm-abs-to-rel integrate.third-party",
|
|
@@ -58,7 +58,11 @@ const scripts = {
|
|
|
58
58
|
styles: 'chokidar "src/css/*.css" -c "nps generateStyles"'
|
|
59
59
|
},
|
|
60
60
|
start: "nps prepare watch.withBundle",
|
|
61
|
-
test:
|
|
61
|
+
test: {
|
|
62
|
+
default: 'concurrently "nps test.wdio"',
|
|
63
|
+
ssr: `mocha test/ssr`,
|
|
64
|
+
wdio: `node "${LIB}/test-runner/test-runner.js"`
|
|
65
|
+
},
|
|
62
66
|
};
|
|
63
67
|
|
|
64
68
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ui5/webcomponents-base",
|
|
3
|
-
"version": "0.0.0-
|
|
3
|
+
"version": "0.0.0-4b9b0ab7c",
|
|
4
4
|
"description": "UI5 Web Components: webcomponents.base",
|
|
5
5
|
"author": "SAP SE (https://www.sap.com)",
|
|
6
6
|
"license": "Apache-2.0",
|
|
@@ -36,7 +36,7 @@
|
|
|
36
36
|
"devDependencies": {
|
|
37
37
|
"@buxlabs/amd-to-es6": "0.16.1",
|
|
38
38
|
"@openui5/sap.ui.core": "1.109.0",
|
|
39
|
-
"@ui5/webcomponents-tools": "0.0.0-
|
|
39
|
+
"@ui5/webcomponents-tools": "0.0.0-4b9b0ab7c",
|
|
40
40
|
"chromedriver": "109.0.0",
|
|
41
41
|
"clean-css": "^5.2.2",
|
|
42
42
|
"copy-and-watch": "^0.1.5",
|
package/src/Boot.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import whenDOMReady from "./util/whenDOMReady.js";
|
|
2
|
+
import EventProvider from "./EventProvider.js";
|
|
2
3
|
import insertFontFace from "./FontFace.js";
|
|
3
4
|
import insertSystemCSSVars from "./SystemCSSVars.js";
|
|
4
5
|
import { getTheme } from "./config/Theme.js";
|
|
@@ -8,16 +9,24 @@ import { getFeature } from "./FeaturesRegistry.js";
|
|
|
8
9
|
import type OpenUI5Support from "./features/OpenUI5Support.js";
|
|
9
10
|
import type F6Navigation from "./features/F6Navigation.js";
|
|
10
11
|
import { PromiseResolve } from "./types.js";
|
|
12
|
+
import { attachThemeRegistered } from "./theming/ThemeRegistered.js";
|
|
11
13
|
|
|
14
|
+
let booted = false;
|
|
12
15
|
let bootPromise: Promise<void>;
|
|
16
|
+
const eventProvider = new EventProvider<void, void>();
|
|
13
17
|
|
|
14
18
|
/**
|
|
15
|
-
*
|
|
19
|
+
* Attaches a callback that will be executed after boot finishes.
|
|
20
|
+
* <b>Note:</b> If the framework already booted, the callback will be immediately executed.
|
|
16
21
|
* @public
|
|
17
|
-
* @param listener
|
|
22
|
+
* @param { Function } listener
|
|
18
23
|
*/
|
|
19
|
-
const attachBoot =
|
|
20
|
-
|
|
24
|
+
const attachBoot = (listener: () => void) => {
|
|
25
|
+
if (!booted) {
|
|
26
|
+
eventProvider.attachEvent("boot", listener);
|
|
27
|
+
return;
|
|
28
|
+
}
|
|
29
|
+
|
|
21
30
|
listener();
|
|
22
31
|
};
|
|
23
32
|
|
|
@@ -27,6 +36,19 @@ const boot = async (): Promise<void> => {
|
|
|
27
36
|
}
|
|
28
37
|
|
|
29
38
|
const bootExecutor = async (resolve: PromiseResolve) => {
|
|
39
|
+
if (typeof document === "undefined") {
|
|
40
|
+
resolve();
|
|
41
|
+
return;
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
attachThemeRegistered(() => {
|
|
45
|
+
if (!booted) {
|
|
46
|
+
return;
|
|
47
|
+
}
|
|
48
|
+
console.log("apply theme when theme registered after boot"); // eslint-disable-line
|
|
49
|
+
applyTheme(getTheme());
|
|
50
|
+
});
|
|
51
|
+
|
|
30
52
|
registerCurrentRuntime();
|
|
31
53
|
|
|
32
54
|
const openUI5Support = getFeature<typeof OpenUI5Support>("OpenUI5Support");
|
|
@@ -48,10 +70,12 @@ const boot = async (): Promise<void> => {
|
|
|
48
70
|
insertSystemCSSVars();
|
|
49
71
|
|
|
50
72
|
resolve();
|
|
73
|
+
|
|
74
|
+
booted = true;
|
|
75
|
+
await eventProvider.fireEventAsync("boot");
|
|
51
76
|
};
|
|
52
77
|
|
|
53
78
|
bootPromise = new Promise(bootExecutor as (resolve: PromiseResolve) => void);
|
|
54
|
-
|
|
55
79
|
return bootPromise;
|
|
56
80
|
};
|
|
57
81
|
|