@sapudex/web-components 2.3.0 → 2.4.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 (138) hide show
  1. package/.eslintignore +3 -0
  2. package/bundle.esm.js +2 -0
  3. package/cypress/fixtures/contact-numbers.ts +10 -0
  4. package/cypress/specs/Accordion.cy.tsx +24 -0
  5. package/cypress/specs/Contact.cy.tsx +92 -0
  6. package/cypress/specs/ContactItem.cy.tsx +56 -0
  7. package/cypress/support/commands.ts +31 -2
  8. package/cypress/support/component-imports.instrumented.ts +4 -0
  9. package/cypress/support/component-imports.src.ts +4 -0
  10. package/dist/Accordion.d.ts +7 -1
  11. package/dist/Accordion.js +3 -3
  12. package/dist/Accordion.js.map +1 -1
  13. package/dist/Assets.js +31 -0
  14. package/dist/Assets.js.map +1 -1
  15. package/dist/Contact.d.ts +102 -0
  16. package/dist/Contact.js +152 -0
  17. package/dist/Contact.js.map +1 -0
  18. package/dist/ContactItem.d.ts +67 -0
  19. package/dist/ContactItem.js +96 -0
  20. package/dist/ContactItem.js.map +1 -0
  21. package/dist/ContactItemTemplate.d.ts +2 -0
  22. package/dist/ContactItemTemplate.js +13 -0
  23. package/dist/ContactItemTemplate.js.map +1 -0
  24. package/dist/ContactTemplate.d.ts +4 -0
  25. package/dist/ContactTemplate.js +29 -0
  26. package/dist/ContactTemplate.js.map +1 -0
  27. package/dist/CountrySelector.d.ts +0 -2
  28. package/dist/CountrySelector.js +0 -4
  29. package/dist/CountrySelector.js.map +1 -1
  30. package/dist/Footer.d.ts +0 -1
  31. package/dist/Footer.js +7 -9
  32. package/dist/Footer.js.map +1 -1
  33. package/dist/List.d.ts +1 -1
  34. package/dist/List.js +1 -1
  35. package/dist/List.js.map +1 -1
  36. package/dist/MastheadItem.d.ts +1 -3
  37. package/dist/MastheadItem.js +6 -11
  38. package/dist/MastheadItem.js.map +1 -1
  39. package/dist/MastheadMenu.d.ts +0 -1
  40. package/dist/MastheadMenu.js +2 -4
  41. package/dist/MastheadMenu.js.map +1 -1
  42. package/dist/MastheadProfileMenu.d.ts +0 -1
  43. package/dist/MastheadProfileMenu.js +2 -4
  44. package/dist/MastheadProfileMenu.js.map +1 -1
  45. package/dist/SearchableListBase.js +5 -1
  46. package/dist/SearchableListBase.js.map +1 -1
  47. package/dist/SecondaryNavigation.d.ts +0 -1
  48. package/dist/SecondaryNavigation.js +2 -4
  49. package/dist/SecondaryNavigation.js.map +1 -1
  50. package/dist/assets/{InputSuggestions-BgbbJ4tc.js → InputSuggestions-CYW_6A8K.js} +1 -1
  51. package/dist/assets/{ListItemStandardExpandableTextTemplate-onAnn1Tj.js → ListItemStandardExpandableTextTemplate-BDrgWGjT.js} +1 -1
  52. package/dist/assets/{bundle.esm-CwUfibNQ.js → bundle.esm-DRCvw6Ji.js} +203 -198
  53. package/dist/assets/messagebundle_en-BK8-Eyic.js +1 -0
  54. package/dist/css/themes/Accordion.css +1 -1
  55. package/dist/css/themes/Button.css +1 -1
  56. package/dist/css/themes/Contact.css +1 -0
  57. package/dist/css/themes/ContactItem.css +1 -0
  58. package/dist/css/themes/Modal.css +1 -1
  59. package/dist/css/themes/RatingIndicator.css +1 -1
  60. package/dist/css/themes/Slider.css +1 -1
  61. package/dist/custom-elements-internal.json +482 -100
  62. package/dist/custom-elements.json +444 -85
  63. package/dist/generated/assets/i18n/messagebundle_en.json +1 -1
  64. package/dist/generated/i18n/i18n-defaults.d.ts +3 -1
  65. package/dist/generated/i18n/i18n-defaults.js +3 -1
  66. package/dist/generated/i18n/i18n-defaults.js.map +1 -1
  67. package/dist/generated/templates/AccordionTemplate.lit.js +4 -2
  68. package/dist/generated/templates/AccordionTemplate.lit.js.map +1 -1
  69. package/dist/generated/templates/MastheadItemTemplate.lit.js +25 -22
  70. package/dist/generated/templates/MastheadItemTemplate.lit.js.map +1 -1
  71. package/dist/generated/themes/Accordion.css.d.ts +1 -1
  72. package/dist/generated/themes/Accordion.css.js +1 -1
  73. package/dist/generated/themes/Accordion.css.js.map +1 -1
  74. package/dist/generated/themes/Button.css.d.ts +1 -1
  75. package/dist/generated/themes/Button.css.js +1 -1
  76. package/dist/generated/themes/Button.css.js.map +1 -1
  77. package/dist/generated/themes/Contact.css.d.ts +2 -0
  78. package/dist/generated/themes/Contact.css.js +8 -0
  79. package/dist/generated/themes/Contact.css.js.map +1 -0
  80. package/dist/generated/themes/ContactItem.css.d.ts +2 -0
  81. package/dist/generated/themes/ContactItem.css.js +8 -0
  82. package/dist/generated/themes/ContactItem.css.js.map +1 -0
  83. package/dist/generated/themes/Modal.css.d.ts +1 -1
  84. package/dist/generated/themes/Modal.css.js +1 -1
  85. package/dist/generated/themes/Modal.css.js.map +1 -1
  86. package/dist/generated/themes/RatingIndicator.css.d.ts +1 -1
  87. package/dist/generated/themes/RatingIndicator.css.js +1 -1
  88. package/dist/generated/themes/RatingIndicator.css.js.map +1 -1
  89. package/dist/generated/themes/Slider.css.d.ts +1 -1
  90. package/dist/generated/themes/Slider.css.js +1 -1
  91. package/dist/generated/themes/Slider.css.js.map +1 -1
  92. package/dist/messagebundle.properties +5 -0
  93. package/dist/messagebundle_en.properties +3 -0
  94. package/dist/types/ContactItemIcon.d.ts +6 -0
  95. package/dist/types/ContactItemIcon.js +8 -0
  96. package/dist/types/ContactItemIcon.js.map +1 -0
  97. package/dist/utils/parseArrayFromString.d.ts +2 -0
  98. package/dist/utils/parseArrayFromString.js +5 -0
  99. package/dist/utils/parseArrayFromString.js.map +1 -0
  100. package/dist/vscode.html-custom-data.json +84 -1
  101. package/dist/web-types.json +172 -2
  102. package/package.json +2 -2
  103. package/src/Accordion.hbs +13 -9
  104. package/src/Accordion.ts +7 -4
  105. package/src/Assets.ts +29 -0
  106. package/src/Contact.ts +200 -0
  107. package/src/ContactItem.ts +119 -0
  108. package/src/ContactItemTemplate.tsx +22 -0
  109. package/src/ContactTemplate.tsx +105 -0
  110. package/src/CountrySelector.ts +0 -5
  111. package/src/Footer.ts +7 -10
  112. package/src/List.ts +1 -1
  113. package/src/MastheadItem.hbs +8 -0
  114. package/src/MastheadItem.ts +8 -16
  115. package/src/MastheadMenu.ts +2 -5
  116. package/src/MastheadProfileMenu.ts +2 -5
  117. package/src/SearchableListBase.ts +6 -1
  118. package/src/SecondaryNavigation.ts +3 -5
  119. package/src/generated/i18n/i18n-defaults.ts +2 -2
  120. package/src/generated/templates/AccordionTemplate.lit.ts +4 -2
  121. package/src/generated/templates/MastheadItemTemplate.lit.ts +25 -22
  122. package/src/generated/themes/Accordion.css.ts +1 -1
  123. package/src/generated/themes/Button.css.ts +1 -1
  124. package/src/generated/themes/Contact.css.ts +9 -0
  125. package/src/generated/themes/ContactItem.css.ts +9 -0
  126. package/src/generated/themes/Modal.css.ts +1 -1
  127. package/src/generated/themes/RatingIndicator.css.ts +1 -1
  128. package/src/generated/themes/Slider.css.ts +1 -1
  129. package/src/i18n/messagebundle.properties +5 -0
  130. package/src/i18n/messagebundle_en.properties +3 -0
  131. package/src/themes/Accordion.css +1 -0
  132. package/src/themes/Button.css +7 -1
  133. package/src/themes/Contact.css +184 -0
  134. package/src/themes/ContactItem.css +44 -0
  135. package/src/themes/Modal.css +4 -4
  136. package/src/types/ContactItemIcon.ts +7 -0
  137. package/src/utils/parseArrayFromString.ts +5 -0
  138. package/dist/assets/messagebundle_en-CVKgy_9L.js +0 -1
@@ -0,0 +1,119 @@
1
+ import UI5Element from "@ui5/webcomponents-base/dist/UI5Element.js";
2
+ import customElement from "@ui5/webcomponents-base/dist/decorators/customElement.js";
3
+ import slot from "@ui5/webcomponents-base/decorators/slot.js";
4
+ import property from "@ui5/webcomponents-base/dist/decorators/property.js";
5
+ import event from "@ui5/webcomponents-base/dist/decorators/event-strict.js";
6
+ import jsxRenderer from "@ui5/webcomponents-base/dist/renderer/JsxRenderer.js";
7
+ import ContactItemTemplate from "./ContactItemTemplate.js";
8
+ import { UDExTarget } from "./types/common.js";
9
+ import UDExContactItemIcon from "./types/ContactItemIcon.js";
10
+ import "@ui5/webcomponents-icons/dist/headset.js";
11
+ import "@ui5/webcomponents-icons/dist/discussion-2.js";
12
+ import "@ui5/webcomponents-icons/dist/email.js";
13
+
14
+ // Styles
15
+ import ContactItemCss from "./generated/themes/ContactItem.css.js";
16
+
17
+ type UDExContactItemClickEventDetail = {
18
+ originalEvent: Event,
19
+ item: UDExContactItem,
20
+ }
21
+
22
+ /**
23
+ * @class
24
+ *
25
+ * <h3 class="comment-api-title">Overview</h3>
26
+ *
27
+ *
28
+ * <h3>Usage</h3>
29
+ *
30
+ * For the <code>udex-contact-item</code>
31
+ * <h3>ES6 Module Import</h3>
32
+ *
33
+ * <code>import "@sapudex/web-components/dist/ContactItem.js";</code>
34
+ *
35
+ * @constructor
36
+ * @extends UI5Element
37
+ * @tagname udex-contact-item
38
+ * @public
39
+ */
40
+ @customElement({
41
+ tag: "udex-contact-item",
42
+ renderer: jsxRenderer,
43
+ styles: ContactItemCss,
44
+ template: ContactItemTemplate,
45
+ })
46
+
47
+ /**
48
+ * Fires when item is clicked
49
+ *
50
+ * @public
51
+ */
52
+ @event("item-click", {
53
+ bubbles: true,
54
+ cancelable: true,
55
+ })
56
+
57
+ class UDExContactItem extends UI5Element {
58
+ eventDetails!: {
59
+ "item-click": UDExContactItemClickEventDetail,
60
+ };
61
+
62
+ /**
63
+ * Defines the label for the item.
64
+ *
65
+ * @public
66
+ */
67
+ @property({ type: String })
68
+ label!: string;
69
+
70
+ /**
71
+ * Defines the href for the item.
72
+ *
73
+ * @public
74
+ */
75
+ @property({ type: String })
76
+ href!: string;
77
+
78
+ /**
79
+ * Defines the icon name for the item.
80
+ *
81
+ * @public
82
+ */
83
+ @property({ type: String })
84
+ icon?: `${UDExContactItemIcon}`;
85
+
86
+ /**
87
+ * Defines target for the item
88
+ *
89
+ * @public
90
+ */
91
+ @property({ type: String })
92
+ target: `${UDExTarget}` = UDExTarget._self;
93
+
94
+ /**
95
+ * Slot for the item content.
96
+ *
97
+ * @slot
98
+ * @public
99
+ */
100
+ @slot({ type: Node, "default": true })
101
+ content!: Array<Node>;
102
+
103
+ _fireItemClickEvent(e: Event): void {
104
+ this.fireDecoratorEvent("item-click", {
105
+ item: this,
106
+ originalEvent: e,
107
+ });
108
+ }
109
+
110
+ get _iconName(): string | undefined {
111
+ if (this.icon) {
112
+ return UDExContactItemIcon[this.icon].toLowerCase();
113
+ }
114
+ }
115
+ }
116
+
117
+ UDExContactItem.define();
118
+
119
+ export default UDExContactItem;
@@ -0,0 +1,22 @@
1
+ import type ContactItem from "./ContactItem.js";
2
+ import UI5Icon from "@ui5/webcomponents/dist/Icon.js";
3
+ import UDExLink from "./Link.js";
4
+
5
+ export default function ContactItemTemplate(this: ContactItem) {
6
+ return (
7
+ <div class="udex-contact-item">
8
+ {this.icon && <UI5Icon class="udex-contact-item__icon" name={this._iconName} mode="Decorative"></UI5Icon>}
9
+ <div class="udex-contact-item__content">
10
+ {labelContent.call(this)}
11
+ <p class="udex-contact-item__description"><slot></slot></p>
12
+ </div>
13
+ </div>
14
+ );
15
+ }
16
+
17
+ function labelContent(this: ContactItem) {
18
+ if (this.href) {
19
+ return <UDExLink onClick={this._fireItemClickEvent} target={this.target} class="udex-contact-item__link" href={this.href}>{this.label}</UDExLink>;
20
+ }
21
+ return <span class="udex-contact-item__text">{this.label}</span>;
22
+ }
@@ -0,0 +1,105 @@
1
+ import type Contact from "./Contact.js";
2
+ import UDExButtonSize from "./types/ButtonSize.js";
3
+ import UDExButtonDesign from "./types/ButtonDesign.js";
4
+ import UDExButton from "./Button.js";
5
+ import UDExLink from "./Link.js";
6
+ import ButtonType from "@ui5/webcomponents/dist/types/ButtonType.js";
7
+ import UI5ResponsivePopover from "@ui5/webcomponents/dist/ResponsivePopover.js";
8
+ import PopoverPlacement from "@ui5/webcomponents/dist/types/PopoverPlacement.js";
9
+ import PopoverHorizontalAlign from "@ui5/webcomponents/dist/types/PopoverHorizontalAlign.js";
10
+ import PopupAccessibleRole from "@ui5/webcomponents/dist/types/PopupAccessibleRole.js";
11
+ import UDExButtonAccessibleRole from "./types/ButtonAccessibleRole.js";
12
+ import "@ui5/webcomponents-icons/dist/discussion-2.js";
13
+ import "@ui5/webcomponents-icons/dist/decline.js";
14
+
15
+ export default function ContactTemplate(this: Contact) {
16
+ return (
17
+ <div class="udex-contact">
18
+ {responsivePopover.call(this)}
19
+ {openerButton.call(this)}
20
+ </div>
21
+ );
22
+ }
23
+
24
+ function responsivePopover(this: Contact) {
25
+ return (
26
+ <UI5ResponsivePopover
27
+ id={`${this._id}-popover`}
28
+ opener={`${this._id}-opener`}
29
+ class="udex-contact__popover"
30
+ placement={PopoverPlacement.Top}
31
+ horizontalAlign={PopoverHorizontalAlign.End}
32
+ accessible-role={PopupAccessibleRole.Dialog}
33
+ preventInitialFocus={this.preventInitialFocus}
34
+ preventFocusRestore={this.preventFocusRestore}
35
+ accessibleName={this.accessibleName}
36
+ accessibleNameRef={this.accessibleNameRef}
37
+ hideArrow={true}>
38
+ <div
39
+ class={{
40
+ "udex-contact__call-us": true,
41
+ "udex-contact__call-us_empty": !this._hasNumbersList,
42
+ }}>
43
+ {!this._hasNumbersList && <span class="udex-contact__call-us-heading">{this._contactUsTitle}</span>}
44
+ <UDExButton
45
+ class="udex-contact__close-btn"
46
+ icon="sap-icon://decline"
47
+ type="Button"
48
+ onClick={this._closePopover}
49
+ size={UDExButtonSize.Medium}
50
+ design={UDExButtonDesign.Invisible}
51
+ accessible-role={UDExButtonAccessibleRole.Button}
52
+ icon-only>
53
+ </UDExButton>
54
+ {this._hasNumbersList && callUsSection.call(this)}
55
+ </div>
56
+ <div class="udex-contact__items"><slot></slot></div>
57
+ </UI5ResponsivePopover>
58
+ );
59
+ }
60
+
61
+ function openerButton(this: Contact) {
62
+ return (
63
+ <div id={`${this._id}-opener`} class="udex-contact__opener">
64
+ <UDExButton
65
+ onClick={this._openPopover}
66
+ class="udex-contact__button"
67
+ design={UDExButtonDesign.Primary}
68
+ size={UDExButtonSize.Large}
69
+ type={ButtonType.Button}
70
+ accessibleName={this._isMobileMode ? this.buttonText : undefined}
71
+ tooltip={this._isMobileMode ? this.buttonText : undefined}
72
+ icon="sap-icon://discussion-2">
73
+ {!this._isMobileMode && this.buttonText}
74
+ </UDExButton>
75
+ </div>
76
+ );
77
+ }
78
+
79
+ function callUsSection(this: Contact) {
80
+ return (
81
+ <>
82
+ <h4 class="udex-contact__call-us-title">{this._numbersTitle}</h4>
83
+ <div class="udex-contact__numbers">
84
+ {this._contactNumbersArray.map(({ number, country }) => (
85
+ <div class="udex-contact__number-wrapper">
86
+ <span class="udex-contact__country">{country}</span>
87
+ <UDExLink
88
+ class="udex-contact__number"
89
+ href={"tel:".concat(number)}>
90
+ {number}
91
+ </UDExLink>
92
+ </div>
93
+ ))}
94
+ </div>
95
+ <p class="udex-contact__complete-list">
96
+ {this._completeListTitle}
97
+ <UDExLink
98
+ class="udex-contact__local-country-link"
99
+ href={this.localCountryNumbersLink}>
100
+ {this._localCountryTitle}
101
+ </UDExLink>
102
+ </p>
103
+ </>
104
+ );
105
+ }
@@ -1,8 +1,6 @@
1
1
  import customElement from "@ui5/webcomponents-base/dist/decorators/customElement.js";
2
2
  import litRender from "@ui5/webcomponents-base/dist/renderer/LitRenderer.js";
3
3
  import property from "@ui5/webcomponents-base/dist/decorators/property.js";
4
- import i18n from "@ui5/webcomponents-base/dist/decorators/i18n.js";
5
- import type I18nBundle from "@ui5/webcomponents-base/dist/i18nBundle.js";
6
4
  import executeTemplate from "@ui5/webcomponents-base/dist/renderer/executeTemplate.js";
7
5
  import {
8
6
  isEscape,
@@ -273,9 +271,6 @@ class UDExCountrySelector extends UDExSearchableListBase {
273
271
  _search!: Search;
274
272
  _handleResizeBound: ResizeObserverCallback;
275
273
 
276
- @i18n("@sapudex/web-components")
277
- static i18nBundle: I18nBundle;
278
-
279
274
  constructor() {
280
275
  super();
281
276
  this._shouldFilterItems = false;
package/src/Footer.ts CHANGED
@@ -16,6 +16,7 @@ import UDExLink from "./Link.js";
16
16
  import UDExDivider from "./Divider.js";
17
17
  import type { UDExTarget } from "./types/common.js";
18
18
  import { BreakpointUtils } from "./utils/Breakpoints.js";
19
+ import parseArrayFromString from "./utils/parseArrayFromString.js";
19
20
 
20
21
  // Template
21
22
  import FooterTemplate from "./generated/templates/FooterTemplate.lit.js";
@@ -394,36 +395,32 @@ class UDExFooter extends UI5Element {
394
395
  window.scrollTo(0, 0);
395
396
  }
396
397
 
397
- parseArrayFromString<T>(string: string): T[] {
398
- return string ? JSON.parse(string) as T[] : [];
399
- }
400
-
401
398
  get parsedRef(): string | undefined {
402
399
  return (this.logoLink && this.logoLink.length > 0) ? this.logoLink : undefined;
403
400
  }
404
401
 
405
402
  get quickLinksArray(): FooterLink[] {
406
- return this.parseArrayFromString<FooterLink>(this.quickLinks);
403
+ return parseArrayFromString<FooterLink>(this.quickLinks);
407
404
  }
408
405
 
409
406
  get trendingLinksArray(): FooterLink[] {
410
- return this.parseArrayFromString<FooterLink>(this.trendingLinks);
407
+ return parseArrayFromString<FooterLink>(this.trendingLinks);
411
408
  }
412
409
 
413
410
  get aboutLinksArray(): FooterLink[] {
414
- return this.parseArrayFromString<FooterLink>(this.aboutLinks);
411
+ return parseArrayFromString<FooterLink>(this.aboutLinks);
415
412
  }
416
413
 
417
414
  get siteInformationLinksArray(): FooterLink[] {
418
- return this.parseArrayFromString<FooterLink>(this.siteInformationLinks);
415
+ return parseArrayFromString<FooterLink>(this.siteInformationLinks);
419
416
  }
420
417
 
421
418
  get contactNumbersArray(): FooterContactNumber[] {
422
- return this.parseArrayFromString<FooterContactNumber>(this.contactNumbersList);
419
+ return parseArrayFromString<FooterContactNumber>(this.contactNumbersList);
423
420
  }
424
421
 
425
422
  get socialLinksArray(): FooterSocialLink[] {
426
- return this.parseArrayFromString<FooterSocialLink>(this.socialLinks);
423
+ return parseArrayFromString<FooterSocialLink>(this.socialLinks);
427
424
  }
428
425
 
429
426
  get isContactContainerVisible(): boolean {
package/src/List.ts CHANGED
@@ -42,7 +42,7 @@ type UDExListSelectionChangeEventDetail = {
42
42
  * @class
43
43
  *
44
44
  * <h3 class="comment-api-title">Overview</h3>
45
- *\e
45
+ *
46
46
  *
47
47
  * <h3>Usage</h3>
48
48
  *
@@ -65,8 +65,16 @@
65
65
  {{else if image}}
66
66
  <img
67
67
  class="udex-masthead-item__image"
68
+ id="{{this._id}}_image-alt"
68
69
  src="{{image}}"
69
70
  alt="{{imageAlt}}"/>
71
+ {{#if imageAlt}}
72
+ <span
73
+ id="image-desc"
74
+ class="udex-masthead-hidden-text">
75
+ {{imageAlt}}
76
+ </span>
77
+ {{/if}}
70
78
  {{else}}
71
79
  <span class="udex-masthead-item__text">
72
80
  <slot></slot>
@@ -20,6 +20,7 @@ import type UDExMastheadShell from "./MastheadShell.js";
20
20
  import MastheadItemTemplate from "./generated/templates/MastheadItemTemplate.lit.js";
21
21
  import { UDExTarget } from "./types/common.js";
22
22
  import { BreakpointUtils } from "./utils/Breakpoints.js";
23
+ import parseArrayFromString from "./utils/parseArrayFromString.js";
23
24
 
24
25
  // Styles
25
26
  import MastheadItemCss from "./generated/themes/MastheadItem.css.js";
@@ -31,7 +32,6 @@ export enum UDExMastheadDropdownItemAction {
31
32
  }
32
33
 
33
34
  export interface IMastheadItem {
34
- text?: string;
35
35
  selected?: boolean;
36
36
  icon?: string;
37
37
  avatar?: Array<HTMLElement>;
@@ -449,12 +449,8 @@ class UDExMastheadItem extends UI5Element implements IMastheadItem {
449
449
  return this.shadowRoot?.querySelector(`${selector}`);
450
450
  }
451
451
 
452
- parseArrayFromString<T>(string: string): T[] {
453
- return string ? JSON.parse(string) as T[] : [];
454
- }
455
-
456
452
  getSubItems(): Array<MenuItem> {
457
- return this.parseArrayFromString(this.subItems);
453
+ return parseArrayFromString(this.subItems);
458
454
  }
459
455
 
460
456
  get mastheadShell(): UDExMastheadShell {
@@ -494,22 +490,18 @@ class UDExMastheadItem extends UI5Element implements IMastheadItem {
494
490
  return this.selected ? " udex-masthead-item__button--active" : "";
495
491
  }
496
492
 
497
- get ariaDescribedBy(): string {
493
+ get ariaDescribedBy(): string | undefined {
498
494
  const labels = [];
499
495
 
500
- if (this.text) {
501
- labels.push(`${this.__id}-text`);
502
- }
503
-
504
- if (this.icon) {
505
- labels.push(`${this.__id}-icon`);
506
- }
507
-
508
496
  if (this.isTargetBlank) {
509
497
  labels.push(`new-win-desc`);
510
498
  }
511
499
 
512
- return labels.join(" ").trim();
500
+ if (this.imageAlt) {
501
+ labels.push(`image-desc`);
502
+ }
503
+
504
+ return labels.length ? labels.join(" ").trim() : undefined;
513
505
  }
514
506
 
515
507
  get isDropdownOpened(): boolean {
@@ -11,6 +11,7 @@ import UDExBadge from "./Badge.js";
11
11
  import UDExMastheadMenuItem, { UDExItemType } from "./MastheadMenuItem.js";
12
12
  import UDExDivider from "./Divider.js";
13
13
  import MastheadMenuTemplate from "./generated/templates/MastheadMenuTemplate.lit.js";
14
+ import parseArrayFromString from "./utils/parseArrayFromString.js";
14
15
 
15
16
  // Styles
16
17
  import MastheadMenuCss from "./generated/themes/MastheadMenu.css.js";
@@ -154,10 +155,6 @@ class UDExMastheadMenu extends UI5Element {
154
155
  return this.links.indexOf(item);
155
156
  }
156
157
 
157
- parseArrayFromString<T>(string: string): T[] {
158
- return string ? JSON.parse(string) as T[] : [];
159
- }
160
-
161
158
  get links(): Array<UDExMastheadMenuItem> {
162
159
  const menuItems: Array<UDExMastheadMenuItem> = Array.from(this.shadowRoot!.querySelectorAll("[udex-masthead-menu-item]"));
163
160
  return menuItems.filter(({ url }) => url && url.length > 0);
@@ -165,7 +162,7 @@ class UDExMastheadMenu extends UI5Element {
165
162
 
166
163
  get itemsList(): Array<MenuItem> {
167
164
  let id = 1;
168
- const parsedItems: Array<MenuItem> = this.parseArrayFromString(this.subItems);
165
+ const parsedItems: Array<MenuItem> = parseArrayFromString(this.subItems);
169
166
  return parsedItems.map((mainItem: MenuItem) => {
170
167
  mainItem.subMenuLinkItems = mainItem.subMenuLinkItems.map((category: SubMenuLinkItem) => {
171
168
  category.categoryId = `${id++}`;
@@ -10,6 +10,7 @@ import { LOGOUT } from "./generated/i18n/i18n-defaults.js";
10
10
  import UDExMastheadMenu from "./MastheadMenu.js";
11
11
  import MastheadProfileMenuTemplate from "./generated/templates/MastheadProfileMenuTemplate.lit.js";
12
12
  import type UDExMastheadMenuItem from "./MastheadMenuItem.js";
13
+ import parseArrayFromString from "./utils/parseArrayFromString.js";
13
14
 
14
15
  // Styles
15
16
  import MastheadProfileMenuCss from "./generated/themes/MastheadProfileMenu.css.js";
@@ -135,10 +136,6 @@ class UDExMastheadProfileMenu extends UI5Element {
135
136
  });
136
137
  }
137
138
 
138
- parseArrayFromString<T>(string: string): T[] {
139
- return string ? JSON.parse(string) as T[] : [];
140
- }
141
-
142
139
  get linksList(): string {
143
140
  return this.links ? JSON.stringify([{
144
141
  subMenuLinkItems: JSON.parse(this.links),
@@ -146,7 +143,7 @@ class UDExMastheadProfileMenu extends UI5Element {
146
143
  }
147
144
 
148
145
  get userData(): UserData {
149
- return this.parseArrayFromString(this.loggedInUser) as UserData;
146
+ return parseArrayFromString(this.loggedInUser) as UserData;
150
147
  }
151
148
 
152
149
  get messageAvailable(): boolean {
@@ -333,7 +333,12 @@ class UDExSearchableListBase extends UI5Element {
333
333
  }
334
334
 
335
335
  addSearchTermTag(text: string, str: string): string {
336
- return text.replace(new RegExp(`(${str})`, "i"), "<b>$&</b>");
336
+ if (!str.length) {
337
+ return text;
338
+ }
339
+
340
+ const regex = new RegExp(`(${str})`, "i");
341
+ return text.replace(regex, "<b>$1</b>");
337
342
  }
338
343
 
339
344
  isIncludes(string: string, value: string): boolean {
@@ -20,6 +20,8 @@ import type I18nBundle from "@ui5/webcomponents-base/dist/i18nBundle.js";
20
20
  import { MORE } from "./generated/i18n/i18n-defaults.js";
21
21
  import SecondaryNavigationTemplate from "./generated/templates/SecondaryNavigationTemplate.lit.js";
22
22
  import { BreakpointUtils } from "./utils/Breakpoints.js";
23
+ import parseArrayFromString from "./utils/parseArrayFromString.js";
24
+
23
25
  // Styles
24
26
  import SecondaryNavigationCss from "./generated/themes/SecondaryNavigation.css.js";
25
27
 
@@ -424,10 +426,6 @@ class UDExSecondaryNavigation extends UI5Element {
424
426
  });
425
427
  }
426
428
 
427
- parseArrayFromString<T>(string: string): T[] {
428
- return string ? JSON.parse(string) as T[] : [];
429
- }
430
-
431
429
  resetTabIndex(): void {
432
430
  this.domNavItems.forEach((item, index) => {
433
431
  item._tabIndex = index === 0 ? "0" : "-1";
@@ -466,7 +464,7 @@ class UDExSecondaryNavigation extends UI5Element {
466
464
  }
467
465
 
468
466
  get parsedItems(): Array<NavItem> {
469
- return this.parseArrayFromString<NavItem>(this.navItems);
467
+ return parseArrayFromString<NavItem>(this.navItems);
470
468
  }
471
469
 
472
470
  get visibleItems(): Array<NavItem> {
@@ -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 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 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 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 Quantity by"};const STEPINPUT_DEC_ICON_TITLE: I18nText = {key: "STEPINPUT_DEC_ICON_TITLE", defaultText: "Decrease Quantity by"};const NO_MATCHES_FOUND: I18nText = {key: "NO_MATCHES_FOUND", defaultText: "No matches found."};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 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 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 SHOW_HIDE_PASSWORD: I18nText = {key: "SHOW_HIDE_PASSWORD", defaultText: "Show/Hide Password Button"};const SOCIAL_LINK_ICON: I18nText = {key: "SOCIAL_LINK_ICON", defaultText: "Link Graphic"};const PHONE_NUMBER: I18nText = {key: "PHONE_NUMBER", defaultText: "Phone number"};const CONTACT_US: I18nText = {key: "CONTACT_US", defaultText: "Contact us"};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 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 BACK_BUTTON_LABEL: I18nText = {key: "BACK_BUTTON_LABEL", defaultText: "back button label"};const TRIGGER: I18nText = {key: "TRIGGER", defaultText: "Dropdown trigger"};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"};
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,RATING_INDICATOR_TEXT,RATING_INDICATOR_TOOLTIP_TEXT,RATING_INDICATOR_ARIA_DESCRIPTION,TOTAL,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,SELECT_OPTIONS,SELECT_ALL,BREADCRUMBS_ARIA_LABEL,BREADCRUMBS_OVERFLOW_ARIA_LABEL,STEPINPUT_INC_ICON_TITLE,STEPINPUT_DEC_ICON_TITLE,NO_MATCHES_FOUND,VALUE_STATE_ERROR,VALUE_STATE_WARNING,VALUE_STATE_INFORMATION,VALUE_STATE_SUCCESS,READ_ONLY,MAIN_LINKS,OPENS_IN_A_NEW_WINDOW,LOGOUT,PROFILE,COUNTRY_SELECT,OVERVIEW,CART,COUNTRY_SELECTOR,SUPPORT,SHOW_HIDE_PASSWORD,SOCIAL_LINK_ICON,PHONE_NUMBER,CONTACT_US,EMAIL,CHAT_WITH_US,QUICK_LINKS,TRENDING,ABOUT_SAP,SITE_INFORMATION,SEE_COMPLETE_LIST,LOCAL_COUNTRY_NAMES,COPYRIGHT,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,BACK_BUTTON_LABEL,TRIGGER,UPLOADING_FILE_STATUS_TEXT,TERMINATED_FILE_STATUS_TEXT,REMOVE_FILE_TEXT,UPLOAD_BUTTON_LABEL};
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 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 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 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 Quantity by"};const STEPINPUT_DEC_ICON_TITLE: I18nText = {key: "STEPINPUT_DEC_ICON_TITLE", defaultText: "Decrease Quantity by"};const NO_MATCHES_FOUND: I18nText = {key: "NO_MATCHES_FOUND", defaultText: "No matches found."};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 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 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 SHOW_HIDE_PASSWORD: I18nText = {key: "SHOW_HIDE_PASSWORD", defaultText: "Show/Hide Password Button"};const SOCIAL_LINK_ICON: I18nText = {key: "SOCIAL_LINK_ICON", defaultText: "Link Graphic"};const PHONE_NUMBER: I18nText = {key: "PHONE_NUMBER", defaultText: "Phone number"};const CONTACT_US: I18nText = {key: "CONTACT_US", defaultText: "Contact us"};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 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 BACK_BUTTON_LABEL: I18nText = {key: "BACK_BUTTON_LABEL", defaultText: "back button label"};const TRIGGER: I18nText = {key: "TRIGGER", defaultText: "Dropdown trigger"};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!"};
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,RATING_INDICATOR_TEXT,RATING_INDICATOR_TOOLTIP_TEXT,RATING_INDICATOR_ARIA_DESCRIPTION,TOTAL,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,SELECT_OPTIONS,SELECT_ALL,BREADCRUMBS_ARIA_LABEL,BREADCRUMBS_OVERFLOW_ARIA_LABEL,STEPINPUT_INC_ICON_TITLE,STEPINPUT_DEC_ICON_TITLE,NO_MATCHES_FOUND,VALUE_STATE_ERROR,VALUE_STATE_WARNING,VALUE_STATE_INFORMATION,VALUE_STATE_SUCCESS,READ_ONLY,MAIN_LINKS,OPENS_IN_A_NEW_WINDOW,LOGOUT,PROFILE,COUNTRY_SELECT,OVERVIEW,CART,COUNTRY_SELECTOR,SUPPORT,SHOW_HIDE_PASSWORD,SOCIAL_LINK_ICON,PHONE_NUMBER,CONTACT_US,EMAIL,CHAT_WITH_US,QUICK_LINKS,TRENDING,ABOUT_SAP,SITE_INFORMATION,SEE_COMPLETE_LIST,LOCAL_COUNTRY_NAMES,COPYRIGHT,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,BACK_BUTTON_LABEL,TRIGGER,UPLOADING_FILE_STATUS_TEXT,TERMINATED_FILE_STATUS_TEXT,REMOVE_FILE_TEXT,UPLOAD_BUTTON_LABEL,COMPLETE_LIST_OF,CALL_US_TODAY};
@@ -5,8 +5,10 @@ import type UI5Element from "@ui5/webcomponents-base/dist/UI5Element.js";
5
5
  import type Accordion from "../../Accordion.js";
6
6
  import type { ClassMapValue } from "@ui5/webcomponents-base/dist/types.js";
7
7
 
8
- function block0 (this: Accordion, context: UI5Element, tags: string[], suffix: string | undefined) { return suffix ? html`<div class="udex-accordion" @keydown="${this.keydownHandler}" @ui5-accordion-item-focus="${ifDefined(this.itemFocusHandler)}"><div class="udex-accordion__head" part="head"><h3 class="udex-accordion__headline">${ifDefined(this.headlineText)}</h3><${scopeTag("udex-button", tags, suffix)} class="udex-accordion__btn" size="Large" design="Tertiary" @click="${this.toggleAllHandler}" @keydown="${this.toggleKeyAllHandler}" accessible-name="${ifDefined(this.toggleAllText)}">${ifDefined(this.toggleAllText)}</${scopeTag("udex-button", tags, suffix)}></div><div class="udex-accordion__content">${ repeat(this.items, (item, index) => (item as typeof item & {_id?: any})._id || index, (item, index: number) => block1.call(this, context, tags, suffix, item, index)) }</div></div>` : html`<div class="udex-accordion" @keydown="${this.keydownHandler}" @ui5-accordion-item-focus="${ifDefined(this.itemFocusHandler)}"><div class="udex-accordion__head" part="head"><h3 class="udex-accordion__headline">${ifDefined(this.headlineText)}</h3><udex-button class="udex-accordion__btn" size="Large" design="Tertiary" @click="${this.toggleAllHandler}" @keydown="${this.toggleKeyAllHandler}" accessible-name="${ifDefined(this.toggleAllText)}">${ifDefined(this.toggleAllText)}</udex-button></div><div class="udex-accordion__content">${ repeat(this.items, (item, index) => (item as typeof item & {_id?: any})._id || index, (item, index: number) => block1.call(this, context, tags, suffix, item, index)) }</div></div>`;}
9
- function block1 (this: Accordion, context: UI5Element, tags: string[], suffix: string | undefined, item: any, index: number) { return html`<slot name="${ifDefined(item.item._individualSlot)}"></slot>`;}
8
+ function block0 (this: Accordion, context: UI5Element, tags: string[], suffix: string | undefined) { return html`<div class="udex-accordion" @keydown="${this.keydownHandler}" @ui5-accordion-item-focus="${ifDefined(this.itemFocusHandler)}"><div class="udex-accordion__head" part="head">${ this.headline ? block1.call(this, context, tags, suffix) : undefined }${ !this.hideExpandButton ? block2.call(this, context, tags, suffix) : undefined }</div><div class="udex-accordion__content">${ repeat(this.items, (item, index) => (item as typeof item & {_id?: any})._id || index, (item, index: number) => block3.call(this, context, tags, suffix, item, index)) }</div></div>`;}
9
+ function block1 (this: Accordion, context: UI5Element, tags: string[], suffix: string | undefined) { return html`<h3 class="udex-accordion__headline">${ifDefined(this.headline)}</h3>`;}
10
+ function block2 (this: Accordion, context: UI5Element, tags: string[], suffix: string | undefined) { return suffix ? html`<${scopeTag("udex-button", tags, suffix)} class="udex-accordion__btn" size="Large" design="Tertiary" @click="${this.toggleAllHandler}" @keydown="${this.toggleKeyAllHandler}" accessible-name="${ifDefined(this.toggleAllText)}">${ifDefined(this.toggleAllText)}</${scopeTag("udex-button", tags, suffix)}>` : html`<udex-button class="udex-accordion__btn" size="Large" design="Tertiary" @click="${this.toggleAllHandler}" @keydown="${this.toggleKeyAllHandler}" accessible-name="${ifDefined(this.toggleAllText)}">${ifDefined(this.toggleAllText)}</udex-button>`;}
11
+ function block3 (this: Accordion, context: UI5Element, tags: string[], suffix: string | undefined, item: any, index: number) { return html`<slot name="${ifDefined(item.item._individualSlot)}"></slot>`;}
10
12
 
11
13
  function template(this: Accordion) { return block0.call(this, this, (this.constructor as typeof UI5Element).tagsToScope, getCustomElementsScopingSuffix()); }
12
14
  export default template;