@ui5/webcomponents-base 0.0.0-41ab6cd28 → 0.0.0-4237771ff
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 +394 -0
- package/README.md +2 -1
- package/dist/.tsbuildinfo +1 -0
- package/dist/AssetRegistry.d.ts +2 -2
- package/dist/AssetRegistry.js +2 -2
- package/dist/AssetRegistry.js.map +1 -1
- package/dist/Boot.js +1 -1
- package/dist/Boot.js.map +1 -1
- package/dist/CustomElementsScope.d.ts +4 -4
- package/dist/CustomElementsScope.js +2 -2
- package/dist/CustomElementsScope.js.map +1 -1
- package/dist/CustomElementsScopeUtils.d.ts +8 -1
- package/dist/CustomElementsScopeUtils.js +13 -1
- package/dist/CustomElementsScopeUtils.js.map +1 -1
- package/dist/Device.d.ts +2 -1
- package/dist/Device.js +10 -1
- package/dist/Device.js.map +1 -1
- package/dist/FontFace.js +1 -1
- package/dist/FontFace.js.map +1 -1
- package/dist/InitialConfiguration.d.ts +2 -1
- package/dist/InitialConfiguration.js +7 -2
- package/dist/InitialConfiguration.js.map +1 -1
- package/dist/Keys.d.ts +5 -1
- package/dist/Keys.js +109 -106
- package/dist/Keys.js.map +1 -1
- package/dist/ManagedStyles.d.ts +5 -4
- package/dist/ManagedStyles.js +92 -23
- package/dist/ManagedStyles.js.map +1 -1
- package/dist/StaticAreaItem.d.ts +1 -0
- package/dist/StaticAreaItem.js +7 -7
- package/dist/StaticAreaItem.js.map +1 -1
- package/dist/UI5Element.d.ts +16 -2
- package/dist/UI5Element.js +31 -15
- package/dist/UI5Element.js.map +1 -1
- package/dist/UI5ElementMetadata.d.ts +1 -0
- package/dist/UI5ElementMetadata.js +2 -2
- package/dist/UI5ElementMetadata.js.map +1 -1
- package/dist/api.json +1 -1
- package/dist/asset-registries/Icons.d.ts +4 -3
- package/dist/asset-registries/Icons.js +28 -17
- package/dist/asset-registries/Icons.js.map +1 -1
- package/dist/asset-registries/Illustrations.d.ts +1 -0
- package/dist/asset-registries/Illustrations.js +57 -19
- package/dist/asset-registries/Illustrations.js.map +1 -1
- package/dist/asset-registries/Themes.d.ts +4 -3
- package/dist/asset-registries/Themes.js +26 -10
- package/dist/asset-registries/Themes.js.map +1 -1
- package/dist/asset-registries/i18n.js +2 -1
- package/dist/asset-registries/i18n.js.map +1 -1
- package/dist/{assets-meta → asset-registries/util}/IconCollectionsAlias.d.ts +1 -2
- package/dist/{assets-meta → asset-registries/util}/IconCollectionsAlias.js +1 -2
- package/dist/asset-registries/util/IconCollectionsAlias.js.map +1 -0
- package/dist/asset-registries/util/IconCollectionsByTheme.d.ts +20 -0
- package/dist/asset-registries/util/IconCollectionsByTheme.js +42 -0
- package/dist/asset-registries/util/IconCollectionsByTheme.js.map +1 -0
- package/dist/asset-registries/util/getIconCollectionByTheme.d.ts +13 -0
- package/dist/asset-registries/util/getIconCollectionByTheme.js +29 -0
- package/dist/asset-registries/util/getIconCollectionByTheme.js.map +1 -0
- package/dist/config/CalendarType.d.ts +8 -1
- package/dist/config/CalendarType.js +18 -2
- package/dist/config/CalendarType.js.map +1 -1
- package/dist/config/Icons.d.ts +2 -17
- package/dist/config/Icons.js +1 -60
- package/dist/config/Icons.js.map +1 -1
- package/dist/connectToComponent.d.ts +9 -0
- package/dist/connectToComponent.js +59 -0
- package/dist/connectToComponent.js.map +1 -0
- package/dist/css/FontFace.css +47 -17
- package/dist/delegate/ItemNavigation.d.ts +1 -0
- package/dist/delegate/ItemNavigation.js +4 -5
- package/dist/delegate/ItemNavigation.js.map +1 -1
- package/dist/delegate/ScrollEnablement.js +2 -2
- package/dist/delegate/ScrollEnablement.js.map +1 -1
- package/dist/features/OpenUI5Enablement.d.ts +1 -1
- package/dist/features/OpenUI5Support.d.ts +13 -3
- package/dist/features/OpenUI5Support.js +89 -33
- package/dist/features/OpenUI5Support.js.map +1 -1
- package/dist/generated/AssetParameters.d.ts +6 -0
- package/dist/generated/AssetParameters.js +3 -10
- package/dist/generated/AssetParameters.js.map +1 -0
- package/dist/generated/VersionInfo.d.ts +10 -0
- package/dist/generated/VersionInfo.js +9 -8
- package/dist/generated/VersionInfo.js.map +1 -0
- package/dist/generated/css/FontFace.css.js +1 -1
- package/dist/generated/css/FontFace.css.js.map +1 -1
- package/dist/generated/templates/elements/WithComplexTemplateTemplate.lit.d.ts +1 -1
- package/dist/i18nBundle.d.ts +1 -1
- package/dist/i18nBundle.js.map +1 -1
- package/dist/renderer/LitRenderer.d.ts +2 -2
- package/dist/sap/ui/thirdparty/caja-html-sanitizer.js +111 -96
- package/dist/theming/applyTheme.js +5 -5
- package/dist/theming/applyTheme.js.map +1 -1
- package/dist/types/CSSSize.d.ts +15 -0
- package/dist/types/CSSSize.js +18 -0
- package/dist/types/CSSSize.js.map +1 -0
- package/dist/types/InvisibleMessageMode.d.ts +5 -4
- package/dist/types/InvisibleMessageMode.js +4 -5
- package/dist/types/InvisibleMessageMode.js.map +1 -1
- package/dist/updateShadowRoot.js +2 -1
- package/dist/updateShadowRoot.js.map +1 -1
- package/dist/util/ColorConversion.js +200 -195
- package/dist/util/ColorConversion.js.map +1 -1
- package/dist/util/InvisibleMessage.d.ts +1 -1
- package/dist/util/InvisibleMessage.js.map +1 -1
- package/dist/util/PopupUtils.js +1 -1
- package/dist/util/PopupUtils.js.map +1 -1
- package/dist/util/getClassCopy.d.ts +47 -31
- package/dist/util/getParentElement.d.ts +2 -0
- package/dist/util/getParentElement.js +5 -0
- package/dist/util/getParentElement.js.map +1 -0
- package/dist/util/isElementContainingBlock.d.ts +2 -0
- package/dist/util/isElementContainingBlock.js +11 -0
- package/dist/util/isElementContainingBlock.js.map +1 -0
- package/index.js +3 -3
- package/lib/generate-asset-parameters/index.js +2 -2
- package/lib/generate-version-info/index.js +2 -2
- package/package-scripts.cjs +6 -7
- package/package.json +8 -5
- package/src/css/FontFace.css +47 -17
- package/tsconfig.json +3 -0
- package/dist/assets/Boot.34b7cea0.css +0 -1
- package/dist/assets/Boot.e98db706.js +0 -9
- package/dist/assets/bundle.esm.027ecc55.js +0 -50
- package/dist/assets-meta/IconCollectionsAlias.js.map +0 -1
package/dist/ManagedStyles.js
CHANGED
|
@@ -1,70 +1,122 @@
|
|
|
1
1
|
import createStyleInHead from "./util/createStyleInHead.js";
|
|
2
2
|
import createLinkInHead from "./util/createLinkInHead.js";
|
|
3
3
|
import { shouldUseLinks, getUrl } from "./CSP.js";
|
|
4
|
-
import {
|
|
4
|
+
import { isSafari } from "./Device.js";
|
|
5
|
+
import { getCurrentRuntimeIndex, compareRuntimes } from "./Runtimes.js";
|
|
5
6
|
const getStyleId = (name, value) => {
|
|
6
7
|
return value ? `${name}|${value}` : name;
|
|
7
8
|
};
|
|
8
|
-
const
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
content = content.replaceAll("[_ui5host]", `[_ui5rt${getCurrentRuntimeIndex()}]`);
|
|
9
|
+
const shouldUpdate = (runtimeIndex) => {
|
|
10
|
+
if (runtimeIndex === undefined) {
|
|
11
|
+
return true;
|
|
12
12
|
}
|
|
13
|
+
return compareRuntimes(getCurrentRuntimeIndex(), parseInt(runtimeIndex)) === 1; // 1 means the current is newer, 0 means the same, -1 means the resource's runtime is newer
|
|
14
|
+
};
|
|
15
|
+
const createStyle = (data, name, value = "", theme) => {
|
|
16
|
+
const content = typeof data === "string" ? data : data.content;
|
|
17
|
+
const currentRuntimeIndex = getCurrentRuntimeIndex();
|
|
13
18
|
if (shouldUseLinks()) {
|
|
14
19
|
const attributes = {};
|
|
15
20
|
attributes[name] = value;
|
|
21
|
+
if (theme) {
|
|
22
|
+
attributes["data-ui5-runtime-index"] = currentRuntimeIndex;
|
|
23
|
+
attributes["data-ui5-theme"] = theme;
|
|
24
|
+
}
|
|
16
25
|
const href = getUrl(data.packageName, data.fileName);
|
|
17
26
|
createLinkInHead(href, attributes);
|
|
18
27
|
}
|
|
19
|
-
else if (document.adoptedStyleSheets) {
|
|
28
|
+
else if (document.adoptedStyleSheets && !isSafari()) {
|
|
20
29
|
const stylesheet = new CSSStyleSheet();
|
|
21
30
|
stylesheet.replaceSync(content);
|
|
22
31
|
stylesheet._ui5StyleId = getStyleId(name, value); // set an id so that we can find the style later
|
|
32
|
+
if (theme) {
|
|
33
|
+
stylesheet._ui5RuntimeIndex = currentRuntimeIndex;
|
|
34
|
+
stylesheet._ui5Theme = theme;
|
|
35
|
+
}
|
|
23
36
|
document.adoptedStyleSheets = [...document.adoptedStyleSheets, stylesheet];
|
|
24
37
|
}
|
|
25
38
|
else {
|
|
26
39
|
const attributes = {};
|
|
27
40
|
attributes[name] = value;
|
|
41
|
+
if (theme) {
|
|
42
|
+
attributes["data-ui5-runtime-index"] = currentRuntimeIndex;
|
|
43
|
+
attributes["data-ui5-theme"] = theme;
|
|
44
|
+
}
|
|
28
45
|
createStyleInHead(content, attributes);
|
|
29
46
|
}
|
|
30
47
|
};
|
|
31
|
-
const updateStyle = (data, name, value = "") => {
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
content = content.replaceAll("[_ui5host]", `[_ui5rt${getCurrentRuntimeIndex()}]`);
|
|
35
|
-
}
|
|
48
|
+
const updateStyle = (data, name, value = "", theme) => {
|
|
49
|
+
const content = typeof data === "string" ? data : data.content;
|
|
50
|
+
const currentRuntimeIndex = getCurrentRuntimeIndex();
|
|
36
51
|
if (shouldUseLinks()) {
|
|
37
52
|
const link = document.querySelector(`head>link[${name}="${value}"]`);
|
|
38
|
-
|
|
53
|
+
const href = getUrl(data.packageName, data.fileName);
|
|
54
|
+
if (!theme) {
|
|
55
|
+
link.href = href;
|
|
56
|
+
}
|
|
57
|
+
else {
|
|
58
|
+
const linkRuntimeIndex = link.getAttribute("data-ui5-runtime-index") || undefined;
|
|
59
|
+
const linkTheme = link.getAttribute("data-ui5-theme");
|
|
60
|
+
if (linkTheme !== theme || shouldUpdate(linkRuntimeIndex)) {
|
|
61
|
+
link.href = href;
|
|
62
|
+
link.setAttribute("data-ui5-runtime-index", String(currentRuntimeIndex));
|
|
63
|
+
link.setAttribute("data-ui5-theme", theme);
|
|
64
|
+
}
|
|
65
|
+
}
|
|
39
66
|
}
|
|
40
|
-
else if (document.adoptedStyleSheets) {
|
|
67
|
+
else if (document.adoptedStyleSheets && !isSafari()) {
|
|
41
68
|
const stylesheet = document.adoptedStyleSheets.find(sh => sh._ui5StyleId === getStyleId(name, value));
|
|
42
|
-
if (stylesheet) {
|
|
69
|
+
if (!stylesheet) {
|
|
70
|
+
return;
|
|
71
|
+
}
|
|
72
|
+
if (!theme) {
|
|
43
73
|
stylesheet.replaceSync(content || "");
|
|
44
74
|
}
|
|
75
|
+
else {
|
|
76
|
+
const stylesheetRuntimeIndex = stylesheet._ui5RuntimeIndex;
|
|
77
|
+
const stylesheetTheme = stylesheet._ui5Theme;
|
|
78
|
+
if (stylesheetTheme !== theme || shouldUpdate(stylesheetRuntimeIndex)) {
|
|
79
|
+
stylesheet.replaceSync(content || "");
|
|
80
|
+
stylesheet._ui5RuntimeIndex = String(currentRuntimeIndex);
|
|
81
|
+
stylesheet._ui5Theme = theme;
|
|
82
|
+
}
|
|
83
|
+
}
|
|
45
84
|
}
|
|
46
85
|
else {
|
|
47
86
|
const style = document.querySelector(`head>style[${name}="${value}"]`);
|
|
48
|
-
if (style) {
|
|
87
|
+
if (!style) {
|
|
88
|
+
return;
|
|
89
|
+
}
|
|
90
|
+
if (!theme) {
|
|
49
91
|
style.textContent = content || "";
|
|
50
92
|
}
|
|
93
|
+
else {
|
|
94
|
+
const styleRuntimeIndex = style.getAttribute("data-ui5-runtime-index") || undefined;
|
|
95
|
+
const styleTheme = style.getAttribute("data-ui5-theme");
|
|
96
|
+
if (styleTheme !== theme || shouldUpdate(styleRuntimeIndex)) {
|
|
97
|
+
style.textContent = content || "";
|
|
98
|
+
style.setAttribute("data-ui5-runtime-index", String(currentRuntimeIndex));
|
|
99
|
+
style.setAttribute("data-ui5-theme", theme);
|
|
100
|
+
}
|
|
101
|
+
}
|
|
51
102
|
}
|
|
52
103
|
};
|
|
53
104
|
const hasStyle = (name, value = "") => {
|
|
54
105
|
if (shouldUseLinks()) {
|
|
55
106
|
return !!document.querySelector(`head>link[${name}="${value}"]`);
|
|
56
107
|
}
|
|
57
|
-
|
|
58
|
-
|
|
108
|
+
const styleElement = document.querySelector(`head>style[${name}="${value}"]`);
|
|
109
|
+
if (document.adoptedStyleSheets && !isSafari()) {
|
|
110
|
+
return !!styleElement || !!document.adoptedStyleSheets.find(sh => sh._ui5StyleId === getStyleId(name, value));
|
|
59
111
|
}
|
|
60
|
-
return !!
|
|
112
|
+
return !!styleElement;
|
|
61
113
|
};
|
|
62
114
|
const removeStyle = (name, value = "") => {
|
|
63
115
|
if (shouldUseLinks()) {
|
|
64
116
|
const linkElement = document.querySelector(`head>link[${name}="${value}"]`);
|
|
65
117
|
linkElement?.parentElement?.removeChild(linkElement);
|
|
66
118
|
}
|
|
67
|
-
else if (document.adoptedStyleSheets) {
|
|
119
|
+
else if (document.adoptedStyleSheets && !isSafari()) {
|
|
68
120
|
document.adoptedStyleSheets = document.adoptedStyleSheets.filter(sh => sh._ui5StyleId !== getStyleId(name, value));
|
|
69
121
|
}
|
|
70
122
|
else {
|
|
@@ -72,13 +124,30 @@ const removeStyle = (name, value = "") => {
|
|
|
72
124
|
styleElement?.parentElement?.removeChild(styleElement);
|
|
73
125
|
}
|
|
74
126
|
};
|
|
75
|
-
const createOrUpdateStyle = (data, name, value = "") => {
|
|
127
|
+
const createOrUpdateStyle = (data, name, value = "", theme) => {
|
|
76
128
|
if (hasStyle(name, value)) {
|
|
77
|
-
updateStyle(data, name, value);
|
|
129
|
+
updateStyle(data, name, value, theme);
|
|
78
130
|
}
|
|
79
131
|
else {
|
|
80
|
-
createStyle(data, name, value);
|
|
132
|
+
createStyle(data, name, value, theme);
|
|
133
|
+
}
|
|
134
|
+
};
|
|
135
|
+
const mergeStyles = (style1, style2) => {
|
|
136
|
+
if (style1 === undefined) {
|
|
137
|
+
return style2;
|
|
138
|
+
}
|
|
139
|
+
if (style2 === undefined) {
|
|
140
|
+
return style1;
|
|
141
|
+
}
|
|
142
|
+
const style2Content = typeof style2 === "string" ? style2 : style2.content;
|
|
143
|
+
if (typeof style1 === "string") {
|
|
144
|
+
return `${style1} ${style2Content}`;
|
|
81
145
|
}
|
|
146
|
+
return {
|
|
147
|
+
content: `${style1.content} ${style2Content}`,
|
|
148
|
+
packageName: style1.packageName,
|
|
149
|
+
fileName: style1.fileName,
|
|
150
|
+
};
|
|
82
151
|
};
|
|
83
|
-
export { createStyle, hasStyle, updateStyle, removeStyle, createOrUpdateStyle, };
|
|
152
|
+
export { createStyle, hasStyle, updateStyle, removeStyle, createOrUpdateStyle, mergeStyles, };
|
|
84
153
|
//# sourceMappingURL=ManagedStyles.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ManagedStyles.js","sourceRoot":"","sources":["../src/ManagedStyles.ts"],"names":[],"mappings":"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","sourcesContent":["import createStyleInHead from \"./util/createStyleInHead.js\";\nimport createLinkInHead from \"./util/createLinkInHead.js\";\nimport { shouldUseLinks, getUrl } from \"./CSP.js\";\nimport { StyleData, StyleDataCSP } from \"./types.js\";\nimport { getCurrentRuntimeIndex } from \"./Runtimes.js\";\n\nconst getStyleId = (name: string, value: string) => {\n\treturn value ? `${name}|${value}` : name;\n};\n\nconst createStyle = (data: StyleData, name: string, value = \"\") => {\n\tlet content = typeof data === \"string\" ? data : data.content;\n\n\tif (content.includes(\"[_ui5host]\")) {\n\t\tcontent = content.replaceAll(\"[_ui5host]\", `[_ui5rt${getCurrentRuntimeIndex()}]`);\n\t}\n\n\tif (shouldUseLinks()) {\n\t\tconst attributes = {} as Record<string, any>;\n\t\tattributes[name] = value;\n\t\tconst href = getUrl((data as StyleDataCSP).packageName, (data as StyleDataCSP).fileName);\n\t\tcreateLinkInHead(href, attributes);\n\t} else if (document.adoptedStyleSheets) {\n\t\tconst stylesheet = new CSSStyleSheet();\n\t\tstylesheet.replaceSync(content);\n\t\t(stylesheet as Record<string, any>)._ui5StyleId = getStyleId(name, value); // set an id so that we can find the style later\n\t\tdocument.adoptedStyleSheets = [...document.adoptedStyleSheets, stylesheet];\n\t} else {\n\t\tconst attributes = {} as Record<string, any>;\n\t\tattributes[name] = value;\n\t\tcreateStyleInHead(content, attributes);\n\t}\n};\n\nconst updateStyle = (data: StyleData, name: string, value = \"\") => {\n\tlet content = typeof data === \"string\" ? data : data.content;\n\n\tif (content.includes(\"[_ui5host]\")) {\n\t\tcontent = content.replaceAll(\"[_ui5host]\", `[_ui5rt${getCurrentRuntimeIndex()}]`);\n\t}\n\n\tif (shouldUseLinks()) {\n\t\tconst link = document.querySelector(`head>link[${name}=\"${value}\"]`) as HTMLLinkElement;\n\t\tlink.href = getUrl((data as StyleDataCSP).packageName, (data as StyleDataCSP).fileName);\n\t} else if (document.adoptedStyleSheets) {\n\t\tconst stylesheet = document.adoptedStyleSheets.find(sh => (sh as Record<string, any>)._ui5StyleId === getStyleId(name, value));\n\t\tif (stylesheet) {\n\t\t\tstylesheet.replaceSync(content || \"\");\n\t\t}\n\t} else {\n\t\tconst style = document.querySelector(`head>style[${name}=\"${value}\"]`);\n\t\tif (style) {\n\t\t\tstyle.textContent = content || \"\";\n\t\t}\n\t}\n};\n\nconst hasStyle = (name: string, value = \"\") => {\n\tif (shouldUseLinks()) {\n\t\treturn !!document.querySelector(`head>link[${name}=\"${value}\"]`);\n\t}\n\n\tif (document.adoptedStyleSheets) {\n\t\treturn !!document.adoptedStyleSheets.find(sh => (sh as Record<string, any>)._ui5StyleId === getStyleId(name, value));\n\t}\n\n\treturn !!document.querySelector(`head>style[${name}=\"${value}\"]`);\n};\n\nconst removeStyle = (name: string, value = \"\") => {\n\tif (shouldUseLinks()) {\n\t\tconst linkElement = document.querySelector(`head>link[${name}=\"${value}\"]`);\n\t\tlinkElement?.parentElement?.removeChild(linkElement);\n\t} else if (document.adoptedStyleSheets) {\n\t\tdocument.adoptedStyleSheets = document.adoptedStyleSheets.filter(sh => (sh as Record<string, any>)._ui5StyleId !== getStyleId(name, value));\n\t} else {\n\t\tconst styleElement = document.querySelector(`head > style[${name}=\"${value}\"]`);\n\t\tstyleElement?.parentElement?.removeChild(styleElement);\n\t}\n};\n\nconst createOrUpdateStyle = (data: StyleData, name: string, value = \"\") => {\n\tif (hasStyle(name, value)) {\n\t\tupdateStyle(data, name, value);\n\t} else {\n\t\tcreateStyle(data, name, value);\n\t}\n};\n\nexport {\n\tcreateStyle,\n\thasStyle,\n\tupdateStyle,\n\tremoveStyle,\n\tcreateOrUpdateStyle,\n};\n\nexport type {\n\tStyleData,\n\tStyleDataCSP,\n};\n"]}
|
|
1
|
+
{"version":3,"file":"ManagedStyles.js","sourceRoot":"","sources":["../src/ManagedStyles.ts"],"names":[],"mappings":"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","sourcesContent":["import createStyleInHead from \"./util/createStyleInHead.js\";\nimport createLinkInHead from \"./util/createLinkInHead.js\";\nimport { shouldUseLinks, getUrl } from \"./CSP.js\";\nimport { StyleData, StyleDataCSP } from \"./types.js\";\nimport { isSafari } from \"./Device.js\";\nimport { getCurrentRuntimeIndex, compareRuntimes } from \"./Runtimes.js\";\n\nconst getStyleId = (name: string, value: string) => {\n\treturn value ? `${name}|${value}` : name;\n};\n\nconst shouldUpdate = (runtimeIndex: string | undefined) => {\n\tif (runtimeIndex === undefined) {\n\t\treturn true;\n\t}\n\treturn compareRuntimes(getCurrentRuntimeIndex(), parseInt(runtimeIndex)) === 1; // 1 means the current is newer, 0 means the same, -1 means the resource's runtime is newer\n};\n\nconst createStyle = (data: StyleData, name: string, value = \"\", theme?: string) => {\n\tconst content = typeof data === \"string\" ? data : data.content;\n\tconst currentRuntimeIndex = getCurrentRuntimeIndex();\n\n\tif (shouldUseLinks()) {\n\t\tconst attributes = {} as Record<string, any>;\n\t\tattributes[name] = value;\n\t\tif (theme) {\n\t\t\tattributes[\"data-ui5-runtime-index\"] = currentRuntimeIndex;\n\t\t\tattributes[\"data-ui5-theme\"] = theme;\n\t\t}\n\t\tconst href = getUrl((data as StyleDataCSP).packageName, (data as StyleDataCSP).fileName);\n\t\tcreateLinkInHead(href, attributes);\n\t} else if (document.adoptedStyleSheets && !isSafari()) {\n\t\tconst stylesheet = new CSSStyleSheet();\n\t\tstylesheet.replaceSync(content);\n\t\t(stylesheet as Record<string, any>)._ui5StyleId = getStyleId(name, value); // set an id so that we can find the style later\n\t\tif (theme) {\n\t\t\t(stylesheet as Record<string, any>)._ui5RuntimeIndex = currentRuntimeIndex;\n\t\t\t(stylesheet as Record<string, any>)._ui5Theme = theme;\n\t\t}\n\t\tdocument.adoptedStyleSheets = [...document.adoptedStyleSheets, stylesheet];\n\t} else {\n\t\tconst attributes = {} as Record<string, any>;\n\t\tattributes[name] = value;\n\t\tif (theme) {\n\t\t\tattributes[\"data-ui5-runtime-index\"] = currentRuntimeIndex;\n\t\t\tattributes[\"data-ui5-theme\"] = theme;\n\t\t}\n\t\tcreateStyleInHead(content, attributes);\n\t}\n};\n\nconst updateStyle = (data: StyleData, name: string, value = \"\", theme?: string) => {\n\tconst content = typeof data === \"string\" ? data : data.content;\n\tconst currentRuntimeIndex = getCurrentRuntimeIndex();\n\n\tif (shouldUseLinks()) {\n\t\tconst link = document.querySelector(`head>link[${name}=\"${value}\"]`) as HTMLLinkElement;\n\t\tconst href = getUrl((data as StyleDataCSP).packageName, (data as StyleDataCSP).fileName);\n\n\t\tif (!theme) {\n\t\t\tlink.href = href;\n\t\t} else {\n\t\t\tconst linkRuntimeIndex = link.getAttribute(\"data-ui5-runtime-index\") || undefined;\n\t\t\tconst linkTheme = link.getAttribute(\"data-ui5-theme\");\n\t\t\tif (linkTheme !== theme || shouldUpdate(linkRuntimeIndex)) {\n\t\t\t\tlink.href = href;\n\t\t\t\tlink.setAttribute(\"data-ui5-runtime-index\", String(currentRuntimeIndex));\n\t\t\t\tlink.setAttribute(\"data-ui5-theme\", theme);\n\t\t\t}\n\t\t}\n\t} else if (document.adoptedStyleSheets && !isSafari()) {\n\t\tconst stylesheet = document.adoptedStyleSheets.find(sh => (sh as Record<string, any>)._ui5StyleId === getStyleId(name, value));\n\t\tif (!stylesheet) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (!theme) {\n\t\t\tstylesheet.replaceSync(content || \"\");\n\t\t} else {\n\t\t\tconst stylesheetRuntimeIndex: string | undefined = (stylesheet as Record<string, any>)._ui5RuntimeIndex;\n\t\t\tconst stylesheetTheme: string | undefined = (stylesheet as Record<string, any>)._ui5Theme;\n\t\t\tif (stylesheetTheme !== theme || shouldUpdate(stylesheetRuntimeIndex)) {\n\t\t\t\tstylesheet.replaceSync(content || \"\");\n\t\t\t\t(stylesheet as Record<string, any>)._ui5RuntimeIndex = String(currentRuntimeIndex);\n\t\t\t\t(stylesheet as Record<string, any>)._ui5Theme = theme;\n\t\t\t}\n\t\t}\n\t} else {\n\t\tconst style = document.querySelector(`head>style[${name}=\"${value}\"]`);\n\t\tif (!style) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (!theme) {\n\t\t\tstyle.textContent = content || \"\";\n\t\t} else {\n\t\t\tconst styleRuntimeIndex = style.getAttribute(\"data-ui5-runtime-index\") || undefined;\n\t\t\tconst styleTheme = style.getAttribute(\"data-ui5-theme\");\n\t\t\tif (styleTheme !== theme || shouldUpdate(styleRuntimeIndex)) {\n\t\t\t\tstyle.textContent = content || \"\";\n\t\t\t\tstyle.setAttribute(\"data-ui5-runtime-index\", String(currentRuntimeIndex));\n\t\t\t\tstyle.setAttribute(\"data-ui5-theme\", theme);\n\t\t\t}\n\t\t}\n\t}\n};\n\nconst hasStyle = (name: string, value = \"\"): boolean => {\n\tif (shouldUseLinks()) {\n\t\treturn !!document.querySelector(`head>link[${name}=\"${value}\"]`);\n\t}\n\n\tconst styleElement = document.querySelector(`head>style[${name}=\"${value}\"]`);\n\n\tif (document.adoptedStyleSheets && !isSafari()) {\n\t\treturn !!styleElement || !!document.adoptedStyleSheets.find(sh => (sh as Record<string, any>)._ui5StyleId === getStyleId(name, value));\n\t}\n\n\treturn !!styleElement;\n};\n\nconst removeStyle = (name: string, value = \"\") => {\n\tif (shouldUseLinks()) {\n\t\tconst linkElement = document.querySelector(`head>link[${name}=\"${value}\"]`);\n\t\tlinkElement?.parentElement?.removeChild(linkElement);\n\t} else if (document.adoptedStyleSheets && !isSafari()) {\n\t\tdocument.adoptedStyleSheets = document.adoptedStyleSheets.filter(sh => (sh as Record<string, any>)._ui5StyleId !== getStyleId(name, value));\n\t} else {\n\t\tconst styleElement = document.querySelector(`head > style[${name}=\"${value}\"]`);\n\t\tstyleElement?.parentElement?.removeChild(styleElement);\n\t}\n};\n\nconst createOrUpdateStyle = (data: StyleData, name: string, value = \"\", theme?: string) => {\n\tif (hasStyle(name, value)) {\n\t\tupdateStyle(data, name, value, theme);\n\t} else {\n\t\tcreateStyle(data, name, value, theme);\n\t}\n};\n\nconst mergeStyles = (style1?: StyleData, style2?: StyleData) => {\n\tif (style1 === undefined) {\n\t\treturn style2;\n\t}\n\tif (style2 === undefined) {\n\t\treturn style1;\n\t}\n\tconst style2Content = typeof style2 === \"string\" ? style2 : style2.content;\n\tif (typeof style1 === \"string\") {\n\t\treturn `${style1} ${style2Content}`;\n\t}\n\treturn {\n\t\tcontent: `${style1.content} ${style2Content}`,\n\t\tpackageName: style1.packageName,\n\t\tfileName: style1.fileName,\n\t};\n};\n\nexport {\n\tcreateStyle,\n\thasStyle,\n\tupdateStyle,\n\tremoveStyle,\n\tcreateOrUpdateStyle,\n\tmergeStyles,\n};\n\nexport type {\n\tStyleData,\n\tStyleDataCSP,\n};\n"]}
|
package/dist/StaticAreaItem.d.ts
CHANGED
|
@@ -18,6 +18,7 @@ declare class StaticAreaItem extends HTMLElement {
|
|
|
18
18
|
* Updates the shadow root of the static area item with the latest state, if rendered
|
|
19
19
|
*/
|
|
20
20
|
update(): void;
|
|
21
|
+
updateAdditionalProperties(): void;
|
|
21
22
|
/**
|
|
22
23
|
* Sets the correct content density based on the owner element's state
|
|
23
24
|
* @private
|
package/dist/StaticAreaItem.js
CHANGED
|
@@ -4,7 +4,6 @@ import { renderFinished } from "./Render.js";
|
|
|
4
4
|
import getEffectiveContentDensity from "./util/getEffectiveContentDensity.js";
|
|
5
5
|
import { getEffectiveScopingSuffixForTag } from "./CustomElementsScopeUtils.js";
|
|
6
6
|
import getEffectiveDir from "./locale/getEffectiveDir.js";
|
|
7
|
-
import { getCurrentRuntimeIndex } from "./Runtimes.js";
|
|
8
7
|
const pureTagName = "ui5-static-area-item";
|
|
9
8
|
const popupIntegrationAttr = "data-sap-ui-integration-popup-content";
|
|
10
9
|
/**
|
|
@@ -34,12 +33,15 @@ class StaticAreaItem extends HTMLElement {
|
|
|
34
33
|
*/
|
|
35
34
|
update() {
|
|
36
35
|
if (this._rendered) {
|
|
37
|
-
this.
|
|
38
|
-
this._updateContentDensity();
|
|
39
|
-
this._updateDirection();
|
|
36
|
+
this.updateAdditionalProperties();
|
|
40
37
|
updateShadowRoot(this.ownerElement, true);
|
|
41
38
|
}
|
|
42
39
|
}
|
|
40
|
+
updateAdditionalProperties() {
|
|
41
|
+
this._updateAdditionalAttrs();
|
|
42
|
+
this._updateContentDensity();
|
|
43
|
+
this._updateDirection();
|
|
44
|
+
}
|
|
43
45
|
/**
|
|
44
46
|
* Sets the correct content density based on the owner element's state
|
|
45
47
|
* @private
|
|
@@ -66,8 +68,6 @@ class StaticAreaItem extends HTMLElement {
|
|
|
66
68
|
}
|
|
67
69
|
}
|
|
68
70
|
_updateAdditionalAttrs() {
|
|
69
|
-
this.setAttribute(`_ui5rt${getCurrentRuntimeIndex()}`, "");
|
|
70
|
-
this.setAttribute("_ui5host", "");
|
|
71
71
|
this.setAttribute(pureTagName, "");
|
|
72
72
|
this.setAttribute(popupIntegrationAttr, "");
|
|
73
73
|
}
|
|
@@ -76,7 +76,7 @@ class StaticAreaItem extends HTMLElement {
|
|
|
76
76
|
* Returns reference to the DOM element where the current fragment is added.
|
|
77
77
|
*/
|
|
78
78
|
async getDomRef() {
|
|
79
|
-
this.
|
|
79
|
+
this.updateAdditionalProperties();
|
|
80
80
|
if (!this._rendered) {
|
|
81
81
|
this._rendered = true;
|
|
82
82
|
updateShadowRoot(this.ownerElement, true);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"StaticAreaItem.js","sourceRoot":"","sources":["../src/StaticAreaItem.ts"],"names":[],"mappings":"AAAA,OAAO,iBAAiB,CAAC;AACzB,OAAO,gBAAgB,MAAM,uBAAuB,CAAC;AACrD,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,0BAA0B,MAAM,sCAAsC,CAAC;AAC9E,OAAO,EAAE,+BAA+B,EAAE,MAAM,+BAA+B,CAAC;AAChF,OAAO,eAAe,MAAM,6BAA6B,CAAC;
|
|
1
|
+
{"version":3,"file":"StaticAreaItem.js","sourceRoot":"","sources":["../src/StaticAreaItem.ts"],"names":[],"mappings":"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","sourcesContent":["import \"./StaticArea.js\";\nimport updateShadowRoot from \"./updateShadowRoot.js\";\nimport { renderFinished } from \"./Render.js\";\nimport getEffectiveContentDensity from \"./util/getEffectiveContentDensity.js\";\nimport { getEffectiveScopingSuffixForTag } from \"./CustomElementsScopeUtils.js\";\nimport getEffectiveDir from \"./locale/getEffectiveDir.js\";\nimport type UI5Element from \"./UI5Element.js\";\n\nconst pureTagName = \"ui5-static-area-item\";\nconst popupIntegrationAttr = \"data-sap-ui-integration-popup-content\";\n\n/**\n *\n * @class\n * @author SAP SE\n * @private\n */\nclass StaticAreaItem extends HTMLElement {\n\t_rendered: boolean;\n\townerElement?: UI5Element;\n\n\tconstructor() {\n\t\tsuper();\n\t\tthis._rendered = false;\n\t\tthis.attachShadow({ mode: \"open\" });\n\t}\n\n\t/**\n\t * @param {UI5Element} ownerElement the UI5Element instance that owns this static area item\n\t */\n\tsetOwnerElement(ownerElement: UI5Element) {\n\t\tthis.ownerElement = ownerElement;\n\t\tthis.classList.add(this.ownerElement._id); // used for getting the popover in the tests\n\t\tif (this.ownerElement.hasAttribute(\"data-ui5-static-stable\")) {\n\t\t\tthis.setAttribute(\"data-ui5-stable\", this.ownerElement.getAttribute(\"data-ui5-static-stable\")!); // stable selector\n\t\t}\n\t}\n\n\t/**\n\t * Updates the shadow root of the static area item with the latest state, if rendered\n\t */\n\tupdate() {\n\t\tif (this._rendered) {\n\t\t\tthis.updateAdditionalProperties();\n\t\t\tupdateShadowRoot(this.ownerElement!, true);\n\t\t}\n\t}\n\n\tupdateAdditionalProperties() {\n\t\tthis._updateAdditionalAttrs();\n\t\tthis._updateContentDensity();\n\t\tthis._updateDirection();\n\t}\n\n\t/**\n\t * Sets the correct content density based on the owner element's state\n\t * @private\n\t */\n\t_updateContentDensity() {\n\t\tif (getEffectiveContentDensity(this.ownerElement!) === \"compact\") {\n\t\t\tthis.classList.add(\"sapUiSizeCompact\");\n\t\t\tthis.classList.add(\"ui5-content-density-compact\");\n\t\t} else {\n\t\t\tthis.classList.remove(\"sapUiSizeCompact\");\n\t\t\tthis.classList.remove(\"ui5-content-density-compact\");\n\t\t}\n\t}\n\n\t_updateDirection() {\n\t\tif (this.ownerElement) {\n\t\t\tconst dir = getEffectiveDir(this.ownerElement);\n\t\t\tif (dir) {\n\t\t\t\tthis.setAttribute(\"dir\", dir);\n\t\t\t} else {\n\t\t\t\tthis.removeAttribute(\"dir\");\n\t\t\t}\n\t\t}\n\t}\n\n\t_updateAdditionalAttrs() {\n\t\tthis.setAttribute(pureTagName, \"\");\n\t\tthis.setAttribute(popupIntegrationAttr, \"\");\n\t}\n\n\t/**\n\t * @protected\n\t * Returns reference to the DOM element where the current fragment is added.\n\t */\n\tasync getDomRef() {\n\t\tthis.updateAdditionalProperties();\n\t\tif (!this._rendered) {\n\t\t\tthis._rendered = true;\n\t\t\tupdateShadowRoot(this.ownerElement!, true);\n\t\t}\n\t\tawait renderFinished(); // Wait for the content of the ui5-static-area-item to be rendered\n\t\treturn this.shadowRoot;\n\t}\n\n\tstatic getTag() {\n\t\tconst suffix = getEffectiveScopingSuffixForTag(pureTagName);\n\t\tif (!suffix) {\n\t\t\treturn pureTagName;\n\t\t}\n\n\t\treturn `${pureTagName}-${suffix}`;\n\t}\n\n\tstatic createInstance() {\n\t\tif (!customElements.get(StaticAreaItem.getTag())) {\n\t\t\tcustomElements.define(StaticAreaItem.getTag(), StaticAreaItem);\n\t\t}\n\n\t\treturn document.createElement(this.getTag()) as StaticAreaItem;\n\t}\n}\n\nexport default StaticAreaItem;\n"]}
|
package/dist/UI5Element.d.ts
CHANGED
|
@@ -39,7 +39,8 @@ declare abstract class UI5Element extends HTMLElement {
|
|
|
39
39
|
__id?: string;
|
|
40
40
|
_suppressInvalidation: boolean;
|
|
41
41
|
_changedState: Array<ChangeInfo>;
|
|
42
|
-
|
|
42
|
+
_invalidationEventProvider: EventProvider<InvalidationInfo, void>;
|
|
43
|
+
_componentStateFinalizedEventProvider: EventProvider<void, void>;
|
|
43
44
|
_inDOM: boolean;
|
|
44
45
|
_fullyConnected: boolean;
|
|
45
46
|
_childChangeListeners: Map<string, ChildChangeListener>;
|
|
@@ -49,7 +50,6 @@ declare abstract class UI5Element extends HTMLElement {
|
|
|
49
50
|
};
|
|
50
51
|
_doNotSyncAttributes: Set<string>;
|
|
51
52
|
_state: State;
|
|
52
|
-
_onComponentStateFinalized?: () => void;
|
|
53
53
|
_getRealDomRef?: () => HTMLElement;
|
|
54
54
|
staticAreaItem?: StaticAreaItem;
|
|
55
55
|
static template?: TemplateFunction;
|
|
@@ -278,6 +278,20 @@ declare abstract class UI5Element extends HTMLElement {
|
|
|
278
278
|
* @public
|
|
279
279
|
*/
|
|
280
280
|
getSlottedNodes<T = Node>(slotName: string): T[];
|
|
281
|
+
/**
|
|
282
|
+
* Attach a callback that will be executed whenever the component's state is finalized
|
|
283
|
+
*
|
|
284
|
+
* @param {} callback
|
|
285
|
+
* @public
|
|
286
|
+
*/
|
|
287
|
+
attachComponentStateFinalized(callback: () => void): void;
|
|
288
|
+
/**
|
|
289
|
+
* Detach the callback that is executed whenever the component's state is finalized
|
|
290
|
+
*
|
|
291
|
+
* @param {} callback
|
|
292
|
+
* @public
|
|
293
|
+
*/
|
|
294
|
+
detachComponentStateFinalized(callback: () => void): void;
|
|
281
295
|
/**
|
|
282
296
|
* Determines whether the component should be rendered in RTL mode or not.
|
|
283
297
|
* Returns: "rtl", "ltr" or undefined
|
package/dist/UI5Element.js
CHANGED
|
@@ -18,7 +18,6 @@ import arraysAreEqual from "./util/arraysAreEqual.js";
|
|
|
18
18
|
import { markAsRtlAware } from "./locale/RTLAwareRegistry.js";
|
|
19
19
|
import preloadLinks from "./theming/preloadLinks.js";
|
|
20
20
|
import executeTemplate from "./renderer/executeTemplate.js";
|
|
21
|
-
import { getCurrentRuntimeIndex } from "./Runtimes.js";
|
|
22
21
|
let autoId = 0;
|
|
23
22
|
const elementTimeouts = new Map();
|
|
24
23
|
const uniqueDependenciesCache = new Map();
|
|
@@ -37,7 +36,7 @@ function _invalidate(changeInfo) {
|
|
|
37
36
|
this.onInvalidation(changeInfo);
|
|
38
37
|
this._changedState.push(changeInfo);
|
|
39
38
|
renderDeferred(this);
|
|
40
|
-
this.
|
|
39
|
+
this._invalidationEventProvider.fireEvent("invalidate", { ...changeInfo, target: this });
|
|
41
40
|
}
|
|
42
41
|
/**
|
|
43
42
|
* Base class for all UI5 Web Components
|
|
@@ -59,7 +58,8 @@ class UI5Element extends HTMLElement {
|
|
|
59
58
|
this._fullyConnected = false; // A flag telling whether the UI5Element's onEnterDOM hook was called (since it's possible to have the element removed from DOM before that)
|
|
60
59
|
this._childChangeListeners = new Map(); // used to store lazy listeners per slot for the child change event of every child inside that slot
|
|
61
60
|
this._slotChangeListeners = new Map(); // used to store lazy listeners per slot for the slotchange event of all slot children inside that slot
|
|
62
|
-
this.
|
|
61
|
+
this._invalidationEventProvider = new EventProvider(); // used by parent components for listening to changes to child components
|
|
62
|
+
this._componentStateFinalizedEventProvider = new EventProvider(); // used by friend classes for synchronization
|
|
63
63
|
let deferredResolve;
|
|
64
64
|
this._domRefReadyPromise = new Promise(resolve => {
|
|
65
65
|
deferredResolve = resolve;
|
|
@@ -98,8 +98,6 @@ class UI5Element extends HTMLElement {
|
|
|
98
98
|
*/
|
|
99
99
|
async connectedCallback() {
|
|
100
100
|
const ctor = this.constructor;
|
|
101
|
-
this.setAttribute(`_ui5rt${getCurrentRuntimeIndex()}`, "");
|
|
102
|
-
this.setAttribute("_ui5host", "");
|
|
103
101
|
this.setAttribute(ctor.getMetadata().getPureTag(), "");
|
|
104
102
|
if (ctor.getMetadata().supportsF6FastNavigation()) {
|
|
105
103
|
this.setAttribute("data-sap-ui-fastnavgroup", "true");
|
|
@@ -164,14 +162,16 @@ class UI5Element extends HTMLElement {
|
|
|
164
162
|
*/
|
|
165
163
|
_startObservingDOMChildren() {
|
|
166
164
|
const ctor = this.constructor;
|
|
167
|
-
const
|
|
165
|
+
const metadata = ctor.getMetadata();
|
|
166
|
+
const shouldObserveChildren = metadata.hasSlots();
|
|
168
167
|
if (!shouldObserveChildren) {
|
|
169
168
|
return;
|
|
170
169
|
}
|
|
171
|
-
const canSlotText =
|
|
170
|
+
const canSlotText = metadata.canSlotText();
|
|
171
|
+
const hasClonedSlot = Object.keys(metadata.getSlots()).some(slotName => metadata.getSlots()[slotName].cloned);
|
|
172
172
|
const mutationObserverOptions = {
|
|
173
173
|
childList: true,
|
|
174
|
-
subtree: canSlotText,
|
|
174
|
+
subtree: canSlotText || hasClonedSlot,
|
|
175
175
|
characterData: canSlotText,
|
|
176
176
|
};
|
|
177
177
|
observeDOMNode(this, this._processChildren.bind(this), mutationObserverOptions);
|
|
@@ -323,7 +323,7 @@ class UI5Element extends HTMLElement {
|
|
|
323
323
|
* @public
|
|
324
324
|
*/
|
|
325
325
|
attachInvalidate(callback) {
|
|
326
|
-
this.
|
|
326
|
+
this._invalidationEventProvider.attachEvent("invalidate", callback);
|
|
327
327
|
}
|
|
328
328
|
/**
|
|
329
329
|
* Detach the callback that is executed whenever the component is invalidated
|
|
@@ -332,7 +332,7 @@ class UI5Element extends HTMLElement {
|
|
|
332
332
|
* @public
|
|
333
333
|
*/
|
|
334
334
|
detachInvalidate(callback) {
|
|
335
|
-
this.
|
|
335
|
+
this._invalidationEventProvider.detachEvent("invalidate", callback);
|
|
336
336
|
}
|
|
337
337
|
/**
|
|
338
338
|
* Callback that is executed whenever a monitored child changes its state
|
|
@@ -537,9 +537,7 @@ class UI5Element extends HTMLElement {
|
|
|
537
537
|
this._suppressInvalidation = true;
|
|
538
538
|
this.onBeforeRendering();
|
|
539
539
|
// Intended for framework usage only. Currently ItemNavigation updates tab indexes after the component has updated its state but before the template is rendered
|
|
540
|
-
|
|
541
|
-
this._onComponentStateFinalized();
|
|
542
|
-
}
|
|
540
|
+
this._componentStateFinalizedEventProvider.fireEvent("componentStateFinalized");
|
|
543
541
|
// resume normal invalidation handling
|
|
544
542
|
this._suppressInvalidation = false;
|
|
545
543
|
// Update the shadow root with the render result
|
|
@@ -662,7 +660,7 @@ class UI5Element extends HTMLElement {
|
|
|
662
660
|
const eventResult = this._fireEvent(name, data, cancelable, bubbles);
|
|
663
661
|
const camelCaseEventName = kebabToCamelCase(name);
|
|
664
662
|
if (camelCaseEventName !== name) {
|
|
665
|
-
return eventResult && this._fireEvent(camelCaseEventName, data, cancelable);
|
|
663
|
+
return eventResult && this._fireEvent(camelCaseEventName, data, cancelable, bubbles);
|
|
666
664
|
}
|
|
667
665
|
return eventResult;
|
|
668
666
|
}
|
|
@@ -697,6 +695,24 @@ class UI5Element extends HTMLElement {
|
|
|
697
695
|
getSlottedNodes(slotName) {
|
|
698
696
|
return getSlottedNodesList(this[slotName]);
|
|
699
697
|
}
|
|
698
|
+
/**
|
|
699
|
+
* Attach a callback that will be executed whenever the component's state is finalized
|
|
700
|
+
*
|
|
701
|
+
* @param {} callback
|
|
702
|
+
* @public
|
|
703
|
+
*/
|
|
704
|
+
attachComponentStateFinalized(callback) {
|
|
705
|
+
this._componentStateFinalizedEventProvider.attachEvent("componentStateFinalized", callback);
|
|
706
|
+
}
|
|
707
|
+
/**
|
|
708
|
+
* Detach the callback that is executed whenever the component's state is finalized
|
|
709
|
+
*
|
|
710
|
+
* @param {} callback
|
|
711
|
+
* @public
|
|
712
|
+
*/
|
|
713
|
+
detachComponentStateFinalized(callback) {
|
|
714
|
+
this._componentStateFinalizedEventProvider.detachEvent("componentStateFinalized", callback);
|
|
715
|
+
}
|
|
700
716
|
/**
|
|
701
717
|
* Determines whether the component should be rendered in RTL mode or not.
|
|
702
718
|
* Returns: "rtl", "ltr" or undefined
|
|
@@ -918,7 +934,7 @@ class UI5Element extends HTMLElement {
|
|
|
918
934
|
]);
|
|
919
935
|
const tag = this.getMetadata().getTag();
|
|
920
936
|
const definedLocally = isTagRegistered(tag);
|
|
921
|
-
const definedGlobally = customElements.get(tag);
|
|
937
|
+
const definedGlobally = window.customElements.get(tag);
|
|
922
938
|
if (definedGlobally && !definedLocally) {
|
|
923
939
|
recordTagRegistrationFailure(tag);
|
|
924
940
|
}
|