@sapudex/web-components 2.40.0 → 2.41.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 (115) hide show
  1. package/cypress/specs/Dropdown.cy.tsx +90 -0
  2. package/cypress/specs/PasswordField.cy.tsx +37 -0
  3. package/cypress/specs/Search.cy.tsx +244 -138
  4. package/cypress/specs/SelectBox.cy.tsx +184 -5
  5. package/cypress/support/component-imports.instrumented.ts +2 -0
  6. package/cypress/support/component-imports.src.ts +2 -0
  7. package/dist/Dropdown.d.ts +5 -0
  8. package/dist/Dropdown.js +56 -0
  9. package/dist/Dropdown.js.map +1 -1
  10. package/dist/List.d.ts +1 -6
  11. package/dist/List.js +2 -10
  12. package/dist/List.js.map +1 -1
  13. package/dist/MastheadCountrySelector.d.ts +7 -0
  14. package/dist/MastheadCountrySelector.js +3 -0
  15. package/dist/MastheadCountrySelector.js.map +1 -1
  16. package/dist/PasswordField.d.ts +10 -0
  17. package/dist/PasswordField.js +17 -2
  18. package/dist/PasswordField.js.map +1 -1
  19. package/dist/PasswordFieldTemplate.js +1 -1
  20. package/dist/PasswordFieldTemplate.js.map +1 -1
  21. package/dist/Search.d.ts +1 -1
  22. package/dist/Search.js +13 -9
  23. package/dist/Search.js.map +1 -1
  24. package/dist/SearchTemplate.js +3 -3
  25. package/dist/SearchTemplate.js.map +1 -1
  26. package/dist/SearchableListBase.d.ts +1 -6
  27. package/dist/SearchableListBase.js.map +1 -1
  28. package/dist/SearchableListBaseTemplate.js +1 -1
  29. package/dist/SearchableListBaseTemplate.js.map +1 -1
  30. package/dist/SelectBase.d.ts +7 -1
  31. package/dist/SelectBase.js +114 -17
  32. package/dist/SelectBase.js.map +1 -1
  33. package/dist/TextField.d.ts +1 -1
  34. package/dist/TextField.js +2 -2
  35. package/dist/TextField.js.map +1 -1
  36. package/dist/TextFieldTemplate.js +1 -1
  37. package/dist/TextFieldTemplate.js.map +1 -1
  38. package/dist/assets/{InputSuggestions-DAElWNvY.js → InputSuggestions-BSg7bjcx.js} +1 -1
  39. package/dist/assets/{ListItemStandardExpandableTextTemplate-B2fGcGW7.js → ListItemStandardExpandableTextTemplate-CCEQur_J.js} +1 -1
  40. package/dist/assets/{bundle.esm-DPVxY8xv.js → bundle.esm-I7iOjLgn.js} +232 -232
  41. package/dist/assets/messagebundle_en-BZqDcZHN.js +1 -0
  42. package/dist/assets/messagebundle_hu-CBV3ISbF.js +1 -0
  43. package/dist/css/themes/MastheadCountrySelector.css +1 -1
  44. package/dist/css/themes/MastheadProfileMenu.css +1 -1
  45. package/dist/css/themes/StatusMessage.css +1 -1
  46. package/dist/css/themes/TextField.css +1 -1
  47. package/dist/css/themes/Toast.css +1 -1
  48. package/dist/custom-elements-internal.json +38 -146
  49. package/dist/custom-elements.json +38 -114
  50. package/dist/features/SearchSuggestionsPopover.d.ts +6 -9
  51. package/dist/features/SearchSuggestionsPopover.js +47 -163
  52. package/dist/features/SearchSuggestionsPopover.js.map +1 -1
  53. package/dist/generated/assets/i18n/messagebundle_en.json +1 -1
  54. package/dist/generated/assets/i18n/messagebundle_hu.json +1 -1
  55. package/dist/generated/i18n/i18n-defaults.d.ts +3 -2
  56. package/dist/generated/i18n/i18n-defaults.js +3 -2
  57. package/dist/generated/i18n/i18n-defaults.js.map +1 -1
  58. package/dist/generated/templates/MastheadCountrySelectorTemplate.lit.js +6 -5
  59. package/dist/generated/templates/MastheadCountrySelectorTemplate.lit.js.map +1 -1
  60. package/dist/generated/templates/MastheadMobileMenuTemplate.lit.js +1 -1
  61. package/dist/generated/templates/MastheadMobileMenuTemplate.lit.js.map +1 -1
  62. package/dist/generated/themes/MastheadCountrySelector.css.d.ts +1 -1
  63. package/dist/generated/themes/MastheadCountrySelector.css.js +1 -1
  64. package/dist/generated/themes/MastheadCountrySelector.css.js.map +1 -1
  65. package/dist/generated/themes/MastheadProfileMenu.css.d.ts +1 -1
  66. package/dist/generated/themes/MastheadProfileMenu.css.js +1 -1
  67. package/dist/generated/themes/MastheadProfileMenu.css.js.map +1 -1
  68. package/dist/generated/themes/StatusMessage.css.d.ts +1 -1
  69. package/dist/generated/themes/StatusMessage.css.js +1 -1
  70. package/dist/generated/themes/StatusMessage.css.js.map +1 -1
  71. package/dist/generated/themes/TextField.css.d.ts +1 -1
  72. package/dist/generated/themes/TextField.css.js +1 -1
  73. package/dist/generated/themes/TextField.css.js.map +1 -1
  74. package/dist/generated/themes/Toast.css.d.ts +1 -1
  75. package/dist/generated/themes/Toast.css.js +1 -1
  76. package/dist/generated/themes/Toast.css.js.map +1 -1
  77. package/dist/messagebundle.properties +2 -1
  78. package/dist/messagebundle_en.properties +2 -1
  79. package/dist/messagebundle_hu.properties +125 -0
  80. package/dist/vscode.html-custom-data.json +10 -25
  81. package/dist/web-types.json +21 -41
  82. package/package.json +1 -1
  83. package/src/Dropdown.ts +62 -0
  84. package/src/List.ts +3 -18
  85. package/src/MastheadCountrySelector.hbs +2 -0
  86. package/src/MastheadCountrySelector.ts +9 -0
  87. package/src/MastheadMobileMenu.hbs +1 -0
  88. package/src/PasswordField.ts +24 -0
  89. package/src/PasswordFieldTemplate.tsx +2 -2
  90. package/src/Search.ts +13 -9
  91. package/src/SearchTemplate.tsx +0 -3
  92. package/src/SearchableListBase.ts +1 -6
  93. package/src/SearchableListBaseTemplate.tsx +0 -1
  94. package/src/SelectBase.ts +114 -19
  95. package/src/TextField.ts +1 -1
  96. package/src/TextFieldTemplate.tsx +1 -1
  97. package/src/features/SearchSuggestionsPopover.ts +55 -177
  98. package/src/generated/i18n/i18n-defaults.ts +2 -2
  99. package/src/generated/templates/MastheadCountrySelectorTemplate.lit.ts +6 -5
  100. package/src/generated/templates/MastheadMobileMenuTemplate.lit.ts +1 -1
  101. package/src/generated/themes/MastheadCountrySelector.css.ts +1 -1
  102. package/src/generated/themes/MastheadProfileMenu.css.ts +1 -1
  103. package/src/generated/themes/StatusMessage.css.ts +1 -1
  104. package/src/generated/themes/TextField.css.ts +1 -1
  105. package/src/generated/themes/Toast.css.ts +1 -1
  106. package/src/i18n/messagebundle.properties +2 -1
  107. package/src/i18n/messagebundle_en.properties +2 -1
  108. package/src/i18n/messagebundle_hu.properties +125 -0
  109. package/src/themes/MastheadCountrySelector.css +5 -2
  110. package/src/themes/MastheadProfileMenu.css +0 -5
  111. package/src/themes/StatusMessage.css +4 -4
  112. package/src/themes/TextField.css +3 -0
  113. package/src/themes/Toast.css +14 -2
  114. package/dist/assets/messagebundle_en-BxjFAY2S.js +0 -1
  115. package/dist/assets/messagebundle_hu-BEMbu-EE.js +0 -1
package/src/SelectBase.ts CHANGED
@@ -3,7 +3,7 @@ import slot from "@ui5/webcomponents-base/dist/decorators/slot-strict.js";
3
3
  import executeTemplate from "@ui5/webcomponents-base/dist/renderer/executeTemplate.js";
4
4
  import type { ChangeInfo, Slot } from "@ui5/webcomponents-base/dist/UI5Element.js";
5
5
  import {
6
- isEscape, isDown, isUp, isHome, isEnd, isTabNext, isTabPrevious,
6
+ isEscape, isDown, isUp, isHome, isEnd, isTabNext, isTabPrevious, isLeft, isRight,
7
7
  } from "@ui5/webcomponents-base/dist/Keys.js";
8
8
  import { getAllAccessibleNameRefTexts } from "@ui5/webcomponents-base/dist/util/AccessibilityTextsHelper.js";
9
9
  import type { UDExListItemBase } from "./List.js";
@@ -188,10 +188,13 @@ class UDExSelectBase extends UDExSearchableListBase {
188
188
  _inputValue: string = "";
189
189
  _lastSelectedItemId: string = "";
190
190
  _handleResizeBound: ResizeObserverCallback;
191
+ _handleListKeyDownBound: (e: KeyboardEvent) => void;
192
+ _listKeyDownListenerAdded: boolean = false;
191
193
 
192
194
  constructor() {
193
195
  super();
194
196
  this._handleResizeBound = this._handleResize.bind(this);
197
+ this._handleListKeyDownBound = this._handleListKeyDownCapture.bind(this);
195
198
  }
196
199
 
197
200
  onEnterDOM() {
@@ -203,6 +206,10 @@ class UDExSelectBase extends UDExSearchableListBase {
203
206
 
204
207
  onExitDOM() {
205
208
  ResizeHandler.deregister(this, this._handleResizeBound);
209
+ if (this._list && this._listKeyDownListenerAdded) {
210
+ this._list.removeEventListener("keydown", this._handleListKeyDownBound, { capture: true });
211
+ this._listKeyDownListenerAdded = false;
212
+ }
206
213
  }
207
214
 
208
215
  onInvalidation({ name }: ChangeInfo): void {
@@ -221,6 +228,11 @@ class UDExSelectBase extends UDExSearchableListBase {
221
228
  if (this._requestRender) {
222
229
  this._requestRender = false;
223
230
  }
231
+
232
+ if (!this._listKeyDownListenerAdded && this._list) {
233
+ this._list.addEventListener("keydown", this._handleListKeyDownBound, { capture: true });
234
+ this._listKeyDownListenerAdded = true;
235
+ }
224
236
  }
225
237
 
226
238
  _handleResize() {
@@ -256,21 +268,23 @@ class UDExSelectBase extends UDExSearchableListBase {
256
268
  return;
257
269
  }
258
270
 
259
- if (isTabNext(e) && !this.tabNavigationEnabled) {
271
+ if (isTabNext(e)) {
260
272
  e.preventDefault();
261
273
  (this._firstFocusableIn(this.footer[0]) ?? this.footer[0])?.focus();
262
274
  return;
263
275
  }
264
276
  }
265
277
 
266
- if (isTabPrevious(e) && !this.tabNavigationEnabled) {
278
+ if (isTabPrevious(e)) {
267
279
  e.preventDefault();
268
280
  this._search.focus();
269
281
  return;
270
282
  }
271
283
 
272
- if (isTabNext(e) && !this.tabNavigationEnabled) {
284
+ if (isTabNext(e)) {
285
+ e.preventDefault();
273
286
  this.closeDropdown();
287
+ this._moveFocusAfterComponent();
274
288
  return;
275
289
  }
276
290
 
@@ -279,15 +293,32 @@ class UDExSelectBase extends UDExSearchableListBase {
279
293
  return;
280
294
  }
281
295
 
282
- if (!items || this.tabNavigationEnabled) {
296
+ if (!items) {
297
+ return;
298
+ }
299
+
300
+ if (isRight(e)) {
301
+ e.preventDefault();
302
+ this._handleArrowRightInRow(e.target as HTMLElement);
303
+ return;
304
+ }
305
+
306
+ if (isLeft(e)) {
307
+ e.preventDefault();
308
+ this._handleArrowLeftInRow(e.target as HTMLElement);
283
309
  return;
284
310
  }
285
311
 
286
- this.handleListNavigationKeys(e, items);
312
+ const iconSlot = this._getIconButtonSlot(e.target as HTMLElement);
313
+ const effectiveTarget = iconSlot
314
+ ? (e.target as HTMLElement).parentElement as UDExListItemBase | undefined
315
+ : undefined;
316
+
317
+ this.handleListNavigationKeys(e, items, effectiveTarget);
287
318
  }
288
319
 
289
- handleListNavigationKeys(e: KeyboardEvent, items: UDExListItemBase[]) {
290
- const currentSelectedIndex = this._list?.getCurrentIndex(items, e.target as UDExListItemBase);
320
+ handleListNavigationKeys(e: KeyboardEvent, items: UDExListItemBase[], effectiveTarget?: UDExListItemBase) {
321
+ const currentSelectedIndex = this._list?.getCurrentIndex(items, effectiveTarget ?? e.target as UDExListItemBase);
291
322
  const lastItemIndex = items.length - 1;
292
323
 
293
324
  if (isDown(e)) {
@@ -391,10 +422,7 @@ class UDExSelectBase extends UDExSearchableListBase {
391
422
  e.stopPropagation();
392
423
  this.closeDropdown();
393
424
  this._search.focus();
394
-
395
- if (!this.tabNavigationEnabled) {
396
- this._selectedOption = "";
397
- }
425
+ this._selectedOption = "";
398
426
  }
399
427
 
400
428
  handleItemSelection(e:CustomEvent) {
@@ -451,10 +479,7 @@ class UDExSelectBase extends UDExSearchableListBase {
451
479
  const firstIndex = (items[0]?.nonInteractive && !items[0]?.collapsible) ? 1 : 0;
452
480
  const firstItem = items[firstIndex];
453
481
  this._list.setTabIndexByIndex(items, firstIndex);
454
-
455
- if (!this.tabNavigationEnabled) {
456
- this._selectedOption = firstItem.label;
457
- }
482
+ this._selectedOption = firstItem.label;
458
483
 
459
484
  if (firstItem.isGroup) {
460
485
  this._list.focusHeader(firstItem);
@@ -580,6 +605,78 @@ class UDExSelectBase extends UDExSearchableListBase {
580
605
  return this.footer.length > 0;
581
606
  }
582
607
 
608
+ _getIconButtonSlot(el: HTMLElement): string | null {
609
+ const iconSlot = el.getAttribute?.("slot");
610
+ return (iconSlot === "firstIcon" || iconSlot === "secondIcon") ? iconSlot : null;
611
+ }
612
+
613
+ _handleArrowRightInRow(target: HTMLElement): void {
614
+ const iconSlot = this._getIconButtonSlot(target);
615
+ if (!iconSlot) {
616
+ const firstIcon = target.querySelector<HTMLElement>("[slot=\"firstIcon\"]");
617
+ firstIcon?.focus();
618
+ return;
619
+ }
620
+ if (iconSlot === "firstIcon") {
621
+ const parentItem = target.parentElement;
622
+ if (parentItem) {
623
+ const secondIcon = parentItem.querySelector<HTMLElement>("[slot=\"secondIcon\"]");
624
+ secondIcon?.focus();
625
+ }
626
+ }
627
+ }
628
+
629
+ _handleArrowLeftInRow(target: HTMLElement): void {
630
+ const iconSlot = this._getIconButtonSlot(target);
631
+ if (!iconSlot) { return; }
632
+ const parentItem = target.parentElement;
633
+ if (!parentItem) { return; }
634
+ if (iconSlot === "secondIcon") {
635
+ const firstIcon = parentItem.querySelector<HTMLElement>("[slot=\"firstIcon\"]");
636
+ firstIcon?.focus();
637
+ } else if (iconSlot === "firstIcon") {
638
+ (parentItem as UDExListItemBase).focus();
639
+ }
640
+ }
641
+
642
+ _handleListKeyDownCapture(e: KeyboardEvent): void {
643
+ const target = e.target as HTMLElement;
644
+ if (!this._getIconButtonSlot(target)) { return; }
645
+ if (!isDown(e) && !isUp(e)) { return; }
646
+
647
+ const items = this._list?.getKeyboardNavigationItems();
648
+ if (!items?.length) { return; }
649
+
650
+ e.stopImmediatePropagation();
651
+ e.preventDefault();
652
+
653
+ const parentItem = target.parentElement as UDExListItemBase | null;
654
+ if (!parentItem) { return; }
655
+
656
+ const currentIndex = this._list.getCurrentIndex(items, parentItem);
657
+ if (currentIndex < 0) { return; }
658
+
659
+ const lastItemIndex = items.length - 1;
660
+ let targetIndex: number;
661
+
662
+ if (isDown(e)) {
663
+ const nextIndex = currentIndex + 1 > lastItemIndex ? 0 : currentIndex + 1;
664
+ const isNonInteractive = items[nextIndex].nonInteractive && !items[nextIndex].collapsible;
665
+ const wrappedNext = nextIndex + 1 > lastItemIndex ? 0 : nextIndex + 1;
666
+ targetIndex = isNonInteractive ? wrappedNext : nextIndex;
667
+ } else {
668
+ const prevIndex = currentIndex - 1 < 0 ? lastItemIndex : currentIndex - 1;
669
+ const isNonInteractive = items[prevIndex].nonInteractive && !items[prevIndex].collapsible;
670
+ const wrappedPrev = prevIndex === 0 ? lastItemIndex : prevIndex - 1;
671
+ targetIndex = isNonInteractive ? wrappedPrev : prevIndex;
672
+ }
673
+
674
+ this._list.unsetTabIndexByIndex(items, currentIndex);
675
+ this._list.setTabIndexByIndex(items, targetIndex);
676
+ items[targetIndex].focus();
677
+ this._selectedOption = items[targetIndex].label;
678
+ }
679
+
583
680
  _focusLastListItem() {
584
681
  const items = this._list?.getKeyboardNavigationItems();
585
682
  if (!items || items.length === 0) {
@@ -589,9 +686,7 @@ class UDExSelectBase extends UDExSearchableListBase {
589
686
  const lastIndex = items.length - 1;
590
687
  const lastItem = items[lastIndex];
591
688
  this._list.setTabIndexByIndex(items, lastIndex);
592
- if (!this.tabNavigationEnabled) {
593
- this._selectedOption = lastItem.label;
594
- }
689
+ this._selectedOption = lastItem.label;
595
690
  if (lastItem.isGroup) {
596
691
  this._list.focusHeader(lastItem);
597
692
  } else {
package/src/TextField.ts CHANGED
@@ -280,7 +280,7 @@ class UDExTextField extends UI5Element {
280
280
  */
281
281
 
282
282
  @property({ type: String })
283
- showButtonTooltip: string = "";
283
+ buttonTooltip: string = "";
284
284
 
285
285
  /**
286
286
  * Defines the inner stored class of the label.
@@ -49,7 +49,7 @@ export default function TextFieldTemplate(this: TextField) {
49
49
  part="textfield-control-btn"
50
50
  class={`${rootClass}__icon-container`}
51
51
  size="Large"
52
- tooltip={this.showButtonTooltip}
52
+ tooltip={this.buttonTooltip}
53
53
  active={this.active}
54
54
  disabled={this.disabled}
55
55
  readonly={this.readonly}
@@ -10,7 +10,7 @@ interface SuggestionComponent extends UI5Element {
10
10
  open: boolean;
11
11
  value?: string;
12
12
  suggestionItems?: string;
13
- openSuggestionPopup?: boolean;
13
+ openSuggestionPopup: boolean;
14
14
  }
15
15
 
16
16
  type SearchInputSuggestion = {
@@ -32,8 +32,6 @@ class Suggestion {
32
32
  focusabledList?: HTMLDivElement;
33
33
  lists?: Array<HTMLDivElement>;
34
34
  _focusHandler: UDExListWithFirstLetterFocus = new UDExFirstLetterFocusHandler();
35
- _tabEscapedFromPopover: boolean = false;
36
- _shiftTabEscapedFromPopover: boolean = false;
37
35
 
38
36
  constructor(component: SuggestionComponent) {
39
37
  this.component = component;
@@ -76,22 +74,15 @@ class Suggestion {
76
74
  this._focusHandler.focusMatchingListItem(key);
77
75
  }
78
76
  }
79
- initLists(): void {
80
- const list = this.popover?.querySelectorAll(".udex-search-suggestions__list") ? this.popover?.querySelectorAll<HTMLDivElement>(".udex-search-suggestions__list") : [];
81
- const newLists = Array.from(list);
82
-
83
- if (this.focusabledList && this.lists?.length && newLists.length) {
84
- const oldIndex = this.lists.indexOf(this.focusabledList);
85
- if (oldIndex >= 0 && oldIndex < newLists.length) {
86
- this.focusabledList = newLists[oldIndex];
87
- }
88
- }
89
77
 
90
- this.lists = newLists;
78
+ initLists(): void {
79
+ const list = this.popover?.querySelectorAll<HTMLDivElement>(".udex-search-suggestions__list") ?? [];
80
+ this.lists = Array.from(list);
91
81
  }
92
82
 
93
83
  close(): void {
94
84
  this._getSuggestionPopover();
85
+ this.getAllFocusableItems().forEach(item => item.removeAttribute("aria-selected"));
95
86
  this._getComponent().open = false;
96
87
  this.popover!.open = false;
97
88
  this.selectedItemIndex = -1;
@@ -114,192 +105,79 @@ class Suggestion {
114
105
  }
115
106
  }
116
107
 
117
- onTab(e: KeyboardEvent) {
118
- if (this._tabEscapedFromPopover) {
119
- this._tabEscapedFromPopover = false;
120
- return;
121
- }
122
- if (this.lists?.length && this._getComponent().open) {
123
- this._shiftTabEscapedFromPopover = false;
124
- e.preventDefault();
125
- this.focusabledList = this.lists[0];
126
- this.selectedItemIndex = -1;
127
- this.focusabledList.focus();
128
- }
108
+ getAllFocusableItems(): Element[] {
109
+ return Array.from(this.popover?.querySelectorAll<Button>("[ui5-button]") ?? []);
129
110
  }
130
111
 
131
- getFocusableItems(): Element[] {
132
- const items = this.focusabledList?.children ? this.focusabledList?.querySelectorAll<Button>("[ui5-button]") : [];
133
- return Array.from(items);
134
- }
135
-
136
- onShiftTab(e: KeyboardEvent): void {
137
- if (this._shiftTabEscapedFromPopover) {
138
- this._shiftTabEscapedFromPopover = false;
139
- return;
140
- }
141
- const keepOpen = !!this.component.openSuggestionPopup;
142
- if (keepOpen && this.lists?.length && this._getComponent().open) {
143
- this._tabEscapedFromPopover = false;
144
- e.preventDefault();
145
- this.focusabledList = this.lists[this.lists.length - 1];
146
- this.focusabledList.focus();
147
- this.selectedItemIndex = -1;
112
+ private _updateItemSelection(items: Element[], nextIndex: number): void {
113
+ if (this.selectedItemIndex >= 0 && this.selectedItemIndex < items.length) {
114
+ items[this.selectedItemIndex].removeAttribute("aria-selected");
148
115
  }
116
+ const button = items[nextIndex] as UI5Element;
117
+ button.setAttribute("aria-selected", "true");
118
+ button.focus();
119
+ this.selectedItemIndex = nextIndex;
149
120
  }
150
121
 
151
- onEscape(e: KeyboardEvent) {
122
+ onKeyDown(e: KeyboardEvent): void {
152
123
  e.preventDefault();
153
- this.close();
154
- this.onFocusInput();
155
- }
124
+ const items = this.getAllFocusableItems();
125
+ if (!items.length) {
126
+ return;
127
+ }
156
128
 
157
- onKeyTabList(e: KeyboardEvent) {
158
- const keepOpen = !!this.component.openSuggestionPopup;
129
+ const nextIndex = this.selectedItemIndex < 0 || this.selectedItemIndex >= items.length - 1
130
+ ? 0
131
+ : this.selectedItemIndex + 1;
159
132
 
160
- if (this.lists?.length === 2) {
161
- if (this.focusabledList === this.lists[1]) {
162
- e.preventDefault();
163
- if (keepOpen) {
164
- this.focusabledList = undefined;
165
- this.selectedItemIndex = -1;
166
- this._tabEscapedFromPopover = true;
167
- this.onFocusInput();
168
- return;
169
- }
170
- this.close();
171
- this.onFocusInput();
172
- return;
173
- }
174
- if (this.focusabledList === this.lists[0]) {
175
- e.preventDefault();
176
- this.focusabledList = this.lists[1];
177
- this.focusabledList.focus();
178
- this.selectedItemIndex = -1;
179
- }
180
- }
181
- if (this.lists?.length === 1) {
182
- e.preventDefault();
183
- if (keepOpen) {
184
- this.focusabledList = undefined;
185
- this.selectedItemIndex = -1;
186
- this._tabEscapedFromPopover = true;
187
- this.onFocusInput();
188
- return;
189
- }
190
- this.close();
191
- this.onFocusInput();
192
- }
133
+ this._updateItemSelection(items, nextIndex);
193
134
  }
194
135
 
195
- onPrevKeyTabList(e: KeyboardEvent) {
196
- const keepOpen = !!this.component.openSuggestionPopup;
136
+ onKeyUp(e: KeyboardEvent): void {
197
137
  e.preventDefault();
198
- if (this.lists?.length === 2) {
199
- if (this.focusabledList === this.lists[0]) {
200
- if (keepOpen) {
201
- this.focusabledList = undefined;
202
- this.selectedItemIndex = -1;
203
- this._shiftTabEscapedFromPopover = true;
204
- }
205
- this.onFocusInput();
206
- return;
207
- }
208
- if (this.focusabledList === this.lists[1]) {
209
- this.focusabledList = this.lists[0];
210
- this.focusabledList.focus();
211
- this.selectedItemIndex = -1;
212
- }
213
- }
214
- if (this.lists?.length === 1) {
215
- if (keepOpen) {
216
- this.focusabledList = undefined;
217
- this.selectedItemIndex = -1;
218
- this._shiftTabEscapedFromPopover = true;
219
- }
220
- this.onFocusInput();
138
+ const items = this.getAllFocusableItems();
139
+ if (!items.length) {
140
+ return;
221
141
  }
222
- }
223
142
 
224
- onKeyDown(e: KeyboardEvent) {
225
- e.preventDefault();
226
- const nextSelectedIdx = this.selectedItemIndex;
227
- const focusabledItems = this.getFocusableItems();
228
- const itemCount = focusabledItems.length - 1;
143
+ const prevIndex = this.selectedItemIndex <= 0
144
+ ? items.length - 1
145
+ : this.selectedItemIndex - 1;
229
146
 
230
- if (this.lists?.length) {
231
- if (nextSelectedIdx === -1) {
232
- const button = focusabledItems[0] as UI5Element;
233
-
234
- button.setAttribute("aria-selected", "true");
235
- button.focus();
236
- this.selectedItemIndex = 0;
237
- this.focusabledList?.setAttribute("aria-activedescendant", button.id);
238
- return true;
239
- }
240
- if (nextSelectedIdx >= 0 && nextSelectedIdx !== itemCount) {
241
- const button = focusabledItems[nextSelectedIdx + 1] as UI5Element;
147
+ this._updateItemSelection(items, prevIndex);
148
+ }
242
149
 
243
- focusabledItems[nextSelectedIdx].removeAttribute("aria-selected");
244
- button.setAttribute("aria-selected", "true");
245
- button.focus();
246
- this.selectedItemIndex = nextSelectedIdx + 1;
247
- this.focusabledList?.setAttribute("aria-activedescendant", button.id);
248
- return true;
249
- }
250
- if (nextSelectedIdx === itemCount && this.focusabledList === this.lists[0] && this.lists.length === 2) {
251
- focusabledItems[nextSelectedIdx].removeAttribute("aria-selected");
252
- this.focusabledList?.removeAttribute("aria-activedescendant");
253
- this.focusabledList = this.lists[1];
254
- this.focusabledList.focus();
255
- this.selectedItemIndex = -1;
256
- return true;
257
- }
150
+ onTab(): void {
151
+ if (!this._getComponent().openSuggestionPopup) {
152
+ this.close();
258
153
  }
154
+ this.resetFocusState();
259
155
  }
260
156
 
261
- onKeyUp(e: KeyboardEvent) {
157
+ onEscape(e: KeyboardEvent): void {
262
158
  e.preventDefault();
263
- const focusabledItems = this.getFocusableItems();
264
- const itemCount = focusabledItems.length - 1;
265
- const previousSelectedIdx = this.selectedItemIndex;
266
-
267
- if (this.lists?.length) {
268
- if (previousSelectedIdx === -1) {
269
- const button = focusabledItems[0] as UI5Element;
270
-
271
- button.setAttribute("aria-selected", "true");
272
- button.focus();
273
- this.selectedItemIndex = 0;
274
- this.focusabledList?.setAttribute("aria-activedescendant", button.id);
275
- return true;
276
- }
277
- if (previousSelectedIdx > 0 && previousSelectedIdx <= itemCount) {
278
- const button = focusabledItems[previousSelectedIdx - 1] as UI5Element;
159
+ this.close();
160
+ this.onFocusInput();
161
+ }
279
162
 
280
- focusabledItems[previousSelectedIdx].removeAttribute("aria-selected");
281
- button.setAttribute("aria-selected", "true");
282
- button.focus();
283
- this.selectedItemIndex = previousSelectedIdx - 1;
284
- this.focusabledList?.setAttribute("aria-activedescendant", button.id);
285
- return true;
286
- }
287
- if (previousSelectedIdx === 0 && this.lists.length === 2 && this.focusabledList === this.lists[1]) {
288
- focusabledItems[previousSelectedIdx].removeAttribute("aria-selected");
289
- this.focusabledList?.removeAttribute("aria-activedescendant");
290
- this.focusabledList = this.lists[0];
291
- this.focusabledList.focus();
292
- this.selectedItemIndex = -1;
293
- return true;
294
- }
163
+ onKeyTabList(e: KeyboardEvent): void {
164
+ e.preventDefault();
165
+ this.close();
166
+ this.resetFocusState();
167
+ const shadow = this._getComponent().shadowRoot;
168
+ const firstBtn = shadow?.querySelector<HTMLElement>("#reset-button, #voice-button, #submit-button");
169
+ if (firstBtn) {
170
+ firstBtn.focus();
171
+ } else {
172
+ this.onFocusInput();
295
173
  }
296
174
  }
297
175
 
298
- handlePrevTabReset(e: KeyboardEvent) {
299
- if (this.focusabledList) {
300
- e.preventDefault();
301
- this.focusabledList.focus();
302
- }
176
+ onPrevKeyTabList(e: KeyboardEvent): void {
177
+ e.preventDefault();
178
+ this.close();
179
+ this.resetFocusState();
180
+ this.onFocusInput();
303
181
  }
304
182
 
305
183
  static get dependencies() {
@@ -1,3 +1,3 @@
1
1
  import type { I18nText } from "@ui5/webcomponents-base/dist/i18nBundle.js";
2
- const COUNT: I18nText = {key: "COUNT", defaultText: "Count"};const OF: I18nText = {key: "OF", defaultText: "of"};const PAGINATION_PAGE: I18nText = {key: "PAGINATION_PAGE", defaultText: "Pagination page"};const SELECTED: I18nText = {key: "SELECTED", defaultText: "Selected"};const FIRST_PAGE: I18nText = {key: "FIRST_PAGE", defaultText: "First page"};const LAST_PAGE: I18nText = {key: "LAST_PAGE", defaultText: "Last page"};const PREVIOUS_PAGE: I18nText = {key: "PREVIOUS_PAGE", defaultText: "Previous page"};const NEXT_PAGE: I18nText = {key: "NEXT_PAGE", defaultText: "Next page"};const CURRENT_PAGE: I18nText = {key: "CURRENT_PAGE", defaultText: "Current page"};const ACTIVATE_PAGE: I18nText = {key: "ACTIVATE_PAGE", defaultText: "Activate page number"};const BUTTON_ARIA_TYPE_PRIMARY: I18nText = {key: "BUTTON_ARIA_TYPE_PRIMARY", defaultText: "Primary"};const BUTTON_ARIA_TYPE_SECONDARY: I18nText = {key: "BUTTON_ARIA_TYPE_SECONDARY", defaultText: "Secondary"};const BUTTON_ARIA_TYPE_TERTIARY: I18nText = {key: "BUTTON_ARIA_TYPE_TERTIARY", defaultText: "Tertiary"};const BUTTON_ARIA_TYPE_WARNING: I18nText = {key: "BUTTON_ARIA_TYPE_WARNING", defaultText: "Warning"};const BUTTON_ARIA_TYPE_POSITIVE: I18nText = {key: "BUTTON_ARIA_TYPE_POSITIVE", defaultText: "Positive"};const BUTTON_ARIA_TYPE_NEGATIVE: I18nText = {key: "BUTTON_ARIA_TYPE_NEGATIVE", defaultText: "Negative"};const BUTTON_ARIA_EMPHASIZED: I18nText = {key: "BUTTON_ARIA_EMPHASIZED", defaultText: "Emphasized"};const BUTTON_ARIA_DEFAULT: I18nText = {key: "BUTTON_ARIA_DEFAULT", defaultText: "Default"};const BUTTON_ARIA_TRANSPARENT: I18nText = {key: "BUTTON_ARIA_TRANSPARENT", defaultText: "Transparent"};const BUTTON_ARIA_ATTENTION: I18nText = {key: "BUTTON_ARIA_ATTENTION", defaultText: "Attention"};const TOGGLED: I18nText = {key: "TOGGLED", defaultText: "Toggled"};const SUGGESTED_TEXT: I18nText = {key: "SUGGESTED_TEXT", defaultText: "Suggested searches"};const ACCESSIBLE_NAME_RESET_ICON: I18nText = {key: "ACCESSIBLE_NAME_RESET_ICON", defaultText: "Clear"};const ACCESSIBLE_NAME_SEARCH_ICON: I18nText = {key: "ACCESSIBLE_NAME_SEARCH_ICON", defaultText: "Search"};const TOOLTIP_RESET_BUTTON: I18nText = {key: "TOOLTIP_RESET_BUTTON", defaultText: "Clear"};const TOOLTIP_VOICE_BUTTON: I18nText = {key: "TOOLTIP_VOICE_BUTTON", defaultText: "Voice"};const TOOLTIP_SUBMIT_BUTTON: I18nText = {key: "TOOLTIP_SUBMIT_BUTTON", defaultText: "Submit"};const LISTENING: I18nText = {key: "LISTENING", defaultText: "Listening"};const AVAILABLE_VALUES: I18nText = {key: "AVAILABLE_VALUES", defaultText: "Available Values"};const RECOMMENDED_TEXT: I18nText = {key: "RECOMMENDED_TEXT", defaultText: "Recommended pages"};const EXPAND_ALL: I18nText = {key: "EXPAND_ALL", defaultText: "Expand All"};const COLLAPSE_ALL: I18nText = {key: "COLLAPSE_ALL", defaultText: "Collapse All"};const MORE: I18nText = {key: "MORE", defaultText: "More"};const ATTENTION_BADGE: I18nText = {key: "ATTENTION_BADGE", defaultText: "Attention badge"};const REVIEWS: I18nText = {key: "REVIEWS", defaultText: "reviews"};const STARS: I18nText = {key: "STARS", defaultText: "stars"};const READ_MORE: I18nText = {key: "READ_MORE", defaultText: "Read more"};const READ_LESS: I18nText = {key: "READ_LESS", defaultText: "Read less"};const SHOW_MORE: I18nText = {key: "SHOW_MORE", defaultText: "Show more"};const SHOW_LESS: I18nText = {key: "SHOW_LESS", defaultText: "Show less"};const RATING_INDICATOR_TEXT: I18nText = {key: "RATING_INDICATOR_TEXT", defaultText: "Rating Indicator"};const RATING_INDICATOR_TOOLTIP_TEXT: I18nText = {key: "RATING_INDICATOR_TOOLTIP_TEXT", defaultText: "Rating"};const RATING_INDICATOR_ARIA_DESCRIPTION: I18nText = {key: "RATING_INDICATOR_ARIA_DESCRIPTION", defaultText: "Required"};const TOTAL: I18nText = {key: "TOTAL", defaultText: "Total"};const RATING_COUNT_TITLE: I18nText = {key: "RATING_COUNT_TITLE", defaultText: "Rating"};const MESSAGE_STRIP_CLOSE_BUTTON: I18nText = {key: "MESSAGE_STRIP_CLOSE_BUTTON", defaultText: "Message Strip Close Button"};const MESSAGE_STRIP_INFORMATION: I18nText = {key: "MESSAGE_STRIP_INFORMATION", defaultText: "Information Bar"};const MESSAGE_STRIP_SUCCESS: I18nText = {key: "MESSAGE_STRIP_SUCCESS", defaultText: "Positive Bar"};const MESSAGE_STRIP_WARNING: I18nText = {key: "MESSAGE_STRIP_WARNING", defaultText: "Warning Bar"};const MESSAGE_STRIP_ERROR: I18nText = {key: "MESSAGE_STRIP_ERROR", defaultText: "Negative Bar"};const MESSAGE_STRIP_ACTION: I18nText = {key: "MESSAGE_STRIP_ACTION", defaultText: "Action Bar"};const ARIA_LABEL_LIST_MULTISELECTABLE: I18nText = {key: "ARIA_LABEL_LIST_MULTISELECTABLE", defaultText: "Contains Multi-Selectable Items"};const ARIA_LABEL_LIST_SELECTABLE: I18nText = {key: "ARIA_LABEL_LIST_SELECTABLE", defaultText: "Contains Selectable Items"};const UNSELECTED: I18nText = {key: "UNSELECTED", defaultText: "Unselected"};const INDETERMINATE: I18nText = {key: "INDETERMINATE", defaultText: "Indeterminate"};const EDIT_BUTTON: I18nText = {key: "EDIT_BUTTON", defaultText: "Edit"};const DELETE_BUTTON: I18nText = {key: "DELETE_BUTTON", defaultText: "Delete"};const TEXTAREA_CHARACTERS_LEFT: I18nText = {key: "TEXTAREA_CHARACTERS_LEFT", defaultText: "{0} characters remaining"};const VALUE_STATE_TYPE_ERROR: I18nText = {key: "VALUE_STATE_TYPE_ERROR", defaultText: "Field State Error"};const VALUE_STATE_TYPE_WARNING: I18nText = {key: "VALUE_STATE_TYPE_WARNING", defaultText: "Field State Warning"};const VALUE_STATE_TYPE_SUCCESS: I18nText = {key: "VALUE_STATE_TYPE_SUCCESS", defaultText: "Field State Success"};const VALUE_STATE_TYPE_STANDARD: I18nText = {key: "VALUE_STATE_TYPE_STANDARD", defaultText: "Field State Standard"};const TEXT_FIELD: I18nText = {key: "TEXT_FIELD", defaultText: "Text field"};const CAROUSEL_PREVIOUS_ARROW_TEXT: I18nText = {key: "CAROUSEL_PREVIOUS_ARROW_TEXT", defaultText: "Previous Page"};const CAROUSEL_NEXT_ARROW_TEXT: I18nText = {key: "CAROUSEL_NEXT_ARROW_TEXT", defaultText: "Next Page"};const SHOW_RESULTS: I18nText = {key: "SHOW_RESULTS", defaultText: "Show Results"};const RESET: I18nText = {key: "RESET", defaultText: "Reset"};const LOCATION: I18nText = {key: "LOCATION", defaultText: "Location"};const SELECT_OPTIONS: I18nText = {key: "SELECT_OPTIONS", defaultText: "Select Options"};const SELECT_ALL: I18nText = {key: "SELECT_ALL", defaultText: "Select All"};const BREADCRUMBS_ARIA_LABEL: I18nText = {key: "BREADCRUMBS_ARIA_LABEL", defaultText: "Breadcrumb Trail"};const BREADCRUMBS_OVERFLOW_ARIA_LABEL: I18nText = {key: "BREADCRUMBS_OVERFLOW_ARIA_LABEL", defaultText: "More"};const STEPINPUT_INC_ICON_TITLE: I18nText = {key: "STEPINPUT_INC_ICON_TITLE", defaultText: "Increase by"};const STEPINPUT_DEC_ICON_TITLE: I18nText = {key: "STEPINPUT_DEC_ICON_TITLE", defaultText: "Decrease by"};const NO_MATCHES_FOUND: I18nText = {key: "NO_MATCHES_FOUND", defaultText: "No matches found."};const RESULT_RETURNED: I18nText = {key: "RESULT_RETURNED", defaultText: "results returned."};const VALUE_STATE_ERROR: I18nText = {key: "VALUE_STATE_ERROR", defaultText: "Invalid entry"};const VALUE_STATE_WARNING: I18nText = {key: "VALUE_STATE_WARNING", defaultText: "Warning issued"};const VALUE_STATE_INFORMATION: I18nText = {key: "VALUE_STATE_INFORMATION", defaultText: "Informative entry"};const VALUE_STATE_SUCCESS: I18nText = {key: "VALUE_STATE_SUCCESS", defaultText: "Entry successfully validated"};const READ_ONLY: I18nText = {key: "READ_ONLY", defaultText: "Read only"};const MAIN_LINKS: I18nText = {key: "MAIN_LINKS", defaultText: "main links"};const BACK_TO_REGION_LIST: I18nText = {key: "BACK_TO_REGION_LIST", defaultText: "back to region list"};const OPENS_IN_A_NEW_WINDOW: I18nText = {key: "OPENS_IN_A_NEW_WINDOW", defaultText: "opens in a new window"};const LOGOUT: I18nText = {key: "LOGOUT", defaultText: "Logout"};const PROFILE: I18nText = {key: "PROFILE", defaultText: "Profile"};const SWITCH_ACCOUNT: I18nText = {key: "SWITCH_ACCOUNT", defaultText: "Switch account"};const BACK: I18nText = {key: "BACK", defaultText: "Back"};const OTHER_IDENTITIES: I18nText = {key: "OTHER_IDENTITIES", defaultText: "Other identities"};const ADD_OR_REMOVE_ACCOUNT: I18nText = {key: "ADD_OR_REMOVE_ACCOUNT", defaultText: "Add or remove account"};const COUNTRY_SELECT: I18nText = {key: "COUNTRY_SELECT", defaultText: "Select country"};const OVERVIEW: I18nText = {key: "OVERVIEW", defaultText: "Overview"};const CART: I18nText = {key: "CART", defaultText: "Cart"};const COUNTRY_SELECTOR: I18nText = {key: "COUNTRY_SELECTOR", defaultText: "Country Selector"};const SUPPORT: I18nText = {key: "SUPPORT", defaultText: "Support"};const SEARCH: I18nText = {key: "SEARCH", defaultText: "Search"};const SHOW_HIDE_PASSWORD: I18nText = {key: "SHOW_HIDE_PASSWORD", defaultText: "Show/Hide Password Button"};const PHONE_NUMBER: I18nText = {key: "PHONE_NUMBER", defaultText: "Phone number"};const EMAIL: I18nText = {key: "EMAIL", defaultText: "Email"};const CHAT_WITH_US: I18nText = {key: "CHAT_WITH_US", defaultText: "Chat with us"};const QUICK_LINKS: I18nText = {key: "QUICK_LINKS", defaultText: "Quick Links"};const TRENDING: I18nText = {key: "TRENDING", defaultText: "Trending"};const ABOUT_SAP: I18nText = {key: "ABOUT_SAP", defaultText: "About SAP"};const SITE_INFORMATION: I18nText = {key: "SITE_INFORMATION", defaultText: "Site Information"};const SEE_COMPLETE_LIST: I18nText = {key: "SEE_COMPLETE_LIST", defaultText: "Or see our complete list of"};const LOCAL_COUNTRY_NAMES: I18nText = {key: "LOCAL_COUNTRY_NAMES", defaultText: "local country numbers"};const COPYRIGHT: I18nText = {key: "COPYRIGHT", defaultText: "© {0} SAP SE or an SAP affiliate company. All rights reserved."};const BACK_TO_TOP: I18nText = {key: "BACK_TO_TOP", defaultText: "Back to top"};const PUBLIC_SECURITY_NETWORK_NUMBER: I18nText = {key: "PUBLIC_SECURITY_NETWORK_NUMBER", defaultText: ""};const ICP_NUMBER: I18nText = {key: "ICP_NUMBER", defaultText: ""};const AVATAR_TEXT: I18nText = {key: "AVATAR_TEXT", defaultText: "Avatar"};const DISABLED: I18nText = {key: "DISABLED", defaultText: "Disabled"};const STATUS_BADGE_TEXT: I18nText = {key: "STATUS_BADGE_TEXT", defaultText: "Status Badge"};const STATUS_BADGE_EDIT_TITLE: I18nText = {key: "STATUS_BADGE_EDIT_TITLE", defaultText: "Click to edit profile"};const STATUS_BADGE_INFORMATION_TITLE: I18nText = {key: "STATUS_BADGE_INFORMATION_TITLE", defaultText: "Click to open profile information"};const STATUS_BADGE_WARNING_TITLE: I18nText = {key: "STATUS_BADGE_WARNING_TITLE", defaultText: "Warning, potential risk with the profile"};const STATUS_BADGE_ERROR_TITLE: I18nText = {key: "STATUS_BADGE_ERROR_TITLE", defaultText: "There is an error with the profile"};const STATUS_BADGE_SUCCESS_TITLE: I18nText = {key: "STATUS_BADGE_SUCCESS_TITLE", defaultText: "Successfully verified profile"};const CALENDAR_ICON: I18nText = {key: "CALENDAR_ICON", defaultText: "Open Calendar icon"};const DATEPICKER_DATE_DESCRIPTION: I18nText = {key: "DATEPICKER_DATE_DESCRIPTION", defaultText: "Date Input"};const TABLE_NO_DATA_FOUND: I18nText = {key: "TABLE_NO_DATA_FOUND", defaultText: "No data found"};const LIST_ITEM_EDIT_ICON: I18nText = {key: "LIST_ITEM_EDIT_ICON", defaultText: "Edit list item entry"};const LIST_ITEM_DELETE_ICON: I18nText = {key: "LIST_ITEM_DELETE_ICON", defaultText: "Delete list item entry"};const EXPAND: I18nText = {key: "EXPAND", defaultText: "Expand"};const COLLAPSE: I18nText = {key: "COLLAPSE", defaultText: "Collapse"};const BACK_BUTTON_LABEL: I18nText = {key: "BACK_BUTTON_LABEL", defaultText: "return back"};const UPLOADING_FILE_STATUS_TEXT: I18nText = {key: "UPLOADING_FILE_STATUS_TEXT", defaultText: "Uploading"};const TERMINATED_FILE_STATUS_TEXT: I18nText = {key: "TERMINATED_FILE_STATUS_TEXT", defaultText: "Terminated"};const REMOVE_FILE_TEXT: I18nText = {key: "REMOVE_FILE_TEXT", defaultText: "Remove file"};const UPLOAD_BUTTON_LABEL: I18nText = {key: "UPLOAD_BUTTON_LABEL", defaultText: "Upload file"};const COMPLETE_LIST_OF: I18nText = {key: "COMPLETE_LIST_OF", defaultText: "Complete list of"};const CALL_US_TODAY: I18nText = {key: "CALL_US_TODAY", defaultText: "Call us today!"};const CONTACT_US: I18nText = {key: "CONTACT_US", defaultText: "Contact us"};const SOCIAL_MEDIA_BUTTON: I18nText = {key: "SOCIAL_MEDIA_BUTTON", defaultText: "Social Media Button"};const PROMO_TILE: I18nText = {key: "PROMO_TILE", defaultText: "Promo Tile"};const PROMO_TILE_ICON: I18nText = {key: "PROMO_TILE_ICON", defaultText: "Promo Tile Icon"};const PLAY_BUTTON_ACCESSIBLE_NAME: I18nText = {key: "PLAY_BUTTON_ACCESSIBLE_NAME", defaultText: "Start button to begin customer logos rotation"};const PAUSE_BUTTON_ACCESSIBLE_NAME: I18nText = {key: "PAUSE_BUTTON_ACCESSIBLE_NAME", defaultText: "Pause button to stop customer logos rotation"};const TOAST_CLOSE_ACCESSIBLE_NAME: I18nText = {key: "TOAST_CLOSE_ACCESSIBLE_NAME", defaultText: "Close"};
3
- export {COUNT,OF,PAGINATION_PAGE,SELECTED,FIRST_PAGE,LAST_PAGE,PREVIOUS_PAGE,NEXT_PAGE,CURRENT_PAGE,ACTIVATE_PAGE,BUTTON_ARIA_TYPE_PRIMARY,BUTTON_ARIA_TYPE_SECONDARY,BUTTON_ARIA_TYPE_TERTIARY,BUTTON_ARIA_TYPE_WARNING,BUTTON_ARIA_TYPE_POSITIVE,BUTTON_ARIA_TYPE_NEGATIVE,BUTTON_ARIA_EMPHASIZED,BUTTON_ARIA_DEFAULT,BUTTON_ARIA_TRANSPARENT,BUTTON_ARIA_ATTENTION,TOGGLED,SUGGESTED_TEXT,ACCESSIBLE_NAME_RESET_ICON,ACCESSIBLE_NAME_SEARCH_ICON,TOOLTIP_RESET_BUTTON,TOOLTIP_VOICE_BUTTON,TOOLTIP_SUBMIT_BUTTON,LISTENING,AVAILABLE_VALUES,RECOMMENDED_TEXT,EXPAND_ALL,COLLAPSE_ALL,MORE,ATTENTION_BADGE,REVIEWS,STARS,READ_MORE,READ_LESS,SHOW_MORE,SHOW_LESS,RATING_INDICATOR_TEXT,RATING_INDICATOR_TOOLTIP_TEXT,RATING_INDICATOR_ARIA_DESCRIPTION,TOTAL,RATING_COUNT_TITLE,MESSAGE_STRIP_CLOSE_BUTTON,MESSAGE_STRIP_INFORMATION,MESSAGE_STRIP_SUCCESS,MESSAGE_STRIP_WARNING,MESSAGE_STRIP_ERROR,MESSAGE_STRIP_ACTION,ARIA_LABEL_LIST_MULTISELECTABLE,ARIA_LABEL_LIST_SELECTABLE,UNSELECTED,INDETERMINATE,EDIT_BUTTON,DELETE_BUTTON,TEXTAREA_CHARACTERS_LEFT,VALUE_STATE_TYPE_ERROR,VALUE_STATE_TYPE_WARNING,VALUE_STATE_TYPE_SUCCESS,VALUE_STATE_TYPE_STANDARD,TEXT_FIELD,CAROUSEL_PREVIOUS_ARROW_TEXT,CAROUSEL_NEXT_ARROW_TEXT,SHOW_RESULTS,RESET,LOCATION,SELECT_OPTIONS,SELECT_ALL,BREADCRUMBS_ARIA_LABEL,BREADCRUMBS_OVERFLOW_ARIA_LABEL,STEPINPUT_INC_ICON_TITLE,STEPINPUT_DEC_ICON_TITLE,NO_MATCHES_FOUND,RESULT_RETURNED,VALUE_STATE_ERROR,VALUE_STATE_WARNING,VALUE_STATE_INFORMATION,VALUE_STATE_SUCCESS,READ_ONLY,MAIN_LINKS,BACK_TO_REGION_LIST,OPENS_IN_A_NEW_WINDOW,LOGOUT,PROFILE,SWITCH_ACCOUNT,BACK,OTHER_IDENTITIES,ADD_OR_REMOVE_ACCOUNT,COUNTRY_SELECT,OVERVIEW,CART,COUNTRY_SELECTOR,SUPPORT,SEARCH,SHOW_HIDE_PASSWORD,PHONE_NUMBER,EMAIL,CHAT_WITH_US,QUICK_LINKS,TRENDING,ABOUT_SAP,SITE_INFORMATION,SEE_COMPLETE_LIST,LOCAL_COUNTRY_NAMES,COPYRIGHT,BACK_TO_TOP,PUBLIC_SECURITY_NETWORK_NUMBER,ICP_NUMBER,AVATAR_TEXT,DISABLED,STATUS_BADGE_TEXT,STATUS_BADGE_EDIT_TITLE,STATUS_BADGE_INFORMATION_TITLE,STATUS_BADGE_WARNING_TITLE,STATUS_BADGE_ERROR_TITLE,STATUS_BADGE_SUCCESS_TITLE,CALENDAR_ICON,DATEPICKER_DATE_DESCRIPTION,TABLE_NO_DATA_FOUND,LIST_ITEM_EDIT_ICON,LIST_ITEM_DELETE_ICON,EXPAND,COLLAPSE,BACK_BUTTON_LABEL,UPLOADING_FILE_STATUS_TEXT,TERMINATED_FILE_STATUS_TEXT,REMOVE_FILE_TEXT,UPLOAD_BUTTON_LABEL,COMPLETE_LIST_OF,CALL_US_TODAY,CONTACT_US,SOCIAL_MEDIA_BUTTON,PROMO_TILE,PROMO_TILE_ICON,PLAY_BUTTON_ACCESSIBLE_NAME,PAUSE_BUTTON_ACCESSIBLE_NAME,TOAST_CLOSE_ACCESSIBLE_NAME};
2
+ const COUNT: I18nText = {key: "COUNT", defaultText: "Count"};const OF: I18nText = {key: "OF", defaultText: "of"};const PAGINATION_PAGE: I18nText = {key: "PAGINATION_PAGE", defaultText: "Pagination page"};const SELECTED: I18nText = {key: "SELECTED", defaultText: "Selected"};const FIRST_PAGE: I18nText = {key: "FIRST_PAGE", defaultText: "First page"};const LAST_PAGE: I18nText = {key: "LAST_PAGE", defaultText: "Last page"};const PREVIOUS_PAGE: I18nText = {key: "PREVIOUS_PAGE", defaultText: "Previous page"};const NEXT_PAGE: I18nText = {key: "NEXT_PAGE", defaultText: "Next page"};const CURRENT_PAGE: I18nText = {key: "CURRENT_PAGE", defaultText: "Current page"};const ACTIVATE_PAGE: I18nText = {key: "ACTIVATE_PAGE", defaultText: "Activate page number"};const BUTTON_ARIA_TYPE_PRIMARY: I18nText = {key: "BUTTON_ARIA_TYPE_PRIMARY", defaultText: "Primary"};const BUTTON_ARIA_TYPE_SECONDARY: I18nText = {key: "BUTTON_ARIA_TYPE_SECONDARY", defaultText: "Secondary"};const BUTTON_ARIA_TYPE_TERTIARY: I18nText = {key: "BUTTON_ARIA_TYPE_TERTIARY", defaultText: "Tertiary"};const BUTTON_ARIA_TYPE_WARNING: I18nText = {key: "BUTTON_ARIA_TYPE_WARNING", defaultText: "Warning"};const BUTTON_ARIA_TYPE_POSITIVE: I18nText = {key: "BUTTON_ARIA_TYPE_POSITIVE", defaultText: "Positive"};const BUTTON_ARIA_TYPE_NEGATIVE: I18nText = {key: "BUTTON_ARIA_TYPE_NEGATIVE", defaultText: "Negative"};const BUTTON_ARIA_EMPHASIZED: I18nText = {key: "BUTTON_ARIA_EMPHASIZED", defaultText: "Emphasized"};const BUTTON_ARIA_DEFAULT: I18nText = {key: "BUTTON_ARIA_DEFAULT", defaultText: "Default"};const BUTTON_ARIA_TRANSPARENT: I18nText = {key: "BUTTON_ARIA_TRANSPARENT", defaultText: "Transparent"};const BUTTON_ARIA_ATTENTION: I18nText = {key: "BUTTON_ARIA_ATTENTION", defaultText: "Attention"};const TOGGLED: I18nText = {key: "TOGGLED", defaultText: "Toggled"};const SUGGESTED_TEXT: I18nText = {key: "SUGGESTED_TEXT", defaultText: "Suggested searches"};const ACCESSIBLE_NAME_RESET_ICON: I18nText = {key: "ACCESSIBLE_NAME_RESET_ICON", defaultText: "Clear"};const ACCESSIBLE_NAME_SEARCH_ICON: I18nText = {key: "ACCESSIBLE_NAME_SEARCH_ICON", defaultText: "Search"};const TOOLTIP_RESET_BUTTON: I18nText = {key: "TOOLTIP_RESET_BUTTON", defaultText: "Clear"};const TOOLTIP_VOICE_BUTTON: I18nText = {key: "TOOLTIP_VOICE_BUTTON", defaultText: "Voice"};const TOOLTIP_SUBMIT_BUTTON: I18nText = {key: "TOOLTIP_SUBMIT_BUTTON", defaultText: "Submit"};const LISTENING: I18nText = {key: "LISTENING", defaultText: "Listening"};const AVAILABLE_VALUES: I18nText = {key: "AVAILABLE_VALUES", defaultText: "Available Values"};const RECOMMENDED_TEXT: I18nText = {key: "RECOMMENDED_TEXT", defaultText: "Recommended pages"};const EXPAND_ALL: I18nText = {key: "EXPAND_ALL", defaultText: "Expand All"};const COLLAPSE_ALL: I18nText = {key: "COLLAPSE_ALL", defaultText: "Collapse All"};const MORE: I18nText = {key: "MORE", defaultText: "More"};const ATTENTION_BADGE: I18nText = {key: "ATTENTION_BADGE", defaultText: "Attention badge"};const REVIEWS: I18nText = {key: "REVIEWS", defaultText: "reviews"};const STARS: I18nText = {key: "STARS", defaultText: "stars"};const READ_MORE: I18nText = {key: "READ_MORE", defaultText: "Read more"};const READ_LESS: I18nText = {key: "READ_LESS", defaultText: "Read less"};const SHOW_MORE: I18nText = {key: "SHOW_MORE", defaultText: "Show more"};const SHOW_LESS: I18nText = {key: "SHOW_LESS", defaultText: "Show less"};const RATING_INDICATOR_TEXT: I18nText = {key: "RATING_INDICATOR_TEXT", defaultText: "Rating Indicator"};const RATING_INDICATOR_TOOLTIP_TEXT: I18nText = {key: "RATING_INDICATOR_TOOLTIP_TEXT", defaultText: "Rating"};const RATING_INDICATOR_ARIA_DESCRIPTION: I18nText = {key: "RATING_INDICATOR_ARIA_DESCRIPTION", defaultText: "Required"};const TOTAL: I18nText = {key: "TOTAL", defaultText: "Total"};const RATING_COUNT_TITLE: I18nText = {key: "RATING_COUNT_TITLE", defaultText: "Rating"};const MESSAGE_STRIP_CLOSE_BUTTON: I18nText = {key: "MESSAGE_STRIP_CLOSE_BUTTON", defaultText: "Message Strip Close Button"};const MESSAGE_STRIP_INFORMATION: I18nText = {key: "MESSAGE_STRIP_INFORMATION", defaultText: "Information Bar"};const MESSAGE_STRIP_SUCCESS: I18nText = {key: "MESSAGE_STRIP_SUCCESS", defaultText: "Positive Bar"};const MESSAGE_STRIP_WARNING: I18nText = {key: "MESSAGE_STRIP_WARNING", defaultText: "Warning Bar"};const MESSAGE_STRIP_ERROR: I18nText = {key: "MESSAGE_STRIP_ERROR", defaultText: "Negative Bar"};const MESSAGE_STRIP_ACTION: I18nText = {key: "MESSAGE_STRIP_ACTION", defaultText: "Action Bar"};const ARIA_LABEL_LIST_MULTISELECTABLE: I18nText = {key: "ARIA_LABEL_LIST_MULTISELECTABLE", defaultText: "Contains Multi-Selectable Items"};const ARIA_LABEL_LIST_SELECTABLE: I18nText = {key: "ARIA_LABEL_LIST_SELECTABLE", defaultText: "Contains Selectable Items"};const UNSELECTED: I18nText = {key: "UNSELECTED", defaultText: "Unselected"};const INDETERMINATE: I18nText = {key: "INDETERMINATE", defaultText: "Indeterminate"};const EDIT_BUTTON: I18nText = {key: "EDIT_BUTTON", defaultText: "Edit"};const DELETE_BUTTON: I18nText = {key: "DELETE_BUTTON", defaultText: "Delete"};const TEXTAREA_CHARACTERS_LEFT: I18nText = {key: "TEXTAREA_CHARACTERS_LEFT", defaultText: "{0} characters remaining"};const VALUE_STATE_TYPE_ERROR: I18nText = {key: "VALUE_STATE_TYPE_ERROR", defaultText: "Field State Error"};const VALUE_STATE_TYPE_WARNING: I18nText = {key: "VALUE_STATE_TYPE_WARNING", defaultText: "Field State Warning"};const VALUE_STATE_TYPE_SUCCESS: I18nText = {key: "VALUE_STATE_TYPE_SUCCESS", defaultText: "Field State Success"};const VALUE_STATE_TYPE_STANDARD: I18nText = {key: "VALUE_STATE_TYPE_STANDARD", defaultText: "Field State Standard"};const TEXT_FIELD: I18nText = {key: "TEXT_FIELD", defaultText: "Text field"};const CAROUSEL_PREVIOUS_ARROW_TEXT: I18nText = {key: "CAROUSEL_PREVIOUS_ARROW_TEXT", defaultText: "Previous Page"};const CAROUSEL_NEXT_ARROW_TEXT: I18nText = {key: "CAROUSEL_NEXT_ARROW_TEXT", defaultText: "Next Page"};const SHOW_RESULTS: I18nText = {key: "SHOW_RESULTS", defaultText: "Show Results"};const RESET: I18nText = {key: "RESET", defaultText: "Reset"};const LOCATION: I18nText = {key: "LOCATION", defaultText: "Location"};const SELECT_OPTIONS: I18nText = {key: "SELECT_OPTIONS", defaultText: "Select Options"};const SELECT_ALL: I18nText = {key: "SELECT_ALL", defaultText: "Select All"};const BREADCRUMBS_ARIA_LABEL: I18nText = {key: "BREADCRUMBS_ARIA_LABEL", defaultText: "Breadcrumb Trail"};const BREADCRUMBS_OVERFLOW_ARIA_LABEL: I18nText = {key: "BREADCRUMBS_OVERFLOW_ARIA_LABEL", defaultText: "More"};const STEPINPUT_INC_ICON_TITLE: I18nText = {key: "STEPINPUT_INC_ICON_TITLE", defaultText: "Increase by"};const STEPINPUT_DEC_ICON_TITLE: I18nText = {key: "STEPINPUT_DEC_ICON_TITLE", defaultText: "Decrease by"};const NO_MATCHES_FOUND: I18nText = {key: "NO_MATCHES_FOUND", defaultText: "No matches found."};const RESULT_RETURNED: I18nText = {key: "RESULT_RETURNED", defaultText: "results returned."};const VALUE_STATE_ERROR: I18nText = {key: "VALUE_STATE_ERROR", defaultText: "Invalid entry"};const VALUE_STATE_WARNING: I18nText = {key: "VALUE_STATE_WARNING", defaultText: "Warning issued"};const VALUE_STATE_INFORMATION: I18nText = {key: "VALUE_STATE_INFORMATION", defaultText: "Informative entry"};const VALUE_STATE_SUCCESS: I18nText = {key: "VALUE_STATE_SUCCESS", defaultText: "Entry successfully validated"};const READ_ONLY: I18nText = {key: "READ_ONLY", defaultText: "Read only"};const MAIN_LINKS: I18nText = {key: "MAIN_LINKS", defaultText: "main links"};const BACK_TO_REGION_LIST: I18nText = {key: "BACK_TO_REGION_LIST", defaultText: "back to region list"};const OPENS_IN_A_NEW_WINDOW: I18nText = {key: "OPENS_IN_A_NEW_WINDOW", defaultText: "opens in a new window"};const LOGOUT: I18nText = {key: "LOGOUT", defaultText: "Logout"};const PROFILE: I18nText = {key: "PROFILE", defaultText: "Profile"};const SWITCH_ACCOUNT: I18nText = {key: "SWITCH_ACCOUNT", defaultText: "Switch account"};const BACK: I18nText = {key: "BACK", defaultText: "Back"};const OTHER_IDENTITIES: I18nText = {key: "OTHER_IDENTITIES", defaultText: "Other identities"};const ADD_OR_REMOVE_ACCOUNT: I18nText = {key: "ADD_OR_REMOVE_ACCOUNT", defaultText: "Add or remove account"};const COUNTRY_SELECT: I18nText = {key: "COUNTRY_SELECT", defaultText: "Select country"};const OVERVIEW: I18nText = {key: "OVERVIEW", defaultText: "Overview"};const CART: I18nText = {key: "CART", defaultText: "Cart"};const COUNTRY_SELECTOR: I18nText = {key: "COUNTRY_SELECTOR", defaultText: "Country Selector"};const SUPPORT: I18nText = {key: "SUPPORT", defaultText: "Support"};const SEARCH: I18nText = {key: "SEARCH", defaultText: "Search"};const SHOW_PASSWORD: I18nText = {key: "SHOW_PASSWORD", defaultText: "Show password"};const HIDE_PASSWORD: I18nText = {key: "HIDE_PASSWORD", defaultText: "Hide password"};const PHONE_NUMBER: I18nText = {key: "PHONE_NUMBER", defaultText: "Phone number"};const EMAIL: I18nText = {key: "EMAIL", defaultText: "Email"};const CHAT_WITH_US: I18nText = {key: "CHAT_WITH_US", defaultText: "Chat with us"};const QUICK_LINKS: I18nText = {key: "QUICK_LINKS", defaultText: "Quick Links"};const TRENDING: I18nText = {key: "TRENDING", defaultText: "Trending"};const ABOUT_SAP: I18nText = {key: "ABOUT_SAP", defaultText: "About SAP"};const SITE_INFORMATION: I18nText = {key: "SITE_INFORMATION", defaultText: "Site Information"};const SEE_COMPLETE_LIST: I18nText = {key: "SEE_COMPLETE_LIST", defaultText: "Or see our complete list of"};const LOCAL_COUNTRY_NAMES: I18nText = {key: "LOCAL_COUNTRY_NAMES", defaultText: "local country numbers"};const COPYRIGHT: I18nText = {key: "COPYRIGHT", defaultText: "© {0} SAP SE or an SAP affiliate company. All rights reserved."};const BACK_TO_TOP: I18nText = {key: "BACK_TO_TOP", defaultText: "Back to top"};const PUBLIC_SECURITY_NETWORK_NUMBER: I18nText = {key: "PUBLIC_SECURITY_NETWORK_NUMBER", defaultText: ""};const ICP_NUMBER: I18nText = {key: "ICP_NUMBER", defaultText: ""};const AVATAR_TEXT: I18nText = {key: "AVATAR_TEXT", defaultText: "Avatar"};const DISABLED: I18nText = {key: "DISABLED", defaultText: "Disabled"};const STATUS_BADGE_TEXT: I18nText = {key: "STATUS_BADGE_TEXT", defaultText: "Status Badge"};const STATUS_BADGE_EDIT_TITLE: I18nText = {key: "STATUS_BADGE_EDIT_TITLE", defaultText: "Click to edit profile"};const STATUS_BADGE_INFORMATION_TITLE: I18nText = {key: "STATUS_BADGE_INFORMATION_TITLE", defaultText: "Click to open profile information"};const STATUS_BADGE_WARNING_TITLE: I18nText = {key: "STATUS_BADGE_WARNING_TITLE", defaultText: "Warning, potential risk with the profile"};const STATUS_BADGE_ERROR_TITLE: I18nText = {key: "STATUS_BADGE_ERROR_TITLE", defaultText: "There is an error with the profile"};const STATUS_BADGE_SUCCESS_TITLE: I18nText = {key: "STATUS_BADGE_SUCCESS_TITLE", defaultText: "Successfully verified profile"};const CALENDAR_ICON: I18nText = {key: "CALENDAR_ICON", defaultText: "Open Calendar icon"};const DATEPICKER_DATE_DESCRIPTION: I18nText = {key: "DATEPICKER_DATE_DESCRIPTION", defaultText: "Date Input"};const TABLE_NO_DATA_FOUND: I18nText = {key: "TABLE_NO_DATA_FOUND", defaultText: "No data found"};const LIST_ITEM_EDIT_ICON: I18nText = {key: "LIST_ITEM_EDIT_ICON", defaultText: "Edit list item entry"};const LIST_ITEM_DELETE_ICON: I18nText = {key: "LIST_ITEM_DELETE_ICON", defaultText: "Delete list item entry"};const EXPAND: I18nText = {key: "EXPAND", defaultText: "Expand"};const COLLAPSE: I18nText = {key: "COLLAPSE", defaultText: "Collapse"};const BACK_BUTTON_LABEL: I18nText = {key: "BACK_BUTTON_LABEL", defaultText: "return back"};const UPLOADING_FILE_STATUS_TEXT: I18nText = {key: "UPLOADING_FILE_STATUS_TEXT", defaultText: "Uploading"};const TERMINATED_FILE_STATUS_TEXT: I18nText = {key: "TERMINATED_FILE_STATUS_TEXT", defaultText: "Terminated"};const REMOVE_FILE_TEXT: I18nText = {key: "REMOVE_FILE_TEXT", defaultText: "Remove file"};const UPLOAD_BUTTON_LABEL: I18nText = {key: "UPLOAD_BUTTON_LABEL", defaultText: "Upload file"};const COMPLETE_LIST_OF: I18nText = {key: "COMPLETE_LIST_OF", defaultText: "Complete list of"};const CALL_US_TODAY: I18nText = {key: "CALL_US_TODAY", defaultText: "Call us today!"};const CONTACT_US: I18nText = {key: "CONTACT_US", defaultText: "Contact us"};const SOCIAL_MEDIA_BUTTON: I18nText = {key: "SOCIAL_MEDIA_BUTTON", defaultText: "Social Media Button"};const PROMO_TILE: I18nText = {key: "PROMO_TILE", defaultText: "Promo Tile"};const PROMO_TILE_ICON: I18nText = {key: "PROMO_TILE_ICON", defaultText: "Promo Tile Icon"};const PLAY_BUTTON_ACCESSIBLE_NAME: I18nText = {key: "PLAY_BUTTON_ACCESSIBLE_NAME", defaultText: "Start button to begin customer logos rotation"};const PAUSE_BUTTON_ACCESSIBLE_NAME: I18nText = {key: "PAUSE_BUTTON_ACCESSIBLE_NAME", defaultText: "Pause button to stop customer logos rotation"};const TOAST_CLOSE_ACCESSIBLE_NAME: I18nText = {key: "TOAST_CLOSE_ACCESSIBLE_NAME", defaultText: "Close"};
3
+ export {COUNT,OF,PAGINATION_PAGE,SELECTED,FIRST_PAGE,LAST_PAGE,PREVIOUS_PAGE,NEXT_PAGE,CURRENT_PAGE,ACTIVATE_PAGE,BUTTON_ARIA_TYPE_PRIMARY,BUTTON_ARIA_TYPE_SECONDARY,BUTTON_ARIA_TYPE_TERTIARY,BUTTON_ARIA_TYPE_WARNING,BUTTON_ARIA_TYPE_POSITIVE,BUTTON_ARIA_TYPE_NEGATIVE,BUTTON_ARIA_EMPHASIZED,BUTTON_ARIA_DEFAULT,BUTTON_ARIA_TRANSPARENT,BUTTON_ARIA_ATTENTION,TOGGLED,SUGGESTED_TEXT,ACCESSIBLE_NAME_RESET_ICON,ACCESSIBLE_NAME_SEARCH_ICON,TOOLTIP_RESET_BUTTON,TOOLTIP_VOICE_BUTTON,TOOLTIP_SUBMIT_BUTTON,LISTENING,AVAILABLE_VALUES,RECOMMENDED_TEXT,EXPAND_ALL,COLLAPSE_ALL,MORE,ATTENTION_BADGE,REVIEWS,STARS,READ_MORE,READ_LESS,SHOW_MORE,SHOW_LESS,RATING_INDICATOR_TEXT,RATING_INDICATOR_TOOLTIP_TEXT,RATING_INDICATOR_ARIA_DESCRIPTION,TOTAL,RATING_COUNT_TITLE,MESSAGE_STRIP_CLOSE_BUTTON,MESSAGE_STRIP_INFORMATION,MESSAGE_STRIP_SUCCESS,MESSAGE_STRIP_WARNING,MESSAGE_STRIP_ERROR,MESSAGE_STRIP_ACTION,ARIA_LABEL_LIST_MULTISELECTABLE,ARIA_LABEL_LIST_SELECTABLE,UNSELECTED,INDETERMINATE,EDIT_BUTTON,DELETE_BUTTON,TEXTAREA_CHARACTERS_LEFT,VALUE_STATE_TYPE_ERROR,VALUE_STATE_TYPE_WARNING,VALUE_STATE_TYPE_SUCCESS,VALUE_STATE_TYPE_STANDARD,TEXT_FIELD,CAROUSEL_PREVIOUS_ARROW_TEXT,CAROUSEL_NEXT_ARROW_TEXT,SHOW_RESULTS,RESET,LOCATION,SELECT_OPTIONS,SELECT_ALL,BREADCRUMBS_ARIA_LABEL,BREADCRUMBS_OVERFLOW_ARIA_LABEL,STEPINPUT_INC_ICON_TITLE,STEPINPUT_DEC_ICON_TITLE,NO_MATCHES_FOUND,RESULT_RETURNED,VALUE_STATE_ERROR,VALUE_STATE_WARNING,VALUE_STATE_INFORMATION,VALUE_STATE_SUCCESS,READ_ONLY,MAIN_LINKS,BACK_TO_REGION_LIST,OPENS_IN_A_NEW_WINDOW,LOGOUT,PROFILE,SWITCH_ACCOUNT,BACK,OTHER_IDENTITIES,ADD_OR_REMOVE_ACCOUNT,COUNTRY_SELECT,OVERVIEW,CART,COUNTRY_SELECTOR,SUPPORT,SEARCH,SHOW_PASSWORD,HIDE_PASSWORD,PHONE_NUMBER,EMAIL,CHAT_WITH_US,QUICK_LINKS,TRENDING,ABOUT_SAP,SITE_INFORMATION,SEE_COMPLETE_LIST,LOCAL_COUNTRY_NAMES,COPYRIGHT,BACK_TO_TOP,PUBLIC_SECURITY_NETWORK_NUMBER,ICP_NUMBER,AVATAR_TEXT,DISABLED,STATUS_BADGE_TEXT,STATUS_BADGE_EDIT_TITLE,STATUS_BADGE_INFORMATION_TITLE,STATUS_BADGE_WARNING_TITLE,STATUS_BADGE_ERROR_TITLE,STATUS_BADGE_SUCCESS_TITLE,CALENDAR_ICON,DATEPICKER_DATE_DESCRIPTION,TABLE_NO_DATA_FOUND,LIST_ITEM_EDIT_ICON,LIST_ITEM_DELETE_ICON,EXPAND,COLLAPSE,BACK_BUTTON_LABEL,UPLOADING_FILE_STATUS_TEXT,TERMINATED_FILE_STATUS_TEXT,REMOVE_FILE_TEXT,UPLOAD_BUTTON_LABEL,COMPLETE_LIST_OF,CALL_US_TODAY,CONTACT_US,SOCIAL_MEDIA_BUTTON,PROMO_TILE,PROMO_TILE_ICON,PLAY_BUTTON_ACCESSIBLE_NAME,PAUSE_BUTTON_ACCESSIBLE_NAME,TOAST_CLOSE_ACCESSIBLE_NAME};