@sapudex/web-components 0.114.2 → 0.117.1

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 (216) hide show
  1. package/bundle.esm.js +3 -0
  2. package/dist/Avatar.d.ts +8 -1
  3. package/dist/Avatar.js +5 -2
  4. package/dist/Avatar.js.map +1 -1
  5. package/dist/CountrySelector.d.ts +1 -0
  6. package/dist/CountrySelector.js +3 -0
  7. package/dist/CountrySelector.js.map +1 -1
  8. package/dist/FilterMenu.d.ts +14 -4
  9. package/dist/FilterMenu.js +46 -7
  10. package/dist/FilterMenu.js.map +1 -1
  11. package/dist/InputGroup.js.map +1 -1
  12. package/dist/List.d.ts +7 -0
  13. package/dist/List.js +78 -18
  14. package/dist/List.js.map +1 -1
  15. package/dist/ListItem.d.ts +0 -1
  16. package/dist/ListItem.js +0 -6
  17. package/dist/ListItem.js.map +1 -1
  18. package/dist/ListItemBase.d.ts +3 -0
  19. package/dist/ListItemBase.js +12 -0
  20. package/dist/ListItemBase.js.map +1 -1
  21. package/dist/PhoneNumberField.js.map +1 -1
  22. package/dist/Search.d.ts +3 -0
  23. package/dist/Search.js +35 -10
  24. package/dist/Search.js.map +1 -1
  25. package/dist/SecondaryNavigation.d.ts +34 -46
  26. package/dist/SecondaryNavigation.js +140 -161
  27. package/dist/SecondaryNavigation.js.map +1 -1
  28. package/dist/SecondaryNavigationItem.d.ts +101 -0
  29. package/dist/SecondaryNavigationItem.js +287 -0
  30. package/dist/SecondaryNavigationItem.js.map +1 -0
  31. package/dist/SecondaryNavigationItemBase.d.ts +68 -0
  32. package/dist/SecondaryNavigationItemBase.js +78 -0
  33. package/dist/SecondaryNavigationItemBase.js.map +1 -0
  34. package/dist/SecondaryNavigationSubItem.d.ts +52 -0
  35. package/dist/SecondaryNavigationSubItem.js +102 -0
  36. package/dist/SecondaryNavigationSubItem.js.map +1 -0
  37. package/dist/SelectBox.d.ts +1 -0
  38. package/dist/SelectBox.js +13 -1
  39. package/dist/SelectBox.js.map +1 -1
  40. package/dist/StatusBadge.d.ts +67 -0
  41. package/dist/StatusBadge.js +104 -0
  42. package/dist/StatusBadge.js.map +1 -0
  43. package/dist/Tab.js +1 -1
  44. package/dist/Tab.js.map +1 -1
  45. package/dist/assets/{bundle.esm-ab45813e.js → bundle.esm-f65ae7da.js} +187 -184
  46. package/dist/assets/messagebundle_en-7249941b.js +1 -0
  47. package/dist/css/themes/Avatar.css +1 -1
  48. package/dist/css/themes/Checkbox.css +1 -1
  49. package/dist/css/themes/CountrySelector.css +1 -1
  50. package/dist/css/themes/Dropdown.css +1 -1
  51. package/dist/css/themes/FilterMenu.css +1 -1
  52. package/dist/css/themes/HeroBanner.css +1 -1
  53. package/dist/css/themes/MediaPlayer.css +1 -1
  54. package/dist/css/themes/PhoneNumberField.css +1 -1
  55. package/dist/css/themes/RatingIndicator.css +1 -1
  56. package/dist/css/themes/Search.css +1 -1
  57. package/dist/css/themes/SecondaryNavigation.css +1 -1
  58. package/dist/css/themes/SecondaryNavigationItem.css +1 -0
  59. package/dist/css/themes/SecondaryNavigationSubItem.css +1 -0
  60. package/dist/css/themes/Slider.css +1 -1
  61. package/dist/css/themes/StatusBadge.css +1 -0
  62. package/dist/custom-elements-internal.json +604 -2
  63. package/dist/custom-elements.json +574 -2
  64. package/dist/generated/assets/i18n/messagebundle_en.json +1 -1
  65. package/dist/generated/i18n/i18n-defaults.d.ts +8 -1
  66. package/dist/generated/i18n/i18n-defaults.js +8 -1
  67. package/dist/generated/i18n/i18n-defaults.js.map +1 -1
  68. package/dist/generated/templates/CountrySelectorTemplate.lit.js +1 -1
  69. package/dist/generated/templates/CountrySelectorTemplate.lit.js.map +1 -1
  70. package/dist/generated/templates/DropdownTemplate.lit.js +1 -1
  71. package/dist/generated/templates/DropdownTemplate.lit.js.map +1 -1
  72. package/dist/generated/templates/FilterMenuTemplate.lit.js +3 -3
  73. package/dist/generated/templates/FilterMenuTemplate.lit.js.map +1 -1
  74. package/dist/generated/templates/HeroBannerTemplate.lit.js +2 -2
  75. package/dist/generated/templates/HeroBannerTemplate.lit.js.map +1 -1
  76. package/dist/generated/templates/ListGroupHeaderTemplate.lit.js +4 -4
  77. package/dist/generated/templates/ListGroupHeaderTemplate.lit.js.map +1 -1
  78. package/dist/generated/templates/ListItemTemplate.lit.js +1 -1
  79. package/dist/generated/templates/ListItemTemplate.lit.js.map +1 -1
  80. package/dist/generated/templates/ListSelectAllTemplate.lit.js +1 -1
  81. package/dist/generated/templates/ListSelectAllTemplate.lit.js.map +1 -1
  82. package/dist/generated/templates/SearchSuggestionsTemplate.lit.js +1 -1
  83. package/dist/generated/templates/SearchSuggestionsTemplate.lit.js.map +1 -1
  84. package/dist/generated/templates/SearchTemplate.lit.js +2 -2
  85. package/dist/generated/templates/SearchTemplate.lit.js.map +1 -1
  86. package/dist/generated/templates/SearchableListBaseTemplate.lit.js +2 -2
  87. package/dist/generated/templates/SearchableListBaseTemplate.lit.js.map +1 -1
  88. package/dist/generated/templates/SecondaryNavigationItemTemplate.lit.d.ts +4 -0
  89. package/dist/generated/templates/SecondaryNavigationItemTemplate.lit.js +11 -0
  90. package/dist/generated/templates/SecondaryNavigationItemTemplate.lit.js.map +1 -0
  91. package/dist/generated/templates/SecondaryNavigationSubItemTemplate.lit.d.ts +4 -0
  92. package/dist/generated/templates/SecondaryNavigationSubItemTemplate.lit.js +9 -0
  93. package/dist/generated/templates/SecondaryNavigationSubItemTemplate.lit.js.map +1 -0
  94. package/dist/generated/templates/SecondaryNavigationTemplate.lit.js +7 -10
  95. package/dist/generated/templates/SecondaryNavigationTemplate.lit.js.map +1 -1
  96. package/dist/generated/templates/SelectBoxTemplate.lit.js +1 -1
  97. package/dist/generated/templates/SelectBoxTemplate.lit.js.map +1 -1
  98. package/dist/generated/templates/StatusBadgeTemplate.lit.d.ts +4 -0
  99. package/dist/generated/templates/StatusBadgeTemplate.lit.js +5 -0
  100. package/dist/generated/templates/StatusBadgeTemplate.lit.js.map +1 -0
  101. package/dist/generated/themes/Avatar.css.js +1 -1
  102. package/dist/generated/themes/Avatar.css.js.map +1 -1
  103. package/dist/generated/themes/Checkbox.css.js +1 -1
  104. package/dist/generated/themes/Checkbox.css.js.map +1 -1
  105. package/dist/generated/themes/CountrySelector.css.js +1 -1
  106. package/dist/generated/themes/CountrySelector.css.js.map +1 -1
  107. package/dist/generated/themes/Dropdown.css.js +1 -1
  108. package/dist/generated/themes/Dropdown.css.js.map +1 -1
  109. package/dist/generated/themes/FilterMenu.css.js +1 -1
  110. package/dist/generated/themes/FilterMenu.css.js.map +1 -1
  111. package/dist/generated/themes/HeroBanner.css.js +1 -1
  112. package/dist/generated/themes/HeroBanner.css.js.map +1 -1
  113. package/dist/generated/themes/MediaPlayer.css.js +1 -1
  114. package/dist/generated/themes/MediaPlayer.css.js.map +1 -1
  115. package/dist/generated/themes/PhoneNumberField.css.js +1 -1
  116. package/dist/generated/themes/PhoneNumberField.css.js.map +1 -1
  117. package/dist/generated/themes/RatingIndicator.css.js +1 -1
  118. package/dist/generated/themes/RatingIndicator.css.js.map +1 -1
  119. package/dist/generated/themes/Search.css.js +1 -1
  120. package/dist/generated/themes/Search.css.js.map +1 -1
  121. package/dist/generated/themes/SecondaryNavigation.css.js +1 -1
  122. package/dist/generated/themes/SecondaryNavigation.css.js.map +1 -1
  123. package/dist/generated/themes/SecondaryNavigationItem.css.d.ts +3 -0
  124. package/dist/generated/themes/SecondaryNavigationItem.css.js +9 -0
  125. package/dist/generated/themes/SecondaryNavigationItem.css.js.map +1 -0
  126. package/dist/generated/themes/SecondaryNavigationSubItem.css.d.ts +3 -0
  127. package/dist/generated/themes/SecondaryNavigationSubItem.css.js +9 -0
  128. package/dist/generated/themes/SecondaryNavigationSubItem.css.js.map +1 -0
  129. package/dist/generated/themes/Slider.css.js +1 -1
  130. package/dist/generated/themes/Slider.css.js.map +1 -1
  131. package/dist/generated/themes/StatusBadge.css.d.ts +3 -0
  132. package/dist/generated/themes/StatusBadge.css.js +9 -0
  133. package/dist/generated/themes/StatusBadge.css.js.map +1 -0
  134. package/dist/i18n/messagebundle.properties +12 -1
  135. package/dist/i18n/messagebundle_en.properties +8 -1
  136. package/dist/vscode.html-custom-data.json +131 -3
  137. package/dist/web-types.json +203 -5
  138. package/package.json +1 -1
  139. package/src/Avatar.ts +12 -3
  140. package/src/CountrySelector.hbs +2 -1
  141. package/src/CountrySelector.ts +4 -1
  142. package/src/Dropdown.hbs +0 -1
  143. package/src/FilterMenu.hbs +5 -1
  144. package/src/FilterMenu.ts +60 -10
  145. package/src/HeroBanner.hbs +24 -21
  146. package/src/InputGroup.ts +6 -5
  147. package/src/List.ts +92 -21
  148. package/src/ListGroupHeader.hbs +9 -5
  149. package/src/ListItem.hbs +2 -1
  150. package/src/ListItem.ts +0 -7
  151. package/src/ListItemBase.ts +14 -0
  152. package/src/ListSelectAll.hbs +1 -0
  153. package/src/PhoneNumberField.ts +1 -1
  154. package/src/Search.hbs +3 -2
  155. package/src/Search.ts +37 -10
  156. package/src/SearchSuggestions.hbs +1 -1
  157. package/src/SearchableListBase.hbs +2 -0
  158. package/src/SecondaryNavigation.hbs +50 -72
  159. package/src/SecondaryNavigation.ts +171 -195
  160. package/src/SecondaryNavigationItem.hbs +63 -0
  161. package/src/SecondaryNavigationItem.ts +358 -0
  162. package/src/SecondaryNavigationItemBase.ts +115 -0
  163. package/src/SecondaryNavigationSubItem.hbs +41 -0
  164. package/src/SecondaryNavigationSubItem.ts +123 -0
  165. package/src/SelectBox.hbs +1 -0
  166. package/src/SelectBox.ts +16 -1
  167. package/src/StatusBadge.hbs +9 -0
  168. package/src/StatusBadge.ts +129 -0
  169. package/src/Tab.ts +1 -1
  170. package/src/generated/i18n/i18n-defaults.ts +2 -2
  171. package/src/generated/templates/CountrySelectorTemplate.lit.ts +1 -1
  172. package/src/generated/templates/DropdownTemplate.lit.ts +1 -1
  173. package/src/generated/templates/FilterMenuTemplate.lit.ts +3 -3
  174. package/src/generated/templates/HeroBannerTemplate.lit.ts +2 -2
  175. package/src/generated/templates/ListGroupHeaderTemplate.lit.ts +4 -4
  176. package/src/generated/templates/ListItemTemplate.lit.ts +1 -1
  177. package/src/generated/templates/ListSelectAllTemplate.lit.ts +1 -1
  178. package/src/generated/templates/SearchSuggestionsTemplate.lit.ts +1 -1
  179. package/src/generated/templates/SearchTemplate.lit.ts +2 -2
  180. package/src/generated/templates/SearchableListBaseTemplate.lit.ts +2 -2
  181. package/src/generated/templates/SecondaryNavigationItemTemplate.lit.ts +16 -0
  182. package/src/generated/templates/SecondaryNavigationSubItemTemplate.lit.ts +14 -0
  183. package/src/generated/templates/SecondaryNavigationTemplate.lit.ts +7 -10
  184. package/src/generated/templates/SelectBoxTemplate.lit.ts +1 -1
  185. package/src/generated/templates/StatusBadgeTemplate.lit.ts +10 -0
  186. package/src/generated/themes/Avatar.css.ts +1 -1
  187. package/src/generated/themes/Checkbox.css.ts +1 -1
  188. package/src/generated/themes/CountrySelector.css.ts +1 -1
  189. package/src/generated/themes/Dropdown.css.ts +1 -1
  190. package/src/generated/themes/FilterMenu.css.ts +1 -1
  191. package/src/generated/themes/HeroBanner.css.ts +1 -1
  192. package/src/generated/themes/MediaPlayer.css.ts +1 -1
  193. package/src/generated/themes/PhoneNumberField.css.ts +1 -1
  194. package/src/generated/themes/RatingIndicator.css.ts +1 -1
  195. package/src/generated/themes/Search.css.ts +1 -1
  196. package/src/generated/themes/SecondaryNavigation.css.ts +1 -1
  197. package/src/generated/themes/SecondaryNavigationItem.css.ts +13 -0
  198. package/src/generated/themes/SecondaryNavigationSubItem.css.ts +13 -0
  199. package/src/generated/themes/Slider.css.ts +1 -1
  200. package/src/generated/themes/StatusBadge.css.ts +13 -0
  201. package/src/i18n/messagebundle.properties +12 -1
  202. package/src/i18n/messagebundle_en.properties +8 -1
  203. package/src/themes/Avatar.css +20 -0
  204. package/src/themes/Checkbox.css +12 -0
  205. package/src/themes/CountrySelector.css +4 -0
  206. package/src/themes/Dropdown.css +2 -0
  207. package/src/themes/FilterMenu.css +10 -0
  208. package/src/themes/HeroBanner.css +42 -6
  209. package/src/themes/MediaPlayer.css +3 -2
  210. package/src/themes/PhoneNumberField.css +4 -0
  211. package/src/themes/Search.css +11 -7
  212. package/src/themes/SecondaryNavigation.css +44 -302
  213. package/src/themes/SecondaryNavigationItem.css +220 -0
  214. package/src/themes/SecondaryNavigationSubItem.css +118 -0
  215. package/src/themes/StatusBadge.css +135 -0
  216. package/dist/assets/messagebundle_en-26cd7a92.js +0 -1
package/dist/List.js CHANGED
@@ -11,7 +11,7 @@ import property from "@ui5/webcomponents-base/dist/decorators/property.js";
11
11
  import slot from "@ui5/webcomponents-base/dist/decorators/slot.js";
12
12
  import event from "@ui5/webcomponents-base/dist/decorators/event.js";
13
13
  import litRender from "@ui5/webcomponents-base/dist/renderer/LitRenderer.js";
14
- import { isUp, isDown, isHome, isEnd, } from "@ui5/webcomponents-base/dist/Keys.js";
14
+ import { isUp, isDown, isHome, isEnd, isEnter, isSpace, } from "@ui5/webcomponents-base/dist/Keys.js";
15
15
  import { getI18nBundle } from "@ui5/webcomponents-base/dist/i18nBundle.js";
16
16
  import getEffectiveScrollbarStyle from "@ui5/webcomponents-base/dist/util/getEffectiveScrollbarStyle.js";
17
17
  import { ListStyleType, ListMode } from "./types/List.js";
@@ -47,27 +47,21 @@ let UDExList = UDExList_1 = class UDExList extends UI5Element {
47
47
  }
48
48
  handleItemPress(e) {
49
49
  const clickedItem = e.detail.item;
50
- if (this.modeSingleSelect && !this.controlled) {
51
- this.revertSelectedItems(this.getSelectedItems());
52
- clickedItem.selected = true;
53
- }
54
- if (this.modeRadioGroup && !this.controlled) {
55
- const groupHeader = clickedItem.parentElement;
56
- const groupItems = groupHeader.getItems();
57
- this.revertSelectedItems(groupItems);
58
- clickedItem.selected = true;
59
- }
60
- this.fireEvent("selection-change", {
61
- listItems: this.getItemsFromList(),
62
- selectedItems: this.getSelectedItems(),
63
- item: clickedItem,
64
- });
50
+ this.onItemPress(clickedItem);
65
51
  }
66
52
  handleKeyDown(e) {
67
53
  this.handleUpArrow(e);
68
54
  this.handleDownArrow(e);
69
55
  this.handleHomeKey(e);
70
56
  this.handleEndKey(e);
57
+ this.handleEnterOrSpace(e);
58
+ }
59
+ handleEnterOrSpace(e) {
60
+ if (isEnter(e) || isSpace(e)) {
61
+ e.preventDefault();
62
+ const clickedItem = e.target;
63
+ this.onItemPress(clickedItem);
64
+ }
71
65
  }
72
66
  handleUpArrow(e) {
73
67
  if (isUp(e)) {
@@ -79,17 +73,25 @@ let UDExList = UDExList_1 = class UDExList extends UI5Element {
79
73
  const isHeaderItem = items[previousSelectIndex].isGroup;
80
74
  const nonInteractiveHeader = items[previousSelectIndex].nonInteractive;
81
75
  if (nonInteractiveHeader && previousSelectIndex === 0) {
76
+ this.unsetTabIndexByIndex(items, currentSelectedIndex);
77
+ this.setTabIndexByIndex(items, lastItemIndex);
82
78
  items[lastItemIndex].focus();
83
79
  return;
84
80
  }
85
81
  if (nonInteractiveHeader) {
82
+ this.unsetTabIndexByIndex(items, currentSelectedIndex);
83
+ this.setTabIndexByIndex(items, previousSelectIndex - 1);
86
84
  items[previousSelectIndex - 1].focus();
87
85
  return;
88
86
  }
89
87
  if (isHeaderItem) {
88
+ this.unsetTabIndexByIndex(items, currentSelectedIndex);
89
+ this.setTabIndexByIndex(items, previousSelectIndex);
90
90
  this.focusHeader(items[previousSelectIndex]);
91
91
  return;
92
92
  }
93
+ this.unsetTabIndexByIndex(items, currentSelectedIndex);
94
+ this.setTabIndexByIndex(items, previousSelectIndex);
93
95
  items[previousSelectIndex].focus();
94
96
  }
95
97
  }
@@ -102,13 +104,19 @@ let UDExList = UDExList_1 = class UDExList extends UI5Element {
102
104
  const isHeaderItem = items[nextSelectIndex].isGroup;
103
105
  const nonInteractiveHeader = items[nextSelectIndex].nonInteractive;
104
106
  if (nonInteractiveHeader) {
107
+ this.unsetTabIndexByIndex(items, currentSelectedIndex);
108
+ this.setTabIndexByIndex(items, nextSelectIndex + 1);
105
109
  items[nextSelectIndex + 1].focus();
106
110
  return;
107
111
  }
108
112
  if (isHeaderItem) {
113
+ this.unsetTabIndexByIndex(items, currentSelectedIndex);
114
+ this.setTabIndexByIndex(items, nextSelectIndex);
109
115
  this.focusHeader(items[nextSelectIndex]);
110
116
  return;
111
117
  }
118
+ this.unsetTabIndexByIndex(items, currentSelectedIndex);
119
+ this.setTabIndexByIndex(items, nextSelectIndex);
112
120
  items[nextSelectIndex].focus();
113
121
  }
114
122
  }
@@ -116,17 +124,24 @@ let UDExList = UDExList_1 = class UDExList extends UI5Element {
116
124
  if (isHome(e)) {
117
125
  e.preventDefault();
118
126
  const items = this.getKeyboardNavigationItems();
127
+ const currentSelectedIndex = this.getCurrentIndex(items, e.target);
119
128
  const firstItem = items[0];
120
129
  const isHeaderItem = firstItem.isGroup;
121
130
  const nonInteractiveItem = firstItem.nonInteractive;
122
131
  if (nonInteractiveItem) {
132
+ this.unsetTabIndexByIndex(items, currentSelectedIndex);
133
+ this.setTabIndexByIndex(items, 1);
123
134
  items[1].focus();
124
135
  return;
125
136
  }
126
137
  if (isHeaderItem) {
138
+ this.unsetTabIndexByIndex(items, currentSelectedIndex);
139
+ this.setTabIndexByIndex(items, 0);
127
140
  this.focusHeader(items[0]);
128
141
  return;
129
142
  }
143
+ this.unsetTabIndexByIndex(items, currentSelectedIndex);
144
+ this.setTabIndexByIndex(items, 0);
130
145
  items[0].focus();
131
146
  }
132
147
  }
@@ -134,9 +149,31 @@ let UDExList = UDExList_1 = class UDExList extends UI5Element {
134
149
  if (isEnd(e)) {
135
150
  e.preventDefault();
136
151
  const items = this.getKeyboardNavigationItems();
152
+ const currentSelectedIndex = this.getCurrentIndex(items, e.target);
153
+ this.unsetTabIndexByIndex(items, currentSelectedIndex);
154
+ this.setTabIndexByIndex(items, items.length - 1);
137
155
  items[items.length - 1].focus();
138
156
  }
139
157
  }
158
+ onItemPress(clickedItem) {
159
+ if (this.modeSingleSelect && !this.controlled) {
160
+ this.revertSelectedItems(this.getSelectedItems());
161
+ clickedItem.selected = true;
162
+ }
163
+ if (this.modeRadioGroup && !this.controlled) {
164
+ const groupHeader = clickedItem.parentElement;
165
+ const groupItems = groupHeader.getItems();
166
+ this.revertSelectedItems(groupItems);
167
+ clickedItem.selected = true;
168
+ }
169
+ this.resetTabIndexes();
170
+ clickedItem._tabIndex = "0";
171
+ this.fireEvent("selection-change", {
172
+ listItems: this.getItemsFromList(),
173
+ selectedItems: this.getSelectedItems(),
174
+ item: clickedItem,
175
+ });
176
+ }
140
177
  revertSelectedItems(items) {
141
178
  items.forEach((item) => {
142
179
  if (!item.disabled) {
@@ -148,6 +185,12 @@ let UDExList = UDExList_1 = class UDExList extends UI5Element {
148
185
  const header = item.shadowRoot?.querySelector(".udex-list__group-header");
149
186
  header.focus();
150
187
  }
188
+ unsetTabIndexByIndex(items, index) {
189
+ items[index]._tabIndex = "-1";
190
+ }
191
+ setTabIndexByIndex(items, index) {
192
+ items[index]._tabIndex = "0";
193
+ }
151
194
  getItems() {
152
195
  return this.getSlottedNodes("items");
153
196
  }
@@ -174,14 +217,31 @@ let UDExList = UDExList_1 = class UDExList extends UI5Element {
174
217
  return items;
175
218
  }
176
219
  prepareListItemsMode() {
177
- const slottedItems = this.getItemsFromList();
178
- slottedItems.forEach(item => {
220
+ this.getItemsFromList().forEach((item, index) => {
179
221
  item.mode = this.mode;
180
222
  item.controlled = this.controlled;
181
223
  item.type = this.type;
182
224
  item._icon = this.itemIcon;
225
+ item._tabIndex = this.getTabIndex(index, item);
183
226
  });
184
227
  }
228
+ getTabIndex(index, item) {
229
+ if ((item.modeSingleSelect || this.modeRadioGroup) && this.isGroupList && index === 1) {
230
+ return "0";
231
+ }
232
+ if (this.modeSelected && index === 0) {
233
+ return "0";
234
+ }
235
+ return "-1";
236
+ }
237
+ resetTabIndexes() {
238
+ this.getItemsFromList().forEach(item => {
239
+ item._tabIndex = "-1";
240
+ });
241
+ }
242
+ get isGroupList() {
243
+ return this.getItemsFromList().some(item => item.isGroup);
244
+ }
185
245
  get ariaLabelModeText() {
186
246
  if (this.modeSingleSelect || this.modeRadioGroup) {
187
247
  return UDExList_1.i18nBundle.getText(ARIA_LABEL_LIST_SELECTABLE);
package/dist/List.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"List.js","sourceRoot":"","sources":["../src/List.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 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.js\";\nimport litRender from \"@ui5/webcomponents-base/dist/renderer/LitRenderer.js\";\nimport {\n isUp,\n isDown,\n isHome,\n isEnd,\n} from \"@ui5/webcomponents-base/dist/Keys.js\";\nimport { getI18nBundle } from \"@ui5/webcomponents-base/dist/i18nBundle.js\";\nimport type I18nBundle from \"@ui5/webcomponents-base/dist/i18nBundle.js\";\nimport getEffectiveScrollbarStyle from \"@ui5/webcomponents-base/dist/util/getEffectiveScrollbarStyle.js\";\nimport UDExListItem from \"./ListItem.js\";\nimport { ListStyleType, ListMode } from \"./types/List.js\";\nimport UDExListGroupHeader from \"./ListGroupHeader.js\";\nimport UDExListGroupHeaderBase from \"./ListGroupHeaderBase.js\";\nimport {\n ARIA_LABEL_LIST_MULTISELECTABLE,\n ARIA_LABEL_LIST_SELECTABLE,\n} from \"./generated/i18n/i18n-defaults.js\";\nimport ListTemplate from \"./generated/templates/ListTemplate.lit.js\";\n\n// Styles\nimport ListCss from \"./generated/themes/List.css.js\";\n\nexport type UDExListItemBase = UDExListItem & UDExListGroupHeader;\n/**\n * @class\n *\n * <h3 class=\"comment-api-title\">Overview</h3>\n *\\e\n *\n * <h3>Usage</h3>\n *\n * For the <code>udex-list</code>\n * <h3>ES6 Module Import</h3>\n *\n * <code>import @udex/web-components/dist/List.js\";</code>\n *\n * @constructor\n * @author SAP SE\n * @extends UI5Element\n * @tagname udex-list\n * @public\n */\n@customElement({\n tag: \"udex-list\",\n renderer: litRender,\n styles: [ListCss, getEffectiveScrollbarStyle()],\n template: ListTemplate,\n dependencies: [],\n})\n\n@event(\"selection-change\", {\n detail: {\n listItems: { type: Array },\n selectedItems: { type: Array },\n item: { type: HTMLElement },\n },\n})\n\nclass UDExList extends UI5Element {\n /**\n * Defines the accessible role of the component.\n *\n * @default \"list\"\n * @public\n */\n @property({ defaultValue: \"list\" })\n accessibleRole!: string;\n\n /**\n * Defines the accessible name of the component.\n *\n * @default \"\"\n * @public\n */\n @property()\n accessibleName!: string;\n\n /**\n * Defines the mode of the component.\n *\n * @default \"SingleSelect\"\n * @public\n */\n @property({ type: ListMode, defaultValue: ListMode.SingleSelect })\n mode!: `${ListMode}`;\n\n /**\n * Defines the type of the item.\n *\n * @defaultvalue \"None\"\n * @public\n */\n @property({ type: ListStyleType, defaultValue: ListStyleType.None })\n type!: `${ListStyleType}`;\n\n /**\n * Allows control over the height.\n *\n * @public\n */\n @property({ type: String })\n height?: string;\n\n /**\n * Defines the controlled of the component.\n *\n * @default false\n * @public\n */\n @property({ type: Boolean })\n controlled?: boolean;\n\n /**\n * Defines the headerText, displayed in the top of the list.\n *\n * @public\n */\n @property({ type: String })\n headerText?: string;\n\n /**\n * Defines the name of the UI5 Icon, that will be displayed for each item of the list.\n *\n * @defaultvalue \"\"\n * @private\n */\n @property({ type: String, defaultValue: \"\" })\n itemIcon?: string;\n\n /**\n * Slot for list items.\n *\n * @slot items\n * @public\n */\n @slot({ type: HTMLElement, \"default\": true })\n items!: Array<UDExListItemBase>;\n\n static i18nBundle: I18nBundle;\n\n static async onDefine(): Promise<void> {\n UDExList.i18nBundle = await getI18nBundle(\"sap-ui-webcomponents-bundle\");\n }\n\n onBeforeRendering() {\n this.prepareListItemsMode();\n }\n\n handleItemPress(e: CustomEvent) {\n const clickedItem: UDExListItemBase = e.detail.item;\n\n if (this.modeSingleSelect && !this.controlled) {\n this.revertSelectedItems(this.getSelectedItems());\n clickedItem.selected = true;\n }\n\n if (this.modeRadioGroup && !this.controlled) {\n const groupHeader = clickedItem.parentElement as UDExListGroupHeaderBase;\n const groupItems = groupHeader.getItems() as Array<UDExListItemBase>;\n this.revertSelectedItems(groupItems);\n\n clickedItem.selected = true;\n }\n\n this.fireEvent(\"selection-change\", {\n listItems: this.getItemsFromList(),\n selectedItems: this.getSelectedItems(),\n item: clickedItem,\n });\n }\n\n handleKeyDown(e: KeyboardEvent) {\n this.handleUpArrow(e);\n this.handleDownArrow(e);\n this.handleHomeKey(e);\n this.handleEndKey(e);\n }\n\n handleUpArrow(e: KeyboardEvent) {\n if (isUp(e)) {\n e.preventDefault();\n const items = this.getKeyboardNavigationItems();\n const currentSelectedIndex = this.getCurrentIndex(items, e.target as UDExListItemBase);\n const lastItemIndex = items.length - 1;\n const previousSelectIndex = currentSelectedIndex - 1 < 0 ? lastItemIndex : currentSelectedIndex - 1;\n const isHeaderItem = items[previousSelectIndex].isGroup;\n const nonInteractiveHeader = items[previousSelectIndex].nonInteractive;\n\n if (nonInteractiveHeader && previousSelectIndex === 0) {\n items[lastItemIndex].focus();\n return;\n }\n\n if (nonInteractiveHeader) {\n items[previousSelectIndex - 1].focus();\n return;\n }\n\n if (isHeaderItem) {\n this.focusHeader(items[previousSelectIndex]);\n return;\n }\n\n items[previousSelectIndex].focus();\n }\n }\n\n handleDownArrow(e: KeyboardEvent) {\n if (isDown(e)) {\n e.preventDefault();\n const items = this.getKeyboardNavigationItems();\n const currentSelectedIndex = this.getCurrentIndex(items, e.target as UDExListItemBase);\n const nextSelectIndex = currentSelectedIndex + 1 > items.length - 1 ? 0 : currentSelectedIndex + 1;\n const isHeaderItem = items[nextSelectIndex].isGroup;\n const nonInteractiveHeader = items[nextSelectIndex].nonInteractive;\n\n if (nonInteractiveHeader) {\n items[nextSelectIndex + 1].focus();\n return;\n }\n\n if (isHeaderItem) {\n this.focusHeader(items[nextSelectIndex]);\n return;\n }\n\n items[nextSelectIndex].focus();\n }\n }\n\n handleHomeKey(e: KeyboardEvent) {\n if (isHome(e)) {\n e.preventDefault();\n const items = this.getKeyboardNavigationItems();\n const firstItem = items[0];\n const isHeaderItem = firstItem.isGroup;\n const nonInteractiveItem = firstItem.nonInteractive;\n\n if (nonInteractiveItem) {\n items[1].focus();\n return;\n }\n\n if (isHeaderItem) {\n this.focusHeader(items[0]);\n return;\n }\n\n items[0].focus();\n }\n }\n\n handleEndKey(e: KeyboardEvent) {\n if (isEnd(e)) {\n e.preventDefault();\n const items = this.getKeyboardNavigationItems();\n items[items.length - 1].focus();\n }\n }\n\n revertSelectedItems(items: Array<UDExListItemBase>) {\n items.forEach((item: UDExListItemBase) => {\n if (!item.disabled) {\n item.selected = false;\n }\n });\n }\n\n focusHeader(item: UDExListItemBase) {\n const header = item.shadowRoot?.querySelector(\".udex-list__group-header\") as HTMLElement;\n header.focus();\n }\n\n getItems(): Array<UDExListItemBase> {\n return this.getSlottedNodes<UDExListItemBase>(\"items\");\n }\n\n getSelectedItems(): Array<UDExListItemBase> {\n return this.getItemsFromList().filter(item => item.selected);\n }\n\n getCurrentIndex(items: Array<UDExListItemBase>, item: UDExListItemBase): number {\n return items.indexOf(item);\n }\n\n getItemsWithoutHeader(): Array<UDExListItemBase> {\n return this.getItemsFromList().filter(item => !item.isGroup);\n }\n\n getKeyboardNavigationItems(): Array<UDExListItemBase> {\n const items = this.modeMultiSelect ? this.getItemsFromList() : this.getItemsWithoutHeader();\n return items.filter(item => !item.disabled);\n }\n\n getItemsFromList(): Array<UDExListItemBase> {\n const items: UDExListItemBase[] = [];\n const slottedItems = this.getItems();\n\n slottedItems.forEach(item => {\n const childItems = item.isGroup ? item.children : [];\n items.push(item, ...childItems as UDExListItemBase[]);\n });\n\n return items;\n }\n\n prepareListItemsMode() {\n const slottedItems = this.getItemsFromList();\n slottedItems.forEach(item => {\n item.mode = this.mode;\n item.controlled = this.controlled;\n item.type = this.type;\n item._icon = this.itemIcon;\n });\n }\n\n get ariaLabelModeText(): string {\n if (this.modeSingleSelect || this.modeRadioGroup) {\n return UDExList.i18nBundle.getText(ARIA_LABEL_LIST_SELECTABLE);\n }\n return UDExList.i18nBundle.getText(ARIA_LABEL_LIST_MULTISELECTABLE);\n }\n\n get ariaLabelledBy() {\n return `${this._id}-mode-label`;\n }\n\n get modeRadioGroup() {\n return this.mode === ListMode.RadioGroup;\n }\n\n get modeMultiSelect() {\n return this.mode === ListMode.MultiSelect;\n }\n\n get modeSingleSelect() {\n return this.mode === ListMode.SingleSelect;\n }\n\n get modeSingleContent() {\n return this.mode === ListMode.SingleContent;\n }\n\n get modeSelected() {\n return [ListMode.SingleSelect, ListMode.MultiSelect, ListMode.RadioGroup].includes(this.mode as ListMode);\n }\n\n get holderHeight() {\n return this.height ? this.height : \"auto\";\n }\n}\n\nUDExList.define();\n\nexport default UDExList;\n"]}
1
+ {"version":3,"file":"List.js","sourceRoot":"","sources":["../src/List.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 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.js\";\nimport litRender from \"@ui5/webcomponents-base/dist/renderer/LitRenderer.js\";\nimport {\n isUp,\n isDown,\n isHome,\n isEnd,\n isEnter,\n isSpace,\n} from \"@ui5/webcomponents-base/dist/Keys.js\";\nimport { getI18nBundle } from \"@ui5/webcomponents-base/dist/i18nBundle.js\";\nimport type I18nBundle from \"@ui5/webcomponents-base/dist/i18nBundle.js\";\nimport getEffectiveScrollbarStyle from \"@ui5/webcomponents-base/dist/util/getEffectiveScrollbarStyle.js\";\nimport UDExListItem from \"./ListItem.js\";\nimport { ListStyleType, ListMode } from \"./types/List.js\";\nimport UDExListGroupHeader from \"./ListGroupHeader.js\";\nimport UDExListGroupHeaderBase from \"./ListGroupHeaderBase.js\";\nimport {\n ARIA_LABEL_LIST_MULTISELECTABLE,\n ARIA_LABEL_LIST_SELECTABLE,\n} from \"./generated/i18n/i18n-defaults.js\";\nimport ListTemplate from \"./generated/templates/ListTemplate.lit.js\";\n\n// Styles\nimport ListCss from \"./generated/themes/List.css.js\";\n\nexport type UDExListItemBase = UDExListItem & UDExListGroupHeader;\n/**\n * @class\n *\n * <h3 class=\"comment-api-title\">Overview</h3>\n *\\e\n *\n * <h3>Usage</h3>\n *\n * For the <code>udex-list</code>\n * <h3>ES6 Module Import</h3>\n *\n * <code>import @udex/web-components/dist/List.js\";</code>\n *\n * @constructor\n * @author SAP SE\n * @extends UI5Element\n * @tagname udex-list\n * @public\n */\n@customElement({\n tag: \"udex-list\",\n renderer: litRender,\n styles: [ListCss, getEffectiveScrollbarStyle()],\n template: ListTemplate,\n dependencies: [],\n})\n\n@event(\"selection-change\", {\n detail: {\n listItems: { type: Array },\n selectedItems: { type: Array },\n item: { type: HTMLElement },\n },\n})\n\nclass UDExList extends UI5Element {\n /**\n * Defines the accessible role of the component.\n *\n * @default \"list\"\n * @public\n */\n @property({ defaultValue: \"list\" })\n accessibleRole!: string;\n\n /**\n * Defines the accessible name of the component.\n *\n * @default \"\"\n * @public\n */\n @property()\n accessibleName!: string;\n\n /**\n * Defines the mode of the component.\n *\n * @default \"SingleSelect\"\n * @public\n */\n @property({ type: ListMode, defaultValue: ListMode.SingleSelect })\n mode!: `${ListMode}`;\n\n /**\n * Defines the type of the item.\n *\n * @defaultvalue \"None\"\n * @public\n */\n @property({ type: ListStyleType, defaultValue: ListStyleType.None })\n type!: `${ListStyleType}`;\n\n /**\n * Allows control over the height.\n *\n * @public\n */\n @property({ type: String })\n height?: string;\n\n /**\n * Defines the controlled of the component.\n *\n * @default false\n * @public\n */\n @property({ type: Boolean })\n controlled?: boolean;\n\n /**\n * Defines the headerText, displayed in the top of the list.\n *\n * @public\n */\n @property({ type: String })\n headerText?: string;\n\n /**\n * Defines the name of the UI5 Icon, that will be displayed for each item of the list.\n *\n * @defaultvalue \"\"\n * @private\n */\n @property({ type: String, defaultValue: \"\" })\n itemIcon?: string;\n\n /**\n * Slot for list items.\n *\n * @slot items\n * @public\n */\n @slot({ type: HTMLElement, \"default\": true })\n items!: Array<UDExListItemBase>;\n\n static i18nBundle: I18nBundle;\n\n static async onDefine(): Promise<void> {\n UDExList.i18nBundle = await getI18nBundle(\"sap-ui-webcomponents-bundle\");\n }\n\n onBeforeRendering() {\n this.prepareListItemsMode();\n }\n\n handleItemPress(e: CustomEvent) {\n const clickedItem: UDExListItemBase = e.detail.item;\n this.onItemPress(clickedItem);\n }\n\n handleKeyDown(e: KeyboardEvent) {\n this.handleUpArrow(e);\n this.handleDownArrow(e);\n this.handleHomeKey(e);\n this.handleEndKey(e);\n this.handleEnterOrSpace(e);\n }\n\n handleEnterOrSpace(e: KeyboardEvent) {\n if (isEnter(e) || isSpace(e)) {\n e.preventDefault();\n const clickedItem = e.target as UDExListItemBase;\n this.onItemPress(clickedItem);\n }\n }\n\n handleUpArrow(e: KeyboardEvent) {\n if (isUp(e)) {\n e.preventDefault();\n const items = this.getKeyboardNavigationItems();\n const currentSelectedIndex = this.getCurrentIndex(items, e.target as UDExListItemBase);\n const lastItemIndex = items.length - 1;\n const previousSelectIndex = currentSelectedIndex - 1 < 0 ? lastItemIndex : currentSelectedIndex - 1;\n const isHeaderItem = items[previousSelectIndex].isGroup;\n const nonInteractiveHeader = items[previousSelectIndex].nonInteractive;\n\n if (nonInteractiveHeader && previousSelectIndex === 0) {\n this.unsetTabIndexByIndex(items, currentSelectedIndex);\n this.setTabIndexByIndex(items, lastItemIndex);\n items[lastItemIndex].focus();\n return;\n }\n\n if (nonInteractiveHeader) {\n this.unsetTabIndexByIndex(items, currentSelectedIndex);\n this.setTabIndexByIndex(items, previousSelectIndex - 1);\n items[previousSelectIndex - 1].focus();\n return;\n }\n\n if (isHeaderItem) {\n this.unsetTabIndexByIndex(items, currentSelectedIndex);\n this.setTabIndexByIndex(items, previousSelectIndex);\n this.focusHeader(items[previousSelectIndex]);\n return;\n }\n\n this.unsetTabIndexByIndex(items, currentSelectedIndex);\n this.setTabIndexByIndex(items, previousSelectIndex);\n items[previousSelectIndex].focus();\n }\n }\n\n handleDownArrow(e: KeyboardEvent) {\n if (isDown(e)) {\n e.preventDefault();\n const items = this.getKeyboardNavigationItems();\n const currentSelectedIndex = this.getCurrentIndex(items, e.target as UDExListItemBase);\n const nextSelectIndex = currentSelectedIndex + 1 > items.length - 1 ? 0 : currentSelectedIndex + 1;\n const isHeaderItem = items[nextSelectIndex].isGroup;\n const nonInteractiveHeader = items[nextSelectIndex].nonInteractive;\n\n if (nonInteractiveHeader) {\n this.unsetTabIndexByIndex(items, currentSelectedIndex);\n this.setTabIndexByIndex(items, nextSelectIndex + 1);\n items[nextSelectIndex + 1].focus();\n return;\n }\n\n if (isHeaderItem) {\n this.unsetTabIndexByIndex(items, currentSelectedIndex);\n this.setTabIndexByIndex(items, nextSelectIndex);\n this.focusHeader(items[nextSelectIndex]);\n return;\n }\n\n this.unsetTabIndexByIndex(items, currentSelectedIndex);\n this.setTabIndexByIndex(items, nextSelectIndex);\n items[nextSelectIndex].focus();\n }\n }\n\n handleHomeKey(e: KeyboardEvent) {\n if (isHome(e)) {\n e.preventDefault();\n const items = this.getKeyboardNavigationItems();\n const currentSelectedIndex = this.getCurrentIndex(items, e.target as UDExListItemBase);\n const firstItem = items[0];\n const isHeaderItem = firstItem.isGroup;\n const nonInteractiveItem = firstItem.nonInteractive;\n\n if (nonInteractiveItem) {\n this.unsetTabIndexByIndex(items, currentSelectedIndex);\n this.setTabIndexByIndex(items, 1);\n items[1].focus();\n return;\n }\n\n if (isHeaderItem) {\n this.unsetTabIndexByIndex(items, currentSelectedIndex);\n this.setTabIndexByIndex(items, 0);\n this.focusHeader(items[0]);\n return;\n }\n\n this.unsetTabIndexByIndex(items, currentSelectedIndex);\n this.setTabIndexByIndex(items, 0);\n items[0].focus();\n }\n }\n\n handleEndKey(e: KeyboardEvent) {\n if (isEnd(e)) {\n e.preventDefault();\n const items = this.getKeyboardNavigationItems();\n const currentSelectedIndex = this.getCurrentIndex(items, e.target as UDExListItemBase);\n\n this.unsetTabIndexByIndex(items, currentSelectedIndex);\n this.setTabIndexByIndex(items, items.length - 1);\n items[items.length - 1].focus();\n }\n }\n\n onItemPress(clickedItem :UDExListItemBase) {\n if (this.modeSingleSelect && !this.controlled) {\n this.revertSelectedItems(this.getSelectedItems());\n clickedItem.selected = true;\n }\n\n if (this.modeRadioGroup && !this.controlled) {\n const groupHeader = clickedItem.parentElement as UDExListGroupHeaderBase;\n const groupItems = groupHeader.getItems() as Array<UDExListItemBase>;\n this.revertSelectedItems(groupItems);\n clickedItem.selected = true;\n }\n\n this.resetTabIndexes();\n clickedItem._tabIndex = \"0\";\n\n this.fireEvent(\"selection-change\", {\n listItems: this.getItemsFromList(),\n selectedItems: this.getSelectedItems(),\n item: clickedItem,\n });\n }\n\n revertSelectedItems(items: Array<UDExListItemBase>) {\n items.forEach((item: UDExListItemBase) => {\n if (!item.disabled) {\n item.selected = false;\n }\n });\n }\n\n focusHeader(item: UDExListItemBase) {\n const header = item.shadowRoot?.querySelector(\".udex-list__group-header\") as HTMLElement;\n header.focus();\n }\n\n unsetTabIndexByIndex(items: UDExListItemBase[], index: number) {\n items[index]._tabIndex = \"-1\";\n }\n\n setTabIndexByIndex(items: UDExListItemBase[], index: number) {\n items[index]._tabIndex = \"0\";\n }\n\n getItems(): Array<UDExListItemBase> {\n return this.getSlottedNodes<UDExListItemBase>(\"items\");\n }\n\n getSelectedItems(): Array<UDExListItemBase> {\n return this.getItemsFromList().filter(item => item.selected);\n }\n\n getCurrentIndex(items: Array<UDExListItemBase>, item: UDExListItemBase): number {\n return items.indexOf(item);\n }\n\n getItemsWithoutHeader(): Array<UDExListItemBase> {\n return this.getItemsFromList().filter(item => !item.isGroup);\n }\n\n getKeyboardNavigationItems(): Array<UDExListItemBase> {\n const items = this.modeMultiSelect ? this.getItemsFromList() : this.getItemsWithoutHeader();\n return items.filter(item => !item.disabled);\n }\n\n getItemsFromList(): Array<UDExListItemBase> {\n const items: UDExListItemBase[] = [];\n const slottedItems = this.getItems();\n\n slottedItems.forEach(item => {\n const childItems = item.isGroup ? item.children : [];\n items.push(item, ...childItems as UDExListItemBase[]);\n });\n\n return items;\n }\n\n prepareListItemsMode() {\n this.getItemsFromList().forEach((item, index) => {\n item.mode = this.mode;\n item.controlled = this.controlled;\n item.type = this.type;\n item._icon = this.itemIcon;\n item._tabIndex = this.getTabIndex(index, item);\n });\n }\n\n getTabIndex(index: number, item: UDExListItemBase): string {\n if ((item.modeSingleSelect || this.modeRadioGroup) && this.isGroupList && index === 1) {\n return \"0\";\n }\n\n if (this.modeSelected && index === 0) {\n return \"0\";\n }\n\n return \"-1\";\n }\n\n resetTabIndexes() {\n this.getItemsFromList().forEach(item => {\n item._tabIndex = \"-1\";\n });\n }\n\n get isGroupList(): boolean {\n return this.getItemsFromList().some(item => item.isGroup);\n }\n\n get ariaLabelModeText(): string {\n if (this.modeSingleSelect || this.modeRadioGroup) {\n return UDExList.i18nBundle.getText(ARIA_LABEL_LIST_SELECTABLE);\n }\n return UDExList.i18nBundle.getText(ARIA_LABEL_LIST_MULTISELECTABLE);\n }\n\n get ariaLabelledBy() {\n return `${this._id}-mode-label`;\n }\n\n get modeRadioGroup() {\n return this.mode === ListMode.RadioGroup;\n }\n\n get modeMultiSelect() {\n return this.mode === ListMode.MultiSelect;\n }\n\n get modeSingleSelect() {\n return this.mode === ListMode.SingleSelect;\n }\n\n get modeSingleContent() {\n return this.mode === ListMode.SingleContent;\n }\n\n get modeSelected() {\n return [ListMode.SingleSelect, ListMode.MultiSelect, ListMode.RadioGroup].includes(this.mode as ListMode);\n }\n\n get holderHeight() {\n return this.height ? this.height : \"auto\";\n }\n}\n\nUDExList.define();\n\nexport default UDExList;\n"]}
@@ -141,7 +141,6 @@ declare class UDExListItem extends UDExListItemBase {
141
141
  get className(): string;
142
142
  get roleItem(): string;
143
143
  get _ariaDisabled(): true | undefined;
144
- get _tabIndex(): -1 | 0;
145
144
  get modeSingleContent(): boolean;
146
145
  get modeRadioGroup(): boolean;
147
146
  get modeSelected(): boolean;
package/dist/ListItem.js CHANGED
@@ -155,12 +155,6 @@ let UDExListItem = UDExListItem_1 = class UDExListItem extends UDExListItemBase
155
155
  get _ariaDisabled() {
156
156
  return this.disabled ? true : undefined;
157
157
  }
158
- get _tabIndex() {
159
- if (this.disabled) {
160
- return -1;
161
- }
162
- return 0;
163
- }
164
158
  get modeSingleContent() {
165
159
  return this.mode === ListMode.SingleContent;
166
160
  }
@@ -1 +1 @@
1
- {"version":3,"file":"ListItem.js","sourceRoot":"","sources":["../src/ListItem.ts"],"names":[],"mappings":"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","sourcesContent":["import customElement from \"@ui5/webcomponents-base/dist/decorators/customElement.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.js\";\nimport litRender from \"@ui5/webcomponents-base/dist/renderer/LitRenderer.js\";\nimport { isEnter, isSpace } from \"@ui5/webcomponents-base/dist/Keys.js\";\nimport Icon from \"@ui5/webcomponents/dist/Icon.js\";\nimport { isDesktop } from \"@ui5/webcomponents-base/dist/Device.js\";\nimport I18nBundle, { getI18nBundle } from \"@ui5/webcomponents-base/dist/i18nBundle.js\";\nimport UDExCheckbox from \"./Checkbox.js\";\nimport UDExListItemBase from \"./ListItemBase.js\";\nimport UDExListGroupHeaderBase from \"./ListGroupHeaderBase.js\";\nimport UDExAvatar, { AvatarShape, AvatarSize } from \"./Avatar.js\";\nimport UDExButton from \"./Button.js\";\nimport {\n ListItemSize, ListMode, AdditionalTextState,\n} from \"./types/List.js\";\nimport UDExRadioButton from \"./RadioButton.js\";\nimport {\n DELETE_BUTTON, EDIT_BUTTON, INDETERMINATE, SELECTED, UNSELECTED,\n} from \"./generated/i18n/i18n-defaults.js\";\n\nimport ListItemTemplate from \"./generated/templates/ListItemTemplate.lit.js\";\n\n// Styles\nimport ListItemCss from \"./generated/themes/ListItem.css.js\";\n\n/**\n * @class\n *\n * <h3 class=\"comment-api-title\">Overview</h3>\n *\n *\n * <h3>Usage</h3>\n *\n * For the <code>udex-list-item</code>\n * <h3>ES6 Module Import</h3>\n *\n * <code>import @udex/web-components/dist/ListItem.js\";</code>\n *\n * @constructor\n * @author SAP SE\n * @extends UDExListItemBase\n * @tagname udex-list-item\n * @public\n */\n\n@customElement({\n tag: \"udex-list-item\",\n renderer: litRender,\n styles: ListItemCss,\n template: ListItemTemplate,\n dependencies: [\n UDExAvatar,\n UDExButton,\n UDExRadioButton,\n UDExCheckbox,\n Icon,\n ],\n})\n\n/**\n * Fired event when the user click on a list item.\n *\n * @event sap.ui.webc.web-components.UDExListItem#itemPress\n * @public\n */\n@event(\"item-press\", {\n detail: {\n selected: { type: Boolean },\n item: { type: HTMLElement },\n },\n})\n/**\n * Fired event when the user focuses on a list item.\n *\n * @event sap.ui.webc.web-components.UDExListItem#itemFocus\n * @public\n */\n@event(\"item-focus\", {\n detail: {\n item: { type: HTMLElement },\n },\n})\n/**\n * Fired event when the user click on the delete icon.\n *\n * @event sap.ui.webc.web-components.UDExListItem#deletePress\n * @public\n */\n@event(\"delete-press\", {\n detail: {\n item: { type: HTMLElement },\n },\n})\n/**\n * Fired event when the user click on the edit icon.\n *\n * @event sap.ui.webc.web-components.UDExListItem#editPress\n * @public\n */\n@event(\"edit-press\", {\n detail: {\n item: { type: HTMLElement },\n },\n})\n\nclass UDExListItem extends UDExListItemBase {\n /**\n * Defines the accessible name of the item.\n *\n * @defaultvalue \"\"\n * @public\n */\n @property()\n accessibleName?: string;\n\n /**\n * Defines the position for flag image.\n *\n * @public\n */\n @property({ type: String })\n flagPosition?: string;\n\n /**\n * Defines the image, displayed at the start of the item.\n *\n * @public\n */\n @property({ type: Boolean })\n flag?: boolean;\n\n /**\n * Indicates if the item is active.\n *\n * @private\n */\n @property({ type: Boolean })\n active!: boolean;\n\n /**\n * Indicates if the item is on focus\n *\n * @private\n */\n @property({ type: Boolean })\n focused!: boolean;\n\n /**\n * Defines the additionalText, displayed at the end of the list item.\n *\n * @public\n */\n @property({ type: String })\n additionalText?: string;\n\n /**\n * Defines the state of the additionalText.\n *\n * @defaultvalue \"Circle\"\n * @public\n */\n @property({ type: AdditionalTextState, defaultValue: AdditionalTextState.None })\n additionalTextState?: `${AdditionalTextState}`;\n\n /**\n * Allows control over the image source.\n *\n * @public\n */\n @property({ type: String })\n image?: string;\n\n /**\n * Allows control over the alternative text of the image.\n *\n * @public\n */\n @property({ type: String })\n imageAlt?: string;\n\n /**\n * Defines the shape of the image.\n *\n * @defaultvalue \"Circle\"\n * @public\n */\n @property({ type: AvatarShape, defaultValue: AvatarShape.Circle })\n imageShape?: `${AvatarShape}`;\n\n /**\n * Allows control over the size of the image.\n *\n * @defaultvalue \"S\"\n * @public\n */\n @property({ type: AvatarSize, defaultValue: AvatarSize.S })\n imageSize!: `${AvatarSize}`;\n\n /**\n * Defines the name of the edit icon, displayed in the end of the list item.\n *\n * @defaultvalue \"\"\n * @public\n */\n @property({ type: String, defaultValue: \"\" })\n editIcon?: string;\n\n /**\n * Defines the name of the delete icon, displayed in the end of the list item.\n *\n * @defaultvalue \"\"\n * @public\n */\n @property({ type: String, defaultValue: \"\" })\n deleteIcon?: string;\n\n /**\n * Slot for list item content.\n *\n * @slot\n * @public\n */\n @slot({ type: Node, \"default\": true })\n content!: Array<Node>;\n\n /**\n * Defines the role attribute of component\n *\n * @public\n */\n @property({ type: String })\n accessibleRole!: string;\n\n @property({ type: String })\n _additionalClassName!: string;\n\n deactivate: () => void;\n\n static i18nBundle: I18nBundle;\n\n constructor() {\n super();\n\n this.deactivate = () => {\n if (this.active) {\n this.active = false;\n }\n };\n }\n\n static async onDefine(): Promise<void> {\n UDExListItem.i18nBundle = await getI18nBundle(\"sap-ui-webcomponents-bundle\");\n }\n\n onEnterDOM() {\n document.addEventListener(\"mouseup\", this.deactivate);\n if (isDesktop()) {\n this.setAttribute(\"desktop\", \"\");\n }\n }\n\n onExitDOM() {\n document.removeEventListener(\"mouseup\", this.deactivate);\n }\n\n handleMouseDown() {\n this.activate();\n }\n\n handleMouseUp() {\n this.deactivate();\n }\n\n handleKeyUp(e: KeyboardEvent) {\n e.preventDefault();\n if (isSpace(e) || isEnter(e)) {\n this.deactivate();\n }\n }\n\n handleKeyDown(e: KeyboardEvent) {\n if (isSpace(e)) {\n e.preventDefault();\n }\n if (isSpace(e) || isEnter(e)) {\n this.activate();\n this.handleItemClick(e);\n }\n }\n\n handleKeyDownIcon(e: KeyboardEvent) {\n e.stopPropagation();\n }\n\n handleItemClick(e: Event) {\n if (this.disabled) {\n return;\n }\n if (!this.indeterminate && !this.controlled) {\n this.selected = !this.selected;\n }\n this.fireItemPress(e);\n }\n\n handleFocusIn() {\n if (!this.disabled) {\n this.focused = true;\n this.fireEvent(\"item-focus\", {\n item: this,\n });\n }\n }\n\n handleFocusOut() {\n if (!this.disabled) {\n this.focused = false;\n this.deactivate();\n }\n }\n\n handleDeleteClick(e: Event) {\n if (!this.disabled) {\n e.stopPropagation();\n this.fireEvent(\"delete-press\", {\n item: this,\n });\n }\n }\n\n handleEditClick(e: Event) {\n if (!this.disabled) {\n e.stopPropagation();\n this.fireEvent(\"edit-press\", {\n item: this,\n });\n }\n }\n\n fireItemPress(e: Event) {\n if (isEnter(e as KeyboardEvent)) {\n e.preventDefault();\n }\n this.fireEvent(\"item-press\", {\n selected: this.selected,\n item: this,\n });\n }\n\n activate() {\n if (!this.disabled) {\n this.active = true;\n }\n }\n\n get className() {\n const isGroupChild = this?.parentElement as UDExListGroupHeaderBase;\n const className = \"udex-list__item\";\n const controlledClassName = this.controlled ? `${className}_controlled` : \"\";\n const groupClassName = isGroupChild?.isGroup ? `${className}_group` : \"\";\n const largeSizeClassName = this.isLargeSize ? `${className}_large` : \"\";\n return `${className} ${groupClassName} ${this._additionalClassName} ${controlledClassName} ${largeSizeClassName}`;\n }\n\n get roleItem() {\n return this.accessibleRole.length > 0 ? this.accessibleRole : \"listitem\";\n }\n\n get _ariaDisabled() {\n return this.disabled ? true : undefined;\n }\n\n get _tabIndex() {\n if (this.disabled) {\n return -1;\n }\n return 0;\n }\n\n get modeSingleContent() {\n return this.mode === ListMode.SingleContent;\n }\n\n get modeRadioGroup() {\n return this.mode === ListMode.RadioGroup;\n }\n\n get modeSelected() {\n return [ListMode.SingleSelect, ListMode.MultiSelect, ListMode.RadioGroup].includes(this.mode as ListMode);\n }\n\n get isLargeSize() {\n return this.size === ListItemSize.Large;\n }\n\n get _accessibleNameRef(): string {\n if (this.accessibleName) {\n return `${this._id}-invisibleText`;\n }\n\n return `${this._id}-content`;\n }\n\n get stateAccessibleName(): string {\n if (this.indeterminate) { return UDExListItem.i18nBundle.getText(INDETERMINATE); }\n return `${this.selected ? UDExListItem.i18nBundle.getText(SELECTED) : UDExListItem.i18nBundle.getText(UNSELECTED)} `;\n }\n\n get editButtonAccessibleName(): string {\n return UDExListItem.i18nBundle.getText(EDIT_BUTTON);\n }\n\n get deleteButtonAccessibleName(): string {\n return UDExListItem.i18nBundle.getText(DELETE_BUTTON);\n }\n}\n\nUDExListItem.define();\n\nexport default UDExListItem;\n"]}
1
+ {"version":3,"file":"ListItem.js","sourceRoot":"","sources":["../src/ListItem.ts"],"names":[],"mappings":"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","sourcesContent":["import customElement from \"@ui5/webcomponents-base/dist/decorators/customElement.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.js\";\nimport litRender from \"@ui5/webcomponents-base/dist/renderer/LitRenderer.js\";\nimport { isEnter, isSpace } from \"@ui5/webcomponents-base/dist/Keys.js\";\nimport Icon from \"@ui5/webcomponents/dist/Icon.js\";\nimport { isDesktop } from \"@ui5/webcomponents-base/dist/Device.js\";\nimport I18nBundle, { getI18nBundle } from \"@ui5/webcomponents-base/dist/i18nBundle.js\";\nimport UDExCheckbox from \"./Checkbox.js\";\nimport UDExListItemBase from \"./ListItemBase.js\";\nimport UDExListGroupHeaderBase from \"./ListGroupHeaderBase.js\";\nimport UDExAvatar, { AvatarShape, AvatarSize } from \"./Avatar.js\";\nimport UDExButton from \"./Button.js\";\nimport {\n ListItemSize, ListMode, AdditionalTextState,\n} from \"./types/List.js\";\nimport UDExRadioButton from \"./RadioButton.js\";\nimport {\n DELETE_BUTTON, EDIT_BUTTON, INDETERMINATE, SELECTED, UNSELECTED,\n} from \"./generated/i18n/i18n-defaults.js\";\n\nimport ListItemTemplate from \"./generated/templates/ListItemTemplate.lit.js\";\n\n// Styles\nimport ListItemCss from \"./generated/themes/ListItem.css.js\";\n\n/**\n * @class\n *\n * <h3 class=\"comment-api-title\">Overview</h3>\n *\n *\n * <h3>Usage</h3>\n *\n * For the <code>udex-list-item</code>\n * <h3>ES6 Module Import</h3>\n *\n * <code>import @udex/web-components/dist/ListItem.js\";</code>\n *\n * @constructor\n * @author SAP SE\n * @extends UDExListItemBase\n * @tagname udex-list-item\n * @public\n */\n\n@customElement({\n tag: \"udex-list-item\",\n renderer: litRender,\n styles: ListItemCss,\n template: ListItemTemplate,\n dependencies: [\n UDExAvatar,\n UDExButton,\n UDExRadioButton,\n UDExCheckbox,\n Icon,\n ],\n})\n\n/**\n * Fired event when the user click on a list item.\n *\n * @event sap.ui.webc.web-components.UDExListItem#itemPress\n * @public\n */\n@event(\"item-press\", {\n detail: {\n selected: { type: Boolean },\n item: { type: HTMLElement },\n },\n})\n/**\n * Fired event when the user focuses on a list item.\n *\n * @event sap.ui.webc.web-components.UDExListItem#itemFocus\n * @public\n */\n@event(\"item-focus\", {\n detail: {\n item: { type: HTMLElement },\n },\n})\n/**\n * Fired event when the user click on the delete icon.\n *\n * @event sap.ui.webc.web-components.UDExListItem#deletePress\n * @public\n */\n@event(\"delete-press\", {\n detail: {\n item: { type: HTMLElement },\n },\n})\n/**\n * Fired event when the user click on the edit icon.\n *\n * @event sap.ui.webc.web-components.UDExListItem#editPress\n * @public\n */\n@event(\"edit-press\", {\n detail: {\n item: { type: HTMLElement },\n },\n})\n\nclass UDExListItem extends UDExListItemBase {\n /**\n * Defines the accessible name of the item.\n *\n * @defaultvalue \"\"\n * @public\n */\n @property()\n accessibleName?: string;\n\n /**\n * Defines the position for flag image.\n *\n * @public\n */\n @property({ type: String })\n flagPosition?: string;\n\n /**\n * Defines the image, displayed at the start of the item.\n *\n * @public\n */\n @property({ type: Boolean })\n flag?: boolean;\n\n /**\n * Indicates if the item is active.\n *\n * @private\n */\n @property({ type: Boolean })\n active!: boolean;\n\n /**\n * Indicates if the item is on focus\n *\n * @private\n */\n @property({ type: Boolean })\n focused!: boolean;\n\n /**\n * Defines the additionalText, displayed at the end of the list item.\n *\n * @public\n */\n @property({ type: String })\n additionalText?: string;\n\n /**\n * Defines the state of the additionalText.\n *\n * @defaultvalue \"Circle\"\n * @public\n */\n @property({ type: AdditionalTextState, defaultValue: AdditionalTextState.None })\n additionalTextState?: `${AdditionalTextState}`;\n\n /**\n * Allows control over the image source.\n *\n * @public\n */\n @property({ type: String })\n image?: string;\n\n /**\n * Allows control over the alternative text of the image.\n *\n * @public\n */\n @property({ type: String })\n imageAlt?: string;\n\n /**\n * Defines the shape of the image.\n *\n * @defaultvalue \"Circle\"\n * @public\n */\n @property({ type: AvatarShape, defaultValue: AvatarShape.Circle })\n imageShape?: `${AvatarShape}`;\n\n /**\n * Allows control over the size of the image.\n *\n * @defaultvalue \"S\"\n * @public\n */\n @property({ type: AvatarSize, defaultValue: AvatarSize.S })\n imageSize!: `${AvatarSize}`;\n\n /**\n * Defines the name of the edit icon, displayed in the end of the list item.\n *\n * @defaultvalue \"\"\n * @public\n */\n @property({ type: String, defaultValue: \"\" })\n editIcon?: string;\n\n /**\n * Defines the name of the delete icon, displayed in the end of the list item.\n *\n * @defaultvalue \"\"\n * @public\n */\n @property({ type: String, defaultValue: \"\" })\n deleteIcon?: string;\n\n /**\n * Slot for list item content.\n *\n * @slot\n * @public\n */\n @slot({ type: Node, \"default\": true })\n content!: Array<Node>;\n\n /**\n * Defines the role attribute of component\n *\n * @public\n */\n @property({ type: String })\n accessibleRole!: string;\n\n @property({ type: String })\n _additionalClassName!: string;\n\n deactivate: () => void;\n\n static i18nBundle: I18nBundle;\n\n constructor() {\n super();\n\n this.deactivate = () => {\n if (this.active) {\n this.active = false;\n }\n };\n }\n\n static async onDefine(): Promise<void> {\n UDExListItem.i18nBundle = await getI18nBundle(\"sap-ui-webcomponents-bundle\");\n }\n\n onEnterDOM() {\n document.addEventListener(\"mouseup\", this.deactivate);\n if (isDesktop()) {\n this.setAttribute(\"desktop\", \"\");\n }\n }\n\n onExitDOM() {\n document.removeEventListener(\"mouseup\", this.deactivate);\n }\n\n handleMouseDown() {\n this.activate();\n }\n\n handleMouseUp() {\n this.deactivate();\n }\n\n handleKeyUp(e: KeyboardEvent) {\n e.preventDefault();\n if (isSpace(e) || isEnter(e)) {\n this.deactivate();\n }\n }\n\n handleKeyDown(e: KeyboardEvent) {\n if (isSpace(e)) {\n e.preventDefault();\n }\n if (isSpace(e) || isEnter(e)) {\n this.activate();\n this.handleItemClick(e);\n }\n }\n\n handleKeyDownIcon(e: KeyboardEvent) {\n e.stopPropagation();\n }\n\n handleItemClick(e: Event) {\n if (this.disabled) {\n return;\n }\n if (!this.indeterminate && !this.controlled) {\n this.selected = !this.selected;\n }\n this.fireItemPress(e);\n }\n\n handleFocusIn() {\n if (!this.disabled) {\n this.focused = true;\n this.fireEvent(\"item-focus\", {\n item: this,\n });\n }\n }\n\n handleFocusOut() {\n if (!this.disabled) {\n this.focused = false;\n this.deactivate();\n }\n }\n\n handleDeleteClick(e: Event) {\n if (!this.disabled) {\n e.stopPropagation();\n this.fireEvent(\"delete-press\", {\n item: this,\n });\n }\n }\n\n handleEditClick(e: Event) {\n if (!this.disabled) {\n e.stopPropagation();\n this.fireEvent(\"edit-press\", {\n item: this,\n });\n }\n }\n\n fireItemPress(e: Event) {\n if (isEnter(e as KeyboardEvent)) {\n e.preventDefault();\n }\n this.fireEvent(\"item-press\", {\n selected: this.selected,\n item: this,\n });\n }\n\n activate() {\n if (!this.disabled) {\n this.active = true;\n }\n }\n\n get className() {\n const isGroupChild = this?.parentElement as UDExListGroupHeaderBase;\n const className = \"udex-list__item\";\n const controlledClassName = this.controlled ? `${className}_controlled` : \"\";\n const groupClassName = isGroupChild?.isGroup ? `${className}_group` : \"\";\n const largeSizeClassName = this.isLargeSize ? `${className}_large` : \"\";\n return `${className} ${groupClassName} ${this._additionalClassName} ${controlledClassName} ${largeSizeClassName}`;\n }\n\n get roleItem() {\n return this.accessibleRole.length > 0 ? this.accessibleRole : \"listitem\";\n }\n\n get _ariaDisabled() {\n return this.disabled ? true : undefined;\n }\n\n get modeSingleContent() {\n return this.mode === ListMode.SingleContent;\n }\n\n get modeRadioGroup() {\n return this.mode === ListMode.RadioGroup;\n }\n\n get modeSelected() {\n return [ListMode.SingleSelect, ListMode.MultiSelect, ListMode.RadioGroup].includes(this.mode as ListMode);\n }\n\n get isLargeSize() {\n return this.size === ListItemSize.Large;\n }\n\n get _accessibleNameRef(): string {\n if (this.accessibleName) {\n return `${this._id}-invisibleText`;\n }\n\n return `${this._id}-content`;\n }\n\n get stateAccessibleName(): string {\n if (this.indeterminate) { return UDExListItem.i18nBundle.getText(INDETERMINATE); }\n return `${this.selected ? UDExListItem.i18nBundle.getText(SELECTED) : UDExListItem.i18nBundle.getText(UNSELECTED)} `;\n }\n\n get editButtonAccessibleName(): string {\n return UDExListItem.i18nBundle.getText(EDIT_BUTTON);\n }\n\n get deleteButtonAccessibleName(): string {\n return UDExListItem.i18nBundle.getText(DELETE_BUTTON);\n }\n}\n\nUDExListItem.define();\n\nexport default UDExListItem;\n"]}
@@ -80,10 +80,13 @@ declare class UDExListItemBase extends UI5Element {
80
80
  */
81
81
  type: `${ListStyleType}`;
82
82
  _icon?: string;
83
+ _tabIndex: number | string;
84
+ get _effectiveTabIndex(): string | number;
83
85
  get numberOfItem(): number;
84
86
  get isGroup(): boolean;
85
87
  get modeRadioGroup(): boolean;
86
88
  get modeMultiSelect(): boolean;
89
+ get modeSingleSelect(): boolean;
87
90
  get modeMultiSelectOrRadioGroup(): boolean;
88
91
  get typeNumber(): boolean;
89
92
  get typeCircle(): boolean;
@@ -21,6 +21,12 @@ import { ListItemSize, ListMode, ListStyleType } from "./types/List.js";
21
21
  * @public
22
22
  */
23
23
  let UDExListItemBase = class UDExListItemBase extends UI5Element {
24
+ get _effectiveTabIndex() {
25
+ if (this.disabled) {
26
+ return -1;
27
+ }
28
+ return this._tabIndex;
29
+ }
24
30
  get numberOfItem() {
25
31
  return [...this.parentNode.children].indexOf(this) + 1;
26
32
  }
@@ -33,6 +39,9 @@ let UDExListItemBase = class UDExListItemBase extends UI5Element {
33
39
  get modeMultiSelect() {
34
40
  return this.mode === ListMode.MultiSelect;
35
41
  }
42
+ get modeSingleSelect() {
43
+ return this.mode === ListMode.SingleSelect;
44
+ }
36
45
  get modeMultiSelectOrRadioGroup() {
37
46
  return this.modeMultiSelect || this.modeRadioGroup;
38
47
  }
@@ -79,6 +88,9 @@ __decorate([
79
88
  __decorate([
80
89
  property({ type: String, defaultValue: "" })
81
90
  ], UDExListItemBase.prototype, "_icon", void 0);
91
+ __decorate([
92
+ property({ type: String })
93
+ ], UDExListItemBase.prototype, "_tabIndex", void 0);
82
94
  UDExListItemBase = __decorate([
83
95
  customElement({
84
96
  renderer: litRender,
@@ -1 +1 @@
1
- {"version":3,"file":"ListItemBase.js","sourceRoot":"","sources":["../src/ListItemBase.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,UAAU,MAAM,4CAA4C,CAAC;AACpE,OAAO,aAAa,MAAM,0DAA0D,CAAC;AACrF,OAAO,QAAQ,MAAM,qDAAqD,CAAC;AAC3E,OAAO,SAAS,MAAM,sDAAsD,CAAC;AAC7E,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAExE;;;;;;;;;;GAUG;AAMH,IAAM,gBAAgB,GAAtB,MAAM,gBAAiB,SAAQ,UAAU;IA2FvC,IAAI,YAAY;QACd,OAAO,CAAC,GAAG,IAAI,CAAC,UAAW,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC1D,CAAC;IAED,IAAI,OAAO;QACT,OAAO,KAAK,CAAC;IACf,CAAC;IAED,IAAI,cAAc;QAChB,OAAO,IAAI,CAAC,IAAI,KAAK,QAAQ,CAAC,UAAU,CAAC;IAC3C,CAAC;IAED,IAAI,eAAe;QACjB,OAAO,IAAI,CAAC,IAAI,KAAK,QAAQ,CAAC,WAAW,CAAC;IAC5C,CAAC;IAED,IAAI,2BAA2B;QAC7B,OAAO,IAAI,CAAC,eAAe,IAAI,IAAI,CAAC,cAAc,CAAC;IACrD,CAAC;IAED,IAAI,UAAU;QACZ,OAAO,IAAI,CAAC,IAAI,KAAK,aAAa,CAAC,MAAM,CAAC;IAC5C,CAAC;IAED,IAAI,UAAU;QACZ,OAAO,IAAI,CAAC,IAAI,KAAK,aAAa,CAAC,MAAM,CAAC;IAC5C,CAAC;IAED,IAAI,QAAQ;QACV,OAAO,IAAI,CAAC,IAAI,KAAK,aAAa,CAAC,IAAI,CAAC;IAC1C,CAAC;CACF,CAAA;AAnHG;IADD,QAAQ,EAAE;+CACM;AASf;IADD,QAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;iDACR;AAQlB;IADD,QAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;kDACP;AAQnB;IADD,QAAQ,EAAE;wDACe;AASxB;IADD,QAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;kDACP;AASnB;IADD,QAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;uDACF;AASxB;IADD,QAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;oDACL;AASrB;IADD,QAAQ,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,YAAY,EAAE,QAAQ,CAAC,YAAY,EAAE,CAAC;8CAC3C;AASrB;IADD,QAAQ,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,YAAY,EAAE,YAAY,CAAC,QAAQ,EAAE,CAAC;8CAC3C;AASzB;IADD,QAAQ,CAAC,EAAE,IAAI,EAAE,aAAa,EAAE,YAAY,EAAE,aAAa,CAAC,IAAI,EAAE,CAAC;8CACxC;AAG1B;IADD,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,YAAY,EAAE,EAAE,EAAE,CAAC;+CAC5B;AAzFb,gBAAgB;IAJrB,aAAa,CAAC;QACb,QAAQ,EAAE,SAAS;KACpB,CAAC;GAEI,gBAAgB,CA0HrB;AAED,eAAe,gBAAgB,CAAC","sourcesContent":["import UI5Element from \"@ui5/webcomponents-base/dist/UI5Element.js\";\nimport customElement from \"@ui5/webcomponents-base/dist/decorators/customElement.js\";\nimport property from \"@ui5/webcomponents-base/dist/decorators/property.js\";\nimport litRender from \"@ui5/webcomponents-base/dist/renderer/LitRenderer.js\";\nimport { ListItemSize, ListMode, ListStyleType } from \"./types/List.js\";\n\n/**\n * @class\n *\n * A class to serve as a foundation\n * for the <code>UDExListItem</code>,<code>UDExFilterMenuItem</code> and <code>UDExGroupHeaderBase</code> classes.\n *\n * @constructor\n * @author SAP SE\n * @extends UI5Element\n * @public\n */\n\n@customElement({\n renderer: litRender,\n})\n\nclass UDExListItemBase extends UI5Element {\n /**\n * Defines the <code>label</code> for the item.\n *\n * @public\n */\n @property()\n label!: string;\n\n /**\n * Defines whether a visual separator should be rendered after the item.\n *\n * @default false\n * @public\n */\n @property({ type: Boolean })\n divider!: boolean;\n\n /**\n * Defines whether <code> list item</code> is in disabled state.\n *\n * @public\n */\n @property({ type: Boolean })\n disabled!: boolean;\n\n /**\n * Defines the supportingText, displayed in the end of the item.\n *\n * @public\n */\n @property()\n supportingText!: string;\n\n /**\n * Defines the selected state of the item.\n *\n * @default false\n * @public\n */\n @property({ type: Boolean })\n selected!: boolean;\n\n /**\n * Defines whether the selection of a list is displayed as partially selected.\n *\n * @default false\n * @public\n */\n @property({ type: Boolean })\n indeterminate?: boolean;\n\n /**\n * Defines the controlled state of the item.\n *\n * @default false\n * @public\n */\n @property({ type: Boolean })\n controlled?: boolean;\n\n /**\n * Defines the mode of the item.\n *\n * @default \"SingleSelect\"\n * @public\n */\n @property({ type: ListMode, defaultValue: ListMode.SingleSelect })\n mode!: `${ListMode}`;\n\n /**\n * Defines the size of the item.\n *\n * @defaultvalue \"Standard\"\n * @public\n */\n @property({ type: ListItemSize, defaultValue: ListItemSize.Standard })\n size?: `${ListItemSize}`;\n\n /**\n * Defines the type of the item.\n *\n * @defaultvalue \"None\"\n * @public\n */\n @property({ type: ListStyleType, defaultValue: ListStyleType.None })\n type!: `${ListStyleType}`;\n\n @property({ type: String, defaultValue: \"\" })\n _icon?: string;\n\n get numberOfItem() {\n return [...this.parentNode!.children].indexOf(this) + 1;\n }\n\n get isGroup(): boolean {\n return false;\n }\n\n get modeRadioGroup() {\n return this.mode === ListMode.RadioGroup;\n }\n\n get modeMultiSelect() {\n return this.mode === ListMode.MultiSelect;\n }\n\n get modeMultiSelectOrRadioGroup() {\n return this.modeMultiSelect || this.modeRadioGroup;\n }\n\n get typeNumber() {\n return this.type === ListStyleType.Number;\n }\n\n get typeCircle() {\n return this.type === ListStyleType.Circle;\n }\n\n get typeIcon() {\n return this.type === ListStyleType.Icon;\n }\n}\n\nexport default UDExListItemBase;\n"]}
1
+ {"version":3,"file":"ListItemBase.js","sourceRoot":"","sources":["../src/ListItemBase.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,UAAU,MAAM,4CAA4C,CAAC;AACpE,OAAO,aAAa,MAAM,0DAA0D,CAAC;AACrF,OAAO,QAAQ,MAAM,qDAAqD,CAAC;AAC3E,OAAO,SAAS,MAAM,sDAAsD,CAAC;AAC7E,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAExE;;;;;;;;;;GAUG;AAMH,IAAM,gBAAgB,GAAtB,MAAM,gBAAiB,SAAQ,UAAU;IA8FvC,IAAI,kBAAkB;QACpB,IAAI,IAAI,CAAC,QAAQ,EAAE;YACjB,OAAO,CAAC,CAAC,CAAC;SACX;QACD,OAAO,IAAI,CAAC,SAAS,CAAC;IACxB,CAAC;IAED,IAAI,YAAY;QACd,OAAO,CAAC,GAAG,IAAI,CAAC,UAAW,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC1D,CAAC;IAED,IAAI,OAAO;QACT,OAAO,KAAK,CAAC;IACf,CAAC;IAED,IAAI,cAAc;QAChB,OAAO,IAAI,CAAC,IAAI,KAAK,QAAQ,CAAC,UAAU,CAAC;IAC3C,CAAC;IAED,IAAI,eAAe;QACjB,OAAO,IAAI,CAAC,IAAI,KAAK,QAAQ,CAAC,WAAW,CAAC;IAC5C,CAAC;IAED,IAAI,gBAAgB;QAClB,OAAO,IAAI,CAAC,IAAI,KAAK,QAAQ,CAAC,YAAY,CAAC;IAC7C,CAAC;IAED,IAAI,2BAA2B;QAC7B,OAAO,IAAI,CAAC,eAAe,IAAI,IAAI,CAAC,cAAc,CAAC;IACrD,CAAC;IAED,IAAI,UAAU;QACZ,OAAO,IAAI,CAAC,IAAI,KAAK,aAAa,CAAC,MAAM,CAAC;IAC5C,CAAC;IAED,IAAI,UAAU;QACZ,OAAO,IAAI,CAAC,IAAI,KAAK,aAAa,CAAC,MAAM,CAAC;IAC5C,CAAC;IAED,IAAI,QAAQ;QACV,OAAO,IAAI,CAAC,IAAI,KAAK,aAAa,CAAC,IAAI,CAAC;IAC1C,CAAC;CACF,CAAA;AAjIG;IADD,QAAQ,EAAE;+CACM;AASf;IADD,QAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;iDACR;AAQlB;IADD,QAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;kDACP;AAQnB;IADD,QAAQ,EAAE;wDACe;AASxB;IADD,QAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;kDACP;AASnB;IADD,QAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;uDACF;AASxB;IADD,QAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;oDACL;AASrB;IADD,QAAQ,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,YAAY,EAAE,QAAQ,CAAC,YAAY,EAAE,CAAC;8CAC3C;AASrB;IADD,QAAQ,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,YAAY,EAAE,YAAY,CAAC,QAAQ,EAAE,CAAC;8CAC3C;AASzB;IADD,QAAQ,CAAC,EAAE,IAAI,EAAE,aAAa,EAAE,YAAY,EAAE,aAAa,CAAC,IAAI,EAAE,CAAC;8CACxC;AAG1B;IADD,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,YAAY,EAAE,EAAE,EAAE,CAAC;+CAC5B;AAGf;IADD,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;mDACG;AA5F1B,gBAAgB;IAJrB,aAAa,CAAC;QACb,QAAQ,EAAE,SAAS;KACpB,CAAC;GAEI,gBAAgB,CAwIrB;AAED,eAAe,gBAAgB,CAAC","sourcesContent":["import UI5Element from \"@ui5/webcomponents-base/dist/UI5Element.js\";\nimport customElement from \"@ui5/webcomponents-base/dist/decorators/customElement.js\";\nimport property from \"@ui5/webcomponents-base/dist/decorators/property.js\";\nimport litRender from \"@ui5/webcomponents-base/dist/renderer/LitRenderer.js\";\nimport { ListItemSize, ListMode, ListStyleType } from \"./types/List.js\";\n\n/**\n * @class\n *\n * A class to serve as a foundation\n * for the <code>UDExListItem</code>,<code>UDExFilterMenuItem</code> and <code>UDExGroupHeaderBase</code> classes.\n *\n * @constructor\n * @author SAP SE\n * @extends UI5Element\n * @public\n */\n\n@customElement({\n renderer: litRender,\n})\n\nclass UDExListItemBase extends UI5Element {\n /**\n * Defines the <code>label</code> for the item.\n *\n * @public\n */\n @property()\n label!: string;\n\n /**\n * Defines whether a visual separator should be rendered after the item.\n *\n * @default false\n * @public\n */\n @property({ type: Boolean })\n divider!: boolean;\n\n /**\n * Defines whether <code> list item</code> is in disabled state.\n *\n * @public\n */\n @property({ type: Boolean })\n disabled!: boolean;\n\n /**\n * Defines the supportingText, displayed in the end of the item.\n *\n * @public\n */\n @property()\n supportingText!: string;\n\n /**\n * Defines the selected state of the item.\n *\n * @default false\n * @public\n */\n @property({ type: Boolean })\n selected!: boolean;\n\n /**\n * Defines whether the selection of a list is displayed as partially selected.\n *\n * @default false\n * @public\n */\n @property({ type: Boolean })\n indeterminate?: boolean;\n\n /**\n * Defines the controlled state of the item.\n *\n * @default false\n * @public\n */\n @property({ type: Boolean })\n controlled?: boolean;\n\n /**\n * Defines the mode of the item.\n *\n * @default \"SingleSelect\"\n * @public\n */\n @property({ type: ListMode, defaultValue: ListMode.SingleSelect })\n mode!: `${ListMode}`;\n\n /**\n * Defines the size of the item.\n *\n * @defaultvalue \"Standard\"\n * @public\n */\n @property({ type: ListItemSize, defaultValue: ListItemSize.Standard })\n size?: `${ListItemSize}`;\n\n /**\n * Defines the type of the item.\n *\n * @defaultvalue \"None\"\n * @public\n */\n @property({ type: ListStyleType, defaultValue: ListStyleType.None })\n type!: `${ListStyleType}`;\n\n @property({ type: String, defaultValue: \"\" })\n _icon?: string;\n\n @property({ type: String })\n _tabIndex!: number | string;\n\n get _effectiveTabIndex() {\n if (this.disabled) {\n return -1;\n }\n return this._tabIndex;\n }\n\n get numberOfItem() {\n return [...this.parentNode!.children].indexOf(this) + 1;\n }\n\n get isGroup(): boolean {\n return false;\n }\n\n get modeRadioGroup() {\n return this.mode === ListMode.RadioGroup;\n }\n\n get modeMultiSelect() {\n return this.mode === ListMode.MultiSelect;\n }\n\n get modeSingleSelect() {\n return this.mode === ListMode.SingleSelect;\n }\n\n get modeMultiSelectOrRadioGroup() {\n return this.modeMultiSelect || this.modeRadioGroup;\n }\n\n get typeNumber() {\n return this.type === ListStyleType.Number;\n }\n\n get typeCircle() {\n return this.type === ListStyleType.Circle;\n }\n\n get typeIcon() {\n return this.type === ListStyleType.Icon;\n }\n}\n\nexport default UDExListItemBase;\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"PhoneNumberField.js","sourceRoot":"","sources":["../src/PhoneNumberField.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 property from \"@ui5/webcomponents-base/dist/decorators/property.js\";\nimport litRender from \"@ui5/webcomponents-base/dist/renderer/LitRenderer.js\";\nimport Integer from \"@ui5/webcomponents-base/dist/types/Integer.js\";\nimport event from \"@ui5/webcomponents-base/dist/decorators/event.js\";\nimport type I18nBundle from \"@ui5/webcomponents-base/dist/i18nBundle.js\";\nimport { getI18nBundle } from \"@ui5/webcomponents-base/dist/i18nBundle.js\";\nimport ResizeHandler, { ResizeObserverCallback } from \"@ui5/webcomponents-base/dist/delegate/ResizeHandler.js\";\nimport { COUNTRY_SELECT } from \"./generated/i18n/i18n-defaults.js\";\nimport { Country, CountryListDB } from \"./data/CountryListISO3166.js\";\nimport UDExDropdown from \"./Dropdown.js\";\nimport UDExList from \"./List.js\";\nimport UDExListItem from \"./ListItem.js\";\nimport UDExButton from \"./Button.js\";\nimport UDExStatusMessage from \"./StatusMessage.js\";\n\nimport \"@ui5/webcomponents/dist/Icon.js\";\nimport \"@ui5/webcomponents-icons/dist/slim-arrow-up.js\";\nimport \"@ui5/webcomponents-icons/dist/slim-arrow-down.js\";\n\nimport PhoneNumberFieldTemplate from \"./generated/templates/PhoneNumberFieldTemplate.lit.js\";\n\n// Styles\nimport PhoneNumberFieldCss from \"./generated/themes/PhoneNumberField.css.js\";\n\nexport interface ExtendedCountriesListPhoneNumberData extends Country {\n selected?: boolean;\n}\n\nexport enum OpenButtonIcon {\n iconUp = \"slim-arrow-up\",\n iconDown = \"slim-arrow-down\",\n}\n\nexport enum FieldState {\n Standard = \"Standard\",\n Success = \"Success\",\n Error = \"Error\",\n}\n\nconst initialPlaceholder: string = \"+X XXX-XXX-XXXX\";\n\n/**\n * @class\n *\n * @constructor\n * @extends UI5Element\n * @tagname udex-phone-number-field\n * @public\n */\n@customElement({\n tag: \"udex-phone-number-field\",\n renderer: litRender,\n styles: PhoneNumberFieldCss,\n template: PhoneNumberFieldTemplate,\n dependencies: [\n UDExDropdown,\n UDExList,\n UDExListItem,\n UDExButton,\n UDExStatusMessage,\n ],\n})\n/**\n * Fired when the value of the component changes at each keystroke.\n *\n * @public\n */\n@event(\"input\")\n/**\n * Fired when the input operation has finished by pressing Enter or on focusout.\n *\n * @public\n */\n@event(\"change\")\nclass UDExPhoneNumberField extends UI5Element {\n /**\n * Defines label text for the textarea field.\n *\n * @default \"\"\n * @public\n */\n @property({ type: String, defaultValue: \"\" })\n label!: string;\n\n /**\n * Defines the value state of the component.\n *\n * @default \"Standard\"\n * @public\n */\n @property({ type: FieldState, defaultValue: FieldState.Standard })\n fieldState!: `${FieldState}`;\n\n /**\n * Defines supporting text under the input field.\n *\n * @default \"\"\n * @public\n */\n @property({ type: String, defaultValue: \"\" })\n supportingText!: string;\n\n /**\n * Defines whether the component is required.\n *\n * @default false\n * @public\n */\n @property({ type: Boolean })\n required!: boolean;\n\n /**\n * Defines whether the component is in disabled state.\n * <br><br>\n * <b>Note:</b> A disabled component is completely noninteractive.\n *\n * @default false\n * @public\n */\n @property({ type: Boolean })\n disabled!: boolean;\n\n /**\n * Defines whether the component is read-only.\n * <br><br>\n * <b>Note:</b> A read-only component is not editable,\n * but still provides visual feedback upon user interaction.\n *\n * @default false\n * @public\n */\n @property({ type: Boolean })\n readonly!: boolean;\n\n /**\n * Defines whether the component is display-only.\n * <br><br>\n * <b>Note:</b> A display-only component is not editable,\n * but still provides visual feedback upon user interaction, input border is not visible.\n *\n * @default false\n * @public\n */\n @property({ type: Boolean })\n displayonly!: boolean;\n\n /**\n * Defines the country iso code selected by the user\n * <br><br>\n * Note: should be used two-letter country codes, e.g.: \"DE\" | \"PL\" | \"UA\" | \"US\"\n *\n * @default \"\"\n * @public\n */\n @property({ type: String, defaultValue: \"\" })\n selectedIso!: string;\n\n /**\n * Defines the autoselected country iso code\n *\n * @default \"\"\n * @private\n */\n @property({ type: String, noAttribute: true, defaultValue: \"\" })\n autoSelectedIso!: string;\n\n /**\n * Allows to define the list of blocked country.\n *\n * @default \"\"\n * @public\n */\n @property({ type: String })\n blockedCountryCodes?: string;\n\n /**\n * Allows control over the height.\n *\n * @public\n */\n @property({ type: String })\n height?: string;\n\n /**\n * Defines the value of the component.\n *\n * @default \"\"\n */\n @property({ type: String, defaultValue: \"\" })\n value!: string;\n\n /**\n * Defines the open button icon\n *\n * @private\n */\n @property({ type: String, noAttribute: true, defaultValue: OpenButtonIcon.iconDown })\n buttonIcon!: string;\n\n /**\n * Defines the phone format of the input\n *\n * @private\n */\n @property({ type: String, defaultValue: initialPlaceholder, noAttribute: true })\n phoneFormat!: string;\n\n /**\n * Defines the maxlength of the input\n *\n * @private\n */\n @property({ validator: Integer })\n maxlength!: number;\n\n /**\n * Defines the accessible ARIA name of the component.\n *\n * @default \"\"\n * @public\n */\n @property()\n accessibleName!: string;\n\n /**\n * Receives id (or many ids) of the elements that label the component.\n * @default \"\"\n * @public\n */\n @property({ defaultValue: \"\" })\n accessibleNameRef!: string;\n\n /**\n * Defines the allowed keys for the input\n *\n * @private\n */\n @property({ type: String, multiple: true, noAttribute: true })\n allowedKeys: string[] = [\n \"Backspace\",\n \"Delete\",\n \"ArrowLeft\",\n \"ArrowRight\",\n \"Tab\",\n \"Enter\",\n \"Home\",\n \"End\",\n \"Escape\",\n ];\n\n /**\n * Keeps the value of previously pressed key\n *\n * @private\n */\n @property({ type: String, multiple: false, noAttribute: true })\n previousKey!: string;\n\n static i18nBundle: I18nBundle;\n _dropdown!: UDExDropdown;\n _handleResizeBound: ResizeObserverCallback\n\n static async onDefine() {\n UDExPhoneNumberField.i18nBundle = await getI18nBundle(\"sap-ui-webcomponents-bundle\");\n }\n\n get countrySelectorAriaLabel() {\n return this.accessibleName || UDExPhoneNumberField.i18nBundle.getText(COUNTRY_SELECT);\n }\n\n get countryIso() {\n return this.selectedIso || this.autoSelectedIso;\n }\n\n countriesList: ExtendedCountriesListPhoneNumberData[] = CountryListDB;\n\n constructor() {\n super();\n this._handleResizeBound = this._handleResize.bind(this);\n }\n\n onEnterDOM(): void {\n ResizeHandler.register(this, this._handleResizeBound);\n }\n\n onExitDOM(): void {\n ResizeHandler.deregister(this, this._handleResizeBound);\n }\n\n onAfterRendering() {\n this._dropdown = this.getDropdown();\n }\n\n onClick(): void {\n if (this.isButtonDisabled) {\n return;\n }\n const button = this.getButton();\n const dropdown = this.getDropdown();\n\n if (dropdown.open) {\n dropdown.onClose();\n } else {\n dropdown.onOpen(button);\n }\n }\n\n _handleResize() {\n this._dropdown.style.setProperty(\"--udex-dropdown-pane-width\", `${this.offsetWidth}px`);\n }\n\n handleInput(e: InputEvent) {\n this.value = (e.target as HTMLInputElement)?.value.trim();\n\n this.applyPhoneMask();\n\n if (!this.value.startsWith(this.selectedPhonePrefix)) {\n this.selectedIso = \"\";\n }\n\n if (this.value.length === 0 || this.value === \"+\") {\n this.autoSelectedIso = \"\";\n this.selectedIso = \"\";\n }\n\n this.fireEvent(\"input\");\n }\n\n handleChange() {\n this.fireEvent(\"change\");\n }\n\n handleKeyDown = (e: KeyboardEvent) => {\n const isKeyAllowed = e.key.match(/\\d/)\n || this.allowedKeys.includes(e.key)\n || e.metaKey\n || e.ctrlKey;\n\n if (!isKeyAllowed) {\n e.preventDefault();\n }\n\n e.stopPropagation();\n this.previousKey = e.key;\n };\n\n handleKeyUp() {\n this.value = this.value.replace(/[^\\d+ ()-]/g, \"\").trim();\n this.applyPhoneMask();\n }\n\n handleFocus() {\n if (this.countryIso.length === 0) {\n this.phoneFormat = initialPlaceholder;\n }\n\n if (this.value.length === 0 || this.value === \"+\") {\n this.value = this.selectedPhonePrefix;\n }\n }\n\n handleBlur() {\n this.applyPlaceholder();\n\n const prefixLength = this.selectedPhonePrefix.length;\n const enteredPrefix = this.value.substring(0, prefixLength);\n const isIncorrectPrefixEntered = enteredPrefix !== this.selectedPhonePrefix;\n\n const isIncorrectNumberEntered = !this.countryIso || this.value.length <= prefixLength || isIncorrectPrefixEntered;\n\n if (isIncorrectNumberEntered) {\n this.value = \"\";\n }\n\n this.fireEvent(\"change\");\n }\n\n handleSelect(e: CustomEvent) {\n const dropdown = this.getDropdown();\n\n dropdown.onClose();\n\n this.selectedIso = e.detail.item.id;\n this.value = this.selectedPhonePrefix;\n this.phoneFormat = this.value + this.selectedPlaceholder;\n this.maxlength = this.phoneFormat.length;\n this.getInputField().focus();\n }\n\n handleDropdownOpen() {\n this.buttonIcon = OpenButtonIcon.iconUp;\n }\n handleDropdownClose() {\n this.buttonIcon = OpenButtonIcon.iconDown;\n }\n\n autoSelectCountry(value: string) {\n const countryToSelect = this.updatedCountriesList.find(country => {\n const valuePhonePrefix = value.substring(0, country.phonePrefix.length);\n\n return country.phonePrefix === valuePhonePrefix;\n });\n\n if (countryToSelect) {\n this.autoSelectedIso = countryToSelect.iso;\n }\n\n if (this.selectedPhonePrefix && this.selectedPlaceholder) {\n this.maxlength = this.selectedPhonePrefix.length + this.selectedPlaceholder.length;\n }\n }\n\n applyPhoneMask() {\n const isNewPrefixEntered = this.value.substring(0, this.selectedPhonePrefix.length) !== this.selectedPhonePrefix;\n if (this.value.split(\"\")[0] !== \"+\") {\n this.value = `+${this.value}`;\n }\n\n this.autoSelectCountry(this.value);\n\n if (isNewPrefixEntered) {\n return;\n }\n\n const mask = this.selectedPhonePrefix + this.selectedPlaceholder;\n const maskSymbols = [\" \", \"-\", \"(\", \")\"];\n\n const valueWithMask = this.value.split(\"\").map((char, index) => {\n if (maskSymbols.includes(char) && char === mask[index]) {\n return char;\n }\n if (maskSymbols.includes(char) && char !== mask[index]) {\n return \"\";\n }\n if (maskSymbols.includes(mask[index]) && char !== mask[index]) {\n return `${mask[index]}${char}`;\n }\n return char;\n }).join(\"\");\n\n this.value = valueWithMask;\n\n if (this.value.length > this.maxlength) {\n this.value = this.value.substring(0, this.maxlength);\n }\n }\n\n applyPlaceholder() {\n this.phoneFormat = this.countryIso.length > 0\n ? this.selectedPhonePrefix + this.selectedPlaceholder : initialPlaceholder;\n }\n\n getDropdown() {\n return this.shadowRoot!.querySelector<UDExDropdown>(\n \"[udex-dropdown]\",\n )!;\n }\n\n getButton() {\n return this.shadowRoot!.querySelector<UDExButton>(\n \"[udex-button]\",\n )!;\n }\n\n getInputField() {\n return this.shadowRoot!.querySelector<HTMLFormElement>(\n \"input\",\n )!;\n }\n\n get selectedPhonePrefix(): string {\n if (!this.countryIso) {\n return \"\";\n }\n\n return this.updatedCountriesList.filter(country => country.iso === this.countryIso)[0]?.phonePrefix\n || this.updatedCountriesList[0]?.phonePrefix;\n }\n\n get selectedPlaceholder(): string {\n if (!this.countryIso) {\n return \"\";\n }\n\n return this.updatedCountriesList.filter(country => country.iso === this.countryIso)[0]?.phoneFmt\n || this.updatedCountriesList[0]?.phoneFmt;\n }\n\n get selectedCountryName(): string {\n if (!this.countryIso) {\n return \"\";\n }\n\n return this.updatedCountriesList.filter(country => country.iso === this.countryIso)[0]?.countryName\n || this.updatedCountriesList[0]?.countryName;\n }\n\n get selectedFlagBackgroundPosition() {\n if (!this.countryIso) {\n return {};\n }\n\n const selectedCountry = this.updatedCountriesList.filter(country => country.iso === this.countryIso)[0];\n\n if (!selectedCountry) {\n return {};\n }\n\n return { \"backgroundPosition\": `${selectedCountry.flagX} ${selectedCountry.flagY}` };\n }\n\n get ariaInvalid() {\n return this.fieldState === FieldState.Error ? \"true\" : null;\n }\n\n get isInputReadonly() {\n return this.readonly || this.displayonly;\n }\n\n get isButtonDisabled() {\n return this.disabled || this.isInputReadonly;\n }\n\n get updatedCountriesList(): ExtendedCountriesListPhoneNumberData[] {\n return this.countriesList.map(country => {\n if (country.selected) {\n delete country.selected;\n }\n\n if (country.iso === this.countryIso) {\n country.selected = true;\n }\n\n return country;\n });\n }\n\n onBeforeRendering() {\n this.applyPlaceholder();\n\n if (this.blockedCountryCodes?.length) {\n const blockedCountryCodesArray = this.blockedCountryCodes.split(\",\").map(code => code.trim().toUpperCase());\n this.countriesList = this.countriesList\n .filter(country => !blockedCountryCodesArray?.includes(country.iso.toUpperCase()));\n }\n }\n}\n\nUDExPhoneNumberField.define();\n\nexport default UDExPhoneNumberField;\n"]}
1
+ {"version":3,"file":"PhoneNumberField.js","sourceRoot":"","sources":["../src/PhoneNumberField.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 property from \"@ui5/webcomponents-base/dist/decorators/property.js\";\nimport litRender from \"@ui5/webcomponents-base/dist/renderer/LitRenderer.js\";\nimport Integer from \"@ui5/webcomponents-base/dist/types/Integer.js\";\nimport event from \"@ui5/webcomponents-base/dist/decorators/event.js\";\nimport type I18nBundle from \"@ui5/webcomponents-base/dist/i18nBundle.js\";\nimport { getI18nBundle } from \"@ui5/webcomponents-base/dist/i18nBundle.js\";\nimport ResizeHandler, { ResizeObserverCallback } from \"@ui5/webcomponents-base/dist/delegate/ResizeHandler.js\";\nimport { COUNTRY_SELECT } from \"./generated/i18n/i18n-defaults.js\";\nimport { Country, CountryListDB } from \"./data/CountryListISO3166.js\";\nimport UDExDropdown from \"./Dropdown.js\";\nimport UDExList from \"./List.js\";\nimport UDExListItem from \"./ListItem.js\";\nimport UDExButton from \"./Button.js\";\nimport UDExStatusMessage from \"./StatusMessage.js\";\n\nimport \"@ui5/webcomponents/dist/Icon.js\";\nimport \"@ui5/webcomponents-icons/dist/slim-arrow-up.js\";\nimport \"@ui5/webcomponents-icons/dist/slim-arrow-down.js\";\n\nimport PhoneNumberFieldTemplate from \"./generated/templates/PhoneNumberFieldTemplate.lit.js\";\n\n// Styles\nimport PhoneNumberFieldCss from \"./generated/themes/PhoneNumberField.css.js\";\n\nexport interface ExtendedCountriesListPhoneNumberData extends Country {\n selected?: boolean;\n}\n\nexport enum OpenButtonIcon {\n iconUp = \"slim-arrow-up\",\n iconDown = \"slim-arrow-down\",\n}\n\nexport enum FieldState {\n Standard = \"Standard\",\n Success = \"Success\",\n Error = \"Error\",\n}\n\nconst initialPlaceholder: string = \"+X XXX-XXX-XXXX\";\n\n/**\n * @class\n *\n * @constructor\n * @extends UI5Element\n * @tagname udex-phone-number-field\n * @public\n */\n@customElement({\n tag: \"udex-phone-number-field\",\n renderer: litRender,\n styles: PhoneNumberFieldCss,\n template: PhoneNumberFieldTemplate,\n dependencies: [\n UDExDropdown,\n UDExList,\n UDExListItem,\n UDExButton,\n UDExStatusMessage,\n ],\n})\n/**\n * Fired when the value of the component changes at each keystroke.\n *\n * @public\n */\n@event(\"input\")\n/**\n * Fired when the input operation has finished by pressing Enter or on focusout.\n *\n * @public\n */\n@event(\"change\")\nclass UDExPhoneNumberField extends UI5Element {\n /**\n * Defines label text for the textarea field.\n *\n * @default \"\"\n * @public\n */\n @property({ type: String, defaultValue: \"\" })\n label!: string;\n\n /**\n * Defines the value state of the component.\n *\n * @default \"Standard\"\n * @public\n */\n @property({ type: FieldState, defaultValue: FieldState.Standard })\n fieldState!: `${FieldState}`;\n\n /**\n * Defines supporting text under the input field.\n *\n * @default \"\"\n * @public\n */\n @property({ type: String, defaultValue: \"\" })\n supportingText!: string;\n\n /**\n * Defines whether the component is required.\n *\n * @default false\n * @public\n */\n @property({ type: Boolean })\n required!: boolean;\n\n /**\n * Defines whether the component is in disabled state.\n * <br><br>\n * <b>Note:</b> A disabled component is completely noninteractive.\n *\n * @default false\n * @public\n */\n @property({ type: Boolean })\n disabled!: boolean;\n\n /**\n * Defines whether the component is read-only.\n * <br><br>\n * <b>Note:</b> A read-only component is not editable,\n * but still provides visual feedback upon user interaction.\n *\n * @default false\n * @public\n */\n @property({ type: Boolean })\n readonly!: boolean;\n\n /**\n * Defines whether the component is display-only.\n * <br><br>\n * <b>Note:</b> A display-only component is not editable,\n * but still provides visual feedback upon user interaction, input border is not visible.\n *\n * @default false\n * @public\n */\n @property({ type: Boolean })\n displayonly!: boolean;\n\n /**\n * Defines the country iso code selected by the user\n * <br><br>\n * Note: should be used two-letter country codes, e.g.: \"DE\" | \"PL\" | \"UA\" | \"US\"\n *\n * @default \"\"\n * @public\n */\n @property({ type: String, defaultValue: \"\" })\n selectedIso!: string;\n\n /**\n * Defines the autoselected country iso code\n *\n * @default \"\"\n * @private\n */\n @property({ type: String, noAttribute: true, defaultValue: \"\" })\n autoSelectedIso!: string;\n\n /**\n * Allows to define the list of blocked country.\n *\n * @default \"\"\n * @public\n */\n @property({ type: String })\n blockedCountryCodes?: string;\n\n /**\n * Allows control over the height.\n *\n * @public\n */\n @property({ type: String })\n height?: string;\n\n /**\n * Defines the value of the component.\n *\n * @default \"\"\n */\n @property({ type: String, defaultValue: \"\" })\n value!: string;\n\n /**\n * Defines the open button icon\n *\n * @private\n */\n @property({ type: String, noAttribute: true, defaultValue: OpenButtonIcon.iconDown })\n buttonIcon!: string;\n\n /**\n * Defines the phone format of the input\n *\n * @private\n */\n @property({ type: String, defaultValue: initialPlaceholder, noAttribute: true })\n phoneFormat!: string;\n\n /**\n * Defines the maxlength of the input\n *\n * @private\n */\n @property({ validator: Integer })\n maxlength!: number;\n\n /**\n * Defines the accessible ARIA name of the component.\n *\n * @default \"\"\n * @public\n */\n @property()\n accessibleName!: string;\n\n /**\n * Receives id (or many ids) of the elements that label the component.\n * @default \"\"\n * @public\n */\n @property({ defaultValue: \"\" })\n accessibleNameRef!: string;\n\n /**\n * Defines the allowed keys for the input\n *\n * @private\n */\n @property({ type: String, multiple: true, noAttribute: true })\n allowedKeys: string[] = [\n \"Backspace\",\n \"Delete\",\n \"ArrowLeft\",\n \"ArrowRight\",\n \"Tab\",\n \"Enter\",\n \"Home\",\n \"End\",\n \"Escape\",\n ];\n\n /**\n * Keeps the value of previously pressed key\n *\n * @private\n */\n @property({ type: String, multiple: false, noAttribute: true })\n previousKey!: string;\n\n static i18nBundle: I18nBundle;\n _dropdown!: UDExDropdown;\n _handleResizeBound: ResizeObserverCallback;\n\n static async onDefine() {\n UDExPhoneNumberField.i18nBundle = await getI18nBundle(\"sap-ui-webcomponents-bundle\");\n }\n\n get countrySelectorAriaLabel() {\n return this.accessibleName || UDExPhoneNumberField.i18nBundle.getText(COUNTRY_SELECT);\n }\n\n get countryIso() {\n return this.selectedIso || this.autoSelectedIso;\n }\n\n countriesList: ExtendedCountriesListPhoneNumberData[] = CountryListDB;\n\n constructor() {\n super();\n this._handleResizeBound = this._handleResize.bind(this);\n }\n\n onEnterDOM(): void {\n ResizeHandler.register(this, this._handleResizeBound);\n }\n\n onExitDOM(): void {\n ResizeHandler.deregister(this, this._handleResizeBound);\n }\n\n onAfterRendering() {\n this._dropdown = this.getDropdown();\n }\n\n onClick(): void {\n if (this.isButtonDisabled) {\n return;\n }\n const button = this.getButton();\n const dropdown = this.getDropdown();\n\n if (dropdown.open) {\n dropdown.onClose();\n } else {\n dropdown.onOpen(button);\n }\n }\n\n _handleResize() {\n this._dropdown.style.setProperty(\"--udex-dropdown-pane-width\", `${this.offsetWidth}px`);\n }\n\n handleInput(e: InputEvent) {\n this.value = (e.target as HTMLInputElement)?.value.trim();\n\n this.applyPhoneMask();\n\n if (!this.value.startsWith(this.selectedPhonePrefix)) {\n this.selectedIso = \"\";\n }\n\n if (this.value.length === 0 || this.value === \"+\") {\n this.autoSelectedIso = \"\";\n this.selectedIso = \"\";\n }\n\n this.fireEvent(\"input\");\n }\n\n handleChange() {\n this.fireEvent(\"change\");\n }\n\n handleKeyDown = (e: KeyboardEvent) => {\n const isKeyAllowed = e.key.match(/\\d/)\n || this.allowedKeys.includes(e.key)\n || e.metaKey\n || e.ctrlKey;\n\n if (!isKeyAllowed) {\n e.preventDefault();\n }\n\n e.stopPropagation();\n this.previousKey = e.key;\n };\n\n handleKeyUp() {\n this.value = this.value.replace(/[^\\d+ ()-]/g, \"\").trim();\n this.applyPhoneMask();\n }\n\n handleFocus() {\n if (this.countryIso.length === 0) {\n this.phoneFormat = initialPlaceholder;\n }\n\n if (this.value.length === 0 || this.value === \"+\") {\n this.value = this.selectedPhonePrefix;\n }\n }\n\n handleBlur() {\n this.applyPlaceholder();\n\n const prefixLength = this.selectedPhonePrefix.length;\n const enteredPrefix = this.value.substring(0, prefixLength);\n const isIncorrectPrefixEntered = enteredPrefix !== this.selectedPhonePrefix;\n\n const isIncorrectNumberEntered = !this.countryIso || this.value.length <= prefixLength || isIncorrectPrefixEntered;\n\n if (isIncorrectNumberEntered) {\n this.value = \"\";\n }\n\n this.fireEvent(\"change\");\n }\n\n handleSelect(e: CustomEvent) {\n const dropdown = this.getDropdown();\n\n dropdown.onClose();\n\n this.selectedIso = e.detail.item.id;\n this.value = this.selectedPhonePrefix;\n this.phoneFormat = this.value + this.selectedPlaceholder;\n this.maxlength = this.phoneFormat.length;\n this.getInputField().focus();\n }\n\n handleDropdownOpen() {\n this.buttonIcon = OpenButtonIcon.iconUp;\n }\n handleDropdownClose() {\n this.buttonIcon = OpenButtonIcon.iconDown;\n }\n\n autoSelectCountry(value: string) {\n const countryToSelect = this.updatedCountriesList.find(country => {\n const valuePhonePrefix = value.substring(0, country.phonePrefix.length);\n\n return country.phonePrefix === valuePhonePrefix;\n });\n\n if (countryToSelect) {\n this.autoSelectedIso = countryToSelect.iso;\n }\n\n if (this.selectedPhonePrefix && this.selectedPlaceholder) {\n this.maxlength = this.selectedPhonePrefix.length + this.selectedPlaceholder.length;\n }\n }\n\n applyPhoneMask() {\n const isNewPrefixEntered = this.value.substring(0, this.selectedPhonePrefix.length) !== this.selectedPhonePrefix;\n if (this.value.split(\"\")[0] !== \"+\") {\n this.value = `+${this.value}`;\n }\n\n this.autoSelectCountry(this.value);\n\n if (isNewPrefixEntered) {\n return;\n }\n\n const mask = this.selectedPhonePrefix + this.selectedPlaceholder;\n const maskSymbols = [\" \", \"-\", \"(\", \")\"];\n\n const valueWithMask = this.value.split(\"\").map((char, index) => {\n if (maskSymbols.includes(char) && char === mask[index]) {\n return char;\n }\n if (maskSymbols.includes(char) && char !== mask[index]) {\n return \"\";\n }\n if (maskSymbols.includes(mask[index]) && char !== mask[index]) {\n return `${mask[index]}${char}`;\n }\n return char;\n }).join(\"\");\n\n this.value = valueWithMask;\n\n if (this.value.length > this.maxlength) {\n this.value = this.value.substring(0, this.maxlength);\n }\n }\n\n applyPlaceholder() {\n this.phoneFormat = this.countryIso.length > 0\n ? this.selectedPhonePrefix + this.selectedPlaceholder : initialPlaceholder;\n }\n\n getDropdown() {\n return this.shadowRoot!.querySelector<UDExDropdown>(\n \"[udex-dropdown]\",\n )!;\n }\n\n getButton() {\n return this.shadowRoot!.querySelector<UDExButton>(\n \"[udex-button]\",\n )!;\n }\n\n getInputField() {\n return this.shadowRoot!.querySelector<HTMLFormElement>(\n \"input\",\n )!;\n }\n\n get selectedPhonePrefix(): string {\n if (!this.countryIso) {\n return \"\";\n }\n\n return this.updatedCountriesList.filter(country => country.iso === this.countryIso)[0]?.phonePrefix\n || this.updatedCountriesList[0]?.phonePrefix;\n }\n\n get selectedPlaceholder(): string {\n if (!this.countryIso) {\n return \"\";\n }\n\n return this.updatedCountriesList.filter(country => country.iso === this.countryIso)[0]?.phoneFmt\n || this.updatedCountriesList[0]?.phoneFmt;\n }\n\n get selectedCountryName(): string {\n if (!this.countryIso) {\n return \"\";\n }\n\n return this.updatedCountriesList.filter(country => country.iso === this.countryIso)[0]?.countryName\n || this.updatedCountriesList[0]?.countryName;\n }\n\n get selectedFlagBackgroundPosition() {\n if (!this.countryIso) {\n return {};\n }\n\n const selectedCountry = this.updatedCountriesList.filter(country => country.iso === this.countryIso)[0];\n\n if (!selectedCountry) {\n return {};\n }\n\n return { \"backgroundPosition\": `${selectedCountry.flagX} ${selectedCountry.flagY}` };\n }\n\n get ariaInvalid() {\n return this.fieldState === FieldState.Error ? \"true\" : null;\n }\n\n get isInputReadonly() {\n return this.readonly || this.displayonly;\n }\n\n get isButtonDisabled() {\n return this.disabled || this.isInputReadonly;\n }\n\n get updatedCountriesList(): ExtendedCountriesListPhoneNumberData[] {\n return this.countriesList.map(country => {\n if (country.selected) {\n delete country.selected;\n }\n\n if (country.iso === this.countryIso) {\n country.selected = true;\n }\n\n return country;\n });\n }\n\n onBeforeRendering() {\n this.applyPlaceholder();\n\n if (this.blockedCountryCodes?.length) {\n const blockedCountryCodesArray = this.blockedCountryCodes.split(\",\").map(code => code.trim().toUpperCase());\n this.countriesList = this.countriesList\n .filter(country => !blockedCountryCodesArray?.includes(country.iso.toUpperCase()));\n }\n }\n}\n\nUDExPhoneNumberField.define();\n\nexport default UDExPhoneNumberField;\n"]}
package/dist/Search.d.ts CHANGED
@@ -346,6 +346,9 @@ declare class UDExSearch extends UI5Element {
346
346
  get showNoResultMessage(): boolean;
347
347
  get isShowSuggestedList(): boolean;
348
348
  get isShowRecommendedList(): boolean;
349
+ get hasPopoverContent(): boolean;
350
+ get getAriaControls(): string;
351
+ get getSuggestionsPopoverId(): string;
349
352
  get isShowSubmitButton(): boolean;
350
353
  get suggestedHeading(): string | undefined;
351
354
  get recommendedHeading(): string | undefined;