@sap-ux/ui-components 1.14.2 → 1.15.0

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.
Files changed (28) hide show
  1. package/dist/components/UIQuickNavigation/UIQuickNavigation.d.ts +31 -0
  2. package/dist/components/UIQuickNavigation/UIQuickNavigation.d.ts.map +1 -0
  3. package/dist/components/UIQuickNavigation/UIQuickNavigation.js +251 -0
  4. package/dist/components/UIQuickNavigation/UIQuickNavigation.js.map +1 -0
  5. package/dist/components/UIQuickNavigation/UIQuickNavigation.scss +33 -0
  6. package/dist/components/UIQuickNavigation/index.d.ts +2 -0
  7. package/dist/components/UIQuickNavigation/index.d.ts.map +1 -0
  8. package/dist/components/UIQuickNavigation/index.js +18 -0
  9. package/dist/components/UIQuickNavigation/index.js.map +1 -0
  10. package/dist/components/index.d.ts +1 -0
  11. package/dist/components/index.d.ts.map +1 -1
  12. package/dist/components/index.js +1 -0
  13. package/dist/components/index.js.map +1 -1
  14. package/dist/utilities/Dom.d.ts +1 -1
  15. package/dist/utilities/Dom.d.ts.map +1 -1
  16. package/dist/utilities/Dom.js.map +1 -1
  17. package/package.json +1 -1
  18. package/storybook/666.9eb67cb9.iframe.bundle.js +7 -0
  19. package/storybook/UIQuickNavigation-story.14c63c2c.iframe.bundle.js +1 -0
  20. package/storybook/iframe.html +2 -2
  21. package/storybook/index.json +1 -1
  22. package/storybook/main.3da10e91.iframe.bundle.js +1 -0
  23. package/storybook/project.json +1 -1
  24. package/storybook/runtime~main.6f623654.iframe.bundle.js +2 -0
  25. package/storybook/stories.json +1 -1
  26. package/storybook/666.7332043d.iframe.bundle.js +0 -7
  27. package/storybook/main.4ed99289.iframe.bundle.js +0 -1
  28. package/storybook/runtime~main.8927df25.iframe.bundle.js +0 -2
@@ -0,0 +1,31 @@
1
+ import React from 'react';
2
+ import './UIQuickNavigation.scss';
3
+ export declare const QUICK_NAVIGATION_ATTRIBUTE = "data-quick-navigation-key";
4
+ export declare const QUICK_NAVIGATION_ATTRIBUTE_OFFSET_Y = "data-quick-navigation-offset-y";
5
+ export declare const QUICK_NAVIGATION_ATTRIBUTE_OFFSET_X = "data-quick-navigation-offset-x";
6
+ export interface UIQuickNavigationAttribute {
7
+ [QUICK_NAVIGATION_ATTRIBUTE]: string;
8
+ [QUICK_NAVIGATION_ATTRIBUTE_OFFSET_Y]?: string;
9
+ [QUICK_NAVIGATION_ATTRIBUTE_OFFSET_X]?: string;
10
+ }
11
+ export declare const setQuickNavigationKey: (key: string, offset?: UIQuickNavigationOffset) => UIQuickNavigationAttribute;
12
+ export interface UIQuickNavigationOffset {
13
+ x: number;
14
+ y: number;
15
+ }
16
+ export interface UIQuickNavigationProps {
17
+ className?: string;
18
+ children: React.ReactNode;
19
+ inline?: boolean;
20
+ offset?: UIQuickNavigationOffset;
21
+ }
22
+ /**
23
+ * Method checks if quick navigation should be enabled for passed keyboard event.
24
+ * Quick navigation is enabled when user hold 'ctrl + alt' or 'meta + alt'.
25
+ *
26
+ * @param event Keyboard event.
27
+ * @returns True if quick navigation should be enabled for passed keyboard event.
28
+ */
29
+ export declare const isQuickNavigationEnabled: (event: KeyboardEvent) => boolean;
30
+ export declare const UIQuickNavigation: React.FC<UIQuickNavigationProps>;
31
+ //# sourceMappingURL=UIQuickNavigation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"UIQuickNavigation.d.ts","sourceRoot":"","sources":["../../../src/components/UIQuickNavigation/UIQuickNavigation.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAmD,MAAM,OAAO,CAAC;AAGxE,OAAO,0BAA0B,CAAC;AAElC,eAAO,MAAM,0BAA0B,8BAA8B,CAAC;AACtE,eAAO,MAAM,mCAAmC,mCAAmC,CAAC;AACpF,eAAO,MAAM,mCAAmC,mCAAmC,CAAC;AAUpF,MAAM,WAAW,0BAA0B;IACvC,CAAC,0BAA0B,CAAC,EAAE,MAAM,CAAC;IACrC,CAAC,mCAAmC,CAAC,CAAC,EAAE,MAAM,CAAC;IAC/C,CAAC,mCAAmC,CAAC,CAAC,EAAE,MAAM,CAAC;CAClD;AAED,eAAO,MAAM,qBAAqB,QAAS,MAAM,WAAW,uBAAuB,KAAG,0BASrF,CAAC;AAEF,MAAM,WAAW,uBAAuB;IACpC,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;CACb;AAED,MAAM,WAAW,sBAAsB;IACnC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,MAAM,CAAC,EAAE,uBAAuB,CAAC;CACpC;AA+FD;;;;;;GAMG;AACH,eAAO,MAAM,wBAAwB,UAAW,aAAa,KAAG,OAE/D,CAAC;AAwBF,eAAO,MAAM,iBAAiB,EAAE,KAAK,CAAC,EAAE,CAAC,sBAAsB,CAsF9D,CAAC"}
@@ -0,0 +1,251 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ Object.defineProperty(exports, "__esModule", { value: true });
26
+ exports.UIQuickNavigation = exports.isQuickNavigationEnabled = exports.setQuickNavigationKey = exports.QUICK_NAVIGATION_ATTRIBUTE_OFFSET_X = exports.QUICK_NAVIGATION_ATTRIBUTE_OFFSET_Y = exports.QUICK_NAVIGATION_ATTRIBUTE = void 0;
27
+ const react_1 = __importStar(require("react"));
28
+ const utilities_1 = require("../../utilities");
29
+ require("./UIQuickNavigation.scss");
30
+ exports.QUICK_NAVIGATION_ATTRIBUTE = 'data-quick-navigation-key';
31
+ exports.QUICK_NAVIGATION_ATTRIBUTE_OFFSET_Y = 'data-quick-navigation-offset-y';
32
+ exports.QUICK_NAVIGATION_ATTRIBUTE_OFFSET_X = 'data-quick-navigation-offset-x';
33
+ const QUICK_NAVIGATION_CLASSES = {
34
+ inline: 'quick-navigation--inline',
35
+ external: 'quick-navigation--external'
36
+ };
37
+ const EXTERNAL_HELPER_OFFSET = {
38
+ x: 15,
39
+ y: 15
40
+ };
41
+ const setQuickNavigationKey = (key, offset) => {
42
+ const attributes = {
43
+ [exports.QUICK_NAVIGATION_ATTRIBUTE]: key.toUpperCase()
44
+ };
45
+ if (offset) {
46
+ attributes[exports.QUICK_NAVIGATION_ATTRIBUTE_OFFSET_Y] = offset.y.toString();
47
+ attributes[exports.QUICK_NAVIGATION_ATTRIBUTE_OFFSET_X] = offset.x.toString();
48
+ }
49
+ return attributes;
50
+ };
51
+ exports.setQuickNavigationKey = setQuickNavigationKey;
52
+ /**
53
+ * Method returns CSS classnames based on current quick navigation state.
54
+ *
55
+ * @param className External classname(s).
56
+ * @param enabled Is quick navigation enabled/activated.
57
+ * @param inline Is quick navigation should be rendered with inline approach.
58
+ * @returns CSS classnames based on current quick navigation state.
59
+ */
60
+ function getClassName(className, enabled, inline) {
61
+ const result = [className];
62
+ if (enabled && inline) {
63
+ result.push(QUICK_NAVIGATION_CLASSES.inline);
64
+ }
65
+ return result.join(' ');
66
+ }
67
+ /**
68
+ * Method returns scroll offset position for external rendering approach.
69
+ * External rendering happens in 'document.body' and body scroll position should be considered.
70
+ *
71
+ * @returns Scroll position of body and html.
72
+ */
73
+ function getScrollOffset() {
74
+ let container = document.body;
75
+ const scrollOffset = {
76
+ y: 0,
77
+ x: 0
78
+ };
79
+ do {
80
+ scrollOffset.y += container.scrollTop || 0;
81
+ scrollOffset.x += container.scrollLeft || 0;
82
+ container = container.parentNode && (0, utilities_1.isHTMLElement)(container.parentNode) ? container.parentNode : undefined;
83
+ } while (container);
84
+ return scrollOffset;
85
+ }
86
+ /**
87
+ * Method returns offset for passed DOM element.
88
+ *
89
+ * @param target Target element to detect offset.
90
+ * @returns Scroll position of body and html.
91
+ */
92
+ function getOffsetFromElement(target) {
93
+ const yAttr = target.getAttribute(exports.QUICK_NAVIGATION_ATTRIBUTE_OFFSET_Y);
94
+ const xAttr = target.getAttribute(exports.QUICK_NAVIGATION_ATTRIBUTE_OFFSET_X);
95
+ if (!yAttr || !xAttr) {
96
+ return undefined;
97
+ }
98
+ const y = parseFloat(yAttr);
99
+ const x = parseFloat(xAttr);
100
+ return !isNaN(y) && !isNaN(x) ? { y, x } : undefined;
101
+ }
102
+ /**
103
+ * Method toggles visibility of external quick navigation helpers UI.
104
+ *
105
+ * @param enabled Is quick navigation enabled/activated.
106
+ * @param offset Offset values for helper position.
107
+ */
108
+ function toggleExternalVisibility(enabled, offset = EXTERNAL_HELPER_OFFSET) {
109
+ const holder = document.body;
110
+ // Cleanup container
111
+ const existingContainer = document.querySelector(`.${QUICK_NAVIGATION_CLASSES.external}`);
112
+ if (existingContainer) {
113
+ holder.removeChild(existingContainer);
114
+ }
115
+ // Show helpers if quick navigation is active
116
+ if (enabled) {
117
+ // Create external container
118
+ const externalContainer = document.createElement('div');
119
+ externalContainer.classList.add(QUICK_NAVIGATION_CLASSES.external);
120
+ const navigationTargets = document.querySelectorAll(`[${exports.QUICK_NAVIGATION_ATTRIBUTE}]`);
121
+ // Create external DOM element to each navigation target
122
+ const scrollOffset = getScrollOffset();
123
+ navigationTargets.forEach((target) => {
124
+ const rect = target.getBoundingClientRect();
125
+ const helper = document.createElement('div');
126
+ helper.textContent = target.getAttribute(exports.QUICK_NAVIGATION_ATTRIBUTE);
127
+ const elementOffset = getOffsetFromElement(target) ?? offset;
128
+ const position = {
129
+ top: rect.top + scrollOffset.y - elementOffset.y,
130
+ left: rect.left + scrollOffset.x - elementOffset.x
131
+ };
132
+ position.top = Math.max(position.top, 0);
133
+ position.left = Math.max(position.left, 0);
134
+ helper.style.top = `${position.top}px`;
135
+ helper.style.left = `${position.left}px`;
136
+ externalContainer.appendChild(helper);
137
+ });
138
+ holder.appendChild(externalContainer);
139
+ }
140
+ }
141
+ /**
142
+ * Method checks if quick navigation should be enabled for passed keyboard event.
143
+ * Quick navigation is enabled when user hold 'ctrl + alt' or 'meta + alt'.
144
+ *
145
+ * @param event Keyboard event.
146
+ * @returns True if quick navigation should be enabled for passed keyboard event.
147
+ */
148
+ const isQuickNavigationEnabled = (event) => {
149
+ return (event.ctrlKey || event.metaKey) && event.altKey;
150
+ };
151
+ exports.isQuickNavigationEnabled = isQuickNavigationEnabled;
152
+ /**
153
+ * Method resolves passed keyboard code by removing 'Digit' and 'Key' keywords.
154
+ *
155
+ * @param code Code from keyboard event.
156
+ * @returns Resolved char or digit.
157
+ */
158
+ function resolveKeyCode(code) {
159
+ return code.replace('Digit', '').replace('Key', '').toUpperCase();
160
+ }
161
+ /**
162
+ * Method to stop event bubbling.
163
+ *
164
+ * @param event Keyboard event.
165
+ */
166
+ function stopEventBubling(event) {
167
+ event.stopImmediatePropagation();
168
+ event.stopPropagation();
169
+ event.preventDefault();
170
+ }
171
+ // eslint-disable-next-line @typescript-eslint/naming-convention
172
+ const UIQuickNavigation = (props) => {
173
+ const { className, children, inline, offset } = props;
174
+ const [enabled, setEnabled] = (0, react_1.useState)(false);
175
+ const navigated = (0, react_1.useRef)(false);
176
+ // Handle visibility for 'external' rendering approach(helpers rendered outside of target navigation containers)
177
+ (0, react_1.useEffect)(() => {
178
+ if (inline) {
179
+ return;
180
+ }
181
+ toggleExternalVisibility(enabled, offset);
182
+ }, [enabled]);
183
+ /**
184
+ * Method handles key down event.
185
+ *
186
+ * @param event Key down event.
187
+ */
188
+ const onKeyDown = (0, react_1.useCallback)((event) => {
189
+ let activated = enabled;
190
+ if (!enabled && (0, exports.isQuickNavigationEnabled)(event)) {
191
+ setEnabled(true);
192
+ activated = true;
193
+ }
194
+ if (!activated) {
195
+ return;
196
+ }
197
+ // Quick navigation is active - handle final key press
198
+ const resolvedKey = resolveKeyCode(event.code);
199
+ const navigationElement = document.querySelector(`[${exports.QUICK_NAVIGATION_ATTRIBUTE}="${resolvedKey}"]`);
200
+ const startElement = navigationElement?.firstElementChild;
201
+ if (navigationElement && startElement && (0, utilities_1.isHTMLElement)(startElement)) {
202
+ const firstFocusableElement = (0, utilities_1.getUIFirstFocusable)(navigationElement, startElement, true);
203
+ if (firstFocusableElement) {
204
+ // Set focus visiblity in UI(fluent-ui feature)
205
+ (0, utilities_1.setUIFocusVisibility)(true, firstFocusableElement);
206
+ // Apply focus to element
207
+ firstFocusableElement?.focus();
208
+ // Prevent event bubbling
209
+ stopEventBubling(event);
210
+ navigated.current = true;
211
+ }
212
+ // Disable/deactivate UI with quick navigation
213
+ setEnabled(false);
214
+ }
215
+ }, [enabled]);
216
+ /**
217
+ * Method handles key up and window blur events to detect if quick navigation should be deactivated.
218
+ *
219
+ * @param event Key up or blur event.
220
+ */
221
+ const onRelease = (0, react_1.useCallback)((event) => {
222
+ if (enabled && (!('keyCode' in event) || !(0, exports.isQuickNavigationEnabled)(event))) {
223
+ setEnabled(false);
224
+ }
225
+ if (navigated.current) {
226
+ navigated.current = false;
227
+ stopEventBubling(event);
228
+ }
229
+ }, [enabled]);
230
+ /**
231
+ * Attach events to listen keydown/keyup within window and blur from window.
232
+ */
233
+ (0, react_1.useEffect)(() => {
234
+ document.body.addEventListener('keydown', onKeyDown);
235
+ document.body.addEventListener('keyup', onRelease);
236
+ window.addEventListener('blur', onRelease);
237
+ return () => {
238
+ toggleExternalVisibility(false);
239
+ document.body.removeEventListener('keydown', onKeyDown);
240
+ document.body.removeEventListener('keyup', onRelease);
241
+ window.removeEventListener('blur', onRelease);
242
+ };
243
+ }, [onKeyDown, onRelease]);
244
+ return react_1.default.createElement("div", { className: getClassName(className, enabled, inline) }, children);
245
+ };
246
+ exports.UIQuickNavigation = UIQuickNavigation;
247
+ exports.UIQuickNavigation.defaultProps = {
248
+ inline: false,
249
+ offset: EXTERNAL_HELPER_OFFSET
250
+ };
251
+ //# sourceMappingURL=UIQuickNavigation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"UIQuickNavigation.js","sourceRoot":"","sources":["../../../src/components/UIQuickNavigation/UIQuickNavigation.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,33 @@
1
+ // Define here
2
+ @mixin quick-navigation-helper {
3
+ font-family: var(--vscode-font-family);
4
+ color: var(--vscode-activityBarBadge-foreground);
5
+ font-size: 16px;
6
+ position: absolute;
7
+ background: var(--vscode-activityBarBadge-background);
8
+ padding: 5px;
9
+ width: 18px;
10
+ height: 18px;
11
+ text-align: center;
12
+ line-height: 18px;
13
+ border-radius: 2px;
14
+ box-shadow: var(--ui-box-shadow-small);
15
+ pointer-events: none;
16
+ }
17
+
18
+ .quick-navigation {
19
+ // Approach where we render helpers internally inside target containers
20
+ &--inline [data-quick-navigation-key] {
21
+ position: relative;
22
+ &:before {
23
+ @include quick-navigation-helper;
24
+ content: attr(data-quick-navigation-key);
25
+ top: -15px;
26
+ left: -15px;
27
+ }
28
+ }
29
+ // Approach where we render helpers externally outside target containers
30
+ &--external > div {
31
+ @include quick-navigation-helper;
32
+ }
33
+ }
@@ -0,0 +1,2 @@
1
+ export * from './UIQuickNavigation';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/UIQuickNavigation/index.tsx"],"names":[],"mappings":"AAAA,cAAc,qBAAqB,CAAC"}
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./UIQuickNavigation"), exports);
18
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/components/UIQuickNavigation/index.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,sDAAoC"}
@@ -21,6 +21,7 @@ export * from './UIMessageBar';
21
21
  export * from './UIModal';
22
22
  export * from './UIOverlay';
23
23
  export * from './UIPersona';
24
+ export * from './UIQuickNavigation';
24
25
  export * from './UISearchBox';
25
26
  export * from './UISeparator';
26
27
  export * from './UISection';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/components/index.tsx"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAC;AACxB,cAAc,YAAY,CAAC;AAC3B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC;AAC7B,cAAc,iBAAiB,CAAC;AAChC,cAAc,cAAc,CAAC;AAC7B,cAAc,oBAAoB,CAAC;AACnC,cAAc,kBAAkB,CAAC;AACjC,cAAc,YAAY,CAAC;AAC3B,cAAc,cAAc,CAAC;AAC7B,cAAc,mBAAmB,CAAC;AAClC,cAAc,eAAe,CAAC;AAC9B,cAAc,UAAU,CAAC;AACzB,cAAc,WAAW,CAAC;AAC1B,cAAc,WAAW,CAAC;AAC1B,cAAc,UAAU,CAAC;AACzB,cAAc,UAAU,CAAC;AACzB,cAAc,YAAY,CAAC;AAC3B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,WAAW,CAAC;AAC1B,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,eAAe,CAAC;AAC9B,cAAc,eAAe,CAAC;AAC9B,cAAc,aAAa,CAAC;AAC5B,cAAc,WAAW,CAAC;AAC1B,cAAc,UAAU,CAAC;AACzB,cAAc,YAAY,CAAC;AAC3B,cAAc,iBAAiB,CAAC;AAChC,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,sBAAsB,CAAC;AACrC,cAAc,kBAAkB,CAAC;AACjC,cAAc,qBAAqB,CAAC;AACpC,cAAc,iBAAiB,CAAC;AAChC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,mBAAmB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/components/index.tsx"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAC;AACxB,cAAc,YAAY,CAAC;AAC3B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC;AAC7B,cAAc,iBAAiB,CAAC;AAChC,cAAc,cAAc,CAAC;AAC7B,cAAc,oBAAoB,CAAC;AACnC,cAAc,kBAAkB,CAAC;AACjC,cAAc,YAAY,CAAC;AAC3B,cAAc,cAAc,CAAC;AAC7B,cAAc,mBAAmB,CAAC;AAClC,cAAc,eAAe,CAAC;AAC9B,cAAc,UAAU,CAAC;AACzB,cAAc,WAAW,CAAC;AAC1B,cAAc,WAAW,CAAC;AAC1B,cAAc,UAAU,CAAC;AACzB,cAAc,UAAU,CAAC;AACzB,cAAc,YAAY,CAAC;AAC3B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,WAAW,CAAC;AAC1B,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,qBAAqB,CAAC;AACpC,cAAc,eAAe,CAAC;AAC9B,cAAc,eAAe,CAAC;AAC9B,cAAc,aAAa,CAAC;AAC5B,cAAc,WAAW,CAAC;AAC1B,cAAc,UAAU,CAAC;AACzB,cAAc,YAAY,CAAC;AAC3B,cAAc,iBAAiB,CAAC;AAChC,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,sBAAsB,CAAC;AACrC,cAAc,kBAAkB,CAAC;AACjC,cAAc,qBAAqB,CAAC;AACpC,cAAc,iBAAiB,CAAC;AAChC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,mBAAmB,CAAC"}
@@ -37,6 +37,7 @@ __exportStar(require("./UIMessageBar"), exports);
37
37
  __exportStar(require("./UIModal"), exports);
38
38
  __exportStar(require("./UIOverlay"), exports);
39
39
  __exportStar(require("./UIPersona"), exports);
40
+ __exportStar(require("./UIQuickNavigation"), exports);
40
41
  __exportStar(require("./UISearchBox"), exports);
41
42
  __exportStar(require("./UISeparator"), exports);
42
43
  __exportStar(require("./UISection"), exports);
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/components/index.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,0CAAwB;AACxB,6CAA2B;AAC3B,iDAA+B;AAC/B,8CAA4B;AAC5B,+CAA6B;AAC7B,kDAAgC;AAChC,+CAA6B;AAC7B,qDAAmC;AACnC,mDAAiC;AACjC,6CAA2B;AAC3B,+CAA6B;AAC7B,oDAAkC;AAClC,gDAA8B;AAC9B,2CAAyB;AACzB,4CAA0B;AAC1B,4CAA0B;AAC1B,2CAAyB;AACzB,2CAAyB;AACzB,6CAA2B;AAC3B,iDAA+B;AAC/B,4CAA0B;AAC1B,8CAA4B;AAC5B,8CAA4B;AAC5B,gDAA8B;AAC9B,gDAA8B;AAC9B,8CAA4B;AAC5B,4CAA0B;AAC1B,2CAAyB;AACzB,6CAA2B;AAC3B,kDAAgC;AAChC,8CAA4B;AAC5B,8CAA4B;AAC5B,uDAAqC;AACrC,mDAAiC;AACjC,sDAAoC;AACpC,kDAAgC;AAChC,iDAA+B;AAC/B,oDAAkC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/components/index.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,0CAAwB;AACxB,6CAA2B;AAC3B,iDAA+B;AAC/B,8CAA4B;AAC5B,+CAA6B;AAC7B,kDAAgC;AAChC,+CAA6B;AAC7B,qDAAmC;AACnC,mDAAiC;AACjC,6CAA2B;AAC3B,+CAA6B;AAC7B,oDAAkC;AAClC,gDAA8B;AAC9B,2CAAyB;AACzB,4CAA0B;AAC1B,4CAA0B;AAC1B,2CAAyB;AACzB,2CAAyB;AACzB,6CAA2B;AAC3B,iDAA+B;AAC/B,4CAA0B;AAC1B,8CAA4B;AAC5B,8CAA4B;AAC5B,sDAAoC;AACpC,gDAA8B;AAC9B,gDAA8B;AAC9B,8CAA4B;AAC5B,4CAA0B;AAC1B,2CAAyB;AACzB,6CAA2B;AAC3B,kDAAgC;AAChC,8CAA4B;AAC5B,8CAA4B;AAC5B,uDAAqC;AACrC,mDAAiC;AACjC,sDAAoC;AACpC,kDAAgC;AAChC,iDAA+B;AAC/B,oDAAkC"}
@@ -4,7 +4,7 @@
4
4
  * @param element Element.
5
5
  * @returns True if passed Element is HTML Element.
6
6
  */
7
- export declare function isHTMLElement(element: Element): element is HTMLElement;
7
+ export declare function isHTMLElement(element: Element | ParentNode): element is HTMLElement;
8
8
  /**
9
9
  * Method checks if passed Element is HTML Input Element.
10
10
  *
@@ -1 +1 @@
1
- {"version":3,"file":"Dom.d.ts","sourceRoot":"","sources":["../../src/utilities/Dom.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,IAAI,WAAW,CAEtE;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,OAAO,GAAG,WAAW,GAAG,OAAO,IAAI,gBAAgB,CAE9F"}
1
+ {"version":3,"file":"Dom.d.ts","sourceRoot":"","sources":["../../src/utilities/Dom.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,OAAO,GAAG,UAAU,GAAG,OAAO,IAAI,WAAW,CAEnF;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,OAAO,GAAG,WAAW,GAAG,OAAO,IAAI,gBAAgB,CAE9F"}
@@ -1 +1 @@
1
- {"version":3,"file":"Dom.js","sourceRoot":"","sources":["../../src/utilities/Dom.ts"],"names":[],"mappings":";;;AAAA;;;;;GAKG;AACH,SAAgB,aAAa,CAAC,OAAgB;IAC1C,OAAO,OAAO,IAAI,OAAO,CAAC;AAC9B,CAAC;AAFD,sCAEC;AAED;;;;;GAKG;AACH,SAAgB,kBAAkB,CAAC,OAA8B;IAC7D,OAAO,OAAO,IAAI,OAAO,IAAI,SAAS,IAAI,OAAO,IAAI,OAAO,CAAC,OAAO,KAAK,OAAO,CAAC;AACrF,CAAC;AAFD,gDAEC"}
1
+ {"version":3,"file":"Dom.js","sourceRoot":"","sources":["../../src/utilities/Dom.ts"],"names":[],"mappings":";;;AAAA;;;;;GAKG;AACH,SAAgB,aAAa,CAAC,OAA6B;IACvD,OAAO,OAAO,IAAI,OAAO,CAAC;AAC9B,CAAC;AAFD,sCAEC;AAED;;;;;GAKG;AACH,SAAgB,kBAAkB,CAAC,OAA8B;IAC7D,OAAO,OAAO,IAAI,OAAO,IAAI,SAAS,IAAI,OAAO,IAAI,OAAO,CAAC,OAAO,KAAK,OAAO,CAAC;AACrF,CAAC;AAFD,gDAEC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sap-ux/ui-components",
3
- "version": "1.14.2",
3
+ "version": "1.15.0",
4
4
  "license": "Apache-2.0",
5
5
  "description": "SAP UI Components Library",
6
6
  "repository": {