@sapudex/web-components 2.0.0 → 2.1.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 (195) hide show
  1. package/cypress/fixtures/footer-links.ts +221 -0
  2. package/cypress/specs/Checkbox.cy.tsx +92 -0
  3. package/cypress/specs/CountrySelector.cy.tsx +215 -0
  4. package/cypress/specs/Footer.cy.tsx +313 -0
  5. package/cypress/specs/PhoneNumberField.cy.tsx +2 -2
  6. package/cypress/specs/Table.cy.tsx +361 -0
  7. package/cypress/specs/TextField.cy.tsx +4 -0
  8. package/cypress/specs/Tooltip.cy.tsx +26 -0
  9. package/cypress/specs/Upload.cy.tsx +20 -3
  10. package/dist/AssetsVariables.js +1 -1
  11. package/dist/AssetsVariables.js.map +1 -1
  12. package/dist/Checkbox.d.ts +17 -0
  13. package/dist/Checkbox.js +36 -1
  14. package/dist/Checkbox.js.map +1 -1
  15. package/dist/FilterMenu.d.ts +7 -0
  16. package/dist/FilterMenu.js +3 -0
  17. package/dist/FilterMenu.js.map +1 -1
  18. package/dist/Link.d.ts +3 -4
  19. package/dist/Link.js +4 -5
  20. package/dist/Link.js.map +1 -1
  21. package/dist/MastheadItem.d.ts +21 -2
  22. package/dist/MastheadItem.js +95 -13
  23. package/dist/MastheadItem.js.map +1 -1
  24. package/dist/MastheadMenu.d.ts +1 -0
  25. package/dist/MastheadMenu.js +11 -5
  26. package/dist/MastheadMenu.js.map +1 -1
  27. package/dist/MastheadMobileMenu.d.ts +8 -2
  28. package/dist/MastheadMobileMenu.js +8 -2
  29. package/dist/MastheadMobileMenu.js.map +1 -1
  30. package/dist/MastheadShell.d.ts +24 -12
  31. package/dist/MastheadShell.js +75 -26
  32. package/dist/MastheadShell.js.map +1 -1
  33. package/dist/PasswordField.d.ts +10 -0
  34. package/dist/PasswordField.js +14 -0
  35. package/dist/PasswordField.js.map +1 -1
  36. package/dist/PhoneNumberField.d.ts +1 -0
  37. package/dist/PhoneNumberField.js +15 -1
  38. package/dist/PhoneNumberField.js.map +1 -1
  39. package/dist/RadioButton.d.ts +1 -0
  40. package/dist/RadioButton.js +1 -0
  41. package/dist/RadioButton.js.map +1 -1
  42. package/dist/SecondaryNavigation.d.ts +6 -5
  43. package/dist/SecondaryNavigation.js +8 -6
  44. package/dist/SecondaryNavigation.js.map +1 -1
  45. package/dist/SecondaryNavigationItem.d.ts +9 -6
  46. package/dist/SecondaryNavigationItem.js +19 -13
  47. package/dist/SecondaryNavigationItem.js.map +1 -1
  48. package/dist/SecondaryNavigationSubItem.d.ts +8 -4
  49. package/dist/SecondaryNavigationSubItem.js +6 -5
  50. package/dist/SecondaryNavigationSubItem.js.map +1 -1
  51. package/dist/Table.d.ts +1 -1
  52. package/dist/Table.js +1 -1
  53. package/dist/Table.js.map +1 -1
  54. package/dist/TextField.d.ts +8 -0
  55. package/dist/TextField.js +15 -0
  56. package/dist/TextField.js.map +1 -1
  57. package/dist/Tooltip.d.ts +5 -0
  58. package/dist/Tooltip.js +11 -1
  59. package/dist/Tooltip.js.map +1 -1
  60. package/dist/Upload.d.ts +12 -2
  61. package/dist/Upload.js +25 -1
  62. package/dist/Upload.js.map +1 -1
  63. package/dist/assets/{InputSuggestions-pMcXiozG.js → InputSuggestions-CP3cBQsh.js} +1 -1
  64. package/dist/assets/{ListItemStandardExpandableTextTemplate-BoB9C9hl.js → ListItemStandardExpandableTextTemplate-CLBtdbBK.js} +1 -1
  65. package/dist/assets/bundle-C9ZlnwwH.css +1 -0
  66. package/dist/assets/{bundle.esm-4ejJpC9l.js → bundle.esm-jHcdiVfj.js} +224 -224
  67. package/dist/assets/messagebundle_en-CVKgy_9L.js +1 -0
  68. package/dist/css/themes/Button.css +1 -1
  69. package/dist/css/themes/Checkbox.css +1 -1
  70. package/dist/css/themes/MastheadItem.css +1 -1
  71. package/dist/css/themes/RadioButton.css +1 -1
  72. package/dist/css/themes/RatingIndicator.css +1 -1
  73. package/dist/css/themes/Search.css +1 -1
  74. package/dist/css/themes/Slider.css +1 -1
  75. package/dist/css/themes/Tooltip.css +1 -1
  76. package/dist/css/themes/Upload.css +1 -1
  77. package/dist/css/themes/WizardTab.css +1 -1
  78. package/dist/custom-elements-internal.json +204 -12
  79. package/dist/custom-elements.json +165 -8
  80. package/dist/generated/assets/i18n/messagebundle_en.json +1 -1
  81. package/dist/generated/i18n/i18n-defaults.d.ts +4 -1
  82. package/dist/generated/i18n/i18n-defaults.js +4 -1
  83. package/dist/generated/i18n/i18n-defaults.js.map +1 -1
  84. package/dist/generated/templates/FilterMenuTemplate.lit.js +1 -1
  85. package/dist/generated/templates/FilterMenuTemplate.lit.js.map +1 -1
  86. package/dist/generated/templates/MastheadItemTemplate.lit.js +2 -2
  87. package/dist/generated/templates/MastheadItemTemplate.lit.js.map +1 -1
  88. package/dist/generated/templates/MastheadMenuTemplate.lit.js +1 -1
  89. package/dist/generated/templates/MastheadMenuTemplate.lit.js.map +1 -1
  90. package/dist/generated/templates/MastheadMobileMenuTemplate.lit.js +2 -2
  91. package/dist/generated/templates/MastheadMobileMenuTemplate.lit.js.map +1 -1
  92. package/dist/generated/templates/MastheadShellTemplate.lit.js +6 -5
  93. package/dist/generated/templates/MastheadShellTemplate.lit.js.map +1 -1
  94. package/dist/generated/templates/PasswordFieldTemplate.lit.js +1 -1
  95. package/dist/generated/templates/PasswordFieldTemplate.lit.js.map +1 -1
  96. package/dist/generated/templates/SecondaryNavigationItemTemplate.lit.js +1 -1
  97. package/dist/generated/templates/SecondaryNavigationItemTemplate.lit.js.map +1 -1
  98. package/dist/generated/templates/TextFieldTemplate.lit.js +1 -1
  99. package/dist/generated/templates/TextFieldTemplate.lit.js.map +1 -1
  100. package/dist/generated/templates/UploadTemplate.lit.js +2 -2
  101. package/dist/generated/templates/UploadTemplate.lit.js.map +1 -1
  102. package/dist/generated/themes/Button.css.d.ts +1 -1
  103. package/dist/generated/themes/Button.css.js +1 -1
  104. package/dist/generated/themes/Button.css.js.map +1 -1
  105. package/dist/generated/themes/Checkbox.css.d.ts +1 -1
  106. package/dist/generated/themes/Checkbox.css.js +1 -1
  107. package/dist/generated/themes/Checkbox.css.js.map +1 -1
  108. package/dist/generated/themes/MastheadItem.css.d.ts +1 -1
  109. package/dist/generated/themes/MastheadItem.css.js +1 -1
  110. package/dist/generated/themes/MastheadItem.css.js.map +1 -1
  111. package/dist/generated/themes/RadioButton.css.d.ts +1 -1
  112. package/dist/generated/themes/RadioButton.css.js +1 -1
  113. package/dist/generated/themes/RadioButton.css.js.map +1 -1
  114. package/dist/generated/themes/RatingIndicator.css.d.ts +1 -1
  115. package/dist/generated/themes/RatingIndicator.css.js +1 -1
  116. package/dist/generated/themes/RatingIndicator.css.js.map +1 -1
  117. package/dist/generated/themes/Search.css.d.ts +1 -1
  118. package/dist/generated/themes/Search.css.js +1 -1
  119. package/dist/generated/themes/Search.css.js.map +1 -1
  120. package/dist/generated/themes/Slider.css.d.ts +1 -1
  121. package/dist/generated/themes/Slider.css.js +1 -1
  122. package/dist/generated/themes/Slider.css.js.map +1 -1
  123. package/dist/generated/themes/Tooltip.css.d.ts +1 -1
  124. package/dist/generated/themes/Tooltip.css.js +1 -1
  125. package/dist/generated/themes/Tooltip.css.js.map +1 -1
  126. package/dist/generated/themes/Upload.css.d.ts +1 -1
  127. package/dist/generated/themes/Upload.css.js +1 -1
  128. package/dist/generated/themes/Upload.css.js.map +1 -1
  129. package/dist/generated/themes/WizardTab.css.d.ts +1 -1
  130. package/dist/generated/themes/WizardTab.css.js +1 -1
  131. package/dist/generated/themes/WizardTab.css.js.map +1 -1
  132. package/dist/messagebundle.properties +9 -1
  133. package/dist/messagebundle_en.properties +4 -1
  134. package/dist/vscode.html-custom-data.json +29 -4
  135. package/dist/web-types.json +113 -11
  136. package/package.json +1 -1
  137. package/src/AssetsVariables.ts +1 -1
  138. package/src/Checkbox.ts +47 -0
  139. package/src/FilterMenu.hbs +2 -0
  140. package/src/FilterMenu.ts +8 -0
  141. package/src/Link.ts +4 -5
  142. package/src/MastheadItem.hbs +2 -2
  143. package/src/MastheadItem.ts +119 -15
  144. package/src/MastheadMenu.hbs +4 -1
  145. package/src/MastheadMenu.ts +12 -5
  146. package/src/MastheadMobileMenu.hbs +2 -2
  147. package/src/MastheadMobileMenu.ts +16 -3
  148. package/src/MastheadShell.hbs +14 -3
  149. package/src/MastheadShell.ts +98 -36
  150. package/src/PasswordField.hbs +1 -0
  151. package/src/PasswordField.ts +14 -0
  152. package/src/PhoneNumberField.ts +19 -1
  153. package/src/RadioButton.ts +1 -0
  154. package/src/SecondaryNavigation.ts +14 -10
  155. package/src/SecondaryNavigationItem.hbs +1 -1
  156. package/src/SecondaryNavigationItem.ts +25 -16
  157. package/src/SecondaryNavigationSubItem.ts +13 -7
  158. package/src/Table.ts +2 -2
  159. package/src/TextField.hbs +2 -0
  160. package/src/TextField.ts +16 -0
  161. package/src/Tooltip.ts +19 -0
  162. package/src/Upload.hbs +4 -4
  163. package/src/Upload.ts +24 -3
  164. package/src/generated/i18n/i18n-defaults.ts +2 -2
  165. package/src/generated/templates/FilterMenuTemplate.lit.ts +1 -1
  166. package/src/generated/templates/MastheadItemTemplate.lit.ts +2 -2
  167. package/src/generated/templates/MastheadMenuTemplate.lit.ts +1 -1
  168. package/src/generated/templates/MastheadMobileMenuTemplate.lit.ts +2 -2
  169. package/src/generated/templates/MastheadShellTemplate.lit.ts +6 -5
  170. package/src/generated/templates/PasswordFieldTemplate.lit.ts +1 -1
  171. package/src/generated/templates/SecondaryNavigationItemTemplate.lit.ts +1 -1
  172. package/src/generated/templates/TextFieldTemplate.lit.ts +1 -1
  173. package/src/generated/templates/UploadTemplate.lit.ts +2 -2
  174. package/src/generated/themes/Button.css.ts +1 -1
  175. package/src/generated/themes/Checkbox.css.ts +1 -1
  176. package/src/generated/themes/MastheadItem.css.ts +1 -1
  177. package/src/generated/themes/RadioButton.css.ts +1 -1
  178. package/src/generated/themes/RatingIndicator.css.ts +1 -1
  179. package/src/generated/themes/Search.css.ts +1 -1
  180. package/src/generated/themes/Slider.css.ts +1 -1
  181. package/src/generated/themes/Tooltip.css.ts +1 -1
  182. package/src/generated/themes/Upload.css.ts +1 -1
  183. package/src/generated/themes/WizardTab.css.ts +1 -1
  184. package/src/i18n/messagebundle.properties +9 -1
  185. package/src/i18n/messagebundle_en.properties +4 -1
  186. package/src/themes/Button.css +9 -5
  187. package/src/themes/Checkbox.css +15 -1
  188. package/src/themes/MastheadItem.css +9 -3
  189. package/src/themes/RadioButton.css +2 -0
  190. package/src/themes/Search.css +1 -0
  191. package/src/themes/Tooltip.css +1 -1
  192. package/src/themes/Upload.css +10 -2
  193. package/src/themes/WizardTab.css +5 -0
  194. package/dist/assets/bundle-7XIcgsQH.css +0 -1
  195. package/dist/assets/messagebundle_en-BYIX4tmE.js +0 -1
@@ -0,0 +1,361 @@
1
+ import UDExTable from "../../src/Table.js";
2
+ import UDExTableHeaderRow from "../../src/TableHeaderRow.js";
3
+ import UDExTableHeaderCell from "../../src/TableHeaderCell.js";
4
+ import UDExTableRow from "../../src/TableRow.js";
5
+ import UDExTableGroupRow from "../../src/TableGroupRow.js";
6
+ import UDExTableCell from "../../src/TableCell.js";
7
+ import UDExButton from "../../src/Button.js";
8
+ import UDExLink from "../../src/Link.js";
9
+ import UDExRatingIndicator from "../../src/RatingIndicator.js";
10
+
11
+ const defaultTable = <UDExTable
12
+ id="table"
13
+ sticky-header
14
+ heading="Microsoft Surface and Apple MacBook"
15
+ accessibleName="table devices"
16
+ maxHeight="200px">
17
+ <UDExTableHeaderRow id="tableHeaderRow" slot="headerRow">
18
+ <UDExTableHeaderCell
19
+ id="tableHeaderCell"
20
+ icon-start="sap-icon://bell"
21
+ icon-end="sap-icon://accessibility"
22
+ highlighted>
23
+ Product
24
+ </UDExTableHeaderCell>
25
+ <UDExTableHeaderCell>Processor</UDExTableHeaderCell>
26
+ <UDExTableHeaderCell>Display</UDExTableHeaderCell>
27
+ <UDExTableHeaderCell>Resolution</UDExTableHeaderCell>
28
+ <UDExTableHeaderCell>RAM</UDExTableHeaderCell>
29
+ <UDExTableHeaderCell>Storage</UDExTableHeaderCell>
30
+ <UDExTableHeaderCell>Rating</UDExTableHeaderCell>
31
+ <UDExTableHeaderCell highlighted>Price</UDExTableHeaderCell>
32
+ <UDExTableHeaderCell>Action</UDExTableHeaderCell>
33
+ </UDExTableHeaderRow>
34
+ <UDExTableRow id="table-row">
35
+ <UDExTableCell id="table-cell" icon="sap-icon://bell">
36
+ <i><UDExLink id="link-row1">SURFACE PRO4</UDExLink></i>
37
+ </UDExTableCell>
38
+ <UDExTableCell><UDExButton id="button-row1" size="Small">Intel Core M3, i5</UDExButton></UDExTableCell>
39
+ <UDExTableCell>12.3 inches</UDExTableCell>
40
+ <UDExTableCell>2736 x 1824</UDExTableCell>
41
+ <UDExTableCell>4GB, 8GB, 16GB</UDExTableCell>
42
+ <UDExTableCell>256GB, 512GB, 1TB</UDExTableCell>
43
+ <UDExTableCell><UDExRatingIndicator id="rating-row1" class="rating-indicator" value={5} max={5} readonly display="Desktop"></UDExRatingIndicator></UDExTableCell>
44
+ <UDExTableCell _highlighted><span class="price">$899</span></UDExTableCell>
45
+ <UDExTableCell><UDExButton size="Small">Buy now</UDExButton></UDExTableCell>
46
+ </UDExTableRow>
47
+ <UDExTableRow>
48
+ <UDExTableCell><UDExButton id="button-row2" size="Small">SURFACE PRO3</UDExButton></UDExTableCell>
49
+ <UDExTableCell><UDExLink id="link-row2">Intel Core i3, Core i7</UDExLink></UDExTableCell>
50
+ <UDExTableCell>12 inches</UDExTableCell>
51
+ <UDExTableCell>2160 x 1440</UDExTableCell>
52
+ <UDExTableCell>4GB, 8GB</UDExTableCell>
53
+ <UDExTableCell>128GB, 256GB, 512GB</UDExTableCell>
54
+ <UDExTableCell><UDExRatingIndicator class="rating-indicator" value={5} max={5} readonly display="Desktop"></UDExRatingIndicator></UDExTableCell>
55
+ <UDExTableCell _highlighted><span class="sale">$799</span></UDExTableCell>
56
+ <UDExTableCell><UDExButton size="Small">Buy now</UDExButton></UDExTableCell>
57
+ </UDExTableRow>
58
+ <UDExTableRow>
59
+ <UDExTableCell><i>MACBOOK AIR</i></UDExTableCell>
60
+ <UDExTableCell>Intel Core i5 or i7</UDExTableCell>
61
+ <UDExTableCell>13.3 inches</UDExTableCell>
62
+ <UDExTableCell>1440 x 900</UDExTableCell>
63
+ <UDExTableCell>8GB</UDExTableCell>
64
+ <UDExTableCell>128GB, 256GB, 512GB</UDExTableCell>
65
+ <UDExTableCell><UDExRatingIndicator class="rating-indicator" value={5} max={5} readonly display="Desktop"></UDExRatingIndicator></UDExTableCell>
66
+ <UDExTableCell _highlighted><span class="price">$899</span></UDExTableCell>
67
+ <UDExTableCell><UDExButton size="Small">Buy now</UDExButton></UDExTableCell>
68
+ </UDExTableRow>
69
+ <UDExTableRow>
70
+ <UDExTableCell><i>MACBOOK PRO</i></UDExTableCell>
71
+ <UDExTableCell>Intel Core i5 or i7</UDExTableCell>
72
+ <UDExTableCell>13.3 inches</UDExTableCell>
73
+ <UDExTableCell>2560 x 1600</UDExTableCell>
74
+ <UDExTableCell>8GB, 16GB</UDExTableCell>
75
+ <UDExTableCell>256GB, 512GB, 1TB</UDExTableCell>
76
+ <UDExTableCell><UDExRatingIndicator class="rating-indicator" value={5} max={5} readonly display="Desktop"></UDExRatingIndicator></UDExTableCell>
77
+ <UDExTableCell _highlighted><span class="price">$1,299</span></UDExTableCell>
78
+ <UDExTableCell><UDExButton size="Small">Buy now</UDExButton></UDExTableCell>
79
+ </UDExTableRow>
80
+ <UDExTableGroupRow
81
+ id="table-group-row"
82
+ group-title="Apple MacBook"
83
+ collapsible>
84
+ <UDExTableRow>
85
+ <UDExTableCell><i>MACBOOK AIR</i></UDExTableCell>
86
+ <UDExTableCell>Intel Core i5 or i7</UDExTableCell>
87
+ <UDExTableCell>13.3 inches</UDExTableCell>
88
+ <UDExTableCell>1440 x 900</UDExTableCell>
89
+ <UDExTableCell>8GB</UDExTableCell>
90
+ <UDExTableCell>128GB, 256GB, 512GB</UDExTableCell>
91
+ <UDExTableCell><UDExRatingIndicator class="rating-indicator" value={5} max={5} readonly display="Desktop"></UDExRatingIndicator></UDExTableCell>
92
+ <UDExTableCell><span class="price">$899</span></UDExTableCell>
93
+ <UDExTableCell><UDExButton size="Small">Buy now</UDExButton></UDExTableCell>
94
+ </UDExTableRow>
95
+ <UDExTableRow>
96
+ <UDExTableCell><i>MACBOOK PRO</i></UDExTableCell>
97
+ <UDExTableCell>Intel Core i5 or i7</UDExTableCell>
98
+ <UDExTableCell>13.3 inches</UDExTableCell>
99
+ <UDExTableCell>2560 x 1600</UDExTableCell>
100
+ <UDExTableCell>8GB, 16GB</UDExTableCell>
101
+ <UDExTableCell>256GB, 512GB, 1TB</UDExTableCell>
102
+ <UDExTableCell><UDExRatingIndicator class="rating-indicator" value={5} max={5} readonly display="Desktop"></UDExRatingIndicator></UDExTableCell>
103
+ <UDExTableCell><span class="price">$1,299</span></UDExTableCell>
104
+ <UDExTableCell><UDExButton size="Small">Buy now</UDExButton></UDExTableCell>
105
+ </UDExTableRow>
106
+ <UDExTableRow>
107
+ <UDExTableCell><i>MACBOOK AIR</i></UDExTableCell>
108
+ <UDExTableCell>Intel Core i5 or i7</UDExTableCell>
109
+ <UDExTableCell>13.3 inches</UDExTableCell>
110
+ <UDExTableCell>1440 x 900</UDExTableCell>
111
+ <UDExTableCell>8GB</UDExTableCell>
112
+ <UDExTableCell>128GB, 256GB, 512GB</UDExTableCell>
113
+ <UDExTableCell><UDExRatingIndicator class="rating-indicator" value={5} max={5} readonly display="Desktop"></UDExRatingIndicator></UDExTableCell>
114
+ <UDExTableCell><span class="price">$899</span></UDExTableCell>
115
+ <UDExTableCell><UDExButton size="Small">Buy now</UDExButton></UDExTableCell>
116
+ </UDExTableRow>
117
+ </UDExTableGroupRow>
118
+ <UDExButton size="Small" icon="sap-icon://retail-store" design="Secondary" slot="actions">Back to Store</UDExButton>
119
+ <UDExButton size="Small" design="Tertiary" icon="sap-icon://cart" slot="actions">Cart</UDExButton>
120
+ <div class="footnotes" slot="footnotes">
121
+ <p><UDExLink id="UDExLink-example" href="/" design="Default">Microsoft Surface</UDExLink>: It's a line of touchscreen-based personal computers and interactive whiteboards designed and developed by Microsoft.</p>
122
+ <p><UDExLink id="UDExLink-example" href="/" design="Default">Apple MacBook</UDExLink>: It's known for its sleek design, high-quality performance, and integration with the macOS operating system.</p>
123
+ </div>
124
+ </UDExTable>
125
+
126
+ const noDataTableDefault = <UDExTable
127
+ id="table-no-data-default">
128
+ <UDExTableHeaderRow slot="headerRow">
129
+ <UDExTableHeaderCell
130
+ id="tableHeaderCell"
131
+ icon-start="sap-icon://bell"
132
+ icon-end="sap-icon://accessibility"
133
+ highlighted>
134
+ Product
135
+ </UDExTableHeaderCell>
136
+ <UDExTableHeaderCell>Processor</UDExTableHeaderCell>
137
+ <UDExTableHeaderCell>Display</UDExTableHeaderCell>
138
+ <UDExTableHeaderCell>Resolution</UDExTableHeaderCell>
139
+ <UDExTableHeaderCell>RAM</UDExTableHeaderCell>
140
+ <UDExTableHeaderCell>Storage</UDExTableHeaderCell>
141
+ <UDExTableHeaderCell>Rating</UDExTableHeaderCell>
142
+ <UDExTableHeaderCell highlighted>Price</UDExTableHeaderCell>
143
+ <UDExTableHeaderCell>Action</UDExTableHeaderCell>
144
+ </UDExTableHeaderRow>
145
+ </UDExTable>
146
+
147
+ const noDataTable = <UDExTable
148
+ id="table-no-data">
149
+ <UDExTableHeaderRow slot="headerRow">
150
+ <UDExTableHeaderCell
151
+ id="tableHeaderCell"
152
+ icon-start="sap-icon://bell"
153
+ icon-end="sap-icon://accessibility"
154
+ highlighted>
155
+ Product
156
+ </UDExTableHeaderCell>
157
+ <UDExTableHeaderCell>Processor</UDExTableHeaderCell>
158
+ <UDExTableHeaderCell>Display</UDExTableHeaderCell>
159
+ <UDExTableHeaderCell>Resolution</UDExTableHeaderCell>
160
+ <UDExTableHeaderCell>RAM</UDExTableHeaderCell>
161
+ <UDExTableHeaderCell>Storage</UDExTableHeaderCell>
162
+ <UDExTableHeaderCell>Rating</UDExTableHeaderCell>
163
+ <UDExTableHeaderCell highlighted>Price</UDExTableHeaderCell>
164
+ <UDExTableHeaderCell>Action</UDExTableHeaderCell>
165
+ </UDExTableHeaderRow>
166
+ <p id="customNoData" slot="noData">No custom data found</p>
167
+ </UDExTable>
168
+
169
+
170
+ const loadingTable = <UDExTable loading={true}
171
+ id="table-loading">
172
+ <UDExTableHeaderRow slot="headerRow">
173
+ <UDExTableHeaderCell
174
+ id="tableHeaderCell"
175
+ icon-start="sap-icon://bell"
176
+ icon-end="sap-icon://accessibility"
177
+ highlighted>
178
+ Product
179
+ </UDExTableHeaderCell>
180
+ <UDExTableHeaderCell>Processor</UDExTableHeaderCell>
181
+ <UDExTableHeaderCell>Display</UDExTableHeaderCell>
182
+ <UDExTableHeaderCell>Resolution</UDExTableHeaderCell>
183
+ <UDExTableHeaderCell>RAM</UDExTableHeaderCell>
184
+ <UDExTableHeaderCell>Storage</UDExTableHeaderCell>
185
+ <UDExTableHeaderCell>Rating</UDExTableHeaderCell>
186
+ <UDExTableHeaderCell highlighted>Price</UDExTableHeaderCell>
187
+ <UDExTableHeaderCell>Action</UDExTableHeaderCell>
188
+ </UDExTableHeaderRow>
189
+ </UDExTable>
190
+
191
+ const customWidthTable = <UDExTable customColumns="50px 50px 50px"
192
+ id="table-custom-width">
193
+ <UDExTableHeaderRow slot="headerRow">
194
+ <UDExTableHeaderCell
195
+ id="tableHeaderCell"
196
+ icon-start="sap-icon://bell"
197
+ icon-end="sap-icon://accessibility"
198
+ highlighted>
199
+ Product
200
+ </UDExTableHeaderCell>
201
+ <UDExTableHeaderCell>Processor</UDExTableHeaderCell>
202
+ <UDExTableHeaderCell>Display</UDExTableHeaderCell>
203
+ <UDExTableHeaderCell>Resolution</UDExTableHeaderCell>
204
+ </UDExTableHeaderRow>
205
+ <UDExTableRow>
206
+ <UDExTableCell>Cell1</UDExTableCell>
207
+ <UDExTableCell>Cell2</UDExTableCell>
208
+ <UDExTableCell>Cell3</UDExTableCell>
209
+ </UDExTableRow>
210
+ <UDExTableRow>
211
+ <UDExTableCell>Cell3</UDExTableCell>
212
+ <UDExTableCell>Cell4</UDExTableCell>
213
+ <UDExTableCell>Cell5</UDExTableCell>
214
+ </UDExTableRow>
215
+ </UDExTable>
216
+
217
+
218
+ describe("Table", () => {
219
+ beforeEach(() => {
220
+ cy.mount(defaultTable)
221
+ });
222
+
223
+ it("is correctly rendered", () => {
224
+ cy.get("#table").shadow().find(".udex-table").should("be.visible")
225
+ });
226
+
227
+ it("renders rows slot", () => {
228
+ cy.get("#table").shadow().find("slot").should("have.length", 4)
229
+ });
230
+
231
+ it("renders header row slot", () => {
232
+ cy.get("#table").shadow().find('slot[name="headerRow"]').should("have.length", 1)
233
+ });
234
+
235
+ it("renders actions slot", () => {
236
+ cy.get("#table").shadow().find('.udex-table-toolbar__actions > slot[name="actions"]').should("have.length", 1)
237
+ });
238
+
239
+ it("renders footnotes slot", () => {
240
+ cy.get("#table").shadow().find('.udex-table-footnotes > slot[name="footnotes"]').should("have.length", 1)
241
+ });
242
+
243
+ it("renders default no data content", () => {
244
+ cy.mount(noDataTableDefault)
245
+ cy.get("#table-no-data-default").shadow().find(".udex-table__no-data").should("have.text", "No data found")
246
+ });
247
+
248
+ it("renders custom no data slot", () => {
249
+ cy.mount(noDataTable)
250
+ cy.get("#table-no-data").shadow().find('.udex-table__no-data > slot[name="noData"]').should("have.length", 1)
251
+ expect(cy.get("#table-no-data").find("#customNoData").should("be.visible"))
252
+ });
253
+
254
+ it("renders header", () => {
255
+ cy.get("#table").shadow().find(".udex-table-toolbar__title").should("have.text", "Microsoft Surface and Apple MacBook")
256
+ });
257
+
258
+ it("tests render the right maximum height", () => {
259
+ cy.get("#table").shadow().find(".udex-table").then($tableWrap => {
260
+ const { maxHeight: tableMaxHeight } = window.getComputedStyle($tableWrap[0], "max-height")
261
+ expect(tableMaxHeight).eqls("200px")
262
+ })
263
+ });
264
+
265
+ it("tests render the sticky header", () => {
266
+ cy.get("#table").shadow().find(".udex-table__header-holder").then($tableHeaderWrap => {
267
+ const { position: tableHeaderPosition } = window.getComputedStyle($tableHeaderWrap[0], "position")
268
+ expect(tableHeaderPosition).eqls("sticky")
269
+ })
270
+ });
271
+
272
+ it("renders the loading indicator", () => {
273
+ cy.mount(loadingTable)
274
+ cy.get("#table-loading").shadow().find("ui5-busy-indicator").should("be.visible")
275
+ });
276
+
277
+ it("renders accessible name", () => {
278
+ cy.get("#table").shadow().find(".udex-table").should("have.attr", "aria-label", "table devices")
279
+ });
280
+
281
+ it("renders the right amount of header rows", () => {
282
+ cy.get("#table").find("udex-table-header-row").should("have.length", 1)
283
+ });
284
+
285
+ it("renders correct number of table-header-row-cell", () => {
286
+ cy.get("#table").find("#tableHeaderRow").find("udex-table-header-cell").should("have.length", 9)
287
+ });
288
+
289
+ it("renders correct number of table-row-cell", () => {
290
+ cy.get("#table").find("#table-row").find("udex-table-cell").should("have.length", 9)
291
+ });
292
+
293
+ it("renders correct number of rows of group", () => {
294
+ cy.get("#table").find("#table-group-row").find("udex-table-row").should("have.length", 3)
295
+ });
296
+
297
+ it("renders correct title of group button", () => {
298
+ cy.get("#table").find("#table-group-row").shadow().find(".udex-table-grow-btn").should("have.text", "Apple MacBook")
299
+ });
300
+
301
+ it("test hidden rows of group", () => {
302
+ cy.get("#table").find("#table-group-row").find(".udex-table-grow-rows").should("not.exist")
303
+ });
304
+
305
+ it("renders correct content in the header cell", () => {
306
+ cy.get("#table").find("#tableHeaderRow").find("udex-table-header-cell").first().should("have.text", "Product")
307
+ });
308
+
309
+ it("renders correct content in the cell", () => {
310
+ cy.get("#table").find("#table-row").find("udex-table-cell").first().should("have.text", "SURFACE PRO4")
311
+ });
312
+
313
+ it("renders icons in the header cell", () => {
314
+ cy.get("#table").find("#tableHeaderCell").shadow().find("ui5-icon").first().should("have.attr", "name", "sap-icon://bell")
315
+ cy.get("#table").find("#tableHeaderCell").shadow().find("ui5-icon").eq(1).should("have.attr", "name", "sap-icon://accessibility")
316
+ });
317
+
318
+ it("renders icons in the cell", () => {
319
+ cy.get("#table").find("#table-cell").shadow().find(".udex-table-cell__icon").should("have.attr", "name", "sap-icon://bell")
320
+ });
321
+
322
+ it("renders columns with custom width when specified", () => {
323
+ cy.mount(customWidthTable)
324
+ cy.get("#table-custom-width").find("udex-table-row").find("udex-table-cell").then($tableCell => {
325
+ const { width: cellWidth } = window.getComputedStyle($tableCell[0], "width")
326
+ expect(cellWidth).eqls("50px")
327
+ })
328
+ });
329
+
330
+ it("moves focus to previous interactive element after \"Arrow Left\" press", () => {
331
+ cy.get("#table").find("#table-row").find("udex-table-cell").eq(6).find("#rating-row1").click({force: true}).realPress("{leftarrow}")
332
+ cy.get("#table").find("#table-row").find("udex-table-cell").eq(1).find("#button-row1").shadow().find("button").then($button => {
333
+ const { borderColor: buttonBorder } = window.getComputedStyle($button[0], "::after");
334
+ expect(buttonBorder).eqls("rgb(255, 255, 255)")
335
+ })
336
+ });
337
+
338
+ it("moves focus to next interactive element after \"Arrow Right\" press", () => {
339
+ cy.get("#table").find("#table-row").find("udex-table-cell").eq(0).find("#link-row1").click({force: true}).realPress("{rightarrow}")
340
+ cy.get("#table").find("#table-row").find("udex-table-cell").eq(1).find("#button-row1").shadow().find("button").then($button => {
341
+ const { borderColor: buttonBorder } = window.getComputedStyle($button[0], "::after");
342
+ expect(buttonBorder).eqls("rgb(255, 255, 255)")
343
+ })
344
+ });
345
+
346
+ it("moves focus to next interactive element below after \"Arrow Down\" press", () => {
347
+ cy.get("#table").find("#table-row").find("udex-table-cell").eq(0).find("#link-row1").click({force: true}).realPress("{downarrow}")
348
+ cy.get("#table").find("udex-table-row").eq(1).find("udex-table-cell").eq(0).find("#button-row2").shadow().find("button").then($button => {
349
+ const { borderColor: buttonBorder } = window.getComputedStyle($button[0], "::after");
350
+ expect(buttonBorder).eqls("rgb(255, 255, 255)")
351
+ })
352
+ });
353
+
354
+ it("moves focus to next interactive element above after \"Arrow Up\" press", () => {
355
+ cy.get("#table").find("udex-table-row").eq(1).find("udex-table-cell").eq(0).find("#button-row2").click({force: true}).realPress("{uparrow}")
356
+ cy.get("#table").find("#table-row").find("udex-table-cell").eq(0).find("#link-row1").shadow().find("a").then($link => {
357
+ const { outlineColor } = window.getComputedStyle($link[0]);
358
+ expect(outlineColor).eqls("rgb(34, 53, 72)")
359
+ })
360
+ });
361
+ });
@@ -55,6 +55,10 @@ describe("Text Field", () => {
55
55
  cy.get("#defaultTextField").shadow().find("input").should("not.have.attr", "required");
56
56
  });
57
57
 
58
+ it("Autocomplete is off by default", () => {
59
+ cy.get("#defaultTextField").shadow().find("input").should("have.attr", "autocomplete", "off");
60
+ });
61
+
58
62
  it("Disabled attribute is set", () => {
59
63
  cy.mount(<UDExTextField disabled></UDExTextField>)
60
64
  cy.get("[udex-text-field]").shadow().find("input").should("have.attr", "disabled");
@@ -72,4 +72,30 @@ describe("Tooltip", () => {
72
72
  .should("have.attr", "open");
73
73
  });
74
74
  });
75
+
76
+ it("sync open when close by clicking outside", () => {
77
+ cy.mount(
78
+ <>
79
+ {tooltipOpener}
80
+ {basicTooltip}
81
+ </>
82
+ );
83
+
84
+ cy.get('#udex-tooltip').as("tooltip")
85
+ .invoke('attr', 'open', 'true');
86
+
87
+ cy.get("@tooltip")
88
+ .should("have.attr", "open");
89
+
90
+ cy.get("body").realClick();
91
+
92
+ cy.get("@tooltip")
93
+ .should("not.have.attr", "open");
94
+
95
+ cy.get('#udex-tooltip').as("tooltip")
96
+ .invoke('attr', 'open', 'true');
97
+
98
+ cy.get("@tooltip")
99
+ .should("have.attr", "open");
100
+ });
75
101
  });
@@ -18,13 +18,22 @@ const requiredUpload = <UDExUpload
18
18
  required>
19
19
  </UDExUpload>
20
20
 
21
+ const disabledUpload = <UDExUpload
22
+ id="disabledUpload"
23
+ additionalText="Max 10MB files are allowed. Only support .jpg, .png and .svg files"
24
+ uploadButtonText="Choose file(s)"
25
+ uploadTitle="Upload title"
26
+ multiple={false}
27
+ disabled>
28
+ </UDExUpload>
29
+
21
30
  const singleUpload = <UDExUpload
22
31
  id="singleUpload"
23
32
  additionalText="Max 10MB files are allowed. Only support .jpg, .png and .svg files"
24
33
  uploadButtonText="Choose file(s)"
25
34
  uploadTitle="Upload title"
26
35
  multiple={false}
27
- errorText="Only one attachment is allowed">
36
+ supportingText="Only one attachment is allowed">
28
37
  <UDExUploadItem fileName="File1" uploadState="Uploading" uploadPercentage={33}></UDExUploadItem>
29
38
  </UDExUpload>
30
39
 
@@ -59,6 +68,14 @@ describe("Upload", () => {
59
68
  });
60
69
  })
61
70
 
71
+ describe("Disabled", () => {
72
+ it("correctly disabled button for uploading when specified", () => {
73
+ cy.mount(disabledUpload)
74
+ cy.get("#disabledUpload").shadow().find("udex-button").should("have.attr", "disabled")
75
+ cy.get("#disabledUpload").shadow().find("udex-button").should("have.attr", "aria-disabled", "true")
76
+ });
77
+ })
78
+
62
79
  describe("Single", () => {
63
80
  beforeEach(() => {
64
81
  cy.mount(singleUpload)
@@ -69,7 +86,7 @@ describe("Upload", () => {
69
86
  .find("#fileUploader").click()
70
87
 
71
88
  cy.get("#singleUpload").shadow()
72
- .find(".udex-upload__error").should("have.text", "Only one attachment is allowed")
89
+ .find(".udex-upload__supporting-error-text").should("have.text", "Only one attachment is allowed")
73
90
  });
74
91
  })
75
92
 
@@ -83,7 +100,7 @@ describe("Upload", () => {
83
100
  uploadTitle="Upload title"
84
101
  multiple={false}
85
102
  onFileDelete={handleDelete}
86
- errorText="Only one attachment is allowed">
103
+ supportingText="Only one attachment is allowed">
87
104
  <UDExUploadItem fileName="File1" uploadState="Uploading" uploadPercentage={33}></UDExUploadItem>
88
105
  </UDExUpload>
89
106
  );
@@ -1,7 +1,7 @@
1
1
  import { getScopedVarName } from "@ui5/webcomponents-base/dist/CustomElementsScope.js";
2
2
  const variablesOverwrite = `:root {
3
3
  /* Browser Scrollbar */
4
- ${getScopedVarName("browser_scrollbar_border_radius")}: var(--udexRadiusM, 8px);
4
+ ${getScopedVarName("--browser_scrollbar_border_radius")}: var(--udexRadiusM, 8px);
5
5
 
6
6
  /* Tooltip */
7
7
  ${getScopedVarName("--_ui5_popover_box_shadow")}: 0px 0px 0px 1px var(--udexColorGrey4);
@@ -1 +1 @@
1
- {"version":3,"file":"AssetsVariables.js","sourceRoot":"","sources":["../src/AssetsVariables.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,qDAAqD,CAAC;AAEvF,MAAM,kBAAkB,GAAG;;IAEvB,gBAAgB,CAAC,iCAAiC,CAAC;;;IAGnD,gBAAgB,CAAC,2BAA2B,CAAC;;;IAG7C,gBAAgB,CAAC,0BAA0B,CAAC;;;IAG5C,gBAAgB,CAAC,sCAAsC,CAAC;IACxD,gBAAgB,CAAC,kCAAkC,CAAC;;;IAGpD,gBAAgB,CAAC,4CAA4C,CAAC;IAC9D,gBAAgB,CAAC,gCAAgC,CAAC;IAClD,gBAAgB,CAAC,wCAAwC,CAAC;IAC1D,gBAAgB,CAAC,uCAAuC,CAAC;IACzD,gBAAgB,CAAC,6CAA6C,CAAC;IAC/D,gBAAgB,CAAC,oDAAoD,CAAC;IACtE,gBAAgB,CAAC,gDAAgD,CAAC;IAClE,gBAAgB,CAAC,gCAAgC,CAAC;;;MAGhD,gBAAgB,CAAC,4CAA4C,CAAC;;;;;;;MAO9D,gBAAgB,CAAC,uBAAuB,CAAC;MACzC,gBAAgB,CAAC,wBAAwB,CAAC;MAC1C,gBAAgB,CAAC,oCAAoC,CAAC;MACtD,gBAAgB,CAAC,oCAAoC,CAAC;MACtD,gBAAgB,CAAC,+BAA+B,CAAC;MACjD,gBAAgB,CAAC,2CAA2C,CAAC;MAC7D,gBAAgB,CAAC,8BAA8B,CAAC;MAChD,gBAAgB,CAAC,+BAA+B,CAAC;MACjD,gBAAgB,CAAC,iCAAiC,CAAC;MACnD,gBAAgB,CAAC,uCAAuC,CAAC;MACzD,gBAAgB,CAAC,iCAAiC,CAAC;MACnD,gBAAgB,CAAC,gCAAgC,CAAC;MAClD,gBAAgB,CAAC,gCAAgC,CAAC;MAClD,gBAAgB,CAAC,+BAA+B,CAAC;;CAEtD,CAAC;AAEF,eAAe,kBAAkB,CAAC","sourcesContent":["import { getScopedVarName } from \"@ui5/webcomponents-base/dist/CustomElementsScope.js\";\n\nconst variablesOverwrite = `:root {\n /* Browser Scrollbar */\n ${getScopedVarName(\"browser_scrollbar_border_radius\")}: var(--udexRadiusM, 8px);\n\n /* Tooltip */\n ${getScopedVarName(\"--_ui5_popover_box_shadow\")}: 0px 0px 0px 1px var(--udexColorGrey4);\n\n /* Tokenizer */\n ${getScopedVarName(\"--_ui5_tokenizer_padding\")}: var(--udexSpacer12, 12px);\n\n /* Carousel */\n ${getScopedVarName(\"--ui5_carousel_active_dot_background\")}: var(--udexColorBlue8, #0057D2);\n ${getScopedVarName(\"--ui5_carousel_active_dot_border\")}: 1px solid var(--udexColorBlue8, #0057D2);\n\n /* Calendar & Date Picker */\n ${getScopedVarName(\"--_ui5_daypicker_daynames_container_height\")}: 42px;\n ${getScopedVarName(\"--_ui5_daypicker_dayname_color\")}: var(--udexColorGrey6, #5B738B);\n ${getScopedVarName(\"--_ui5_daypicker_item_now_border_color\")}: var(--udexColorPink8, #A100C2);\n ${getScopedVarName(\"--_ui5_daypicker_item_weeekend_filter\")}: none;\n ${getScopedVarName(\"--_ui5_daypicker_item_select_between_border\")}: 1px solid var(--udexColorBlue9, #0040B0);\n ${getScopedVarName(\"--_ui5_calendar_header_middle_button_focus_outline\")}: 1px solid var(--udexColorBlue9, #0040B0);\n ${getScopedVarName(\"--_ui5_calendar_header_arrow_button_box_shadow\")}: none;\n ${getScopedVarName(\"--_ui5_calendar_header_padding\")}: 0;\n\n udex-search {\n ${getScopedVarName(\"--_ui5_button_pressed_focused_border_color\")}: transparent;\n }\n\n .sapUiSizeCompact,\n .ui5-content-density-compact,\n [data-ui5-compact-size] {\n /* Calendar & Date Picker */\n ${getScopedVarName(\"--_ui5_calendar_width\")}: 371px;\n ${getScopedVarName(\"--_ui5_calendar_height\")}: auto;\n ${getScopedVarName(\"--_ui5_calendar_top_bottom_padding\")}: var(--udexSpacer8, 8px);\n ${getScopedVarName(\"--_ui5_calendar_left_right_padding\")}: var(--udexSpacer8, 8px);\n ${getScopedVarName(\"--_ui5_calendar_header_height\")}: 42px;\n ${getScopedVarName(\"--_ui5_calendar_header_arrow_button_width\")}: 42px;\n ${getScopedVarName(\"--_ui5_day_picker_item_width\")}: 42px;\n ${getScopedVarName(\"--_ui5_day_picker_item_height\")}: 42px;\n ${getScopedVarName(\"--_ui5_daypicker_weekname_color\")}: var(--udexColorGrey6, #5B738B);\n ${getScopedVarName(\"--_ui5_daypicker_item_weeekend_filter\")}: none;\n ${getScopedVarName(\"--_ui5_month_picker_item_height\")}: 36px;\n ${getScopedVarName(\"--_ui5_monthpicker_item_margin\")}: -8px 0 var(--udexSpacer16, 16px) 0;\n ${getScopedVarName(\"--_ui5_year_picker_item_height\")}: 36px;\n ${getScopedVarName(\"--_ui5_yearpicker_item_margin\")}: -8px 0 var(--udexSpacer16, 16px) 0;\n }\n`;\n\nexport default variablesOverwrite;\n"]}
1
+ {"version":3,"file":"AssetsVariables.js","sourceRoot":"","sources":["../src/AssetsVariables.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,qDAAqD,CAAC;AAEvF,MAAM,kBAAkB,GAAG;;IAEvB,gBAAgB,CAAC,mCAAmC,CAAC;;;IAGrD,gBAAgB,CAAC,2BAA2B,CAAC;;;IAG7C,gBAAgB,CAAC,0BAA0B,CAAC;;;IAG5C,gBAAgB,CAAC,sCAAsC,CAAC;IACxD,gBAAgB,CAAC,kCAAkC,CAAC;;;IAGpD,gBAAgB,CAAC,4CAA4C,CAAC;IAC9D,gBAAgB,CAAC,gCAAgC,CAAC;IAClD,gBAAgB,CAAC,wCAAwC,CAAC;IAC1D,gBAAgB,CAAC,uCAAuC,CAAC;IACzD,gBAAgB,CAAC,6CAA6C,CAAC;IAC/D,gBAAgB,CAAC,oDAAoD,CAAC;IACtE,gBAAgB,CAAC,gDAAgD,CAAC;IAClE,gBAAgB,CAAC,gCAAgC,CAAC;;;MAGhD,gBAAgB,CAAC,4CAA4C,CAAC;;;;;;;MAO9D,gBAAgB,CAAC,uBAAuB,CAAC;MACzC,gBAAgB,CAAC,wBAAwB,CAAC;MAC1C,gBAAgB,CAAC,oCAAoC,CAAC;MACtD,gBAAgB,CAAC,oCAAoC,CAAC;MACtD,gBAAgB,CAAC,+BAA+B,CAAC;MACjD,gBAAgB,CAAC,2CAA2C,CAAC;MAC7D,gBAAgB,CAAC,8BAA8B,CAAC;MAChD,gBAAgB,CAAC,+BAA+B,CAAC;MACjD,gBAAgB,CAAC,iCAAiC,CAAC;MACnD,gBAAgB,CAAC,uCAAuC,CAAC;MACzD,gBAAgB,CAAC,iCAAiC,CAAC;MACnD,gBAAgB,CAAC,gCAAgC,CAAC;MAClD,gBAAgB,CAAC,gCAAgC,CAAC;MAClD,gBAAgB,CAAC,+BAA+B,CAAC;;CAEtD,CAAC;AAEF,eAAe,kBAAkB,CAAC","sourcesContent":["import { getScopedVarName } from \"@ui5/webcomponents-base/dist/CustomElementsScope.js\";\n\nconst variablesOverwrite = `:root {\n /* Browser Scrollbar */\n ${getScopedVarName(\"--browser_scrollbar_border_radius\")}: var(--udexRadiusM, 8px);\n\n /* Tooltip */\n ${getScopedVarName(\"--_ui5_popover_box_shadow\")}: 0px 0px 0px 1px var(--udexColorGrey4);\n\n /* Tokenizer */\n ${getScopedVarName(\"--_ui5_tokenizer_padding\")}: var(--udexSpacer12, 12px);\n\n /* Carousel */\n ${getScopedVarName(\"--ui5_carousel_active_dot_background\")}: var(--udexColorBlue8, #0057D2);\n ${getScopedVarName(\"--ui5_carousel_active_dot_border\")}: 1px solid var(--udexColorBlue8, #0057D2);\n\n /* Calendar & Date Picker */\n ${getScopedVarName(\"--_ui5_daypicker_daynames_container_height\")}: 42px;\n ${getScopedVarName(\"--_ui5_daypicker_dayname_color\")}: var(--udexColorGrey6, #5B738B);\n ${getScopedVarName(\"--_ui5_daypicker_item_now_border_color\")}: var(--udexColorPink8, #A100C2);\n ${getScopedVarName(\"--_ui5_daypicker_item_weeekend_filter\")}: none;\n ${getScopedVarName(\"--_ui5_daypicker_item_select_between_border\")}: 1px solid var(--udexColorBlue9, #0040B0);\n ${getScopedVarName(\"--_ui5_calendar_header_middle_button_focus_outline\")}: 1px solid var(--udexColorBlue9, #0040B0);\n ${getScopedVarName(\"--_ui5_calendar_header_arrow_button_box_shadow\")}: none;\n ${getScopedVarName(\"--_ui5_calendar_header_padding\")}: 0;\n\n udex-search {\n ${getScopedVarName(\"--_ui5_button_pressed_focused_border_color\")}: transparent;\n }\n\n .sapUiSizeCompact,\n .ui5-content-density-compact,\n [data-ui5-compact-size] {\n /* Calendar & Date Picker */\n ${getScopedVarName(\"--_ui5_calendar_width\")}: 371px;\n ${getScopedVarName(\"--_ui5_calendar_height\")}: auto;\n ${getScopedVarName(\"--_ui5_calendar_top_bottom_padding\")}: var(--udexSpacer8, 8px);\n ${getScopedVarName(\"--_ui5_calendar_left_right_padding\")}: var(--udexSpacer8, 8px);\n ${getScopedVarName(\"--_ui5_calendar_header_height\")}: 42px;\n ${getScopedVarName(\"--_ui5_calendar_header_arrow_button_width\")}: 42px;\n ${getScopedVarName(\"--_ui5_day_picker_item_width\")}: 42px;\n ${getScopedVarName(\"--_ui5_day_picker_item_height\")}: 42px;\n ${getScopedVarName(\"--_ui5_daypicker_weekname_color\")}: var(--udexColorGrey6, #5B738B);\n ${getScopedVarName(\"--_ui5_daypicker_item_weeekend_filter\")}: none;\n ${getScopedVarName(\"--_ui5_month_picker_item_height\")}: 36px;\n ${getScopedVarName(\"--_ui5_monthpicker_item_margin\")}: -8px 0 var(--udexSpacer16, 16px) 0;\n ${getScopedVarName(\"--_ui5_year_picker_item_height\")}: 36px;\n ${getScopedVarName(\"--_ui5_yearpicker_item_margin\")}: -8px 0 var(--udexSpacer16, 16px) 0;\n }\n`;\n\nexport default variablesOverwrite;\n"]}
@@ -1,6 +1,9 @@
1
1
  import CheckBox from "@ui5/webcomponents/dist/CheckBox.js";
2
2
  import type I18nBundle from "@ui5/webcomponents-base/dist/i18nBundle.js";
3
3
  import UDExCheckboxValueState from "./types/Checkbox.js";
4
+ import type { ResizeObserverCallback } from "@ui5/webcomponents-base/dist/delegate/ResizeHandler.js";
5
+ import WrappingType from "@ui5/webcomponents/dist/types/WrappingType.js";
6
+ import type Label from "@ui5/webcomponents/dist/Label.js";
4
7
  /**
5
8
  * @class
6
9
  *
@@ -29,8 +32,22 @@ declare class UDExCheckbox extends CheckBox {
29
32
  */
30
33
  /** @ts-expect-error */
31
34
  valueState: `${UDExCheckboxValueState}`;
35
+ /**
36
+ * Defines whether the component text wraps when there is not enough space..
37
+ *
38
+ * @default "None"
39
+ * @public
40
+ */
41
+ wrappingType: `${WrappingType}`;
32
42
  static i18nBundle: I18nBundle;
43
+ _handleResizeBound: ResizeObserverCallback;
44
+ constructor();
45
+ onEnterDOM(): void;
46
+ onExitDOM(): void;
33
47
  valueStateMappings(): Record<string, string>;
48
+ _handleResize(): void;
34
49
  get valueStateText(): string | undefined;
50
+ get label(): Label | null;
51
+ get labelHeight(): number;
35
52
  }
36
53
  export default UDExCheckbox;
package/dist/Checkbox.js CHANGED
@@ -12,8 +12,11 @@ import property from "@ui5/webcomponents-base/dist/decorators/property.js";
12
12
  import i18n from "@ui5/webcomponents-base/dist/decorators/i18n.js";
13
13
  import { VALUE_STATE_ERROR, VALUE_STATE_SUCCESS } from "./generated/i18n/i18n-defaults.js";
14
14
  import UDExCheckboxValueState from "./types/Checkbox.js";
15
+ import ResizeHandler from "@ui5/webcomponents-base/dist/delegate/ResizeHandler.js";
15
16
  // Styles
16
17
  import CheckboxCss from "./generated/themes/Checkbox.css.js";
18
+ import WrappingType from "@ui5/webcomponents/dist/types/WrappingType.js";
19
+ const LABEL_TEXT_HEIGHT = 18.5;
17
20
  /**
18
21
  * @class
19
22
  *
@@ -35,7 +38,7 @@ import CheckboxCss from "./generated/themes/Checkbox.css.js";
35
38
  */
36
39
  let UDExCheckbox = UDExCheckbox_1 = class UDExCheckbox extends CheckBox {
37
40
  constructor() {
38
- super(...arguments);
41
+ super();
39
42
  /**
40
43
  * Defines the value state of the component.
41
44
  *
@@ -43,6 +46,20 @@ let UDExCheckbox = UDExCheckbox_1 = class UDExCheckbox extends CheckBox {
43
46
  * @public
44
47
  */
45
48
  this.valueState = UDExCheckboxValueState.None;
49
+ /**
50
+ * Defines whether the component text wraps when there is not enough space..
51
+ *
52
+ * @default "None"
53
+ * @public
54
+ */
55
+ this.wrappingType = WrappingType.None;
56
+ this._handleResizeBound = this._handleResize.bind(this);
57
+ }
58
+ onEnterDOM() {
59
+ ResizeHandler.register(this, this._handleResizeBound);
60
+ }
61
+ onExitDOM() {
62
+ ResizeHandler.deregister(this, this._handleResizeBound);
46
63
  }
47
64
  valueStateMappings() {
48
65
  return {
@@ -50,16 +67,34 @@ let UDExCheckbox = UDExCheckbox_1 = class UDExCheckbox extends CheckBox {
50
67
  [UDExCheckboxValueState.Success]: UDExCheckbox_1.i18nBundle.getText(VALUE_STATE_SUCCESS),
51
68
  };
52
69
  }
70
+ _handleResize() {
71
+ const labelOverflows = this.labelHeight > LABEL_TEXT_HEIGHT;
72
+ if (labelOverflows && this.wrappingType === WrappingType.Normal) {
73
+ this.label?.classList.add("udex-checkbox__label-multiline");
74
+ }
75
+ else {
76
+ this.label?.classList.remove("udex-checkbox__label-multiline");
77
+ }
78
+ }
53
79
  get valueStateText() {
54
80
  if (this.valueState !== UDExCheckboxValueState.None) {
55
81
  return this.valueStateMappings()[this.valueState];
56
82
  }
57
83
  }
84
+ get label() {
85
+ return this.shadowRoot.querySelector("[ui5-label]");
86
+ }
87
+ get labelHeight() {
88
+ return this.label?.getBoundingClientRect().height || 0;
89
+ }
58
90
  };
59
91
  __decorate([
60
92
  property()
61
93
  /** @ts-expect-error */
62
94
  ], UDExCheckbox.prototype, "valueState", void 0);
95
+ __decorate([
96
+ property()
97
+ ], UDExCheckbox.prototype, "wrappingType", void 0);
63
98
  __decorate([
64
99
  i18n("@sapudex/web-components")
65
100
  ], UDExCheckbox, "i18nBundle", void 0);
@@ -1 +1 @@
1
- {"version":3,"file":"Checkbox.js","sourceRoot":"","sources":["../src/Checkbox.ts"],"names":[],"mappings":";;;;;;;AAAA,OAAO,aAAa,MAAM,0DAA0D,CAAC;AACrF,OAAO,WAAW,MAAM,sDAAsD,CAAC;AAC/E,OAAO,QAAQ,MAAM,qCAAqC,CAAC;AAC3D,OAAO,QAAQ,MAAM,qDAAqD,CAAC;AAC3E,OAAO,IAAI,MAAM,iDAAiD,CAAC;AACnE,OAAO,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,MAAM,mCAAmC,CAAC;AAE3F,OAAO,sBAAsB,MAAM,qBAAqB,CAAC;AAEzD,SAAS;AACT,OAAO,WAAW,MAAM,oCAAoC,CAAC;AAE7D;;;;;;;;;;;;;;;;;;GAkBG;AAOH,IAAM,YAAY,oBAAlB,MAAM,YAAa,SAAQ,QAAQ;IAAnC;;QACE;;;;;WAKG;QAGD,eAAU,GAAgC,sBAAsB,CAAC,IAAI,CAAC;IAiB1E,CAAC;IAZC,kBAAkB;QAChB,OAAO;YACL,CAAC,sBAAsB,CAAC,KAAK,CAAC,EAAE,cAAY,CAAC,UAAU,CAAC,OAAO,CAAC,iBAAiB,CAAC;YAClF,CAAC,sBAAsB,CAAC,OAAO,CAAC,EAAE,cAAY,CAAC,UAAU,CAAC,OAAO,CAAC,mBAAmB,CAAC;SACvF,CAAC;IACJ,CAAC;IAED,IAAI,cAAc;QAChB,IAAI,IAAI,CAAC,UAAU,KAAK,sBAAsB,CAAC,IAAI,EAAE,CAAC;YACpD,OAAO,IAAI,CAAC,kBAAkB,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACpD,CAAC;IACH,CAAC;CACF,CAAA;AAjBG;IAFD,QAAQ,EAAE;IACX,uBAAuB;gDACiD;AAGjE;IADN,IAAI,CAAC,yBAAyB,CAAC;sCACF;AAZ1B,YAAY;IANjB,aAAa,CAAC;QACb,GAAG,EAAE,eAAe;QACpB,QAAQ,EAAE,WAAW;QACrB,MAAM,EAAE,CAAC,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC;KACvC,CAAC;GAEI,YAAY,CA0BjB;AAED,YAAY,CAAC,MAAM,EAAE,CAAC;AAEtB,eAAe,YAAY,CAAC","sourcesContent":["import customElement from \"@ui5/webcomponents-base/dist/decorators/customElement.js\";\nimport jsxRenderer from \"@ui5/webcomponents-base/dist/renderer/JsxRenderer.js\";\nimport CheckBox from \"@ui5/webcomponents/dist/CheckBox.js\";\nimport property from \"@ui5/webcomponents-base/dist/decorators/property.js\";\nimport i18n from \"@ui5/webcomponents-base/dist/decorators/i18n.js\";\nimport { VALUE_STATE_ERROR, VALUE_STATE_SUCCESS } from \"./generated/i18n/i18n-defaults.js\";\nimport type I18nBundle from \"@ui5/webcomponents-base/dist/i18nBundle.js\";\nimport UDExCheckboxValueState from \"./types/Checkbox.js\";\n\n// Styles\nimport CheckboxCss from \"./generated/themes/Checkbox.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-checkbox</code>\n * <h3>ES6 Module Import</h3>\n *\n * <code>import \"@sapudex/web-components/dist/Checkbox.js\";</code>\n *\n * @constructor\n * @author SAP SE\n * @extends CheckBox\n * @tagname udex-checkbox\n * @public\n */\n@customElement({\n tag: \"udex-checkbox\",\n renderer: jsxRenderer,\n styles: [CheckBox.styles, CheckboxCss],\n})\n\nclass UDExCheckbox extends CheckBox {\n /**\n * Defines the value state of the component.\n *\n * @default \"None\"\n * @public\n */\n @property()\n /** @ts-expect-error */\n valueState: `${UDExCheckboxValueState}` = UDExCheckboxValueState.None;\n\n @i18n(\"@sapudex/web-components\")\n static i18nBundle: I18nBundle;\n\n valueStateMappings(): Record<string, string> {\n return {\n [UDExCheckboxValueState.Error]: UDExCheckbox.i18nBundle.getText(VALUE_STATE_ERROR),\n [UDExCheckboxValueState.Success]: UDExCheckbox.i18nBundle.getText(VALUE_STATE_SUCCESS),\n };\n }\n\n get valueStateText(): string | undefined {\n if (this.valueState !== UDExCheckboxValueState.None) {\n return this.valueStateMappings()[this.valueState];\n }\n }\n}\n\nUDExCheckbox.define();\n\nexport default UDExCheckbox;\n"]}
1
+ {"version":3,"file":"Checkbox.js","sourceRoot":"","sources":["../src/Checkbox.ts"],"names":[],"mappings":";;;;;;;AAAA,OAAO,aAAa,MAAM,0DAA0D,CAAC;AACrF,OAAO,WAAW,MAAM,sDAAsD,CAAC;AAC/E,OAAO,QAAQ,MAAM,qCAAqC,CAAC;AAC3D,OAAO,QAAQ,MAAM,qDAAqD,CAAC;AAC3E,OAAO,IAAI,MAAM,iDAAiD,CAAC;AACnE,OAAO,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,MAAM,mCAAmC,CAAC;AAE3F,OAAO,sBAAsB,MAAM,qBAAqB,CAAC;AAEzD,OAAO,aAAa,MAAM,wDAAwD,CAAC;AAEnF,SAAS;AACT,OAAO,WAAW,MAAM,oCAAoC,CAAC;AAC7D,OAAO,YAAY,MAAM,+CAA+C,CAAC;AAGzE,MAAM,iBAAiB,GAAG,IAAI,CAAC;AAC/B;;;;;;;;;;;;;;;;;;GAkBG;AAOH,IAAM,YAAY,oBAAlB,MAAM,YAAa,SAAQ,QAAQ;IAyBjC;QACE,KAAK,EAAE,CAAC;QAzBV;;;;;WAKG;QAGD,eAAU,GAAgC,sBAAsB,CAAC,IAAI,CAAC;QAExE;;;;;WAKG;QAED,iBAAY,GAAsB,YAAY,CAAC,IAAI,CAAC;QASpD,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC1D,CAAC;IAED,UAAU;QACR,aAAa,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,kBAAkB,CAAC,CAAC;IACxD,CAAC;IAED,SAAS;QACP,aAAa,CAAC,UAAU,CAAC,IAAI,EAAE,IAAI,CAAC,kBAAkB,CAAC,CAAC;IAC1D,CAAC;IAED,kBAAkB;QAChB,OAAO;YACL,CAAC,sBAAsB,CAAC,KAAK,CAAC,EAAE,cAAY,CAAC,UAAU,CAAC,OAAO,CAAC,iBAAiB,CAAC;YAClF,CAAC,sBAAsB,CAAC,OAAO,CAAC,EAAE,cAAY,CAAC,UAAU,CAAC,OAAO,CAAC,mBAAmB,CAAC;SACvF,CAAC;IACJ,CAAC;IAED,aAAa;QACX,MAAM,cAAc,GAAG,IAAI,CAAC,WAAW,GAAG,iBAAiB,CAAC;QAE5D,IAAI,cAAc,IAAI,IAAI,CAAC,YAAY,KAAK,YAAY,CAAC,MAAM,EAAE,CAAC;YAChE,IAAI,CAAC,KAAK,EAAE,SAAS,CAAC,GAAG,CAAC,gCAAgC,CAAC,CAAC;QAC9D,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,KAAK,EAAE,SAAS,CAAC,MAAM,CAAC,gCAAgC,CAAC,CAAC;QACjE,CAAC;IACH,CAAC;IAED,IAAI,cAAc;QAChB,IAAI,IAAI,CAAC,UAAU,KAAK,sBAAsB,CAAC,IAAI,EAAE,CAAC;YACpD,OAAO,IAAI,CAAC,kBAAkB,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACpD,CAAC;IACH,CAAC;IAED,IAAI,KAAK;QACP,OAAO,IAAI,CAAC,UAAW,CAAC,aAAa,CAAQ,aAAa,CAAC,CAAC;IAC9D,CAAC;IAED,IAAI,WAAW;QACb,OAAO,IAAI,CAAC,KAAK,EAAE,qBAAqB,EAAE,CAAC,MAAM,IAAI,CAAC,CAAC;IACzD,CAAC;CACF,CAAA;AA3DG;IAFD,QAAQ,EAAE;IACX,uBAAuB;gDACiD;AAStE;IADD,QAAQ,EAAE;kDAC2C;AAG/C;IADN,IAAI,CAAC,yBAAyB,CAAC;sCACF;AArB1B,YAAY;IANjB,aAAa,CAAC;QACb,GAAG,EAAE,eAAe;QACpB,QAAQ,EAAE,WAAW;QACrB,MAAM,EAAE,CAAC,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC;KACvC,CAAC;GAEI,YAAY,CAoEjB;AAED,YAAY,CAAC,MAAM,EAAE,CAAC;AAEtB,eAAe,YAAY,CAAC","sourcesContent":["import customElement from \"@ui5/webcomponents-base/dist/decorators/customElement.js\";\nimport jsxRenderer from \"@ui5/webcomponents-base/dist/renderer/JsxRenderer.js\";\nimport CheckBox from \"@ui5/webcomponents/dist/CheckBox.js\";\nimport property from \"@ui5/webcomponents-base/dist/decorators/property.js\";\nimport i18n from \"@ui5/webcomponents-base/dist/decorators/i18n.js\";\nimport { VALUE_STATE_ERROR, VALUE_STATE_SUCCESS } from \"./generated/i18n/i18n-defaults.js\";\nimport type I18nBundle from \"@ui5/webcomponents-base/dist/i18nBundle.js\";\nimport UDExCheckboxValueState from \"./types/Checkbox.js\";\nimport type { ResizeObserverCallback } from \"@ui5/webcomponents-base/dist/delegate/ResizeHandler.js\";\nimport ResizeHandler from \"@ui5/webcomponents-base/dist/delegate/ResizeHandler.js\";\n\n// Styles\nimport CheckboxCss from \"./generated/themes/Checkbox.css.js\";\nimport WrappingType from \"@ui5/webcomponents/dist/types/WrappingType.js\";\nimport type Label from \"@ui5/webcomponents/dist/Label.js\";\n\nconst LABEL_TEXT_HEIGHT = 18.5;\n/**\n * @class\n *\n * <h3 class=\"comment-api-title\">Overview</h3>\n *\n *\n * <h3>Usage</h3>\n *\n * For the <code>udex-checkbox</code>\n * <h3>ES6 Module Import</h3>\n *\n * <code>import \"@sapudex/web-components/dist/Checkbox.js\";</code>\n *\n * @constructor\n * @author SAP SE\n * @extends CheckBox\n * @tagname udex-checkbox\n * @public\n */\n@customElement({\n tag: \"udex-checkbox\",\n renderer: jsxRenderer,\n styles: [CheckBox.styles, CheckboxCss],\n})\n\nclass UDExCheckbox extends CheckBox {\n /**\n * Defines the value state of the component.\n *\n * @default \"None\"\n * @public\n */\n @property()\n /** @ts-expect-error */\n valueState: `${UDExCheckboxValueState}` = UDExCheckboxValueState.None;\n\n /**\n * Defines whether the component text wraps when there is not enough space..\n *\n * @default \"None\"\n * @public\n */\n @property()\n wrappingType: `${WrappingType}` = WrappingType.None;\n\n @i18n(\"@sapudex/web-components\")\n static i18nBundle: I18nBundle;\n\n _handleResizeBound: ResizeObserverCallback;\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 valueStateMappings(): Record<string, string> {\n return {\n [UDExCheckboxValueState.Error]: UDExCheckbox.i18nBundle.getText(VALUE_STATE_ERROR),\n [UDExCheckboxValueState.Success]: UDExCheckbox.i18nBundle.getText(VALUE_STATE_SUCCESS),\n };\n }\n\n _handleResize(): void {\n const labelOverflows = this.labelHeight > LABEL_TEXT_HEIGHT;\n\n if (labelOverflows && this.wrappingType === WrappingType.Normal) {\n this.label?.classList.add(\"udex-checkbox__label-multiline\");\n } else {\n this.label?.classList.remove(\"udex-checkbox__label-multiline\");\n }\n }\n\n get valueStateText(): string | undefined {\n if (this.valueState !== UDExCheckboxValueState.None) {\n return this.valueStateMappings()[this.valueState];\n }\n }\n\n get label(): Label | null {\n return this.shadowRoot!.querySelector<Label>(\"[ui5-label]\");\n }\n\n get labelHeight(): number {\n return this.label?.getBoundingClientRect().height || 0;\n }\n}\n\nUDExCheckbox.define();\n\nexport default UDExCheckbox;\n"]}
@@ -148,6 +148,13 @@ declare class UDExFilterMenu extends UDExSearchableListBase {
148
148
  * @public
149
149
  */
150
150
  accessibleName?: string;
151
+ /**
152
+ * Defines id (or many ids) of the elements that contain the ARIA name of the component.
153
+ *
154
+ * @default ""
155
+ * @public
156
+ */
157
+ accessibleNameRef: string;
151
158
  /**
152
159
  * Allows setting a custom role.
153
160
  * @default "None"
@@ -349,6 +349,9 @@ __decorate([
349
349
  __decorate([
350
350
  property()
351
351
  ], UDExFilterMenu.prototype, "accessibleName", void 0);
352
+ __decorate([
353
+ property()
354
+ ], UDExFilterMenu.prototype, "accessibleNameRef", void 0);
352
355
  __decorate([
353
356
  property()
354
357
  ], UDExFilterMenu.prototype, "accessibleRole", void 0);