@ui5/webcomponents 2.2.0-rc.2 → 2.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (554) hide show
  1. package/CHANGELOG.md +34 -0
  2. package/cypress/specs/Button.cy.ts +361 -0
  3. package/cypress/specs/List.cy.ts +34 -0
  4. package/cypress/specs/Menu.cy.ts +429 -0
  5. package/cypress/specs/ResponsivePopover.mobile.cy.ts +93 -0
  6. package/cypress/specs/Select.cy.ts +39 -0
  7. package/cypress/specs/TableLoading.cy.ts +44 -0
  8. package/cypress/specs/TextArea.cy.ts +699 -0
  9. package/cypress/support/commands/Menu.commands.ts +48 -0
  10. package/cypress/support/commands.ts +75 -0
  11. package/cypress/support/component.ts +3 -0
  12. package/cypress/tsconfig.json +36 -0
  13. package/cypress.config.js +8 -0
  14. package/dist/.tsbuildinfo +1 -1
  15. package/dist/BreadcrumbsItem.d.ts +2 -0
  16. package/dist/BreadcrumbsItem.js +5 -0
  17. package/dist/BreadcrumbsItem.js.map +1 -1
  18. package/dist/Calendar.d.ts +2 -0
  19. package/dist/Calendar.js +4 -2
  20. package/dist/Calendar.js.map +1 -1
  21. package/dist/ColorPicker.js +1 -0
  22. package/dist/ColorPicker.js.map +1 -1
  23. package/dist/DateComponentBase.d.ts +9 -0
  24. package/dist/DateComponentBase.js +11 -0
  25. package/dist/DateComponentBase.js.map +1 -1
  26. package/dist/DateRangePicker.d.ts +0 -5
  27. package/dist/DateRangePicker.js +0 -7
  28. package/dist/DateRangePicker.js.map +1 -1
  29. package/dist/DayPicker.d.ts +2 -3
  30. package/dist/DayPicker.js +25 -21
  31. package/dist/DayPicker.js.map +1 -1
  32. package/dist/Dialog.js +2 -2
  33. package/dist/Dialog.js.map +1 -1
  34. package/dist/FileUploader.d.ts +3 -3
  35. package/dist/FileUploader.js +3 -3
  36. package/dist/FileUploader.js.map +1 -1
  37. package/dist/Link.d.ts +1 -1
  38. package/dist/Link.js.map +1 -1
  39. package/dist/List.js +4 -3
  40. package/dist/List.js.map +1 -1
  41. package/dist/MonthPicker.d.ts +40 -2
  42. package/dist/MonthPicker.js +83 -10
  43. package/dist/MonthPicker.js.map +1 -1
  44. package/dist/MultiComboBox.js +8 -4
  45. package/dist/MultiComboBox.js.map +1 -1
  46. package/dist/Popover.js +2 -2
  47. package/dist/Popover.js.map +1 -1
  48. package/dist/Popup.js +0 -2
  49. package/dist/Popup.js.map +1 -1
  50. package/dist/TextArea.d.ts +1 -1
  51. package/dist/TextArea.js +7 -4
  52. package/dist/TextArea.js.map +1 -1
  53. package/dist/YearPicker.d.ts +39 -1
  54. package/dist/YearPicker.js +82 -9
  55. package/dist/YearPicker.js.map +1 -1
  56. package/dist/css/themes/Avatar.css +1 -1
  57. package/dist/css/themes/AvatarGroup.css +1 -1
  58. package/dist/css/themes/Bar.css +1 -1
  59. package/dist/css/themes/Breadcrumbs.css +1 -1
  60. package/dist/css/themes/BrowserScrollbar.css +1 -1
  61. package/dist/css/themes/BusyIndicator.css +1 -1
  62. package/dist/css/themes/Button.css +1 -1
  63. package/dist/css/themes/Calendar.css +1 -1
  64. package/dist/css/themes/CalendarHeader.css +1 -1
  65. package/dist/css/themes/CalendarLegend.css +1 -1
  66. package/dist/css/themes/CalendarLegendItem.css +1 -1
  67. package/dist/css/themes/Card.css +1 -1
  68. package/dist/css/themes/CardHeader.css +1 -1
  69. package/dist/css/themes/Carousel.css +1 -1
  70. package/dist/css/themes/CheckBox.css +1 -1
  71. package/dist/css/themes/ColorPalette.css +1 -1
  72. package/dist/css/themes/ColorPaletteItem.css +1 -1
  73. package/dist/css/themes/ColorPalettePopover.css +1 -1
  74. package/dist/css/themes/ColorPicker.css +1 -1
  75. package/dist/css/themes/ComboBox.css +1 -1
  76. package/dist/css/themes/DatePicker.css +1 -1
  77. package/dist/css/themes/DateTimePickerPopover.css +1 -1
  78. package/dist/css/themes/DayPicker.css +1 -1
  79. package/dist/css/themes/Dialog.css +1 -1
  80. package/dist/css/themes/FileUploader.css +1 -1
  81. package/dist/css/themes/Form.css +1 -1
  82. package/dist/css/themes/FormItem.css +1 -1
  83. package/dist/css/themes/FormLabelSpan.css +1 -1
  84. package/dist/css/themes/GrowingButton.css +1 -1
  85. package/dist/css/themes/Icon.css +1 -1
  86. package/dist/css/themes/Input.css +1 -1
  87. package/dist/css/themes/InputIcon.css +1 -1
  88. package/dist/css/themes/InputSharedStyles.css +1 -1
  89. package/dist/css/themes/Link.css +1 -1
  90. package/dist/css/themes/List.css +1 -1
  91. package/dist/css/themes/ListItem.css +1 -1
  92. package/dist/css/themes/ListItemBase.css +1 -1
  93. package/dist/css/themes/ListItemCustom.css +1 -1
  94. package/dist/css/themes/ListItemGroup.css +1 -1
  95. package/dist/css/themes/ListItemGroupHeader.css +1 -1
  96. package/dist/css/themes/ListItemIcon.css +1 -1
  97. package/dist/css/themes/Menu.css +1 -1
  98. package/dist/css/themes/MenuItem.css +1 -1
  99. package/dist/css/themes/MessageStrip.css +1 -1
  100. package/dist/css/themes/MonthPicker.css +1 -1
  101. package/dist/css/themes/MultiComboBox.css +1 -1
  102. package/dist/css/themes/MultiComboBoxPopover.css +1 -1
  103. package/dist/css/themes/MultiInput.css +1 -1
  104. package/dist/css/themes/NavigationMenu.css +1 -1
  105. package/dist/css/themes/NavigationMenuItem.css +1 -1
  106. package/dist/css/themes/OptionBase.css +1 -1
  107. package/dist/css/themes/Panel.css +1 -1
  108. package/dist/css/themes/Popover.css +1 -1
  109. package/dist/css/themes/PopupsCommon.css +1 -1
  110. package/dist/css/themes/ProgressIndicator.css +1 -1
  111. package/dist/css/themes/RadioButton.css +1 -1
  112. package/dist/css/themes/RangeSlider.css +1 -1
  113. package/dist/css/themes/RatingIndicator.css +1 -1
  114. package/dist/css/themes/ResponsivePopover.css +1 -1
  115. package/dist/css/themes/ResponsivePopoverCommon.css +1 -1
  116. package/dist/css/themes/SegmentedButton.css +1 -1
  117. package/dist/css/themes/SegmentedButtonItem.css +1 -1
  118. package/dist/css/themes/Select.css +1 -1
  119. package/dist/css/themes/SliderBase.css +1 -1
  120. package/dist/css/themes/SplitButton.css +1 -1
  121. package/dist/css/themes/StepInput.css +1 -1
  122. package/dist/css/themes/SuggestionItem.css +1 -1
  123. package/dist/css/themes/SuggestionItemCustom.css +1 -1
  124. package/dist/css/themes/Switch.css +1 -1
  125. package/dist/css/themes/TabContainer.css +1 -1
  126. package/dist/css/themes/TabInOverflow.css +1 -1
  127. package/dist/css/themes/TabInStrip.css +1 -1
  128. package/dist/css/themes/TabSemanticIcon.css +1 -1
  129. package/dist/css/themes/TabSeparatorInOverflow.css +1 -1
  130. package/dist/css/themes/Table.css +1 -1
  131. package/dist/css/themes/TableCellBase.css +1 -1
  132. package/dist/css/themes/TableHeaderRow.css +1 -1
  133. package/dist/css/themes/TableRow.css +1 -1
  134. package/dist/css/themes/TableRowBase.css +1 -1
  135. package/dist/css/themes/Tag.css +1 -1
  136. package/dist/css/themes/Text.css +1 -1
  137. package/dist/css/themes/TextArea.css +1 -1
  138. package/dist/css/themes/TimePicker.css +1 -1
  139. package/dist/css/themes/Toast.css +1 -1
  140. package/dist/css/themes/ToggleButton.css +1 -1
  141. package/dist/css/themes/Token.css +1 -1
  142. package/dist/css/themes/Tokenizer.css +1 -1
  143. package/dist/css/themes/TokenizerPopover.css +1 -1
  144. package/dist/css/themes/Toolbar.css +1 -1
  145. package/dist/css/themes/ToolbarPopover.css +1 -1
  146. package/dist/css/themes/TreeItem.css +1 -1
  147. package/dist/css/themes/ValueStateMessage.css +1 -1
  148. package/dist/css/themes/YearPicker.css +1 -1
  149. package/dist/css/themes/sap_fiori_3/parameters-bundle.css +1 -1
  150. package/dist/css/themes/sap_fiori_3_dark/parameters-bundle.css +1 -1
  151. package/dist/css/themes/sap_fiori_3_hcb/parameters-bundle.css +1 -1
  152. package/dist/css/themes/sap_fiori_3_hcw/parameters-bundle.css +1 -1
  153. package/dist/css/themes/sap_horizon/parameters-bundle.css +1 -1
  154. package/dist/css/themes/sap_horizon_dark/parameters-bundle.css +1 -1
  155. package/dist/css/themes/sap_horizon_dark_exp/parameters-bundle.css +1 -1
  156. package/dist/css/themes/sap_horizon_exp/parameters-bundle.css +1 -1
  157. package/dist/css/themes/sap_horizon_hcb/parameters-bundle.css +1 -1
  158. package/dist/css/themes/sap_horizon_hcb_exp/parameters-bundle.css +1 -1
  159. package/dist/css/themes/sap_horizon_hcw/parameters-bundle.css +1 -1
  160. package/dist/css/themes/sap_horizon_hcw_exp/parameters-bundle.css +1 -1
  161. package/dist/custom-elements-internal.json +274 -3
  162. package/dist/custom-elements.json +222 -3
  163. package/dist/generated/assets/i18n/messagebundle_ar.json +1 -1
  164. package/dist/generated/assets/i18n/messagebundle_bg.json +1 -1
  165. package/dist/generated/assets/i18n/messagebundle_ca.json +1 -1
  166. package/dist/generated/assets/i18n/messagebundle_cnr.json +1 -1
  167. package/dist/generated/assets/i18n/messagebundle_cs.json +1 -1
  168. package/dist/generated/assets/i18n/messagebundle_cy.json +1 -1
  169. package/dist/generated/assets/i18n/messagebundle_da.json +1 -1
  170. package/dist/generated/assets/i18n/messagebundle_de.json +1 -1
  171. package/dist/generated/assets/i18n/messagebundle_el.json +1 -1
  172. package/dist/generated/assets/i18n/messagebundle_en.json +1 -1
  173. package/dist/generated/assets/i18n/messagebundle_en_GB.json +1 -1
  174. package/dist/generated/assets/i18n/messagebundle_en_US_sappsd.json +1 -1
  175. package/dist/generated/assets/i18n/messagebundle_en_US_saprigi.json +1 -1
  176. package/dist/generated/assets/i18n/messagebundle_en_US_saptrc.json +1 -1
  177. package/dist/generated/assets/i18n/messagebundle_es.json +1 -1
  178. package/dist/generated/assets/i18n/messagebundle_es_MX.json +1 -1
  179. package/dist/generated/assets/i18n/messagebundle_et.json +1 -1
  180. package/dist/generated/assets/i18n/messagebundle_fi.json +1 -1
  181. package/dist/generated/assets/i18n/messagebundle_fr.json +1 -1
  182. package/dist/generated/assets/i18n/messagebundle_fr_CA.json +1 -1
  183. package/dist/generated/assets/i18n/messagebundle_hi.json +1 -1
  184. package/dist/generated/assets/i18n/messagebundle_hr.json +1 -1
  185. package/dist/generated/assets/i18n/messagebundle_hu.json +1 -1
  186. package/dist/generated/assets/i18n/messagebundle_it.json +1 -1
  187. package/dist/generated/assets/i18n/messagebundle_iw.json +1 -1
  188. package/dist/generated/assets/i18n/messagebundle_ja.json +1 -1
  189. package/dist/generated/assets/i18n/messagebundle_kk.json +1 -1
  190. package/dist/generated/assets/i18n/messagebundle_ko.json +1 -1
  191. package/dist/generated/assets/i18n/messagebundle_lt.json +1 -1
  192. package/dist/generated/assets/i18n/messagebundle_lv.json +1 -1
  193. package/dist/generated/assets/i18n/messagebundle_mk.json +1 -1
  194. package/dist/generated/assets/i18n/messagebundle_ms.json +1 -1
  195. package/dist/generated/assets/i18n/messagebundle_nl.json +1 -1
  196. package/dist/generated/assets/i18n/messagebundle_no.json +1 -1
  197. package/dist/generated/assets/i18n/messagebundle_pl.json +1 -1
  198. package/dist/generated/assets/i18n/messagebundle_pt.json +1 -1
  199. package/dist/generated/assets/i18n/messagebundle_pt_PT.json +1 -1
  200. package/dist/generated/assets/i18n/messagebundle_ro.json +1 -1
  201. package/dist/generated/assets/i18n/messagebundle_ru.json +1 -1
  202. package/dist/generated/assets/i18n/messagebundle_sh.json +1 -1
  203. package/dist/generated/assets/i18n/messagebundle_sk.json +1 -1
  204. package/dist/generated/assets/i18n/messagebundle_sl.json +1 -1
  205. package/dist/generated/assets/i18n/messagebundle_sr.json +1 -1
  206. package/dist/generated/assets/i18n/messagebundle_sv.json +1 -1
  207. package/dist/generated/assets/i18n/messagebundle_th.json +1 -1
  208. package/dist/generated/assets/i18n/messagebundle_tr.json +1 -1
  209. package/dist/generated/assets/i18n/messagebundle_uk.json +1 -1
  210. package/dist/generated/assets/i18n/messagebundle_vi.json +1 -1
  211. package/dist/generated/assets/i18n/messagebundle_zh_CN.json +1 -1
  212. package/dist/generated/assets/i18n/messagebundle_zh_TW.json +1 -1
  213. package/dist/generated/assets/themes/sap_fiori_3/parameters-bundle.css.json +1 -1
  214. package/dist/generated/assets/themes/sap_fiori_3_dark/parameters-bundle.css.json +1 -1
  215. package/dist/generated/assets/themes/sap_fiori_3_hcb/parameters-bundle.css.json +1 -1
  216. package/dist/generated/assets/themes/sap_fiori_3_hcw/parameters-bundle.css.json +1 -1
  217. package/dist/generated/assets/themes/sap_horizon/parameters-bundle.css.json +1 -1
  218. package/dist/generated/assets/themes/sap_horizon_dark/parameters-bundle.css.json +1 -1
  219. package/dist/generated/assets/themes/sap_horizon_dark_exp/parameters-bundle.css.json +1 -1
  220. package/dist/generated/assets/themes/sap_horizon_exp/parameters-bundle.css.json +1 -1
  221. package/dist/generated/assets/themes/sap_horizon_hcb/parameters-bundle.css.json +1 -1
  222. package/dist/generated/assets/themes/sap_horizon_hcb_exp/parameters-bundle.css.json +1 -1
  223. package/dist/generated/assets/themes/sap_horizon_hcw/parameters-bundle.css.json +1 -1
  224. package/dist/generated/assets/themes/sap_horizon_hcw_exp/parameters-bundle.css.json +1 -1
  225. package/dist/generated/templates/BreadcrumbsTemplate.lit.js +1 -1
  226. package/dist/generated/templates/BreadcrumbsTemplate.lit.js.map +1 -1
  227. package/dist/generated/templates/CalendarTemplate.lit.js +1 -1
  228. package/dist/generated/templates/CalendarTemplate.lit.js.map +1 -1
  229. package/dist/generated/templates/ColorPalettePopoverTemplate.lit.js +1 -1
  230. package/dist/generated/templates/ColorPalettePopoverTemplate.lit.js.map +1 -1
  231. package/dist/generated/templates/DatePickerPopoverTemplate.lit.js +1 -1
  232. package/dist/generated/templates/DatePickerPopoverTemplate.lit.js.map +1 -1
  233. package/dist/generated/templates/DatePickerTemplate.lit.js +1 -1
  234. package/dist/generated/templates/DatePickerTemplate.lit.js.map +1 -1
  235. package/dist/generated/templates/DateRangePickerTemplate.lit.js +1 -1
  236. package/dist/generated/templates/DateRangePickerTemplate.lit.js.map +1 -1
  237. package/dist/generated/templates/DateTimePickerPopoverTemplate.lit.js +1 -1
  238. package/dist/generated/templates/DateTimePickerPopoverTemplate.lit.js.map +1 -1
  239. package/dist/generated/templates/DateTimePickerTemplate.lit.js +1 -1
  240. package/dist/generated/templates/DateTimePickerTemplate.lit.js.map +1 -1
  241. package/dist/generated/templates/LinkTemplate.lit.js +1 -1
  242. package/dist/generated/templates/LinkTemplate.lit.js.map +1 -1
  243. package/dist/generated/templates/MonthPickerTemplate.lit.js +2 -2
  244. package/dist/generated/templates/MonthPickerTemplate.lit.js.map +1 -1
  245. package/dist/generated/templates/YearPickerTemplate.lit.js +2 -2
  246. package/dist/generated/templates/YearPickerTemplate.lit.js.map +1 -1
  247. package/dist/generated/themes/Avatar.css.js +1 -1
  248. package/dist/generated/themes/Avatar.css.js.map +1 -1
  249. package/dist/generated/themes/AvatarGroup.css.js +1 -1
  250. package/dist/generated/themes/AvatarGroup.css.js.map +1 -1
  251. package/dist/generated/themes/Bar.css.js +1 -1
  252. package/dist/generated/themes/Bar.css.js.map +1 -1
  253. package/dist/generated/themes/Breadcrumbs.css.js +1 -1
  254. package/dist/generated/themes/Breadcrumbs.css.js.map +1 -1
  255. package/dist/generated/themes/BrowserScrollbar.css.js +1 -1
  256. package/dist/generated/themes/BrowserScrollbar.css.js.map +1 -1
  257. package/dist/generated/themes/BusyIndicator.css.js +1 -1
  258. package/dist/generated/themes/BusyIndicator.css.js.map +1 -1
  259. package/dist/generated/themes/Button.css.js +1 -1
  260. package/dist/generated/themes/Button.css.js.map +1 -1
  261. package/dist/generated/themes/Calendar.css.js +1 -1
  262. package/dist/generated/themes/Calendar.css.js.map +1 -1
  263. package/dist/generated/themes/CalendarHeader.css.js +1 -1
  264. package/dist/generated/themes/CalendarHeader.css.js.map +1 -1
  265. package/dist/generated/themes/CalendarLegend.css.js +1 -1
  266. package/dist/generated/themes/CalendarLegend.css.js.map +1 -1
  267. package/dist/generated/themes/CalendarLegendItem.css.js +1 -1
  268. package/dist/generated/themes/CalendarLegendItem.css.js.map +1 -1
  269. package/dist/generated/themes/Card.css.js +1 -1
  270. package/dist/generated/themes/Card.css.js.map +1 -1
  271. package/dist/generated/themes/CardHeader.css.js +1 -1
  272. package/dist/generated/themes/CardHeader.css.js.map +1 -1
  273. package/dist/generated/themes/Carousel.css.js +1 -1
  274. package/dist/generated/themes/Carousel.css.js.map +1 -1
  275. package/dist/generated/themes/CheckBox.css.js +1 -1
  276. package/dist/generated/themes/CheckBox.css.js.map +1 -1
  277. package/dist/generated/themes/ColorPalette.css.js +1 -1
  278. package/dist/generated/themes/ColorPalette.css.js.map +1 -1
  279. package/dist/generated/themes/ColorPaletteItem.css.js +1 -1
  280. package/dist/generated/themes/ColorPaletteItem.css.js.map +1 -1
  281. package/dist/generated/themes/ColorPalettePopover.css.js +1 -1
  282. package/dist/generated/themes/ColorPalettePopover.css.js.map +1 -1
  283. package/dist/generated/themes/ColorPicker.css.js +1 -1
  284. package/dist/generated/themes/ColorPicker.css.js.map +1 -1
  285. package/dist/generated/themes/ComboBox.css.js +1 -1
  286. package/dist/generated/themes/ComboBox.css.js.map +1 -1
  287. package/dist/generated/themes/DatePicker.css.js +1 -1
  288. package/dist/generated/themes/DatePicker.css.js.map +1 -1
  289. package/dist/generated/themes/DateTimePickerPopover.css.js +1 -1
  290. package/dist/generated/themes/DateTimePickerPopover.css.js.map +1 -1
  291. package/dist/generated/themes/DayPicker.css.js +1 -1
  292. package/dist/generated/themes/DayPicker.css.js.map +1 -1
  293. package/dist/generated/themes/Dialog.css.js +1 -1
  294. package/dist/generated/themes/Dialog.css.js.map +1 -1
  295. package/dist/generated/themes/FileUploader.css.js +1 -1
  296. package/dist/generated/themes/FileUploader.css.js.map +1 -1
  297. package/dist/generated/themes/Form.css.js +1 -1
  298. package/dist/generated/themes/Form.css.js.map +1 -1
  299. package/dist/generated/themes/FormItem.css.js +1 -1
  300. package/dist/generated/themes/FormItem.css.js.map +1 -1
  301. package/dist/generated/themes/FormLabelSpan.css.js +1 -1
  302. package/dist/generated/themes/FormLabelSpan.css.js.map +1 -1
  303. package/dist/generated/themes/GrowingButton.css.js +1 -1
  304. package/dist/generated/themes/GrowingButton.css.js.map +1 -1
  305. package/dist/generated/themes/Icon.css.js +1 -1
  306. package/dist/generated/themes/Icon.css.js.map +1 -1
  307. package/dist/generated/themes/Input.css.js +1 -1
  308. package/dist/generated/themes/Input.css.js.map +1 -1
  309. package/dist/generated/themes/InputIcon.css.js +1 -1
  310. package/dist/generated/themes/InputIcon.css.js.map +1 -1
  311. package/dist/generated/themes/InputSharedStyles.css.js +1 -1
  312. package/dist/generated/themes/InputSharedStyles.css.js.map +1 -1
  313. package/dist/generated/themes/Link.css.js +1 -1
  314. package/dist/generated/themes/Link.css.js.map +1 -1
  315. package/dist/generated/themes/List.css.js +1 -1
  316. package/dist/generated/themes/List.css.js.map +1 -1
  317. package/dist/generated/themes/ListItem.css.js +1 -1
  318. package/dist/generated/themes/ListItem.css.js.map +1 -1
  319. package/dist/generated/themes/ListItemBase.css.js +1 -1
  320. package/dist/generated/themes/ListItemBase.css.js.map +1 -1
  321. package/dist/generated/themes/ListItemCustom.css.js +1 -1
  322. package/dist/generated/themes/ListItemCustom.css.js.map +1 -1
  323. package/dist/generated/themes/ListItemGroup.css.js +1 -1
  324. package/dist/generated/themes/ListItemGroup.css.js.map +1 -1
  325. package/dist/generated/themes/ListItemGroupHeader.css.js +1 -1
  326. package/dist/generated/themes/ListItemGroupHeader.css.js.map +1 -1
  327. package/dist/generated/themes/ListItemIcon.css.js +1 -1
  328. package/dist/generated/themes/ListItemIcon.css.js.map +1 -1
  329. package/dist/generated/themes/Menu.css.js +1 -1
  330. package/dist/generated/themes/Menu.css.js.map +1 -1
  331. package/dist/generated/themes/MenuItem.css.js +1 -1
  332. package/dist/generated/themes/MenuItem.css.js.map +1 -1
  333. package/dist/generated/themes/MessageStrip.css.js +1 -1
  334. package/dist/generated/themes/MessageStrip.css.js.map +1 -1
  335. package/dist/generated/themes/MonthPicker.css.js +1 -1
  336. package/dist/generated/themes/MonthPicker.css.js.map +1 -1
  337. package/dist/generated/themes/MultiComboBox.css.js +1 -1
  338. package/dist/generated/themes/MultiComboBox.css.js.map +1 -1
  339. package/dist/generated/themes/MultiComboBoxPopover.css.js +1 -1
  340. package/dist/generated/themes/MultiComboBoxPopover.css.js.map +1 -1
  341. package/dist/generated/themes/MultiInput.css.js +1 -1
  342. package/dist/generated/themes/MultiInput.css.js.map +1 -1
  343. package/dist/generated/themes/NavigationMenu.css.js +1 -1
  344. package/dist/generated/themes/NavigationMenu.css.js.map +1 -1
  345. package/dist/generated/themes/NavigationMenuItem.css.js +1 -1
  346. package/dist/generated/themes/NavigationMenuItem.css.js.map +1 -1
  347. package/dist/generated/themes/OptionBase.css.js +1 -1
  348. package/dist/generated/themes/OptionBase.css.js.map +1 -1
  349. package/dist/generated/themes/Panel.css.js +1 -1
  350. package/dist/generated/themes/Panel.css.js.map +1 -1
  351. package/dist/generated/themes/Popover.css.js +1 -1
  352. package/dist/generated/themes/Popover.css.js.map +1 -1
  353. package/dist/generated/themes/PopupsCommon.css.js +1 -1
  354. package/dist/generated/themes/PopupsCommon.css.js.map +1 -1
  355. package/dist/generated/themes/ProgressIndicator.css.js +1 -1
  356. package/dist/generated/themes/ProgressIndicator.css.js.map +1 -1
  357. package/dist/generated/themes/RadioButton.css.js +1 -1
  358. package/dist/generated/themes/RadioButton.css.js.map +1 -1
  359. package/dist/generated/themes/RangeSlider.css.js +1 -1
  360. package/dist/generated/themes/RangeSlider.css.js.map +1 -1
  361. package/dist/generated/themes/RatingIndicator.css.js +1 -1
  362. package/dist/generated/themes/RatingIndicator.css.js.map +1 -1
  363. package/dist/generated/themes/ResponsivePopover.css.js +1 -1
  364. package/dist/generated/themes/ResponsivePopover.css.js.map +1 -1
  365. package/dist/generated/themes/ResponsivePopoverCommon.css.js +1 -1
  366. package/dist/generated/themes/ResponsivePopoverCommon.css.js.map +1 -1
  367. package/dist/generated/themes/SegmentedButton.css.js +1 -1
  368. package/dist/generated/themes/SegmentedButton.css.js.map +1 -1
  369. package/dist/generated/themes/SegmentedButtonItem.css.js +1 -1
  370. package/dist/generated/themes/SegmentedButtonItem.css.js.map +1 -1
  371. package/dist/generated/themes/Select.css.js +1 -1
  372. package/dist/generated/themes/Select.css.js.map +1 -1
  373. package/dist/generated/themes/SliderBase.css.js +1 -1
  374. package/dist/generated/themes/SliderBase.css.js.map +1 -1
  375. package/dist/generated/themes/SplitButton.css.js +1 -1
  376. package/dist/generated/themes/SplitButton.css.js.map +1 -1
  377. package/dist/generated/themes/StepInput.css.js +1 -1
  378. package/dist/generated/themes/StepInput.css.js.map +1 -1
  379. package/dist/generated/themes/SuggestionItem.css.js +1 -1
  380. package/dist/generated/themes/SuggestionItem.css.js.map +1 -1
  381. package/dist/generated/themes/SuggestionItemCustom.css.js +1 -1
  382. package/dist/generated/themes/SuggestionItemCustom.css.js.map +1 -1
  383. package/dist/generated/themes/Switch.css.js +1 -1
  384. package/dist/generated/themes/Switch.css.js.map +1 -1
  385. package/dist/generated/themes/TabContainer.css.js +1 -1
  386. package/dist/generated/themes/TabContainer.css.js.map +1 -1
  387. package/dist/generated/themes/TabInOverflow.css.js +1 -1
  388. package/dist/generated/themes/TabInOverflow.css.js.map +1 -1
  389. package/dist/generated/themes/TabInStrip.css.js +1 -1
  390. package/dist/generated/themes/TabInStrip.css.js.map +1 -1
  391. package/dist/generated/themes/TabSemanticIcon.css.js +1 -1
  392. package/dist/generated/themes/TabSemanticIcon.css.js.map +1 -1
  393. package/dist/generated/themes/TabSeparatorInOverflow.css.js +1 -1
  394. package/dist/generated/themes/TabSeparatorInOverflow.css.js.map +1 -1
  395. package/dist/generated/themes/Table.css.js +1 -1
  396. package/dist/generated/themes/Table.css.js.map +1 -1
  397. package/dist/generated/themes/TableCellBase.css.js +1 -1
  398. package/dist/generated/themes/TableCellBase.css.js.map +1 -1
  399. package/dist/generated/themes/TableHeaderRow.css.js +1 -1
  400. package/dist/generated/themes/TableHeaderRow.css.js.map +1 -1
  401. package/dist/generated/themes/TableRow.css.js +1 -1
  402. package/dist/generated/themes/TableRow.css.js.map +1 -1
  403. package/dist/generated/themes/TableRowBase.css.js +1 -1
  404. package/dist/generated/themes/TableRowBase.css.js.map +1 -1
  405. package/dist/generated/themes/Tag.css.js +1 -1
  406. package/dist/generated/themes/Tag.css.js.map +1 -1
  407. package/dist/generated/themes/Text.css.js +1 -1
  408. package/dist/generated/themes/Text.css.js.map +1 -1
  409. package/dist/generated/themes/TextArea.css.js +1 -1
  410. package/dist/generated/themes/TextArea.css.js.map +1 -1
  411. package/dist/generated/themes/TimePicker.css.js +1 -1
  412. package/dist/generated/themes/TimePicker.css.js.map +1 -1
  413. package/dist/generated/themes/Toast.css.js +1 -1
  414. package/dist/generated/themes/Toast.css.js.map +1 -1
  415. package/dist/generated/themes/ToggleButton.css.js +1 -1
  416. package/dist/generated/themes/ToggleButton.css.js.map +1 -1
  417. package/dist/generated/themes/Token.css.js +1 -1
  418. package/dist/generated/themes/Token.css.js.map +1 -1
  419. package/dist/generated/themes/Tokenizer.css.js +1 -1
  420. package/dist/generated/themes/Tokenizer.css.js.map +1 -1
  421. package/dist/generated/themes/TokenizerPopover.css.js +1 -1
  422. package/dist/generated/themes/TokenizerPopover.css.js.map +1 -1
  423. package/dist/generated/themes/Toolbar.css.js +1 -1
  424. package/dist/generated/themes/Toolbar.css.js.map +1 -1
  425. package/dist/generated/themes/ToolbarPopover.css.js +1 -1
  426. package/dist/generated/themes/ToolbarPopover.css.js.map +1 -1
  427. package/dist/generated/themes/TreeItem.css.js +1 -1
  428. package/dist/generated/themes/TreeItem.css.js.map +1 -1
  429. package/dist/generated/themes/ValueStateMessage.css.js +1 -1
  430. package/dist/generated/themes/ValueStateMessage.css.js.map +1 -1
  431. package/dist/generated/themes/YearPicker.css.js +1 -1
  432. package/dist/generated/themes/YearPicker.css.js.map +1 -1
  433. package/dist/generated/themes/sap_fiori_3/parameters-bundle.css.js +1 -1
  434. package/dist/generated/themes/sap_fiori_3/parameters-bundle.css.js.map +1 -1
  435. package/dist/generated/themes/sap_fiori_3_dark/parameters-bundle.css.js +1 -1
  436. package/dist/generated/themes/sap_fiori_3_dark/parameters-bundle.css.js.map +1 -1
  437. package/dist/generated/themes/sap_fiori_3_hcb/parameters-bundle.css.js +1 -1
  438. package/dist/generated/themes/sap_fiori_3_hcb/parameters-bundle.css.js.map +1 -1
  439. package/dist/generated/themes/sap_fiori_3_hcw/parameters-bundle.css.js +1 -1
  440. package/dist/generated/themes/sap_fiori_3_hcw/parameters-bundle.css.js.map +1 -1
  441. package/dist/generated/themes/sap_horizon/parameters-bundle.css.js +1 -1
  442. package/dist/generated/themes/sap_horizon/parameters-bundle.css.js.map +1 -1
  443. package/dist/generated/themes/sap_horizon_dark/parameters-bundle.css.js +1 -1
  444. package/dist/generated/themes/sap_horizon_dark/parameters-bundle.css.js.map +1 -1
  445. package/dist/generated/themes/sap_horizon_dark_exp/parameters-bundle.css.js +1 -1
  446. package/dist/generated/themes/sap_horizon_dark_exp/parameters-bundle.css.js.map +1 -1
  447. package/dist/generated/themes/sap_horizon_exp/parameters-bundle.css.js +1 -1
  448. package/dist/generated/themes/sap_horizon_exp/parameters-bundle.css.js.map +1 -1
  449. package/dist/generated/themes/sap_horizon_hcb/parameters-bundle.css.js +1 -1
  450. package/dist/generated/themes/sap_horizon_hcb/parameters-bundle.css.js.map +1 -1
  451. package/dist/generated/themes/sap_horizon_hcb_exp/parameters-bundle.css.js +1 -1
  452. package/dist/generated/themes/sap_horizon_hcb_exp/parameters-bundle.css.js.map +1 -1
  453. package/dist/generated/themes/sap_horizon_hcw/parameters-bundle.css.js +1 -1
  454. package/dist/generated/themes/sap_horizon_hcw/parameters-bundle.css.js.map +1 -1
  455. package/dist/generated/themes/sap_horizon_hcw_exp/parameters-bundle.css.js +1 -1
  456. package/dist/generated/themes/sap_horizon_hcw_exp/parameters-bundle.css.js.map +1 -1
  457. package/dist/types/CalendarWeekNumbering.d.ts +44 -0
  458. package/dist/types/CalendarWeekNumbering.js +46 -0
  459. package/dist/types/CalendarWeekNumbering.js.map +1 -0
  460. package/dist/vscode.html-custom-data.json +62 -2
  461. package/dist/web-types.json +73 -5
  462. package/package.json +11 -10
  463. package/src/Breadcrumbs.hbs +1 -0
  464. package/src/Calendar.hbs +5 -2
  465. package/src/ColorPalettePopover.hbs +1 -1
  466. package/src/DatePickerPopover.hbs +1 -0
  467. package/src/DateRangePicker.hbs +1 -0
  468. package/src/DateTimePickerPopover.hbs +1 -0
  469. package/src/Link.hbs +1 -0
  470. package/src/MonthPicker.hbs +2 -0
  471. package/src/YearPicker.hbs +3 -1
  472. package/src/i18n/messagebundle_ar.properties +9 -0
  473. package/src/i18n/messagebundle_bg.properties +9 -0
  474. package/src/i18n/messagebundle_ca.properties +9 -0
  475. package/src/i18n/messagebundle_cnr.properties +9 -0
  476. package/src/i18n/messagebundle_cs.properties +9 -0
  477. package/src/i18n/messagebundle_cy.properties +9 -0
  478. package/src/i18n/messagebundle_da.properties +9 -0
  479. package/src/i18n/messagebundle_de.properties +9 -0
  480. package/src/i18n/messagebundle_el.properties +9 -0
  481. package/src/i18n/messagebundle_en.properties +9 -0
  482. package/src/i18n/messagebundle_en_GB.properties +9 -0
  483. package/src/i18n/messagebundle_en_US_sappsd.properties +9 -0
  484. package/src/i18n/messagebundle_en_US_saprigi.properties +9 -0
  485. package/src/i18n/messagebundle_en_US_saptrc.properties +197 -188
  486. package/src/i18n/messagebundle_es.properties +9 -0
  487. package/src/i18n/messagebundle_es_MX.properties +9 -0
  488. package/src/i18n/messagebundle_et.properties +9 -0
  489. package/src/i18n/messagebundle_fi.properties +9 -0
  490. package/src/i18n/messagebundle_fr.properties +9 -0
  491. package/src/i18n/messagebundle_fr_CA.properties +9 -0
  492. package/src/i18n/messagebundle_hi.properties +9 -0
  493. package/src/i18n/messagebundle_hr.properties +9 -0
  494. package/src/i18n/messagebundle_hu.properties +11 -2
  495. package/src/i18n/messagebundle_id.properties +11 -2
  496. package/src/i18n/messagebundle_it.properties +9 -0
  497. package/src/i18n/messagebundle_iw.properties +9 -0
  498. package/src/i18n/messagebundle_ja.properties +9 -0
  499. package/src/i18n/messagebundle_kk.properties +9 -0
  500. package/src/i18n/messagebundle_ko.properties +9 -0
  501. package/src/i18n/messagebundle_lt.properties +9 -0
  502. package/src/i18n/messagebundle_lv.properties +9 -0
  503. package/src/i18n/messagebundle_mk.properties +9 -0
  504. package/src/i18n/messagebundle_ms.properties +9 -0
  505. package/src/i18n/messagebundle_nl.properties +9 -0
  506. package/src/i18n/messagebundle_no.properties +9 -0
  507. package/src/i18n/messagebundle_pl.properties +9 -0
  508. package/src/i18n/messagebundle_pt.properties +9 -0
  509. package/src/i18n/messagebundle_pt_PT.properties +9 -0
  510. package/src/i18n/messagebundle_ro.properties +9 -0
  511. package/src/i18n/messagebundle_ru.properties +10 -1
  512. package/src/i18n/messagebundle_sh.properties +9 -0
  513. package/src/i18n/messagebundle_sk.properties +9 -0
  514. package/src/i18n/messagebundle_sl.properties +9 -0
  515. package/src/i18n/messagebundle_sr.properties +9 -0
  516. package/src/i18n/messagebundle_sv.properties +9 -0
  517. package/src/i18n/messagebundle_th.properties +9 -0
  518. package/src/i18n/messagebundle_tr.properties +9 -0
  519. package/src/i18n/messagebundle_uk.properties +9 -0
  520. package/src/i18n/messagebundle_vi.properties +9 -0
  521. package/src/i18n/messagebundle_zh_CN.properties +9 -0
  522. package/src/i18n/messagebundle_zh_TW.properties +9 -0
  523. package/src/themes/BrowserScrollbar.css +8 -8
  524. package/src/themes/MenuItem.css +12 -2
  525. package/src/themes/MonthPicker.css +46 -26
  526. package/src/themes/TextArea.css +6 -6
  527. package/src/themes/YearPicker.css +41 -22
  528. package/src/themes/base/MonthPicker-parameters.css +6 -13
  529. package/src/themes/base/YearPicker-parameters.css +6 -13
  530. package/src/themes/sap_fiori_3/parameters-bundle.css +0 -1
  531. package/src/themes/sap_fiori_3_dark/parameters-bundle.css +0 -1
  532. package/src/themes/sap_fiori_3_hcb/MonthPicker-parameters.css +0 -6
  533. package/src/themes/sap_fiori_3_hcb/YearPicker-parameters.css +0 -6
  534. package/src/themes/sap_fiori_3_hcb/parameters-bundle.css +0 -1
  535. package/src/themes/sap_fiori_3_hcw/MonthPicker-parameters.css +0 -6
  536. package/src/themes/sap_fiori_3_hcw/YearPicker-parameters.css +0 -6
  537. package/src/themes/sap_fiori_3_hcw/parameters-bundle.css +0 -1
  538. package/src/themes/sap_horizon/MonthPicker-parameters.css +0 -11
  539. package/src/themes/sap_horizon/YearPicker-parameters.css +0 -10
  540. package/src/themes/sap_horizon/parameters-bundle.css +0 -1
  541. package/src/themes/sap_horizon_dark/MonthPicker-parameters.css +0 -11
  542. package/src/themes/sap_horizon_dark/YearPicker-parameters.css +0 -10
  543. package/src/themes/sap_horizon_dark/parameters-bundle.css +0 -1
  544. package/src/themes/sap_horizon_dark_exp/parameters-bundle.css +0 -1
  545. package/src/themes/sap_horizon_exp/parameters-bundle.css +0 -1
  546. package/src/themes/sap_horizon_hcb/MonthPicker-parameters.css +0 -7
  547. package/src/themes/sap_horizon_hcb/YearPicker-parameters.css +0 -7
  548. package/src/themes/sap_horizon_hcb/parameters-bundle.css +0 -1
  549. package/src/themes/sap_horizon_hcb_exp/parameters-bundle.css +0 -1
  550. package/src/themes/sap_horizon_hcw/MonthPicker-parameters.css +0 -7
  551. package/src/themes/sap_horizon_hcw/YearPicker-parameters.css +0 -7
  552. package/src/themes/sap_horizon_hcw/parameters-bundle.css +0 -1
  553. package/src/themes/sap_horizon_hcw_exp/parameters-bundle.css +0 -1
  554. package/src/themes/base/BrowserScrollbar-parameters.css +0 -4
@@ -0,0 +1,699 @@
1
+ import { html } from "lit";
2
+ import "../../src/TextArea.js";
3
+ import "../../src/Label.js";
4
+
5
+ describe("TextArea general interaction", () => {
6
+ describe("Attribute propagation", () => {
7
+ it("Should change the placeholder of the inner textarea", () => {
8
+ const attributeValue = "test";
9
+
10
+ cy.mount(html`<ui5-textarea placeholder=${attributeValue}></ui5-textarea>`);
11
+
12
+ cy.get("[ui5-textarea]")
13
+ .shadow()
14
+ .find("textarea")
15
+ .should("have.attr", "placeholder", attributeValue);
16
+ });
17
+
18
+ it("Disabled attribute is propagated properly", () => {
19
+ cy.mount(html`<ui5-textarea disabled></ui5-textarea>`);
20
+
21
+ cy.get("[ui5-textarea]")
22
+ .shadow()
23
+ .find("textarea")
24
+ .should("have.attr", "disabled");
25
+ });
26
+
27
+ it("Redonly attribute is propagated properly", () => {
28
+ cy.mount(html`<ui5-textarea readonly></ui5-textarea>`);
29
+
30
+ cy.get("[ui5-textarea]")
31
+ .shadow()
32
+ .find("textarea")
33
+ .should("have.attr", "readonly");
34
+ });
35
+
36
+ it("Required attribute is propagated properly", () => {
37
+ cy.mount(html`<ui5-textarea required></ui5-textarea>`);
38
+
39
+ cy.get("[ui5-textarea]")
40
+ .shadow()
41
+ .find("textarea")
42
+ .should("have.attr", "aria-required", "true");
43
+
44
+ cy.mount(html`<ui5-textarea></ui5-textarea>`);
45
+
46
+ cy.get("[ui5-textarea]")
47
+ .shadow()
48
+ .find("textarea")
49
+ .should("have.attr", "aria-required", "false");
50
+ });
51
+
52
+ it("Value attribute is propagated properly", () => {
53
+ const attributeValue = "test";
54
+
55
+ cy.mount(html`<ui5-textarea value=${attributeValue}></ui5-textarea>`);
56
+
57
+ cy.get("[ui5-textarea]")
58
+ .shadow()
59
+ .find("textarea")
60
+ .should("have.value", attributeValue);
61
+ });
62
+
63
+ it("Tests aria-label", () => {
64
+ const attributeValue = "test";
65
+
66
+ cy.mount(html`<ui5-textarea accessible-name=${attributeValue}></ui5-textarea>`);
67
+
68
+ cy.get("[ui5-textarea]")
69
+ .shadow()
70
+ .find("textarea")
71
+ .should("have.attr", "aria-label", attributeValue);
72
+ });
73
+
74
+ it("Tests aria-labelledby", () => {
75
+ const attributeValue = "test";
76
+
77
+ cy.mount(html`<span id="ref">${attributeValue}</span>
78
+ <ui5-textarea accessible-name-ref="ref"></ui5-textarea>`);
79
+
80
+ cy.get("[ui5-textarea]")
81
+ .shadow()
82
+ .find("textarea")
83
+ .should("have.attr", "aria-label", attributeValue);
84
+ });
85
+
86
+ it("Checks if aria-invalid is set correctly", () => {
87
+ cy.mount(html`<ui5-textarea value-state="Negative"></ui5-textarea>`);
88
+
89
+ cy.get("[ui5-textarea]")
90
+ .shadow()
91
+ .find("textarea")
92
+ .should("have.attr", "aria-invalid", "true");
93
+
94
+ cy.mount(html`<ui5-textarea value-state="Critical"></ui5-textarea>`);
95
+
96
+ cy.get("[ui5-textarea]")
97
+ .shadow()
98
+ .find("textarea")
99
+ .should("not.have.attr", "aria-invalid");
100
+ });
101
+
102
+ it("Tests aria-label is set to match the label text when label is for that text area", () => {
103
+ const attributeValue = "test";
104
+
105
+ cy.mount(html`<ui5-label for="ref">${attributeValue}</ui5-label>
106
+ <ui5-textarea id="ref"></ui5-textarea>`);
107
+
108
+ cy.get("[ui5-textarea]")
109
+ .shadow()
110
+ .find("textarea")
111
+ .should("have.attr", "aria-label", attributeValue);
112
+ });
113
+
114
+ it("Tests aria-label is set directly from the property accessible-name of the text-area", () => {
115
+ const attributeValue = "test";
116
+
117
+ cy.mount(html`<ui5-label for="ref">some text</ui5-label>
118
+ <ui5-textarea id="ref" accessible-name="${attributeValue}"></ui5-textarea>`);
119
+
120
+ cy.get("[ui5-textarea]")
121
+ .shadow()
122
+ .find("textarea")
123
+ .should("have.attr", "aria-label", attributeValue);
124
+ });
125
+ });
126
+
127
+ describe("disabled and readonly textarea", () => {
128
+ it("can not be edited when disabled", () => {
129
+ cy.mount(html`<ui5-textarea disabled></ui5-textarea>`);
130
+
131
+ cy.get("[ui5-textarea]")
132
+ .as("textarea");
133
+
134
+ cy.get("@textarea")
135
+ .realClick();
136
+
137
+ cy.get("@textarea")
138
+ .realPress("a")
139
+ .realPress("b")
140
+ .realPress("c");
141
+
142
+ cy.get("@textarea")
143
+ .shadow()
144
+ .find("textarea")
145
+ .should("have.value", "");
146
+ });
147
+
148
+ it("can not be edited when readonly", () => {
149
+ cy.mount(html`<ui5-textarea readonly></ui5-textarea>`);
150
+
151
+ cy.get("[ui5-textarea]")
152
+ .as("textarea");
153
+
154
+ cy.get("@textarea")
155
+ .realClick();
156
+
157
+ cy.get("@textarea")
158
+ .should("be.focused");
159
+
160
+ cy.get("@textarea")
161
+ .realPress("a")
162
+ .realPress("b")
163
+ .realPress("c");
164
+
165
+ cy.get("@textarea")
166
+ .shadow()
167
+ .find("textarea")
168
+ .should("have.value", "");
169
+ });
170
+ });
171
+
172
+ describe("when enabled", () => {
173
+ it("shows value state message", () => {
174
+ cy.mount(html`<ui5-textarea value-state="Negative"></ui5-textarea>`);
175
+
176
+ cy.get("[ui5-textarea]")
177
+ .as("textarea");
178
+
179
+ cy.get("@textarea")
180
+ .realClick();
181
+
182
+ cy.get("@textarea")
183
+ .should("be.focused");
184
+
185
+ cy.get("@textarea")
186
+ .shadow()
187
+ .find("[ui5-popover].ui5-valuestatemessage-popover")
188
+ .should("be.visible")
189
+ .and("have.attr", "open");
190
+ });
191
+
192
+ it("does not show value state msg when valueState='None'", () => {
193
+ cy.mount(html`<ui5-textarea value-state="None"></ui5-textarea>`);
194
+
195
+ cy.get("[ui5-textarea]")
196
+ .as("textarea");
197
+
198
+ cy.get("@textarea")
199
+ .realClick();
200
+
201
+ cy.get("@textarea")
202
+ .should("be.focused");
203
+
204
+ cy.get("@textarea")
205
+ .shadow()
206
+ .find("[ui5-popover].ui5-valuestatemessage-popover")
207
+ .should("not.exist");
208
+ });
209
+
210
+ it("Should not open value state message when textarea is in readonly state", () => {
211
+ cy.mount(html`<ui5-textarea readonly value-state="Negative"></ui5-textarea>`);
212
+
213
+ cy.get("[ui5-textarea]")
214
+ .as("textarea");
215
+
216
+ cy.get("@textarea")
217
+ .realClick();
218
+
219
+ cy.get("@textarea")
220
+ .should("be.focused");
221
+
222
+ cy.get("@textarea")
223
+ .shadow()
224
+ .find("[ui5-popover].ui5-valuestatemessage-popover")
225
+ .should("not.exist");
226
+ });
227
+
228
+ it("fires change event", () => {
229
+ cy.mount(html`<ui5-textarea></ui5-textarea>`);
230
+
231
+ cy.get("[ui5-textarea]")
232
+ .as("textarea");
233
+
234
+ cy.get("@textarea")
235
+ .then(textarea => {
236
+ textarea.get(0).addEventListener("ui5-change", cy.stub().as("changed"));
237
+ });
238
+
239
+ cy.get("@textarea")
240
+ .realClick();
241
+
242
+ cy.get("@textarea")
243
+ .should("be.focused");
244
+
245
+ cy.get("@textarea")
246
+ .realPress("a")
247
+ .realPress("b")
248
+ .realPress("c");
249
+
250
+ cy.focused()
251
+ .blur();
252
+
253
+ cy.get("@changed")
254
+ .should("have.been.calledOnce");
255
+ });
256
+
257
+ it("fires input event", () => {
258
+ cy.mount(html`<ui5-textarea></ui5-textarea>`);
259
+
260
+ cy.get("[ui5-textarea]")
261
+ .as("textarea");
262
+
263
+ cy.get("@textarea")
264
+ .then(textarea => {
265
+ textarea.get(0).addEventListener("ui5-input", cy.stub().as("input"));
266
+ });
267
+
268
+ cy.get("@textarea")
269
+ .realClick();
270
+
271
+ cy.get("@textarea")
272
+ .should("be.focused");
273
+
274
+ cy.get("@textarea")
275
+ .realPress("a")
276
+ .realPress("b")
277
+ .realPress("c");
278
+
279
+ cy.get("@input")
280
+ .should("have.been.calledThrice");
281
+ });
282
+ });
283
+
284
+ describe("when growing", () => {
285
+ it("Should have 8 rows and grow", () => {
286
+ cy.mount(html`<ui5-textarea growing rows="8"></ui5-textarea>`);
287
+
288
+ cy.get("[ui5-textarea]")
289
+ .as("textarea");
290
+
291
+ cy.get("@textarea")
292
+ .realClick();
293
+
294
+ cy.get("@textarea")
295
+ .should("be.focused");
296
+
297
+ cy.get("@textarea")
298
+ .then(textarea => {
299
+ const initialTextareaSize = textarea.height();
300
+
301
+ cy.focused()
302
+ .type("1{enter}");
303
+
304
+ cy.focused()
305
+ .type("2{enter}");
306
+
307
+ cy.focused()
308
+ .type("3{enter}");
309
+
310
+ cy.focused()
311
+ .type("4{enter}");
312
+
313
+ cy.focused()
314
+ .type("5{enter}");
315
+
316
+ cy.focused()
317
+ .type("6{enter}");
318
+
319
+ cy.focused()
320
+ .type("7{enter}");
321
+
322
+ cy.focused()
323
+ .type("8");
324
+
325
+ cy.get("@textarea")
326
+ .invoke("height")
327
+ .should("be.equal", initialTextareaSize);
328
+
329
+ cy.focused()
330
+ .realType("{enter}9");
331
+
332
+ cy.get("@textarea")
333
+ .invoke("height")
334
+ .should("be.greaterThan", initialTextareaSize);
335
+ });
336
+ });
337
+
338
+ it("Should have 8 rows and grow", () => {
339
+ cy.mount(html`<ui5-textarea growing growing-max-rows="4"></ui5-textarea>`);
340
+
341
+ cy.get("[ui5-textarea]")
342
+ .as("textarea");
343
+
344
+ cy.get("@textarea")
345
+ .realClick();
346
+
347
+ cy.get("@textarea")
348
+ .should("be.focused");
349
+
350
+ cy.get("@textarea")
351
+ .then(textarea => {
352
+ const initialTextareaSize = textarea.height();
353
+
354
+ cy.get("@textarea")
355
+ .realType("1{enter}")
356
+ .realType("2");
357
+
358
+ cy.get("@textarea")
359
+ .invoke("height")
360
+ .should("be.equal", initialTextareaSize);
361
+ });
362
+
363
+ cy.get("@textarea")
364
+ .then(textarea => {
365
+ const initialTextareaSize = textarea.height();
366
+
367
+ cy.get("@textarea")
368
+ .realType("{enter}3")
369
+ .realType("{enter}4");
370
+
371
+ cy.get("@textarea")
372
+ .invoke("height")
373
+ .should("be.greaterThan", initialTextareaSize);
374
+ });
375
+
376
+ cy.get("@textarea")
377
+ .then(textarea => {
378
+ const initialTextareaSize = textarea.height();
379
+
380
+ cy.get("@textarea")
381
+ .realType("{enter}5")
382
+ .realType("{enter}6");
383
+
384
+ cy.get("@textarea")
385
+ .invoke("height")
386
+ .should("be.equal", initialTextareaSize);
387
+ });
388
+ });
389
+ });
390
+
391
+ describe("When having max length set", () => {
392
+ it("prevents input when max is reached", () => {
393
+ cy.mount(html`<ui5-textarea maxlength="10"></ui5-textarea>`);
394
+
395
+ cy.get("[ui5-textarea]")
396
+ .as("textarea");
397
+
398
+ cy.get("@textarea")
399
+ .realClick();
400
+
401
+ cy.get("@textarea")
402
+ .should("be.focused");
403
+
404
+ cy.get("@textarea")
405
+ .realType("123456789123456789121111");
406
+
407
+ cy.get("@textarea")
408
+ .shadow()
409
+ .find("textarea")
410
+ .should("have.value", "1234567891");
411
+ });
412
+
413
+ describe("When having max length set", () => {
414
+ it("Shows counter", () => {
415
+ cy.mount(html`<ui5-textarea maxlength="10" show-exceeded-text></ui5-textarea>`);
416
+
417
+ cy.get("[ui5-textarea]")
418
+ .as("textarea");
419
+
420
+ cy.get("@textarea")
421
+ .realClick();
422
+
423
+ cy.get("@textarea")
424
+ .should("be.focused");
425
+
426
+ cy.get("@textarea")
427
+ .shadow()
428
+ .find(".ui5-textarea-exceeded-text")
429
+ .as("exceededText")
430
+ .should("contain.text", "10 characters remaining");
431
+
432
+ cy.get("@textarea")
433
+ .realType("1234567890");
434
+
435
+ cy.get("@exceededText")
436
+ .should("contain.text", "0 characters remaining");
437
+
438
+ cy.get("@textarea")
439
+ .realType("12345");
440
+
441
+ cy.get("@exceededText")
442
+ .should("contain.text", "5 characters over limit");
443
+ });
444
+
445
+ it("Shows exceeded text when maxLength is 0", () => {
446
+ cy.mount(html`<ui5-textarea maxlength="0" show-exceeded-text></ui5-textarea>`);
447
+
448
+ cy.get("[ui5-textarea]")
449
+ .as("textarea");
450
+
451
+ cy.get("@textarea")
452
+ .realClick();
453
+
454
+ cy.get("@textarea")
455
+ .should("be.focused");
456
+
457
+ cy.get("@textarea")
458
+ .shadow()
459
+ .find(".ui5-textarea-exceeded-text")
460
+ .as("exceededText")
461
+ .should("contain.text", "0 characters remaining");
462
+
463
+ cy.get("@textarea")
464
+ .realType("12345");
465
+
466
+ cy.get("@exceededText")
467
+ .should("contain.text", "5 characters over limit");
468
+ });
469
+ });
470
+ });
471
+
472
+ describe("Value update", () => {
473
+ it("Should revert the DOM value, when escape is pressed", () => {
474
+ cy.mount(html`<ui5-textarea></ui5-textarea>`);
475
+
476
+ cy.get("[ui5-textarea]")
477
+ .as("textarea");
478
+
479
+ cy.get("@textarea")
480
+ .realClick();
481
+
482
+ cy.get("@textarea")
483
+ .should("be.focused");
484
+
485
+ cy.get("@textarea")
486
+ .realType("1234");
487
+
488
+ cy.get("@textarea")
489
+ .shadow()
490
+ .find("textarea")
491
+ .should("have.value", "1234");
492
+
493
+ cy.get("@textarea")
494
+ .realPress("Escape");
495
+
496
+ cy.get("@textarea")
497
+ .shadow()
498
+ .find("textarea")
499
+ .should("have.value", "");
500
+ });
501
+
502
+ it("Value state type should be added to the screen readers default value states announcement", () => {
503
+ // Negative
504
+ cy.mount(html`<ui5-textarea value-state="Negative"></ui5-textarea>`);
505
+
506
+ cy.get("[ui5-textarea]")
507
+ .as("textarea");
508
+
509
+ cy.get("@textarea")
510
+ .realClick();
511
+
512
+ cy.get("@textarea")
513
+ .should("be.focused");
514
+
515
+ cy.get("@textarea")
516
+ .shadow()
517
+ .find("[ui5-popover].ui5-valuestatemessage-popover")
518
+ .should("be.visible")
519
+ .should("have.text", "Invalid entry")
520
+ .and("have.attr", "open");
521
+
522
+ cy.get("@textarea")
523
+ .shadow()
524
+ .find(".ui5-hidden-text")
525
+ .should("have.text", "Value State Error Invalid entry");
526
+
527
+ // Critical
528
+ cy.mount(html`<ui5-textarea value-state="Critical"></ui5-textarea>`);
529
+
530
+ cy.get("[ui5-textarea]")
531
+ .as("textarea");
532
+
533
+ cy.get("@textarea")
534
+ .realClick();
535
+
536
+ cy.get("@textarea")
537
+ .should("be.focused");
538
+
539
+ cy.get("@textarea")
540
+ .shadow()
541
+ .find("[ui5-popover].ui5-valuestatemessage-popover")
542
+ .should("be.visible")
543
+ .should("have.text", "Warning issued")
544
+ .and("have.attr", "open");
545
+
546
+ cy.get("@textarea")
547
+ .shadow()
548
+ .find(".ui5-hidden-text")
549
+ .should("have.text", "Value State Warning Warning issued");
550
+
551
+ // Critical
552
+ cy.mount(html`<ui5-textarea value-state="Critical"></ui5-textarea>`);
553
+
554
+ cy.get("[ui5-textarea]")
555
+ .as("textarea");
556
+
557
+ cy.get("@textarea")
558
+ .realClick();
559
+
560
+ cy.get("@textarea")
561
+ .should("be.focused");
562
+
563
+ cy.get("@textarea")
564
+ .shadow()
565
+ .find("[ui5-popover].ui5-valuestatemessage-popover")
566
+ .should("be.visible")
567
+ .should("have.text", "Warning issued")
568
+ .and("have.attr", "open");
569
+
570
+ cy.get("@textarea")
571
+ .shadow()
572
+ .find(".ui5-hidden-text")
573
+ .should("have.text", "Value State Warning Warning issued");
574
+
575
+ // Information
576
+ cy.mount(html`<ui5-textarea value-state="Information"></ui5-textarea>`);
577
+
578
+ cy.get("[ui5-textarea]")
579
+ .as("textarea");
580
+
581
+ cy.get("@textarea")
582
+ .realClick();
583
+
584
+ cy.get("@textarea")
585
+ .should("be.focused");
586
+
587
+ cy.get("@textarea")
588
+ .shadow()
589
+ .find("[ui5-popover].ui5-valuestatemessage-popover")
590
+ .should("be.visible")
591
+ .should("have.text", "Informative entry")
592
+ .and("have.attr", "open");
593
+
594
+ cy.get("@textarea")
595
+ .shadow()
596
+ .find(".ui5-hidden-text")
597
+ .should("have.text", "Value State Information Informative entry");
598
+
599
+ // Custom
600
+ cy.mount(html`<ui5-textarea value-state="Negative">
601
+ <div slot="valueStateMessage">Custom message</div>
602
+ </ui5-textarea>`);
603
+
604
+ cy.get("[ui5-textarea]")
605
+ .as("textarea");
606
+
607
+ cy.get("@textarea")
608
+ .realClick();
609
+
610
+ cy.get("@textarea")
611
+ .should("be.focused");
612
+
613
+ cy.get("@textarea")
614
+ .find("[slot=\"valueStateMessage\"]")
615
+ .should("be.visible")
616
+ .should("have.text", "Custom message");
617
+
618
+ cy.get("@textarea")
619
+ .shadow()
620
+ .find(".ui5-hidden-text")
621
+ .should("have.text", "Value State Error Custom message");
622
+ });
623
+
624
+ it("Should select all exceeded characters on paste", () => {
625
+ const text = "Text longer then twenty characters";
626
+ const maxlength = 20;
627
+ const expectedSelectionRange = text.length - maxlength;
628
+
629
+ cy.mount(html`<ui5-textarea value="${text}" maxlength="${maxlength}" show-exceeded-text></ui5-textarea>`);
630
+
631
+ cy.get("[ui5-textarea]")
632
+ .as("textarea");
633
+
634
+ cy.get("@textarea")
635
+ .shadow()
636
+ .find("textarea")
637
+ .as("nativeTextarea")
638
+ .then($nativeTextarea => {
639
+ const inputElement = $nativeTextarea.get(0);
640
+
641
+ const inputEvent = new InputEvent("input", {
642
+ inputType: "insertFromPaste",
643
+ data: text,
644
+ });
645
+
646
+ inputElement.dispatchEvent(inputEvent);
647
+ });
648
+
649
+ cy.get<HTMLTextAreaElement>("@nativeTextarea")
650
+ .then(textarea => {
651
+ return textarea.get(0).selectionEnd - textarea.get(0).selectionStart;
652
+ })
653
+ .should("be.equal", expectedSelectionRange);
654
+
655
+ cy.get("@textarea")
656
+ .shadow()
657
+ .find(".ui5-textarea-exceeded-text")
658
+ .should("contain.text", `${expectedSelectionRange} characters over limit`);
659
+ });
660
+ });
661
+
662
+ describe("selection events", () => {
663
+ it("fires select event", () => {
664
+ cy.mount(html`<ui5-textarea style="height: 320px; width: 400px" value="Ipsum enim esse ipsum cupidatat ex veniam labore quis irure. Eiusmod labore anim anim nulla aute ut. Aliqua officia non ex cupidatat consequat non magna eiusmod aliquip laborum aliqua excepteur exercitation. Pariatur deserunt dolore aute sint in minim nisi magna proident proident consequat exercitation consectetur nostrud. Sint voluptate consectetur eu mollit non ullamco minim. In enim velit ea Lorem fugiat nulla esse deserunt nulla cupidatat non. Excepteur proident non ad anim enim culpa occaecat magna incididunt consequat do. Enim minim quis nisi enim est voluptate irure laborum ea cillum eu. Aliquip labore officia amet non exercitation dolore enim incididunt ullamco irure nulla ad nulla et. Ipsum enim esse ipsum cupidatat ex veniam labore quis irure. Eiusmod labore anim anim nulla aute ut. Aliqua officia non ex cupidatat consequat non magna eiusmod aliquip laborum aliqua excepteur exercitation. Pariatur deserunt dolore aute sint in minim nisi magna proident proident consequat exercitation consectetur nostrud. Sint voluptate consectetur eu mollit non ullamco minim. In enim velit ea Lorem fugiat nulla esse deserunt nulla cupidatat non. Excepteur proident non ad anim enim culpa occaecat magna incididunt consequat do. Enim minim quis nisi enim est voluptate irure laborum ea cillum eu. Aliquip labore officia amet non exercitation dolore enim incididunt ullamco irure nulla ad nulla et."></ui5-textarea>`);
665
+
666
+ cy.get("[ui5-textarea]")
667
+ .as("textarea")
668
+ .then(textarea => {
669
+ textarea.get(0).addEventListener("ui5-select", cy.stub().as("select"));
670
+ });
671
+
672
+ cy.get("@textarea")
673
+ .realClick({ clickCount: 2 });
674
+
675
+ cy.get("@select")
676
+ .should("have.been.calledOnce");
677
+ });
678
+
679
+ it("fires select event", () => {
680
+ cy.mount(html`<ui5-textarea style="height: 320px; width: 400px" value="Ipsum enim esse ipsum cupidatat ex veniam labore quis irure. Eiusmod labore anim anim nulla aute ut. Aliqua officia non ex cupidatat consequat non magna eiusmod aliquip laborum aliqua excepteur exercitation. Pariatur deserunt dolore aute sint in minim nisi magna proident proident consequat exercitation consectetur nostrud. Sint voluptate consectetur eu mollit non ullamco minim. In enim velit ea Lorem fugiat nulla esse deserunt nulla cupidatat non. Excepteur proident non ad anim enim culpa occaecat magna incididunt consequat do. Enim minim quis nisi enim est voluptate irure laborum ea cillum eu. Aliquip labore officia amet non exercitation dolore enim incididunt ullamco irure nulla ad nulla et. Ipsum enim esse ipsum cupidatat ex veniam labore quis irure. Eiusmod labore anim anim nulla aute ut. Aliqua officia non ex cupidatat consequat non magna eiusmod aliquip laborum aliqua excepteur exercitation. Pariatur deserunt dolore aute sint in minim nisi magna proident proident consequat exercitation consectetur nostrud. Sint voluptate consectetur eu mollit non ullamco minim. In enim velit ea Lorem fugiat nulla esse deserunt nulla cupidatat non. Excepteur proident non ad anim enim culpa occaecat magna incididunt consequat do. Enim minim quis nisi enim est voluptate irure laborum ea cillum eu. Aliquip labore officia amet non exercitation dolore enim incididunt ullamco irure nulla ad nulla et."></ui5-textarea>`);
681
+
682
+ cy.get("[ui5-textarea]")
683
+ .as("textarea")
684
+ .then(textarea => {
685
+ textarea.get(0).addEventListener("ui5-scroll", cy.stub().as("scroll"));
686
+ });
687
+
688
+ cy.get("@textarea")
689
+ .shadow()
690
+ .find("textarea")
691
+ .then(nativeTextarea => {
692
+ nativeTextarea.get(0).scroll({ top: 100 });
693
+ });
694
+
695
+ cy.get("@scroll")
696
+ .should("have.been.calledOnce");
697
+ });
698
+ });
699
+ });