@sapudex/web-components 2.18.0 → 2.20.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 (172) hide show
  1. package/bundle.esm.js +3 -0
  2. package/cypress/specs/AccordionItem.cy.tsx +6 -2
  3. package/cypress/specs/BusyIndicator.cy.tsx +10 -0
  4. package/cypress/specs/FilterMenu.cy.tsx +1 -1
  5. package/cypress/specs/Footer.cy.tsx +9 -2
  6. package/cypress/specs/ImageGridTicker.cy.tsx +208 -0
  7. package/cypress/specs/ImageGridTickerItem.cy.tsx +74 -0
  8. package/cypress/specs/Table.cy.tsx +1 -1
  9. package/cypress/support/component-imports.instrumented.ts +52 -46
  10. package/cypress/support/component-imports.src.ts +53 -47
  11. package/dist/Accordion.d.ts +1 -0
  12. package/dist/Accordion.js +7 -1
  13. package/dist/Accordion.js.map +1 -1
  14. package/dist/AccordionItem.d.ts +8 -0
  15. package/dist/AccordionItem.js +11 -0
  16. package/dist/AccordionItem.js.map +1 -1
  17. package/dist/AccordionItemTemplate.js +2 -2
  18. package/dist/AccordionItemTemplate.js.map +1 -1
  19. package/dist/AccordionTemplate.js +2 -2
  20. package/dist/AccordionTemplate.js.map +1 -1
  21. package/dist/AssetsVariables.js +6 -0
  22. package/dist/AssetsVariables.js.map +1 -1
  23. package/dist/BusyIndicator.d.ts +22 -0
  24. package/dist/BusyIndicator.js +39 -0
  25. package/dist/BusyIndicator.js.map +1 -0
  26. package/dist/FilterMenu.js +2 -2
  27. package/dist/FilterMenu.js.map +1 -1
  28. package/dist/Footer.d.ts +10 -0
  29. package/dist/Footer.js +7 -0
  30. package/dist/Footer.js.map +1 -1
  31. package/dist/FooterTemplate.js +3 -3
  32. package/dist/FooterTemplate.js.map +1 -1
  33. package/dist/ImageGridTicker.d.ts +129 -0
  34. package/dist/ImageGridTicker.js +305 -0
  35. package/dist/ImageGridTicker.js.map +1 -0
  36. package/dist/ImageGridTickerItem.d.ts +50 -0
  37. package/dist/ImageGridTickerItem.js +61 -0
  38. package/dist/ImageGridTickerItem.js.map +1 -0
  39. package/dist/ImageGridTickerItemTemplate.d.ts +2 -0
  40. package/dist/ImageGridTickerItemTemplate.js +9 -0
  41. package/dist/ImageGridTickerItemTemplate.js.map +1 -0
  42. package/dist/ImageGridTickerTemplate.d.ts +2 -0
  43. package/dist/ImageGridTickerTemplate.js +14 -0
  44. package/dist/ImageGridTickerTemplate.js.map +1 -0
  45. package/dist/SelectBox.js +2 -0
  46. package/dist/SelectBox.js.map +1 -1
  47. package/dist/Table.js +2 -2
  48. package/dist/Table.js.map +1 -1
  49. package/dist/assets/{InputSuggestions-L-9bNSZM.js → InputSuggestions-DOj9B3SE.js} +2 -2
  50. package/dist/assets/{ListItemStandardExpandableTextTemplate-C2VMJfHu.js → ListItemStandardExpandableTextTemplate-C6q5EhEr.js} +3 -3
  51. package/dist/assets/{bundle.esm-D4RSd7yl.js → bundle.esm-CmHUshBw.js} +220 -212
  52. package/dist/assets/messagebundle_en-BhTYnZbC.js +1 -0
  53. package/dist/assets/parameters-bundle.css-195ykfle.js +2 -0
  54. package/dist/assets/parameters-bundle.css-2XlTf-8J.js +2 -0
  55. package/dist/assets/parameters-bundle.css-7-HTnP5E.js +2 -0
  56. package/dist/assets/parameters-bundle.css-B7OzyC0l.js +2 -0
  57. package/dist/assets/parameters-bundle.css-BJjePPyo.js +2 -0
  58. package/dist/assets/parameters-bundle.css-BVsx_KaG.js +2 -0
  59. package/dist/assets/parameters-bundle.css-BbOftqiJ.js +2 -0
  60. package/dist/assets/parameters-bundle.css-BpraBfJY.js +2 -0
  61. package/dist/assets/parameters-bundle.css-Btm09-js.js +2 -0
  62. package/dist/assets/parameters-bundle.css-BtvY__7H.js +2 -0
  63. package/dist/assets/parameters-bundle.css-CAs_WpVc.js +2 -0
  64. package/dist/assets/parameters-bundle.css-Cqg5HiU_.js +2 -0
  65. package/dist/assets/parameters-bundle.css-DIUy2Etb.js +2 -0
  66. package/dist/assets/parameters-bundle.css-Dn173v0e.js +2 -0
  67. package/dist/assets/parameters-bundle.css-QEiUG73s.js +2 -0
  68. package/dist/assets/parameters-bundle.css-VUmjvCcs.js +2 -0
  69. package/dist/css/themes/Button.css +1 -1
  70. package/dist/css/themes/CountrySelector.css +1 -1
  71. package/dist/css/themes/DatePickerPopover.css +1 -1
  72. package/dist/css/themes/ImageGridTicker.css +1 -0
  73. package/dist/css/themes/ImageGridTickerItem.css +1 -0
  74. package/dist/css/themes/Quote.css +1 -1
  75. package/dist/css/themes/RatingIndicator.css +1 -1
  76. package/dist/css/themes/Slider.css +1 -1
  77. package/dist/custom-elements-internal.json +431 -143
  78. package/dist/custom-elements.json +386 -128
  79. package/dist/generated/assets/i18n/messagebundle_en.json +1 -1
  80. package/dist/generated/i18n/i18n-defaults.d.ts +3 -1
  81. package/dist/generated/i18n/i18n-defaults.js +3 -1
  82. package/dist/generated/i18n/i18n-defaults.js.map +1 -1
  83. package/dist/generated/templates/SearchTemplate.lit.js +1 -1
  84. package/dist/generated/templates/SearchTemplate.lit.js.map +1 -1
  85. package/dist/generated/templates/SearchableListBaseTemplate.lit.js +1 -1
  86. package/dist/generated/templates/SearchableListBaseTemplate.lit.js.map +1 -1
  87. package/dist/generated/templates/TableTemplate.lit.js +1 -1
  88. package/dist/generated/templates/TableTemplate.lit.js.map +1 -1
  89. package/dist/generated/themes/Button.css.d.ts +1 -1
  90. package/dist/generated/themes/Button.css.js +1 -1
  91. package/dist/generated/themes/Button.css.js.map +1 -1
  92. package/dist/generated/themes/CountrySelector.css.d.ts +1 -1
  93. package/dist/generated/themes/CountrySelector.css.js +1 -1
  94. package/dist/generated/themes/CountrySelector.css.js.map +1 -1
  95. package/dist/generated/themes/DatePickerPopover.css.d.ts +1 -1
  96. package/dist/generated/themes/DatePickerPopover.css.js +1 -1
  97. package/dist/generated/themes/DatePickerPopover.css.js.map +1 -1
  98. package/dist/generated/themes/ImageGridTicker.css.d.ts +2 -0
  99. package/dist/generated/themes/ImageGridTicker.css.js +8 -0
  100. package/dist/generated/themes/ImageGridTicker.css.js.map +1 -0
  101. package/dist/generated/themes/ImageGridTickerItem.css.d.ts +2 -0
  102. package/dist/generated/themes/ImageGridTickerItem.css.js +8 -0
  103. package/dist/generated/themes/ImageGridTickerItem.css.js.map +1 -0
  104. package/dist/generated/themes/Quote.css.d.ts +1 -1
  105. package/dist/generated/themes/Quote.css.js +1 -1
  106. package/dist/generated/themes/Quote.css.js.map +1 -1
  107. package/dist/generated/themes/RatingIndicator.css.d.ts +1 -1
  108. package/dist/generated/themes/RatingIndicator.css.js +1 -1
  109. package/dist/generated/themes/RatingIndicator.css.js.map +1 -1
  110. package/dist/generated/themes/Slider.css.d.ts +1 -1
  111. package/dist/generated/themes/Slider.css.js +1 -1
  112. package/dist/generated/themes/Slider.css.js.map +1 -1
  113. package/dist/messagebundle.properties +4 -0
  114. package/dist/messagebundle_en.properties +2 -0
  115. package/dist/vscode.html-custom-data.json +56 -6
  116. package/dist/web-types.json +125 -6
  117. package/package.json +8 -8
  118. package/src/Accordion.ts +9 -1
  119. package/src/AccordionItem.ts +10 -0
  120. package/src/AccordionItemTemplate.tsx +2 -2
  121. package/src/AccordionTemplate.tsx +3 -2
  122. package/src/AssetsVariables.ts +6 -0
  123. package/src/BusyIndicator.ts +33 -0
  124. package/src/FilterMenu.ts +2 -2
  125. package/src/Footer.ts +16 -0
  126. package/src/FooterTemplate.tsx +26 -11
  127. package/src/ImageGridTicker.ts +355 -0
  128. package/src/ImageGridTickerItem.ts +81 -0
  129. package/src/ImageGridTickerItemTemplate.tsx +28 -0
  130. package/src/ImageGridTickerTemplate.tsx +50 -0
  131. package/src/Search.hbs +0 -1
  132. package/src/SearchableListBase.hbs +2 -2
  133. package/src/SelectBox.ts +2 -0
  134. package/src/Table.hbs +2 -2
  135. package/src/Table.ts +2 -2
  136. package/src/generated/i18n/i18n-defaults.ts +2 -2
  137. package/src/generated/templates/SearchTemplate.lit.ts +1 -1
  138. package/src/generated/templates/SearchableListBaseTemplate.lit.ts +1 -1
  139. package/src/generated/templates/TableTemplate.lit.ts +1 -1
  140. package/src/generated/themes/Button.css.ts +1 -1
  141. package/src/generated/themes/CountrySelector.css.ts +1 -1
  142. package/src/generated/themes/DatePickerPopover.css.ts +1 -1
  143. package/src/generated/themes/ImageGridTicker.css.ts +9 -0
  144. package/src/generated/themes/ImageGridTickerItem.css.ts +9 -0
  145. package/src/generated/themes/Quote.css.ts +1 -1
  146. package/src/generated/themes/RatingIndicator.css.ts +1 -1
  147. package/src/generated/themes/Slider.css.ts +1 -1
  148. package/src/i18n/messagebundle.properties +4 -0
  149. package/src/i18n/messagebundle_en.properties +2 -0
  150. package/src/themes/Button.css +1 -0
  151. package/src/themes/CountrySelector.css +2 -2
  152. package/src/themes/DatePickerPopover.css +3 -2
  153. package/src/themes/ImageGridTicker.css +134 -0
  154. package/src/themes/ImageGridTickerItem.css +52 -0
  155. package/src/themes/Quote.css +7 -2
  156. package/dist/assets/messagebundle_en-D6cJIiUq.js +0 -1
  157. package/dist/assets/parameters-bundle.css-7tmaWxIc.js +0 -2
  158. package/dist/assets/parameters-bundle.css-BERBdAGd.js +0 -2
  159. package/dist/assets/parameters-bundle.css-B_2Jldx4.js +0 -2
  160. package/dist/assets/parameters-bundle.css-BbhFHnRW.js +0 -2
  161. package/dist/assets/parameters-bundle.css-Bg4Huwh4.js +0 -2
  162. package/dist/assets/parameters-bundle.css-BwKgmVCr.js +0 -2
  163. package/dist/assets/parameters-bundle.css-C759-AfS.js +0 -2
  164. package/dist/assets/parameters-bundle.css-CCDcKh9J.js +0 -2
  165. package/dist/assets/parameters-bundle.css-COmXsTqR.js +0 -2
  166. package/dist/assets/parameters-bundle.css-CPZYPVEO.js +0 -2
  167. package/dist/assets/parameters-bundle.css-C_z8R1zV.js +0 -2
  168. package/dist/assets/parameters-bundle.css-CuV0KqCS.js +0 -2
  169. package/dist/assets/parameters-bundle.css-DT8OC7CO.js +0 -2
  170. package/dist/assets/parameters-bundle.css-Df2zY3XY.js +0 -2
  171. package/dist/assets/parameters-bundle.css-H0NCnWYS.js +0 -2
  172. package/dist/assets/parameters-bundle.css-pC6uofhy.js +0 -2
@@ -0,0 +1,129 @@
1
+ import UI5Element from "@ui5/webcomponents-base/dist/UI5Element.js";
2
+ import type I18nBundle from "@ui5/webcomponents-base/dist/i18nBundle.js";
3
+ import type { ResizeObserverCallback } from "@ui5/webcomponents-base/dist/delegate/ResizeHandler.js";
4
+ import type UDExImageGridTickerItem from "./ImageGridTickerItem.js";
5
+ export declare enum UDExImageGridTickerVariable {
6
+ itemGaps = "--udex-image-grid-ticker-item-gaps",
7
+ itemWidth = "--udex-image-grid-ticker-item-width"
8
+ }
9
+ type UDExImageGridTickerPlayBtnClickEventDetail = {
10
+ isPaused: boolean;
11
+ };
12
+ /**
13
+ * @class
14
+ *
15
+ * <h3 class="comment-api-title">Overview</h3>
16
+ *
17
+ *
18
+ * <h3>Usage</h3>
19
+ *
20
+ * For the <code>udex-image-grid-ticker</code>
21
+ * <h3>ES6 Module Import</h3>
22
+ *
23
+ * <code>import "@sapudex/web-components/dist/ImageGridTicker.js";</code>
24
+ *
25
+ * @constructor
26
+ * @extends UI5Element
27
+ * @public
28
+ */
29
+ declare class UDExImageGridTicker extends UI5Element {
30
+ eventDetails: {
31
+ "play-button-click": UDExImageGridTickerPlayBtnClickEventDetail;
32
+ };
33
+ /**
34
+ * Slot for image grid ticker items.
35
+ *
36
+ * @slot
37
+ * @public
38
+ */
39
+ items: Array<UDExImageGridTickerItem>;
40
+ /**
41
+ * Grayscale mode enhances visual harmony and can be used for minimal,
42
+ * professional layouts or to de-emphasize logos.
43
+ *
44
+ * @default false
45
+ * @public
46
+ */
47
+ grayscale: boolean;
48
+ /**
49
+ * Indicates whether the image grid ticker is scrollable.
50
+ *
51
+ * @default false
52
+ * @private
53
+ */
54
+ _isScrollable: boolean;
55
+ /**
56
+ * Indicates whether the screen size is small.
57
+ *
58
+ * @default false
59
+ * @private
60
+ */
61
+ _isSmallScreen: boolean;
62
+ /**
63
+ * Indicates whether the animation is paused.
64
+ *
65
+ * @default false
66
+ * @private
67
+ */
68
+ _isPaused: boolean;
69
+ /**
70
+ * Indicates focus in state.
71
+ *
72
+ * @default false
73
+ * @private
74
+ */
75
+ _isFocusIn: boolean;
76
+ /**
77
+ * Indicates mobile view.
78
+ *
79
+ * @default false
80
+ * @private
81
+ */
82
+ _isMobileView: boolean;
83
+ /**
84
+ * Defines direction of the component.
85
+ *
86
+ * @default undefined
87
+ * @private
88
+ */
89
+ _direction: string;
90
+ _isPlayBtnClicked: boolean;
91
+ _isMouseDown: boolean;
92
+ _handleResizeBound: ResizeObserverCallback;
93
+ static i18nBundle: I18nBundle;
94
+ constructor();
95
+ onAfterRendering(): void;
96
+ onEnterDOM(): void;
97
+ onExitDOM(): void;
98
+ _handleResize(): void;
99
+ _checkScrollable(): void;
100
+ _startAnimation(): void;
101
+ _stopAnimation(): void;
102
+ _toggleAnimation(): void;
103
+ _onFocusIn(): void;
104
+ _onFocusOut(): void;
105
+ _onKeyDown(e: KeyboardEvent): void;
106
+ _onMouseDown(): void;
107
+ _onMouseUp(): void;
108
+ _focusLastItem(): void;
109
+ _handleMobileView(): void;
110
+ _handleDesktopView(): void;
111
+ _focusItem(item: HTMLElement): void;
112
+ _handleDirection(): void;
113
+ _onPlayButtonClick(): void;
114
+ _firePlayButtonClickEvent(): void;
115
+ _getPropertyValues(variable: string): number;
116
+ get itemDimensions(): {
117
+ width: number;
118
+ gaps: number;
119
+ };
120
+ get trackItems(): HTMLElement[];
121
+ get focusedIndex(): number;
122
+ get isAtLeastBreakpointM(): boolean;
123
+ get track(): HTMLElement;
124
+ get grid(): HTMLElement;
125
+ get isRtl(): boolean;
126
+ get playBtnTooltipText(): string;
127
+ }
128
+ export default UDExImageGridTicker;
129
+ export type { UDExImageGridTickerPlayBtnClickEventDetail };
@@ -0,0 +1,305 @@
1
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
6
+ };
7
+ var UDExImageGridTicker_1;
8
+ import UI5Element from "@ui5/webcomponents-base/dist/UI5Element.js";
9
+ import customElement from "@ui5/webcomponents-base/dist/decorators/customElement.js";
10
+ import event from "@ui5/webcomponents-base/dist/decorators/event-strict.js";
11
+ import property from "@ui5/webcomponents-base/dist/decorators/property.js";
12
+ import slot from "@ui5/webcomponents-base/dist/decorators/slot.js";
13
+ import jsxRenderer from "@ui5/webcomponents-base/dist/renderer/JsxRenderer.js";
14
+ import i18n from "@ui5/webcomponents-base/dist/decorators/i18n.js";
15
+ import ResizeHandler from "@ui5/webcomponents-base/dist/delegate/ResizeHandler.js";
16
+ import { isDesktop } from "@ui5/webcomponents-base/Device.js";
17
+ import { isLeft, isRight } from "@ui5/webcomponents-base/dist/Keys.js";
18
+ import { PAUSE_BUTTON_ACCESSIBLE_NAME, PLAY_BUTTON_ACCESSIBLE_NAME } from "./generated/i18n/i18n-defaults.js";
19
+ import { BreakpointUtils } from "./utils/Breakpoints.js";
20
+ import ImageGridTickerItem from "./ImageGridTickerItem.js";
21
+ import ImageGridTickerTemplate from "./ImageGridTickerTemplate.js";
22
+ // Styles
23
+ import ImageGridTickerCss from "./generated/themes/ImageGridTicker.css.js";
24
+ export var UDExImageGridTickerVariable;
25
+ (function (UDExImageGridTickerVariable) {
26
+ UDExImageGridTickerVariable["itemGaps"] = "--udex-image-grid-ticker-item-gaps";
27
+ UDExImageGridTickerVariable["itemWidth"] = "--udex-image-grid-ticker-item-width";
28
+ })(UDExImageGridTickerVariable || (UDExImageGridTickerVariable = {}));
29
+ /**
30
+ * @class
31
+ *
32
+ * <h3 class="comment-api-title">Overview</h3>
33
+ *
34
+ *
35
+ * <h3>Usage</h3>
36
+ *
37
+ * For the <code>udex-image-grid-ticker</code>
38
+ * <h3>ES6 Module Import</h3>
39
+ *
40
+ * <code>import "@sapudex/web-components/dist/ImageGridTicker.js";</code>
41
+ *
42
+ * @constructor
43
+ * @extends UI5Element
44
+ * @public
45
+ */
46
+ let UDExImageGridTicker = UDExImageGridTicker_1 = class UDExImageGridTicker extends UI5Element {
47
+ constructor() {
48
+ super();
49
+ /**
50
+ * Grayscale mode enhances visual harmony and can be used for minimal,
51
+ * professional layouts or to de-emphasize logos.
52
+ *
53
+ * @default false
54
+ * @public
55
+ */
56
+ this.grayscale = false;
57
+ /**
58
+ * Indicates whether the image grid ticker is scrollable.
59
+ *
60
+ * @default false
61
+ * @private
62
+ */
63
+ this._isScrollable = false;
64
+ /**
65
+ * Indicates whether the screen size is small.
66
+ *
67
+ * @default false
68
+ * @private
69
+ */
70
+ this._isSmallScreen = false;
71
+ /**
72
+ * Indicates whether the animation is paused.
73
+ *
74
+ * @default false
75
+ * @private
76
+ */
77
+ this._isPaused = false;
78
+ /**
79
+ * Indicates focus in state.
80
+ *
81
+ * @default false
82
+ * @private
83
+ */
84
+ this._isFocusIn = false;
85
+ /**
86
+ * Indicates mobile view.
87
+ *
88
+ * @default false
89
+ * @private
90
+ */
91
+ this._isMobileView = false;
92
+ this._isPlayBtnClicked = false;
93
+ this._isMouseDown = false;
94
+ this._isMobileView = !this.isAtLeastBreakpointM;
95
+ this._handleResizeBound = this._handleResize.bind(this);
96
+ }
97
+ onAfterRendering() {
98
+ if (this._isMobileView) {
99
+ this._handleMobileView();
100
+ return;
101
+ }
102
+ this._handleDesktopView();
103
+ }
104
+ onEnterDOM() {
105
+ ResizeHandler.register(this, this._handleResizeBound);
106
+ if (isDesktop()) {
107
+ this.setAttribute("desktop", "");
108
+ }
109
+ }
110
+ onExitDOM() {
111
+ ResizeHandler.deregister(this, this._handleResizeBound);
112
+ }
113
+ _handleResize() {
114
+ this._isMobileView = !this.isAtLeastBreakpointM;
115
+ this._checkScrollable();
116
+ }
117
+ _checkScrollable() {
118
+ if (!this.grid || !this.track || this._isMobileView) {
119
+ this._isScrollable = false;
120
+ return;
121
+ }
122
+ const { width: itemWidth, gaps: itemGaps } = this.itemDimensions;
123
+ const totalItemWidth = itemWidth + itemGaps;
124
+ const totalWidth = this.items.length * totalItemWidth;
125
+ this._isScrollable = totalWidth > this.grid.offsetWidth;
126
+ }
127
+ _startAnimation() {
128
+ if (this._isScrollable && !this._isPlayBtnClicked && !this._isMobileView) {
129
+ this._isPaused = false;
130
+ }
131
+ }
132
+ _stopAnimation() {
133
+ if (this._isScrollable && !this._isMobileView) {
134
+ this._isPaused = true;
135
+ }
136
+ }
137
+ _toggleAnimation() {
138
+ this._isPlayBtnClicked = !this._isPlayBtnClicked;
139
+ if (this._isPaused) {
140
+ this._startAnimation();
141
+ }
142
+ else {
143
+ this._stopAnimation();
144
+ }
145
+ }
146
+ _onFocusIn() {
147
+ if (this._isMouseDown || !this._isScrollable) {
148
+ return;
149
+ }
150
+ this._isFocusIn = true;
151
+ this._stopAnimation();
152
+ const focusedItem = this.trackItems[this.focusedIndex];
153
+ const isLastItem = this.focusedIndex === this.trackItems.length - 1;
154
+ const { right, left } = focusedItem.getBoundingClientRect();
155
+ const windowWidth = window.innerWidth || document.documentElement.clientWidth;
156
+ const isPartiallyVisible = right > 0 && left < windowWidth;
157
+ if (isPartiallyVisible) {
158
+ focusedItem.scrollIntoView({
159
+ behavior: "smooth",
160
+ block: "nearest",
161
+ inline: "center",
162
+ });
163
+ }
164
+ if (isLastItem) {
165
+ this._focusLastItem();
166
+ }
167
+ }
168
+ _onFocusOut() {
169
+ this._isFocusIn = false;
170
+ this._startAnimation();
171
+ }
172
+ _onKeyDown(e) {
173
+ if (isLeft(e) || isRight(e)) {
174
+ e.preventDefault();
175
+ const direction = (isLeft(e) && !this.isRtl) || (isRight(e) && this.isRtl) ? -1 : 1;
176
+ const index = this.focusedIndex + direction;
177
+ if (index >= 0 && index < this.trackItems.length) {
178
+ this._focusItem(this.trackItems[index]);
179
+ }
180
+ }
181
+ }
182
+ _onMouseDown() {
183
+ this._isMouseDown = true;
184
+ }
185
+ _onMouseUp() {
186
+ this._isMouseDown = false;
187
+ }
188
+ _focusLastItem() {
189
+ const lastItem = this.trackItems[this.items.length - 1];
190
+ this._focusItem(lastItem);
191
+ lastItem.scrollIntoView({
192
+ behavior: "smooth",
193
+ block: "nearest",
194
+ });
195
+ }
196
+ _handleMobileView() {
197
+ this._isScrollable = false;
198
+ this._stopAnimation();
199
+ }
200
+ _handleDesktopView() {
201
+ this._handleDirection();
202
+ this._checkScrollable();
203
+ if (this._isScrollable && !this._isPaused && !this._isMobileView) {
204
+ this._startAnimation();
205
+ }
206
+ else {
207
+ this._stopAnimation();
208
+ }
209
+ }
210
+ _focusItem(item) {
211
+ const link = item.shadowRoot?.querySelector(".udex-image-grid-ticker-item__link");
212
+ link.focus();
213
+ }
214
+ _handleDirection() {
215
+ const directionStyles = window.getComputedStyle(this).getPropertyValue("direction");
216
+ this._direction = directionStyles || "ltr";
217
+ }
218
+ _onPlayButtonClick() {
219
+ this._toggleAnimation();
220
+ this._firePlayButtonClickEvent();
221
+ }
222
+ _firePlayButtonClickEvent() {
223
+ this.fireDecoratorEvent("play-button-click", {
224
+ isPaused: this._isPaused,
225
+ });
226
+ }
227
+ _getPropertyValues(variable) {
228
+ const itemStyles = window.getComputedStyle(this.items[0]);
229
+ return parseInt(itemStyles.getPropertyValue(variable));
230
+ }
231
+ get itemDimensions() {
232
+ const width = this._getPropertyValues(UDExImageGridTickerVariable.itemWidth);
233
+ const gaps = this._getPropertyValues(UDExImageGridTickerVariable.itemGaps) * 2;
234
+ return { width, gaps };
235
+ }
236
+ get trackItems() {
237
+ return Array.from(this.track.children);
238
+ }
239
+ get focusedIndex() {
240
+ return this.trackItems.findIndex(item => item.matches(":focus"));
241
+ }
242
+ get isAtLeastBreakpointM() {
243
+ return BreakpointUtils.isAtLeast("M");
244
+ }
245
+ get track() {
246
+ return this.shadowRoot?.querySelector(".udex-image-grid-ticker__track");
247
+ }
248
+ get grid() {
249
+ return this.shadowRoot?.querySelector(".udex-image-grid-ticker");
250
+ }
251
+ get isRtl() {
252
+ return this._direction === "rtl";
253
+ }
254
+ get playBtnTooltipText() {
255
+ return this._isPaused
256
+ ? UDExImageGridTicker_1.i18nBundle.getText(PLAY_BUTTON_ACCESSIBLE_NAME)
257
+ : UDExImageGridTicker_1.i18nBundle.getText(PAUSE_BUTTON_ACCESSIBLE_NAME);
258
+ }
259
+ };
260
+ __decorate([
261
+ slot({ type: HTMLElement, "default": true, individualSlots: true })
262
+ ], UDExImageGridTicker.prototype, "items", void 0);
263
+ __decorate([
264
+ property({ type: Boolean })
265
+ ], UDExImageGridTicker.prototype, "grayscale", void 0);
266
+ __decorate([
267
+ property({ type: Boolean })
268
+ ], UDExImageGridTicker.prototype, "_isScrollable", void 0);
269
+ __decorate([
270
+ property({ type: Boolean })
271
+ ], UDExImageGridTicker.prototype, "_isSmallScreen", void 0);
272
+ __decorate([
273
+ property({ type: Boolean })
274
+ ], UDExImageGridTicker.prototype, "_isPaused", void 0);
275
+ __decorate([
276
+ property({ type: Boolean })
277
+ ], UDExImageGridTicker.prototype, "_isFocusIn", void 0);
278
+ __decorate([
279
+ property({ type: Boolean })
280
+ ], UDExImageGridTicker.prototype, "_isMobileView", void 0);
281
+ __decorate([
282
+ property({ type: String })
283
+ ], UDExImageGridTicker.prototype, "_direction", void 0);
284
+ __decorate([
285
+ i18n("@sapudex/web-components")
286
+ ], UDExImageGridTicker, "i18nBundle", void 0);
287
+ UDExImageGridTicker = UDExImageGridTicker_1 = __decorate([
288
+ customElement({
289
+ tag: "udex-image-grid-ticker",
290
+ renderer: jsxRenderer,
291
+ styles: ImageGridTickerCss,
292
+ template: ImageGridTickerTemplate,
293
+ dependencies: [ImageGridTickerItem],
294
+ })
295
+ /**
296
+ * Fired event when the user click on a play/paused button.
297
+ *
298
+ * @public
299
+ */
300
+ ,
301
+ event("play-button-click", { bubbles: true })
302
+ ], UDExImageGridTicker);
303
+ UDExImageGridTicker.define();
304
+ export default UDExImageGridTicker;
305
+ //# sourceMappingURL=ImageGridTicker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ImageGridTicker.js","sourceRoot":"","sources":["../src/ImageGridTicker.ts"],"names":[],"mappings":"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","sourcesContent":["import UI5Element from \"@ui5/webcomponents-base/dist/UI5Element.js\";\nimport customElement from \"@ui5/webcomponents-base/dist/decorators/customElement.js\";\nimport event from \"@ui5/webcomponents-base/dist/decorators/event-strict.js\";\nimport property from \"@ui5/webcomponents-base/dist/decorators/property.js\";\nimport slot from \"@ui5/webcomponents-base/dist/decorators/slot.js\";\nimport jsxRenderer from \"@ui5/webcomponents-base/dist/renderer/JsxRenderer.js\";\nimport i18n from \"@ui5/webcomponents-base/dist/decorators/i18n.js\";\nimport type I18nBundle from \"@ui5/webcomponents-base/dist/i18nBundle.js\";\nimport type { ResizeObserverCallback } from \"@ui5/webcomponents-base/dist/delegate/ResizeHandler.js\";\nimport ResizeHandler from \"@ui5/webcomponents-base/dist/delegate/ResizeHandler.js\";\nimport { isDesktop } from \"@ui5/webcomponents-base/Device.js\";\nimport { isLeft, isRight } from \"@ui5/webcomponents-base/dist/Keys.js\";\nimport { PAUSE_BUTTON_ACCESSIBLE_NAME, PLAY_BUTTON_ACCESSIBLE_NAME } from \"./generated/i18n/i18n-defaults.js\";\nimport { BreakpointUtils } from \"./utils/Breakpoints.js\";\nimport type UDExImageGridTickerItem from \"./ImageGridTickerItem.js\";\nimport ImageGridTickerItem from \"./ImageGridTickerItem.js\";\nimport ImageGridTickerTemplate from \"./ImageGridTickerTemplate.js\";\n\n// Styles\nimport ImageGridTickerCss from \"./generated/themes/ImageGridTicker.css.js\";\n\nexport enum UDExImageGridTickerVariable {\n itemGaps = \"--udex-image-grid-ticker-item-gaps\",\n itemWidth = \"--udex-image-grid-ticker-item-width\",\n}\n\ntype UDExImageGridTickerPlayBtnClickEventDetail = {\n isPaused: boolean;\n}\n\n/**\n * @class\n *\n * <h3 class=\"comment-api-title\">Overview</h3>\n *\n *\n * <h3>Usage</h3>\n *\n * For the <code>udex-image-grid-ticker</code>\n * <h3>ES6 Module Import</h3>\n *\n * <code>import \"@sapudex/web-components/dist/ImageGridTicker.js\";</code>\n *\n * @constructor\n * @extends UI5Element\n * @public\n */\n@customElement({\n tag: \"udex-image-grid-ticker\",\n renderer: jsxRenderer,\n styles: ImageGridTickerCss,\n template: ImageGridTickerTemplate,\n dependencies: [ImageGridTickerItem],\n})\n\n/**\n * Fired event when the user click on a play/paused button.\n *\n * @public\n */\n@event(\"play-button-click\", { bubbles: true })\n\nclass UDExImageGridTicker extends UI5Element {\n eventDetails!: {\n \"play-button-click\": UDExImageGridTickerPlayBtnClickEventDetail;\n };\n\n /**\n * Slot for image grid ticker items.\n *\n * @slot\n * @public\n */\n @slot({ type: HTMLElement, \"default\": true, individualSlots: true })\n items!: Array<UDExImageGridTickerItem>;\n\n /**\n * Grayscale mode enhances visual harmony and can be used for minimal,\n * professional layouts or to de-emphasize logos.\n *\n * @default false\n * @public\n */\n @property({ type: Boolean })\n grayscale = false;\n\n /**\n * Indicates whether the image grid ticker is scrollable.\n *\n * @default false\n * @private\n */\n @property({ type: Boolean })\n _isScrollable = false;\n\n /**\n * Indicates whether the screen size is small.\n *\n * @default false\n * @private\n */\n @property({ type: Boolean })\n _isSmallScreen = false;\n\n /**\n * Indicates whether the animation is paused.\n *\n * @default false\n * @private\n */\n @property({ type: Boolean })\n _isPaused = false;\n\n /**\n * Indicates focus in state.\n *\n * @default false\n * @private\n */\n @property({ type: Boolean })\n _isFocusIn: boolean = false;\n\n /**\n * Indicates mobile view.\n *\n * @default false\n * @private\n */\n @property({ type: Boolean })\n _isMobileView: boolean = false;\n\n /**\n * Defines direction of the component.\n *\n * @default undefined\n * @private\n */\n @property({ type: String })\n _direction!: string;\n\n _isPlayBtnClicked: boolean = false;\n _isMouseDown: boolean = false;\n _handleResizeBound: ResizeObserverCallback;\n\n @i18n(\"@sapudex/web-components\")\n static i18nBundle: I18nBundle;\n\n constructor() {\n super();\n this._isMobileView = !this.isAtLeastBreakpointM;\n this._handleResizeBound = this._handleResize.bind(this);\n }\n\n onAfterRendering(): void {\n if (this._isMobileView) {\n this._handleMobileView();\n return;\n }\n\n this._handleDesktopView();\n }\n\n onEnterDOM(): void {\n ResizeHandler.register(this, this._handleResizeBound);\n if (isDesktop()) {\n this.setAttribute(\"desktop\", \"\");\n }\n }\n\n onExitDOM(): void {\n ResizeHandler.deregister(this, this._handleResizeBound);\n }\n\n _handleResize(): void {\n this._isMobileView = !this.isAtLeastBreakpointM;\n this._checkScrollable();\n }\n\n _checkScrollable(): void {\n if (!this.grid || !this.track || this._isMobileView) {\n this._isScrollable = false;\n return;\n }\n\n const { width: itemWidth, gaps: itemGaps } = this.itemDimensions;\n const totalItemWidth = itemWidth + itemGaps;\n const totalWidth = this.items.length * totalItemWidth;\n\n this._isScrollable = totalWidth > this.grid.offsetWidth;\n }\n\n _startAnimation(): void {\n if (this._isScrollable && !this._isPlayBtnClicked && !this._isMobileView) {\n this._isPaused = false;\n }\n }\n\n _stopAnimation(): void {\n if (this._isScrollable && !this._isMobileView) {\n this._isPaused = true;\n }\n }\n\n _toggleAnimation(): void {\n this._isPlayBtnClicked = !this._isPlayBtnClicked;\n if (this._isPaused) {\n this._startAnimation();\n } else {\n this._stopAnimation();\n }\n }\n\n _onFocusIn(): void {\n if (this._isMouseDown || !this._isScrollable) {\n return;\n }\n\n this._isFocusIn = true;\n this._stopAnimation();\n\n const focusedItem = this.trackItems[this.focusedIndex];\n const isLastItem = this.focusedIndex === this.trackItems.length - 1;\n const { right, left } = focusedItem.getBoundingClientRect();\n const windowWidth = window.innerWidth || document.documentElement.clientWidth;\n const isPartiallyVisible = right > 0 && left < windowWidth;\n\n if (isPartiallyVisible) {\n focusedItem.scrollIntoView({\n behavior: \"smooth\",\n block: \"nearest\",\n inline: \"center\",\n });\n }\n\n if (isLastItem) {\n this._focusLastItem();\n }\n }\n\n _onFocusOut(): void {\n this._isFocusIn = false;\n this._startAnimation();\n }\n\n _onKeyDown(e: KeyboardEvent): void {\n if (isLeft(e) || isRight(e)) {\n e.preventDefault();\n const direction = (isLeft(e) && !this.isRtl) || (isRight(e) && this.isRtl) ? -1 : 1;\n const index = this.focusedIndex + direction;\n\n if (index >= 0 && index < this.trackItems.length) {\n this._focusItem(this.trackItems[index]);\n }\n }\n }\n\n _onMouseDown(): void {\n this._isMouseDown = true;\n }\n\n _onMouseUp(): void {\n this._isMouseDown = false;\n }\n\n _focusLastItem(): void {\n const lastItem = this.trackItems[this.items.length - 1];\n this._focusItem(lastItem);\n lastItem.scrollIntoView({\n behavior: \"smooth\",\n block: \"nearest\",\n });\n }\n\n _handleMobileView(): void {\n this._isScrollable = false;\n this._stopAnimation();\n }\n\n _handleDesktopView(): void {\n this._handleDirection();\n this._checkScrollable();\n if (this._isScrollable && !this._isPaused && !this._isMobileView) {\n this._startAnimation();\n } else {\n this._stopAnimation();\n }\n }\n\n _focusItem(item: HTMLElement): void {\n const link = item.shadowRoot?.querySelector(\".udex-image-grid-ticker-item__link\") as HTMLElement;\n link.focus();\n }\n\n _handleDirection(): void {\n const directionStyles = window.getComputedStyle(this).getPropertyValue(\"direction\");\n this._direction = directionStyles || \"ltr\";\n }\n\n _onPlayButtonClick(): void {\n this._toggleAnimation();\n this._firePlayButtonClickEvent();\n }\n\n _firePlayButtonClickEvent(): void {\n this.fireDecoratorEvent(\"play-button-click\", {\n isPaused: this._isPaused,\n });\n }\n\n _getPropertyValues(variable: string): number {\n const itemStyles = window.getComputedStyle(this.items[0]);\n return parseInt(itemStyles.getPropertyValue(variable));\n }\n\n get itemDimensions(): { width: number; gaps: number } {\n const width = this._getPropertyValues(UDExImageGridTickerVariable.itemWidth);\n const gaps = this._getPropertyValues(UDExImageGridTickerVariable.itemGaps) * 2;\n return { width, gaps };\n }\n\n get trackItems(): HTMLElement[] {\n return Array.from(this.track.children) as HTMLElement[];\n }\n\n get focusedIndex(): number {\n return this.trackItems.findIndex(item => item.matches(\":focus\"));\n }\n\n get isAtLeastBreakpointM(): boolean {\n return BreakpointUtils.isAtLeast(\"M\");\n }\n\n get track(): HTMLElement {\n return this.shadowRoot?.querySelector(\".udex-image-grid-ticker__track\") as HTMLElement;\n }\n\n get grid(): HTMLElement {\n return this.shadowRoot?.querySelector(\".udex-image-grid-ticker\") as HTMLElement;\n }\n\n get isRtl(): boolean {\n return this._direction === \"rtl\";\n }\n\n get playBtnTooltipText(): string {\n return this._isPaused\n ? UDExImageGridTicker.i18nBundle.getText(PLAY_BUTTON_ACCESSIBLE_NAME)\n : UDExImageGridTicker.i18nBundle.getText(PAUSE_BUTTON_ACCESSIBLE_NAME);\n }\n}\n\nUDExImageGridTicker.define();\n\nexport default UDExImageGridTicker;\nexport type { UDExImageGridTickerPlayBtnClickEventDetail };\n"]}
@@ -0,0 +1,50 @@
1
+ import UI5Element from "@ui5/webcomponents-base/dist/UI5Element.js";
2
+ /**
3
+ * @class
4
+ *
5
+ * <h3 class="comment-api-title">Overview</h3>
6
+ *
7
+ *
8
+ * <h3>Usage</h3>
9
+ *
10
+ * For the <code>udex-image-grid-ticker-item</code>
11
+ * <h3>ES6 Module Import</h3>
12
+ *
13
+ * <code>import "@sapudex/web-components/dist/ImageGridTickerItem.js";</code>
14
+ *
15
+ * @constructor
16
+ * @extends UI5Element
17
+ * @public
18
+ */
19
+ declare class UDExImageGridTickerItem extends UI5Element {
20
+ /**
21
+ * Defines the source URL
22
+ *
23
+ * @default ""
24
+ * @public
25
+ */
26
+ src: string;
27
+ /**
28
+ * Defines image alt text
29
+ *
30
+ * @default undefined
31
+ * @public
32
+ */
33
+ alt?: string;
34
+ /**
35
+ * Defines tooltip on hover
36
+ *
37
+ * @default undefined
38
+ * @public
39
+ */
40
+ tooltip?: string;
41
+ /**
42
+ * Defines link URL
43
+ *
44
+ * @default undefined
45
+ * @public
46
+ */
47
+ href?: string;
48
+ onEnterDOM(): void;
49
+ }
50
+ export default UDExImageGridTickerItem;
@@ -0,0 +1,61 @@
1
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
6
+ };
7
+ import UI5Element from "@ui5/webcomponents-base/dist/UI5Element.js";
8
+ import { isDesktop } from "@ui5/webcomponents-base/Device.js";
9
+ import customElement from "@ui5/webcomponents-base/dist/decorators/customElement.js";
10
+ import property from "@ui5/webcomponents-base/dist/decorators/property.js";
11
+ import jsxRenderer from "@ui5/webcomponents-base/dist/renderer/JsxRenderer.js";
12
+ import ImageGridTickerItemTemplate from "./ImageGridTickerItemTemplate.js";
13
+ // Styles
14
+ import ImageGridTickerItemCss from "./generated/themes/ImageGridTickerItem.css.js";
15
+ /**
16
+ * @class
17
+ *
18
+ * <h3 class="comment-api-title">Overview</h3>
19
+ *
20
+ *
21
+ * <h3>Usage</h3>
22
+ *
23
+ * For the <code>udex-image-grid-ticker-item</code>
24
+ * <h3>ES6 Module Import</h3>
25
+ *
26
+ * <code>import "@sapudex/web-components/dist/ImageGridTickerItem.js";</code>
27
+ *
28
+ * @constructor
29
+ * @extends UI5Element
30
+ * @public
31
+ */
32
+ let UDExImageGridTickerItem = class UDExImageGridTickerItem extends UI5Element {
33
+ onEnterDOM() {
34
+ if (isDesktop()) {
35
+ this.setAttribute("desktop", "");
36
+ }
37
+ }
38
+ };
39
+ __decorate([
40
+ property({ type: String })
41
+ ], UDExImageGridTickerItem.prototype, "src", void 0);
42
+ __decorate([
43
+ property({ type: String })
44
+ ], UDExImageGridTickerItem.prototype, "alt", void 0);
45
+ __decorate([
46
+ property({ type: String })
47
+ ], UDExImageGridTickerItem.prototype, "tooltip", void 0);
48
+ __decorate([
49
+ property({ type: String })
50
+ ], UDExImageGridTickerItem.prototype, "href", void 0);
51
+ UDExImageGridTickerItem = __decorate([
52
+ customElement({
53
+ tag: "udex-image-grid-ticker-item",
54
+ renderer: jsxRenderer,
55
+ styles: ImageGridTickerItemCss,
56
+ template: ImageGridTickerItemTemplate,
57
+ })
58
+ ], UDExImageGridTickerItem);
59
+ UDExImageGridTickerItem.define();
60
+ export default UDExImageGridTickerItem;
61
+ //# sourceMappingURL=ImageGridTickerItem.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ImageGridTickerItem.js","sourceRoot":"","sources":["../src/ImageGridTickerItem.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,UAAU,MAAM,4CAA4C,CAAC;AACpE,OAAO,EAAE,SAAS,EAAE,MAAM,mCAAmC,CAAC;AAC9D,OAAO,aAAa,MAAM,0DAA0D,CAAC;AACrF,OAAO,QAAQ,MAAM,qDAAqD,CAAC;AAC3E,OAAO,WAAW,MAAM,sDAAsD,CAAC;AAC/E,OAAO,2BAA2B,MAAM,kCAAkC,CAAC;AAE3E,SAAS;AACT,OAAO,sBAAsB,MAAM,+CAA+C,CAAC;AAEnF;;;;;;;;;;;;;;;;GAgBG;AAQH,IAAM,uBAAuB,GAA7B,MAAM,uBAAwB,SAAQ,UAAU;IAqC9C,UAAU;QACR,IAAI,SAAS,EAAE,EAAE,CAAC;YAChB,IAAI,CAAC,YAAY,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;QACnC,CAAC;IACH,CAAC;CACF,CAAA;AAlCG;IADD,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;oDACZ;AASb;IADD,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;oDACZ;AASb;IADD,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;wDACR;AASjB;IADD,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;qDACX;AAnCZ,uBAAuB;IAP5B,aAAa,CAAC;QACb,GAAG,EAAE,6BAA6B;QAClC,QAAQ,EAAE,WAAW;QACrB,MAAM,EAAE,sBAAsB;QAC9B,QAAQ,EAAE,2BAA2B;KACtC,CAAC;GAEI,uBAAuB,CA0C5B;AAED,uBAAuB,CAAC,MAAM,EAAE,CAAC;AAEjC,eAAe,uBAAuB,CAAC","sourcesContent":["import UI5Element from \"@ui5/webcomponents-base/dist/UI5Element.js\";\nimport { isDesktop } from \"@ui5/webcomponents-base/Device.js\";\nimport customElement from \"@ui5/webcomponents-base/dist/decorators/customElement.js\";\nimport property from \"@ui5/webcomponents-base/dist/decorators/property.js\";\nimport jsxRenderer from \"@ui5/webcomponents-base/dist/renderer/JsxRenderer.js\";\nimport ImageGridTickerItemTemplate from \"./ImageGridTickerItemTemplate.js\";\n\n// Styles\nimport ImageGridTickerItemCss from \"./generated/themes/ImageGridTickerItem.css.js\";\n\n/**\n * @class\n *\n * <h3 class=\"comment-api-title\">Overview</h3>\n *\n *\n * <h3>Usage</h3>\n *\n * For the <code>udex-image-grid-ticker-item</code>\n * <h3>ES6 Module Import</h3>\n *\n * <code>import \"@sapudex/web-components/dist/ImageGridTickerItem.js\";</code>\n *\n * @constructor\n * @extends UI5Element\n * @public\n */\n@customElement({\n tag: \"udex-image-grid-ticker-item\",\n renderer: jsxRenderer,\n styles: ImageGridTickerItemCss,\n template: ImageGridTickerItemTemplate,\n})\n\nclass UDExImageGridTickerItem extends UI5Element {\n /**\n * Defines the source URL\n *\n * @default \"\"\n * @public\n */\n @property({ type: String })\n src!: string;\n\n /**\n * Defines image alt text\n *\n * @default undefined\n * @public\n */\n @property({ type: String })\n alt?: string;\n\n /**\n * Defines tooltip on hover\n *\n * @default undefined\n * @public\n */\n @property({ type: String })\n tooltip?: string;\n\n /**\n * Defines link URL\n *\n * @default undefined\n * @public\n */\n @property({ type: String })\n href?: string;\n\n onEnterDOM(): void {\n if (isDesktop()) {\n this.setAttribute(\"desktop\", \"\");\n }\n }\n}\n\nUDExImageGridTickerItem.define();\n\nexport default UDExImageGridTickerItem;\n"]}
@@ -0,0 +1,2 @@
1
+ import type ImageGridTickerItem from "./ImageGridTickerItem.js";
2
+ export default function ImageGridTickerItemTemplate(this: ImageGridTickerItem): import("@ui5/webcomponents-base").JSX.Element;
@@ -0,0 +1,9 @@
1
+ import { jsx as _jsx } from "@ui5/webcomponents-base/jsx-runtime";
2
+ export default function ImageGridTickerItemTemplate() {
3
+ const rootClass = "udex-image-grid-ticker-item";
4
+ const img = (_jsx("img", { class: `${rootClass}__img`, part: "grid-image", src: this.src, alt: this.alt, title: this.tooltip }));
5
+ return (_jsx("div", { class: rootClass, children: this.href && this.href.length > 0
6
+ ? _jsx("a", { class: `${rootClass}__link`, href: this.href, title: this.tooltip, children: img })
7
+ : img }));
8
+ }
9
+ //# sourceMappingURL=ImageGridTickerItemTemplate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ImageGridTickerItemTemplate.js","sourceRoot":"","sources":["../src/ImageGridTickerItemTemplate.tsx"],"names":[],"mappings":";AAEA,MAAM,CAAC,OAAO,UAAU,2BAA2B;IACjD,MAAM,SAAS,GAAG,6BAA6B,CAAC;IAChD,MAAM,GAAG,GAAG,CACV,cACE,KAAK,EAAE,GAAG,SAAS,OAAO,EAC1B,IAAI,EAAC,YAAY,EACjB,GAAG,EAAE,IAAI,CAAC,GAAG,EACb,GAAG,EAAE,IAAI,CAAC,GAAG,EACb,KAAK,EAAE,IAAI,CAAC,OAAO,GACnB,CACH,CAAC;IAEF,OAAO,CACL,cAAK,KAAK,EAAE,SAAS,YAClB,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC;YAChC,CAAC,CAAC,YACA,KAAK,EAAE,GAAG,SAAS,QAAQ,EAC3B,IAAI,EAAE,IAAI,CAAC,IAAI,EACf,KAAK,EAAE,IAAI,CAAC,OAAO,YAClB,GAAG,GACF;YACJ,CAAC,CAAC,GAAG,GAEH,CACP,CAAC;AACJ,CAAC","sourcesContent":["import type ImageGridTickerItem from \"./ImageGridTickerItem.js\";\n\nexport default function ImageGridTickerItemTemplate(this: ImageGridTickerItem) {\n const rootClass = \"udex-image-grid-ticker-item\";\n const img = (\n <img\n class={`${rootClass}__img`}\n part=\"grid-image\"\n src={this.src}\n alt={this.alt}\n title={this.tooltip}\n />\n );\n\n return (\n <div class={rootClass}>\n {this.href && this.href.length > 0\n ? <a\n class={`${rootClass}__link`}\n href={this.href}\n title={this.tooltip}>\n {img}\n </a>\n : img\n }\n </div>\n );\n}\n"]}
@@ -0,0 +1,2 @@
1
+ import type ImageGridTicker from "./ImageGridTicker.js";
2
+ export default function ImageGridTickerTemplate(this: ImageGridTicker): import("@ui5/webcomponents-base").JSX.Element;
@@ -0,0 +1,14 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "@ui5/webcomponents-base/jsx-runtime";
2
+ import ImageGridTickerItem from "./ImageGridTickerItem.js";
3
+ import UDExButton from "./Button.js";
4
+ import UDExButtonDesign from "./types/ButtonDesign.js";
5
+ import playIcon from "@ui5/webcomponents-icons/dist/play.js";
6
+ import pauseIcon from "@ui5/webcomponents-icons/dist/pause.js";
7
+ export default function ImageGridTickerTemplate() {
8
+ const rootClass = "udex-image-grid-ticker";
9
+ const items = this._isScrollable && !this._isMobileView && !this._isFocusIn ? [...this.items, ...this.items] : this.items;
10
+ const btnIcon = this._isPaused ? playIcon : pauseIcon;
11
+ return (_jsxs("div", { class: rootClass, children: [this._isScrollable &&
12
+ _jsx("div", { className: `${rootClass}__play-button-holder`, children: _jsx(UDExButton, { class: `${rootClass}__play-button`, icon: btnIcon, design: UDExButtonDesign.Invisible, onClick: this._onPlayButtonClick, tooltip: this.playBtnTooltipText }) }), _jsx("div", { className: `${rootClass}__track-holder`, children: _jsx("div", { className: `${rootClass}__track-wrapper`, children: _jsx("div", { className: `${rootClass}__track`, onMouseEnter: this._stopAnimation, onMouseLeave: this._startAnimation, onFocusIn: this._onFocusIn, onFocusOut: this._onFocusOut, onKeyDown: this._onKeyDown, onMouseDown: this._onMouseDown, onMouseUp: this._onMouseUp, children: items.map(item => _jsx(ImageGridTickerItem, { src: item.src, alt: item.alt, tooltip: item.tooltip, href: item.href })) }) }) })] }));
13
+ }
14
+ //# sourceMappingURL=ImageGridTickerTemplate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ImageGridTickerTemplate.js","sourceRoot":"","sources":["../src/ImageGridTickerTemplate.tsx"],"names":[],"mappings":";AACA,OAAO,mBAAmB,MAAM,0BAA0B,CAAC;AAC3D,OAAO,UAAU,MAAM,aAAa,CAAC;AACrC,OAAO,gBAAgB,MAAM,yBAAyB,CAAC;AACvD,OAAO,QAAQ,MAAM,uCAAuC,CAAC;AAC7D,OAAO,SAAS,MAAM,wCAAwC,CAAC;AAE/D,MAAM,CAAC,OAAO,UAAU,uBAAuB;IAC7C,MAAM,SAAS,GAAG,wBAAwB,CAAC;IAC3C,MAAM,KAAK,GAAG,IAAI,CAAC,aAAa,IAAI,CAAC,IAAI,CAAC,aAAa,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC;IAC1H,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC;IAEtD,OAAO,CACL,eAAK,KAAK,EAAE,SAAS,aAClB,IAAI,CAAC,aAAa;gBACjB,cAAK,SAAS,EAAE,GAAG,SAAS,sBAAsB,YAChD,KAAC,UAAU,IACT,KAAK,EAAE,GAAG,SAAS,eAAe,EAClC,IAAI,EAAE,OAAO,EACb,MAAM,EAAE,gBAAgB,CAAC,SAAS,EAClC,OAAO,EAAE,IAAI,CAAC,kBAAkB,EAChC,OAAO,EAAE,IAAI,CAAC,kBAAkB,GACrB,GACT,EAER,cAAK,SAAS,EAAE,GAAG,SAAS,gBAAgB,YAC1C,cAAK,SAAS,EAAE,GAAG,SAAS,iBAAiB,YAC3C,cACE,SAAS,EAAE,GAAG,SAAS,SAAS,EAChC,YAAY,EAAE,IAAI,CAAC,cAAc,EACjC,YAAY,EAAE,IAAI,CAAC,eAAe,EAClC,SAAS,EAAE,IAAI,CAAC,UAAU,EAC1B,UAAU,EAAE,IAAI,CAAC,WAAW,EAC5B,SAAS,EAAE,IAAI,CAAC,UAAU,EAC1B,WAAW,EAAE,IAAI,CAAC,YAAY,EAC9B,SAAS,EAAE,IAAI,CAAC,UAAU,YACzB,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAChB,KAAC,mBAAmB,IAClB,GAAG,EAAE,IAAI,CAAC,GAAG,EACb,GAAG,EAAE,IAAI,CAAC,GAAG,EACb,OAAO,EAAE,IAAI,CAAC,OAAO,EACrB,IAAI,EAAE,IAAI,CAAC,IAAI,GACK,CACvB,GACG,GACF,GACF,IACF,CACP,CAAC;AACJ,CAAC","sourcesContent":["import type ImageGridTicker from \"./ImageGridTicker.js\";\nimport ImageGridTickerItem from \"./ImageGridTickerItem.js\";\nimport UDExButton from \"./Button.js\";\nimport UDExButtonDesign from \"./types/ButtonDesign.js\";\nimport playIcon from \"@ui5/webcomponents-icons/dist/play.js\";\nimport pauseIcon from \"@ui5/webcomponents-icons/dist/pause.js\";\n\nexport default function ImageGridTickerTemplate(this: ImageGridTicker) {\n const rootClass = \"udex-image-grid-ticker\";\n const items = this._isScrollable && !this._isMobileView && !this._isFocusIn ? [...this.items, ...this.items] : this.items;\n const btnIcon = this._isPaused ? playIcon : pauseIcon;\n\n return (\n <div class={rootClass}>\n {this._isScrollable &&\n <div className={`${rootClass}__play-button-holder`}>\n <UDExButton\n class={`${rootClass}__play-button`}\n icon={btnIcon}\n design={UDExButtonDesign.Invisible}\n onClick={this._onPlayButtonClick}\n tooltip={this.playBtnTooltipText}>\n </UDExButton>\n </div>\n }\n <div className={`${rootClass}__track-holder`}>\n <div className={`${rootClass}__track-wrapper`}>\n <div\n className={`${rootClass}__track`}\n onMouseEnter={this._stopAnimation}\n onMouseLeave={this._startAnimation}\n onFocusIn={this._onFocusIn}\n onFocusOut={this._onFocusOut}\n onKeyDown={this._onKeyDown}\n onMouseDown={this._onMouseDown}\n onMouseUp={this._onMouseUp}>\n {items.map(item =>\n <ImageGridTickerItem\n src={item.src}\n alt={item.alt}\n tooltip={item.tooltip}\n href={item.href}>\n </ImageGridTickerItem>\n )}\n </div>\n </div>\n </div>\n </div>\n );\n}\n"]}
package/dist/SelectBox.js CHANGED
@@ -30,6 +30,7 @@ import UDExButton from "./Button.js";
30
30
  import UDExValueState from "./types/common.js";
31
31
  import UDExStatusMessage from "./StatusMessage.js";
32
32
  import UDExControlButton from "./ControlButton.js";
33
+ import UDExBusyIndicator from "./BusyIndicator.js";
33
34
  import { Placement } from "./types/Dropdown.js";
34
35
  import { UDExPopoverPart } from "./types/SearchableListBase.js";
35
36
  import UDExTagGroup from "./TagGroup.js";
@@ -549,6 +550,7 @@ UDExSelectBox = UDExSelectBox_1 = __decorate([
549
550
  UDExStatusMessage,
550
551
  UDExControlButton,
551
552
  UDExTagGroup,
553
+ UDExBusyIndicator,
552
554
  UDExListItem,
553
555
  UDExList,
554
556
  UDExSearch,