@sapudex/web-components 2.30.0 → 2.31.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 (175) hide show
  1. package/cypress/specs/ListItem.cy.tsx +22 -26
  2. package/cypress/specs/PromoTile.cy.tsx +10 -0
  3. package/cypress/specs/SecondaryNavigationDesktop.cy.tsx +12 -12
  4. package/cypress/specs/SelectBox.cy.tsx +76 -0
  5. package/dist/Breadcrumbs.d.ts +0 -4
  6. package/dist/Breadcrumbs.js +7 -16
  7. package/dist/Breadcrumbs.js.map +1 -1
  8. package/dist/BreadcrumbsTemplate.js +1 -1
  9. package/dist/BreadcrumbsTemplate.js.map +1 -1
  10. package/dist/List.js +3 -3
  11. package/dist/List.js.map +1 -1
  12. package/dist/ListItemBase.d.ts +0 -2
  13. package/dist/ListItemBase.js +0 -6
  14. package/dist/ListItemBase.js.map +1 -1
  15. package/dist/MastheadCountrySelector.d.ts +3 -15
  16. package/dist/MastheadCountrySelector.js +28 -72
  17. package/dist/MastheadCountrySelector.js.map +1 -1
  18. package/dist/MastheadItem.d.ts +1 -0
  19. package/dist/MastheadItem.js +7 -0
  20. package/dist/MastheadItem.js.map +1 -1
  21. package/dist/MastheadMenuItem.d.ts +7 -0
  22. package/dist/MastheadMenuItem.js +3 -0
  23. package/dist/MastheadMenuItem.js.map +1 -1
  24. package/dist/MastheadMobileMenu.d.ts +2 -12
  25. package/dist/MastheadMobileMenu.js +31 -116
  26. package/dist/MastheadMobileMenu.js.map +1 -1
  27. package/dist/MastheadProfileMenu.js +1 -1
  28. package/dist/MastheadProfileMenu.js.map +1 -1
  29. package/dist/MastheadShell.d.ts +1 -6
  30. package/dist/MastheadShell.js +7 -44
  31. package/dist/MastheadShell.js.map +1 -1
  32. package/dist/Pagination.d.ts +14 -1
  33. package/dist/Pagination.js +39 -6
  34. package/dist/Pagination.js.map +1 -1
  35. package/dist/PromoTile.d.ts +8 -0
  36. package/dist/PromoTile.js +4 -0
  37. package/dist/PromoTile.js.map +1 -1
  38. package/dist/PromoTileTemplate.js +3 -1
  39. package/dist/PromoTileTemplate.js.map +1 -1
  40. package/dist/SecondaryNavigationItem.js +7 -1
  41. package/dist/SecondaryNavigationItem.js.map +1 -1
  42. package/dist/SelectBase.js +28 -7
  43. package/dist/SelectBase.js.map +1 -1
  44. package/dist/assets/{InputSuggestions-CaAXs3ok.js → InputSuggestions-i2kFpCfC.js} +1 -1
  45. package/dist/assets/{ListItemStandardExpandableTextTemplate-CPqUBd--.js → ListItemStandardExpandableTextTemplate-C1ceDaxu.js} +1 -1
  46. package/dist/assets/{bundle.esm-L-7H6J4f.js → bundle.esm-DQ3cxywT.js} +209 -209
  47. package/dist/assets/messagebundle_en-DWAgV5VH.js +1 -0
  48. package/dist/css/themes/BreadcrumbsPopover.css +1 -1
  49. package/dist/css/themes/Dropdown.css +1 -1
  50. package/dist/css/themes/Link.css +1 -1
  51. package/dist/css/themes/ListGroupHeader.css +1 -1
  52. package/dist/css/themes/MastheadCountrySelector.css +1 -1
  53. package/dist/css/themes/MastheadItem.css +1 -1
  54. package/dist/css/themes/MastheadShell.css +1 -1
  55. package/dist/css/themes/RatingIndicator.css +1 -1
  56. package/dist/css/themes/SecondaryNavigation.css +1 -1
  57. package/dist/css/themes/SecondaryNavigationItem.css +1 -1
  58. package/dist/css/themes/SecondaryNavigationSubItem.css +1 -1
  59. package/dist/css/themes/Slider.css +1 -1
  60. package/dist/custom-elements-internal.json +32 -13
  61. package/dist/custom-elements.json +32 -13
  62. package/dist/generated/assets/i18n/messagebundle_en.json +1 -1
  63. package/dist/generated/i18n/i18n-defaults.d.ts +2 -1
  64. package/dist/generated/i18n/i18n-defaults.js +2 -1
  65. package/dist/generated/i18n/i18n-defaults.js.map +1 -1
  66. package/dist/generated/templates/ListGroupHeaderTemplate.lit.js +12 -16
  67. package/dist/generated/templates/ListGroupHeaderTemplate.lit.js.map +1 -1
  68. package/dist/generated/templates/ListItemTemplate.lit.js +32 -36
  69. package/dist/generated/templates/ListItemTemplate.lit.js.map +1 -1
  70. package/dist/generated/templates/MastheadCountrySelectorTemplate.lit.js +3 -3
  71. package/dist/generated/templates/MastheadCountrySelectorTemplate.lit.js.map +1 -1
  72. package/dist/generated/templates/MastheadMenuItemTemplate.lit.js +1 -1
  73. package/dist/generated/templates/MastheadMenuItemTemplate.lit.js.map +1 -1
  74. package/dist/generated/templates/MastheadMobileMenuTemplate.lit.js +1 -1
  75. package/dist/generated/templates/MastheadMobileMenuTemplate.lit.js.map +1 -1
  76. package/dist/generated/templates/MastheadShellTemplate.lit.js +9 -10
  77. package/dist/generated/templates/MastheadShellTemplate.lit.js.map +1 -1
  78. package/dist/generated/themes/BreadcrumbsPopover.css.d.ts +1 -1
  79. package/dist/generated/themes/BreadcrumbsPopover.css.js +1 -1
  80. package/dist/generated/themes/BreadcrumbsPopover.css.js.map +1 -1
  81. package/dist/generated/themes/Dropdown.css.d.ts +1 -1
  82. package/dist/generated/themes/Dropdown.css.js +1 -1
  83. package/dist/generated/themes/Dropdown.css.js.map +1 -1
  84. package/dist/generated/themes/Link.css.d.ts +1 -1
  85. package/dist/generated/themes/Link.css.js +1 -1
  86. package/dist/generated/themes/Link.css.js.map +1 -1
  87. package/dist/generated/themes/ListGroupHeader.css.d.ts +1 -1
  88. package/dist/generated/themes/ListGroupHeader.css.js +1 -1
  89. package/dist/generated/themes/ListGroupHeader.css.js.map +1 -1
  90. package/dist/generated/themes/MastheadCountrySelector.css.d.ts +1 -1
  91. package/dist/generated/themes/MastheadCountrySelector.css.js +1 -1
  92. package/dist/generated/themes/MastheadCountrySelector.css.js.map +1 -1
  93. package/dist/generated/themes/MastheadItem.css.d.ts +1 -1
  94. package/dist/generated/themes/MastheadItem.css.js +1 -1
  95. package/dist/generated/themes/MastheadItem.css.js.map +1 -1
  96. package/dist/generated/themes/MastheadShell.css.d.ts +1 -1
  97. package/dist/generated/themes/MastheadShell.css.js +1 -1
  98. package/dist/generated/themes/MastheadShell.css.js.map +1 -1
  99. package/dist/generated/themes/RatingIndicator.css.d.ts +1 -1
  100. package/dist/generated/themes/RatingIndicator.css.js +1 -1
  101. package/dist/generated/themes/RatingIndicator.css.js.map +1 -1
  102. package/dist/generated/themes/SecondaryNavigation.css.d.ts +1 -1
  103. package/dist/generated/themes/SecondaryNavigation.css.js +1 -1
  104. package/dist/generated/themes/SecondaryNavigation.css.js.map +1 -1
  105. package/dist/generated/themes/SecondaryNavigationItem.css.d.ts +1 -1
  106. package/dist/generated/themes/SecondaryNavigationItem.css.js +1 -1
  107. package/dist/generated/themes/SecondaryNavigationItem.css.js.map +1 -1
  108. package/dist/generated/themes/SecondaryNavigationSubItem.css.d.ts +1 -1
  109. package/dist/generated/themes/SecondaryNavigationSubItem.css.js +1 -1
  110. package/dist/generated/themes/SecondaryNavigationSubItem.css.js.map +1 -1
  111. package/dist/generated/themes/Slider.css.d.ts +1 -1
  112. package/dist/generated/themes/Slider.css.js +1 -1
  113. package/dist/generated/themes/Slider.css.js.map +1 -1
  114. package/dist/messagebundle.properties +3 -0
  115. package/dist/messagebundle_en.properties +1 -0
  116. package/dist/types/List.d.ts +0 -2
  117. package/dist/types/List.js +0 -2
  118. package/dist/types/List.js.map +1 -1
  119. package/dist/vscode.html-custom-data.json +22 -73
  120. package/dist/web-types.json +33 -73
  121. package/package.json +2 -1
  122. package/src/Breadcrumbs.ts +8 -20
  123. package/src/BreadcrumbsTemplate.tsx +1 -1
  124. package/src/List.ts +3 -3
  125. package/src/ListGroupHeader.hbs +7 -11
  126. package/src/ListItem.hbs +0 -2
  127. package/src/ListItemBase.ts +0 -8
  128. package/src/MastheadCountrySelector.hbs +5 -2
  129. package/src/MastheadCountrySelector.ts +31 -85
  130. package/src/MastheadItem.ts +8 -0
  131. package/src/MastheadMenuItem.hbs +1 -0
  132. package/src/MastheadMenuItem.ts +9 -0
  133. package/src/MastheadMobileMenu.hbs +0 -1
  134. package/src/MastheadMobileMenu.ts +34 -130
  135. package/src/MastheadProfileMenu.ts +1 -1
  136. package/src/MastheadShell.hbs +9 -11
  137. package/src/MastheadShell.ts +8 -50
  138. package/src/Pagination.ts +51 -7
  139. package/src/PromoTile.ts +10 -0
  140. package/src/PromoTileTemplate.tsx +4 -1
  141. package/src/SecondaryNavigationItem.ts +1 -2
  142. package/src/SelectBase.ts +33 -7
  143. package/src/generated/i18n/i18n-defaults.ts +2 -2
  144. package/src/generated/templates/ListGroupHeaderTemplate.lit.ts +12 -16
  145. package/src/generated/templates/ListItemTemplate.lit.ts +32 -36
  146. package/src/generated/templates/MastheadCountrySelectorTemplate.lit.ts +3 -3
  147. package/src/generated/templates/MastheadMenuItemTemplate.lit.ts +1 -1
  148. package/src/generated/templates/MastheadMobileMenuTemplate.lit.ts +1 -1
  149. package/src/generated/templates/MastheadShellTemplate.lit.ts +9 -10
  150. package/src/generated/themes/BreadcrumbsPopover.css.ts +1 -1
  151. package/src/generated/themes/Dropdown.css.ts +1 -1
  152. package/src/generated/themes/Link.css.ts +1 -1
  153. package/src/generated/themes/ListGroupHeader.css.ts +1 -1
  154. package/src/generated/themes/MastheadCountrySelector.css.ts +1 -1
  155. package/src/generated/themes/MastheadItem.css.ts +1 -1
  156. package/src/generated/themes/MastheadShell.css.ts +1 -1
  157. package/src/generated/themes/RatingIndicator.css.ts +1 -1
  158. package/src/generated/themes/SecondaryNavigation.css.ts +1 -1
  159. package/src/generated/themes/SecondaryNavigationItem.css.ts +1 -1
  160. package/src/generated/themes/SecondaryNavigationSubItem.css.ts +1 -1
  161. package/src/generated/themes/Slider.css.ts +1 -1
  162. package/src/i18n/messagebundle.properties +3 -0
  163. package/src/i18n/messagebundle_en.properties +1 -0
  164. package/src/themes/BreadcrumbsPopover.css +2 -0
  165. package/src/themes/Dropdown.css +5 -1
  166. package/src/themes/Link.css +2 -3
  167. package/src/themes/ListGroupHeader.css +3 -11
  168. package/src/themes/MastheadCountrySelector.css +2 -2
  169. package/src/themes/MastheadItem.css +57 -0
  170. package/src/themes/MastheadShell.css +0 -2
  171. package/src/themes/SecondaryNavigation.css +6 -3
  172. package/src/themes/SecondaryNavigationItem.css +11 -10
  173. package/src/themes/SecondaryNavigationSubItem.css +3 -2
  174. package/src/types/List.ts +0 -2
  175. package/dist/assets/messagebundle_en-J-MHTtdL.js +0 -1
@@ -5,7 +5,7 @@ import { UDExAvatarSize } from "../../src/Avatar.js";
5
5
  import { UDExAdditionalTextState, UDExListStyleType } from "../../src/types/List.js";
6
6
  import UDExStatusBadgeValueState from "../../dist/types/StatusBadgeValueState.js";
7
7
 
8
- const defaultListItem = <UDExListItem
8
+ const defaultListItem = <UDExListItem
9
9
  id="listItem"
10
10
  accessibleName="accessible-name"
11
11
  supportingText="Supporting text"
@@ -20,7 +20,7 @@ const defaultListItem = <UDExListItem
20
20
  Default List Item
21
21
  </UDExListItem>
22
22
 
23
- const listItemSuccess = <UDExListItem
23
+ const listItemSuccess = <UDExListItem
24
24
  id="listItemSuccess"
25
25
  accessibleName="accessible-name"
26
26
  supportingText="Supporting text"
@@ -33,7 +33,7 @@ const listItemSuccess = <UDExListItem
33
33
  Default List Item
34
34
  </UDExListItem>
35
35
 
36
- const listItemError = <UDExListItem
36
+ const listItemError = <UDExListItem
37
37
  id="listItemError"
38
38
  accessibleName="accessible-name"
39
39
  supportingText="Supporting text"
@@ -46,7 +46,7 @@ const listItemError = <UDExListItem
46
46
  Default List Item
47
47
  </UDExListItem>
48
48
 
49
- const listItemWarning = <UDExListItem
49
+ const listItemWarning = <UDExListItem
50
50
  id="listItemWarning"
51
51
  accessibleName="accessible-name"
52
52
  supportingText="Supporting text"
@@ -59,7 +59,7 @@ const listItemWarning = <UDExListItem
59
59
  Default List Item
60
60
  </UDExListItem>
61
61
 
62
- const listItemWithIcons = <UDExListItem
62
+ const listItemWithIcons = <UDExListItem
63
63
  id="listItemIcons"
64
64
  accessible-name="accessible-name"
65
65
  supporting-text="Supporting text"
@@ -80,36 +80,32 @@ describe("ListItem", () => {
80
80
  cy.get("[udex-list-item]").should("exist");
81
81
  });
82
82
  });
83
-
83
+
84
84
  describe("Basic attributes", () => {
85
85
  beforeEach(() => {
86
86
  cy.mount(defaultListItem);
87
87
  });
88
-
88
+
89
89
  it("has correct supporting text", () => {
90
90
  cy.get("#listItem").shadow().find(".udex-list__supporting-text").should("have.text", "Supporting text");
91
91
  });
92
-
92
+
93
93
  it("has correct avatar", () => {
94
94
  cy.get("#listItem").shadow().find(".udex-list__avatar").should("exist");
95
95
  });
96
-
96
+
97
97
  it("has avatar of size M", () => {
98
98
  cy.get("#listItem").shadow().find(".udex-list__avatar").should("have.attr", "size", "M");
99
99
  });
100
-
100
+
101
101
  it("has avatar of shape Square", () => {
102
102
  cy.get("#listItem").shadow().find(".udex-list__avatar").should("have.attr", "shape", "Square");
103
103
  });
104
-
104
+
105
105
  it("has avatar with alternative text", () => {
106
106
  cy.get("#listItem").shadow().find(".udex-list__avatar").find("img").should("have.attr", "alt", "Person Avatar");
107
107
  });
108
-
109
- it("renders bullet marker at the start of the item", () => {
110
- cy.get("#listItem").shadow().find(".udex-list__circle").should("exist");
111
- });
112
-
108
+
113
109
  it("has correct accessibleName", () => {
114
110
  cy.get("#listItem").shadow().find(".udex-list__content-wrap").should(($wrapper) => {
115
111
  const itemId = $wrapper.attr("_id");
@@ -126,51 +122,51 @@ describe("ListItem", () => {
126
122
  cy.get("#listItem").shadow().find("udex-status-badge").should("have.attr", "size", UDExAvatarSize.M);
127
123
  });
128
124
  });
129
-
125
+
130
126
  describe("With Icons", () => {
131
127
  beforeEach(() => {
132
128
  cy.mount(listItemWithIcons);
133
129
  });
134
-
130
+
135
131
  it("renders first and second icons when both slots are filled", () => {
136
132
  cy.get("#listItemIcons").find("udex-button").should("have.length", 2);
137
133
  });
138
-
134
+
139
135
  it("becomes selected when clicking", () => {
140
136
  cy.get("#listItemIcons").shadow().find(".udex-list__item").click();
141
137
  cy.get("#listItemIcons").should("have.attr", "selected");
142
138
  });
143
-
139
+
144
140
  it("pressing Enter sets data-selected", () => {
145
141
  cy.realPress("Enter");
146
142
  cy.get("#listItemIcons").shadow().find(".udex-list__item").should("have.attr", "data-selected");
147
143
  });
148
-
144
+
149
145
  it("pressing Space sets data-selected", () => {
150
146
  cy.realPress("Space");
151
147
  cy.get("#listItemIcons").shadow().find(".udex-list__item").should("have.attr", "data-selected");
152
148
  });
153
149
  });
154
-
150
+
155
151
  describe("Additional Text States", () => {
156
152
  it("shows Information state", () => {
157
153
  cy.mount(defaultListItem);
158
154
  cy.get("#listItem").shadow().find(".udex-list__add-text").should("have.css", "color", "rgb(0, 64, 176)");
159
155
  });
160
-
156
+
161
157
  it("shows Success state", () => {
162
158
  cy.mount(listItemSuccess);
163
159
  cy.get("#listItemSuccess").shadow().find(".udex-list__add-text").should("have.css", "color", "rgb(30, 89, 47)");
164
160
  });
165
-
161
+
166
162
  it("shows Error state", () => {
167
163
  cy.mount(listItemError);
168
164
  cy.get("#listItemError").shadow().find(".udex-list__add-text").should("have.css", "color", "rgb(132, 6, 6)");
169
165
  });
170
-
166
+
171
167
  it("shows Warning state", () => {
172
168
  cy.mount(listItemWarning);
173
169
  cy.get("#listItemWarning").shadow().find(".udex-list__add-text").should("have.css", "color", "rgb(141, 42, 0)");
174
170
  });
175
171
  });
176
- });
172
+ });
@@ -8,6 +8,7 @@ const logoUrl = "http://test.com";
8
8
  const buttonLabel = "Button";
9
9
  const design = "Tertiary";
10
10
  const colorScheme = "Grey9";
11
+ const gradient = "linear-gradient(135deg, var(--udexColorBlue10) 0%,var(--udexColorBlue11) 100%)";
11
12
  const promoTile = <UDExPromoTile>Text</UDExPromoTile>;
12
13
  const simplePromoTile = <UDExPromoTile eyebrow={eyebrow} header={header}>Text</UDExPromoTile>;
13
14
  const iconPromoTile = <UDExPromoTile icon={iconName} image-label={imageLabel}>Text</UDExPromoTile>;
@@ -23,6 +24,7 @@ const pictogramPromoTile = <UDExPromoTile button={buttonLabel}>
23
24
  />
24
25
  </UDExPromoTile>;
25
26
  const darkPromoTile = <UDExPromoTile color-scheme={colorScheme} button={buttonLabel}>Text</UDExPromoTile>;
27
+ const gradientPromoTile = <UDExPromoTile background-gradient={gradient} button={buttonLabel}>Text</UDExPromoTile>;
26
28
 
27
29
  describe("Promo Tile", () => {
28
30
  it("renders simple promo tile", () => {
@@ -86,6 +88,14 @@ describe("Promo Tile", () => {
86
88
  cy.get("[udex-promo-tile]").shadow().find(".udex-promo-tile__container").should("have.class", "udex-promo-tile--dark");
87
89
  cy.get("[udex-promo-tile]").shadow().find("[udex-button]").should("have.attr", "design", "Secondary");
88
90
  });
91
+
92
+ it("renders promo tile with gradient", () => {
93
+ cy.mount(gradientPromoTile);
94
+ cy.get("[udex-promo-tile]").shadow().find(".udex-promo-tile__container")
95
+ .should("have.attr", "style")
96
+ .and("include", gradient)
97
+ .and("include", "rgb(255, 255, 255)");
98
+ });
89
99
  });
90
100
 
91
101
  describe("Promo Tile - CTA button", () => {
@@ -262,27 +262,27 @@ describe("Desktop", () => {
262
262
  cy.get("#secondary-nav-without-breadcrumbs").shadow().find("div").first().should("have.attr", "class", rootClass)
263
263
  });
264
264
 
265
- describe("Direction atributes", () => {
265
+ describe("Direction attributes", () => {
266
266
  beforeEach(() => {
267
267
  cy.mount(secondaryNavigationWithoutBreadcrumbs)
268
268
  cy.viewport(1080, 640);
269
269
  })
270
270
 
271
- xit("has the attr \"data-horizontal-align=`right`\" when doesn't fit", () => {
272
- const moreNavItem = cy.get("#secondary-nav-without-breadcrumbs").shadow().find("[udex-secondary-navigation-item]").eq(5);
273
- moreNavItem.click();
274
- moreNavItem.shadow().find(".udex-secondary-navigation__dropdown", { timeout: 1000 })
275
- .should("have.attr", "data-horizontal-align", "right")
271
+ it("has the attr \"data-horizontal-align=`right`\" when doesn't fit", () => {
272
+ cy.get("#secondary-nav-without-breadcrumbs").shadow().find("[udex-secondary-navigation-item]").eq(5).click();
273
+ cy.get("#secondary-nav-without-breadcrumbs").shadow().find("[udex-secondary-navigation-item]").eq(5)
274
+ .shadow().find(".udex-secondary-navigation__dropdown", { timeout: 5000 })
275
+ .should("be.visible")
276
+ .should("have.attr", "data-horizontal-align", "right")
276
277
  });
277
278
 
278
279
  it("has the attr \"data-horizontal-align=`left`\" when doesn't fit in the \"rtl\" mode", () => {
279
280
  cy.get("body").invoke("attr", "dir", "rtl");
280
- const moreNavItem = cy.get("#secondary-nav-without-breadcrumbs").shadow().find("[udex-secondary-navigation-item]").eq(5);
281
- moreNavItem.
282
- click()
283
- .shadow()
284
- .find(".udex-secondary-navigation__dropdown")
285
- .should("have.attr", "data-horizontal-align", "left")
281
+ cy.get("#secondary-nav-without-breadcrumbs").shadow().find("[udex-secondary-navigation-item]").eq(5).click();
282
+ cy.get("#secondary-nav-without-breadcrumbs").shadow().find("[udex-secondary-navigation-item]").eq(5)
283
+ .shadow()
284
+ .find(".udex-secondary-navigation__dropdown")
285
+ .should("have.attr", "data-horizontal-align", "left")
286
286
  });
287
287
  })
288
288
 
@@ -25,6 +25,17 @@ const fullComponent = <UDExSelectBox
25
25
  <UDExSelectBoxItem label="R" supportingText="Language for statistical computing"></UDExSelectBoxItem>
26
26
  </UDExSelectBox>
27
27
 
28
+
29
+ const groupHeaderCollapsible = <div style="width: 350px; position:relative;"><UDExSelectBox
30
+ id="select-box"
31
+ mode={UDExListMode.MultiSelect}
32
+ label="Programming languages">
33
+ <UDExSelectBoxGroupHeader label="Programming Languages" collapsible>
34
+ <UDExSelectBoxItem label="JavaScript" supportingText="Frontend web development"></UDExSelectBoxItem>
35
+ <UDExSelectBoxItem label="Python" supportingText="Used in data analysis"></UDExSelectBoxItem>
36
+ </UDExSelectBoxGroupHeader>
37
+ </UDExSelectBox></div>
38
+
28
39
  const multiSelect = <div style="width: 350px; position:relative;">
29
40
  <a id="previous-focus" href="#">Previous focusable element</a>
30
41
  <UDExSelectBox
@@ -590,6 +601,71 @@ describe("SelectBox", () => {
590
601
  .find(".udex-list__inactive-header")
591
602
  .should("exist")
592
603
  });
604
+
605
+ it("MultiSelect mode - arrow keys navigate items when group header is nonInteractive", () => {
606
+ cy.mount(groupHeader);
607
+ cy.get("udex-select-box-group-header")
608
+ .then($el => {
609
+ const select = $el as any;
610
+ select[0].nonInteractive = true;
611
+ });
612
+
613
+ cy.get("#select-box").shadow().find(".udex-text-field__search").click();
614
+ cy.realPress("ArrowDown");
615
+
616
+ cy.get("#select-box").shadow()
617
+ .find("udex-list-item").eq(0)
618
+ .should("be.focused");
619
+
620
+ cy.realPress("ArrowDown");
621
+
622
+ cy.get("#select-box").shadow()
623
+ .find("udex-list-item").eq(1)
624
+ .should("be.focused");
625
+
626
+ cy.realPress("ArrowUp");
627
+
628
+ cy.get("#select-box").shadow()
629
+ .find("udex-list-item").eq(0)
630
+ .should("be.focused");
631
+ });
632
+
633
+ it("MultiSelect mode - arrow keys navigate through collapsible group header and its items", () => {
634
+ cy.mount(groupHeaderCollapsible);
635
+
636
+ cy.get("#select-box").shadow().find(".udex-text-field__search").click();
637
+ cy.realPress("ArrowDown");
638
+
639
+ cy.get("#select-box").shadow()
640
+ .find("udex-list-group-header").shadow()
641
+ .find(".udex-list__group-header-wrap")
642
+ .should("be.focused");
643
+
644
+ cy.realPress("ArrowDown");
645
+
646
+ cy.get("#select-box").shadow()
647
+ .find("udex-list-item").eq(0)
648
+ .should("be.focused");
649
+
650
+ cy.realPress("ArrowDown");
651
+
652
+ cy.get("#select-box").shadow()
653
+ .find("udex-list-item").eq(1)
654
+ .should("be.focused");
655
+
656
+ cy.realPress("ArrowUp");
657
+
658
+ cy.get("#select-box").shadow()
659
+ .find("udex-list-item").eq(0)
660
+ .should("be.focused");
661
+
662
+ cy.realPress("ArrowUp");
663
+
664
+ cy.get("#select-box").shadow()
665
+ .find("udex-list-group-header").shadow()
666
+ .find(".udex-list__group-header-wrap")
667
+ .should("be.focused");
668
+ });
593
669
  });
594
670
 
595
671
  describe("Select Box focus tests", () => {
@@ -1,6 +1,5 @@
1
1
  import UI5Element from "@ui5/webcomponents-base/dist/UI5Element.js";
2
2
  import type { LinkClickEventDetail } from "@ui5/webcomponents/dist/Link.js";
3
- import ItemNavigation from "@ui5/webcomponents-base/dist/delegate/ItemNavigation.js";
4
3
  import type I18nBundle from "@ui5/webcomponents-base/dist/i18nBundle.js";
5
4
  import "@ui5/webcomponents-icons/dist/slim-arrow-down.js";
6
5
  import "@ui5/webcomponents-icons/dist/home.js";
@@ -60,7 +59,6 @@ declare class UDExBreadcrumbs extends UI5Element {
60
59
  items: Array<UDExBreadcrumbsItem>;
61
60
  static i18nBundle: I18nBundle;
62
61
  _responsivePopover?: UDExDropdown;
63
- _itemNavigation?: ItemNavigation;
64
62
  _shouldFocusFirstVisibleItem: boolean;
65
63
  _rootClass: string;
66
64
  constructor();
@@ -69,7 +67,6 @@ declare class UDExBreadcrumbs extends UI5Element {
69
67
  _preprocessItems(): void;
70
68
  _getResponsePopover(): UDExDropdown;
71
69
  _getFocusableItems(): Array<UDExLink>;
72
- _initItemNavigation(): void;
73
70
  _getItems(): Array<UDExBreadcrumbsItem>;
74
71
  _onDropdownLinkPress(e: CustomEvent<LinkClickEventDetail>): void;
75
72
  _onLinkPress(e: CustomEvent<LinkClickEventDetail>): void;
@@ -77,7 +74,6 @@ declare class UDExBreadcrumbs extends UI5Element {
77
74
  _afterDropdownOpen(): void;
78
75
  _afterDropdownClose(): void;
79
76
  _toggleDropdown(): void;
80
- _onfocusin(e: FocusEvent): void;
81
77
  _handleKeydown(e: KeyboardEvent): void;
82
78
  _handleOutsideClick(): void;
83
79
  setDropdownCloseState(): void;
@@ -13,8 +13,6 @@ import slot from "@ui5/webcomponents-base/dist/decorators/slot.js";
13
13
  import event from "@ui5/webcomponents-base/dist/decorators/event-strict.js";
14
14
  import { isTabNext, isTabPrevious, isEscape } from "@ui5/webcomponents-base/dist/Keys.js";
15
15
  import UI5Icon from "@ui5/webcomponents/dist/Icon.js";
16
- import NavigationMode from "@ui5/webcomponents-base/dist/types/NavigationMode.js";
17
- import ItemNavigation from "@ui5/webcomponents-base/dist/delegate/ItemNavigation.js";
18
16
  import i18n from "@ui5/webcomponents-base/dist/decorators/i18n.js";
19
17
  import UI5BreadcrumbsCss from "@ui5/webcomponents/dist/generated/themes/Breadcrumbs.css.js";
20
18
  import "@ui5/webcomponents-icons/dist/slim-arrow-down.js";
@@ -62,7 +60,6 @@ let UDExBreadcrumbs = UDExBreadcrumbs_1 = class UDExBreadcrumbs extends UI5Eleme
62
60
  }
63
61
  onAfterRendering() {
64
62
  this._responsivePopover = this._getResponsePopover();
65
- this._initItemNavigation();
66
63
  this._dropdownArrowLink.forcedTabIndex = "0";
67
64
  this._handleOutsideClick();
68
65
  if (this._shouldFocusFirstVisibleItem) {
@@ -83,14 +80,6 @@ let UDExBreadcrumbs = UDExBreadcrumbs_1 = class UDExBreadcrumbs extends UI5Eleme
83
80
  items.unshift(this._dropdownArrowLink);
84
81
  return items;
85
82
  }
86
- _initItemNavigation() {
87
- if (!this._itemNavigation) {
88
- this._itemNavigation = new ItemNavigation(this, {
89
- navigationMode: NavigationMode.Horizontal,
90
- getItemsCallback: () => this._getFocusableItems(),
91
- });
92
- }
93
- }
94
83
  _getItems() {
95
84
  return this.getSlottedNodes("items");
96
85
  }
@@ -135,10 +124,6 @@ let UDExBreadcrumbs = UDExBreadcrumbs_1 = class UDExBreadcrumbs extends UI5Eleme
135
124
  this._dropdownOpened = !this._dropdownOpened;
136
125
  }
137
126
  }
138
- _onfocusin(e) {
139
- const currentItem = e.target;
140
- this._itemNavigation?.setCurrentItem(currentItem);
141
- }
142
127
  _handleKeydown(e) {
143
128
  const itemIndex = e.target.getAttribute("data-index");
144
129
  const isLastItem = itemIndex === (this.items.length - 2).toString();
@@ -148,7 +133,13 @@ let UDExBreadcrumbs = UDExBreadcrumbs_1 = class UDExBreadcrumbs extends UI5Eleme
148
133
  this._toggleDropdown();
149
134
  return;
150
135
  }
151
- if ((isTabNext(e) && isLastItem) || (isTabPrevious(e) && isFirstItem) || isEscape(e)) {
136
+ if (isTabPrevious(e) && isFirstItem) {
137
+ e.preventDefault();
138
+ this._dropdownArrowLink.focus();
139
+ this._toggleDropdown();
140
+ return;
141
+ }
142
+ if (isEscape(e)) {
152
143
  this._toggleDropdown();
153
144
  }
154
145
  }
@@ -1 +1 @@
1
- {"version":3,"file":"Breadcrumbs.js","sourceRoot":"","sources":["../src/Breadcrumbs.ts"],"names":[],"mappings":";;;;;;;AAAA,OAAO,UAAU,MAAM,4CAA4C,CAAC;AACpE,OAAO,aAAa,MAAM,0DAA0D,CAAC;AACrF,OAAO,WAAW,MAAM,iDAAiD,CAAC;AAC1E,OAAO,QAAQ,MAAM,qDAAqD,CAAC;AAC3E,OAAO,IAAI,MAAM,iDAAiD,CAAC;AACnE,OAAO,KAAK,MAAM,yDAAyD,CAAC;AAC5E,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,sCAAsC,CAAC;AAC1F,OAAO,OAAO,MAAM,iCAAiC,CAAC;AAEtD,OAAO,cAAc,MAAM,sDAAsD,CAAC;AAClF,OAAO,cAAc,MAAM,yDAAyD,CAAC;AACrF,OAAO,IAAI,MAAM,iDAAiD,CAAC;AAEnE,OAAO,iBAAiB,MAAM,6DAA6D,CAAC;AAC5F,OAAO,kDAAkD,CAAC;AAC1D,OAAO,uCAAuC,CAAC;AAC/C,OAAO,mBAAmB,MAAM,0BAA0B,CAAC;AAC3D,OAAO,mBAAmB,MAAM,sBAAsB,CAAC;AACvD,OAAO,YAAY,MAAM,eAAe,CAAC;AACzC,OAAO,QAAQ,MAAM,WAAW,CAAC;AACjC,OAAO,EACL,gBAAgB,EAChB,sBAAsB,EACtB,+BAA+B,GAChC,MAAM,mCAAmC,CAAC;AAC3C,OAAO,SAAS,MAAM,sBAAsB,CAAC;AAE7C,SAAS;AACT,OAAO,cAAc,MAAM,uCAAuC,CAAC;AACnE,OAAO,qBAAqB,MAAM,8CAA8C,CAAC;AAUjF;;;;;;;;;;;;;;;;GAgBG;AAgCH,IAAM,eAAe,uBAArB,MAAM,eAAgB,SAAQ,UAAU;IAyCtC;QACE,KAAK,EAAE,CAAC;QApCV;;;;;WAKG;QAED,cAAS,GAAW,CAAC,CAAC;QA8BtB,IAAI,CAAC,UAAU,GAAG,kBAAkB,CAAC;IACvC,CAAC;IAED,iBAAiB;QACf,IAAI,CAAC,gBAAgB,EAAE,CAAC;IAC1B,CAAC;IAED,gBAAgB;QACd,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,mBAAmB,EAAE,CAAC;QACrD,IAAI,CAAC,mBAAmB,EAAE,CAAC;QAC3B,IAAI,CAAC,kBAAkB,CAAC,cAAc,GAAG,GAAG,CAAC;QAC7C,IAAI,CAAC,mBAAmB,EAAE,CAAC;QAE3B,IAAI,IAAI,CAAC,4BAA4B,EAAE,CAAC;YACtC,IAAI,CAAC,kBAAkB,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC;YACrC,IAAI,CAAC,4BAA4B,GAAG,KAAK,CAAC;QAC5C,CAAC;IACH,CAAC;IAED,gBAAgB;QACd,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;YACxB,IAAI,CAAC,cAAc,GAAG,GAAG,EAAE,CAAC,IAAI,CAAC,SAAS,EAAG,CAAC,aAAa,CAAC,qBAAqB,IAAI,CAAC,YAAY,GAAG,CAAE,CAAC;QAC1G,CAAC,CAAC,CAAC;IACL,CAAC;IAED,mBAAmB;QACjB,OAAO,IAAI,CAAC,UAAW,CAAC,aAAa,CAAe,SAAS,IAAI,CAAC,IAAK,uBAAuB,CAAE,CAAC;IACnG,CAAC;IAED,kBAAkB;QAChB,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC;QAC1B,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;QAEvC,OAAO,KAAK,CAAC;IACf,CAAC;IAED,mBAAmB;QACjB,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC;YAC1B,IAAI,CAAC,eAAe,GAAG,IAAI,cAAc,CAAC,IAAI,EAAE;gBAC9C,cAAc,EAAE,cAAc,CAAC,UAAU;gBACzC,gBAAgB,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,kBAAkB,EAAE;aAClD,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,SAAS;QACP,OAAO,IAAI,CAAC,eAAe,CAAsB,OAAO,CAAC,CAAC;IAC5D,CAAC;IAED,oBAAoB,CAAC,CAAoC;QACvD,MAAM,QAAQ,GAAG,CAAC,CAAC,MAAqB,EACtC,KAAK,GAAG,IAAI,CAAC,SAAS,EAAE,EACxB,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,KAAK,QAAQ,CAAC,EAAE,CAAE,CAAC;QAEzD,IAAI,IAAI,CAAC,kBAAkB,EAAE,CAAC;YAC5B,OAAO;QACT,CAAC;QAED,IAAI,IAAI,CAAC,kBAAkB,CAAC,YAAY,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC;YACpD,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,MAAM,IAAI,OAAO,EAAE,qBAAqB,CAAC,CAAC;YACtE,IAAI,CAAC,eAAe,EAAE,CAAC;QACzB,CAAC;QAED,IAAI,CAAC,qBAAqB,EAAE,CAAC;IAC/B,CAAC;IAED,YAAY,CAAC,CAAoC;QAC/C,MAAM,IAAI,GAAG,CAAC,CAAC,MAAkB,EAC/B,KAAK,GAAG,IAAI,CAAC,SAAS,EAAE,EACxB,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,OAAO,KAAK,IAAI,CAAC,EAAE,CAAE,EACpD,EACE,MAAM,EACN,OAAO,EACP,OAAO,EACP,QAAQ,GACT,GAAG,CAAC,CAAC,MAAM,CAAC;QAEf,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC,YAAY,EAAE;YACzC,IAAI;YACJ,MAAM;YACN,OAAO;YACP,OAAO;YACP,QAAQ;SACT,CAAC,EAAE,CAAC;YACH,CAAC,CAAC,cAAc,EAAE,CAAC;QACrB,CAAC;QAED,IAAI,CAAC,qBAAqB,EAAE,CAAC;IAC/B,CAAC;IAED,cAAc,CAAC,IAAyB;QACtC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC;IACtB,CAAC;IAED,kBAAkB;QAChB,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC;QAC5B,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC;IAClC,CAAC;IAED,mBAAmB;QACjB,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC;QAC7B,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC;IACnC,CAAC;IAED,eAAe;QACb,IAAI,IAAI,CAAC,kBAAkB,EAAE,CAAC;YAC5B,IAAI,CAAC,kBAAkB,CAAC,IAAI,GAAG,CAAC,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC;YAC7D,IAAI,CAAC,eAAe,GAAG,CAAC,IAAI,CAAC,eAAe,CAAC;QAC/C,CAAC;IACH,CAAC;IAED,UAAU,CAAC,CAAa;QACtB,MAAM,WAAW,GAAG,CAAC,CAAC,MAAkB,CAAC;QAEzC,IAAI,CAAC,eAAe,EAAE,cAAc,CAAC,WAAW,CAAC,CAAC;IACpD,CAAC;IAED,cAAc,CAAC,CAAgB;QAC7B,MAAM,SAAS,GAAI,CAAC,CAAC,MAAsB,CAAC,YAAY,CAAC,YAAY,CAAC,CAAC;QACvE,MAAM,UAAU,GAAG,SAAS,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;QACpE,MAAM,WAAW,GAAG,SAAS,KAAK,GAAG,CAAC;QAEtC,IAAI,SAAS,CAAC,CAAC,CAAC,IAAI,UAAU,EAAE,CAAC;YAC/B,IAAI,CAAC,4BAA4B,GAAG,IAAI,CAAC;YACzC,IAAI,CAAC,eAAe,EAAE,CAAC;YACvB,OAAO;QACT,CAAC;QAED,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,UAAU,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,WAAW,CAAC,IAAI,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC;YACrF,IAAI,CAAC,eAAe,EAAE,CAAC;QACzB,CAAC;IACH,CAAC;IAED,mBAAmB;QACjB,QAAQ,CAAC,gBAAgB,CAAC,WAAW,EAAE,CAAC,CAAQ,EAAE,EAAE;YAClD,IAAI,CAAC,CAAC,MAAM,KAAK,IAAI,EAAE,CAAC;gBACtB,IAAI,CAAC,qBAAqB,EAAE,CAAC;YAC/B,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAED,qBAAqB;QACnB,IAAI,IAAI,CAAC,kBAAkB,EAAE,CAAC;YAC5B,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC;QAC/B,CAAC;IACH,CAAC;IAED;;;OAGG;IACH,IAAI,kBAAkB;QACpB,OAAO,IAAI,CAAC,UAAW,CAAC,aAAa,CAAW,4BAA4B,CAAE,CAAC;IACjF,CAAC;IAED;;OAEG;IACH,IAAI,MAAM;QACR,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,UAAW,CAAC,gBAAgB,CAAW,6CAA6C,CAAC,CAAC,CAAC;IAChH,CAAC;IAED;;OAEG;IACH,IAAI,UAAU;QACZ,MAAM,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC;QACjC,MAAM,UAAU,GAAG,KAAK,CAAC,MAAM,CAAC;QAEhC,OAAO,KAAK;aACT,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;YACnB,IAAI,CAAC,kBAAkB,GAAG,KAAK,KAAK,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC;YACrD,OAAO,IAAI,CAAC;QACd,CAAC,CAAC,CAAC;IACP,CAAC;IAED,IAAI,aAAa;QACf,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;QAC/B,MAAM,WAAW,GAAG,IAAI,CAAC,SAAS,IAAI,CAAC,CAAC;QAExC,OAAO,IAAI,CAAC,SAAS,EAAE;aACpB,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,GAAG,WAAW,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;aAClD,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC;IACzC,CAAC;IAED,IAAI,cAAc;QAChB,OAAO,IAAI,CAAC,SAAS,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC;IAC9D,CAAC;IAED,IAAI,aAAa;QACf,MAAM,SAAS,GAAG,kBAAkB,CAAC;QACrC,OAAO,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,GAAG,SAAS,IAAI,SAAS,mBAAmB,CAAC,CAAC,CAAC,SAAS,CAAC;IACzF,CAAC;IAED,IAAI,8BAA8B;QAChC,OAAO,SAAS,CAAC,iBAAe,EAAE,sBAAsB,CAAC,CAAC;IAC5D,CAAC;IAED,IAAI,gCAAgC;QAClC,OAAO,SAAS,CAAC,iBAAe,EAAE,+BAA+B,CAAC,CAAC;IACrE,CAAC;IAED,IAAI,2BAA2B;QAC7B,OAAO,SAAS,CAAC,iBAAe,EAAE,gBAAgB,CAAC,CAAC;IACtD,CAAC;CACF,CAAA;AA3OG;IADD,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;kDACH;AAStB;IADD,QAAQ,CAAC,EAAE,WAAW,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;wDACnB;AAS1B;IADD,IAAI,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,uBAAuB,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;8CACvC;AAG9B;IADN,IAAI,CAAC,yBAAyB,CAAC;yCACF;AAlC1B,eAAe;IA/BpB,aAAa,CAAC;QACb,GAAG,EAAE,kBAAkB;QACvB,QAAQ,EAAE,WAAW;QACrB,MAAM,EAAE,CAAC,iBAAiB,EAAE,cAAc,EAAE,qBAAqB,CAAC;QAClE,QAAQ,EAAE,mBAAmB;QAC7B,YAAY,EAAE,CAAC,mBAAmB,EAAE,QAAQ,EAAE,YAAY,EAAE,OAAO,CAAC;KACrE,CAAC;IACF;;;;;;;OAOG;;IACF,KAAK,CAAC,YAAY,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;IAEzD;;;;OAIG;;IACF,KAAK,CAAC,MAAM,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;IAEjC;;;;OAIG;;IACF,KAAK,CAAC,OAAO,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;GAE5B,eAAe,CAwPpB;AAED,eAAe,CAAC,MAAM,EAAE,CAAC;AAEzB,eAAe,eAAe,CAAC","sourcesContent":["import UI5Element from \"@ui5/webcomponents-base/dist/UI5Element.js\";\nimport customElement from \"@ui5/webcomponents-base/dist/decorators/customElement.js\";\nimport jsxRenderer from \"@ui5/webcomponents-base/renderer/JsxRenderer.js\";\nimport property from \"@ui5/webcomponents-base/dist/decorators/property.js\";\nimport slot from \"@ui5/webcomponents-base/dist/decorators/slot.js\";\nimport event from \"@ui5/webcomponents-base/dist/decorators/event-strict.js\";\nimport { isTabNext, isTabPrevious, isEscape } from \"@ui5/webcomponents-base/dist/Keys.js\";\nimport UI5Icon from \"@ui5/webcomponents/dist/Icon.js\";\nimport type { LinkClickEventDetail } from \"@ui5/webcomponents/dist/Link.js\";\nimport NavigationMode from \"@ui5/webcomponents-base/dist/types/NavigationMode.js\";\nimport ItemNavigation from \"@ui5/webcomponents-base/dist/delegate/ItemNavigation.js\";\nimport i18n from \"@ui5/webcomponents-base/dist/decorators/i18n.js\";\nimport type I18nBundle from \"@ui5/webcomponents-base/dist/i18nBundle.js\";\nimport UI5BreadcrumbsCss from \"@ui5/webcomponents/dist/generated/themes/Breadcrumbs.css.js\";\nimport \"@ui5/webcomponents-icons/dist/slim-arrow-down.js\";\nimport \"@ui5/webcomponents-icons/dist/home.js\";\nimport BreadcrumbsTemplate from \"./BreadcrumbsTemplate.js\";\nimport UDExBreadcrumbsItem from \"./BreadcrumbsItem.js\";\nimport UDExDropdown from \"./Dropdown.js\";\nimport UDExLink from \"./Link.js\";\nimport {\n AVAILABLE_VALUES,\n BREADCRUMBS_ARIA_LABEL,\n BREADCRUMBS_OVERFLOW_ARIA_LABEL,\n} from \"./generated/i18n/i18n-defaults.js\";\nimport translate from \"./utils/translate.js\";\n\n// Styles\nimport BreadcrumbsCss from \"./generated/themes/Breadcrumbs.css.js\";\nimport BreadcrumbsPopoverCss from \"./generated/themes/BreadcrumbsPopover.css.js\";\n\ntype UDExBreadcrumbsItemClickEventDetail = {\n item: UDExBreadcrumbsItem;\n altKey?: boolean;\n ctrlKey?: boolean;\n metaKey?: boolean;\n shiftKey?: boolean;\n}\n\n/**\n * @class\n *\n * <h3 class=\"comment-api-title\">Overview</h3>\n *\n *\n * <h3>Usage</h3>\n *\n * For the <code>udex-breadcrumbs</code>\n * <h3>ES6 Module Import</h3>\n *\n * <code>import \"@sapudex/web-components/dist/Breadcrumbs.js\";</code>\n *\n * @constructor\n * @extends UI5Element\n * @public\n */\n@customElement({\n tag: \"udex-breadcrumbs\",\n renderer: jsxRenderer,\n styles: [UI5BreadcrumbsCss, BreadcrumbsCss, BreadcrumbsPopoverCss],\n template: BreadcrumbsTemplate,\n dependencies: [UDExBreadcrumbsItem, UDExLink, UDExDropdown, UI5Icon],\n})\n/**\n * @public\n * @param { UDExBreadcrumbsItem } item The clicked breadcrumb item\n * @param { boolean } altKey\n * @param { boolean } ctrlKey\n * @param { boolean } metaKey\n * @param { boolean } shiftKey\n */\n@event(\"item-click\", { cancelable: true, bubbles: true })\n\n/**\n * Fired after the dropdown is opened.\n *\n * @public\n */\n@event(\"open\", { bubbles: true })\n\n/**\n * Fired after the dropdown is closed.\n *\n * @public\n */\n@event(\"close\", { bubbles: true })\n\nclass UDExBreadcrumbs extends UI5Element {\n eventDetails!: {\n \"item-click\": UDExBreadcrumbsItemClickEventDetail,\n \"open\": void,\n \"close\": void,\n };\n /**\n * Defines how many breadcrumb items should be visible\n *\n * @default 3\n * @public\n */\n @property({ type: Number })\n showItems: number = 3;\n\n /**\n * Indicates if dropdown is opened\n *\n * @default false\n * @private\n */\n @property({ noAttribute: true, type: Boolean })\n _dropdownOpened!: boolean;\n\n /**\n * Defines the component items.\n *\n * **Note:** Use the `udex-breadcrumbs-item` component to define the desired items.\n * @public\n */\n @slot({ type: HTMLElement, invalidateOnChildChange: true, \"default\": true })\n items!: Array<UDExBreadcrumbsItem>;\n\n @i18n(\"@sapudex/web-components\")\n static i18nBundle: I18nBundle;\n\n _responsivePopover?: UDExDropdown;\n _itemNavigation?: ItemNavigation;\n _shouldFocusFirstVisibleItem!: boolean;\n _rootClass: string;\n\n constructor() {\n super();\n this._rootClass = \"udex-breadcrumbs\";\n }\n\n onBeforeRendering(): void {\n this._preprocessItems();\n }\n\n onAfterRendering(): void {\n this._responsivePopover = this._getResponsePopover();\n this._initItemNavigation();\n this._dropdownArrowLink.forcedTabIndex = \"0\";\n this._handleOutsideClick();\n\n if (this._shouldFocusFirstVisibleItem) {\n this._getFocusableItems()[1].focus();\n this._shouldFocusFirstVisibleItem = false;\n }\n }\n\n _preprocessItems(): void {\n this.items.forEach(item => {\n item._getRealDomRef = () => this.getDomRef()!.querySelector(`[data-ui5-stable*=${item.stableDomRef}]`)!;\n });\n }\n\n _getResponsePopover(): UDExDropdown {\n return this.shadowRoot!.querySelector<UDExDropdown>(`#udex-${this.__id!}-breadcrumbs__popover`)!;\n }\n\n _getFocusableItems(): Array<UDExLink> {\n const items = this._links;\n items.unshift(this._dropdownArrowLink);\n\n return items;\n }\n\n _initItemNavigation(): void {\n if (!this._itemNavigation) {\n this._itemNavigation = new ItemNavigation(this, {\n navigationMode: NavigationMode.Horizontal,\n getItemsCallback: () => this._getFocusableItems(),\n });\n }\n }\n\n _getItems(): Array<UDExBreadcrumbsItem> {\n return this.getSlottedNodes<UDExBreadcrumbsItem>(\"items\");\n }\n\n _onDropdownLinkPress(e: CustomEvent<LinkClickEventDetail>): void {\n const listItem = e.target as HTMLElement,\n items = this._getItems(),\n item = items.find(x => `${x._id}-li` === listItem.id)!;\n\n if (item._isCurrentPageItem) {\n return;\n }\n\n if (this.fireDecoratorEvent(\"item-click\", { item })) {\n window.open(item.href, item.target || \"_self\", \"noopener,noreferrer\");\n this._toggleDropdown();\n }\n\n this.setDropdownCloseState();\n }\n\n _onLinkPress(e: CustomEvent<LinkClickEventDetail>): void {\n const link = e.target as UDExLink,\n items = this._getItems(),\n item = items.find(x => `${x._id}-link` === link.id)!,\n {\n altKey,\n ctrlKey,\n metaKey,\n shiftKey,\n } = e.detail;\n\n if (!this.fireDecoratorEvent(\"item-click\", {\n item,\n altKey,\n ctrlKey,\n metaKey,\n shiftKey,\n })) {\n e.preventDefault();\n }\n\n this.setDropdownCloseState();\n }\n\n _isItemVisible(item: UDExBreadcrumbsItem): boolean {\n return !item.hidden;\n }\n\n _afterDropdownOpen(): void {\n this._dropdownOpened = true;\n this.fireDecoratorEvent(\"open\");\n }\n\n _afterDropdownClose(): void {\n this._dropdownOpened = false;\n this.fireDecoratorEvent(\"close\");\n }\n\n _toggleDropdown(): void {\n if (this._responsivePopover) {\n this._responsivePopover.open = !this._responsivePopover.open;\n this._dropdownOpened = !this._dropdownOpened;\n }\n }\n\n _onfocusin(e: FocusEvent): void {\n const currentItem = e.target as UDExLink;\n\n this._itemNavigation?.setCurrentItem(currentItem);\n }\n\n _handleKeydown(e: KeyboardEvent): void {\n const itemIndex = (e.target as HTMLElement).getAttribute(\"data-index\");\n const isLastItem = itemIndex === (this.items.length - 2).toString();\n const isFirstItem = itemIndex === \"0\";\n\n if (isTabNext(e) && isLastItem) {\n this._shouldFocusFirstVisibleItem = true;\n this._toggleDropdown();\n return;\n }\n\n if ((isTabNext(e) && isLastItem) || (isTabPrevious(e) && isFirstItem) || isEscape(e)) {\n this._toggleDropdown();\n }\n }\n\n _handleOutsideClick(): void {\n document.addEventListener(\"mousedown\", (e: Event) => {\n if (e.target !== this) {\n this.setDropdownCloseState();\n }\n });\n }\n\n setDropdownCloseState(): void {\n if (this._responsivePopover) {\n this._dropdownOpened = false;\n }\n }\n\n /**\n * Getter for the interactive element that opens the overflow\n * @private\n */\n get _dropdownArrowLink(): UDExLink {\n return this.shadowRoot!.querySelector<UDExLink>(\".udex-breadcrumbs__trigger\")!;\n }\n\n /**\n * Getter for the list of links corresponding to the abstract breadcrumb items\n */\n get _links(): Array<UDExLink> {\n return Array.from(this.shadowRoot!.querySelectorAll<UDExLink>(\".udex-breadcrumbs__link-wrapper [udex-link]\"));\n }\n\n /**\n * Getter for the list of abstract breadcrumb items to be rendered as links outside the overflow\n */\n get _linksData(): Array<UDExBreadcrumbsItem> {\n const items = this._visibleItems;\n const itemsCount = items.length;\n\n return items\n .map((item, index) => {\n item._isCurrentPageItem = index === (itemsCount - 1);\n return item;\n });\n }\n\n get _visibleItems(): Array<UDExBreadcrumbsItem> {\n const items = this._getItems();\n const itemsLength = this.showItems ?? 0;\n\n return this._getItems()\n .slice(Math.max(items.length - itemsLength - 1, 0))\n .filter(i => this._isItemVisible(i));\n }\n\n get _dropdownItems(): Array<UDExBreadcrumbsItem> {\n return this._getItems().filter(i => this._isItemVisible(i));\n }\n\n get _triggerClass(): string {\n const rootClass = \"udex-breadcrumbs\";\n return this._dropdownOpened ? `${rootClass} ${rootClass}__trigger--opened` : rootClass;\n }\n\n get _breadcrumbsAccessibleNameText(): string {\n return translate(UDExBreadcrumbs, BREADCRUMBS_ARIA_LABEL);\n }\n\n get _dropdownArrowAccessibleNameText(): string {\n return translate(UDExBreadcrumbs, BREADCRUMBS_OVERFLOW_ARIA_LABEL);\n }\n\n get _dropdownAccessibleNameText(): string {\n return translate(UDExBreadcrumbs, AVAILABLE_VALUES);\n }\n}\n\nUDExBreadcrumbs.define();\n\nexport default UDExBreadcrumbs;\nexport type { UDExBreadcrumbsItemClickEventDetail };\n"]}
1
+ {"version":3,"file":"Breadcrumbs.js","sourceRoot":"","sources":["../src/Breadcrumbs.ts"],"names":[],"mappings":"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","sourcesContent":["import UI5Element from \"@ui5/webcomponents-base/dist/UI5Element.js\";\nimport customElement from \"@ui5/webcomponents-base/dist/decorators/customElement.js\";\nimport jsxRenderer from \"@ui5/webcomponents-base/renderer/JsxRenderer.js\";\nimport property from \"@ui5/webcomponents-base/dist/decorators/property.js\";\nimport slot from \"@ui5/webcomponents-base/dist/decorators/slot.js\";\nimport event from \"@ui5/webcomponents-base/dist/decorators/event-strict.js\";\nimport { isTabNext, isTabPrevious, isEscape } from \"@ui5/webcomponents-base/dist/Keys.js\";\nimport UI5Icon from \"@ui5/webcomponents/dist/Icon.js\";\nimport type { LinkClickEventDetail } from \"@ui5/webcomponents/dist/Link.js\";\nimport i18n from \"@ui5/webcomponents-base/dist/decorators/i18n.js\";\nimport type I18nBundle from \"@ui5/webcomponents-base/dist/i18nBundle.js\";\nimport UI5BreadcrumbsCss from \"@ui5/webcomponents/dist/generated/themes/Breadcrumbs.css.js\";\nimport \"@ui5/webcomponents-icons/dist/slim-arrow-down.js\";\nimport \"@ui5/webcomponents-icons/dist/home.js\";\nimport BreadcrumbsTemplate from \"./BreadcrumbsTemplate.js\";\nimport UDExBreadcrumbsItem from \"./BreadcrumbsItem.js\";\nimport UDExDropdown from \"./Dropdown.js\";\nimport UDExLink from \"./Link.js\";\nimport {\n AVAILABLE_VALUES,\n BREADCRUMBS_ARIA_LABEL,\n BREADCRUMBS_OVERFLOW_ARIA_LABEL,\n} from \"./generated/i18n/i18n-defaults.js\";\nimport translate from \"./utils/translate.js\";\n\n// Styles\nimport BreadcrumbsCss from \"./generated/themes/Breadcrumbs.css.js\";\nimport BreadcrumbsPopoverCss from \"./generated/themes/BreadcrumbsPopover.css.js\";\n\ntype UDExBreadcrumbsItemClickEventDetail = {\n item: UDExBreadcrumbsItem;\n altKey?: boolean;\n ctrlKey?: boolean;\n metaKey?: boolean;\n shiftKey?: boolean;\n}\n\n/**\n * @class\n *\n * <h3 class=\"comment-api-title\">Overview</h3>\n *\n *\n * <h3>Usage</h3>\n *\n * For the <code>udex-breadcrumbs</code>\n * <h3>ES6 Module Import</h3>\n *\n * <code>import \"@sapudex/web-components/dist/Breadcrumbs.js\";</code>\n *\n * @constructor\n * @extends UI5Element\n * @public\n */\n@customElement({\n tag: \"udex-breadcrumbs\",\n renderer: jsxRenderer,\n styles: [UI5BreadcrumbsCss, BreadcrumbsCss, BreadcrumbsPopoverCss],\n template: BreadcrumbsTemplate,\n dependencies: [UDExBreadcrumbsItem, UDExLink, UDExDropdown, UI5Icon],\n})\n/**\n * @public\n * @param { UDExBreadcrumbsItem } item The clicked breadcrumb item\n * @param { boolean } altKey\n * @param { boolean } ctrlKey\n * @param { boolean } metaKey\n * @param { boolean } shiftKey\n */\n@event(\"item-click\", { cancelable: true, bubbles: true })\n\n/**\n * Fired after the dropdown is opened.\n *\n * @public\n */\n@event(\"open\", { bubbles: true })\n\n/**\n * Fired after the dropdown is closed.\n *\n * @public\n */\n@event(\"close\", { bubbles: true })\n\nclass UDExBreadcrumbs extends UI5Element {\n eventDetails!: {\n \"item-click\": UDExBreadcrumbsItemClickEventDetail,\n \"open\": void,\n \"close\": void,\n };\n /**\n * Defines how many breadcrumb items should be visible\n *\n * @default 3\n * @public\n */\n @property({ type: Number })\n showItems: number = 3;\n\n /**\n * Indicates if dropdown is opened\n *\n * @default false\n * @private\n */\n @property({ noAttribute: true, type: Boolean })\n _dropdownOpened!: boolean;\n\n /**\n * Defines the component items.\n *\n * **Note:** Use the `udex-breadcrumbs-item` component to define the desired items.\n * @public\n */\n @slot({ type: HTMLElement, invalidateOnChildChange: true, \"default\": true })\n items!: Array<UDExBreadcrumbsItem>;\n\n @i18n(\"@sapudex/web-components\")\n static i18nBundle: I18nBundle;\n\n _responsivePopover?: UDExDropdown;\n _shouldFocusFirstVisibleItem!: boolean;\n _rootClass: string;\n\n constructor() {\n super();\n this._rootClass = \"udex-breadcrumbs\";\n }\n\n onBeforeRendering(): void {\n this._preprocessItems();\n }\n\n onAfterRendering(): void {\n this._responsivePopover = this._getResponsePopover();\n this._dropdownArrowLink.forcedTabIndex = \"0\";\n this._handleOutsideClick();\n\n if (this._shouldFocusFirstVisibleItem) {\n this._getFocusableItems()[1].focus();\n this._shouldFocusFirstVisibleItem = false;\n }\n }\n\n _preprocessItems(): void {\n this.items.forEach(item => {\n item._getRealDomRef = () => this.getDomRef()!.querySelector(`[data-ui5-stable*=${item.stableDomRef}]`)!;\n });\n }\n\n _getResponsePopover(): UDExDropdown {\n return this.shadowRoot!.querySelector<UDExDropdown>(`#udex-${this.__id!}-breadcrumbs__popover`)!;\n }\n\n _getFocusableItems(): Array<UDExLink> {\n const items = this._links;\n items.unshift(this._dropdownArrowLink);\n\n return items;\n }\n\n _getItems(): Array<UDExBreadcrumbsItem> {\n return this.getSlottedNodes<UDExBreadcrumbsItem>(\"items\");\n }\n\n _onDropdownLinkPress(e: CustomEvent<LinkClickEventDetail>): void {\n const listItem = e.target as HTMLElement,\n items = this._getItems(),\n item = items.find(x => `${x._id}-li` === listItem.id)!;\n\n if (item._isCurrentPageItem) {\n return;\n }\n\n if (this.fireDecoratorEvent(\"item-click\", { item })) {\n window.open(item.href, item.target || \"_self\", \"noopener,noreferrer\");\n this._toggleDropdown();\n }\n\n this.setDropdownCloseState();\n }\n\n _onLinkPress(e: CustomEvent<LinkClickEventDetail>): void {\n const link = e.target as UDExLink,\n items = this._getItems(),\n item = items.find(x => `${x._id}-link` === link.id)!,\n {\n altKey,\n ctrlKey,\n metaKey,\n shiftKey,\n } = e.detail;\n\n if (!this.fireDecoratorEvent(\"item-click\", {\n item,\n altKey,\n ctrlKey,\n metaKey,\n shiftKey,\n })) {\n e.preventDefault();\n }\n\n this.setDropdownCloseState();\n }\n\n _isItemVisible(item: UDExBreadcrumbsItem): boolean {\n return !item.hidden;\n }\n\n _afterDropdownOpen(): void {\n this._dropdownOpened = true;\n this.fireDecoratorEvent(\"open\");\n }\n\n _afterDropdownClose(): void {\n this._dropdownOpened = false;\n this.fireDecoratorEvent(\"close\");\n }\n\n _toggleDropdown(): void {\n if (this._responsivePopover) {\n this._responsivePopover.open = !this._responsivePopover.open;\n this._dropdownOpened = !this._dropdownOpened;\n }\n }\n\n _handleKeydown(e: KeyboardEvent): void {\n const itemIndex = (e.target as HTMLElement).getAttribute(\"data-index\");\n const isLastItem = itemIndex === (this.items.length - 2).toString();\n const isFirstItem = itemIndex === \"0\";\n\n if (isTabNext(e) && isLastItem) {\n this._shouldFocusFirstVisibleItem = true;\n this._toggleDropdown();\n return;\n }\n\n if (isTabPrevious(e) && isFirstItem) {\n e.preventDefault();\n this._dropdownArrowLink.focus();\n this._toggleDropdown();\n return;\n }\n\n if (isEscape(e)) {\n this._toggleDropdown();\n }\n }\n\n _handleOutsideClick(): void {\n document.addEventListener(\"mousedown\", (e: Event) => {\n if (e.target !== this) {\n this.setDropdownCloseState();\n }\n });\n }\n\n setDropdownCloseState(): void {\n if (this._responsivePopover) {\n this._dropdownOpened = false;\n }\n }\n\n /**\n * Getter for the interactive element that opens the overflow\n * @private\n */\n get _dropdownArrowLink(): UDExLink {\n return this.shadowRoot!.querySelector<UDExLink>(\".udex-breadcrumbs__trigger\")!;\n }\n\n /**\n * Getter for the list of links corresponding to the abstract breadcrumb items\n */\n get _links(): Array<UDExLink> {\n return Array.from(this.shadowRoot!.querySelectorAll<UDExLink>(\".udex-breadcrumbs__link-wrapper [udex-link]\"));\n }\n\n /**\n * Getter for the list of abstract breadcrumb items to be rendered as links outside the overflow\n */\n get _linksData(): Array<UDExBreadcrumbsItem> {\n const items = this._visibleItems;\n const itemsCount = items.length;\n\n return items\n .map((item, index) => {\n item._isCurrentPageItem = index === (itemsCount - 1);\n return item;\n });\n }\n\n get _visibleItems(): Array<UDExBreadcrumbsItem> {\n const items = this._getItems();\n const itemsLength = this.showItems ?? 0;\n\n return this._getItems()\n .slice(Math.max(items.length - itemsLength - 1, 0))\n .filter(i => this._isItemVisible(i));\n }\n\n get _dropdownItems(): Array<UDExBreadcrumbsItem> {\n return this._getItems().filter(i => this._isItemVisible(i));\n }\n\n get _triggerClass(): string {\n const rootClass = \"udex-breadcrumbs\";\n return this._dropdownOpened ? `${rootClass} ${rootClass}__trigger--opened` : rootClass;\n }\n\n get _breadcrumbsAccessibleNameText(): string {\n return translate(UDExBreadcrumbs, BREADCRUMBS_ARIA_LABEL);\n }\n\n get _dropdownArrowAccessibleNameText(): string {\n return translate(UDExBreadcrumbs, BREADCRUMBS_OVERFLOW_ARIA_LABEL);\n }\n\n get _dropdownAccessibleNameText(): string {\n return translate(UDExBreadcrumbs, AVAILABLE_VALUES);\n }\n}\n\nUDExBreadcrumbs.define();\n\nexport default UDExBreadcrumbs;\nexport type { UDExBreadcrumbsItemClickEventDetail };\n"]}
@@ -5,6 +5,6 @@ import slimArrowDown from "@ui5/webcomponents-icons/dist/slim-arrow-down.js";
5
5
  import BreadcrumbsPopoverTemplate from "./BreadcrumbsPopoverTemplate.js";
6
6
  export default function BreadcrumbsTemplate() {
7
7
  const rootClass = "udex-breadcrumbs";
8
- return (_jsxs(_Fragment, { children: [_jsx("nav", { class: `${this._rootClass} ui5-breadcrumbs-root`, "aria-label": this._breadcrumbsAccessibleNameText, children: _jsxs("ol", { onFocusIn: this._onfocusin, children: [_jsx("li", { class: `${this._rootClass}__arrow-wrapper ui5-breadcrumbs-dropdown-arrow-link-wrapper`, children: _jsx(UDExLink, { id: `udex-${this._id}-breadcrumbs__opener`, class: `${this._rootClass}__trigger ${this._triggerClass}`, onClick: this._toggleDropdown, accessibleName: this._dropdownArrowAccessibleNameText, accessibleRole: UDExButtonAccessibleRole.Button, icon: slimArrowDown, "aria-haspopup": "true" }) }), this._linksData.map(linkData => _jsx("li", { class: `${this._rootClass}__link-wrapper ui5-breadcrumbs-link-wrapper`, id: `${linkData._id}-link-wrapper`, children: !linkData._isCurrentPageItem && (_jsxs(_Fragment, { children: [_jsx("span", { className: `${this._rootClass}__separator`, "aria-hidden": "true" }), _jsx(UDExLink, { onClick: this._onLinkPress, id: `${linkData._id}-link`, class: `${rootClass}__item ${this._rootClass}__item--visible`, href: linkData.href, target: linkData.target, accessibleName: linkData._accessibleNameText, "data-ui5-stable": linkData.stableDomRef, children: linkData.innerText })] })) }))] }) }), BreadcrumbsPopoverTemplate.call(this)] }));
8
+ return (_jsxs(_Fragment, { children: [_jsx("nav", { class: `${this._rootClass} ui5-breadcrumbs-root`, "aria-label": this._breadcrumbsAccessibleNameText, children: _jsxs("ol", { children: [_jsx("li", { class: `${this._rootClass}__arrow-wrapper ui5-breadcrumbs-dropdown-arrow-link-wrapper`, children: _jsx(UDExLink, { id: `udex-${this._id}-breadcrumbs__opener`, class: `${this._rootClass}__trigger ${this._triggerClass}`, onClick: this._toggleDropdown, accessibleName: this._dropdownArrowAccessibleNameText, accessibleRole: UDExButtonAccessibleRole.Button, icon: slimArrowDown, "aria-haspopup": "true" }) }), this._linksData.map(linkData => _jsx("li", { class: `${this._rootClass}__link-wrapper ui5-breadcrumbs-link-wrapper`, id: `${linkData._id}-link-wrapper`, children: !linkData._isCurrentPageItem && (_jsxs(_Fragment, { children: [_jsx("span", { className: `${this._rootClass}__separator`, "aria-hidden": "true" }), _jsx(UDExLink, { onClick: this._onLinkPress, id: `${linkData._id}-link`, class: `${rootClass}__item ${this._rootClass}__item--visible`, href: linkData.href, target: linkData.target, accessibleName: linkData._accessibleNameText, "data-ui5-stable": linkData.stableDomRef, children: linkData.innerText })] })) }))] }) }), BreadcrumbsPopoverTemplate.call(this)] }));
9
9
  }
10
10
  //# sourceMappingURL=BreadcrumbsTemplate.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"BreadcrumbsTemplate.js","sourceRoot":"","sources":["../src/BreadcrumbsTemplate.tsx"],"names":[],"mappings":";AACA,OAAO,QAAQ,MAAM,WAAW,CAAC;AACjC,OAAO,wBAAwB,MAAM,iCAAiC,CAAC;AACvE,OAAO,aAAa,MAAM,kDAAkD,CAAC;AAC7E,OAAO,0BAA0B,MAAM,iCAAiC,CAAC;AAEzE,MAAM,CAAC,OAAO,UAAU,mBAAmB;IACzC,MAAM,SAAS,GAAG,kBAAkB,CAAC;IAErC,OAAO,CACL,8BACE,cACE,KAAK,EAAE,GAAG,IAAI,CAAC,UAAU,uBAAuB,gBACpC,IAAI,CAAC,8BAA8B,YAC/C,cAAI,SAAS,EAAE,IAAI,CAAC,UAAU,aAC5B,aAAI,KAAK,EAAE,GAAG,IAAI,CAAC,UAAU,6DAA6D,YACxF,KAAC,QAAQ,IACP,EAAE,EAAE,QAAQ,IAAI,CAAC,GAAG,sBAAsB,EAC1C,KAAK,EAAE,GAAG,IAAI,CAAC,UAAU,aAAa,IAAI,CAAC,aAAa,EAAE,EAC1D,OAAO,EAAE,IAAI,CAAC,eAAe,EAC7B,cAAc,EAAE,IAAI,CAAC,gCAAgC,EACrD,cAAc,EAAE,wBAAwB,CAAC,MAAM,EAC/C,IAAI,EAAE,aAAa,mBACL,MAAM,GACX,GACR,EACJ,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAC9B,aACE,KAAK,EAAE,GAAG,IAAI,CAAC,UAAU,6CAA6C,EACtE,EAAE,EAAE,GAAG,QAAQ,CAAC,GAAG,eAAe,YACjC,CAAC,QAAQ,CAAC,kBAAkB,IAAI,CAC/B,8BACE,eAAM,SAAS,EAAE,GAAG,IAAI,CAAC,UAAU,aAAa,iBAAc,MAAM,GAAQ,EAC5E,KAAC,QAAQ,IACP,OAAO,EAAE,IAAI,CAAC,YAAY,EAC1B,EAAE,EAAE,GAAG,QAAQ,CAAC,GAAG,OAAO,EAC1B,KAAK,EAAE,GAAG,SAAS,UAAU,IAAI,CAAC,UAAU,iBAAiB,EAC7D,IAAI,EAAE,QAAQ,CAAC,IAAI,EACnB,MAAM,EAAE,QAAQ,CAAC,MAAM,EACvB,cAAc,EAAE,QAAQ,CAAC,mBAAmB,qBAC3B,QAAQ,CAAC,YAAY,YACrC,QAAQ,CAAC,SAAS,GACV,IACV,CACJ,GACE,CACN,IACE,GACD,EACL,0BAA0B,CAAC,IAAI,CAAC,IAAI,CAAC,IACrC,CACJ,CAAC;AACJ,CAAC","sourcesContent":["import type Breadcrumbs from \"./Breadcrumbs.js\";\nimport UDExLink from \"./Link.js\";\nimport UDExButtonAccessibleRole from \"./types/ButtonAccessibleRole.js\";\nimport slimArrowDown from \"@ui5/webcomponents-icons/dist/slim-arrow-down.js\";\nimport BreadcrumbsPopoverTemplate from \"./BreadcrumbsPopoverTemplate.js\";\n\nexport default function BreadcrumbsTemplate(this: Breadcrumbs) {\n const rootClass = \"udex-breadcrumbs\";\n\n return (\n <>\n <nav\n class={`${this._rootClass} ui5-breadcrumbs-root`}\n aria-label={this._breadcrumbsAccessibleNameText}>\n <ol onFocusIn={this._onfocusin}>\n <li class={`${this._rootClass}__arrow-wrapper ui5-breadcrumbs-dropdown-arrow-link-wrapper`}>\n <UDExLink\n id={`udex-${this._id}-breadcrumbs__opener`}\n class={`${this._rootClass}__trigger ${this._triggerClass}`}\n onClick={this._toggleDropdown}\n accessibleName={this._dropdownArrowAccessibleNameText}\n accessibleRole={UDExButtonAccessibleRole.Button}\n icon={slimArrowDown}\n aria-haspopup=\"true\">\n </UDExLink>\n </li>\n {this._linksData.map(linkData =>\n <li\n class={`${this._rootClass}__link-wrapper ui5-breadcrumbs-link-wrapper`}\n id={`${linkData._id}-link-wrapper`}>\n {!linkData._isCurrentPageItem && (\n <>\n <span className={`${this._rootClass}__separator`} aria-hidden=\"true\"></span>\n <UDExLink\n onClick={this._onLinkPress}\n id={`${linkData._id}-link`}\n class={`${rootClass}__item ${this._rootClass}__item--visible`}\n href={linkData.href}\n target={linkData.target}\n accessibleName={linkData._accessibleNameText}\n data-ui5-stable={linkData.stableDomRef}>\n {linkData.innerText}\n </UDExLink>\n </>\n )}\n </li>\n )}\n </ol>\n </nav>\n {BreadcrumbsPopoverTemplate.call(this)}\n </>\n );\n}\n"]}
1
+ {"version":3,"file":"BreadcrumbsTemplate.js","sourceRoot":"","sources":["../src/BreadcrumbsTemplate.tsx"],"names":[],"mappings":";AACA,OAAO,QAAQ,MAAM,WAAW,CAAC;AACjC,OAAO,wBAAwB,MAAM,iCAAiC,CAAC;AACvE,OAAO,aAAa,MAAM,kDAAkD,CAAC;AAC7E,OAAO,0BAA0B,MAAM,iCAAiC,CAAC;AAEzE,MAAM,CAAC,OAAO,UAAU,mBAAmB;IACzC,MAAM,SAAS,GAAG,kBAAkB,CAAC;IAErC,OAAO,CACL,8BACE,cACE,KAAK,EAAE,GAAG,IAAI,CAAC,UAAU,uBAAuB,gBACpC,IAAI,CAAC,8BAA8B,YAC/C,yBACE,aAAI,KAAK,EAAE,GAAG,IAAI,CAAC,UAAU,6DAA6D,YACxF,KAAC,QAAQ,IACP,EAAE,EAAE,QAAQ,IAAI,CAAC,GAAG,sBAAsB,EAC1C,KAAK,EAAE,GAAG,IAAI,CAAC,UAAU,aAAa,IAAI,CAAC,aAAa,EAAE,EAC1D,OAAO,EAAE,IAAI,CAAC,eAAe,EAC7B,cAAc,EAAE,IAAI,CAAC,gCAAgC,EACrD,cAAc,EAAE,wBAAwB,CAAC,MAAM,EAC/C,IAAI,EAAE,aAAa,mBACL,MAAM,GACX,GACR,EACJ,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAC9B,aACE,KAAK,EAAE,GAAG,IAAI,CAAC,UAAU,6CAA6C,EACtE,EAAE,EAAE,GAAG,QAAQ,CAAC,GAAG,eAAe,YACjC,CAAC,QAAQ,CAAC,kBAAkB,IAAI,CAC/B,8BACE,eAAM,SAAS,EAAE,GAAG,IAAI,CAAC,UAAU,aAAa,iBAAc,MAAM,GAAQ,EAC5E,KAAC,QAAQ,IACP,OAAO,EAAE,IAAI,CAAC,YAAY,EAC1B,EAAE,EAAE,GAAG,QAAQ,CAAC,GAAG,OAAO,EAC1B,KAAK,EAAE,GAAG,SAAS,UAAU,IAAI,CAAC,UAAU,iBAAiB,EAC7D,IAAI,EAAE,QAAQ,CAAC,IAAI,EACnB,MAAM,EAAE,QAAQ,CAAC,MAAM,EACvB,cAAc,EAAE,QAAQ,CAAC,mBAAmB,qBAC3B,QAAQ,CAAC,YAAY,YACrC,QAAQ,CAAC,SAAS,GACV,IACV,CACJ,GACE,CACN,IACE,GACD,EACL,0BAA0B,CAAC,IAAI,CAAC,IAAI,CAAC,IACrC,CACJ,CAAC;AACJ,CAAC","sourcesContent":["import type Breadcrumbs from \"./Breadcrumbs.js\";\nimport UDExLink from \"./Link.js\";\nimport UDExButtonAccessibleRole from \"./types/ButtonAccessibleRole.js\";\nimport slimArrowDown from \"@ui5/webcomponents-icons/dist/slim-arrow-down.js\";\nimport BreadcrumbsPopoverTemplate from \"./BreadcrumbsPopoverTemplate.js\";\n\nexport default function BreadcrumbsTemplate(this: Breadcrumbs) {\n const rootClass = \"udex-breadcrumbs\";\n\n return (\n <>\n <nav\n class={`${this._rootClass} ui5-breadcrumbs-root`}\n aria-label={this._breadcrumbsAccessibleNameText}>\n <ol>\n <li class={`${this._rootClass}__arrow-wrapper ui5-breadcrumbs-dropdown-arrow-link-wrapper`}>\n <UDExLink\n id={`udex-${this._id}-breadcrumbs__opener`}\n class={`${this._rootClass}__trigger ${this._triggerClass}`}\n onClick={this._toggleDropdown}\n accessibleName={this._dropdownArrowAccessibleNameText}\n accessibleRole={UDExButtonAccessibleRole.Button}\n icon={slimArrowDown}\n aria-haspopup=\"true\">\n </UDExLink>\n </li>\n {this._linksData.map(linkData =>\n <li\n class={`${this._rootClass}__link-wrapper ui5-breadcrumbs-link-wrapper`}\n id={`${linkData._id}-link-wrapper`}>\n {!linkData._isCurrentPageItem && (\n <>\n <span className={`${this._rootClass}__separator`} aria-hidden=\"true\"></span>\n <UDExLink\n onClick={this._onLinkPress}\n id={`${linkData._id}-link`}\n class={`${rootClass}__item ${this._rootClass}__item--visible`}\n href={linkData.href}\n target={linkData.target}\n accessibleName={linkData._accessibleNameText}\n data-ui5-stable={linkData.stableDomRef}>\n {linkData.innerText}\n </UDExLink>\n </>\n )}\n </li>\n )}\n </ol>\n </nav>\n {BreadcrumbsPopoverTemplate.call(this)}\n </>\n );\n}\n"]}
package/dist/List.js CHANGED
@@ -137,7 +137,7 @@ let UDExList = UDExList_1 = class UDExList extends UI5Element {
137
137
  const lastItemIndex = items.length - 1;
138
138
  const previousSelectIndex = currentSelectedIndex - 1 < 0 ? lastItemIndex : currentSelectedIndex - 1;
139
139
  const isHeaderItem = items[previousSelectIndex].isGroup;
140
- const nonInteractiveHeader = items[previousSelectIndex].nonInteractive;
140
+ const nonInteractiveHeader = items[previousSelectIndex].nonInteractive && !items[previousSelectIndex].collapsible;
141
141
  if (nonInteractiveHeader && previousSelectIndex === 0) {
142
142
  this.unsetTabIndexByIndex(items, currentSelectedIndex);
143
143
  this.setTabIndexByIndex(items, lastItemIndex);
@@ -184,7 +184,7 @@ let UDExList = UDExList_1 = class UDExList extends UI5Element {
184
184
  const currentSelectedIndex = this.getCurrentIndex(items, e.target);
185
185
  const nextSelectIndex = currentSelectedIndex + 1 > items.length - 1 ? 0 : currentSelectedIndex + 1;
186
186
  const isHeaderItem = items[nextSelectIndex].isGroup;
187
- const nonInteractiveHeader = items[nextSelectIndex].nonInteractive;
187
+ const nonInteractiveHeader = items[nextSelectIndex].nonInteractive && !items[nextSelectIndex].collapsible;
188
188
  if (nonInteractiveHeader) {
189
189
  this.unsetTabIndexByIndex(items, currentSelectedIndex);
190
190
  this.setTabIndexByIndex(items, nextSelectIndex + 1);
@@ -222,7 +222,7 @@ let UDExList = UDExList_1 = class UDExList extends UI5Element {
222
222
  const currentSelectedIndex = this.getCurrentIndex(items, e.target);
223
223
  const firstItem = items[0];
224
224
  const isHeaderItem = firstItem.isGroup;
225
- const nonInteractiveItem = firstItem.nonInteractive;
225
+ const nonInteractiveItem = firstItem.nonInteractive && !firstItem.collapsible;
226
226
  if (nonInteractiveItem) {
227
227
  this.unsetTabIndexByIndex(items, currentSelectedIndex);
228
228
  this.setTabIndexByIndex(items, 1);