@ui5/webcomponents-base 1.12.0-rc.1 → 1.12.0-rc.2
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/.eslintrc.js +3 -0
- package/CHANGELOG.md +19 -0
- package/dist/AssetRegistry.js.map +1 -1
- package/dist/Boot.js +14 -0
- package/dist/Boot.js.map +1 -1
- package/dist/CSP.js.map +1 -1
- package/dist/CustomElementsRegistry.js.map +1 -1
- package/dist/CustomElementsScope.js.map +1 -1
- package/dist/CustomElementsScopeUtils.js.map +1 -1
- package/dist/DOMObserver.js.map +1 -1
- package/dist/Device.js.map +1 -1
- package/dist/EventProvider.js.map +1 -1
- package/dist/FeaturesRegistry.js.map +1 -1
- package/dist/FontFace.js.map +1 -1
- package/dist/InitialConfiguration.js.map +1 -1
- package/dist/Keys.js.map +1 -1
- package/dist/ManagedStyles.js.map +1 -1
- package/dist/MarkedEvents.js.map +1 -1
- package/dist/MediaRange.js.map +1 -1
- package/dist/PropertiesFileFormat.js.map +1 -1
- package/dist/Render.js.map +1 -1
- package/dist/RenderQueue.js.map +1 -1
- package/dist/Runtimes.js.map +1 -1
- package/dist/StaticArea.js.map +1 -1
- package/dist/StaticAreaItem.js.map +1 -1
- package/dist/SystemCSSVars.js.map +1 -1
- package/dist/Theming.js.map +1 -1
- package/dist/UI5Element.js.map +1 -1
- package/dist/UI5ElementMetadata.js.map +1 -1
- package/dist/animations/AnimationQueue.js.map +1 -1
- package/dist/animations/animate.js.map +1 -1
- package/dist/animations/scroll.js.map +1 -1
- package/dist/animations/slideDown.js.map +1 -1
- package/dist/animations/slideUp.js.map +1 -1
- package/dist/asset-registries/Icons.d.ts +6 -6
- package/dist/asset-registries/Icons.js +1 -1
- package/dist/asset-registries/Icons.js.map +1 -1
- package/dist/asset-registries/Illustrations.js.map +1 -1
- package/dist/asset-registries/LocaleData.js.map +1 -1
- package/dist/asset-registries/Themes.js +2 -0
- package/dist/asset-registries/Themes.js.map +1 -1
- package/dist/asset-registries/i18n.js +9 -3
- package/dist/asset-registries/i18n.js.map +1 -1
- package/dist/assets/Boot.0f056029.js +9 -0
- package/dist/assets/Boot.34b7cea0.css +1 -0
- package/dist/assets/{bundle.esm.31092611.js → bundle.esm.90296f02.js} +1 -1
- package/dist/assets/test/pages/Boot.html.a40788ce.js +1 -0
- package/dist/assets/test/pages/{i18n.html.ae9cb4a6.js → i18n.html.65058ddf.js} +1 -1
- package/dist/assets/test/pages/{i18n_texts.html.3f536773.js → i18n_texts.html.4d80a4fd.js} +1 -1
- package/dist/assets-meta/IconCollectionsAlias.js.map +1 -1
- package/dist/config/AnimationMode.js.map +1 -1
- package/dist/config/CalendarType.js.map +1 -1
- package/dist/config/FormatSettings.js.map +1 -1
- package/dist/config/Icons.js.map +1 -1
- package/dist/config/Language.d.ts +10 -1
- package/dist/config/Language.js +13 -1
- package/dist/config/Language.js.map +1 -1
- package/dist/config/NoConflict.js.map +1 -1
- package/dist/config/RTL.js.map +1 -1
- package/dist/config/Theme.d.ts +10 -1
- package/dist/config/Theme.js +13 -1
- package/dist/config/Theme.js.map +1 -1
- package/dist/config/ThemeRoots.js.map +1 -1
- package/dist/decorators/customElement.js.map +1 -1
- package/dist/decorators/event.js.map +1 -1
- package/dist/decorators/property.js.map +1 -1
- package/dist/decorators/slot.js.map +1 -1
- package/dist/delegate/ItemNavigation.js.map +1 -1
- package/dist/delegate/ResizeHandler.js.map +1 -1
- package/dist/delegate/ScrollEnablement.js.map +1 -1
- package/dist/features/F6Navigation.js.map +1 -1
- package/dist/features/LegacyDateFormats.js.map +1 -1
- package/dist/features/OpenUI5Element.js.map +1 -1
- package/dist/features/OpenUI5Enablement.js.map +1 -1
- package/dist/features/OpenUI5Support.js.map +1 -1
- package/dist/generated/VersionInfo.js +3 -3
- package/dist/generated/css/BusyIndicator.css.js.map +1 -1
- package/dist/generated/css/FontFace.css.js.map +1 -1
- package/dist/generated/css/OverrideFontFace.css.js.map +1 -1
- package/dist/generated/css/SystemCSSVars.css.js.map +1 -1
- package/dist/getSharedResource.js.map +1 -1
- package/dist/i18nBundle.js.map +1 -1
- package/dist/locale/Locale.js.map +1 -1
- package/dist/locale/RTLAwareRegistry.js.map +1 -1
- package/dist/locale/applyDirection.js.map +1 -1
- package/dist/locale/directionChange.js.map +1 -1
- package/dist/locale/getEffectiveDir.js.map +1 -1
- package/dist/locale/getLocale.js.map +1 -1
- package/dist/locale/languageChange.js.map +1 -1
- package/dist/locale/nextFallbackLocale.js.map +1 -1
- package/dist/locale/normalizeLocale.js.map +1 -1
- package/dist/renderer/LitRenderer.js.map +1 -1
- package/dist/renderer/executeTemplate.js.map +1 -1
- package/dist/test/pages/AllTestElements.html +2 -2
- package/dist/test/pages/Boot.html +4 -4
- package/dist/test/pages/Configuration.html +2 -2
- package/dist/test/pages/ConfigurationScript.html +2 -2
- package/dist/test/pages/WithComplexTemplate.html +2 -2
- package/dist/test/pages/i18n.html +3 -3
- package/dist/test/pages/i18n_texts.html +3 -3
- package/dist/theming/CustomStyle.js.map +1 -1
- package/dist/theming/ThemeLoaded.js.map +1 -1
- package/dist/theming/ThemeRegistered.d.ts +4 -0
- package/dist/theming/ThemeRegistered.js +11 -0
- package/dist/theming/ThemeRegistered.js.map +1 -0
- package/dist/theming/applyTheme.js.map +1 -1
- package/dist/theming/getConstructableStyle.js.map +1 -1
- package/dist/theming/getEffectiveLinksHrefs.js.map +1 -1
- package/dist/theming/getEffectiveStyle.js.map +1 -1
- package/dist/theming/getStylesString.js.map +1 -1
- package/dist/theming/getThemeDesignerTheme.js.map +1 -1
- package/dist/theming/preloadLinks.js.map +1 -1
- package/dist/thirdparty/_merge.js.map +1 -1
- package/dist/thirdparty/isPlainObject.js.map +1 -1
- package/dist/thirdparty/merge.js.map +1 -1
- package/dist/types/AnimationMode.js.map +1 -1
- package/dist/types/CSSColor.js.map +1 -1
- package/dist/types/CalendarType.js.map +1 -1
- package/dist/types/DOMReference.js.map +1 -1
- package/dist/types/DataType.js.map +1 -1
- package/dist/types/Float.js.map +1 -1
- package/dist/types/Integer.js.map +1 -1
- package/dist/types/InvisibleMessageMode.js.map +1 -1
- package/dist/types/ItemNavigationBehavior.js.map +1 -1
- package/dist/types/NavigationMode.js.map +1 -1
- package/dist/types/ValueState.js.map +1 -1
- package/dist/types.js.map +1 -1
- package/dist/updateShadowRoot.js.map +1 -1
- package/dist/util/AriaLabelHelper.js.map +1 -1
- package/dist/util/Caret.js.map +1 -1
- package/dist/util/ColorConversion.js.map +1 -1
- package/dist/util/FetchHelper.js.map +1 -1
- package/dist/util/FocusableElements.js.map +1 -1
- package/dist/util/HTMLSanitizer.js.map +1 -1
- package/dist/util/InvisibleMessage.js.map +1 -1
- package/dist/util/PopupUtils.js.map +1 -1
- package/dist/util/SlotsHelper.js.map +1 -1
- package/dist/util/StringHelper.js.map +1 -1
- package/dist/util/TabbableElements.js.map +1 -1
- package/dist/util/arraysAreEqual.js.map +1 -1
- package/dist/util/clamp.js.map +1 -1
- package/dist/util/createLinkInHead.js.map +1 -1
- package/dist/util/createStyleInHead.js.map +1 -1
- package/dist/util/debounce.js.map +1 -1
- package/dist/util/detectNavigatorLanguage.js.map +1 -1
- package/dist/util/escapeRegex.js.map +1 -1
- package/dist/util/formatMessage.js.map +1 -1
- package/dist/util/generateHighlightedMarkup.js.map +1 -1
- package/dist/util/getActiveElement.js.map +1 -1
- package/dist/util/getClassCopy.js.map +1 -1
- package/dist/util/getDesigntimePropertyAsArray.js.map +1 -1
- package/dist/util/getEffectiveContentDensity.js.map +1 -1
- package/dist/util/getEffectiveScrollbarStyle.js.map +1 -1
- package/dist/util/getFastNavigationGroups.js.map +1 -1
- package/dist/util/getFileExtension.js.map +1 -1
- package/dist/util/getNormalizedTarget.js.map +1 -1
- package/dist/util/getSingletonElementInstance.js.map +1 -1
- package/dist/util/isElementClickable.js.map +1 -1
- package/dist/util/isElementHidden.js.map +1 -1
- package/dist/util/isElementInView.js.map +1 -1
- package/dist/util/isElementTabbable.js.map +1 -1
- package/dist/util/isValidPropertyName.js.map +1 -1
- package/dist/util/whenDOMReady.js.map +1 -1
- package/dist/util/willShowContent.js.map +1 -1
- package/dist/validateThemeRoot.js.map +1 -1
- package/package-scripts.js +1 -2
- package/package.json +3 -3
- package/tsconfig.json +1 -0
- package/dist/assets/Boot.3c90c777.js +0 -9
- package/dist/assets/Boot.6335ce08.css +0 -1
- package/dist/assets/test/pages/Boot.html.7497ea3e.js +0 -1
- package/src/AssetRegistry.ts +0 -11
- package/src/Boot.ts +0 -76
- package/src/CSP.ts +0 -66
- package/src/CustomElementsRegistry.ts +0 -98
- package/src/CustomElementsScope.ts +0 -33
- package/src/CustomElementsScopeUtils.ts +0 -115
- package/src/DOMObserver.ts +0 -28
- package/src/Device.ts +0 -203
- package/src/EventProvider.ts +0 -87
- package/src/FeaturesRegistry.ts +0 -14
- package/src/FontFace.ts +0 -31
- package/src/InitialConfiguration.ts +0 -207
- package/src/Keys.ts +0 -295
- package/src/ManagedStyles.ts +0 -92
- package/src/MarkedEvents.ts +0 -20
- package/src/MediaRange.ts +0 -110
- package/src/PropertiesFileFormat.ts +0 -95
- package/src/Render.ts +0 -180
- package/src/RenderQueue.ts +0 -71
- package/src/Runtimes.ts +0 -114
- package/src/StaticArea.ts +0 -3
- package/src/StaticAreaItem.ts +0 -113
- package/src/SystemCSSVars.ts +0 -10
- package/src/Theming.ts +0 -4
- package/src/UI5Element.ts +0 -1159
- package/src/UI5ElementMetadata.ts +0 -389
- package/src/animations/AnimationQueue.ts +0 -43
- package/src/animations/animate.ts +0 -64
- package/src/animations/scroll.ts +0 -21
- package/src/animations/slideDown.ts +0 -72
- package/src/animations/slideUp.ts +0 -67
- package/src/asset-registries/Icons.ts +0 -161
- package/src/asset-registries/Illustrations.ts +0 -75
- package/src/asset-registries/LocaleData.ts +0 -172
- package/src/asset-registries/Themes.ts +0 -72
- package/src/asset-registries/i18n.ts +0 -118
- package/src/assets-meta/IconCollectionsAlias.ts +0 -41
- package/src/config/AnimationMode.ts +0 -33
- package/src/config/CalendarType.ts +0 -23
- package/src/config/FormatSettings.ts +0 -35
- package/src/config/Icons.ts +0 -126
- package/src/config/Language.ts +0 -72
- package/src/config/NoConflict.ts +0 -67
- package/src/config/RTL.ts +0 -45
- package/src/config/Theme.ts +0 -64
- package/src/config/ThemeRoots.ts +0 -41
- package/src/decorators/customElement.ts +0 -57
- package/src/decorators/event.ts +0 -28
- package/src/decorators/property.ts +0 -30
- package/src/decorators/slot.ts +0 -49
- package/src/delegate/ItemNavigation.ts +0 -393
- package/src/delegate/ResizeHandler.ts +0 -100
- package/src/delegate/ScrollEnablement.ts +0 -224
- package/src/features/F6Navigation.ts +0 -195
- package/src/features/LegacyDateFormats.ts +0 -40
- package/src/features/OpenUI5Element.ts +0 -11
- package/src/features/OpenUI5Enablement.ts +0 -117
- package/src/features/OpenUI5Support.ts +0 -153
- package/src/generated/css/BusyIndicator.css.ts +0 -9
- package/src/generated/css/FontFace.css.ts +0 -9
- package/src/generated/css/OverrideFontFace.css.ts +0 -9
- package/src/generated/css/SystemCSSVars.css.ts +0 -9
- package/src/getSharedResource.ts +0 -39
- package/src/global.d.ts +0 -38
- package/src/i18nBundle.ts +0 -108
- package/src/locale/Locale.ts +0 -101
- package/src/locale/RTLAwareRegistry.ts +0 -16
- package/src/locale/applyDirection.ts +0 -18
- package/src/locale/directionChange.ts +0 -34
- package/src/locale/getEffectiveDir.ts +0 -28
- package/src/locale/getLocale.ts +0 -46
- package/src/locale/languageChange.ts +0 -24
- package/src/locale/nextFallbackLocale.ts +0 -28
- package/src/locale/normalizeLocale.ts +0 -56
- package/src/renderer/LitRenderer.ts +0 -60
- package/src/renderer/executeTemplate.ts +0 -40
- package/src/theming/CustomStyle.ts +0 -64
- package/src/theming/ThemeLoaded.ts +0 -24
- package/src/theming/applyTheme.ts +0 -90
- package/src/theming/getConstructableStyle.ts +0 -31
- package/src/theming/getEffectiveLinksHrefs.ts +0 -26
- package/src/theming/getEffectiveStyle.ts +0 -41
- package/src/theming/getStylesString.ts +0 -15
- package/src/theming/getThemeDesignerTheme.ts +0 -101
- package/src/theming/preloadLinks.ts +0 -24
- package/src/thirdparty/_merge.ts +0 -32
- package/src/thirdparty/isPlainObject.ts +0 -18
- package/src/thirdparty/merge.ts +0 -5
- package/src/types/AnimationMode.ts +0 -33
- package/src/types/CSSColor.ts +0 -19
- package/src/types/CalendarType.ts +0 -38
- package/src/types/DOMReference.ts +0 -28
- package/src/types/DataType.ts +0 -51
- package/src/types/Float.ts +0 -24
- package/src/types/Integer.ts +0 -24
- package/src/types/InvisibleMessageMode.ts +0 -27
- package/src/types/ItemNavigationBehavior.ts +0 -26
- package/src/types/NavigationMode.ts +0 -33
- package/src/types/ValueState.ts +0 -47
- package/src/types.ts +0 -30
- package/src/updateShadowRoot.ts +0 -42
- package/src/util/AriaLabelHelper.ts +0 -218
- package/src/util/Caret.ts +0 -28
- package/src/util/ColorConversion.ts +0 -399
- package/src/util/FetchHelper.ts +0 -31
- package/src/util/FocusableElements.ts +0 -92
- package/src/util/HTMLSanitizer.ts +0 -9
- package/src/util/InvisibleMessage.ts +0 -69
- package/src/util/PopupUtils.ts +0 -112
- package/src/util/SlotsHelper.ts +0 -39
- package/src/util/StringHelper.ts +0 -26
- package/src/util/TabbableElements.ts +0 -70
- package/src/util/arraysAreEqual.ts +0 -15
- package/src/util/clamp.ts +0 -12
- package/src/util/createLinkInHead.ts +0 -25
- package/src/util/createStyleInHead.ts +0 -20
- package/src/util/debounce.ts +0 -18
- package/src/util/detectNavigatorLanguage.ts +0 -13
- package/src/util/escapeRegex.ts +0 -11
- package/src/util/formatMessage.ts +0 -24
- package/src/util/generateHighlightedMarkup.ts +0 -43
- package/src/util/getActiveElement.ts +0 -11
- package/src/util/getClassCopy.ts +0 -12
- package/src/util/getDesigntimePropertyAsArray.ts +0 -4
- package/src/util/getEffectiveContentDensity.ts +0 -5
- package/src/util/getEffectiveScrollbarStyle.ts +0 -5
- package/src/util/getFastNavigationGroups.ts +0 -63
- package/src/util/getFileExtension.ts +0 -21
- package/src/util/getNormalizedTarget.ts +0 -16
- package/src/util/getSingletonElementInstance.ts +0 -13
- package/src/util/isElementClickable.ts +0 -19
- package/src/util/isElementHidden.ts +0 -9
- package/src/util/isElementInView.ts +0 -15
- package/src/util/isElementTabbable.ts +0 -37
- package/src/util/isValidPropertyName.ts +0 -29
- package/src/util/whenDOMReady.ts +0 -13
- package/src/util/willShowContent.ts +0 -7
- package/src/validateThemeRoot.ts +0 -58
|
@@ -1,399 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
*
|
|
3
|
-
* @param {String} color Color in one of the following formats: RGBA or HEX
|
|
4
|
-
*/
|
|
5
|
-
|
|
6
|
-
type ColorHSL = {
|
|
7
|
-
h: number,
|
|
8
|
-
s: number,
|
|
9
|
-
l: number,
|
|
10
|
-
};
|
|
11
|
-
|
|
12
|
-
type ColorRGB = {
|
|
13
|
-
r: number,
|
|
14
|
-
b: number,
|
|
15
|
-
g: number,
|
|
16
|
-
};
|
|
17
|
-
|
|
18
|
-
/**
|
|
19
|
-
* Map of CSS colors to hex representation
|
|
20
|
-
*/
|
|
21
|
-
enum CSSColors {
|
|
22
|
-
aliceblue = "f0f8ff",
|
|
23
|
-
antiquewhite = "faebd7",
|
|
24
|
-
aqua = "00ffff",
|
|
25
|
-
aquamarine = "7fffd4",
|
|
26
|
-
azure = "f0ffff",
|
|
27
|
-
beige = "f5f5dc",
|
|
28
|
-
bisque = "ffe4c4",
|
|
29
|
-
black = "000000",
|
|
30
|
-
blanchedalmond = "ffebcd",
|
|
31
|
-
blue = "0000ff",
|
|
32
|
-
blueviolet = "8a2be2",
|
|
33
|
-
brown = "a52a2a",
|
|
34
|
-
burlywood = "deb887",
|
|
35
|
-
cadetblue = "5f9ea0",
|
|
36
|
-
chartreuse = "7fff00",
|
|
37
|
-
chocolate = "d2691e",
|
|
38
|
-
coral = "ff7f50",
|
|
39
|
-
cornflowerblue = "6495ed",
|
|
40
|
-
cornsilk = "fff8dc",
|
|
41
|
-
crimson = "dc143c",
|
|
42
|
-
cyan = "00ffff",
|
|
43
|
-
darkblue = "00008b",
|
|
44
|
-
darkcyan = "008b8b",
|
|
45
|
-
darkgoldenrod = "b8860b",
|
|
46
|
-
darkgray = "a9a9a9",
|
|
47
|
-
darkgrey = "a9a9a9",
|
|
48
|
-
darkgreen = "006400",
|
|
49
|
-
darkkhaki = "bdb76b",
|
|
50
|
-
darkmagenta = "8b008b",
|
|
51
|
-
darkolivegreen = "556b2f",
|
|
52
|
-
darkorange = "ff8c00",
|
|
53
|
-
darkorchid = "9932cc",
|
|
54
|
-
darkred = "8b0000",
|
|
55
|
-
darksalmon = "e9967a",
|
|
56
|
-
darkseagreen = "8fbc8f",
|
|
57
|
-
darkslateblue = "483d8b",
|
|
58
|
-
darkslategray = "2f4f4f",
|
|
59
|
-
darkslategrey = "2f4f4f",
|
|
60
|
-
darkturquoise = "00ced1",
|
|
61
|
-
darkviolet = "9400d3",
|
|
62
|
-
deeppink = "ff1493",
|
|
63
|
-
deepskyblue = "00bfff",
|
|
64
|
-
dimgray = "696969",
|
|
65
|
-
dimgrey = "696969",
|
|
66
|
-
dodgerblue = "1e90ff",
|
|
67
|
-
firebrick = "b22222",
|
|
68
|
-
floralwhite = "fffaf0",
|
|
69
|
-
forestgreen = "228b22",
|
|
70
|
-
fuchsia = "ff00ff",
|
|
71
|
-
gainsboro = "dcdcdc",
|
|
72
|
-
ghostwhite = "f8f8ff",
|
|
73
|
-
gold = "ffd700",
|
|
74
|
-
goldenrod = "daa520",
|
|
75
|
-
gray = "808080",
|
|
76
|
-
grey = "808080",
|
|
77
|
-
green = "008000",
|
|
78
|
-
greenyellow = "adff2f",
|
|
79
|
-
honeydew = "f0fff0",
|
|
80
|
-
hotpink = "ff69b4",
|
|
81
|
-
indianred = "cd5c5c",
|
|
82
|
-
indigo = "4b0082",
|
|
83
|
-
ivory = "fffff0",
|
|
84
|
-
khaki = "f0e68c",
|
|
85
|
-
lavender = "e6e6fa",
|
|
86
|
-
lavenderblush = "fff0f5",
|
|
87
|
-
lawngreen = "7cfc00",
|
|
88
|
-
lemonchiffon = "fffacd",
|
|
89
|
-
lightblue = "add8e6",
|
|
90
|
-
lightcoral = "f08080",
|
|
91
|
-
lightcyan = "e0ffff",
|
|
92
|
-
lightgoldenrodyellow = "fafad2",
|
|
93
|
-
lightgray = "d3d3d3",
|
|
94
|
-
lightgrey = "d3d3d3",
|
|
95
|
-
lightgreen = "90ee90",
|
|
96
|
-
lightpink = "ffb6c1",
|
|
97
|
-
lightsalmon = "ffa07a",
|
|
98
|
-
lightseagreen = "20b2aa",
|
|
99
|
-
lightskyblue = "87cefa",
|
|
100
|
-
lightslategray = "778899",
|
|
101
|
-
lightslategrey = "778899",
|
|
102
|
-
lightsteelblue = "b0c4de",
|
|
103
|
-
lightyellow = "ffffe0",
|
|
104
|
-
lime = "00ff00",
|
|
105
|
-
limegreen = "32cd32",
|
|
106
|
-
linen = "faf0e6",
|
|
107
|
-
magenta = "ff00ff",
|
|
108
|
-
maroon = "800000",
|
|
109
|
-
mediumaquamarine = "66cdaa",
|
|
110
|
-
mediumblue = "0000cd",
|
|
111
|
-
mediumorchid = "ba55d3",
|
|
112
|
-
mediumpurple = "9370db",
|
|
113
|
-
mediumseagreen = "3cb371",
|
|
114
|
-
mediumslateblue = "7b68ee",
|
|
115
|
-
mediumspringgreen = "00fa9a",
|
|
116
|
-
mediumturquoise = "48d1cc",
|
|
117
|
-
mediumvioletred = "c71585",
|
|
118
|
-
midnightblue = "191970",
|
|
119
|
-
mintcream = "f5fffa",
|
|
120
|
-
mistyrose = "ffe4e1",
|
|
121
|
-
moccasin = "ffe4b5",
|
|
122
|
-
navajowhite = "ffdead",
|
|
123
|
-
navy = "000080",
|
|
124
|
-
oldlace = "fdf5e6",
|
|
125
|
-
olive = "808000",
|
|
126
|
-
olivedrab = "6b8e23",
|
|
127
|
-
orange = "ffa500",
|
|
128
|
-
orangered = "ff4500",
|
|
129
|
-
orchid = "da70d6",
|
|
130
|
-
palegoldenrod = "eee8aa",
|
|
131
|
-
palegreen = "98fb98",
|
|
132
|
-
paleturquoise = "afeeee",
|
|
133
|
-
palevioletred = "db7093",
|
|
134
|
-
papayawhip = "ffefd5",
|
|
135
|
-
peachpuff = "ffdab9",
|
|
136
|
-
peru = "cd853f",
|
|
137
|
-
pink = "ffc0cb",
|
|
138
|
-
plum = "dda0dd",
|
|
139
|
-
powderblue = "b0e0e6",
|
|
140
|
-
purple = "800080",
|
|
141
|
-
red = "ff0000",
|
|
142
|
-
rosybrown = "bc8f8f",
|
|
143
|
-
royalblue = "4169e1",
|
|
144
|
-
saddlebrown = "8b4513",
|
|
145
|
-
salmon = "fa8072",
|
|
146
|
-
sandybrown = "f4a460",
|
|
147
|
-
seagreen = "2e8b57",
|
|
148
|
-
seashell = "fff5ee",
|
|
149
|
-
sienna = "a0522d",
|
|
150
|
-
silver = "c0c0c0",
|
|
151
|
-
skyblue = "87ceeb",
|
|
152
|
-
slateblue = "6a5acd",
|
|
153
|
-
slategray = "708090",
|
|
154
|
-
slategrey = "708090",
|
|
155
|
-
snow = "fffafa",
|
|
156
|
-
springgreen = "00ff7f",
|
|
157
|
-
steelblue = "4682b4",
|
|
158
|
-
tan = "d2b48c",
|
|
159
|
-
teal = "008080",
|
|
160
|
-
thistle = "d8bfd8",
|
|
161
|
-
tomato = "ff6347",
|
|
162
|
-
turquoise = "40e0d0",
|
|
163
|
-
violet = "ee82ee",
|
|
164
|
-
wheat = "f5deb3",
|
|
165
|
-
white = "ffffff",
|
|
166
|
-
whitesmoke = "f5f5f5",
|
|
167
|
-
yellow = "ffff00",
|
|
168
|
-
yellowgreen = "9acd32",
|
|
169
|
-
transparent = "00000000",
|
|
170
|
-
}
|
|
171
|
-
|
|
172
|
-
const getRGBColor = (color: string): ColorRGB => {
|
|
173
|
-
if (color.startsWith("rgba")) {
|
|
174
|
-
return RGBAToRGB(color);
|
|
175
|
-
}
|
|
176
|
-
|
|
177
|
-
if (color.startsWith("rgb")) {
|
|
178
|
-
return RGBStringToRGBObject(color);
|
|
179
|
-
}
|
|
180
|
-
|
|
181
|
-
// HEX
|
|
182
|
-
if (color.indexOf("#") === 0) {
|
|
183
|
-
// Shorthand Syntax
|
|
184
|
-
if (color.length === 4) {
|
|
185
|
-
color = `${color[1]}${color[1]}${color[2]}${color[2]}${color[3]}${color[3]}`;
|
|
186
|
-
} else {
|
|
187
|
-
color = color.slice(1, color.length);
|
|
188
|
-
}
|
|
189
|
-
}
|
|
190
|
-
|
|
191
|
-
// Css Color
|
|
192
|
-
if (color in CSSColors) {
|
|
193
|
-
color = CSSColors[color as keyof typeof CSSColors];
|
|
194
|
-
}
|
|
195
|
-
|
|
196
|
-
return HEXToRGB(color);
|
|
197
|
-
};
|
|
198
|
-
|
|
199
|
-
/**
|
|
200
|
-
* Return an object with the properties for each of the main colors(red, green, blue)
|
|
201
|
-
* @param {String} color Receives a color in the following format: "rgba(0, 0, 0, 1)
|
|
202
|
-
*/
|
|
203
|
-
const RGBAToRGB = (color: string): ColorRGB => {
|
|
204
|
-
const openingBracketIndex = color.indexOf("("),
|
|
205
|
-
commasIndexes = [];
|
|
206
|
-
|
|
207
|
-
for (let i = 0; i < color.length; i++) {
|
|
208
|
-
if (color[i] === ",") {
|
|
209
|
-
commasIndexes.push(i);
|
|
210
|
-
}
|
|
211
|
-
}
|
|
212
|
-
|
|
213
|
-
return {
|
|
214
|
-
r: parseInt(color.slice(openingBracketIndex + 1, commasIndexes[0]).trim()),
|
|
215
|
-
g: parseInt(color.slice(commasIndexes[0] + 1, commasIndexes[1]).trim()),
|
|
216
|
-
b: parseInt(color.slice(commasIndexes[1] + 1, commasIndexes[2]).trim()),
|
|
217
|
-
};
|
|
218
|
-
};
|
|
219
|
-
|
|
220
|
-
/**
|
|
221
|
-
* Return an object with the properties for each of the main colors(red, green, blue)
|
|
222
|
-
* @param {String} color Receives a color in the following format: "rgb(0, 0, 0)
|
|
223
|
-
*/
|
|
224
|
-
const RGBStringToRGBObject = (color: string): ColorRGB => {
|
|
225
|
-
const openingBracketIndex = color.indexOf("("),
|
|
226
|
-
closingBraketIndex = color.indexOf(")"),
|
|
227
|
-
commasIndexes = [];
|
|
228
|
-
|
|
229
|
-
for (let i = 0; i < color.length; i++) {
|
|
230
|
-
if (color[i] === ",") {
|
|
231
|
-
commasIndexes.push(i);
|
|
232
|
-
}
|
|
233
|
-
}
|
|
234
|
-
|
|
235
|
-
return {
|
|
236
|
-
r: parseInt(color.slice(openingBracketIndex + 1, commasIndexes[0]).trim()),
|
|
237
|
-
g: parseInt(color.slice(commasIndexes[0] + 1, commasIndexes[1]).trim()),
|
|
238
|
-
b: parseInt(color.slice(commasIndexes[1] + 1, closingBraketIndex).trim()),
|
|
239
|
-
};
|
|
240
|
-
};
|
|
241
|
-
|
|
242
|
-
const HSLToRGB = (color: ColorHSL): ColorRGB => {
|
|
243
|
-
// Formula taken from https://www.rapidtables.com/convert/color/hsl-to-rgb.html
|
|
244
|
-
const C = (1 - Math.abs((2 * color.l) - 1)) * color.s,
|
|
245
|
-
X = C * (1 - Math.abs(((color.h / 60) % 2) - 1)),
|
|
246
|
-
m = color.l - C / 2;
|
|
247
|
-
|
|
248
|
-
let tempColor: ColorRGB;
|
|
249
|
-
switch (Math.round(color.h / 60)) {
|
|
250
|
-
// 0 ≤ H < 60
|
|
251
|
-
case 0:
|
|
252
|
-
tempColor = {
|
|
253
|
-
r: C,
|
|
254
|
-
g: X,
|
|
255
|
-
b: 0,
|
|
256
|
-
};
|
|
257
|
-
break;
|
|
258
|
-
|
|
259
|
-
// 60 ≤ H < 120
|
|
260
|
-
case 1:
|
|
261
|
-
tempColor = {
|
|
262
|
-
r: X,
|
|
263
|
-
g: C,
|
|
264
|
-
b: 0,
|
|
265
|
-
};
|
|
266
|
-
break;
|
|
267
|
-
|
|
268
|
-
// 120 ≤ H < 180
|
|
269
|
-
case 2:
|
|
270
|
-
tempColor = {
|
|
271
|
-
r: 0,
|
|
272
|
-
g: C,
|
|
273
|
-
b: X,
|
|
274
|
-
};
|
|
275
|
-
break;
|
|
276
|
-
|
|
277
|
-
// 180 ≤ H < 240
|
|
278
|
-
case 3:
|
|
279
|
-
tempColor = {
|
|
280
|
-
r: 0,
|
|
281
|
-
g: X,
|
|
282
|
-
b: C,
|
|
283
|
-
};
|
|
284
|
-
break;
|
|
285
|
-
|
|
286
|
-
// 240 ≤ H < 300
|
|
287
|
-
case 4:
|
|
288
|
-
tempColor = {
|
|
289
|
-
r: X,
|
|
290
|
-
g: 0,
|
|
291
|
-
b: C,
|
|
292
|
-
};
|
|
293
|
-
break;
|
|
294
|
-
|
|
295
|
-
// 300 ≤ H < 360
|
|
296
|
-
default:
|
|
297
|
-
tempColor = {
|
|
298
|
-
r: C,
|
|
299
|
-
g: 0,
|
|
300
|
-
b: X,
|
|
301
|
-
};
|
|
302
|
-
}
|
|
303
|
-
|
|
304
|
-
return {
|
|
305
|
-
r: Math.floor((tempColor.r + m) * 255),
|
|
306
|
-
g: Math.floor((tempColor.g + m) * 255),
|
|
307
|
-
b: Math.floor((tempColor.b + m) * 255),
|
|
308
|
-
};
|
|
309
|
-
};
|
|
310
|
-
|
|
311
|
-
const HEXToRGB = (hex: string): ColorRGB => {
|
|
312
|
-
// Please make sure you pass a valid 6 digit hex color
|
|
313
|
-
// In the implementation of this method we assume that the hex argument is a 6 digit valid hex color
|
|
314
|
-
|
|
315
|
-
return {
|
|
316
|
-
r: parseInt(hex.substr(0, 2), 16),
|
|
317
|
-
g: parseInt(hex.substr(2, 2), 16),
|
|
318
|
-
b: parseInt(hex.substr(4, 2), 16),
|
|
319
|
-
};
|
|
320
|
-
};
|
|
321
|
-
|
|
322
|
-
/**
|
|
323
|
-
* Returns the hex value of the color as string
|
|
324
|
-
* @param {Object} color Receives an object with the properties for each of the main colors(r, g, b)
|
|
325
|
-
*/
|
|
326
|
-
const RGBtoHEX = (color: ColorRGB): string => {
|
|
327
|
-
const hexMap = ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "A", "B", "C", "D", "E"];
|
|
328
|
-
let hexValue = "#";
|
|
329
|
-
|
|
330
|
-
let divisionNumber = color.r / 16;
|
|
331
|
-
let remainder = color.r % 16;
|
|
332
|
-
hexValue += String(hexMap[Math.floor(divisionNumber)]);
|
|
333
|
-
hexValue += String(hexMap[remainder]);
|
|
334
|
-
|
|
335
|
-
divisionNumber = color.g / 16;
|
|
336
|
-
remainder = color.g % 16;
|
|
337
|
-
hexValue += String(hexMap[Math.floor(divisionNumber)]);
|
|
338
|
-
hexValue += String(hexMap[remainder]);
|
|
339
|
-
|
|
340
|
-
divisionNumber = color.b / 16;
|
|
341
|
-
remainder = color.b % 16;
|
|
342
|
-
hexValue += String(hexMap[Math.floor(divisionNumber)]);
|
|
343
|
-
hexValue += String(hexMap[remainder]);
|
|
344
|
-
|
|
345
|
-
return hexValue;
|
|
346
|
-
};
|
|
347
|
-
|
|
348
|
-
const RGBToHSL = (color: ColorRGB): ColorHSL => {
|
|
349
|
-
const R = color.r / 255,
|
|
350
|
-
G = color.g / 255,
|
|
351
|
-
B = color.b / 255,
|
|
352
|
-
max = Math.max(R, G, B),
|
|
353
|
-
min = Math.min(R, G, B),
|
|
354
|
-
delta = max - min;
|
|
355
|
-
|
|
356
|
-
let h = 0,
|
|
357
|
-
s;
|
|
358
|
-
|
|
359
|
-
// Hue calculation
|
|
360
|
-
if (delta === 0) {
|
|
361
|
-
h = 0;
|
|
362
|
-
} else if (max === R) {
|
|
363
|
-
h = 60 * (((G - B) / delta) % 6);
|
|
364
|
-
} else if (max === G) {
|
|
365
|
-
h = 60 * (((B - R) / delta) + 2);
|
|
366
|
-
} else if (max === B) {
|
|
367
|
-
h = 60 * (((R - G) / delta) + 4);
|
|
368
|
-
}
|
|
369
|
-
|
|
370
|
-
// Lightness calculation
|
|
371
|
-
const l = (max + min) / 2;
|
|
372
|
-
|
|
373
|
-
// Saturation calculation
|
|
374
|
-
if (delta === 0) {
|
|
375
|
-
s = 0;
|
|
376
|
-
} else {
|
|
377
|
-
s = delta / (1 - Math.abs(2 * l - 1));
|
|
378
|
-
}
|
|
379
|
-
|
|
380
|
-
return {
|
|
381
|
-
h,
|
|
382
|
-
s,
|
|
383
|
-
l,
|
|
384
|
-
};
|
|
385
|
-
};
|
|
386
|
-
|
|
387
|
-
export {
|
|
388
|
-
getRGBColor,
|
|
389
|
-
HSLToRGB,
|
|
390
|
-
HEXToRGB,
|
|
391
|
-
RGBToHSL,
|
|
392
|
-
RGBStringToRGBObject,
|
|
393
|
-
RGBtoHEX,
|
|
394
|
-
};
|
|
395
|
-
|
|
396
|
-
export type {
|
|
397
|
-
ColorHSL,
|
|
398
|
-
ColorRGB,
|
|
399
|
-
};
|
package/src/util/FetchHelper.ts
DELETED
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
const fetchPromises = new Map<string, Promise<Response>>();
|
|
2
|
-
const jsonPromises = new Map<string, Promise<any>>();
|
|
3
|
-
const textPromises = new Map<string, Promise<string>>();
|
|
4
|
-
|
|
5
|
-
const fetchTextOnce = async (url: string) => {
|
|
6
|
-
if (!fetchPromises.get(url)) {
|
|
7
|
-
fetchPromises.set(url, fetch(url));
|
|
8
|
-
}
|
|
9
|
-
const response = await fetchPromises.get(url);
|
|
10
|
-
|
|
11
|
-
if (response && !textPromises.get(url)) {
|
|
12
|
-
textPromises.set(url, response.text());
|
|
13
|
-
}
|
|
14
|
-
|
|
15
|
-
return textPromises.get(url);
|
|
16
|
-
};
|
|
17
|
-
|
|
18
|
-
const fetchJsonOnce = async (url: string) => {
|
|
19
|
-
if (!fetchPromises.get(url)) {
|
|
20
|
-
fetchPromises.set(url, fetch(url));
|
|
21
|
-
}
|
|
22
|
-
const response = await fetchPromises.get(url);
|
|
23
|
-
|
|
24
|
-
if (response && !jsonPromises.get(url)) {
|
|
25
|
-
jsonPromises.set(url, response.json());
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
return jsonPromises.get(url);
|
|
29
|
-
};
|
|
30
|
-
|
|
31
|
-
export { fetchTextOnce, fetchJsonOnce };
|
|
@@ -1,92 +0,0 @@
|
|
|
1
|
-
import isElementHidden from "./isElementHidden.js";
|
|
2
|
-
import isElementClickable from "./isElementClickable.js";
|
|
3
|
-
import { instanceOfUI5Element } from "../UI5Element.js";
|
|
4
|
-
|
|
5
|
-
type FocusableElementPromise = Promise<HTMLElement | null>;
|
|
6
|
-
|
|
7
|
-
const isFocusTrap = (el: HTMLElement) => {
|
|
8
|
-
return el.hasAttribute("data-ui5-focus-trap");
|
|
9
|
-
};
|
|
10
|
-
|
|
11
|
-
const getFirstFocusableElement = async (container: HTMLElement, startFromContainer?: boolean): FocusableElementPromise => {
|
|
12
|
-
if (!container || isElementHidden(container)) {
|
|
13
|
-
return null;
|
|
14
|
-
}
|
|
15
|
-
|
|
16
|
-
return findFocusableElement(container, true, startFromContainer);
|
|
17
|
-
};
|
|
18
|
-
|
|
19
|
-
const getLastFocusableElement = async (container: HTMLElement, startFromContainer?: boolean): FocusableElementPromise => {
|
|
20
|
-
if (!container || isElementHidden(container)) {
|
|
21
|
-
return null;
|
|
22
|
-
}
|
|
23
|
-
|
|
24
|
-
return findFocusableElement(container, false, startFromContainer);
|
|
25
|
-
};
|
|
26
|
-
|
|
27
|
-
const isElemFocusable = (el: HTMLElement) => {
|
|
28
|
-
return el.hasAttribute("data-ui5-focus-redirect") || !isElementHidden(el);
|
|
29
|
-
};
|
|
30
|
-
|
|
31
|
-
const findFocusableElement = async (container: HTMLElement, forward: boolean, startFromContainer?: boolean): FocusableElementPromise => {
|
|
32
|
-
let child: HTMLElement | undefined;
|
|
33
|
-
let assignedElements;
|
|
34
|
-
let currentIndex = -1;
|
|
35
|
-
|
|
36
|
-
if (container.shadowRoot) {
|
|
37
|
-
child = forward ? container.shadowRoot.firstChild as HTMLElement : container.shadowRoot.lastChild as HTMLElement;
|
|
38
|
-
} else if (container instanceof HTMLSlotElement && container.assignedNodes()) {
|
|
39
|
-
assignedElements = container.assignedNodes();
|
|
40
|
-
currentIndex = forward ? 0 : assignedElements.length - 1;
|
|
41
|
-
child = assignedElements[currentIndex] as HTMLElement;
|
|
42
|
-
} else if (startFromContainer) {
|
|
43
|
-
child = container;
|
|
44
|
-
} else {
|
|
45
|
-
child = forward ? container.firstElementChild as HTMLElement : container.lastElementChild as HTMLElement;
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
let focusableDescendant;
|
|
49
|
-
|
|
50
|
-
/* eslint-disable no-await-in-loop */
|
|
51
|
-
|
|
52
|
-
while (child) {
|
|
53
|
-
const originalChild: HTMLElement | undefined = child;
|
|
54
|
-
|
|
55
|
-
if (instanceOfUI5Element(child)) {
|
|
56
|
-
child = await child.getFocusDomRefAsync();
|
|
57
|
-
}
|
|
58
|
-
|
|
59
|
-
if (!child) {
|
|
60
|
-
return null;
|
|
61
|
-
}
|
|
62
|
-
|
|
63
|
-
if (child.nodeType === 1 && isElemFocusable(child) && !isFocusTrap(child)) {
|
|
64
|
-
if (isElementClickable(child)) {
|
|
65
|
-
return (child && typeof child.focus === "function") ? child : null;
|
|
66
|
-
}
|
|
67
|
-
|
|
68
|
-
focusableDescendant = await findFocusableElement(child, forward);
|
|
69
|
-
if (focusableDescendant) {
|
|
70
|
-
return (focusableDescendant && typeof focusableDescendant.focus === "function") ? focusableDescendant : null;
|
|
71
|
-
}
|
|
72
|
-
}
|
|
73
|
-
|
|
74
|
-
child = forward ? originalChild.nextSibling as HTMLElement : originalChild.previousSibling as HTMLElement;
|
|
75
|
-
|
|
76
|
-
// If the child element is not part of the currently assigned element,
|
|
77
|
-
// we have to check the next element assigned to the slot or continue with the next sibling of the slot,
|
|
78
|
-
// otherwise, the nextSibling is the next element inside the light DOM
|
|
79
|
-
if (assignedElements && !assignedElements[currentIndex].contains(child)) {
|
|
80
|
-
child = assignedElements[++currentIndex] as HTMLElement;
|
|
81
|
-
}
|
|
82
|
-
}
|
|
83
|
-
|
|
84
|
-
/* eslint-enable no-await-in-loop */
|
|
85
|
-
|
|
86
|
-
return null;
|
|
87
|
-
};
|
|
88
|
-
|
|
89
|
-
export {
|
|
90
|
-
getFirstFocusableElement,
|
|
91
|
-
getLastFocusableElement,
|
|
92
|
-
};
|
|
@@ -1,69 +0,0 @@
|
|
|
1
|
-
import InvisibleMessageMode from "../types/InvisibleMessageMode.js";
|
|
2
|
-
import getSingletonElementInstance from "./getSingletonElementInstance.js";
|
|
3
|
-
import { attachBoot } from "../Boot.js";
|
|
4
|
-
|
|
5
|
-
let politeSpan: HTMLElement;
|
|
6
|
-
let assertiveSpan: HTMLElement;
|
|
7
|
-
|
|
8
|
-
const setOutOfViewportStyles = (el: HTMLElement) => {
|
|
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
|
-
|
|
17
|
-
attachBoot(() => {
|
|
18
|
-
if (politeSpan && assertiveSpan) {
|
|
19
|
-
return;
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
politeSpan = document.createElement("span");
|
|
23
|
-
assertiveSpan = document.createElement("span");
|
|
24
|
-
|
|
25
|
-
politeSpan.classList.add("ui5-invisiblemessage-polite");
|
|
26
|
-
assertiveSpan.classList.add("ui5-invisiblemessage-assertive");
|
|
27
|
-
|
|
28
|
-
politeSpan.setAttribute("aria-live", "polite");
|
|
29
|
-
assertiveSpan.setAttribute("aria-live", "assertive");
|
|
30
|
-
|
|
31
|
-
politeSpan.setAttribute("role", "alert");
|
|
32
|
-
assertiveSpan.setAttribute("role", "alert");
|
|
33
|
-
|
|
34
|
-
setOutOfViewportStyles(politeSpan);
|
|
35
|
-
setOutOfViewportStyles(assertiveSpan);
|
|
36
|
-
|
|
37
|
-
getSingletonElementInstance("ui5-static-area").appendChild(politeSpan);
|
|
38
|
-
getSingletonElementInstance("ui5-static-area").appendChild(assertiveSpan);
|
|
39
|
-
});
|
|
40
|
-
|
|
41
|
-
/**
|
|
42
|
-
* Inserts the string into the respective span, depending on the mode provided.
|
|
43
|
-
*
|
|
44
|
-
* @param { string } message String to be announced by the screen reader.
|
|
45
|
-
* @param { InvisibleMessageMode } mode The mode to be inserted in the aria-live attribute.
|
|
46
|
-
* @public
|
|
47
|
-
*/
|
|
48
|
-
const announce = (message: string, mode: InvisibleMessageMode) => {
|
|
49
|
-
// If no type is presented, fallback to polite announcement.
|
|
50
|
-
const span = mode === InvisibleMessageMode.Assertive ? assertiveSpan : politeSpan;
|
|
51
|
-
|
|
52
|
-
// Set textContent to empty string in order to trigger screen reader's announcement.
|
|
53
|
-
span.textContent = "";
|
|
54
|
-
span.textContent = message;
|
|
55
|
-
|
|
56
|
-
if (mode !== InvisibleMessageMode.Assertive && mode !== InvisibleMessageMode.Polite) {
|
|
57
|
-
console.warn(`You have entered an invalid mode. Valid values are: "Polite" and "Assertive". The framework will automatically set the mode to "Polite".`); // eslint-disable-line
|
|
58
|
-
}
|
|
59
|
-
|
|
60
|
-
// clear the span in order to avoid reading it out while in JAWS reading node
|
|
61
|
-
setTimeout(() => {
|
|
62
|
-
// ensure that we clear the text node only if no announce is made in the meantime
|
|
63
|
-
if (span.textContent === message) {
|
|
64
|
-
span.textContent = "";
|
|
65
|
-
}
|
|
66
|
-
}, 3000);
|
|
67
|
-
};
|
|
68
|
-
|
|
69
|
-
export default announce;
|
package/src/util/PopupUtils.ts
DELETED
|
@@ -1,112 +0,0 @@
|
|
|
1
|
-
import getSharedResource from "../getSharedResource.js";
|
|
2
|
-
import { getFeature } from "../FeaturesRegistry.js";
|
|
3
|
-
import getActiveElement from "./getActiveElement.js";
|
|
4
|
-
import type OpenUI5Support from "../features/OpenUI5Support.js";
|
|
5
|
-
|
|
6
|
-
type PopupUtilsData = {
|
|
7
|
-
currentZIndex: number
|
|
8
|
-
};
|
|
9
|
-
|
|
10
|
-
const popupUtilsData = getSharedResource<PopupUtilsData>("PopupUtilsData", { currentZIndex: 100 });
|
|
11
|
-
|
|
12
|
-
const getFocusedElement = () => {
|
|
13
|
-
const element = getActiveElement() as HTMLElement;
|
|
14
|
-
return (element && typeof element.focus === "function") ? element : null;
|
|
15
|
-
};
|
|
16
|
-
|
|
17
|
-
const isFocusedElementWithinNode = (node: HTMLElement) => {
|
|
18
|
-
const fe = getFocusedElement();
|
|
19
|
-
|
|
20
|
-
if (fe) {
|
|
21
|
-
return isNodeContainedWithin(node, fe);
|
|
22
|
-
}
|
|
23
|
-
|
|
24
|
-
return false;
|
|
25
|
-
};
|
|
26
|
-
|
|
27
|
-
const isNodeContainedWithin = (parent: HTMLElement, child: HTMLElement): boolean => {
|
|
28
|
-
let currentNode: HTMLElement | undefined = parent;
|
|
29
|
-
|
|
30
|
-
if (currentNode.shadowRoot) {
|
|
31
|
-
const children = Array.from(currentNode.shadowRoot.children) as Array<HTMLElement>;
|
|
32
|
-
currentNode = children.find(n => n.localName !== "style");
|
|
33
|
-
|
|
34
|
-
if (!currentNode) {
|
|
35
|
-
return false;
|
|
36
|
-
}
|
|
37
|
-
}
|
|
38
|
-
|
|
39
|
-
if (currentNode === child) {
|
|
40
|
-
return true;
|
|
41
|
-
}
|
|
42
|
-
|
|
43
|
-
const childNodes = currentNode.localName === "slot" ? (currentNode as HTMLSlotElement).assignedNodes() : currentNode.children;
|
|
44
|
-
|
|
45
|
-
if (childNodes) {
|
|
46
|
-
return Array.from(childNodes).some(n => isNodeContainedWithin(n as HTMLElement, child));
|
|
47
|
-
}
|
|
48
|
-
|
|
49
|
-
return false;
|
|
50
|
-
};
|
|
51
|
-
|
|
52
|
-
const isPointInRect = (x: number, y: number, rect: DOMRect) => {
|
|
53
|
-
return x >= rect.left && x <= rect.right
|
|
54
|
-
&& y >= rect.top && y <= rect.bottom;
|
|
55
|
-
};
|
|
56
|
-
|
|
57
|
-
const isClickInRect = (e: MouseEvent | TouchEvent, rect: DOMRect) => {
|
|
58
|
-
let x;
|
|
59
|
-
let y;
|
|
60
|
-
|
|
61
|
-
if (e instanceof MouseEvent) {
|
|
62
|
-
x = e.clientX;
|
|
63
|
-
y = e.clientY;
|
|
64
|
-
} else {
|
|
65
|
-
const touch = e.touches[0];
|
|
66
|
-
x = touch.clientX;
|
|
67
|
-
y = touch.clientY;
|
|
68
|
-
}
|
|
69
|
-
|
|
70
|
-
return isPointInRect(x, y, rect);
|
|
71
|
-
};
|
|
72
|
-
|
|
73
|
-
interface PopupInterface { // Refactor: replace with Popup.js
|
|
74
|
-
_show: () => void,
|
|
75
|
-
open: boolean,
|
|
76
|
-
}
|
|
77
|
-
function instanceOfPopup(object: any): object is PopupInterface {
|
|
78
|
-
return "isUI5Element" in object && "_show" in object;
|
|
79
|
-
}
|
|
80
|
-
|
|
81
|
-
const getClosedPopupParent = (el: HTMLElement): HTMLElement => {
|
|
82
|
-
const parent = el.parentElement || (el.getRootNode && (el.getRootNode() as ShadowRoot).host);
|
|
83
|
-
|
|
84
|
-
if (parent && ((instanceOfPopup(parent) || parent === document.documentElement))) {
|
|
85
|
-
return parent as HTMLElement;
|
|
86
|
-
}
|
|
87
|
-
|
|
88
|
-
return getClosedPopupParent(parent as HTMLElement);
|
|
89
|
-
};
|
|
90
|
-
|
|
91
|
-
const getNextZIndex = () => {
|
|
92
|
-
const openUI5Support = getFeature<typeof OpenUI5Support>("OpenUI5Support");
|
|
93
|
-
if (openUI5Support && openUI5Support.isLoaded()) { // use OpenUI5 for getting z-index values, if loaded
|
|
94
|
-
return openUI5Support.getNextZIndex();
|
|
95
|
-
}
|
|
96
|
-
|
|
97
|
-
popupUtilsData.currentZIndex += 2;
|
|
98
|
-
return popupUtilsData.currentZIndex;
|
|
99
|
-
};
|
|
100
|
-
|
|
101
|
-
const getCurrentZIndex = () => {
|
|
102
|
-
return popupUtilsData.currentZIndex;
|
|
103
|
-
};
|
|
104
|
-
|
|
105
|
-
export {
|
|
106
|
-
getFocusedElement,
|
|
107
|
-
isClickInRect,
|
|
108
|
-
getClosedPopupParent,
|
|
109
|
-
getNextZIndex,
|
|
110
|
-
getCurrentZIndex,
|
|
111
|
-
isFocusedElementWithinNode,
|
|
112
|
-
};
|